openapi.yaml 82 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339
  1. openapi: 3.0.1
  2. info:
  3. title: Owncast
  4. description: Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software. <br/><br/>Take note that only APIs listed specifically for external use, 3rd parties or for integration purposes are encouraged for external use. Internal APIs may change at any time and are used by the server and frontend itself.
  5. version: '0.1.0'
  6. contact:
  7. name: Gabe Kangas
  8. email: gabek@real-ity.com
  9. url: http://owncast.online
  10. x-logo:
  11. url: >-
  12. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEvmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjEyOCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjEyOCIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICB0aWZmOkltYWdlV2lkdGg9IjEyOCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTI4IgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI5Ni4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI5Ni4wIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA2LTE4VDAwOjQ2OjEyLTA3OjAwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA2LTE4VDAwOjQ2OjEyLTA3OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5IERlc2lnbmVyIChNYXIgMzEgMjAyMCkiCiAgICAgIHN0RXZ0OndoZW49IjIwMjAtMDYtMThUMDA6NDY6MTItMDc6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/Pn6jclUAAAGCaUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRzytEURTHPzODESPCwsLipWE15EdNbJSZNNSkaYwy2Mw880PNj9d7I8lW2SpKbPxa8BewVdZKESlZWVgTG/ScZ6Zmkjm3c8/nfu89p3vPBXsko2aNmn7I5gp6OOBTZqNzivOZOlpx0oESUw1tLBQKUtU+7rBZ8abXqlX93L/WuJgwVLDVC4+qml4QnhAOrhQ0i7eF29V0bFH4VNijywWFby09XuQXi1NF/rJYj4T9YG8RVlIVHK9gNa1nheXluLOZZbV0H+slrkRuZlpil3gnBmEC+FCYZBw/XgYYkdlLL4P0yYoq+f2/+VPkJVeVWWMVnSVSpCngEXVZqickJkVPyMiwavX/b1+N5NBgsbrLB7VPpvnWDc4t+N40zc9D0/w+AscjXOTK+fkDGH4XfbOsufeheR3OLstafAfON6DjQYvpsV/JIW5PJuH1BJqi0HYNDfPFnpX2Ob6HyJp81RXs7kGPnG9e+AEyv2fOZnRq6wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAHBpJREFUeJztfXl8VEW69vO852QhYYcAIRsGRETZ3BURRXGcn5/bOKPOOPPduRevv9EZh3tdRp1x+bjM6FXGXcdt3HGDO7ij1w0XRnHBBTAoypJASEjYlyzdp+r9/ugEmqQ7fbrTnaQDz+9XhD6n6q23u556q+qtDdiP/diPfRfsbAU6Gx/fpz36ZeJiUM8EMAzEAADZADIBGADbAdRCdbW1mFdXL88eMZ07O1PnZGKfJcA395sCOJgmgisB9vKbThXbVfF3Nfr4oZc4S1OpY0dgnyPAkpuV2sc7WRx5kURuO0RZazDLqN444VK3MWkKdjD2KQJ8ebe6jmsegMNfAshKgkhVq8uMxRmH/dYtT4K8Dsc+Q4DF93m9BXyIDs5PunBFuXp69oTL3K+SLjvF2CcI8Pm9XhbJJ0mcl8JsKuxOjD/iD86WFOaRdLidrUBHQIFZUJynmtJsitEDLwKYnNJckoxubwE+uSt4CYX3ApAOyM5aq78/ZnrGfR2QV1LQrQnw/h1eYabgGxK9OzDbOmtQeNx/umnRFHTbJuDD24MZQl1glb2RWtPfEjmATgPw1w7NNUF0hFnsFFiLi6xyuFWgwwN4w/uzgh1pdRJGt7QA784yBaC5z2qnNXG9VDgBwPudlL9vdEsCKM1lBmQHm/69dVA7FfsJ0PF4878bR1rldHZi4QOAgqcDuK5ztYiNbtcHUPLfVTXbqqKTw9hXbmzo2dm/Ryx0Kwsw50Z1rQYv7mw9miDM5kgAX3S2Im2hWxGgR3bwcgPt6GFfVKjaodhPgI6DVf1FZ+sQDlUO6GwdYqHbEGDOH+0gq8ExXaX2A4CiQz2QCaHbEAAZjXdZZRfr1GqXd7V3CwI886eGbHVxqulsRVpCaTtbhVjoFgQIKAZkqfbpSuYfAAit62wdYqFbEMDJ0EuMwulsPVpB0eVXD6c9Ae6+fHumAX6TqOfPGsAYQA1grUIt0HLhCAlQQkGEEAdwHPiYTNcNiWnVcUh7AuTkOMUWOqAt868aKmhrgWCjorEOCDQogoFQwScEAhlZQFY2kdkDyOxBiADihAgDANagKkHpHYa0J4ASw02kwlegfqdi145QQTcToBXaMW4wAaAhoMB2gNCQhXCAzCwgpxdMrpO1JnHpHYO0J4BRPaX5/8FGoKFO0VAfquGt1gCmelCmADwg4AE7d7Lsz89mBFKcY7uR9gQIGJwaaFDs2KoIdvT2jDYJZRd1lBrtQVoT4PLzt/WrWqdjdtd0n+ZcFQECj0J1IYB6BU6h8NcAeiRLN1V8lCxZqURaE0AcHGKgjMO0e7CYoca5f9ZzuZvCns+74hfbb3Cov4TwLwBy2qubiv2uvTI6AmlNABWMtv4Lvw5WfvPXp3s+Fenlbc/03gjgzssv3L5IHLyDdpBAQ/+sSjR9R6KL+c7jgzp6iKXCT/BUb/zr7MiFH47bn+69yBhztqWqX9kRwne3ze7b5X0AQJpbAAMe6Mv8q75sa/vc7luu4D1C14EsSkgxq7MSStcJSGsLYEVHKENzbtGCJRqt8vp73vA/MXP3U/2Clrg3luwoIaiC11L5vZOJtCXA+ecZscQBhoq2goU+cM+TfZbEK7+xUR6OJTtK2GVpN6fiO6cCaUuAXjnbhlvCtaFaHj2oPpKI/Iee7b3FEttjym8ZgAfufax/l3cANSNt+wB0dKSNMQOkiiWeeN8kmoel7kJ8q3oaxGTdkmh+nYG0JQDIEbGGgAr5/aOP5CW8KCOOIWYzvnnw8ZytiebXGUhbAnjUIrZRQATqAPN1e/Iw0Ky45g+Us9uTX2cgYQLMuP760szMzCtF5DQSRQTqAXwL1QVq7Wu7Nm7654y77krZKi0Fh7ZVOBZYr3C3Jyr/Zz+rcFXg+/QwADX0vIcSza+zkBAB/uuGG452MtyPFBCrFlSAQC+SRxI4UkT+0HPgwA9uufHGaXXAyhkzZiR9sZY66N+WUGv10ace6p2w+c/s13OsJTL8xrdq5zz1aF6XXwLWEnGPAq675pphCsw3nhFjPBjPgzEmFDwPxoQ+q9oT6MrXOYInZv7pT0lvagw1q42hmEqCvf9mkHpWPMM/haZd7QcSGQaKzDTW9je2qdCN3UOA8M/WwBqTA8WvMjOcT278w+Xjkqm4JbLbGI7VPPHwwJpEZZ9/8QZaB+f6H/rp/8x+MC8tD42MiwBXTp9eZK29wDYVtm1Z+DYCGaxBY2PjYW+9+uqno4fknZYsxS01sw1f/Pr2yFbX6WGphf59//TtZu5qiM8CuO7vjTFuyPQbeGaPyW/ZBBjPwBgPwUAAr7/4IrZt3ZopIi+MyR/0n8lQ3AJOtBppoJXtkq1abInefmq/Ib60MJ8m4zt1BuJqm9XaiQYKi9AUPImmv02fm/4vCH1Qa/HJwg+xdesWCAES2SRvHjt0cG6Q5qbllRsTH6OLRiWvEu0yx9bFzT539XgW+PW8vw3qcntS/CIuC2CMKQiZfgNrm9t7G/psDKzd0/4bz2BFWRkqVq9uKSZLhDOyIf8+bmhewmv5TdttcsIEOOeyjUNAnO2r9gPLgsYm7GnsCojLAhhrB9GGvjzB3RZAEfoPAQhDn6vXV+KrxYujDdWFIve7BvUAnkxEcQVstDpqIAmvxjGik33WikBjUH70+v15aVv7gTgIMG3atJ7GmOw9pj+MAGFNgJIINDTgy88/g6qiDW8d4fDhIwoH13++bsPceBU3olGbDxOUNfHKA4DJ01dnKO0M48f9p/ri6/fnJTzS6Crw3QRYa3vtHvM3dfBCf1t2/jx89ski1O3aFVMmgUyKPHRkweC4h4hKBKLM/wfn/21AQtOxucw5Q8mDfKwx2OxRktKZ7Wz4tgCe57kOuafD12QFQiYfAAEBUbm2AjXV1RCfPnQCfek6LwMoiUdxQwSjvNoWj5xwWOF0Xy5LxazX78xr11Czq8A3Aay1QWNtq8K3CBU8CTQGGrH064ROTC8+piT/HevZH31aucHzpQ+j7rytT0SBqVds+IlCj49JAMXXVu09ieTRFeG7CQgGgzt3m/qmJsDzQr1/Yzx4wSC++uILeF6o/Kzq6xb2/1iDCap6iaq+D0XUwiV4kuM4F/nVxxCbI4/LNZplaBMKvcESEqPnr0Hg0rfuzI/dvqUJfBNgzpw5Oz1j6vf29O0JmzZtRG1NqE9kVZesrNl0+g8bNr22orb2q2+rax8oq6o90RhzLlSj1VCK8P6JJflj/OhjoWsjeeWU8W8TP/HKDRepYFwsj5+Bvf3d2wenxYYPv4jXD1DVsuA9YxAMevhm6bLd8aj4I9B6v27Zho0vq9XRsPpxtDwIzj5+yJDsmLoQK6J45mKmDcfkq6p6QnRW7DG/VnvGuzEe2emA+AjgeT/scfuGTL81HirXrUVd3R6raKFRnSNLq2vXKOxJanUuIpCEwrHMdq6MpYvSLI9cWOp7CdfxV1ZnqvBxJfq2TQDd4VFP/eCOom5j+psRFwE8z3ve2z3xE5oMCgYNKsrL945ndFMUEQCAr9fXNn5ZueE8QF+O1Okied3xxYPaXJMfCJqvDNVGaAJ6HHVlua/j2dTV05V6bgzTrwZ618Jbh6blbF8sxGcBNPCM8czG8MmgtRXlaGjYu1kX8Xz5+NUGfwHV+S2fk8hynYy/t5V20R3FuyxRYUJmf68grjsqVt7HXVs9ToknIqVvEV60NjjDz/dJR8RFgFdeeaPBGPN8+BqADdXVreIRbn8/8hZXbqpTi4ugWtZaCKecOKzg+LbSW+pSpaJVEBzdVrojr1k3wNI+qtReEdPvCd9bay/7aFaJr6FpOiLuBSEWuMcYEzDGYNPGja1qPwA4Igf5lfd5ZXWVVVwAoOVaepfCZycXF0RdlmVgv4pUaxU6JVqasddWZUI4xxKHxaj5DR5w/qJbCto1tdzVETcB5s+f/50x3i3GeChfsyZiHAUuj0fmrgZvmar9OVp0CkkOFdojoqUzlE8jttvCiEPJCddXu5mOma+Ck2K0+8ajPb2xkWl3D2C8SGhnkDXm3vr6hppgMLLPheRppXn9f+RXXlltrRJ4RVtfsCDiOk+cUloY8ZZPemaRJTwrQItQNO66ymnhccdct7YY8F615MlWwAhpQoEIWuAKbTQLltyW38VOHkw+fHrsW6Mgb+ARxpiPhXClaX5AGHIPCwhCyxT2uJU1W3z75o8v7tMTTs8Kh+wXLk+tTnxn1bqIDpjxN1TOB/DjCK8aLexPAZQTPAHAzYx9SbSB4o6vZhZc5VfndEfCewMDgeBiVXtrtPckRwuc/4lH5sKKbTth7QMtnwtwabQ0Ru1DUcx4FsiXQX6hoZ2+vWKeIQDcErTe1fHonO5I2AI0I79/32cdkQtaWgAJTRgpYF8EcMGKDZt8bZg8tiS/Z4bIUiGHNcsjEFTPlry9prLVuXsHX792sDhYHzrGsR1Q/ZNCby2bUdxte/yR0O7dwVWbt/5SVV+N8ppCOUfI90YN6e9ruvfj8qqdqnhsLyFghrgSsU+xfGbRBqO4ox2neTQY6mXfzCi6aV8rfCA528NN0LPnQDXqoQikHCt0lx88ZGDU4dle8Y3OaS2DJ0WLbwUzLbEz7q3cxE7jmaO+vbHoXn9ftfshKecD1Gzb5sHi59bqfYjg3wcAEj0cceaPHTro6dFD8wrbkkdZ/x20xdJu1ajDwRU3Fm0zVn9rqcaKwk8w0LcscPiKmcO6pYvXL9rdBwhHSZ8+ggznekfkKofIbV40wua+QfNoAWgEcStUnwsE9Nuy2tq9XMcjRoAFpuA7R+TA3aMKImDMjty3V22JaqZLZ5bPIvkfaHuhS7kC9+4Ibr+zdsah+5zJb4mkEqAZJQP6jMlwMhYIOSAiAfYeLi4B7UyHzosE1AktI73IdeT+veIR8BqR/05FRWvfcxiGzSz/FQWPAHTDvp8FsNNac0PAy7ynakZBl7/IoaOQEgIAQOmg/vkO5GpHOL0tAuwmCFBPcqsAmUL2F4KtCBAMDnlnTVXM49eKbyofBIuRJAcpdCeAalpZVX59UZc/v7+jkTICNGPk4AFTHcp1IpwopNMGAfY8j2QpiJ1rv6/oWwak9Tr8roaUnxCyYsOmtwC8dfCQgWeIyL0gC4D4l22p6oKuXvhHH3W8S6Hr0HFE6IAUUsR4nus4zKLQccTxHMmoB6lCGhFaKDwReq/978sJrWdsD1JuAcJxSF7/XCfDPYrk1Y7wVAHpxwIQqKfi2DdXrm3XkS/JxoQJxw12XZ0kkKNBjnFEBlPYk5QeBHIokiVkBikZoWaQQOivJcUj2UiygeROEdkBYLOAnynxgQYC77369qspb7I6lADhGJ8/aJQIz3ZEThBynBBDIxDAI7CQ1l759urKxZ2lKwCMHTs+B3CPEPJIER4rIkeRLCIJEQEQKmAKQUp4YYMUtCBA6JkQ0uTAFAnFCcUTgAwIuBjCBSQXBAONH708f17STyDpNAK0xPghgwf3yJIjHCAfBBxwvbG7PlxYsW1HZ+l08MFje4lghFAuofDfRBwnVDiAMKzAUkOApngERUBgE4DrhM7c5+c91eaSu3jQZQjQlVBaOmJAVlaPW0XkVJJDhHQpElY4HU8AIUN5CGuVfEGN9/s5855p9xUZ+wkQhgMPPHiSiFwqIj8l6Yo0/ejNtbBrEKBZ3kpVXP3s3Mf/0Z7vvJ8AAIYPP6hABLeIOBcyvMC6NgEgJBR6k1r9r2fmPpGQNUjbs4KThQNKR5wnwmWkXNjZuiQCUq5xXOe5hNMnU5l0wrBhw3pQ3Fki8tvw2pxuFqApnoJ8UI3+7qnnH4nLV5K2R8W2ByUlJQ7o3E3S92bUJmxT1c0kdwLYpaF9jlus1QYhqERPgn0B9FDV3iQHAOiP1Fc0ErxYROYBeCuuhClSqEujuPiA/3Ac53YK2Vzj2rAAtQQeouhskYxKVQQFMBaO+frrT1pNKh04/AQOHmgFjuuKiGsMhrkZcpUjzoVCuimyAM3PGoJA/tNPP+T7wOp9kgDDDhheQbAoZK5bEwBgNcDbSLxLmmVlZWXtPv9/8uST81y4P6YjfxJyZIoIAFX91yeeefhxv3p1OAGOL+4juRm5fRXSG2CGUusCwcaa98trO8QPXlhYMsnNcD8gmtvrvQjQAPABx9GrysrKUrJWYMqU0/o4lEeF8pNUEIDkJ4/NfvAYv/p0GAGOKSzM7JWJ34GcTmlxGZOiTlWf21RXP/2Lqo0p3YFbXDzsJnGcayMRQBXXf//98j+nMn8AyMs7h+PHBN5wXDk12QQQEXjBYO6Tzz3iy22c8mHgpNL8/JOHF72Umy0bVeQ2JYutgnsFIFfJaf1yc2pOKi2cnkp9NNSBiwhr9fFU5t2M2toXlGJ/BiAll0uI6/bzHTcVCjTjhNLC0xy6Kyx5pgV6GYTmc6MFC+SAcucJpYVnpEonqnkF0dctHpKqfFvizbdf366qn6RCNkHfV+CmjAATSwqPBmW+BXsaBcKCGsUOz9gHg9abbLVxUDBgS4JqrzIKYwAoeUOq9KqoqFgKxQ+R3onI7SNHHpyZqrxbg3EN2fzD1zG3AFJIAHV4s1GwReHXG7XTrLFFH65e95uFq9Z/8P7KDbULK9ZVWM/eZtR+bkJHgE44sniwbzMWL6zaiKd7kxhNyj9HjBgRz0VRCYOavMuqw6GIeoReK6SEAEcXDB5qgckWivBgrPnNP1ete2zhmnWt9gt+VL5ejaK+Ka5DyJBU6AYAFeWrH1ToK5HekTjCzcheMWrUIWcedNBBCZ9l7AcKTEqNXOt7IUlKPIHWdcZTW5BL1XqN9ploaQ4rLMi04Jjm1jmg6uu+n5OGD5UMOjlUiLXB+rdWV/thv6r1/gXM/BpEq6NoCA6myEuk849DDhlzmaqpLisrS+pO4VOm/DibgsOSKRMAVDVQ18gtfuOnxAJYsK6F6YcBoW4gavtqiJFG0TcUX6sDa6tjnsQ5tbRweCbdN0gpg8hycTK/mDqi+HfwMbwtLy/fYq2eAEXUH4vkuaRT5jqZz4wePdrXqSd+QcrZAHydZRQf9M25cx/yPR+QEgI02MBio1pnEVqQ3xTESvb5keKPKy7oR+E8CzgWgFG8Wxalp96MU4YXn0xHPgI5FUARgKEgDxXynqkjij+ZOrzoyFh6rlnzwxprvUNUta2rZfsCvCDD7VE5btzhj40be8TUUaMOb1dH8ZQppx0t5ONIgR9GVZ+NJ37KHEFjigtfIHl2+DMFak3QO6ZsfdWq5meji/L7OHQeIXnu7niqZyytWBdtwylOHl7QW8RdAWBwGyoEDLypYuzCt1dVxdoIwgNHjnpTKFMYWskbazZwPYDbSHlJgE0Wsn3x4o9ibjaZMnlqH4pzloj8XSgZKfAEehYsefLpB32fY5wyAowuHjqZlPcivNqsaq8NqPdmJt0TAP4/kgc0v1TVD9TTk5evXx/RFXt8cTGzMvE+ST8dqACs/fnbK9fOixWxdOTILEedSx1Hbo9jOjhAcgvADUK+Q2KhUpYaU1/+2WefBUaPHi0Dew4cqllZx2Q4PI+USSQHSTPJkkwAqM564tm//8HH77IbKXUFH1RUcDfJy/zGV8Cq2sNXrF0f9Wyek4YVFjHD+QGAXzPcoKo/XfBDha8r3UeOPPhYx3FvI3lse9YDEDAUkdCEY8rXAwBkgzW2ePbzj9b6/F1C+cYTOV4EPXudtfqtVcBHMNbaS9sqfACAw2uhyIQCYaHOGnMmgma4qs6DQsPeZQN4YtKwolI/Oq9YsfzjYNBMUtU/qyKuHzMcJB103FyLVcXMeAsfSDEBVlVVbQ9anRi0ujGGG1iN2msUaPPyxRNKhuQq5eIWnUtYY65+b9W6V95ds26VWj3fWntH+HsFBziuvORX7x9+KDPLly+93lp7IBK80qYjodCFDd62mxNJm1JHBwBs3bGjvmdu7pMgBqniUAVlr8qrusJanba6cv1jm7e3vQWgeEC/g0m2PC+ounbV2p/XNo0a1mzZbov69fqIkB+BGBoWb1BJ395Dh/TNnl+5dZevMf3GjTWNNTXVL+UNyn+ZpENwDEkHTbuZWqwhaP2MPp8hgryI8SI++1SVZz43Z3ZCm0Y6dD1AQX7+UUL+K8hSBTZD9TXP2rnV1dW+VrROHF50jkPZq0Oniv/9cGV5qwspJxUXDGGmuwrYy90atNYcvnDVuoQOhRgz5vBhjsOZInKyUPI7e00gycXGBs98bu7shG8v6dA1gZVVVZ8CSPiSRSEPa1l1VfX9SHE/rKisnlha9DcRuSLscQYobx+en1+0uKoq7lU+S5cuXgPgV2PHTMh03Yx/EZE7SebEKycpUPtqQ9D52T9emN3QHjFptSzcWoxq1XkkonYa6fFaq1gbHl/BQZk93Avao8eSpV8Gvvjy04cDwfp+UExS1f8GUNEemX6hinJr7E+M1XP+8cJj7Sp8IM3WBB5XWryI5F4HQRuYCYtWrotKguNKi/9C8o/hzxSo9Iwd/ematb7mG/xg7NixTm5278kUOUtEDid5IEXykjQMDArwlSqfrwvqfa+99ky7C74ZabUs3AK9WzLWeLbNH6MRO/6Sob0uJxl+k0iBkL8GcHeydFuyZIkB8G5TAABMOu6kA63wQhGcTjpjEOp0s0VoCUXTAEZVN1H1vu317l1vvjk7JZtk08oCHF1a/D3JEeHPVM1hn6xa92WMdLNJ7r3zR1G2aFV5h60AmjJxSg91M/o5In0p7EUwh8IsQnoISQo9gg10WC+QLQBqGs3O2jfeeCOl5xWnlQVQoNWCUVUUAWiTAKp4GcTeBCBGH3lA0VmfrV7r2z/QHrz7z3frEbrSrkvdN5henUBgSysnEGR8zHTWe88C2jItyG5x+2d7kFYEUMVKVSA8gJwYK93n5etr1OqylmkVHI80awaTjfQiALBs7ykAQIFD/aS10M8ipO1z2LDCX6dI3bRAdyDA0HHDin4ROy3XR0gLpVwxqmDQPmsF0ooAVrGmdR8AoMhd4w8o6tlmWiA7UlolizPdrNzUat51kV4EgFehQE2EmjzQgnMPKS7sGyUpAZwY0QIAORb+L5vsbkj5bGAyUbN1hxnUp48FGOHuAI6gyKl5fXovzuvdZ0vt9u0eAJSUlLCwX++zSIl2kZWo8r2abdtWpFD1Lou0a/tGFxcNcBxZC0TdVBGAosaqLiBZDegxJI8Eot8prNb+dVn52n3mnqBwpJUjCADE2C2GfJfC06NEyQRRCPJXIRca215eDADk2GTqmE5Iqz4AACyrrLRBY/+vAr5vI4sFBfKSJSvdkHYEAIDv163bbI3eE6lXn1BQ/3vpuhvSkgAAUAfMsKovtvLuJRBAfNvZ36ezkLYEqKio8Dwb/DdrdVGU4Z3v4FlE3Ci6LyBtCQAAKyuqtjQAJ1qri9tBgEYC73WC+l0CaU0AAKioqGisa2g41lh7mQV2xtv+G7XzPGs3d472nY+0cgRFw45du+yWbds/7ZPbcy6FOUrmA4h1TzCgusCDnLtm7doufRNJKpF2jiA/GNG/v2tzcs5Tx7maZClC/o5msltVbYDqTasrKqLefbyvoFsSIBwlBQWOuK6rqkIAULVBY4Lr1q/ff3XcfuzH/wfoPFiLyqlaYQAAAABJRU5ErkJggg==
  13. servers: []
  14. tags:
  15. - name: Admin
  16. description: Admin operations requiring authentication.
  17. - name: Chat
  18. description: Endpoints related to the chat interface.
  19. - name: Integrations
  20. description: APIs built to allow 3rd parties to interact with an Owncast server.
  21. - name: Moderation
  22. description: Chat-related actions that can take place by a moderator.
  23. components:
  24. schemas:
  25. ClientArray:
  26. type: array
  27. items:
  28. $ref: '#/components/schemas/Client'
  29. UserArray:
  30. type: array
  31. items:
  32. $ref: '#/components/schemas/User'
  33. LogEntryArray:
  34. type: array
  35. items:
  36. $ref: '#/components/schemas/LogEntry'
  37. FollowerArray:
  38. type: array
  39. items:
  40. $ref: '#/components/schemas/Follower'
  41. StreamKeyArray:
  42. type: array
  43. items:
  44. $ref: '#/components/schemas/StreamKey'
  45. ChatMessageArray:
  46. type: array
  47. items:
  48. $ref: '#/components/schemas/ChatMessage'
  49. Client:
  50. type: object
  51. description: A single representation of a client.
  52. example:
  53. connectedAt: '2020-10-06T23:20:44.588649-07:00'
  54. messageCount: 0
  55. userAgent: >-
  56. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36
  57. (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
  58. ipAddress: '::1'
  59. clientID: 2ba20dd34f911c198df3218ddc64c740
  60. geo:
  61. countryCode: US
  62. regionName: California
  63. timeZone: America/Los_Angeles
  64. properties:
  65. connectedAt:
  66. type: string
  67. format: date-time
  68. messageCount:
  69. description: Number of chat messages sent by user
  70. type: integer
  71. userAgent:
  72. description: The web client used to connect to this server
  73. type: string
  74. example: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
  75. ipAddress:
  76. description: The public IP address of this client
  77. type: string
  78. clientID:
  79. description: The value used to identify this client
  80. type: string
  81. geo:
  82. type: object
  83. description: Optional geographic data for the client
  84. properties:
  85. countryCode:
  86. type: string
  87. regionName:
  88. type: string
  89. timeZone:
  90. type: string
  91. user:
  92. $ref: '#/components/schemas/User'
  93. x-last-modified: 1602052347511
  94. BasicResponse:
  95. type: object
  96. properties:
  97. success:
  98. type: boolean
  99. message:
  100. type: string
  101. InstanceDetails:
  102. type: object
  103. description: User-facing details about this server.
  104. properties:
  105. name:
  106. type: string
  107. description: Displayed as the header in the instance details.
  108. summary:
  109. type: string
  110. description: This is brief summary of whom you are or what the stream is.
  111. logo:
  112. type: string
  113. description: Local file name of your logo image. We recommend a square image (150 x 150px) with ample padding around the important contents of the image, as it will be rendered as a circle.
  114. tags:
  115. type: array
  116. description: Categories of the content this instance focuses on.
  117. items:
  118. type: string
  119. socialHandles:
  120. type: array
  121. description: Links to social network urls.
  122. items:
  123. type: object
  124. properties:
  125. platform:
  126. type: string
  127. example: github
  128. url:
  129. type: string
  130. example: http://github.com/owncast/owncast
  131. extraPageContent:
  132. type: string
  133. description: Additional HTML content to render in the body of the web interface.
  134. example: '<p>This page is <strong>super</strong> cool!'
  135. version:
  136. type: string
  137. example: Owncast v0.0.3-macOS (ef3796a033b32a312ebf5b334851cbf9959e7ecb)
  138. YP:
  139. type: object
  140. description: Configuration of the instance's registration to the Owncast Directory (YP API)
  141. properties:
  142. enabled:
  143. type: boolean
  144. description: If YP support is on or off. Must be enabled to show in the directory.
  145. default: false
  146. instanceUrl:
  147. type: string
  148. description: The public URL of this owncast server, used for registration and linking with the directory. Must be publicly available.
  149. S3:
  150. type: object
  151. description: Configuration of external storage using S3-compatible providers.
  152. properties:
  153. enabled:
  154. type: boolean
  155. endpoint:
  156. type: string
  157. servingEndpoint:
  158. type: string
  159. accessKey:
  160. type: string
  161. secret:
  162. type: string
  163. bucket:
  164. type: string
  165. region:
  166. type: string
  167. acl:
  168. type: string
  169. forcePathStyle:
  170. type: boolean
  171. required:
  172. - enabled
  173. StreamQuality:
  174. type: object
  175. properties:
  176. videoPassthrough:
  177. type: boolean
  178. description: If enabled video transcoding is disabled and the video is passed along in its original format.
  179. audioPassthrough:
  180. type: boolean
  181. description: If enabled audio transcoding is disabled and the audio is passed along in its original format.
  182. videoBitrate:
  183. type: integer
  184. description: The video quality, in kbps.
  185. audioBitrate:
  186. type: integer
  187. description: The audio quality, in kbps.
  188. scaledWidth:
  189. type: integer
  190. description: The resized video width.
  191. scaledHeight:
  192. type: integer
  193. description: The resized video height.
  194. framerate:
  195. type: integer
  196. description: The target frames per second of the video.
  197. cpuUsageLevel:
  198. type: integer
  199. description: 'The amount of hardware utilization selected for this HLS variant.'
  200. TimestampedValue:
  201. type: object
  202. properties:
  203. time:
  204. type: string
  205. format: date-time
  206. value:
  207. type: integer
  208. ConfigValue:
  209. description: A wrapper object used to set values in many config endpoints.
  210. type: object
  211. properties:
  212. value:
  213. oneOf:
  214. - type: string
  215. - type: integer
  216. - type: object
  217. - type: boolean
  218. BooleanValue:
  219. description: A wrapper object used to set boolean values in many config endpoints.
  220. type: object
  221. properties:
  222. value:
  223. type: boolean
  224. example:
  225. value: true
  226. LogEntry:
  227. type: object
  228. properties:
  229. time:
  230. type: string
  231. format: date-time
  232. description: 'Timestamp for this log entry'
  233. level:
  234. type: string
  235. description: 'The level of this log entry'
  236. message:
  237. type: string
  238. description: 'The log entry contents'
  239. Webhook:
  240. type: object
  241. properties:
  242. id:
  243. type: string
  244. description: The ID of this webhook.
  245. url:
  246. type: string
  247. description: The URL that events will be sent to.
  248. events:
  249. type: array
  250. items:
  251. type: string
  252. description: The events that will be sent to this webhook.
  253. timestamp:
  254. type: string
  255. format: date-time
  256. description: When this webhook was created.
  257. lastUsed:
  258. type: string
  259. format: date-time
  260. description: When this webhook was last used.
  261. User:
  262. type: object
  263. properties:
  264. id:
  265. type: string
  266. description: User ID
  267. example: yklw5Imng
  268. displayName:
  269. type: string
  270. description: The user-facing disaplay name for this user.
  271. example: awesome-pizza
  272. displayColor:
  273. type: integer
  274. description: Color name number for client rendering. theme-user-colors-n
  275. example: 3
  276. createdAt:
  277. type: string
  278. format: date-time
  279. description: When this account was originally registered/created.
  280. previousNames:
  281. type: string
  282. description: Comma separated list of names previously used by this user.
  283. example: 'awesome-pizza,user42'
  284. scopes:
  285. type: array
  286. items:
  287. description: A specific attribute assigned to this user
  288. type: string
  289. example: 'MODERATOR'
  290. Follower:
  291. type: object
  292. required:
  293. - link
  294. - username
  295. - timestamp
  296. properties:
  297. link:
  298. type: string
  299. description: URL linking to this follower
  300. example: https://mastodon.cloud/users/gabektest
  301. name:
  302. type: string
  303. description: Optional display name for this follower
  304. example: John Smith
  305. image:
  306. type: string
  307. description: Optional image for this follower
  308. example: http://mastodon.cloud/users/gabektest/avatar.png
  309. timestamp:
  310. type: string
  311. format: date-time
  312. description: Timestamp of when the follow occurred
  313. disabledAt:
  314. type: string
  315. format: date-time
  316. description: Timestamp when the follow was removed
  317. FederatedAction:
  318. type: object
  319. properties:
  320. iri:
  321. type: string
  322. description: The unique identifier for this action.
  323. example: https://fediverse.server/jfk-3827
  324. actorIRI:
  325. type: string
  326. description: The identifier for the actor that performed this action.
  327. example: https://mastodon.cloud/users/gabektest
  328. type:
  329. type: string
  330. enum:
  331. [
  332. FEDIVERSE_ENGAGEMENT_FOLLOW,
  333. FEDIVERSE_ENGAGEMENT_LIKE,
  334. FEDIVERSE_ENGAGEMENT_REPOST,
  335. ]
  336. StreamKey:
  337. type: object
  338. properties:
  339. id:
  340. type: string
  341. description: The key used for authing a stream.
  342. example: yklw5Imng
  343. comment:
  344. type: string
  345. description: The user-facing description or explanation of this single key
  346. example: Used by Tim.
  347. ChatMessage:
  348. type: array
  349. items:
  350. type: object
  351. properties:
  352. user:
  353. $ref: '#/components/schemas/User'
  354. body:
  355. type: string
  356. description: Escaped HTML of the chat message content.
  357. id:
  358. type: string
  359. description: Unique ID of the chat message.
  360. visible:
  361. type: boolean
  362. description: 'Should chat message be visibly rendered.'
  363. timestamp:
  364. type: string
  365. format: date-time
  366. securitySchemes:
  367. AdminBasicAuth:
  368. type: http
  369. scheme: basic
  370. description: The username for admin basic auth is `admin`. Defaults to abc123.
  371. AccessToken:
  372. type: http
  373. scheme: bearer
  374. description: 3rd party integration auth where a service user must provide an access token.
  375. UserToken:
  376. type: apiKey
  377. name: accessToken
  378. in: query
  379. description: A standard user must provide a valid access token.
  380. ModeratorUserToken:
  381. type: apiKey
  382. name: accessToken
  383. in: query
  384. description: A moderator user must provide a valid access token.
  385. responses:
  386. UsersResponse:
  387. description: A collection of users.
  388. content:
  389. application/json:
  390. schema:
  391. $ref: '#/components/schemas/UserArray'
  392. FollowersResponse:
  393. description: A collection of users.
  394. content:
  395. application/json:
  396. schema:
  397. $ref: '#/components/schemas/FollowerArray'
  398. ClientsResponse:
  399. description: Successful response of an array of clients
  400. content:
  401. application/json:
  402. schema:
  403. $ref: '#/components/schemas/ClientArray'
  404. example:
  405. - connectedAt: '2020-10-06T23:20:44.588649-07:00'
  406. messageCount: 3
  407. userAgent: >-
  408. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36
  409. (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
  410. ipAddress: '172.217.164.110'
  411. geo:
  412. countryCode: US
  413. regionName: California
  414. timeZone: America/Los_Angeles
  415. user:
  416. id: yklw5Imng
  417. displayName: awesome-pizza
  418. displayColor: 42
  419. createdAt: '2021-07-08T20:21:25.303402404-07:00'
  420. previousNames: 'awesome-pizza,coolPerson23'
  421. LogsResponse:
  422. description: Response of server log entries
  423. content:
  424. application/json:
  425. schema:
  426. $ref: '#/components/schemas/LogEntryArray'
  427. examples:
  428. success:
  429. summary: Logs returned
  430. value:
  431. [
  432. {
  433. 'message': 'Owncast v0.0.0-localdev (unknown)',
  434. 'level': 'info',
  435. 'time': '2020-10-29T18:35:34.422386-07:00',
  436. },
  437. {
  438. 'message': 'Web server running on port: 8080',
  439. 'level': 'info',
  440. 'time': '2020-10-29T18:35:35.011731-07:00',
  441. },
  442. {
  443. 'message': 'RTMP server is listening for incoming stream on port: 1935',
  444. 'level': 'info',
  445. 'time': '2020-10-29T18:35:35.011823-07:00',
  446. },
  447. ]
  448. BasicResponse:
  449. description: Operation Success/Failure Response
  450. content:
  451. application/json:
  452. schema:
  453. $ref: '#/components/schemas/BasicResponse'
  454. examples:
  455. success:
  456. summary: Operation succeeded.
  457. value:
  458. {
  459. 'success': true,
  460. 'message': 'context specific success message',
  461. }
  462. failure:
  463. summary: Operation failed.
  464. value:
  465. {
  466. 'success': false,
  467. 'message': 'context specific failure message',
  468. }
  469. paths:
  470. /api/config:
  471. get:
  472. summary: Information
  473. description: The client configuration. Information useful for the user interface.
  474. tags: ['Server']
  475. responses:
  476. '200':
  477. description: ''
  478. content:
  479. application/json:
  480. schema:
  481. $ref: '#/components/schemas/InstanceDetails'
  482. /api/ping:
  483. get:
  484. summary: Mark the current viewer as active.
  485. description: For tracking viewer count, periodically hit the ping endpoint.
  486. tags: ['Server']
  487. responses:
  488. '200':
  489. description: 'Successful ping'
  490. /api/status:
  491. get:
  492. summary: Current Status
  493. description: This endpoint is used to discover when a server is broadcasting, the number of active viewers as well as other useful information for updating the user interface.
  494. tags: ['Server']
  495. responses:
  496. '200':
  497. description: ''
  498. content:
  499. application/json:
  500. schema:
  501. type: object
  502. properties:
  503. lastConnectTime:
  504. type: string
  505. nullable: true
  506. format: date-time
  507. overallMaxViewerCount:
  508. type: integer
  509. sessionMaxViewerCount:
  510. type: integer
  511. online:
  512. type: boolean
  513. viewerCount:
  514. type: integer
  515. lastDisconnectTime:
  516. type: string
  517. nullable: true
  518. format: date-time
  519. examples:
  520. online:
  521. value:
  522. lastConnectTime: '2020-10-03T21:36:22-05:00'
  523. lastDisconnectTime: null
  524. online: true
  525. overallMaxViewerCount: 420
  526. sessionMaxViewerCount: 12
  527. viewerCount: 7
  528. /api/customjavascript:
  529. get:
  530. summary: Custom Javascript to execute.
  531. description: Returns custom Javascript that was set in the Owncast admin to be run in the Owncast frontend.
  532. tags: ['Server']
  533. responses:
  534. '200':
  535. description: ''
  536. content:
  537. application/javascript:
  538. schema:
  539. type: string
  540. example: console.log("Hello World");
  541. /api/chat/register:
  542. post:
  543. summary: Register a chat user
  544. description: Register a user that returns an access token for accessing chat.
  545. tags: ['Chat']
  546. security:
  547. - UserToken: []
  548. requestBody:
  549. required: false
  550. content:
  551. application/json:
  552. schema:
  553. type: object
  554. properties:
  555. displayName:
  556. type: string
  557. description: Optionally provide a display name you want to assign to this user when registering.
  558. responses:
  559. '200':
  560. description: ''
  561. content:
  562. application/json:
  563. schema:
  564. type: object
  565. properties:
  566. id:
  567. type: string
  568. description: The new user's id.
  569. accessToken:
  570. type: string
  571. description: The access token used for accessing chat.
  572. displayName:
  573. type: string
  574. description: The user-facing name displayed for this user.
  575. /api/chat:
  576. get:
  577. summary: Chat Messages Backlog
  578. description: Used to get chat messages prior to connecting to the websocket.
  579. tags: ['Chat']
  580. security:
  581. - UserToken: []
  582. responses:
  583. '200':
  584. description: ''
  585. content:
  586. application/json:
  587. schema:
  588. $ref: '#/components/schemas/ChatMessageArray'
  589. /api/yp:
  590. get:
  591. summary: Yellow Pages Information
  592. description: Information to be used in the Yellow Pages service, a global directory of Owncast servers.
  593. tags: ['Server']
  594. responses:
  595. '200':
  596. description: ''
  597. content:
  598. application/json:
  599. schema:
  600. type: object
  601. properties:
  602. name:
  603. type: string
  604. description:
  605. type: string
  606. logo:
  607. type: string
  608. nsfw:
  609. type: boolean
  610. tags:
  611. type: array
  612. items:
  613. type: string
  614. online:
  615. type: boolean
  616. viewerCount:
  617. type: integer
  618. overallMaxViewerCount:
  619. type: integer
  620. sessionMaxViewerCount:
  621. type: integer
  622. lastConnectTime:
  623. type: string
  624. nullable: true
  625. format: date-time
  626. /img/emoji/:
  627. get:
  628. parameters:
  629. - name: name
  630. in: path
  631. description: Emoji image name
  632. required: true
  633. schema:
  634. type: string
  635. example: test.svg
  636. summary: Get Emoji Image
  637. description: Get an emoji image.
  638. tags: ['Chat']
  639. responses:
  640. '200':
  641. description: 'Returns a single image'
  642. /api/emoji:
  643. get:
  644. summary: Get Custom Emoji
  645. description: Get a list of custom emoji that are supported in chat.
  646. tags: ['Chat']
  647. responses:
  648. '200':
  649. description: ''
  650. content:
  651. application/json:
  652. schema:
  653. type: array
  654. items:
  655. type: object
  656. properties:
  657. name:
  658. type: string
  659. description: The name of the Emoji
  660. emoji:
  661. type: string
  662. description: The relative path to the Emoji image file
  663. examples:
  664. default:
  665. value:
  666. items:
  667. - name: nicolas_cage_party
  668. emoji: /img/emoji/nicolas_cage_party.gif
  669. - name: parrot
  670. emoji: /img/emoji/parrot.gif
  671. /api/followers:
  672. get:
  673. summary: Get the public followers of this instance
  674. responses:
  675. '200':
  676. description: Followers
  677. content:
  678. application/json:
  679. schema:
  680. type: array
  681. items:
  682. $ref: '#/components/schemas/Follower'
  683. /api/remotefollow:
  684. post:
  685. summary: Return the information needed to redirect a user to a fediverse server to perform a remote follow action.
  686. requestBody:
  687. content:
  688. application/json:
  689. schema:
  690. type: object
  691. properties:
  692. account:
  693. description: The fediverse username@server.tld account that wants to perform the remote follow action.
  694. type: string
  695. example: johnsmith@fediverse.biz
  696. responses:
  697. '200':
  698. description: Remote follow redirect details
  699. content:
  700. application/json:
  701. schema:
  702. type: object
  703. properties:
  704. redirectUrl:
  705. description: The URL the frontend should redirect to
  706. type: string
  707. example: https://fediverse.biz/authorize_interaction?uri=https://my.owncast.server/federation/user/streamer
  708. /api/chat/messagevisibility:
  709. post:
  710. summary: Update the visibility of chat messages.
  711. description: Pass an array of IDs you want to change the chat visibility of.
  712. requestBody:
  713. content:
  714. application/json:
  715. schema:
  716. type: object
  717. properties:
  718. visible:
  719. type: boolean
  720. description: Are these messages visible.
  721. idArray:
  722. type: array
  723. items:
  724. type: string
  725. description: IDs of the chat messages you wish to change the visibility of.
  726. tags: ['Moderation']
  727. security:
  728. - ModeratorUserToken: []
  729. responses:
  730. '200':
  731. $ref: '#/components/responses/BasicResponse'
  732. /api/chat/users/setenabled:
  733. post:
  734. summary: Disable (block) or re-enable a chat user.
  735. requestBody:
  736. content:
  737. application/json:
  738. schema:
  739. type: object
  740. properties:
  741. userId:
  742. type: string
  743. description: User ID of the chat user you're changing.
  744. enabled:
  745. type: boolean
  746. description: State of this user. False to block/disable.
  747. tags: ['Moderation']
  748. security:
  749. - ModeratorUserToken: []
  750. responses:
  751. '200':
  752. $ref: '#/components/responses/BasicResponse'
  753. /api/admin/status:
  754. get:
  755. summary: 'Server status and broadcaster'
  756. tags: ['Admin']
  757. security:
  758. - AdminBasicAuth: []
  759. responses:
  760. '200':
  761. description: Server status and broadcaster details
  762. content:
  763. application/json:
  764. schema:
  765. type: object
  766. properties:
  767. broadcaster:
  768. type: object
  769. properties:
  770. remoteAddr:
  771. type: string
  772. time:
  773. type: string
  774. format: date-time
  775. streamDetails:
  776. type: object
  777. properties:
  778. width:
  779. type: integer
  780. height:
  781. type: integer
  782. frameRate:
  783. type: integer
  784. videoBitrate:
  785. type: integer
  786. videoCodec:
  787. type: string
  788. audioBitrate:
  789. type: integer
  790. audioCodec:
  791. type: string
  792. encoder:
  793. type: string
  794. online:
  795. type: boolean
  796. description: Is a stream currently active
  797. viewerCount:
  798. type: integer
  799. description: The current number of viewers
  800. sessionPeakViewerCount:
  801. type: integer
  802. description: The peak number of viewers this streaming session
  803. overallPeakViewerCount:
  804. type: integer
  805. description: The all-time peak number of viewers
  806. versionNumber:
  807. type: string
  808. description: The current version of the owncast software
  809. examples:
  810. connected:
  811. summary: 'Broadcaster Connected'
  812. value:
  813. broadcaster:
  814. remoteAddr: 172.217.164.110
  815. time: '2020-10-06T23:20:44.588649-07:00'
  816. streamDetails:
  817. width: 640
  818. height: 480
  819. frameRate: 24
  820. videoBitrate: 1500
  821. videoCodec: 'mp4a'
  822. audioBitrate: 256
  823. audioCodec: 'aac'
  824. encoder: 'obs-output module (libobs version 25.0.8)'
  825. online: true
  826. viewerCount: 3
  827. overallPeakViewerCount: 4
  828. sessionPeakViewerCount: 4
  829. versionNumber: '0.0.3'
  830. /api/admin/disconnect:
  831. post:
  832. summary: Disconnect Broadcaster
  833. description: Disconnect the active inbound stream, if one exists, and terminate the broadcast.
  834. tags: ['Admin']
  835. security:
  836. - AdminBasicAuth: []
  837. responses:
  838. '200':
  839. $ref: '#/components/responses/BasicResponse'
  840. /api/admin/yp/reset:
  841. post:
  842. summary: Reset your YP registration key.
  843. description: Used when there is a problem with your registration to the Owncast Directory via the YP APIs. This will reset your local registration key.
  844. tags: ['Admin']
  845. security:
  846. - AdminBasicAuth: []
  847. responses:
  848. '200':
  849. $ref: '#/components/responses/BasicResponse'
  850. /api/admin/chat/clients:
  851. get:
  852. summary: Return a list of currently connected clients
  853. description: Return a list of currently connected clients with optional geo details.
  854. tags: ['Admin']
  855. security:
  856. - AdminBasicAuth: []
  857. responses:
  858. '200':
  859. $ref: '#/components/responses/ClientsResponse'
  860. /api/admin/users/disabled:
  861. get:
  862. summary: Return a list of currently connected clients
  863. description: Return a list of currently connected clients with optional geo details.
  864. tags: ['Admin']
  865. security:
  866. - AdminBasicAuth: []
  867. responses:
  868. '200':
  869. $ref: '#/components/responses/UsersResponse'
  870. /api/admin/logs:
  871. get:
  872. summary: Return recent log entries
  873. description: Returns server logs.
  874. tags: ['Admin']
  875. security:
  876. - AdminBasicAuth: []
  877. responses:
  878. '200':
  879. $ref: '#/components/responses/LogsResponse'
  880. /api/admin/logs/warnings:
  881. get:
  882. summary: Return recent warning and error logs.
  883. description: Return recent warning and error logs.
  884. tags: ['Admin']
  885. security:
  886. - AdminBasicAuth: []
  887. responses:
  888. '200':
  889. $ref: '#/components/responses/LogsResponse'
  890. /api/admin/serverconfig:
  891. get:
  892. summary: Server Configuration
  893. description: Get the current configuration of the Owncast server.
  894. tags: ['Admin']
  895. security:
  896. - AdminBasicAuth: []
  897. responses:
  898. '200':
  899. description: ''
  900. content:
  901. application/json:
  902. schema:
  903. type: object
  904. properties:
  905. instanceDetails:
  906. $ref: '#/components/schemas/InstanceDetails'
  907. ffmpegPath:
  908. type: string
  909. description: The path to the copy of ffmpeg that this server is using.
  910. webServerPort:
  911. type: integer
  912. description: The port the public web server is listening on.
  913. rtmpServerPort:
  914. type: integer
  915. description: The port the inbound RTMP broadcast should be sent to.
  916. s3:
  917. $ref: '#/components/schemas/S3'
  918. videoSettings:
  919. type: object
  920. description: How the different variants of video streams are configured.
  921. properties:
  922. videoQualityVariants:
  923. type: array
  924. items:
  925. $ref: '#/components/schemas/StreamQuality'
  926. latencyLevel:
  927. type: integer
  928. description: The level of latency selected for streaming. Lower latency can create more buffering.
  929. yp:
  930. $ref: '#/components/schemas/YP'
  931. /api/admin/chat/messages:
  932. get:
  933. summary: Chat messages, unfiltered.
  934. description: Get a list of all chat messages with no filters applied.
  935. tags: ['Admin']
  936. security:
  937. - AdminBasicAuth: []
  938. responses:
  939. '200':
  940. description: ''
  941. content:
  942. application/json:
  943. schema:
  944. type: array
  945. items:
  946. type: object
  947. properties:
  948. user:
  949. $ref: '#/components/schemas/User'
  950. body:
  951. type: string
  952. description: Escaped HTML of the chat message content.
  953. id:
  954. type: string
  955. description: Unique ID of the chat message.
  956. visible:
  957. type: boolean
  958. description: 'Should chat message be visibly rendered.'
  959. timestamp:
  960. type: string
  961. format: date-time
  962. /api/admin/chat/messagevisibility:
  963. post:
  964. summary: Update the visibility of chat messages.
  965. description: Pass an array of IDs you want to change the chat visibility of.
  966. requestBody:
  967. content:
  968. application/json:
  969. schema:
  970. type: object
  971. properties:
  972. visible:
  973. type: boolean
  974. description: Are these messages visible.
  975. idArray:
  976. type: array
  977. items:
  978. type: string
  979. description: IDs of the chat messages you wish to change the visibility of.
  980. tags: ['Admin']
  981. security:
  982. - AdminBasicAuth: []
  983. responses:
  984. '200':
  985. $ref: '#/components/responses/BasicResponse'
  986. /api/admin/chat/users/setenabled:
  987. post:
  988. summary: Enable or disable a single user.
  989. description: Enable or disable a single user. Disabling will also hide all the user's chat messages.
  990. requestBody:
  991. content:
  992. application/json:
  993. schema:
  994. type: object
  995. properties:
  996. userId:
  997. type: string
  998. description: User ID to act upon.
  999. example: 'yklw5Imng'
  1000. enabled:
  1001. type: boolean
  1002. description: Set the enabled state of this user.
  1003. tags: ['Admin']
  1004. security:
  1005. - AdminBasicAuth: []
  1006. responses:
  1007. '200':
  1008. $ref: '#/components/responses/BasicResponse'
  1009. /api/admin/config/adminpass:
  1010. post:
  1011. summary: Set the admin password.
  1012. tags: ['Admin']
  1013. security:
  1014. - AdminBasicAuth: []
  1015. responses:
  1016. '200':
  1017. $ref: '#/components/responses/BasicResponse'
  1018. requestBody:
  1019. content:
  1020. application/json:
  1021. schema:
  1022. $ref: '#/components/schemas/ConfigValue'
  1023. /api/admin/config/streamkeys:
  1024. post:
  1025. summary: Set the stream keys.
  1026. tags: ['Admin']
  1027. security:
  1028. - AdminBasicAuth: []
  1029. responses:
  1030. '200':
  1031. $ref: '#/components/responses/BasicResponse'
  1032. requestBody:
  1033. content:
  1034. application/json:
  1035. schema:
  1036. $ref: '#/components/schemas/StreamKeyArray'
  1037. /api/admin/config/pagecontent:
  1038. post:
  1039. summary: Set the custom page content.
  1040. description: Set the custom page content using markdown.
  1041. tags: ['Admin']
  1042. security:
  1043. - AdminBasicAuth: []
  1044. responses:
  1045. '200':
  1046. $ref: '#/components/responses/BasicResponse'
  1047. requestBody:
  1048. content:
  1049. application/json:
  1050. schema:
  1051. $ref: '#/components/schemas/ConfigValue'
  1052. example:
  1053. value: '# Welcome to my cool server!<br><br>I _hope_ you enjoy it.'
  1054. /api/admin/config/streamtitle:
  1055. post:
  1056. summary: Set the stream title.
  1057. description: Set the title of the currently streaming content.
  1058. tags: ['Admin']
  1059. security:
  1060. - AdminBasicAuth: []
  1061. responses:
  1062. '200':
  1063. $ref: '#/components/responses/BasicResponse'
  1064. requestBody:
  1065. content:
  1066. application/json:
  1067. schema:
  1068. $ref: '#/components/schemas/ConfigValue'
  1069. example:
  1070. value: Streaming my favorite game, Desert Bus.
  1071. /api/admin/config/name:
  1072. post:
  1073. summary: Set the server name.
  1074. description: Set the name associated with your server. Often is your name, username or identity.
  1075. tags: ['Admin']
  1076. security:
  1077. - AdminBasicAuth: []
  1078. responses:
  1079. '200':
  1080. $ref: '#/components/responses/BasicResponse'
  1081. requestBody:
  1082. content:
  1083. application/json:
  1084. schema:
  1085. $ref: '#/components/schemas/ConfigValue'
  1086. /api/admin/config/serversummary:
  1087. post:
  1088. summary: Set the server summary.
  1089. description: Set the summary of your server's streaming content.
  1090. tags: ['Admin']
  1091. security:
  1092. - AdminBasicAuth: []
  1093. responses:
  1094. '200':
  1095. $ref: '#/components/responses/BasicResponse'
  1096. requestBody:
  1097. content:
  1098. application/json:
  1099. schema:
  1100. $ref: '#/components/schemas/ConfigValue'
  1101. example:
  1102. value: The best in Desert Bus Streaming
  1103. /api/admin/config/offlinemessage:
  1104. post:
  1105. summary: Set the offline message.
  1106. description: Set the message that is displayed when a stream is not live.
  1107. tags: ['Admin']
  1108. security:
  1109. - AdminBasicAuth: []
  1110. responses:
  1111. '200':
  1112. $ref: '#/components/responses/BasicResponse'
  1113. requestBody:
  1114. content:
  1115. application/json:
  1116. schema:
  1117. $ref: '#/components/schemas/ConfigValue'
  1118. example:
  1119. value: Come back on Friday at 2pm, I'll be streaming then.
  1120. /api/admin/config/logo:
  1121. post:
  1122. summary: Set the server logo.
  1123. description: Set the logo for your server. Path is relative to webroot.
  1124. tags: ['Admin']
  1125. security:
  1126. - AdminBasicAuth: []
  1127. responses:
  1128. '200':
  1129. $ref: '#/components/responses/BasicResponse'
  1130. requestBody:
  1131. content:
  1132. application/json:
  1133. schema:
  1134. $ref: '#/components/schemas/ConfigValue'
  1135. example:
  1136. value: '/img/mylogo.png'
  1137. /api/admin/config/tags:
  1138. post:
  1139. summary: Set the server tags.
  1140. description: Set the tags displayed for your server and the categories you can show up in on the directory.
  1141. tags: ['Admin']
  1142. security:
  1143. - AdminBasicAuth: []
  1144. responses:
  1145. '200':
  1146. $ref: '#/components/responses/BasicResponse'
  1147. requestBody:
  1148. content:
  1149. application/json:
  1150. schema:
  1151. $ref: '#/components/schemas/ConfigValue'
  1152. example:
  1153. value:
  1154. - games
  1155. - music
  1156. - streaming
  1157. /api/admin/config/ffmpegpath:
  1158. post:
  1159. summary: Set the ffmpeg binary path
  1160. description: Set the path for a specific copy of ffmpeg on your system.
  1161. tags: ['Admin']
  1162. security:
  1163. - AdminBasicAuth: []
  1164. responses:
  1165. '200':
  1166. $ref: '#/components/responses/BasicResponse'
  1167. requestBody:
  1168. content:
  1169. application/json:
  1170. schema:
  1171. $ref: '#/components/schemas/ConfigValue'
  1172. example:
  1173. value: '/home/owncast/ffmpeg'
  1174. /api/admin/config/webserverport:
  1175. post:
  1176. summary: Set the owncast web port.
  1177. description: Set the port the owncast web server should listen on.
  1178. tags: ['Admin']
  1179. security:
  1180. - AdminBasicAuth: []
  1181. responses:
  1182. '200':
  1183. $ref: '#/components/responses/BasicResponse'
  1184. requestBody:
  1185. content:
  1186. application/json:
  1187. schema:
  1188. $ref: '#/components/schemas/ConfigValue'
  1189. example:
  1190. value: 8080
  1191. /api/admin/config/rtmpserverport:
  1192. post:
  1193. summary: Set the inbound rtmp server port.
  1194. description: Set the port where owncast service will listen for inbound broadcasts.
  1195. tags: ['Admin']
  1196. security:
  1197. - AdminBasicAuth: []
  1198. responses:
  1199. '200':
  1200. $ref: '#/components/responses/BasicResponse'
  1201. requestBody:
  1202. content:
  1203. application/json:
  1204. schema:
  1205. $ref: '#/components/schemas/ConfigValue'
  1206. example:
  1207. value: 1935
  1208. /api/admin/config/nsfw:
  1209. post:
  1210. summary: Mark if your stream is not safe for work
  1211. description: Mark if your stream can be consitered not safe for work. Used in different contexts, including the directory for filtering purposes.
  1212. tags: ['Admin']
  1213. security:
  1214. - AdminBasicAuth: []
  1215. responses:
  1216. '200':
  1217. $ref: '#/components/responses/BasicResponse'
  1218. requestBody:
  1219. content:
  1220. application/json:
  1221. schema:
  1222. $ref: '#/components/schemas/ConfigValue'
  1223. example:
  1224. value: false
  1225. /api/admin/config/directoryenabled:
  1226. post:
  1227. summary: Set if this server supports the Owncast directory.
  1228. description: If set to true the server will attempt to register itself with the [Owncast Directory](https://directory.owncast.online). Off by default.
  1229. tags: ['Admin']
  1230. security:
  1231. - AdminBasicAuth: []
  1232. responses:
  1233. '200':
  1234. $ref: '#/components/responses/BasicResponse'
  1235. requestBody:
  1236. content:
  1237. application/json:
  1238. schema:
  1239. $ref: '#/components/schemas/ConfigValue'
  1240. example:
  1241. value: true
  1242. /api/admin/config/serverurl:
  1243. post:
  1244. summary: Set the public url of this owncast server.
  1245. description: Set the public url of this owncast server. Used for the directory and optional integrations.
  1246. tags: ['Admin']
  1247. security:
  1248. - AdminBasicAuth: []
  1249. responses:
  1250. '200':
  1251. $ref: '#/components/responses/BasicResponse'
  1252. requestBody:
  1253. content:
  1254. application/json:
  1255. schema:
  1256. $ref: '#/components/schemas/ConfigValue'
  1257. example:
  1258. value: https://live.mycoolserver.biz
  1259. /api/admin/config/video/streamlatencylevel:
  1260. post:
  1261. summary: Set the latency level for the stream.
  1262. description: Sets the latency level that determines how much video is buffered between the server and viewer. Less latency can end up with more buffering.
  1263. tags: ['Admin']
  1264. security:
  1265. - AdminBasicAuth: []
  1266. responses:
  1267. '200':
  1268. $ref: '#/components/responses/BasicResponse'
  1269. requestBody:
  1270. content:
  1271. application/json:
  1272. schema:
  1273. type: object
  1274. properties:
  1275. value:
  1276. description: The latency level
  1277. type: integer
  1278. example:
  1279. value: 4
  1280. /api/admin/config/video/streamoutputvariants:
  1281. post:
  1282. summary: Set the configuration of your stream output.
  1283. description: Sets the detailed configuration for all of the stream variants you support.
  1284. tags: ['Admin']
  1285. security:
  1286. - AdminBasicAuth: []
  1287. responses:
  1288. '200':
  1289. $ref: '#/components/responses/BasicResponse'
  1290. requestBody:
  1291. content:
  1292. application/json:
  1293. schema:
  1294. $ref: '#/components/schemas/ConfigValue'
  1295. example:
  1296. value:
  1297. - framerate: 30
  1298. videoPassthrough: false
  1299. videoBitrate: 1800
  1300. cpuUsageLevel: 2
  1301. audioPassthrough: true
  1302. - framerate: 24
  1303. videoPassthrough: false
  1304. videoBitrate: 1000
  1305. cpuUsageLevel: 3
  1306. audioPassthrough: true
  1307. /api/admin/config/video/codec:
  1308. post:
  1309. summary: Set the video codec.
  1310. description: Sets the specific video codec that will be used for video encoding. Some codecs will support hardware acceleration. Not all codecs will be supported for all systems.
  1311. tags: ['Admin']
  1312. security:
  1313. - AdminBasicAuth: []
  1314. responses:
  1315. '200':
  1316. $ref: '#/components/responses/BasicResponse'
  1317. requestBody:
  1318. content:
  1319. application/json:
  1320. schema:
  1321. type: object
  1322. properties:
  1323. value:
  1324. description: The video codec to change to.
  1325. type: string
  1326. example:
  1327. value: libx264
  1328. /api/admin/config/s3:
  1329. post:
  1330. summary: Set your storage configuration.
  1331. description: Sets your S3 storage provider configuration details to enable external storage.
  1332. tags: ['Admin']
  1333. security:
  1334. - AdminBasicAuth: []
  1335. responses:
  1336. '200':
  1337. $ref: '#/components/responses/BasicResponse'
  1338. requestBody:
  1339. content:
  1340. application/json:
  1341. schema:
  1342. $ref: '#/components/schemas/ConfigValue'
  1343. example:
  1344. value:
  1345. enabled: true
  1346. endpoint: https://s3.us-west-000.backblazeb2.com
  1347. accessKey: e1ac500y7000500047156bd060
  1348. secret: 'H8FH8eSxM2K/S42CUg5K000Tt4WY2fI'
  1349. bucket: 'video'
  1350. region: us-west-000
  1351. /api/admin/config/socialhandles:
  1352. post:
  1353. summary: Set your social handles.
  1354. description: Sets the external links to social networks and profiles.
  1355. tags: ['Admin']
  1356. security:
  1357. - AdminBasicAuth: []
  1358. responses:
  1359. '200':
  1360. $ref: '#/components/responses/BasicResponse'
  1361. requestBody:
  1362. content:
  1363. application/json:
  1364. schema:
  1365. $ref: '#/components/schemas/ConfigValue'
  1366. example:
  1367. value:
  1368. - platform: github
  1369. url: https://github.com/owncast/owncast
  1370. - platform: mastodon
  1371. url: https://mastodon.social/@gabek
  1372. /api/admin/config/customstyles:
  1373. post:
  1374. summary: Custom CSS styles to be used in the web front endpoints.
  1375. description: Save a string containing CSS to be inserted in to the web frontend page.
  1376. tags: ['Admin']
  1377. responses:
  1378. '200':
  1379. $ref: '#/components/responses/BasicResponse'
  1380. requestBody:
  1381. content:
  1382. application/json:
  1383. schema:
  1384. $ref: '#/components/schemas/ConfigValue'
  1385. example:
  1386. value: 'body { color: orange; background: black; }'
  1387. /api/admin/config/customjavascript:
  1388. post:
  1389. summary: Custom Javascript to be inserted into the frontend
  1390. description: Save a string containing Javascript to be inserted in to the web frontend page.
  1391. tags: ['Admin']
  1392. responses:
  1393. '200':
  1394. $ref: '#/components/responses/BasicResponse'
  1395. requestBody:
  1396. content:
  1397. application/javascript:
  1398. schema:
  1399. $ref: '#/components/schemas/ConfigValue'
  1400. example:
  1401. value: console.log('Hello world.');
  1402. /api/admin/config/appearance:
  1403. post:
  1404. summary: Save a map of variables and values to be used in the frontend.
  1405. description: These values will override the default values in the frontend.
  1406. tags: ['Admin']
  1407. responses:
  1408. '200':
  1409. $ref: '#/components/responses/BasicResponse'
  1410. requestBody:
  1411. content:
  1412. application/json:
  1413. schema:
  1414. type: object
  1415. properties:
  1416. value:
  1417. type: object
  1418. example:
  1419. value:
  1420. theme-color-components-primary-button-background: '#ff0000'
  1421. theme-color-components-chat-background: '#000000'
  1422. /api/admin/viewersOverTime:
  1423. get:
  1424. summary: Viewers Over Time
  1425. description: Get the tracked viewer count over the collected period.
  1426. tags: ['Admin']
  1427. security:
  1428. - AdminBasicAuth: []
  1429. responses:
  1430. '200':
  1431. description: ''
  1432. content:
  1433. application/json:
  1434. schema:
  1435. type: array
  1436. items:
  1437. $ref: '#/components/schemas/TimestampedValue'
  1438. examples:
  1439. default:
  1440. value:
  1441. - time: '2020-10-03T21:41:00.381996-05:00'
  1442. value: 50
  1443. - time: '2020-10-03T21:42:00.381996-05:00'
  1444. value: 52
  1445. /api/admin/hardwarestats:
  1446. get:
  1447. summary: Hardware Stats
  1448. description: 'Get the CPU, Memory and Disk utilization levels over the collected period.'
  1449. tags: ['Admin']
  1450. security:
  1451. - AdminBasicAuth: []
  1452. responses:
  1453. '200':
  1454. description: ''
  1455. content:
  1456. application/json:
  1457. schema:
  1458. type: object
  1459. properties:
  1460. cpu:
  1461. type: array
  1462. items:
  1463. $ref: '#/components/schemas/TimestampedValue'
  1464. memory:
  1465. type: array
  1466. items:
  1467. $ref: '#/components/schemas/TimestampedValue'
  1468. disk:
  1469. type: array
  1470. items:
  1471. $ref: '#/components/schemas/TimestampedValue'
  1472. examples:
  1473. default:
  1474. value:
  1475. cpu:
  1476. - time: '2020-10-03T21:41:00.381996-05:00'
  1477. value: 23
  1478. - time: '2020-10-03T21:42:00.381996-05:00'
  1479. value: 27
  1480. - time: '2020-10-03T21:43:00.381996-05:00'
  1481. value: 22
  1482. memory:
  1483. - time: '2020-10-03T21:41:00.381996-05:00'
  1484. value: 65
  1485. - time: '2020-10-03T21:42:00.381996-05:00'
  1486. value: 66
  1487. - time: '2020-10-03T21:43:00.381996-05:00'
  1488. value: 72
  1489. disk:
  1490. - time: '2020-10-03T21:41:00.381996-05:00'
  1491. value: 11
  1492. - time: '2020-10-03T21:42:00.381996-05:00'
  1493. value: 11
  1494. - time: '2020-10-03T21:43:00.381996-05:00'
  1495. value: 11
  1496. /api/admin/config/hideviewercount:
  1497. post:
  1498. summary: Enable or disable showing the viewer count.
  1499. tags: ['Admin']
  1500. security:
  1501. - AdminBasicAuth: []
  1502. responses:
  1503. '200':
  1504. $ref: '#/components/responses/BasicResponse'
  1505. requestBody:
  1506. content:
  1507. application/json:
  1508. schema:
  1509. $ref: '#/components/schemas/BooleanValue'
  1510. /api/admin/config/federation/enable:
  1511. post:
  1512. summary: Enable or disable federated social features.
  1513. tags: ['Admin']
  1514. security:
  1515. - AdminBasicAuth: []
  1516. responses:
  1517. '200':
  1518. $ref: '#/components/responses/BasicResponse'
  1519. requestBody:
  1520. content:
  1521. application/json:
  1522. schema:
  1523. $ref: '#/components/schemas/BooleanValue'
  1524. /api/admin/config/federation/private:
  1525. post:
  1526. summary: Enable or disable private federation mode.
  1527. tags: ['Admin']
  1528. security:
  1529. - AdminBasicAuth: []
  1530. responses:
  1531. '200':
  1532. $ref: '#/components/responses/BasicResponse'
  1533. requestBody:
  1534. content:
  1535. application/json:
  1536. schema:
  1537. $ref: '#/components/schemas/BooleanValue'
  1538. /api/admin/config/federation/showengagement:
  1539. post:
  1540. summary: Enable or disable Federation activity showing in chat.
  1541. tags: ['Admin']
  1542. security:
  1543. - AdminBasicAuth: []
  1544. responses:
  1545. '200':
  1546. $ref: '#/components/responses/BasicResponse'
  1547. requestBody:
  1548. content:
  1549. application/json:
  1550. schema:
  1551. $ref: '#/components/schemas/BooleanValue'
  1552. /api/admin/config/federation/username:
  1553. post:
  1554. summary: Set the username you are seen as on the fediverse.
  1555. tags: ['Admin']
  1556. security:
  1557. - AdminBasicAuth: []
  1558. responses:
  1559. '200':
  1560. $ref: '#/components/responses/BasicResponse'
  1561. requestBody:
  1562. content:
  1563. application/json:
  1564. schema:
  1565. $ref: '#/components/schemas/ConfigValue'
  1566. /api/admin/config/federation/livemessage:
  1567. post:
  1568. summary: Set the message sent to the fediverse when this instance goes live.
  1569. tags: ['Admin']
  1570. security:
  1571. - AdminBasicAuth: []
  1572. responses:
  1573. '200':
  1574. $ref: '#/components/responses/BasicResponse'
  1575. requestBody:
  1576. content:
  1577. application/json:
  1578. schema:
  1579. $ref: '#/components/schemas/ConfigValue'
  1580. /api/admin/config/federation/blockdomains:
  1581. post:
  1582. summary: Save a collection of domains that should be ignored on the fediverse.
  1583. tags: ['Admin']
  1584. security:
  1585. - AdminBasicAuth: []
  1586. responses:
  1587. '200':
  1588. $ref: '#/components/responses/BasicResponse'
  1589. requestBody:
  1590. content:
  1591. application/json:
  1592. schema:
  1593. $ref: '#/components/schemas/ConfigValue'
  1594. example:
  1595. value:
  1596. - guns.eagles.biz
  1597. - freedom.us
  1598. /api/admin/federation/send:
  1599. post:
  1600. summary: Manually send a message to the fediverse from this instance.
  1601. tags: ['Admin']
  1602. security:
  1603. - AdminBasicAuth: []
  1604. responses:
  1605. '200':
  1606. $ref: '#/components/responses/BasicResponse'
  1607. requestBody:
  1608. content:
  1609. application/json:
  1610. schema:
  1611. $ref: '#/components/schemas/ConfigValue'
  1612. example:
  1613. value: I'm still streaming, you should come visit.
  1614. /api/admin/federation/actions:
  1615. get:
  1616. summary: Get a list of accepted actions that took place on the Fediverse.
  1617. tags: ['Admin']
  1618. security:
  1619. - AdminBasicAuth: []
  1620. responses:
  1621. '200':
  1622. description: Actions previously handled.
  1623. content:
  1624. application/json:
  1625. schema:
  1626. type: array
  1627. items:
  1628. $ref: '#/components/schemas/FederatedAction'
  1629. /api/admin/emoji/upload:
  1630. post:
  1631. summary: Upload a single emoji image.
  1632. tags: ['Admin']
  1633. security:
  1634. - AdminBasicAuth: []
  1635. responses:
  1636. '200':
  1637. $ref: '#/components/responses/BasicResponse'
  1638. /api/admin/emoji/delete:
  1639. post:
  1640. summary: Delete a single emoji image.
  1641. tags: ['Admin']
  1642. security:
  1643. - AdminBasicAuth: []
  1644. responses:
  1645. '200':
  1646. $ref: '#/components/responses/BasicResponse'
  1647. requestBody:
  1648. content:
  1649. application/json:
  1650. schema:
  1651. type: object
  1652. example:
  1653. name: test.svg
  1654. /api/integrations/streamtitle:
  1655. post:
  1656. summary: Set the stream title.
  1657. description: Set the title of the currently streaming content.
  1658. tags: ['Integrations']
  1659. security:
  1660. - AccessToken: []
  1661. responses:
  1662. '200':
  1663. $ref: '#/components/responses/BasicResponse'
  1664. requestBody:
  1665. content:
  1666. application/json:
  1667. schema:
  1668. $ref: '#/components/schemas/ConfigValue'
  1669. example:
  1670. value: Streaming my favorite game, Desert Bus.
  1671. /api/integrations/chat/send:
  1672. post:
  1673. summary: Send a chat message.
  1674. description: Send a chat message on behalf of a 3rd party integration, bot or service.
  1675. tags: ['Integrations']
  1676. security:
  1677. - AccessToken: []
  1678. requestBody:
  1679. required: true
  1680. content:
  1681. application/json:
  1682. schema:
  1683. type: object
  1684. properties:
  1685. body:
  1686. type: string
  1687. description: The message text that will be sent as the user.
  1688. responses:
  1689. '200':
  1690. description: Message was sent.
  1691. content:
  1692. application/json:
  1693. schema:
  1694. type: object
  1695. properties:
  1696. success:
  1697. type: boolean
  1698. example: true
  1699. message:
  1700. type: string
  1701. example: sent
  1702. /api/integrations/chat/system:
  1703. post:
  1704. summary: Send a system chat message.
  1705. description: Send a chat message on behalf of the system/server.
  1706. tags: ['Integrations']
  1707. security:
  1708. - AccessToken: []
  1709. requestBody:
  1710. required: true
  1711. content:
  1712. application/json:
  1713. schema:
  1714. type: object
  1715. properties:
  1716. body:
  1717. type: string
  1718. description: The message text that will be sent as the system user.
  1719. responses:
  1720. '200':
  1721. description: Message was sent.
  1722. content:
  1723. application/json:
  1724. schema:
  1725. type: object
  1726. properties:
  1727. success:
  1728. type: boolean
  1729. example: true
  1730. message:
  1731. type: string
  1732. example: sent
  1733. /api/integrations/chat/action:
  1734. post:
  1735. summary: Send a chat action.
  1736. description: Send an action that took place to the chat.
  1737. tags: ['Integrations']
  1738. security:
  1739. - AccessToken: []
  1740. requestBody:
  1741. required: true
  1742. content:
  1743. application/json:
  1744. schema:
  1745. type: object
  1746. required:
  1747. - 'body'
  1748. properties:
  1749. body:
  1750. type: string
  1751. description: The message text that will be sent as the system user.
  1752. example: 'rolled a 15 on the dice'
  1753. author:
  1754. type: string
  1755. description: An optional user name that performed the action.
  1756. example: 'JohnSmith'
  1757. responses:
  1758. '200':
  1759. description: Message was sent.
  1760. content:
  1761. application/json:
  1762. schema:
  1763. type: object
  1764. properties:
  1765. success:
  1766. type: boolean
  1767. example: true
  1768. message:
  1769. type: string
  1770. example: sent
  1771. /api/integrations/chat/system/client/{clientId}:
  1772. post:
  1773. summary: Send system chat message to a client, identified by its ClientId
  1774. description: Send a chat message on behalf of the system/server to a single client.
  1775. tags: ['Integrations']
  1776. security:
  1777. - AccessToken: []
  1778. parameters:
  1779. - name: clientId
  1780. in: path
  1781. description: Client ID (a unique numeric Id, identifying the client connection)
  1782. required: true
  1783. schema:
  1784. type: integer
  1785. format: int64
  1786. requestBody:
  1787. required: true
  1788. content:
  1789. application/json:
  1790. schema:
  1791. type: object
  1792. required:
  1793. - 'body'
  1794. properties:
  1795. body:
  1796. type: string
  1797. description: The message text that will be sent to the client.
  1798. example: 'What a beautiful day. I love it'
  1799. responses:
  1800. '200':
  1801. description: Message was sent.
  1802. content:
  1803. application/json:
  1804. schema:
  1805. type: object
  1806. properties:
  1807. success:
  1808. type: boolean
  1809. example: true
  1810. messages:
  1811. type: string
  1812. example: sent
  1813. '500':
  1814. description: Message was not sent to the client
  1815. content:
  1816. application/json:
  1817. schema:
  1818. type: object
  1819. properties:
  1820. error:
  1821. type: string
  1822. description: message explaining what went wrong sending the message to the client
  1823. /api/admin/accesstokens/create:
  1824. post:
  1825. summary: Create an access token.
  1826. description: Create a single access token that has access to the access scopes provided.
  1827. tags: ['Integrations']
  1828. security:
  1829. - AdminBasicAuth: []
  1830. requestBody:
  1831. required: true
  1832. content:
  1833. application/json:
  1834. schema:
  1835. type: object
  1836. properties:
  1837. name:
  1838. type: string
  1839. description: The human-readable name to give this access token.
  1840. scopes:
  1841. type: array
  1842. items:
  1843. type: string
  1844. responses:
  1845. '200':
  1846. description: Token was created.
  1847. content:
  1848. application/json:
  1849. schema:
  1850. type: object
  1851. properties:
  1852. name:
  1853. type: string
  1854. example: your new token
  1855. token:
  1856. type: string
  1857. example: 'zG2xO-mHTFnelCp5xaIkYEFWcPhoOswOSRmFC1BkI='
  1858. /api/admin/accesstokens/delete:
  1859. post:
  1860. summary: Delete an access token.
  1861. description: Delete a single access token.
  1862. tags: ['Integrations']
  1863. security:
  1864. - AdminBasicAuth: []
  1865. requestBody:
  1866. required: true
  1867. content:
  1868. application/json:
  1869. schema:
  1870. type: object
  1871. properties:
  1872. token:
  1873. type: string
  1874. description: The token to delete
  1875. responses:
  1876. '200':
  1877. description: Token was deleted.
  1878. content:
  1879. application/json:
  1880. schema:
  1881. type: object
  1882. properties:
  1883. success:
  1884. type: boolean
  1885. example: true
  1886. message:
  1887. type: string
  1888. example: deleted token
  1889. /api/admin/accesstokens:
  1890. get:
  1891. summary: Return all access tokens.
  1892. description: Return all of the available access tokens.
  1893. tags: ['Integrations']
  1894. security:
  1895. - AdminBasicAuth: []
  1896. responses:
  1897. '200':
  1898. description: Tokens are returned
  1899. content:
  1900. application/json:
  1901. schema:
  1902. type: array
  1903. items:
  1904. type: string
  1905. /api/admin/webhooks:
  1906. get:
  1907. summary: Return all webhooks.
  1908. description: Return all of the configured webhooks for external events.
  1909. tags: ['Admin']
  1910. security:
  1911. - AdminBasicAuth: []
  1912. responses:
  1913. '200':
  1914. description: Webhooks are returned
  1915. content:
  1916. application/json:
  1917. schema:
  1918. $ref: '#/components/schemas/Webhook'
  1919. /api/admin/config/externalactions:
  1920. post:
  1921. summary: Set external action URLs.
  1922. description: Set a collection of external action URLs that are displayed in the UI.
  1923. tags: ['Admin', 'Integrations']
  1924. security:
  1925. - AdminBasicAuth: []
  1926. requestBody:
  1927. required: true
  1928. content:
  1929. application/json:
  1930. schema:
  1931. type: array
  1932. items:
  1933. type: object
  1934. properties:
  1935. url:
  1936. type: string
  1937. description: URL of the external action content.
  1938. title:
  1939. type: string
  1940. description: The title to put on the external action button.
  1941. description:
  1942. type: string
  1943. description: Optional additional description to display in the UI.
  1944. icon:
  1945. type: string
  1946. description: The URL to an image to place on the external action button.
  1947. color:
  1948. type: string
  1949. description: Optional color to use for drawing the action button.
  1950. openExternally:
  1951. type: boolean
  1952. description: If set this action will open in a new browser tab instead of an internal modal.
  1953. responses:
  1954. '200':
  1955. description: Actions have been updated.
  1956. /api/admin/webhooks/delete:
  1957. post:
  1958. summary: Delete a single webhook.
  1959. description: Delete a single webhook by its ID.
  1960. tags: ['Admin']
  1961. security:
  1962. - AdminBasicAuth: []
  1963. requestBody:
  1964. required: true
  1965. content:
  1966. application/json:
  1967. schema:
  1968. type: object
  1969. properties:
  1970. id:
  1971. type: string
  1972. description: The webhook id to delete
  1973. responses:
  1974. '200':
  1975. description: Webhook is deleted
  1976. /api/admin/webhooks/create:
  1977. post:
  1978. summary: Create a webhook.
  1979. description: Create a single webhook that acts on the requested events.
  1980. tags: ['Admin']
  1981. security:
  1982. - AdminBasicAuth: []
  1983. requestBody:
  1984. required: true
  1985. content:
  1986. application/json:
  1987. schema:
  1988. type: object
  1989. properties:
  1990. url:
  1991. type: string
  1992. description: The url to post the events to.
  1993. events:
  1994. description: The events to be notified about.
  1995. type: array
  1996. items:
  1997. type: string
  1998. responses:
  1999. '200':
  2000. description: Token was created.
  2001. content:
  2002. application/json:
  2003. schema:
  2004. type: object
  2005. properties:
  2006. name:
  2007. type: string
  2008. example: your new token
  2009. token:
  2010. type: string
  2011. example: 'zG2xO-mHTFnelCp5xaIkYEFWcPhoOswOSRmFC1BkI='
  2012. /api/integrations/clients:
  2013. get:
  2014. summary: Return a list of currently connected clients
  2015. description: Return a list of currently connected clients with optional geo details.
  2016. tags: ['Integrations']
  2017. security:
  2018. - AccessToken: []
  2019. responses:
  2020. '200':
  2021. $ref: '#/components/responses/ClientsResponse'
  2022. /api/integrations/chat:
  2023. get:
  2024. summary: Historical Chat Messages
  2025. description: Used to get the backlog of chat messages.
  2026. tags: ['Integrations']
  2027. security:
  2028. - AccessToken: []
  2029. responses:
  2030. '200':
  2031. description: ''
  2032. content:
  2033. application/json:
  2034. schema:
  2035. type: array
  2036. items:
  2037. type: object
  2038. properties:
  2039. user:
  2040. $ref: '#/components/schemas/User'
  2041. body:
  2042. type: string
  2043. description: Escaped HTML of the chat message content.
  2044. id:
  2045. type: string
  2046. description: Unique ID of the chat message.
  2047. visible:
  2048. type: boolean
  2049. description: 'Should chat message be visibly rendered.'
  2050. timestamp:
  2051. type: string
  2052. format: date-time
  2053. /api/integrations/chat/messagevisibility:
  2054. post:
  2055. summary: Update the visibility of chat messages.
  2056. description: Pass an array of IDs you want to change the chat visibility of.
  2057. requestBody:
  2058. content:
  2059. application/json:
  2060. schema:
  2061. type: object
  2062. properties:
  2063. visible:
  2064. type: boolean
  2065. description: Are these messages visible.
  2066. idArray:
  2067. type: array
  2068. items:
  2069. type: string
  2070. description: IDs of the chat messages you wish to change the visibility of.
  2071. tags: ['Integrations']
  2072. security:
  2073. - AccessToken: []
  2074. responses:
  2075. '200':
  2076. $ref: '#/components/responses/BasicResponse'
  2077. /api/admin/chat/users/setmoderator:
  2078. post:
  2079. summary: Set moderator privileges on a chat users.
  2080. description: Give a chat user ID and be able to grant or remove moderator privileges to this user.
  2081. requestBody:
  2082. content:
  2083. application/json:
  2084. schema:
  2085. type: object
  2086. properties:
  2087. userId:
  2088. type: string
  2089. description: User ID of the chat user you want to change moderation status of.
  2090. example: xJ84_48Ghj
  2091. isModerator:
  2092. type: boolean
  2093. description: The moderator status of this user.
  2094. example: true
  2095. tags: ['Admin', 'Moderation']
  2096. security:
  2097. - AdminBasicAuth: []
  2098. responses:
  2099. '200':
  2100. $ref: '#/components/responses/BasicResponse'
  2101. /api/admin/chat/users/moderators:
  2102. get:
  2103. tags: ['Admin', 'Moderation']
  2104. security:
  2105. - AdminBasicAuth: []
  2106. summary: Get a list of chat moderator users.
  2107. responses:
  2108. '200':
  2109. description: List of moderators
  2110. content:
  2111. application/json:
  2112. schema:
  2113. type: array
  2114. items:
  2115. $ref: '#/components/schemas/User'
  2116. /api/moderation/chat/user/:
  2117. get:
  2118. tags: ['Moderation']
  2119. parameters:
  2120. - name: name
  2121. in: path
  2122. description: User ID
  2123. required: true
  2124. schema:
  2125. type: string
  2126. example: USER-ID
  2127. responses:
  2128. '200':
  2129. description: User
  2130. content:
  2131. application/json:
  2132. schema:
  2133. type: object
  2134. properties:
  2135. user:
  2136. $ref: '#/components/schemas/User'
  2137. connectClients:
  2138. type: array
  2139. items:
  2140. $ref: '#/components/schemas/Client'
  2141. messages:
  2142. $ref: '#/components/schemas/ChatMessageArray'
  2143. /api/admin/followers:
  2144. get:
  2145. tags: ['Admin']
  2146. security:
  2147. - AdminBasicAuth: []
  2148. summary: Get the followers of this instance
  2149. responses:
  2150. '200':
  2151. description: Followers
  2152. content:
  2153. application/json:
  2154. schema:
  2155. type: array
  2156. items:
  2157. $ref: '#/components/schemas/Follower'
  2158. /api/admin/followers/pending:
  2159. get:
  2160. tags: ['Admin']
  2161. security:
  2162. - AdminBasicAuth: []
  2163. summary: Get a list of follow requests that are pending.
  2164. responses:
  2165. '200':
  2166. description: Followers
  2167. $ref: '#/components/schemas/FollowerArray'
  2168. /api/admin/followers/blocked:
  2169. get:
  2170. tags: ['Admin']
  2171. security:
  2172. - AdminBasicAuth: []
  2173. summary: Get a list of follow requests that have been blocked/rejected.
  2174. responses:
  2175. '200':
  2176. description: Follower requests that have been rejected or blocked.
  2177. $ref: '#/components/schemas/FollowerArray'
  2178. /api/admin/followers/approve:
  2179. post:
  2180. tags: ['Admin']
  2181. security:
  2182. - AdminBasicAuth: []
  2183. summary: Approve a pending follow request.
  2184. requestBody:
  2185. content:
  2186. application/json:
  2187. schema:
  2188. type: object
  2189. properties:
  2190. actorIRI:
  2191. type: string
  2192. description: The requestor's remote IRI used to identify the user.
  2193. responses:
  2194. '200':
  2195. description: The request has been successfully approved.
  2196. $ref: '#/components/responses/BasicResponse'
  2197. /api/admin/config/chat/suggestedusernames:
  2198. post:
  2199. tags: ['Admin']
  2200. security:
  2201. - AdminBasicAuth: []
  2202. summary: A list of names to select from randomly for new chat users.
  2203. requestBody:
  2204. content:
  2205. application/json:
  2206. schema:
  2207. type: object
  2208. properties:
  2209. value:
  2210. type: array
  2211. items:
  2212. type: string
  2213. responses:
  2214. '200':
  2215. description: The list of default names have been updated.
  2216. $ref: '#/components/responses/BasicResponse'
  2217. /api/admin/prometheus:
  2218. get:
  2219. tags: ['Admin']
  2220. security:
  2221. - AdminBasicAuth: []
  2222. summary: Return Prometheus-compatible scraper metrics.
  2223. responses:
  2224. '200':
  2225. description: Prometheus-compatible scraper values.