[{"data":1,"prerenderedAt":795},["ShallowReactive",2],{"navigation_docs":3,"-guide-workspace":172,"-guide-workspace-surround":790},[4,30,100,134],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":29},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,21,25],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":5,"path":19,"stem":20},"\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":22,"path":23,"stem":24},"Build from source","\u002Fgetting-started\u002Fbuild-from-source","1.getting-started\u002F4.build-from-source",{"title":26,"path":27,"stem":28},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F5.troubleshooting",false,{"title":31,"icon":32,"path":33,"stem":34,"children":35,"page":29},"Guide","i-lucide-book-open","\u002Fguide","2.guide",[36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96],{"title":37,"path":38,"stem":39},"Interface","\u002Fguide\u002Finterface","2.guide\u002F01.interface",{"title":41,"path":42,"stem":43},"Workspace","\u002Fguide\u002Fworkspace","2.guide\u002F02.workspace",{"title":45,"path":46,"stem":47},"Collections","\u002Fguide\u002Fcollections","2.guide\u002F03.collections",{"title":49,"path":50,"stem":51},"HTTP requests","\u002Fguide\u002Fhttp-requests","2.guide\u002F04.http-requests",{"title":53,"path":54,"stem":55},"Variables","\u002Fguide\u002Fvariables","2.guide\u002F05.variables",{"title":57,"path":58,"stem":59},"Authorization","\u002Fguide\u002Fauthorization","2.guide\u002F06.authorization",{"title":61,"path":62,"stem":63},"Scripts and tests","\u002Fguide\u002Fscripts-and-tests","2.guide\u002F07.scripts-and-tests",{"title":65,"path":66,"stem":67},"Collection runner","\u002Fguide\u002Fcollection-runner","2.guide\u002F08.collection-runner",{"title":69,"path":70,"stem":71},"Import and export","\u002Fguide\u002Fimport-export","2.guide\u002F09.import-export",{"title":73,"path":74,"stem":75},"Code snippets","\u002Fguide\u002Fcode-snippets","2.guide\u002F10.code-snippets",{"title":77,"path":78,"stem":79},"gRPC","\u002Fguide\u002Fgrpc","2.guide\u002F11.grpc",{"title":81,"path":82,"stem":83},"WebSocket","\u002Fguide\u002Fwebsocket","2.guide\u002F12.websocket",{"title":85,"path":86,"stem":87},"Cookies, proxy and certificates","\u002Fguide\u002Fcookies-proxy-certificates","2.guide\u002F13.cookies-proxy-certificates",{"title":89,"path":90,"stem":91},"Settings","\u002Fguide\u002Fsettings","2.guide\u002F14.settings",{"title":93,"path":94,"stem":95},"Keyboard shortcuts","\u002Fguide\u002Fkeyboard-shortcuts","2.guide\u002F15.keyboard-shortcuts",{"title":97,"path":98,"stem":99},"Privacy and security","\u002Fguide\u002Fprivacy-and-security","2.guide\u002F16.privacy-and-security",{"title":101,"icon":102,"path":103,"stem":104,"children":105,"page":29},"Reference","i-lucide-square-terminal","\u002Freference","3.reference",[106,110,114,118,122,126,130],{"title":107,"path":108,"stem":109},"Command line","\u002Freference\u002Fcli","3.reference\u002F1.cli",{"title":111,"path":112,"stem":113},"Automation tools","\u002Freference\u002Fautomation-tools","3.reference\u002F2.automation-tools",{"title":115,"path":116,"stem":117},"Scripting API","\u002Freference\u002Fscripting-api","3.reference\u002F3.scripting-api",{"title":119,"path":120,"stem":121},"Dynamic variables","\u002Freference\u002Fdynamic-variables","3.reference\u002F4.dynamic-variables",{"title":123,"path":124,"stem":125},"UI control channel","\u002Freference\u002Fui-control-channel","3.reference\u002F5.ui-control-channel",{"title":127,"path":128,"stem":129},"Workspace format","\u002Freference\u002Fworkspace-format","3.reference\u002F6.workspace-format",{"title":131,"path":132,"stem":133},"Feature status","\u002Freference\u002Ffeature-status","3.reference\u002F7.feature-status",{"title":135,"icon":136,"path":137,"stem":138,"children":139,"page":29},"Contributing","i-lucide-git-pull-request","\u002Fcontributing","4.contributing",[140,144,148,152,156,160,164,168],{"title":141,"path":142,"stem":143},"Contributing overview","\u002Fcontributing\u002Foverview","4.contributing\u002F1.overview",{"title":145,"path":146,"stem":147},"Development","\u002Fcontributing\u002Fdevelopment","4.contributing\u002F2.development",{"title":149,"path":150,"stem":151},"Architecture","\u002Fcontributing\u002Farchitecture","4.contributing\u002F3.architecture",{"title":153,"path":154,"stem":155},"Known gaps","\u002Fcontributing\u002Fgaps","4.contributing\u002F4.gaps",{"title":157,"path":158,"stem":159},"Adding a feature","\u002Fcontributing\u002Fadding-a-feature","4.contributing\u002F5.adding-a-feature",{"title":161,"path":162,"stem":163},"Assets and clean-room","\u002Fcontributing\u002Fassets-and-clean-room","4.contributing\u002F6.assets-and-clean-room",{"title":165,"path":166,"stem":167},"Releasing","\u002Fcontributing\u002Freleasing","4.contributing\u002F7.releasing",{"title":169,"path":170,"stem":171},"Writing the documentation","\u002Fcontributing\u002Fdocumentation","4.contributing\u002F8.documentation",{"id":173,"title":41,"body":174,"description":783,"extension":784,"links":785,"meta":786,"navigation":787,"path":42,"seo":788,"stem":43,"__hash__":789},"docs\u002F2.guide\u002F02.workspace.md",{"type":175,"value":176,"toc":769},"minimark",[177,181,186,189,215,234,242,246,276,401,405,428,431,451,455,462,473,476,489,493,496,507,525,539,554,566,570,587,591,598,609,612,616,627,630,635,639,662,669,673,676,687,725,739],[178,179,180],"p",{},"A workspace is one folder. Everything you create lives inside it as plain files: collections, environments, globals, history, cookies and settings. There is no account, no database and no cloud copy. Back it up or version it like any other folder.",[182,183,185],"h2",{"id":184},"choosing-a-workspace","Choosing a workspace",[178,187,188],{},"Postguy picks the workspace at start, in this order:",[190,191,192,199,205],"ol",{},[193,194,195],"li",{},[196,197,198],"code",{},"postguy --workspace DIR",[193,200,201,204],{},[196,202,203],{},".\u002Fpostguy-workspace",", if that folder exists in the launch directory",[193,206,207,210,211,214],{},[196,208,209],{},"~\u002Fpostguy-workspace"," (",[196,212,213],{},"%USERPROFILE%\\postguy-workspace"," on Windows)",[216,217,218,221,228,231],"ul",{},[193,219,220],{},"Postguy creates the folder on first use.",[193,222,223,224,227],{},"There is no in-app workspace switcher. To use another workspace, quit and start Postguy with a different ",[196,225,226],{},"--workspace",".",[193,229,230],{},"The header shows the folder name.",[193,232,233],{},"If the workspace can't be opened (for example a permission error), the window opens without it. The status text at the bottom right shows the error.",[235,236,237,238,227],"note",{},"An installed app often starts in a read-only folder. That is why the default is your home directory, not the launch directory. See ",[239,240,15],"a",{"href":241},"\u002Fgetting-started\u002Finstallation#where-your-data-lives",[182,243,245],{"id":244},"what-is-inside","What is inside",[178,247,248,249,252,253,252,256,252,259,252,262,265,266,269,270,273,274,227],{},"Opening a workspace creates ",[196,250,251],{},"collections\u002F",", ",[196,254,255],{},"environments\u002F",[196,257,258],{},"protos\u002F",[196,260,261],{},"files\u002F",[196,263,264],{},".trash\u002F"," and ",[196,267,268],{},".postguy\u002F",". Postguy's own settings and session live in ",[196,271,272],{},".postguy-config\u002F",". The complete tree, file schemas and read limits are in ",[239,275,127],{"href":128},[277,278,279,292],"table",{},[280,281,282],"thead",{},[283,284,285,289],"tr",{},[286,287,288],"th",{},"Path",[286,290,291],{},"Purpose",[293,294,295,310,320,333,345,359,369,378,387],"tbody",{},[283,296,297,303],{},[298,299,300],"td",{},[196,301,302],{},"postguy.json",[298,304,305,306,309],{},"Workspace metadata: schema ",[196,307,308],{},"postguy\u002Fworkspace\u002F1",", collection and environment order, active environment.",[283,311,312,317],{},[298,313,314],{},[196,315,316],{},"collections\u002F\u003Cid>.json",[298,318,319],{},"One file per collection, including folders and requests.",[283,321,322,330],{},[298,323,324,252,327],{},[196,325,326],{},"environments\u002F\u003Cid>.json",[196,328,329],{},"globals.json",[298,331,332],{},"Variables. Values of secret variables are not in these files.",[283,334,335,339],{},[298,336,337],{},[196,338,261],{},[298,340,341,342,227],{},"The default working directory for file bodies and ",[196,343,344],{},"Save Response",[283,346,347,352],{},[298,348,349],{},[196,350,351],{},"assets\u002F\u003Ccollection id>\u002F",[298,353,354,355,227],{},"A collection's ",[239,356,358],{"href":357},"\u002Fguide\u002Fcollections#assets","assets",[283,360,361,366],{},[298,362,363],{},[196,364,365],{},"history.jsonl",[298,367,368],{},"The send history.",[283,370,371,375],{},[298,372,373],{},[196,374,264],{},[298,376,377],{},"Deleted items.",[283,379,380,384],{},[298,381,382],{},[196,383,268],{},[298,385,386],{},"Secrets, cookies, cached response bodies, stored runs, the lock file.",[283,388,389,393],{},[298,390,391],{},[196,392,272],{},[298,394,395,265,398,227],{},[196,396,397],{},"settings.json",[196,399,400],{},"session.json",[182,402,404],{"id":403},"saving","Saving",[216,406,407,414,417],{},[193,408,409,410,413],{},"Every file is written atomically. Postguy writes a temporary file in the same folder, then renames it over the old one. It keeps the previous version as ",[196,411,412],{},"\u003Cfile>.bak"," (one generation). A failed save leaves the old file in place.",[193,415,416],{},"Environment and collection edits autosave shortly after you stop typing.",[193,418,419,420,423,424,427],{},"Save a request with ",[196,421,422],{},"Save"," or ",[196,425,426],{},"Cmd\u002FCtrl+S",". The dot on its tab shows unsaved changes.",[178,429,430],{},"If a file can't be parsed when it loads:",[216,432,433,440,446],{},[193,434,435,436,439],{},"Postguy renames it to ",[196,437,438],{},"\u003Cfile>.corrupt-\u003Ctime>",", continues without it and reports it. Nothing is deleted.",[193,441,442,443,445],{},"A corrupt ",[196,444,397],{}," falls back to defaults.",[193,447,442,448,450],{},[196,449,400],{}," starts a fresh session.",[182,452,454],{"id":453},"the-workspace-lock","The workspace lock",[178,456,457,458,461],{},"Only one process can open a workspace at a time. Postguy writes ",[196,459,460],{},".postguy\u002Flock"," with the process id and a start time. It removes the file on a clean exit.",[216,463,464,470],{},[193,465,466,467,227],{},"If another live process holds a fresh lock, opening fails with ",[196,468,469],{},"workspace already open by pid N; close that instance or remove \u003Cpath> if it is gone",[193,471,472],{},"Postguy takes over a lock whose process is gone, or whose start time is more than 3 minutes old.",[178,474,475],{},"Postguy doesn't renew the lock while it runs. It guards against accidental double opens but is not a hard guarantee. A second process that starts more than 3 minutes after the first can take the lock over. Don't open the same workspace in two processes at once.",[178,477,478,479,482,483,486,487,227],{},"The app, ",[196,480,481],{},"postguy-cli"," and the ",[239,484,485],{"href":112},"automation tools"," share the lock. Close the app before you run the CLI against the same workspace. See ",[239,488,26],{"href":27},[182,490,492],{"id":491},"trash","Trash",[178,494,495],{},"Deleting a collection or environment:",[216,497,498,504],{},[193,499,500,501,503],{},"moves its file to ",[196,502,264],{}," together with a small metadata file (original path, kind, deletion time);",[193,505,506],{},"removes its secrets.",[178,508,509,510,512,513,516,517,520,521,524],{},"The ",[196,511,492],{}," tab (bottom bar, or the command ",[196,514,515],{},"Open trash",") lists those entries with ",[196,518,519],{},"Restore",". A restore puts the file back at its original path. If that path is taken, it adds ",[196,522,523],{}," restored"," to the name.",[178,526,527,528,531,532,534,535,538],{},"Deleting a folder or request writes a record to ",[196,529,530],{},".trash\u002Fitem-\u003Ctime>.json",". The record holds the item, its collection id and the deletion time. The ",[196,533,492],{}," tab doesn't list these records yet. To recover one, copy the ",[196,536,537],{},"item"," value from that file back into the collection by hand.",[540,541,542,543,546,547,550,551,553],"warning",{},"Postguy never empties the trash today. The 30-day retention window (",[196,544,545],{},"DEFAULT_RETENTION"," in ",[196,548,549],{},"crates\u002Fstore",") is defined, but nothing calls the purge. Delete files from ",[196,552,264],{}," yourself if you want them gone.",[216,555,556,563],{},[193,557,558,559,562],{},"Collections and folders ask you to type ",[196,560,561],{},"delete"," before they are removed.",[193,564,565],{},"Requests and environments are removed immediately. They still go to the trash.",[182,567,569],{"id":568},"undo","Undo",[216,571,572,578,584],{},[193,573,574,577],{},[196,575,576],{},"Cmd\u002FCtrl+Z"," in the sidebar undoes the last rename or move of a tree item.",[193,579,580,583],{},[196,581,582],{},"Cmd\u002FCtrl+Shift+Z"," redoes it.",[193,585,586],{},"Deletes are not undone this way. Use the trash.",[182,588,590],{"id":589},"session-restore","Session restore",[178,592,593,594,597],{},"Postguy saves the open tabs and the sidebar section state and heights to ",[196,595,596],{},".postguy-config\u002Fsession.json",". It saves at most once a second and only when something changed. On the next start:",[216,599,600,603],{},[193,601,602],{},"The tabs are restored. Tabs whose collection, request or environment no longer exists are closed with a status note.",[193,604,605,606,227],{},"After an unclean exit, the status text says ",[196,607,608],{},"Session restored after an unexpected exit",[178,610,611],{},"Window position and size, expanded folders and the two-pane toggle are not restored.",[182,613,615],{"id":614},"secrets","Secrets",[178,617,618,619,622,623,626],{},"A variable marked ",[196,620,621],{},"Secret"," keeps only its name in the environment, globals or collection file. The value is stored in ",[196,624,625],{},".postguy\u002Fsecrets.json"," (mode 0600 on Unix) and loaded back into memory when the file is read. OAuth 2.0 access and refresh tokens are stored there too. Deleting an environment or a collection removes its secrets.",[178,628,629],{},"Secret values are masked in history, the console and generated snippets. They are left out of exports unless you choose to include them.",[540,631,632,634],{},[196,633,625],{}," is not encrypted at rest. Anyone who can read your workspace folder can read your secrets. Keep it out of version control and out of backups you share. OS keychain storage is not implemented.",[182,636,638],{"id":637},"history","History",[216,640,641,647,650,653],{},[193,642,643,644,646],{},"Each send from the request builder is appended to ",[196,645,365],{},", one JSON object per line.",[193,648,649],{},"Collection runs do not write history.",[193,651,652],{},"The file is capped at 5000 entries. When it grows past that, the oldest entries are dropped.",[193,654,655,658,659,227],{},[196,656,657],{},"Save response bodies in history"," (Settings › General) also caches each response body under ",[196,660,661],{},".postguy\u002Fresponses\u002F",[178,663,664,665,668],{},"See ",[239,666,49],{"href":667},"\u002Fguide\u002Fhttp-requests#history-and-console"," for what an entry stores.",[182,670,672],{"id":671},"export-and-restore","Export and restore",[178,674,675],{},"To back up a workspace, copy the folder.",[178,677,678,679,682,683,686],{},"For a portable archive, use the command ",[196,680,681],{},"Export all workspace data…",". It writes a zip (default name ",[196,684,685],{},"Workspace.zip",").",[216,688,689,703,719,722],{},[193,690,691,692,252,694,252,696,252,699,265,701,227],{},"The zip holds the collections, environments, globals, ",[196,693,258],{},[196,695,261],{},[196,697,698],{},"assets\u002F",[196,700,365],{},[196,702,302],{},[193,704,705,706,709,710,712,713,265,715,718],{},"It leaves out everything whose path starts with ",[196,707,708],{},".postguy"," (secrets, cookies, cached responses, runs, lock, and ",[196,711,272],{},"), ",[196,714,264],{},[196,716,717],{},".bak"," files.",[193,720,721],{},"It skips symbolic links.",[193,723,724],{},"It holds at most 50,000 files and 1 GiB.",[178,726,727,728,731,732,735,736,227],{},"Restore is documents-only. Importing the zip reads only its ",[196,729,730],{},".json"," entries (collections, environments, globals) and merges them through the normal import rules. Files such as assets and ",[196,733,734],{},".proto"," sets are not extracted. See ",[239,737,69],{"href":738},"\u002Fguide\u002Fimport-export#zip-files",[740,741,743,746,747,750,751,754,755,758,759,762,763,766,767,227],"tip",{"title":742},"Headless",[196,744,745],{},"workspace_open"," creates or opens a workspace, ",[196,748,749],{},"workspace_info"," summarizes it, ",[196,752,753],{},"workspace_export_zip"," writes the zip, and ",[196,756,757],{},"import_zip"," reads one. The ",[196,760,761],{},"postguy-cli run --collection"," command takes ",[196,764,765],{},"--workspace DIR",". All of them need the workspace lock, so the app must not have the workspace open. See ",[239,768,111],{"href":112},{"title":770,"searchDepth":771,"depth":771,"links":772},"",2,[773,774,775,776,777,778,779,780,781,782],{"id":184,"depth":771,"text":185},{"id":244,"depth":771,"text":245},{"id":403,"depth":771,"text":404},{"id":453,"depth":771,"text":454},{"id":491,"depth":771,"text":492},{"id":568,"depth":771,"text":569},{"id":589,"depth":771,"text":590},{"id":614,"depth":771,"text":615},{"id":637,"depth":771,"text":638},{"id":671,"depth":771,"text":672},"A workspace is a folder of JSON files. How it is chosen, locked, saved, restored and exported.","md",null,{},true,{"title":41,"description":783},"-_R_BND7zmDThkju1Ub20IIvaY2D495GWLLj18QkL18",[791,793],{"title":37,"path":38,"stem":39,"description":792,"children":-1},"The Postguy window: header, sidebar, tabs, bottom bar, command palette, menus, themes and zoom.",{"title":45,"path":46,"stem":47,"description":794,"children":-1},"Create and organise collections, folders and requests. Use the detail tabs and collection assets.",1793179613009]