[{"data":1,"prerenderedAt":1266},["ShallowReactive",2],{"navigation":3,"/docs/features/api-tokens":156,"/docs/features/api-tokens-surround":1261},[4,23,83,103,118,133,141],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"What is TaskView","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","/docs/getting-started/usage","docs/1.getting-started/3.usage","i-lucide-rocket",false,{"title":24,"icon":22,"path":25,"stem":26,"children":27,"page":22},"Features","/docs/features","docs/2.features",[28,33,38,43,48,53,58,63,68,73,78],{"title":29,"path":30,"stem":31,"icon":32},"Projects and Lists","/docs/features/projects-and-lists","docs/2.features/1.projects-and-lists","i-lucide-folder",{"title":34,"path":35,"stem":36,"icon":37},"Organizations","/docs/features/organizations","docs/2.features/10.organizations","i-lucide-building-2",{"title":39,"path":40,"stem":41,"icon":42},"SSO (Single Sign-On)","/docs/features/sso","docs/2.features/11.sso","i-lucide-shield-check",{"title":44,"path":45,"stem":46,"icon":47},"Tasks","/docs/features/tasks","docs/2.features/2.tasks","i-lucide-check-square",{"title":49,"path":50,"stem":51,"icon":52},"Kanban Board","/docs/features/kanban","docs/2.features/3.kanban","i-lucide-columns-3",{"title":54,"path":55,"stem":56,"icon":57},"Dependency Graph","/docs/features/graph","docs/2.features/4.graph","i-lucide-git-branch",{"title":59,"path":60,"stem":61,"icon":62},"Dashboard","/docs/features/dashboard","docs/2.features/5.dashboard","i-lucide-layout-dashboard",{"title":64,"path":65,"stem":66,"icon":67},"Notifications","/docs/features/notifications","docs/2.features/6.notifications","i-lucide-bell",{"title":69,"path":70,"stem":71,"icon":72},"Webhooks","/docs/features/webhooks","docs/2.features/7.webhooks","i-lucide-webhook",{"title":74,"path":75,"stem":76,"icon":77},"API Tokens","/docs/features/api-tokens","docs/2.features/8.api-tokens","i-lucide-key-round",{"title":79,"path":80,"stem":81,"icon":82},"Sessions & Devices","/docs/features/sessions","docs/2.features/9.sessions","i-lucide-monitor-smartphone",{"title":84,"icon":22,"path":85,"stem":86,"children":87,"page":22},"Integrations","/docs/integrations","docs/3.integrations",[88,93,98],{"title":89,"path":90,"stem":91,"icon":92},"GitHub & GitLab Setup","/docs/integrations/setup","docs/3.integrations/1.setup","i-lucide-git-pull-request",{"title":94,"path":95,"stem":96,"icon":97},"MCP Server","/docs/integrations/mcp","docs/3.integrations/2.mcp","i-lucide-bot",{"title":99,"path":100,"stem":101,"icon":102},"Telegram & Slack Setup","/docs/integrations/messaging","docs/3.integrations/3.messaging","i-lucide-send",{"title":104,"icon":22,"path":105,"stem":106,"children":107,"page":22},"Configuration","/docs/configuration","docs/4.configuration",[108,113],{"title":109,"path":110,"stem":111,"icon":112},"Environment Variables","/docs/configuration/environment-variables","docs/4.configuration/1.environment-variables","i-lucide-settings",{"title":114,"path":115,"stem":116,"icon":117},"Authentication","/docs/configuration/authentication","docs/4.configuration/2.authentication","i-lucide-lock",{"title":119,"icon":22,"path":120,"stem":121,"children":122,"page":22},"Collaboration","/docs/collaboration","docs/5.collaboration",[123,128],{"title":124,"path":125,"stem":126,"icon":127},"Team Members","/docs/collaboration/members","docs/5.collaboration/1.members","i-lucide-users",{"title":129,"path":130,"stem":131,"icon":132},"Roles and Permissions","/docs/collaboration/roles-and-permissions","docs/5.collaboration/2.roles-and-permissions","i-lucide-shield",{"title":134,"path":135,"stem":136,"children":137,"icon":22},"FAQ","/docs/faq","docs/6.faq/1.index",[138],{"title":139,"path":135,"stem":136,"icon":140},"Frequently Asked Questions","i-lucide-circle-help",{"title":142,"icon":22,"path":143,"stem":144,"children":145,"page":22},"Guides","/docs/guides","docs/7.guides",[146,151],{"title":147,"path":148,"stem":149,"icon":150},"Deploy TaskView on a VPS with Nginx","/docs/guides/deploy-vps-nginx","docs/7.guides/1.deploy-vps-nginx","i-lucide-server",{"title":152,"path":153,"stem":154,"icon":155},"TaskView for Freelancers","/docs/guides/taskview-for-freelancers","docs/7.guides/2.taskview-for-freelancers","i-lucide-briefcase",{"id":157,"title":74,"body":158,"description":1255,"extension":1256,"meta":1257,"navigation":1258,"path":75,"seo":1259,"stem":76,"__hash__":1260},"docs/docs/2.features/8.api-tokens.md",{"type":159,"value":160,"toc":1238},"minimark",[161,165,170,178,188,196,200,236,239,246,290,294,297,312,323,328,408,415,419,426,430,451,455,458,462,468,471,475,481,592,598,602,608,635,639,645,648,652,659,678,1234],[162,163,164],"p",{},"API tokens let you access the TaskView API without a browser session. Use them for scripts, CI/CD pipelines, bots, and any programmatic integration.",[166,167,169],"h2",{"id":168},"token-format","Token format",[162,171,172,173,177],{},"Tokens use the prefix ",[174,175,176],"code",{},"tvk_"," followed by 64 hex characters:",[179,180,185],"pre",{"className":181,"code":183,"language":184},[182],"language-text","tvk_a1b2c3d4e5f6...\n","text",[174,186,183],{"__ignoreMap":187},"",[162,189,190,191,195],{},"The full token is shown ",[192,193,194],"strong",{},"only once"," at creation. TaskView stores only the SHA-256 hash - if you lose the token, you'll need to create a new one.",[166,197,199],{"id":198},"creating-a-token","Creating a token",[201,202,203,213,219,222,225,228,233],"ol",{},[204,205,206,207,210,211],"li",{},"Go to ",[192,208,209],{},"Account Settings"," → ",[192,212,74],{},[204,214,215,216],{},"Click ",[192,217,218],{},"\"Create Token\"",[204,220,221],{},"Enter a name (e.g. \"CI pipeline\", \"Slack bot\")",[204,223,224],{},"Optionally restrict permissions and projects",[204,226,227],{},"Optionally set an expiration date",[204,229,215,230],{},[192,231,232],{},"\"Create\"",[204,234,235],{},"Copy the token immediately - it will not be shown again",[166,237,114],{"id":238},"authentication",[162,240,241,242,245],{},"Send the token in the ",[174,243,244],{},"Authorization"," header:",[179,247,251],{"className":248,"code":249,"language":250,"meta":187,"style":187},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -H \"Authorization: Bearer tvk_a1b2c3d4...\" \\\n  https://your-instance.com/module/tasks?goalId=1\n","bash",[174,252,253,280],{"__ignoreMap":187},[254,255,258,262,266,270,273,276],"span",{"class":256,"line":257},"line",1,[254,259,261],{"class":260},"sBMFI","curl",[254,263,265],{"class":264},"sfazB"," -H",[254,267,269],{"class":268},"sMK4o"," \"",[254,271,272],{"class":264},"Authorization: Bearer tvk_a1b2c3d4...",[254,274,275],{"class":268},"\"",[254,277,279],{"class":278},"sTEyZ"," \\\n",[254,281,283,286],{"class":256,"line":282},2,[254,284,285],{"class":264},"  https://your-instance.com/module/tasks?goalId=",[254,287,289],{"class":288},"sbssI","1\n",[166,291,293],{"id":292},"permission-scoping","Permission scoping",[162,295,296],{},"By default a token inherits all permissions of its owner. You can restrict this at creation:",[298,299,300,306],"ul",{},[204,301,302,305],{},[192,303,304],{},"Permissions"," - select which operations the token can perform (e.g. only read tasks, only create tasks)",[204,307,308,311],{},[192,309,310],{},"Projects"," - restrict the token to specific projects. If no projects are selected, the token has access to all projects the owner can access",[162,313,314,315,318,319,322],{},"Permissions are ",[192,316,317],{},"intersected"," with the user's RBAC role. A token cannot have more permissions than the user who created it. See ",[320,321,129],"a",{"href":130}," for details on how RBAC works.",[324,325,327],"h3",{"id":326},"available-permission-examples","Available permission examples",[329,330,331,344],"table",{},[332,333,334],"thead",{},[335,336,337,341],"tr",{},[338,339,340],"th",{},"Permission",[338,342,343],{},"Description",[345,346,347,358,368,378,388,398],"tbody",{},[335,348,349,355],{},[350,351,352],"td",{},[174,353,354],{},"component_can_watch_content",[350,356,357],{},"Read tasks and lists",[335,359,360,365],{},[350,361,362],{},[174,363,364],{},"component_can_add_tasks",[350,366,367],{},"Create new tasks",[335,369,370,375],{},[350,371,372],{},[174,373,374],{},"task_can_edit_description",[350,376,377],{},"Edit task descriptions",[335,379,380,385],{},[350,381,382],{},[174,383,384],{},"task_can_edit_status",[350,386,387],{},"Change task status",[335,389,390,395],{},[350,391,392],{},[174,393,394],{},"task_can_delete",[350,396,397],{},"Delete tasks",[335,399,400,405],{},[350,401,402],{},[174,403,404],{},"task_can_assign_users",[350,406,407],{},"Assign users to tasks",[162,409,410,411,414],{},"The full list of available permissions is returned by ",[174,412,413],{},"GET /module/api-tokens/permissions",".",[166,416,418],{"id":417},"expiration","Expiration",[162,420,421,422,425],{},"Tokens can optionally have an expiration date. After expiration, the token returns ",[174,423,424],{},"401 Unauthorized",". Tokens without an expiration date are valid until manually revoked.",[166,427,429],{"id":428},"security","Security",[298,431,432,439,442,448],{},[204,433,434,435,438],{},"Tokens ",[192,436,437],{},"cannot manage other tokens"," - all token management endpoints reject API token authentication",[204,440,441],{},"Only the SHA-256 hash is stored in the database",[204,443,444,447],{},[174,445,446],{},"lastUsedAt"," is updated on each use for audit purposes",[204,449,450],{},"Tokens for blocked users are automatically rejected",[166,452,454],{"id":453},"api-reference","API reference",[162,456,457],{},"All endpoints require JWT authentication (not API token).",[324,459,461],{"id":460},"list-tokens","List tokens",[179,463,466],{"className":464,"code":465,"language":184},[182],"GET /module/api-tokens\n",[174,467,465],{"__ignoreMap":187},[162,469,470],{},"Returns all tokens for the current user (without hashes).",[324,472,474],{"id":473},"create-token","Create token",[179,476,479],{"className":477,"code":478,"language":184},[182],"POST /module/api-tokens\n",[174,480,478],{"__ignoreMap":187},[179,482,486],{"className":483,"code":484,"language":485,"meta":187,"style":187},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"CI pipeline\",\n  \"allowedPermissions\": [\"component_can_watch_content\"],\n  \"allowedGoalIds\": [1, 2],\n  \"expiresAt\": \"2026-12-31T23:59:59Z\"\n}\n","json",[174,487,488,493,517,541,566,586],{"__ignoreMap":187},[254,489,490],{"class":256,"line":257},[254,491,492],{"class":268},"{\n",[254,494,495,498,502,504,507,509,512,514],{"class":256,"line":282},[254,496,497],{"class":268},"  \"",[254,499,501],{"class":500},"spNyl","name",[254,503,275],{"class":268},[254,505,506],{"class":268},":",[254,508,269],{"class":268},[254,510,511],{"class":264},"CI pipeline",[254,513,275],{"class":268},[254,515,516],{"class":268},",\n",[254,518,520,522,525,527,529,532,534,536,538],{"class":256,"line":519},3,[254,521,497],{"class":268},[254,523,524],{"class":500},"allowedPermissions",[254,526,275],{"class":268},[254,528,506],{"class":268},[254,530,531],{"class":268}," [",[254,533,275],{"class":268},[254,535,354],{"class":264},[254,537,275],{"class":268},[254,539,540],{"class":268},"],\n",[254,542,544,546,549,551,553,555,558,561,564],{"class":256,"line":543},4,[254,545,497],{"class":268},[254,547,548],{"class":500},"allowedGoalIds",[254,550,275],{"class":268},[254,552,506],{"class":268},[254,554,531],{"class":268},[254,556,557],{"class":288},"1",[254,559,560],{"class":268},",",[254,562,563],{"class":288}," 2",[254,565,540],{"class":268},[254,567,569,571,574,576,578,580,583],{"class":256,"line":568},5,[254,570,497],{"class":268},[254,572,573],{"class":500},"expiresAt",[254,575,275],{"class":268},[254,577,506],{"class":268},[254,579,269],{"class":268},[254,581,582],{"class":264},"2026-12-31T23:59:59Z",[254,584,585],{"class":268},"\"\n",[254,587,589],{"class":256,"line":588},6,[254,590,591],{"class":268},"}\n",[162,593,594,595,597],{},"All fields except ",[174,596,501],{}," are optional. Returns the full plaintext token once.",[324,599,601],{"id":600},"delete-token","Delete token",[179,603,606],{"className":604,"code":605,"language":184},[182],"DELETE /module/api-tokens\n",[174,607,605],{"__ignoreMap":187},[179,609,611],{"className":483,"code":610,"language":485,"meta":187,"style":187},"{\n  \"id\": 5\n}\n",[174,612,613,617,631],{"__ignoreMap":187},[254,614,615],{"class":256,"line":257},[254,616,492],{"class":268},[254,618,619,621,624,626,628],{"class":256,"line":282},[254,620,497],{"class":268},[254,622,623],{"class":500},"id",[254,625,275],{"class":268},[254,627,506],{"class":268},[254,629,630],{"class":288}," 5\n",[254,632,633],{"class":256,"line":519},[254,634,591],{"class":268},[324,636,638],{"id":637},"list-available-permissions","List available permissions",[179,640,643],{"className":641,"code":642,"language":184},[182],"GET /module/api-tokens/permissions\n",[174,644,642],{"__ignoreMap":187},[162,646,647],{},"Returns permissions grouped by category.",[166,649,651],{"id":650},"usage-example","Usage example",[162,653,654,655,658],{},"Using the ",[174,656,657],{},"taskview-api"," package:",[179,660,662],{"className":248,"code":661,"language":250,"meta":187,"style":187},"npm install taskview-api axios\n",[174,663,664],{"__ignoreMap":187},[254,665,666,669,672,675],{"class":256,"line":257},[254,667,668],{"class":260},"npm",[254,670,671],{"class":264}," install",[254,673,674],{"class":264}," taskview-api",[254,676,677],{"class":264}," axios\n",[179,679,683],{"className":680,"code":681,"language":682,"meta":187,"style":187},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import axios from 'axios'\nimport { TvApi } from 'taskview-api'\n\nconst GOAL_ID = 1\n\nconst $axios = axios.create({\n  baseURL: 'https://your-instance.com',\n  headers: {\n    Authorization: 'Bearer tvk_your_token_here',\n  },\n})\n\nconst api = new TvApi($axios)\n\n// Fetch all tasks in a project\nconst tasks = await api.tasks.fetch({ goalId: GOAL_ID })\nconsole.log(`Found ${tasks.length} tasks`)\n\n// Create a new task\nconst newTask = await api.tasks.createTask({\n  goalId: GOAL_ID,\n  description: 'Task created via API',\n})\nconsole.log('Created task:', newTask.id)\n\n// Update the task description\nawait api.tasks.updateTask({\n  id: newTask.id,\n  description: 'Updated via API',\n})\nconsole.log('Task updated')\n\n// Fetch projects\nconst goals = await api.goals.fetchGoals()\nconsole.log('Projects:', goals.map((g) => g.name))\n","typescript",[174,684,685,706,728,734,748,752,775,794,805,822,828,837,842,860,865,872,914,952,957,963,990,1003,1020,1027,1055,1060,1066,1087,1103,1119,1126,1146,1151,1157,1184],{"__ignoreMap":187},[254,686,687,691,694,697,700,703],{"class":256,"line":257},[254,688,690],{"class":689},"s7zQu","import",[254,692,693],{"class":278}," axios ",[254,695,696],{"class":689},"from",[254,698,699],{"class":268}," '",[254,701,702],{"class":264},"axios",[254,704,705],{"class":268},"'\n",[254,707,708,710,713,716,719,722,724,726],{"class":256,"line":282},[254,709,690],{"class":689},[254,711,712],{"class":268}," {",[254,714,715],{"class":278}," TvApi",[254,717,718],{"class":268}," }",[254,720,721],{"class":689}," from",[254,723,699],{"class":268},[254,725,657],{"class":264},[254,727,705],{"class":268},[254,729,730],{"class":256,"line":519},[254,731,733],{"emptyLinePlaceholder":732},true,"\n",[254,735,736,739,742,745],{"class":256,"line":543},[254,737,738],{"class":500},"const",[254,740,741],{"class":278}," GOAL_ID ",[254,743,744],{"class":268},"=",[254,746,747],{"class":288}," 1\n",[254,749,750],{"class":256,"line":568},[254,751,733],{"emptyLinePlaceholder":732},[254,753,754,756,759,761,764,766,770,773],{"class":256,"line":588},[254,755,738],{"class":500},[254,757,758],{"class":278}," $axios ",[254,760,744],{"class":268},[254,762,763],{"class":278}," axios",[254,765,414],{"class":268},[254,767,769],{"class":768},"s2Zo4","create",[254,771,772],{"class":278},"(",[254,774,492],{"class":268},[254,776,778,782,784,786,789,792],{"class":256,"line":777},7,[254,779,781],{"class":780},"swJcz","  baseURL",[254,783,506],{"class":268},[254,785,699],{"class":268},[254,787,788],{"class":264},"https://your-instance.com",[254,790,791],{"class":268},"'",[254,793,516],{"class":268},[254,795,797,800,802],{"class":256,"line":796},8,[254,798,799],{"class":780},"  headers",[254,801,506],{"class":268},[254,803,804],{"class":268}," {\n",[254,806,808,811,813,815,818,820],{"class":256,"line":807},9,[254,809,810],{"class":780},"    Authorization",[254,812,506],{"class":268},[254,814,699],{"class":268},[254,816,817],{"class":264},"Bearer tvk_your_token_here",[254,819,791],{"class":268},[254,821,516],{"class":268},[254,823,825],{"class":256,"line":824},10,[254,826,827],{"class":268},"  },\n",[254,829,831,834],{"class":256,"line":830},11,[254,832,833],{"class":268},"}",[254,835,836],{"class":278},")\n",[254,838,840],{"class":256,"line":839},12,[254,841,733],{"emptyLinePlaceholder":732},[254,843,845,847,850,852,855,857],{"class":256,"line":844},13,[254,846,738],{"class":500},[254,848,849],{"class":278}," api ",[254,851,744],{"class":268},[254,853,854],{"class":268}," new",[254,856,715],{"class":768},[254,858,859],{"class":278},"($axios)\n",[254,861,863],{"class":256,"line":862},14,[254,864,733],{"emptyLinePlaceholder":732},[254,866,868],{"class":256,"line":867},15,[254,869,871],{"class":870},"sHwdD","// Fetch all tasks in a project\n",[254,873,875,877,880,882,885,888,890,893,895,898,900,903,906,908,910,912],{"class":256,"line":874},16,[254,876,738],{"class":500},[254,878,879],{"class":278}," tasks ",[254,881,744],{"class":268},[254,883,884],{"class":689}," await",[254,886,887],{"class":278}," api",[254,889,414],{"class":268},[254,891,892],{"class":278},"tasks",[254,894,414],{"class":268},[254,896,897],{"class":768},"fetch",[254,899,772],{"class":278},[254,901,902],{"class":268},"{",[254,904,905],{"class":780}," goalId",[254,907,506],{"class":268},[254,909,741],{"class":278},[254,911,833],{"class":268},[254,913,836],{"class":278},[254,915,917,920,922,925,927,930,933,936,938,940,943,945,948,950],{"class":256,"line":916},17,[254,918,919],{"class":278},"console",[254,921,414],{"class":268},[254,923,924],{"class":768},"log",[254,926,772],{"class":278},[254,928,929],{"class":268},"`",[254,931,932],{"class":264},"Found ",[254,934,935],{"class":268},"${",[254,937,892],{"class":278},[254,939,414],{"class":268},[254,941,942],{"class":278},"length",[254,944,833],{"class":268},[254,946,947],{"class":264}," tasks",[254,949,929],{"class":268},[254,951,836],{"class":278},[254,953,955],{"class":256,"line":954},18,[254,956,733],{"emptyLinePlaceholder":732},[254,958,960],{"class":256,"line":959},19,[254,961,962],{"class":870},"// Create a new task\n",[254,964,966,968,971,973,975,977,979,981,983,986,988],{"class":256,"line":965},20,[254,967,738],{"class":500},[254,969,970],{"class":278}," newTask ",[254,972,744],{"class":268},[254,974,884],{"class":689},[254,976,887],{"class":278},[254,978,414],{"class":268},[254,980,892],{"class":278},[254,982,414],{"class":268},[254,984,985],{"class":768},"createTask",[254,987,772],{"class":278},[254,989,492],{"class":268},[254,991,993,996,998,1001],{"class":256,"line":992},21,[254,994,995],{"class":780},"  goalId",[254,997,506],{"class":268},[254,999,1000],{"class":278}," GOAL_ID",[254,1002,516],{"class":268},[254,1004,1006,1009,1011,1013,1016,1018],{"class":256,"line":1005},22,[254,1007,1008],{"class":780},"  description",[254,1010,506],{"class":268},[254,1012,699],{"class":268},[254,1014,1015],{"class":264},"Task created via API",[254,1017,791],{"class":268},[254,1019,516],{"class":268},[254,1021,1023,1025],{"class":256,"line":1022},23,[254,1024,833],{"class":268},[254,1026,836],{"class":278},[254,1028,1030,1032,1034,1036,1038,1040,1043,1045,1047,1050,1052],{"class":256,"line":1029},24,[254,1031,919],{"class":278},[254,1033,414],{"class":268},[254,1035,924],{"class":768},[254,1037,772],{"class":278},[254,1039,791],{"class":268},[254,1041,1042],{"class":264},"Created task:",[254,1044,791],{"class":268},[254,1046,560],{"class":268},[254,1048,1049],{"class":278}," newTask",[254,1051,414],{"class":268},[254,1053,1054],{"class":278},"id)\n",[254,1056,1058],{"class":256,"line":1057},25,[254,1059,733],{"emptyLinePlaceholder":732},[254,1061,1063],{"class":256,"line":1062},26,[254,1064,1065],{"class":870},"// Update the task description\n",[254,1067,1069,1072,1074,1076,1078,1080,1083,1085],{"class":256,"line":1068},27,[254,1070,1071],{"class":689},"await",[254,1073,887],{"class":278},[254,1075,414],{"class":268},[254,1077,892],{"class":278},[254,1079,414],{"class":268},[254,1081,1082],{"class":768},"updateTask",[254,1084,772],{"class":278},[254,1086,492],{"class":268},[254,1088,1090,1093,1095,1097,1099,1101],{"class":256,"line":1089},28,[254,1091,1092],{"class":780},"  id",[254,1094,506],{"class":268},[254,1096,1049],{"class":278},[254,1098,414],{"class":268},[254,1100,623],{"class":278},[254,1102,516],{"class":268},[254,1104,1106,1108,1110,1112,1115,1117],{"class":256,"line":1105},29,[254,1107,1008],{"class":780},[254,1109,506],{"class":268},[254,1111,699],{"class":268},[254,1113,1114],{"class":264},"Updated via API",[254,1116,791],{"class":268},[254,1118,516],{"class":268},[254,1120,1122,1124],{"class":256,"line":1121},30,[254,1123,833],{"class":268},[254,1125,836],{"class":278},[254,1127,1129,1131,1133,1135,1137,1139,1142,1144],{"class":256,"line":1128},31,[254,1130,919],{"class":278},[254,1132,414],{"class":268},[254,1134,924],{"class":768},[254,1136,772],{"class":278},[254,1138,791],{"class":268},[254,1140,1141],{"class":264},"Task updated",[254,1143,791],{"class":268},[254,1145,836],{"class":278},[254,1147,1149],{"class":256,"line":1148},32,[254,1150,733],{"emptyLinePlaceholder":732},[254,1152,1154],{"class":256,"line":1153},33,[254,1155,1156],{"class":870},"// Fetch projects\n",[254,1158,1160,1162,1165,1167,1169,1171,1173,1176,1178,1181],{"class":256,"line":1159},34,[254,1161,738],{"class":500},[254,1163,1164],{"class":278}," goals ",[254,1166,744],{"class":268},[254,1168,884],{"class":689},[254,1170,887],{"class":278},[254,1172,414],{"class":268},[254,1174,1175],{"class":278},"goals",[254,1177,414],{"class":268},[254,1179,1180],{"class":768},"fetchGoals",[254,1182,1183],{"class":278},"()\n",[254,1185,1187,1189,1191,1193,1195,1197,1200,1202,1204,1207,1209,1212,1214,1216,1220,1223,1226,1229,1231],{"class":256,"line":1186},35,[254,1188,919],{"class":278},[254,1190,414],{"class":268},[254,1192,924],{"class":768},[254,1194,772],{"class":278},[254,1196,791],{"class":268},[254,1198,1199],{"class":264},"Projects:",[254,1201,791],{"class":268},[254,1203,560],{"class":268},[254,1205,1206],{"class":278}," goals",[254,1208,414],{"class":268},[254,1210,1211],{"class":768},"map",[254,1213,772],{"class":278},[254,1215,772],{"class":268},[254,1217,1219],{"class":1218},"sHdIc","g",[254,1221,1222],{"class":268},")",[254,1224,1225],{"class":500}," =>",[254,1227,1228],{"class":278}," g",[254,1230,414],{"class":268},[254,1232,1233],{"class":278},"name))\n",[1235,1236,1237],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":187,"searchDepth":282,"depth":282,"links":1239},[1240,1241,1242,1243,1246,1247,1248,1254],{"id":168,"depth":282,"text":169},{"id":198,"depth":282,"text":199},{"id":238,"depth":282,"text":114},{"id":292,"depth":282,"text":293,"children":1244},[1245],{"id":326,"depth":519,"text":327},{"id":417,"depth":282,"text":418},{"id":428,"depth":282,"text":429},{"id":453,"depth":282,"text":454,"children":1249},[1250,1251,1252,1253],{"id":460,"depth":519,"text":461},{"id":473,"depth":519,"text":474},{"id":600,"depth":519,"text":601},{"id":637,"depth":519,"text":638},{"id":650,"depth":282,"text":651},"Create API tokens for programmatic access to TaskView. Tokens support permission scoping, project-level restrictions, and optional expiration.","md",{},{"icon":77},{"title":74,"description":1255},"KxU4vq4_tkNjuj4e1IY0LTwVi1pWuk_W0QM6y0OV5aw",[1262,1264],{"title":69,"path":70,"stem":71,"description":1263,"icon":72,"children":-1},"Configure webhooks in TaskView to receive real-time HTTP notifications when tasks are created, updated, deleted, or reassigned. Includes HMAC-SHA256 signature verification, automatic retries, and delivery history.",{"title":79,"path":80,"stem":81,"description":1265,"icon":82,"children":-1},"Manage active sessions in TaskView. View logged-in devices, close individual sessions, or sign out of all devices at once.",1783289464129]