Something went wrong. Try again.
Official documentation for Pocketenv docs.pocketenv.io
Something went wrong. Try again.
187 kB · 6253 lines
JSON
at commit bf2cb8f2
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254{ "openapi": "3.1.0", "info": { "title": "AT Protocol XRPC API", "summary": "An unofficial conversion of AT Protocol's lexicons to OpenAPI's schema format.", "version": "0.0.0", "license": { "name": "MIT License", "identifier": "MIT" } }, "servers": [ { "url": "https://api.pocketenv.io/xrpc/", "description": "AT Protocol PDS XRPC server" }, { "url": "https://api.pocketenv.io/xrpc/", "description": "AT Protocol AppView XRPC server" } ], "paths": { "/io.pocketenv.actor.getActorSandboxes": { "get": { "tags": ["io.pocketenv.actor"], "summary": "Get all sandboxes for a given actor", "operationId": "io.pocketenv.actor.getActorSandboxes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID or handle of the actor", "required": true, "schema": { "type": "string", "description": "The DID or handle of the actor", "format": "at-identifier" } }, { "name": "limit", "in": "query", "description": "The maximum number of sandboxes to return.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "offset", "in": "query", "description": "The number of sandboxes to skip before starting to collect the result set.", "required": false, "schema": { "type": "integer", "minimum": 0 } }, { "name": "isRunning", "in": "query", "description": "Filter sandboxes by their running status.", "required": false, "schema": { "type": "boolean", "description": "Filter sandboxes by their running status." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "sandboxes": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewDetailed" } }, "total": { "type": "integer", "minimum": 0 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.actor.getProfile": { "get": { "tags": ["io.pocketenv.actor"], "summary": "Get the profile of an actor", "operationId": "io.pocketenv.actor.getProfile", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "did", "in": "query", "description": "The DID or handle of the actor", "required": false, "schema": { "type": "string", "description": "The DID or handle of the actor", "format": "at-identifier" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.actor.defs.profileViewDetailed" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.actor.getTerminalToken": { "get": { "tags": ["io.pocketenv.actor"], "summary": "Get a terminal token", "operationId": "io.pocketenv.actor.getTerminalToken", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "description": "An access token that can be used to authenticate with the terminal service. This token is typically short-lived and should be used immediately to establish a connection with the terminal." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.file.addFile": { "post": { "tags": ["io.pocketenv.file"], "operationId": "io.pocketenv.file.addFile", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["file"], "properties": { "file": { "$ref": "#/components/schemas/io.pocketenv.file.defs.file" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.file.deleteFile": { "post": { "tags": ["io.pocketenv.file"], "operationId": "io.pocketenv.file.deleteFile", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.file.getFile": { "get": { "tags": ["io.pocketenv.file"], "operationId": "io.pocketenv.file.getFile", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The ID of the file to retrieve.", "required": true, "schema": { "type": "string", "description": "The ID of the file to retrieve." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "file": { "$ref": "#/components/schemas/io.pocketenv.file.defs.fileView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.file.getFiles": { "get": { "tags": ["io.pocketenv.file"], "operationId": "io.pocketenv.file.getFiles", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "sandboxId", "in": "query", "description": "The ID of the sandbox for which to retrieve files.", "required": false, "schema": { "type": "string", "description": "The ID of the sandbox for which to retrieve files." } }, { "name": "limit", "in": "query", "description": "The maximum number of files to return.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "offset", "in": "query", "description": "The number of files to skip before starting to collect the result set.", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "files": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.file.defs.fileView" } }, "total": { "type": "integer", "minimum": 0 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.file.updateFile": { "post": { "tags": ["io.pocketenv.file"], "operationId": "io.pocketenv.file.updateFile", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "file"], "properties": { "id": { "type": "string", "description": "The ID of the file to delete" }, "file": { "$ref": "#/components/schemas/io.pocketenv.file.defs.file" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.claimSandbox": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Claim a sandbox by id", "operationId": "io.pocketenv.sandbox.claimSandbox", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.createBackup": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Create a backup of a sandbox by id", "operationId": "io.pocketenv.sandbox.createBackup", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["directory"], "properties": { "directory": { "type": "string", "description": "The directory to backup." }, "description": { "type": "string", "description": "An optional description for the backup." }, "ttl": { "type": "integer" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.createIntegration": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Create a new integration for the sandbox.", "operationId": "io.pocketenv.sandbox.createIntegration", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "name"], "properties": { "id": { "type": "string", "description": "The sandbox ID." }, "name": { "type": "string", "description": "The name of the integration." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.integrationView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.createSandbox": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Create a sandbox", "operationId": "io.pocketenv.sandbox.createSandbox", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["base"], "properties": { "base": { "type": "string", "description": "The base sandbox URI to clone from, e.g. a template or an existing sandbox." }, "name": { "type": "string", "description": "The name of the sandbox", "minLength": 1 }, "description": { "type": "string", "description": "A description for the sandbox" }, "provider": { "type": "string", "description": "The provider to create the sandbox on, e.g. 'daytona', 'vercel', 'cloudflare', etc." }, "topics": { "type": "array", "items": { "type": "string", "maxLength": 50 } }, "repo": { "type": "string", "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo." }, "vcpus": { "type": "integer", "minimum": 1 }, "memory": { "type": "integer", "minimum": 1 }, "disk": { "type": "integer", "minimum": 3 }, "readme": { "type": "string", "description": "A URI to a README for the sandbox.", "format": "uri" }, "secrets": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.secrets" }, "envs": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.envs" }, "keepAlive": { "type": "boolean", "description": "Prevent the sandbox from being automatically stop after a period of inactivity. Use with caution, as this may lead to increased costs." }, "spriteToken": { "type": "string", "description": "A token (encrypted) for accessing sprite resources" }, "redactedSpriteToken": { "type": "string", "description": "A redacted token for accessing sprite resources" }, "denoDeployToken": { "type": "string", "description": "A token (encrypted) for accessing Deno Deploy resources" }, "redactedDenoDeployToken": { "type": "string", "description": "A redacted token for accessing Deno Deploy resources" }, "daytonaApiKey": { "type": "string", "description": "A token (encrypted) for accessing Daytona resources" }, "redactedDaytonaApiKey": { "type": "string", "description": "A redacted token for accessing Daytona resources" }, "daytonaOrganizationId": { "type": "string", "description": "The organization ID for Daytona resources" }, "vercelApiToken": { "type": "string", "description": "A token (encrypted) for accessing Vercel resources" }, "redactedVercelApiToken": { "type": "string", "description": "A redacted token for accessing Vercel resources" }, "vercelProjectId": { "type": "string", "description": "The project ID for Vercel resources" }, "vercelTeamId": { "type": "string", "description": "The team ID for Vercel resources" }, "modalTokenId": { "type": "string", "description": "A token (encrypted) for accessing Modal resources" }, "redactedModalTokenId": { "type": "string", "description": "A redacted token for accessing Modal resources" }, "modalTokenSecret": { "type": "string", "description": "A token (encrypted) for accessing Modal resources" }, "redactedModalTokenSecret": { "type": "string", "description": "A redacted token for accessing Modal resources" }, "e2bApiKey": { "type": "string", "description": "An API KEY (encrypted) for accessing E2B resources" }, "redactedE2bApiKey": { "type": "string", "description": "A redacted API KEY for accessing E2B resources" }, "hopxApiKey": { "type": "string", "description": "An API KEY (encrypted) for accessing hopx resources" }, "redactedHopxApiKey": { "type": "string", "description": "A redacted API KEY for accessing hopx resources" }, "runloopApiKey": { "type": "string", "description": "An API KEY (encrypted) for accessing Runloop resources" }, "redactedRunloopApiKey": { "type": "string", "description": "A redacted API KEY for accessing Runloop resources" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.deleteSandbox": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Delete a sandbox by uri", "operationId": "io.pocketenv.sandbox.deleteSandbox", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.exec": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Execute a command in a sandbox.", "operationId": "io.pocketenv.sandbox.exec", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["command"], "properties": { "command": { "type": "string", "description": "The command to execute in the sandbox." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "stdout": { "type": "string", "description": "The output of the executed command." }, "stderr": { "type": "string", "description": "The error output of the executed command, if any." }, "exitCode": { "type": "integer" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.exposePort": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Expose a port for a sandbox.", "operationId": "io.pocketenv.sandbox.exposePort", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["port"], "properties": { "port": { "type": "integer", "minimum": 1025, "maximum": 65535 }, "description": { "type": "string", "description": "A description of the port." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "previewUrl": { "type": "string", "description": "The preview URL for the exposed port." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.exposeVscode": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Expose an instance of VS Code for a sandbox. This allows users to access a web-based version of VS Code that is connected to their sandbox environment, enabling them to edit code, manage files, and perform other development tasks directly from their browser.", "operationId": "io.pocketenv.sandbox.exposeVscode", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "previewUrl": { "type": "string", "description": "The preview URL for the exposed port." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getBackups": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get the list of backups for a sandbox.", "operationId": "io.pocketenv.sandbox.getBackups", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID.", "required": true, "schema": { "type": "string", "description": "The sandbox ID." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "backups": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.port.defs.backupViewBasic" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getExposedPorts": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get the list of exposed ports for a sandbox.", "operationId": "io.pocketenv.sandbox.getExposedPorts", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID.", "required": true, "schema": { "type": "string", "description": "The sandbox ID." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "ports": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.port.defs.portView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getIntegrations": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get the integrations for a sandbox.", "operationId": "io.pocketenv.sandbox.getIntegrations", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID.", "required": true, "schema": { "type": "string", "description": "The sandbox ID." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.integrationsView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getPreferences": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get sandbox preferences", "operationId": "io.pocketenv.sandbox.getPreferences", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID or URI to retrieve", "required": true, "schema": { "type": "string", "description": "The sandbox ID or URI to retrieve" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.preferences" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getSandbox": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get a sandbox by ID or URI", "operationId": "io.pocketenv.sandbox.getSandbox", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID or URI to retrieve", "required": true, "schema": { "type": "string", "description": "The sandbox ID or URI to retrieve" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getSandboxes": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get all sandboxes", "operationId": "io.pocketenv.sandbox.getSandboxes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "description": "The maximum number of sandboxes to return.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "offset", "in": "query", "description": "The number of sandboxes to skip before starting to collect the result set.", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "sandboxes": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } }, "total": { "type": "integer", "minimum": 0 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getSshKeys": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get the SSH keys for a sandbox.", "operationId": "io.pocketenv.sandbox.getSshKeys", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID.", "required": true, "schema": { "type": "string", "description": "The sandbox ID." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sshKeysView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getTailscaleAuthKey": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get the Tailscale token for a sandbox.", "operationId": "io.pocketenv.sandbox.getTailscaleAuthKey", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID.", "required": true, "schema": { "type": "string", "description": "The sandbox ID." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.tailscaleAuthKeyView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.getTailscaleToken": { "get": { "tags": ["io.pocketenv.sandbox"], "summary": "Get the Tailscale token for a sandbox.", "operationId": "io.pocketenv.sandbox.getTailscaleToken", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The sandbox ID.", "required": true, "schema": { "type": "string", "description": "The sandbox ID." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.tailscaleTokenView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.pullDirectory": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Pull a directory from the cp storage into a Sandbox.", "operationId": "io.pocketenv.sandbox.pullDirectory", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["sandboxId", "directoryPath"], "properties": { "sandboxId": { "type": "string", "description": "ID of the Sandbox into which to pull the directory." }, "uuid": { "type": "string", "description": "ID of the directory in cp storage to pull into the Sandbox." }, "directoryPath": { "type": "string", "description": "Destination path within the Sandbox where the directory should be pulled. This should be an absolute path." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.pushDirectory": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Push a directory from a Sandbox to the cp Storage.", "operationId": "io.pocketenv.sandbox.pushDirectory", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["sandboxId", "directoryPath"], "properties": { "sandboxId": { "type": "string", "description": "ID of the source Sandbox to read the directory from." }, "directoryPath": { "type": "string", "description": "Path of the directory within the Sandbox to push to cp storage. This should be an absolute path." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "uuid": { "type": "string", "description": "The UUID of the pushed directory in cp storage. This can be used to reference the directory in other API calls, such as creating a file from the directory or sharing the directory with another sandbox." } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.putPreferences": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Update sandbox preferences.", "operationId": "io.pocketenv.sandbox.putPreferences", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["sandboxId", "preferences"], "properties": { "sandboxId": { "type": "string", "description": "The sandbox ID or URI" }, "preferences": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.preferences" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.putSshKeys": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Add or update SSH keys for a sandbox.", "operationId": "io.pocketenv.sandbox.putSshKeys", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "privateKey", "publicKey"], "properties": { "id": { "type": "string", "description": "The sandbox ID." }, "privateKey": { "type": "string", "description": "The private SSH key (encrypted)" }, "publicKey": { "type": "string", "description": "The public SSH key." }, "redacted": { "type": "string", "description": "The redacted SSH key." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sshKeysView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.putTailscaleAuthKey": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Store a Tailscale Auth Key for the sandbox. This Auth Key will be used to authenticate with the Tailscale API and manage the sandbox's Tailscale node.", "operationId": "io.pocketenv.sandbox.putTailscaleAuthKey", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "authKey"], "properties": { "id": { "type": "string", "description": "The sandbox ID." }, "authKey": { "type": "string", "description": "The Tailscale Auth Key (encrypted) to store for the sandbox." }, "redacted": { "type": "string", "description": "The redacted SSH key." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.tailscaleAuthKeyView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.putTailscaleToken": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Store a Tailscale token for the sandbox. This token will be used to authenticate with the Tailscale API and manage the sandbox's Tailscale node.", "operationId": "io.pocketenv.sandbox.putTailscaleToken", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "token"], "properties": { "id": { "type": "string", "description": "The sandbox ID." }, "token": { "type": "string", "description": "The Tailscale token (encrypted) to store for the sandbox." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.tailscaleTokenView" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.restoreBackup": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Restore a backup of a sandbox", "operationId": "io.pocketenv.sandbox.restoreBackup", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["backupId"], "properties": { "backupId": { "type": "string", "description": "The backup ID to restore." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.startSandbox": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Start a sandbox", "operationId": "io.pocketenv.sandbox.startSandbox", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "repo": { "type": "string", "description": "The git repository URL to clone into the sandbox before starting it. Optional." }, "keepAlive": { "type": "boolean", "description": "Prevent the sandbox from being automatically stop after a period of inactivity. Use with caution, as this may lead to increased costs." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.stopSandbox": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Stop a sandbox", "operationId": "io.pocketenv.sandbox.stopSandbox", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxViewBasic" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.unexposePort": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Unexpose a port for a sandbox.", "operationId": "io.pocketenv.sandbox.unexposePort", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["port"], "properties": { "port": { "type": "integer", "minimum": 1024, "maximum": 65535 } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.sandbox.updateSandboxSettings": { "post": { "tags": ["io.pocketenv.sandbox"], "summary": "Update sandbox settings", "operationId": "io.pocketenv.sandbox.updateSandboxSettings", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the sandbox", "minLength": 1 }, "description": { "type": "string", "description": "A description for the sandbox" }, "topics": { "type": "array", "items": { "type": "string", "maxLength": 50 } }, "repo": { "type": "string", "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo.", "format": "uri" }, "vcpus": { "type": "integer", "minimum": 1 }, "memory": { "type": "integer", "minimum": 1 }, "disk": { "type": "integer", "minimum": 3 }, "readme": { "type": "string", "description": "A URI to a README for the sandbox.", "format": "uri" }, "secrets": { "$ref": "#/components/schemas/io.pocketenv.secret.defs.secrets" }, "variables": { "$ref": "#/components/schemas/io.pocketenv.variable.defs.variables" }, "files": { "$ref": "#/components/schemas/io.pocketenv.file.defs.file" }, "volumes": { "$ref": "#/components/schemas/io.pocketenv.volume.defs.volumes" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.profileViewDetailed" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.secret.addSecret": { "post": { "tags": ["io.pocketenv.secret"], "operationId": "io.pocketenv.secret.addSecret", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["secret"], "properties": { "secret": { "$ref": "#/components/schemas/io.pocketenv.secret.defs.secret" }, "redacted": { "type": "string", "description": "The redacted secret value." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.secret.deleteSecret": { "post": { "tags": ["io.pocketenv.secret"], "operationId": "io.pocketenv.secret.deleteSecret", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.secret.getSecret": { "get": { "tags": ["io.pocketenv.secret"], "operationId": "io.pocketenv.secret.getSecret", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The ID of the secret for which to retrieve secrets.", "required": true, "schema": { "type": "string", "description": "The ID of the secret for which to retrieve secrets." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "secret": { "$ref": "#/components/schemas/io.pocketenv.secret.defs.secretView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.secret.getSecrets": { "get": { "tags": ["io.pocketenv.secret"], "operationId": "io.pocketenv.secret.getSecrets", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "sandboxId", "in": "query", "description": "The ID of the sandbox for which to retrieve secrets.", "required": false, "schema": { "type": "string", "description": "The ID of the sandbox for which to retrieve secrets." } }, { "name": "limit", "in": "query", "description": "The maximum number of secrets to return.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "offset", "in": "query", "description": "The number of secrets to skip before starting to collect the result set.", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "secrets": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.secret.defs.secretView" } }, "total": { "type": "integer", "minimum": 0 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.secret.updateSecret": { "post": { "tags": ["io.pocketenv.secret"], "operationId": "io.pocketenv.secret.updateSecret", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "secret"], "properties": { "id": { "type": "string", "description": "The ID of the secret to update." }, "secret": { "$ref": "#/components/schemas/io.pocketenv.secret.defs.secret" }, "redacted": { "type": "string", "description": "The redacted secret value." } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.addService": { "post": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.addService", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["service"], "properties": { "service": { "$ref": "#/components/schemas/io.pocketenv.service.defs.service" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.deleteService": { "post": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.deleteService", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.getServices": { "get": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.getServices", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "sandboxId", "in": "query", "description": "The ID of the sandbox for which to retrieve services.", "required": true, "schema": { "type": "string", "description": "The ID of the sandbox for which to retrieve services." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "services": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.service.defs.serviceView" } } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.restartService": { "post": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.restartService", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.startService": { "post": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.startService", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.stopService": { "post": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.stopService", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.service.updateService": { "post": { "tags": ["io.pocketenv.service"], "operationId": "io.pocketenv.service.updateService", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["service"], "properties": { "service": { "$ref": "#/components/schemas/io.pocketenv.service.defs.service" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.variable.addVariable": { "post": { "tags": ["io.pocketenv.variable"], "operationId": "io.pocketenv.variable.addVariable", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["variable"], "properties": { "variable": { "$ref": "#/components/schemas/io.pocketenv.variable.defs.variable" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.variable.deleteVariable": { "post": { "tags": ["io.pocketenv.variable"], "operationId": "io.pocketenv.variable.deleteVariable", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.variable.getVariable": { "get": { "tags": ["io.pocketenv.variable"], "operationId": "io.pocketenv.variable.getVariable", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The ID of the variable for which to retrieve variables.", "required": true, "schema": { "type": "string", "description": "The ID of the variable for which to retrieve variables." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "variable": { "$ref": "#/components/schemas/io.pocketenv.variable.defs.variableView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.variable.getVariables": { "get": { "tags": ["io.pocketenv.variable"], "operationId": "io.pocketenv.variable.getVariables", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "sandboxId", "in": "query", "description": "The ID of the sandbox for which to retrieve variables.", "required": false, "schema": { "type": "string", "description": "The ID of the sandbox for which to retrieve variables." } }, { "name": "limit", "in": "query", "description": "The maximum number of variables to return.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "offset", "in": "query", "description": "The number of variables to skip before starting to collect the result set.", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "variables": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.variable.defs.variableView" } }, "total": { "type": "integer", "minimum": 0 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.variable.updateVariable": { "post": { "tags": ["io.pocketenv.variable"], "operationId": "io.pocketenv.variable.updateVariable", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "variable"], "properties": { "id": { "type": "string", "description": "The ID of the variable to update." }, "variable": { "$ref": "#/components/schemas/io.pocketenv.variable.defs.variable" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.volume.addVolume": { "post": { "tags": ["io.pocketenv.volume"], "operationId": "io.pocketenv.volume.addVolume", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["volume"], "properties": { "volume": { "$ref": "#/components/schemas/io.pocketenv.volume.defs.volume" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.volume.deleteVolume": { "post": { "tags": ["io.pocketenv.volume"], "operationId": "io.pocketenv.volume.deleteVolume", "security": [ { "Bearer": [] } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.volume.getVolume": { "get": { "tags": ["io.pocketenv.volume"], "operationId": "io.pocketenv.volume.getVolume", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "id", "in": "query", "description": "The ID of the volume for which to retrieve volumes.", "required": true, "schema": { "type": "string", "description": "The ID of the volume for which to retrieve volumes." } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "volume": { "$ref": "#/components/schemas/io.pocketenv.volume.defs.volumeView" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.volume.getVolumes": { "get": { "tags": ["io.pocketenv.volume"], "operationId": "io.pocketenv.volume.getVolumes", "security": [ { "Bearer": [] } ], "parameters": [ { "name": "sandboxId", "in": "query", "description": "The ID of the sandbox for which to retrieve volumes.", "required": false, "schema": { "type": "string", "description": "The ID of the sandbox for which to retrieve volumes." } }, { "name": "limit", "in": "query", "description": "The maximum number of volumes to return.", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "offset", "in": "query", "description": "The number of volumes to skip before starting to collect the result set.", "required": false, "schema": { "type": "integer", "minimum": 0 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "volumes": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.volume.defs.volumeView" } }, "total": { "type": "integer", "minimum": 0 } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } }, "/io.pocketenv.volume.updateVolume": { "post": { "tags": ["io.pocketenv.volume"], "operationId": "io.pocketenv.volume.updateVolume", "security": [ { "Bearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": ["id", "volume"], "properties": { "id": { "type": "string", "description": "The ID of the volume to update." }, "volume": { "$ref": "#/components/schemas/io.pocketenv.volume.defs.volume" } } } } } }, "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "type": "string", "oneOf": [ { "const": "InvalidRequest" }, { "const": "ExpiredToken" }, { "const": "InvalidToken" } ] }, "message": { "type": "string" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "required": ["error", "message"], "properties": { "error": { "const": "AuthMissing" }, "message": { "type": "string" } } } } } } } } } }, "components": { "schemas": { "io.pocketenv.actor.defs.profileViewDetailed": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the actor." }, "did": { "type": "string", "description": "The DID of the actor." }, "handle": { "type": "string", "description": "The handle of the actor." }, "displayName": { "type": "string", "description": "The display name of the actor." }, "avatar": { "type": "string", "description": "The URL of the actor's avatar image.", "format": "uri" }, "createdAt": { "type": "string", "description": "The date and time when the actor was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The date and time when the actor was last updated.", "format": "date-time" } } }, "app.bsky.actor.profile": { "type": "object", "properties": { "displayName": { "type": "string", "maxLength": 640 }, "description": { "type": "string", "description": "Free-form profile description text.", "maxLength": 2560 }, "avatar": { "type": "string", "format": "binary", "maxLength": 1000000 }, "banner": { "type": "string", "format": "binary", "maxLength": 10000000 }, "labels": { "oneOf": [ { "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels" } ] }, "joinedViaStarterPack": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "createdAt": { "type": "string", "format": "date-time" } } }, "io.pocketenv.file.defs.file": { "type": "object", "required": ["path", "content"], "properties": { "sandboxId": { "type": "string", "description": "The ID of the sandbox to which the file belongs. This is used to associate the file with a specific sandbox environment." }, "path": { "type": "string", "description": "The file path within the sandbox, e.g. '/app/config.json', '/home/user/.ssh/id_rsa', etc." }, "content": { "type": "string", "description": "The content of the file. This will be written to the specified path within the sandbox. The content should be base64 encoded if it's binary data." } } }, "io.pocketenv.file.defs.fileView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the file." }, "path": { "type": "string", "description": "The file path within the sandbox, e.g. '/app/config.json', '/home/user/.ssh/id_rsa', etc." }, "createdAt": { "type": "string", "description": "The timestamp when the file was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The timestamp when the file was last updated.", "format": "date-time" } } }, "io.pocketenv.file.defs.files": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.file.defs.file" } }, "io.pocketenv.port.defs.portView": { "type": "object", "description": "A view of a port exposed by a sandbox.", "properties": { "port": { "type": "integer", "minimum": 1025, "maximum": 65535 }, "description": { "type": "string", "description": "A description of the port." }, "previewUrl": { "type": "string", "description": "A URL for previewing the service running on the port" } } }, "io.pocketenv.publicKey": { "type": "object", "required": ["name", "key", "createdAt"], "properties": { "name": { "type": "string", "description": "Name of the public key", "maxLength": 255 }, "key": { "type": "string", "description": "The public key value, e.g. an SSH public key string." }, "createdAt": { "type": "string", "format": "date-time" } } }, "io.pocketenv.sandbox.defs.sandboxViewBasic": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the sandbox", "maxLength": 50 }, "provider": { "type": "string", "description": "The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc.", "maxLength": 50 }, "description": { "type": "string", "maxLength": 3000 }, "website": { "type": "string", "description": "Any URI related to the sandbox", "format": "uri" }, "logo": { "type": "string", "description": "URI to an image logo for the sandbox", "format": "uri" }, "topics": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 50 }, "maxItems": 50 }, "repo": { "type": "string", "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo." }, "readme": { "type": "string", "description": "A URI to a README for the sandbox.", "format": "uri" }, "vcpus": { "type": "integer" }, "memory": { "type": "integer" }, "disk": { "type": "integer" }, "ports": { "type": "array", "items": { "type": "integer", "minimum": 1025, "maximum": 65535 }, "maxItems": 100 }, "installs": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" } } }, "io.pocketenv.sandbox.defs.sandboxViewDetailed": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the sandbox", "maxLength": 50 }, "provider": { "type": "string", "description": "The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc.", "maxLength": 50 }, "description": { "type": "string", "maxLength": 3000 }, "status": { "type": "string", "description": "The current status of the sandbox, e.g. 'RUNNING', 'STOPPED', etc." }, "startedAt": { "type": "string", "format": "date-time" }, "timeout": { "type": "integer" }, "baseSandbox": { "type": "string", "description": "The base sandbox that this sandbox was created from, if any. This can be used to determine the template or configuration used to create the sandbox." }, "website": { "type": "string", "description": "Any URI related to the sandbox", "format": "uri" }, "logo": { "type": "string", "description": "URI to an image logo for the sandbox", "format": "uri" }, "topics": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 50 }, "maxItems": 50 }, "repo": { "type": "string", "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo." }, "readme": { "type": "string", "description": "A URI to a README for the sandbox.", "format": "uri" }, "vcpus": { "type": "integer" }, "memory": { "type": "integer" }, "disk": { "type": "integer" }, "ports": { "type": "array", "items": { "type": "integer", "minimum": 1025, "maximum": 65535 }, "maxItems": 100 }, "installs": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" }, "owner": { "$ref": "#/components/schemas/io.pocketenv.user.defs.userViewBasic" } } }, "io.pocketenv.sandbox.defs.sandboxDetailsPref": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the sandbox", "minLength": 1 }, "description": { "type": "string", "description": "A description for the sandbox" }, "topics": { "type": "array", "items": { "type": "string", "maxLength": 50 } }, "repo": { "type": "string", "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo." }, "vcpus": { "type": "integer", "minimum": 1 }, "memory": { "type": "integer", "minimum": 1 }, "disk": { "type": "integer", "minimum": 3 }, "readme": { "type": "string", "description": "A URI to a README for the sandbox.", "format": "uri" } } }, "io.pocketenv.sandbox.defs.secretPref": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the secret", "minLength": 1 }, "value": { "type": "string", "description": "The value of the secret. This will be encrypted at rest and redacted in any API responses." } } }, "io.pocketenv.sandbox.defs.variablePref": { "type": "object", "description": "A variable to add to the sandbox", "properties": { "name": { "type": "string", "description": "The name of the variable", "minLength": 1 }, "value": { "type": "string", "description": "The value of the variable. This will be visible in API responses and should not contain sensitive information." } } }, "io.pocketenv.sandbox.defs.filePref": { "type": "object", "description": "A file to add to the sandbox", "properties": { "name": { "type": "string", "description": "The name of the file", "minLength": 1 }, "content": { "type": "string", "description": "The content of the file." }, "encrypt": { "type": "boolean", "description": "Whether the file content should be encrypted at rest and redacted in API responses. This is useful for files that may contain sensitive information." }, "path": { "type": "string", "description": "The path within the sandbox where the file will be created, e.g. '/app/config.json'. If not provided, the file will be created in the root directory of the sandbox." } } }, "io.pocketenv.sandbox.defs.volumePref": { "type": "object", "description": "A volume to add to the sandbox", "properties": { "name": { "type": "string", "description": "The name of the volume", "minLength": 1 }, "path": { "type": "string", "description": "The mount path within the sandbox where the volume will be attached, e.g. '/data', '/logs', etc." }, "readOnly": { "type": "boolean", "description": "Whether the volume should be mounted as read-only" } } }, "io.pocketenv.sandbox.defs.sandboxProviderPref": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "The name of the sandbox provider", "minLength": 1 }, "apiKey": { "type": "string", "description": "The encrypted API key used to authenticate with the sandbox provider.", "minLength": 1 }, "redactedApiKey": { "type": "string", "description": "The redacted API key for the sandbox provider, returned in API responses." }, "organizationId": { "type": "string", "description": "The ID of the organization in the sandbox provider, if applicable. This can be used to associate the sandbox with a specific organization or team within the provider's platform." }, "vercelProjectId": { "type": "string", "description": "The project ID for Vercel, if the sandbox provider is Vercel. This is used to determine which Vercel project the sandbox should be created in." }, "vercelTeamId": { "type": "string", "description": "The team ID for Vercel, if the sandbox provider is Vercel and the sandbox should be created within a specific team. This is used to determine which team within the Vercel project the sandbox should be associated with." }, "modalTokenId": { "type": "string", "description": "The token ID for Modal, if the sandbox provider is Modal. This is used to determine which Modal token to use when creating the sandbox." }, "modalTokenSecret": { "type": "string", "description": "The token secret for Modal, if the sandbox provider is Modal. This is used to determine which Modal token secret to use when creating the sandbox." }, "redactedModalTokenId": { "type": "string", "description": "The redacted token ID for Modal, returned in API responses when the sandbox provider is Modal. This can be used to identify which Modal token is being used without exposing the actual token ID." }, "redactedModalTokenSecret": { "type": "string", "description": "The redacted token secret for Modal, returned in API responses when the sandbox provider is Modal. This can be used to identify which Modal token secret is being used without exposing the actual token secret." }, "e2bApiKey": { "type": "string", "description": "The API KEY for E2B, if the sandbox provider is E2B. This is used to determine which E2B API KEY to use when creating the sandbox." }, "redactedE2bApiKey": { "type": "string", "description": "The redacted API KEY for E2B, returned in API responses when the sandbox provider is E2B. This can be used to identify which E2B API KEY is being used without exposing the actual API KEY." }, "hopxApiKey": { "type": "string", "description": "The API KEY for hopx, if the sandbox provider is hopx. This is used to determine which hopx API KEY to use when creating the sandbox." }, "redactedHopxApiKey": { "type": "string", "description": "The redacted API KEY for hopx, returned in API responses when the sandbox provider is hopx. This can be used to identify which hopx API KEY is being used without exposing the actual API KEY." }, "runloopApiKey": { "type": "string", "description": "The API KEY for Runloop, if the sandbox provider is Runloop. This is used to determine which Runloop API KEY to use when creating the sandbox." }, "redactedRunloopApiKey": { "type": "string", "description": "The redacted API KEY for Runloop, returned in API responses when the sandbox provider is Runloop. This can be used to identify which Runloop API KEY is being used without exposing the actual API KEY." } } }, "io.pocketenv.sandbox.defs.preferences": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxDetailsPref" }, { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.secretPref" }, { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.variablePref" }, { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.filePref" }, { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.volumePref" }, { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.sandboxProviderPref" } ] } }, "io.pocketenv.sandbox.defs.sshKeysView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the SSH key." }, "publicKey": { "type": "string", "description": "The public SSH key." }, "privateKey": { "type": "string", "description": "The private SSH key (redacted in API responses)" }, "createdAt": { "type": "string", "description": "The timestamp when the SSH key was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The timestamp when the SSH key was last updated.", "format": "date-time" } } }, "io.pocketenv.sandbox.defs.tailscaleAuthKeyView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the Tailscale Auth Key." }, "authKey": { "type": "string", "description": "The Tailscale auth key (redacted in API responses)" }, "redacted": { "type": "string", "description": "The redacted Auth Key." }, "createdAt": { "type": "string", "description": "The timestamp when the Tailscale Auth Key was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The timestamp when the Tailscale Auth Key was last updated.", "format": "date-time" } } }, "io.pocketenv.sandbox.defs.integrationView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the integration." }, "name": { "type": "string", "description": "The name of the integration, e.g. 'GitHub', 'Slack', 'Trello', etc." }, "webhookUrl": { "type": "string", "description": "The webhook URL of the integration.", "format": "uri" }, "createdAt": { "type": "string", "description": "The timestamp when the integration was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The timestamp when the integration was last updated.", "format": "date-time" } } }, "io.pocketenv.sandbox.defs.integrationsView": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.sandbox.defs.integrationView" } }, "io.pocketenv.sandbox.defs.backupViewBasic": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the backup." }, "directory": { "type": "string", "description": "The directory that was backed up." }, "description": { "type": "string", "description": "An optional description for the backup." }, "expiresAt": { "type": "integer" }, "createdAt": { "type": "string", "description": "datetime when the backup was created.", "format": "date-time" } } }, "io.pocketenv.sandbox": { "type": "object", "required": ["name", "createdAt"], "properties": { "name": { "type": "string", "description": "Name of the sandbox", "maxLength": 255 }, "base": { "$ref": "#/components/schemas/com.atproto.repo.strongRef" }, "provider": { "type": "string", "description": "The provider of the sandbox, e.g. 'daytona', 'vercel', 'cloudflare', etc.", "maxLength": 50 }, "description": { "type": "string", "maxLength": 3000 }, "website": { "type": "string", "description": "Any URI related to the sandbox", "format": "uri" }, "logo": { "type": "string", "description": "URI to an image logo for the sandbox", "format": "uri" }, "topics": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 50 }, "maxItems": 50 }, "repo": { "type": "string", "description": "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo." }, "readme": { "type": "string", "description": "A URI to a README for the sandbox.", "format": "uri" }, "vcpus": { "type": "integer" }, "memory": { "type": "integer" }, "disk": { "type": "integer" }, "volumes": { "type": "array", "items": { "type": "string", "description": "A path to be mounted as a volume in the sandbox, e.g. '/data', '/logs', etc." } }, "ports": { "type": "array", "items": { "type": "integer" } }, "secrets": { "type": "array", "items": { "type": "string", "description": "Name of a secret to be added to the sandbox environment. Secrets are typically encrypted and stored securely, and can be used to store sensitive information such as API keys, database credentials, etc." } }, "envs": { "type": "array", "items": { "type": "string", "description": "Name of an environment variable to be added to the sandbox environment." } }, "createdAt": { "type": "string", "format": "date-time" } } }, "io.pocketenv.secret.defs.secretView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the secret." }, "name": { "type": "string", "description": "Name of the secret, e.g. 'DATABASE_URL', 'SSH_KEY', etc." } } }, "io.pocketenv.secret.defs.secret": { "type": "object", "required": ["name", "value"], "properties": { "sandboxId": { "type": "string", "description": "The ID of the sandbox to which the secret belongs. This is used to associate the secret with a specific sandbox environment." }, "name": { "type": "string", "description": "Name of the secret, e.g. 'DATABASE_URL', 'SSH_KEY', etc." }, "value": { "type": "string", "description": "Value of the secret. This will be encrypted at rest and redacted in any API responses." } } }, "io.pocketenv.secret.defs.secrets": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.secret.defs.secret" } }, "io.pocketenv.service.defs.serviceView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the service." }, "name": { "type": "string", "description": "Name of the service." }, "command": { "type": "string", "description": "Command to run the service." }, "description": { "type": "string", "description": "Description of the service." }, "ports": { "type": "array", "items": { "type": "integer" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "io.pocketenv.service.defs.service": { "type": "object", "required": ["name", "command"], "properties": { "name": { "type": "string", "description": "Name of the service." }, "command": { "type": "string", "description": "Command to run the service." }, "description": { "type": "string", "description": "Description of the service." }, "ports": { "type": "array", "items": { "type": "integer" } } } }, "com.atproto.repo.strongRef": { "type": "object", "required": ["uri", "cid"], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" } } }, "io.pocketenv.variable.defs.variableView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the environment variable." }, "name": { "type": "string", "description": "Name of the environment variable, e.g. 'NODE_ENV', 'PORT', etc." }, "value": { "type": "string", "description": "Value of the environment variable. This will be visible in API responses and should not contain sensitive information." } } }, "io.pocketenv.variable.defs.variable": { "type": "object", "required": ["name", "value"], "properties": { "sandboxId": { "type": "string", "description": "The ID of the sandbox to which the environment variable belongs. This is used to associate the variable with a specific sandbox environment." }, "name": { "type": "string", "description": "Name of the environment variable, e.g. 'NODE_ENV', 'PORT', etc." }, "value": { "type": "string", "description": "Value of the environment variable. This will be visible in API responses and should not contain sensitive information." } } }, "io.pocketenv.variable.defs.variables": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.variable.defs.envVar" } }, "io.pocketenv.volume.defs.volumeView": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the volume." }, "name": { "type": "string", "description": "Name of the volume, e.g. 'data-volume', 'logs', etc." }, "path": { "type": "string", "description": "The path within the sandbox where the volume will be mounted, e.g. '/data', '/logs', etc." }, "readOnly": { "type": "boolean", "description": "Whether the volume should be mounted as read-only within the sandbox. Defaults to false (read-write)." }, "createdAt": { "type": "string", "description": "The timestamp when the volume was created.", "format": "date-time" }, "updatedAt": { "type": "string", "description": "The timestamp when the volume was last updated.", "format": "date-time" } } }, "io.pocketenv.volume.defs.volumes": { "type": "array", "items": { "$ref": "#/components/schemas/io.pocketenv.volume.defs.volume" } }, "io.pocketenv.volume.defs.volume": { "type": "object", "required": ["name"], "properties": { "sandboxId": { "type": "string", "description": "The ID of the sandbox to which the volume belongs. This is used to associate the volume with a specific sandbox environment." }, "name": { "type": "string", "description": "Name of the volume, e.g. 'data-volume', 'logs', etc." }, "path": { "type": "string", "description": "The path within the sandbox where the volume will be mounted, e.g. '/data', '/logs', etc." }, "readOnly": { "type": "boolean", "description": "Whether the volume should be mounted as read-only within the sandbox. Defaults to false (read-write)." } } } }, "securitySchemes": { "Bearer": { "type": "http", "scheme": "bearer" } } }, "tags": [ { "name": "io.pocketenv.actor" }, { "name": "app.bsky.actor" }, { "name": "io.pocketenv.file" }, { "name": "io.pocketenv.port" }, { "name": "io.pocketenv.publicKey" }, { "name": "io.pocketenv.sandbox" }, { "name": "io.pocketenv.secret" }, { "name": "io.pocketenv.service" }, { "name": "com.atproto.repo" }, { "name": "io.pocketenv.variable" }, { "name": "io.pocketenv.volume" } ]}