From 45598a99fbb24ef3a4209beaaa8252f6cc649d06 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 22 Dec 2023 00:22:30 +0000 Subject: [PATCH] Github Pages build from Action 1a37cfd859eb612f57504b86c1333dac57e4f74f --- assets/images/openapi/global_behaviors.png | Bin 0 -> 32159 bytes assets/images/openapi/resumeable_ota.png | Bin 0 -> 95740 bytes assets/images/openapi/simple_ota.png | Bin 0 -> 28726 bytes assets/images/openapi/webcam.png | Bin 0 -> 32280 bytes assets/js/lunr/lunr-store.js | 436 +- ble_2_0.html | 695 +- contribution.html | 34 +- faq.html | 4 +- feed.xml | 2 +- http-legacy.html | 6856 +++++ http.html | 24803 ++++++++++++++++++- http_2_0.html | 6866 +---- index.html | 8 +- protos.html | 3703 +-- protos/open_gopro.html | 3266 +++ protos/open_gopro.md | 839 + redirects.json | 2 +- sitemap.xml | 64 +- specs/.enums.yml | 391 + specs/.openapi.yml | 3986 +++ specs/capabilities.json | 3716 +++ specs/capabilities.xlsx | 4 +- swagger.html | 301 + tutorials/ble-queries.html | 94 +- tutorials/camera-media-list.html | 60 +- tutorials/connect-ble.html | 62 +- tutorials/connect-wifi.html | 64 +- tutorials/index.html | 4 +- tutorials/parse-ble-responses.html | 162 +- tutorials/send-ble-commands.html | 98 +- tutorials/send-wifi-commands.html | 110 +- 31 files changed, 45333 insertions(+), 11297 deletions(-) create mode 100644 assets/images/openapi/global_behaviors.png create mode 100644 assets/images/openapi/resumeable_ota.png create mode 100644 assets/images/openapi/simple_ota.png create mode 100644 assets/images/openapi/webcam.png create mode 100644 http-legacy.html create mode 100644 protos/open_gopro.html create mode 100644 protos/open_gopro.md create mode 100644 specs/.enums.yml create mode 100644 specs/.openapi.yml create mode 100644 swagger.html diff --git a/assets/images/openapi/global_behaviors.png b/assets/images/openapi/global_behaviors.png new file mode 100644 index 0000000000000000000000000000000000000000..746ff999e5d56c4e623ceb033972e0ffc9891148 GIT binary patch literal 32159 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 literal 0 HcmV?d00001 diff --git a/assets/images/openapi/resumeable_ota.png b/assets/images/openapi/resumeable_ota.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4ea644fad0b285b363e86c33174997dcd23ca5 GIT binary patch literal 95740 zcmc$`bySt@`YpVWQbG($K)M?#>F(~1MK==CrIgYg($bPr(kYEJ64KpBH+=Wfckkam z`<(HO?~iYc!+6KL*9gEdy)f z*FMMKb@@~I7-cB#rBsq^>m>zyBbBlt$9DbVIn5#^j#O?7B;2#+A7oG@Fg>Z)!+gjb$B=m$^iXBPUbG-7(H!qLi;UxZUzDK5- z%HXcpx#*c=$xpnFOWWP_Z#XwO`tLcP<4l^_mVOOwwt22wVsH^)JSW|2#Q8yp+IVjH zy9Sn#&*eM@r%neF9yYY>TLX&UQR>+@De(dF@lZ0~QEy~2x(27`l(A(kryZoy4< z2Wwg96o->Tz)V_w#MtRAK+-B8GOVEzZm8F5nh_aP> zxhVg`;^+G}x~Ne4vRd_5PQEnq{6k-4nAJE2;u)A)+$Zi@83JU<7%zCq$P$!oTvWr= z-eYZ(#YtU%NL8w1jM64b`o84%_yl_)a1|%MvV}$y-GCPY@q=cWD21sroa@6q9mpm zeda+tt|*N9sEK03lh3%zv}To@Ys19p?A~*pYG{||Aa0JY;do(gx;XX`IERqdnb#j5 z!~Wst1s@1InUJ0T3$K3uize$UkpkGP0~Q@)4v55I-3>)HSyhVcS*U`}xube9_CMFioWRT9lVLPJ= znx9$u>{5ypNyz81S3RkDSYBTKiQPJZTIv00X=!PZMwuCl()938OXq z7F+w7T4WP1KojUFC?1EMIGnaK-zx&FuyBykaDUHx9=LmYCemv;wg)`YDAnDXt*dNk z;9-zYeH|_K?D}ladbXB@eQ$YL_+^o9-BE#3wj`Wn(bb|qMghl{ka`xo+1L8&78=HS z2$Txx1ARWH6B+|fTcZ@CFIFEteAv^|6NO|QwnjrkBNl?0RlJez8F4rIRvAn^9*7Tb%qSHmR@Lonm+!!XhG;!=|C8 zeQ}RaQM2J<81`rDViCJLJC%McEiJK0szCa0hkWnINhACcQMKe-TQB{iJ zrD(mevZ9?B7#00hV@vbRd24j^OTotZK-6$nC->WJNhhs_nH|zrag}ve2eRO4w?HLceF4q!`YLbTp?q}n?JNz^0%<89JvRkQYYkz`uw5@AyU_f?@RF9~# z)A#;*f&QXB5Y@irmLoink&%(Uzt?L;R9o#}zG<4&@&VPc%_B=jYYk65grs)2gQoKw z`DcQ~9|BSQ1MrS3uURV1hg@DMIei{oQz>%Cyl?I-eFJzOetLOsP86)nE24dp}F? z-KT8)Ddj#%7Ts=UM^bwquglGc3>Q#@qT_Rz5Y|&i#>f`MA)$7B2?EoC1IMwpT(^-P z%k6X>w|akfaG$i$9hRR@rL#H|gD^WcNAnFVlno0XUs@*y5r3-t)aRK#D>}5j9~LpT zE`KMHB>f?TnZCVtw8B(|qkx=>Dy8Be_BmT^g`Y$uA%K#706TH>;7v0#%Hx*H^%VJa zROgz_y*;^5y?W=YlNbt_0CmS|$+x3Mlcjnzx4)MT$Zwm7JlR#_Jx#v75wVta(#m z+OG+LP3c*jXwTmXC7)_S_woN8*AJUiK`7)mr_IBq4tFmv-s9iVK|fBNTwF>4mWAW7 zPu;YE(_2~LY$?C8Upd6zpU3j^i&|*BQJF_frBrhM@VR)xEZ{7$B zLQtcSP+9p}uJ?I5zp(uj^9vgNS)x<9tZHjwl5=CL7V)_~lb?AbozJt@>F(xopx2D! z;rGtYuewx~J;oocCcZ=y8^R4_*Hkoi=BImvIBEr_Re0t$z4*92Q8Y%ng*Nk1Nn!A$ z$|MvHf~$xNxk1M_%Q^4TskT}(A(WoZ-JWZ34SxI*kC0Fvr;V+3yj0Kg_hQ@D)>fPt zZ9q6To83s}M6OKYSiVA~H1$ZP5In6g*;oh`9c=d9cBj6IhvQ)}>GP74n_T=}BJw_Y z3Wn2ie|NoWJJH(O%G7-E-n6%9R1=3QIXSt~?8g^_mgdAnoNEJX>bD_075?{6Zbj(;VLDy zF_b1_E^c`gmEqV4*)M!&`P;v^2AE{g#jFgz+q%``)e+Cx_ z*FcMAv^fmLz7s$T!9;}zH)lo}+6Ow^-2}Gz2lrD18e)n>8~te*^BEY{2R_fUXg|e< zSRtRjT->j?u;x)P5Hp!S#KobC1fivH?CETMS2%8&x=Of-qr-;1FPQb&5EE%-bHw;L zr7R(rqmA>4&i}Fol7Vf>%+U9nus#Vwk-)wHKR=QGKfZR?pcs#Q7JE*gDH8nnv&^F} zayGEfL+ZcRpmYdRE)pVvUlujN9s@tESO2$PF&o=!JLVY8Wi@D=kE8C)5c&fj~|0>tuvUbWxNLv zl(+{fxPUYO$SzzY$GAkKg0y0TxGT=DilfZq%Wn(-K7f_~b@$hF&&!`iPM42G1UtsfW6VikwE-u~`MIu7T z??r7UnW-C+CCLI0G30}ta*obYln%!&!;eqkAgjm#6#V4A7Pa?GtV9wJzk!QMXOY|mihPAt^N!O`(*DL8kcXp&yP zQPgDBDMwYkct4;J@v|z>TlvHuaA6kUve>F&_ z_{QbruApXXw=ZUII}}k)SDQw3NdH`62mLRO6RSa5}k9Yy@6ylcM80J8iMKs zesw=K<0jK>@=%k6hoBIM1qz+Dqk!5c<{J43KgQBbzW3&%2i?|Lh8zAOV(mdL2r*VpIq z`Hh`n^<1rk$N&VgO2{7g)wF-!&rk5KX1lD#?sn1t-R@q@Ttg%lgLaid#<}b6Yi9Go z$gC`Aof_`O04txj_bsKu-N9fQ@;AFVPVcLG{ws@ewlIy)BdN3C>xw^W#lD1V=6Lvp7 zG0$1)C90hR{tb=} zugA&e@sPkmj@0vnYUeHGK51#`dK1cqr{M7V!B8d6izZC3!DS?>>`=%>EYM+N@Fgeb zx0gIFzsoaxu6h?1475$g^5kqB0DuB@0F>~umYehgKefM~1{mmjcS%LTOI}-lclzlX z5M{Tiwf@9h_MH6uV>Z}a!ht<$sB)Ccd~_BUuoYwbt0v9u+1ceY%cspfs()r1;a_)r zNCZ%1+Mn=V#WQaMG^MMj=X-P5P1R?ToyA;ZHz&QdGg&5}1c5|R{XtTS7L=8X!xbSR zp&Q!?@9Q%#mF6M#Mbfa1RoBvT-{^ikn9Aj}{QYAfDozA0i?DtG)2l#-vt2Fep){WJ zzIZxdwM23Lt1W+G=;0vGK|o+&U2SdD%;s#}@qCk~R>G%tVzVEgu%13uYIJkJz=*7W zyEB-~DghchN+Hdbh-6gzq8d#qmioJf7IFzAc!ny>^6-X=LFo8oMER(NX#yFrGdT~Y ztTpp{m;7t5i&U>F#;_WTk&4>d*AD1#5JVI(RY(+MWGnqlRAGcKd922#gl!GHo;KM2 z;&3gojSuPgj2igvd>Zmb^^G&Uq2`~-LXhBu z1R=skD)L_!#c)vIo!b6&vvbxTdbFbXh`0rxfbxxaNiyg}U!WyB21 zT7N%sFb^ClzwpbO`~50|n*!3>i3YcJ=7jm=OcliB$_XdceoLl|_$FWj$v_z|q#2VfA8 zf8Xn_j=MftmYOG*LTR@8Xy@lT?y7qVy-p21FK?q{G^wf=@LG&qpu|Hvc5JKHcqxn; zQ|3-W&`kttG*7TaV`5@}emgxGQ^289ADEo{W;vEer(V2RHzSefQku$d#$hu>Y-T}P zCH!bTdi|9JR$l_cbsI7fAk#`cxy3-9fUOnrf|Zh;J$}t`-s@Nn`)B=I>%t72#BA)$ z+GzHkUmPT0*Gl~0yWXu-y_x!I40_{d%Oc|=kRZWLe&n6Dkr8ej^=m=IZsi#1p9!#n z;c_;BnmDyQ*<@g4v007=j1CSC0&-&r_or*sPqab67R@_COPhNDE_ zx<%H)BcTyTMn(=@9&e0QL=L=zNB&u6&?5Tr89>z=;0tP!_s6u~00NiGY;S)+Di-4A z?#^y8yqIX<6O9e+=90PJF}VNyDHMlE|Ep0a*kP5-aF&H^Sb=R$)1P7n6$f(D_IGw< z(g8ZMV6a$@k{=-;An@LvjLEM*M;Kauc)Gfo*g={rc{^%*G$KI++`vaVI*S?F1CnX? zcjqnmoOZIEm-|5aa(w*q%#2znRG3dSU~d7B-AXYO2!Tf^D5Miu&!0Q3^MiZ6}?<>pnU? zaJbTK`PF4_CJqZ9KP9g&9#dy%;_PxMn5ZB&Jv|*$wtEpk;V8X@63X$0W&lw>o~NjB z{>DSFNfrgr3^i6an79$6G6s2OoqjJ0VK>@LS5)ni#Ukx;E_ku>^3L{peOozN>$hCr z@l5D1Thu~7UjLD8+@SN#uF2!{^K)**+Pb>0PS~M|>DZxIbl5Ln>U~kAksf;y?kW;e zrTVGQt;;V35(3a^pahK4eGsv%J41*TksJM!2jS|^rD8z(A$$bmQS%-K#XtUq2f$&aj)p*2TpI+mDj(A(F7w zNapwEE_(OHdn3*D6Nhb|yaXNt?HyrNXt`TWUDf%A8F}-%8RkH^-LL{CN$3Ypq$%99 zu|zsFmuJxtq|T-tF8E`o^gl{3w(veMFd8(cB36oBF5%$dNaR1F70XA%KE6F)Ks}_t z-ETNh{!|*9Iv`Q4h#{g)D`(0ZD||YT#-s7oM*HkCFb-X3m982XH4Hj6}w&FH`u^$3L(~-ZW1ip$%50i3DlhTbgxY|qm z0;k&M@O;5np&wh{nJ-aq?0LB)dSF&9wzHn(792d1WaR~I!L3ceIxetU9A9DBumz3a zcKqz`Z6tC>3pS;3p^dR~6$s zGYcMit%`uuDnz$HE1i$Ixg{G`*USvr&bxx#-c zNHcpU_w*DIGw4?7dTT7cYAp7g8F1C_kG}wj$}=TOj-`~7W?fh|3w1_4{0&I7x?bw!nsxi4nZIFG88hc>9H6&gTz{N0K$-=@SzrGPa@kPz^ zhb-WTQ_yEGU;Z#+t9d3P1KW&HmFx=!gb49aOKE)3hKDkhZhL&6YsT*FM4nfV(U;SF zZf;eHc`tl7W=@4uA0{a!1toMb%L=twhayfe-eFQ@eyvMzek$0#F_JBz^>nLHF@4=! z(2_3|fP~7=6#M30?5%-Ka`yz15{ZbY{talkHRg6!Mg~!6v~baz^??`R9*!r^56#^8 z0EC<#9nmW1JZyPvENN|MSzW?FY_Gj9)!%HC9m}L+Vh&xx({^AgA9`I#gT}!em7aa# zdC)|~&@&oh-NyLj`uu?Dhf#_3jm>DBkEIPBayW9%$GX_>YZFBpm!!cHc~cbOF4N=| zmoF1_*=;Y+CIty8PkWpY^Uu<6*Hi2*K%fXYSqTdd&-LCm;creQ-&QxKlNt-twI%wg zxG|Vk7u-u6jy)FVgE1qPWBKn%;-#Q@BI^AvIsHt+Hg998BY2wN17P20nh8cGYDLwu zb|bJw<=1=R$ZZ3IXYmA5*m4bK08`dn0|H4EEX!QF=ROx6S)F=9yOqjrjCcc)@6FfP z%Pf4ozRDCGdO8g`o#tEis9-6+Bi**bCi6%lfk6*3n_o5I@?rFH@^||2UFtD;FY0Fa z8|_cGCp-b}Z4$racDDFr26kNw@*e4E)fu7EuPu5F{DG74KZHzJ4*CR$pPlK-4HX5x zwdLjIl@$?xQ(awxAyZ^r&%}U;`VSu-)?;tfp<>f#`lrrmIQQ}UmKe08J3}VKk#8ae z?x^`hCq~;}C@x-|?l@bj(Pc5)9)%+mfMR9STk#0JBdvJ4(VHmD<{( zQ>Zg2#sCtW?s_S{Z%Q^%VDTGwp(TjnY+BY?a{pM~D|^Q)yB)oOGDvVvf11JT zxMSIr6D1CR~jU6wV4grSVi|S2#xEULw+JL8EKCLv!25^IHq_Ou|0g&{P2?YYKaUG z*l%}!nz|l{h=_QeZoj=cv1EDp8vAm3OA(h_25l_o>T^MYvcS3cj0$NG zq|*7fhA{JZU`YK(nEby8kiUXtQy6NWHn1i9GHN1rn@$S+^W81s*Og@PCDYVRHLi zzf>0Eu8ZqyPd7K4`9`e)Ckr6*B&@yf@4Q($erq0XB0(@2!6>R0%zssyD*(?E{=ox~ z(dv(*8Ef&q2PxZfuZitx6?vzrCk2fbLCt$}PK70ULIyvr(Q94LrISc_2 z(0dHv#{mNv-IoarI#-vMkJ=oMW<}F^1|;R=-nzI%L`LG=V1FKYBIA~Hcz9?z@nz!U zb1F9oS5sr7m$$d|&tfi%VdCvBf%s3+W%NZMnel7v&qsrBfmTl#M{o>38$pM>F+3?{ z-c+6%8*}Q5qj~Y-MU@*6+<3x1x2GB`jQE$-rjNK1`d9=9_kMk|90&!lyE6mwkzb(w z2@I6EUjpD#-b+bN6e#&4c@l~MWd!8kCGr z*ytD-V42xhuav2efEy4H5MVb~kBE#6XmO0j=h_MasNSkKx-C9>zx%tHp;0=OX6V(9o5Li) zo&;(CBj%u)e~lpw=>Fz-=>&SI^!`MqF{G2DBb0{^Hy2t2#-11N0^fpGwLlS!-I4+i z{gDP?q90cAf8sHk{@C8G*)W|pxcpHXZ+g3ozI$CNGTk)N5{u9l9G#vTAzWN zU$soGVA&~fcVYZBDO!=I9uD$263F@)U1n~FvED1-p&13CagU54R!O}Q26lDeGgW^! zSzG~3WM-NptK@r-f^-&2jf?w^y+y0Vo#Q~AX+D$=PDySBfGj?*i*lLt<%6;(f6r|3jsmq9SXMn6{VnQx7Q30jOXXbNbG6ikQ=JwFhK^l|tj>6%_KVz&7nC z3p8Xunhv1he3?KRJ_|Ot^EIeGh-FKDLe`q+Aeq70+1(u*EQg{*pSzhj-_he>8u(VJ zSTP!i?!e$+g>>FzhNJiNBnA!;2s2*2IxgigZy3;I!Y7~d`LG$Zo!j0c?%uYB<8xLx zywBL2<_r7&UDUD=9{F)pY)i-ysB?LkJN{*^(mc|6QA$oOSFE0YoqeMRtlUK2*`p4O3 zVk!gDX0Fja7F$JG83}{15$I$mQ<1tLKM@ zFIbEa^u|YxfbUrONL*hTkXnbm2WJQ4eZ648ZYyN9FY>E73S-z=}kntiUe@`KS{9Q|GriS?jaKWDxdK$~G_w;CsY*>O)4)YW$+ zCKlMX@SFq)-p-1gdzDZl;48ZifZ_^-z_xjcEc#K>qw_G}PChJ%P(DL&YV+&Jqzpns z{f7}C&6~qNhQ|zo{3Qb7BEf_U2?qCc>IT`+e+h@=(-5gi5Q*@AD~7KHwFM`5{N7{&SH$Nq6-{Z0WS zP*2qvg5Rbh-tz&tL;L`1ta%8Q58I=j0{E`zhxs_r0q{@YnH@7}YvF)qZ6qRKh@v#o z(EcGZ(if!kzNi*f7va*0u(Qol-dSWOB zY~J#hN1%DbC!nu6PHj_ip+LUmDP@a;sw@S*(>S@cz(=6FI`5Oyf&UDgyx7$|F_5YC zM?#<45Z)zblKndd^x?qvDNsZei-{OGMFQhQs~E7mFA2MR?~XH2uxR7Jeh9w;%>t=h zGl!r6yJzZg6E)f(Aj@Z?GE9L%K`}klz=jotWwjM?!K_3LA;!*+5~smM!wHgz`8dNv z&|v;<*R>7!$SaDNHFqj<=24GWk&s3t_Pq_p`7H; z8veKM4X^?NLH@fc|9fs;;$L2OK(=Rl027qCzXU{)jiHRhy8uBFVesxjC7_27CC)D% ziB!r`L77o)H}i>r{fa=E9rgEXL9xRP?yX^|u1r7=bgPR^QR0f6H6kZ4D}N2wAT*8qj5C6 zyj~zX9tUbaK>7pJ12KysAt5y%_0iF3l&;DhqkIHF9h<>~!XQnj;m`RA`AFRbsI}9b z$^23ePfrO^QQ(%#hPlOn`X<17E-u_+ZCovOU+#}kcDuPhw;D+2YXI@6N*|<5rfY0d zlJo>M=Y6>@7hZEAVLk+tp_}~M|6LEYE~a{5){@eROp&yVOz6jtAH%{{+mIg( zfA{SM89rL+1M}y0;=7BLNMJwzUW_J_0Ms$@8891&Sk2JRWujfh1^@H`gcRWNZSU{v zmuOcPs^nKlYudv2S$HDwV*&d~&{diqCxL4pWc~vQojKnxy1=VSwL`pc6vT}WABs;jJ zMIcbA+I4?+sf5)B0Od0Z>7)uCR{QxzaNaPP^i#E!=!&K&pnEwy8YSs~;|B!>DrHFB z$R#lgeZ8NdKKq_C`nf9j2-5j;4XRLMkFg3bKEFFO*KfJEKhHxtM2ngC(|6tXVzahU z(nq$03-w2gzSgr?WR;sXK@&{uumWbl>ad?bSIL)uNl5VGMV;Lo_f?bfKyNHnok2(= z>w}~8-G!D6`L*+dg+$R?cbLu|mtb<)W&v~b0*Sy& zdKu{d!adz>MS&Ez(9OR9`z?fs&Em%*r-yt7zZ@L!=rY+%qmx#0b8gR--mTG|iI#|2u5lqTV|MI@d9@mn#RdmABqj!z zmAU@-q=t;X?M=h3&tKXjV~Lgwws>*jTLpgk;9!9!r%7dZ^txBo>-22yWvdCsvh!EO z_ifDnJ=B;$N*4S$G0B(Q`j}MeaA~Q5XPnh;7(cxBI?c*b(ohRf*3;8d?~C71Vc`dz zv-NL7FG2cTx@~@b-dXPE;?UULod5Pj1-n;q=ObyO5}se7s4> z0VY8Hx$FQGLO+0qcc=LbmmRb^>d%CpC#U)`0%KAVQnSEh(@fRCDTx@ z#IyZ%nwz1Vg+=c`vB^KvRYfr2Pr>581Al8cZqqZ2p{42P#H61o>O(nDfLj4jB zbrK^?Wg)DfsCaYJLYjKMoGOqID+@ zv6B&2Q6fq8^z;h35>irAW$W_g(~Lr~6V!HM6jKj$t371b)iOhAx4i&aobu%4x--iu zI0d^#-#r4ZSh%{}*TWFs(Mw0oVR37CX{}UGr_#CW2RxsL^U?YF>EYq_d{f6BPjG

2G%{hft20-T3g>na4doKeUf4^-d!{CrO~! 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

nn((N$lCUm4zN4z4%CG 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

jOK!(7AyG@iybwrs?29FtDH3Qlypcoxmbw z^7W6!YQ3!d18lrgw>x~EG>pr{a476T-vDcXU#fQ&?>met`z;1ZuCe zz+EW>lK`(qGE4h3teBI$j^S3vpt5l}SOQ^o=KZfCmsS!9mrZ<7VK2d3uk>mX`k>QW zveY7rT-5lDI~Gx84k0Weq4BtxxzcR3g3nO(Gnl7{Z>i#-))QeHM~iuB_j2auFqOMX z1m)d@b^r8E*nCK2(YnRum-P;>F{Um>Q}z^U1w?dx2E@u--No{Z%DX%(WfVK3S6*E6 zSs5-BD~y@)MC!S}ex)fPOH}tsZh_bW-xiR4mpJV(p~3ps?L|`y0Lz5Txz^HH%8ySB z{RLe1^H|>*)Wc^6l+R^;m~>ELe^tv7(<=6ps9cgO{V*KATqDflo%Svym{-^>-9Uq2 zdd@i1rk5e3ADQ$yM6|hB@70 z=VD|7gOvsZGokRFH{}WhP(ukh(q}0#I}BhPzU<-*Z~k;FzY7}3GA>B(m$kj~rau6$ zI~=LT%#(1N7tJ*vtpI3YQsBM#RP38%_>Nji5mj?rQf#^1V1ub*%Z{iWOUBD8-@ZYuP$jm7EzBI=Yzd^c z&ytA$Lenu=9(Mc8wE+hP>_t)51)f89RIBISbx%xuI%z;@U}I`iyI*(H+~VCw5Et^N z#J>v!g%boI<4No^;q3u-SOJ&g=(XszMW-@@*fddq8G4nhR4j~tYb<*=ECEsLeJg8+ z)=x-_cLgM^k#O}l>*s7gfua>2G}7>3+MOywJm*GfVe}IAZe4!z|M#mM^`` ztu3nOksLdA`ZUY#w+mX@I(fAZ@@-P4W09jvQ1I1bABC^-w`VhJ8+^;f6}0+yRz}gl(GHy0*+HDAa^{~1K+_QVr4FQvsSxM>=wh*CHU93LNp1{Y?m%I|0eRwHIb#jM}R zso}7Z6pOw&ZW*d8wEyY+TO5HvYM^lRDrzkVoQG|Gu9)ZzX(uGKh4Ih0T4G_m?3j8S z?7AB81O>$&6%aVtZ-kzYts~#Rr%66H=J)f4DU zmPGKJwC1j^wwqK#hqdhLa}}5gk(}6asDPV2fVSyZhGTj@_n`coF4M3*E=^M!8L&Y^ z7@SFlb`grzPG=4^5B5cWYivyqlvQO5@M;lrKD`7l?rZ|=vo~?v>+=y+*I+{h|ESiT zlR~P}EXXLtE_(x=Y|@pKxcNr9-lFQXnQ^GTL4j;Q@y)|4QyiCf=axi+;+l&Z|NiDh zBz~oC)2UTlLO*%8_MFsH*e&Eg1tCahKa`gVy&#CUA$~xN^BDE-PC$ekDdlQty+*Bt zF5`Xvte@{8;BGY5iM;cy&scArmCF$#_k~gP^9j~{dT{y3y$utk6ldUz;Q>&zgfpm1 z!#+%1Yaz7lUg-EMD$qooao%k7e1&Eo` zzXt{&`1>+wO_=1#aiegr>UJW`Mp)mnh9)ae3k6^FmF4CG_d_nseU2CzeuezMj|Y@e zkQ+)u0^5NP4ja_*T%`(noZ)$Ktdyi$8AGPW?v22gKC>Svgo8hs%VvZx!snZ=q4VR% zOnm1pS6plA*NKSJ0Xpo{V8t1uHe>f%6Y2=arfJSfE(c_B&j15#B zGf3dr>3JXLU~jKl@d0Q>U_agX=Do8wl;GvWazVO}RUPxb#s^IJ%yxUCv!mHac-%vY ziUq$6LFhruS35QgoJ7YbVWm(U4;#>L0E-tvtMu^ndf@NQK(TFu#{0d3 z)TCN+$aM>dk0L)nwH>*z5yL>vc&YAuG|60X!05CL%KF$I{99$fn&L{H{ z0|hR(^(*$;T|sT;P}b6333KRlQ~qBvEGC-?p9ka(X?m{5wx?tCOw$%k&j+yTdfm;X zc!wna{efAI%S0Wyg0Fe?o1c|aPuZ?JBazx`ls?~F#GK(0!|A4fh>>0aI2w7X#1%Ti zKJWff`qWY_{Hpd9xzr`(3G6mffRZ@1hjaRxIFn+@-)-6;@!o@$&Kv@Rii~KcwJe=< ztp{CVClB(ak9{K=&7vi9iII=j>@mdlN;iEZ#1)FVv$2u&clww0AY!>nE!V?72^{Vg zhY2y0y0ePR%<5cZIPGioDyl{}^Y7P!jO+qB`c!+oAy5(^X8O#M2sB+tog9(0!(G|^ zBAfXMAjJ`gVmLb>NeNqyMvK)X1N`XLjhBsai|dFxgga0*-Ou+W&lL6Zi28j#gtY;<%B zd$aL6MgLcEUmj28+P1x<*oKyfEG+X(hLCwI$~?bzk>&o#$~L$8oykJTjqF7P&E;I{Cg( zKd;4KK_$Bqf`al{ z8t#ee!8TMJ1#@g`lgzC+m^(RP+ee;0NbEZU2xD$SVj{F$foz3KXlbZ|6AB-q8P`FV z1YzVh#L8f3D-d}A(mdF)_Q1kTjomJHfC7%+?KTni%Le3dz&`*>w<aH`0y1DL59GX#I?pW_W~Ke8eKorYp_pjaNT# z@ZfTmUO78b_>(vjR3F5EN9W`)C#^Qz@?HurEYOBp7mvE?pO@%Zn1x7Kv6aYFLGJ$U zs+OFbT)b~<95a*$i{#9Y|E^5}7RHHNBH z(DPPY%}%!T5lp2aEZ!rCr)i)yR*QxjS{B5ISqll3ZCUm{Dd2KvJ3kPv2^ zYq!%|8*2i9*TnstenIJ{%5$e1SPj|tc9}RhD)~HJo9p&Ih-*!L?0@lky3(Ff7Al5M zO$-7kNlq(@meaywMQ|KMpS7$|gE0myuCvfMlt$-PP-(VO=oMgrZOJPMo9zuByFJY0 z495N>XGXrPc$0zy~9x!qr1v2wPZ*mf+aBsQ8L zLevv03_94)O#J8=!I7(*u4Y#Tx0L&Ci7{EJl%=IO!uvUZDmhRpaGP~WF!MT*;GGn@ zKMlPNl2dY%NZ(3!&!5eA92e|6rb>m}#ObWBfGb^Xuc>3;y3oT8xX8ybNMRL~lp<=w zfq?O;#5j?Ueu?+emw9Ng%!cdKtud3B9-Qa*-Q8S)g8B^G^ORe>2DxH(x);~>jhhM2 zr%yc`3dFUNPI`p7LUaK>m(%T3SPVw{xux+6Ip8m@*3`;?jOXBhJ#z8l#k+To8kAzC zTzgt%i@V7FZ#2v#UYP)fX7NCTdRbL%1X!8$n1%SWo?a$|Hjor7Ian8Plh{tS@x%-! zseb;Y;z^waU_RIjR5Q+O0&2kh}x%xEiT_xA9)kH2Xl|4515xVK zrDh8YXTV$V`!|V`{cscN`qnjef6YPGtKi2@N9dinW8DFNS3*H`l-Aphi~QccH*8 zZdQiH^RyVRzXfwiQ|BzV(h80>f^ttGQ8IUeS9re*%!o!K}C+uFO6C1>r8~-cr*y;O-DMD_pIoe`%ml zgRYvl)@1_74OF9G@JagPCbTx7UChsCBQ~$~dkKgUOyvnTNUwXLbh7_P_Ro#Q{-~+s z+F7lctq>}teHvV5D5Y6O?vbB!a&iKF=X4iY|!sX%3%CSJT z=RpJ@58{h492f*KAnZr0L1D9>XFjAvv9)WRvDDi`Mx;XJ1?$Kp$UHYkYi|OgL}B&B zu=BZ93zrKRfr3|MELK8@gM&lKv5B;sPQ(+r2?+kW3D%JG=hFSr-6xQrjekd5fnfC> z?OEMs=#m}6KL%@}_1Sr6AX~vQn4Ms9`)6GR@H5-#`}uNmxiWw_pwEpf7HL~CMA>yf zjsLnRT}t!V>4)bgCnq;o!=t~cU3zHn#Q=d=Y zqhnv`^%OGW_Ik6r_@u0dONTF%g!%`xB7)7L2^pMu|FK&j6UQ`InZafWIdz0jaWkwy zp5H&8<>84$%2sY`^B=D`MLN9bKX9!L_?7;`W#S!d4?5CAF(Ar}^uf8I8D-Un>`?gl z_&_4!lGTp;>>ND$uviM2C*sIF!L2)9D5M62yS)6*Nunl2Dkg8}kS;xKL~W(L5KSYT z1hQj3oeS%pbZMigFr6=ol@r4XCkaEMK>WLlFokB?sU#GRLAGjad>B{WV#nScRn-z( z21F&Y>+{H6{RObs-Bj2H^VSc^yaN@sU6gxU9IQLl_tc$(8?Eiba(o4=VgQ?lq-+~- z9FhGI(ULWf>OOOm75&$fhUaT+*VK_XIOV*dLm(~4Z9W$3aqde7w;g^;%-=qR^6_)K zkGU}R&{Vqbp+ZQ9bWdwlA|(Bf%EcWpT2}wiEh_~zoB(;n!PsTb*sfz=TNw;LHnwS@9o_(CfL%;D}-ZgokAthcK#B%p(6{iq@j=14!k*cr;(B zP{F32y?KO6ZASm`TI%*zoS9VrdDs1SryLA`+Wy)-Y~$Nj`SS7fmb-r5wKk3nphlbu zX*YVXB)IwRC~BFMn3`WbNG*x$IqYK#)?J6R3Xts39VFLG0qtR7Q9Th6|Gc-kN2}%1 zd7m%a`BTY0uv``#%m6Ki5Mros^`|!wj5~S9RbDz61S}L>5aInhYkc+P(rICI9)Rik z?{Puv8Q92aUMUb`cuh`A66-nIC+s-<)FuuB>Spf6beZJG6>0MipEuf#Y=?doTTd_y zzsI+?zhf#+hHDWq(Ax#N4zFPhRfv5z+stOFGX){IS)9W^H`V*x%ANK&u4B>baoFue z3S6O6z;;b1yB!1F;>g*Ir@mN+3pR>y)zf#@VQGd!)6Wc^&K z`<|bC9w@CjsHaqU@4lI3tA0%#Zy6(<@Ju&N0+++|v19L-7^_`it`K+kV}tXNu+1zE zx-u4jVXFORrf*vq(u{DX4{FJ6ezQBStI?~I%dHLwNW9fA>0{FgtWIY;K9K(MZTL#O z(33CR$3y#^ilr8<8mE;V7{b!yY2xRkNLOW!qKt@NQN!X?3Vm3C5Dg4t9K^}I!d2T} z9{ahczIg3E5Mq9fO3xE$v-0wtH#bf?NjlpMMCrdh64=t|!?+{WA>P%j;oej7u_k|1 zB|bes%bkmBxYBt8YUr6_K|cY5K3{Rw+In+rU}LspLBQ-t(U4xTzc78DBL!j8Lx4MW z8oDY68RwK&a)AwzVD_ait^a${x`Ei`3aQCK!7-=WDQ)_NXaCOQL*i<=jGkTH-`z?k z<6}ELDcG46wA_PrJzsWzHe)C`9^uIQFuo61{7t^Upu3c>jH@e>pcK71wK^T)w~C9& zlU=%)0XM5#Ys=D1S9X~D;xB!kF?B*9BAoM`hicUnb->fps>5psLaQVWu^PVw<)s_D z9eX}qC+YdZHubUB1GDI*x}ypcW|#E*(xCE^a-pw_jpDx(Z*ozmLG40ynqTKhh@!+v ziN)-7%K~;dQVu@fsL&#MD{#>8`wjr5K<}(@m%jbLkN2P(D=OBnSv4(d_E1^OqAVWr z7Cx_#sCV@$YJ_*SXmhEiH{u;IS?4nSWDLYOaA;kdYHmi6&8#;YF`3f8iZEFI$8f`V z1O@HCyARB>x}6`6H6$Zhl}=mI0#_cHygV{D;7B2$dLq`WL!`}T4VY5ZS&KP{n8!}^ z+SmRkye*FZG4uaA9i|bZIWd`gb3`+*we>}9e# zxcnQ?k?yhhCig6wu@4MS3IR-$x!FDzcZW^Fd)6yUXjJnnBi$js)4)pKynVc4D(8iJK&)vxRN2Dl0{t@D!3$c%lS#5)c15w8dGbq}sI00yr z@?V#yJ~Y)EvrE#w`}n_KkI=}0<&QHLG)BtrQU4f`G=LASn$h5^ew>(CAFA-v#BiX9 zNERyozbp6cl~zzLcR2-%7qzb42vGGXuyQYMlKL zg*%jIodCWwu|ixj@&Me|Isk)5;C%S6$Zy2@@OY7Gyfi-HX@$?|JmBJ5T~UWjZ-xsM zd@;C!4%HRh5e)Tmq#O_&dy>8xBD3b#$ErWX=fNDnL*7axL{M(n-O_4Nb$oT~J|4=N z52-7>{I6m^@)155WP+hkF0%jp4FQP}2|;ktZTQYIVA$f1+2Ysh9kL7{+(o%CA5shs zq5h-)APfLKw%$Y#G;N2R0r()~8^JME>9Sp^umZVu;DM=jX`wy zJqTl=8ZHTtcTt1@(aS>^S`UxMQShdDIA#pI3X7Cdcx7yTcIQ-_8c2ww16*T}|a zL0unhA=`C(*O=OIKh#Aj_KHp+4IHZr&<#)?AKfu~+rRQQAs$|tg@nduHg6ZZy1%p3 zJ3AFCr#T_^tps{>N_gJZXCXGU`QYYao*ywrCDT*FRV%Iya|DHkD;>=5hqh`K=ri5%+gAcYz=uw`;&PDzP zgPbvbD<>UF9<-+6kYelTf}eV*eJL33IF*^za@j!n9pH-sly3}(dpR5>NO889b|;FH z9O~oHI^&5K@cN-0_Tj)oGNzmVpG1PuC~xMn^8{Sxb^errlM$TJiC}JW8SLjjpEd*+ zwX)hvIp>aPRs(xNLHH3hR$#lJB=qLAiynJN3ee~@GGIXR3Srk26cS39`eousDg_G( zUin+5Fy?F(RIt8}*+&nIB{#wn;p%>RS*+T=upU}PjNM$4A(n=8Ju|UOrl3)qg?LUw zBdnn!5O6f54$u@W2=r^N017y%OuWf;Da_?opCEB8=FIJPP_b-Qfq`6qev`GFTI848 zEk%ES|MEa##ap^l$?<40gLnREIXO8mR0^J6c`d}v4d<_x9-7)Tu8cwnmcK>H)~FC) zrPJ>bFPuGyHXh4g_y;!Et^*6CJmB6(YVsPyn}gX$ zmpQ1#ZwyyizgH!nV*3%54p|`kS20%OqLp^#unZoHI(0WS$jT>ofpygdF4UHmxz#5U zF<2rL>cTqpX427Mk&l^%O}f#ot;*F4TF{P4*(|SK_>3>Qvn|xR$zr)N1bSOXVP=G* z!OZX;EBAPwpJ4ql2T4-T9z*j0rCUJvULn3@1014VlzbV@(R(QN0H}MjaBoeRU~fFW zvn8~^s2J2{unVnA0E{Tihu-#X2{w-R8j9FZ`4Qg)PM7zbe7itY5&`+(-4x3cFoh>l zA!T=uUdFa{x?n7Oo!WqiFP{o~gj+i3oQ{ZfjD?b|xH_1-B01FiBkSiLtg7kG9@P5w|mg8WH3p89(2! zL3@(N+Brvp(rzEwbtT9<-JRd4{3Vl< z98|nsAcw)$rN9T>iD2+<#x#Qp0#<5GsK0zCo!@nafP^+Icg1gBD#_^HvGw?z3e()*s)Ls}A z@``*CWNC!PR==3y&H!12>Eboxd7n5k5JSr%`v=10{A>R}7Jmk$uO$3rlKta%ER5u* z+j!%}hm1311F19s_khEV>-RSM52oAS_MpF4%gv(TgOG2KMx00BN1XAWzkhEle{N+6 zVQ#77U*CJH(S-`=XS9C=5A;4%z?UEn?yy33sQ0v0@NtF;VdZ4-k-TT@x|y~tk6$6c z-hFa4Ob4hM#FNnQD(u@v4f3=3^(~g_on-Cn11`y*Sa@43#c<9DG zcp))zWY5qpm>-1bMg!z5gFS;AUF5(H=bajsK%fg$e>Id|!K6QaT=(g6xwi1YW}#V% zB#QJ1_U;Z0(ek_G2hb^k4qCSZq63Bp?$fP0KoT1;4>IjcqS7{#8hus)LLP}kiD54q zN&ih3Xng=&D|J>z1_m=&%z@ew-ggH)Tfct+gw__8FOVO_%B&B9#A%??tcgi*kpI9vismcqFmf zJ|HZ9A?(T4dPY~|rql?Z5(y=0-QDfQ??*k#nvL z?EtSPg?~lDefG3@-7Z1^EHjs@o+y+eO(z#Ht7(;35Y4i=SRK=S9mHb3c04j(-%|CJ zpPIaUbmB&iLIH(`Njz>_r}2pRpytqwkthtRS=T6yt-HCCF%so}D7t6k?x{z2 zrjEy)Aew4ShRP-JP)Vj2mwX0GgrkUilba?k#+_oL@8M9U22l&$64<5EG_tD|#kx`{ z0(|RxG-*#&6e~H^*T=svhjspW`l?Th$VhzxyP9I^zQPNVmlxyr52X8;q}qLE4BmAx zTL?a0SS&=rjTFv`S9KJ&-;HjM(sm-Rz|9H5bmsY(TQ`yx9MmKLsRZaYArtB@_Cuwn zQj%p{>T}j0Z-X&7?>+GXnWWmU06;t?V3sKgVB$sZOb?yBWpIQ7{qQxNKW2i~hiti% zmqw2BB>QZPc)vdG!N+A>&X!W>g>gCt$PDvZ0#>6~xpF)UL|JiO z1CClqoO7i}lb-)6aK>Ip*!Qr(h|k|v8k&#fummRQ2Loga7mYf_w`ld&+_@*eEsps- z>|yL~JeOOS?YiakoAM*{!wVa`v5X<{19YXhT^Q0%tpDU{vkA8Q(Wu=$1K| z(zOvza_aO6Mjc_WEjyCZoYBrJq=mmmMs>!Xg(`PJP^6{h>U5&#T{Yvv@}cI7;dfRh zRNe6lbct%(lyumf-JaVsJZCAgX^~L>u2nI_!s*OWR8eFzK9Y<~SnQ{7DJ$JHMI4Tv zqC;!O^>+8`JLMP1j*bQHJbgr=KWkk0?|nhHW)Dfr_{nH<@CYnjU#m7Rq#6~s#8nxOxz4WL(yc8gEx7c%(5k# zCebPAMwdiCI)wiO5~5**j(RjAEVZA?Z}e>Jy+hW!`LbdIu0pv&4X@gD?(RZAS3IW{ zLv~oU1^BbYZlnv_qFcI;IRa%EoM4ggk`wnpM#}i>;#Q~B(q{fD4Z&sX84JB&QSJn> z*Tjc6b;tz8HJ*&?{&$oyjHSc$uHwLxw0K=LC=zQFuU9dJEgb1}5_Ogw))QX-(carq zMT~Y_|KKwpt(W*xGQ(;6^i>hHapen&Jv7X+>LSmm+wNZDDWmvnW|5Y*)pNJ*AIVOr zqQ&KH9p9;F0;(t!M)eedhnDo=sjjicvvIYBd zxvy7)3OG4?HQtWi^C`C|pz!A$fjil{KkJ21$Jn!nz57u9$$PM!U+Oe2onGnDK63nX z1yqfQdw+$>u`u)2AMbsl14h6x2|(r0tdzwz^56OqDSqKKY6hCk0V|=F{mEU;lE#N# zk)}PMCS}Mmg`KQEV@+UceVM~BM?#i>)miY$Q91v8q#P?O@sw5Z-KNXT z^*sI8`xj0^$2DHvyT{Q)Q#u-kV#hXyR1?0Mi*qboo5i@f?cZFJqjp? z&5h(_yOz;4v2KWz^TZZjIjgjclx|1<|hzY-6i@+ zWJ$xdWVi0<`Rcj*lU^A0sRB^{o0WOnAmmnoYky8Ne`gK+&0P8iSD}WCD{jA!!5-d; zO3e16QXw+e6g}N;(|bO4rOGs~FmFC@o0(qHKV;o&s~{yc{0dUWpM{y+RAzh%$L+qn zdOAwTbp&_GRcZ0bod#wL>Bk&zxWW1AFx;YTFTc3$EVd_2{Z=6HoH)oa^naPr7f+j7DiJTm3ToZ>24}8L)~IYZK9~$=PBnVYp~@pdIof6QQ(2t{O7d*gakL zcAxf)r6Q#Kn^H$8F|z*RN^U$UWrs6T`U;Xb@X7|YPUdai4IL%VZ60@F2g_-F$cBHQ zk0mk6b6vLdZ-Tt4B{>v>Yz+lLN0-z#y4}+0uUQ=>FmMUP1+vqjP19k6IO}_AnV-U~ zP=DIrYg)Y+)R~Pink&c#45NueZeYY1`n+-3Bx!&;3}KMO2BgnjBzbU0ubGqAGCt-2 zE`DEh`Lz!Z)V_xC%iqU`JsYwWp9yC_KR%jlWuWb-dJF0+L)<<6qC~5?g)<7?)k{Q& z!BqLK+DPD82aF32Lw<0#a&Pj!SmH`VQ%l{coWQ+ppkcY0eBzv%N>p0;9D`r^=fObX z5QQ=VEB+1qun8W>hEVmA5N$&qV2Jlu_>COFvT7GZ>}wE_#|zdyp(qziGawxSo7je8*YH-ubvfJ6om1mpr_}nds+>t79Ku%ctEsr-Wnl^DrMFR$=>jNP;wSXBV4GI;LGbi}z=@*a@h>S>e zq`$Q8E!>NuhDNx!jm19uhn))!psO&ZFGgDElw7z#PoU783wzZu;_mO7UT$q-h z44exRq?SLY+aP-cpsk^y0ca#?lAe$KsGoB)M8dV^gfjjr{4@Zz(2DUxPo>!|KH6)l z3*eLh+qnGlYm8m-jdCI)CBCaEin|?YQS&9h9h8`9H(1{2GJZapIIVx`v=KSo<#^GB zrS!93lo^s8De8W`@K7xD{qrR{SWp^fH9!6_`?3}yg?CCu(*W3Dgx5S z!p6bcom8mPYRTaYIG;Di>@B94pStn+#le6%bqbF`p;DA6wrlnwB;BjCdvy-|pEw^p zQoWRC@-p38$Okn2CYh@v-f~=KyE^6M8Dfm7vH^h&w?l8P`uH#}~Hnc#{d{E=Y(~pg#8wXNMT^??zBIqPyeI^&U z3v{zC$R*=Q$V2_NW(FoE$g#8MK*>VwXz331O&%1i?l+6?`Z*Kw(VI`JmTWw zww;7y!g4O-YsLER&)jW~*iPYOZpQG6!5Tuv_%`8)0&!Jb2w_*a)8$GA)e6a%FuR}8 zrY#6U>st``$?;GT>qTdRpD!)c30I2PcGj~ z1b?qU@V&NlLAw;7Q1^g}F0;1=3YE*|k<-2bqczt=TAV+>$Yzz>U7lK#jD~}q?x0zI zPpwz*GkHjnnV`QIcpbt0tw+NU;R*A3Sy|U}J2&kpwThE2jvfak((mbUyhSO(@y(3vKN=ww~M zQf*zkQ|^h7KQCd`7mG}A$XOnbO-z`65~7==>buN_k4nj%6I8Z7{rTlh3FlFNxOAMA zA0O#du&aG?>1mChvaMLejU#BQ?uQL6F{Zla^lUl|?c7VGC>I6-G%GJ+OZa5sQkd&>YdkCt3IX=rlr#Ce zZsaHwC$guyaNqF60BA4n!ld#){;e@A=y4rCCj93IB^dUjFnQ_=s`@QR=_Stvm@wc{>iX2YKq&Wx&ZF?x;M2-BlB9TbHVB;g zznAHd9sYkR-<5h|;E1r-ZlB^aY1J{&ws(UTf&e$N!5=tiLT!<^1q1R1(GQFaV95Vp zeKwb5o#>nV7?}yfLEXkcLyi( z9;T@AOJNqHlBs8)eHsk!X}A#@(>_Rp9ok;j*sHPDR{WjPLk z#Z<`SQ!Vsp))2V@_B}yr7jee|#WrMSlNxP4{2V9}pHas94bQyWT@yr=p~( KSbFa2?f(PMDf-#~ literal 0 HcmV?d00001 diff --git a/assets/images/openapi/simple_ota.png b/assets/images/openapi/simple_ota.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e6b721aa41e37eb021eb6330901b05b8bb6c6b GIT binary patch literal 28726 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îWb%sRkHSa@8{002@0J_ETvD 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 camera 2. register response (with capabilities) --> mobile 3. async notifications (without capabilities) --> mobile | | live_stream_encode_supported | [bool](bool) | optional | Does the camera support encoding while live streaming? | | live_stream_max_lens_unsupported | [bool](bool) | optional | Is the Max Lens feature NOT supported? | | live_stream_minimum_stream_bitrate | [int32](int32) | optional | Camera-defined minimum bitrate (static) (Kbps) | | live_stream_maximum_stream_bitrate | [int32](int32) | optional | Camera-defined maximum bitrate (static) (Kbps) | | live_stream_lens_supported | [bool](bool) | optional | Does camera support setting lens for live streaming? | | live_stream_lens_supported_array | [EnumLens](open_gopro-EnumLens) | repeated | Array of supported lenses for live streaming |", - "categories": [], - "tags": [], - "url": "/OpenGoPro/protos#notifylivestreamstatus" - }, - { - "title": "Protocol Documentation: RequestGetLiveStreamStatus", - "excerpt": "Get the current livestream status (and optionally register for future status changes) Both current status and future status changes are sent via @ref NotifyLiveStreamStatus | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | register_live_stream_status | [EnumRegisterLiveStreamStatus](open_gopro-EnumRegisterLiveStreamStatus) | repeated | Array of live stream statuses to be notified about | | unregister_live_stream_status | [EnumRegisterLiveStreamStatus](open_gopro-EnumRegisterLiveStreamStatus) | repeated | Array of live stream statuses to stop being notified about |", - "categories": [], - "tags": [], - "url": "/OpenGoPro/protos#requestgetlivestreamstatus" - }, - { - "title": "Protocol Documentation: RequestSetLiveStreamMode", - "excerpt": "Configure lives streaming The current livestream status can be queried via @ref RequestGetLiveStreamStatus TODO What is the response? | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | url | [string](string) | optional | RTMP(S) URL used for live stream | | encode | [bool](bool) | optional | Save media to sdcard while streaming? | | window_size | [EnumWindowSize](open_gopro-EnumWindowSize) | optional | Live stream resolution | | cert | [bytes](bytes) | optional | Certificate for servers that require it | | minimum_bitrate | [int32](int32) | optional | Minimum desired bitrate (may or may not be honored) | | maximum_bitrate | [int32](int32) | optional | Maximum desired bitrate (may or may not be honored) | | starting_bitrate | [int32](int32) | optional | Starting bitrate | | lens | [EnumLens](open_gopro-EnumLens) | optional | Lens to use for live stream (see NotifyLiveStreamStatus.live_stream_lens_supported) |", + "title": "Tutorials: ", + "excerpt": "This set of tutorials is a series of sample scripts / files and accompanying .html walk-throughs to implement basic functionality to interact with a GoPro device using the following languages: - Python - Kotlin - More to come! The tutorials only support Open GoPro Version 2.0 and must be run on a [supported camera]({% link specs/ble_versions/ble_2_0.md %}supported-cameras). They will provide walk-throughs and sample code to use the relevant language / framework to exercise the Open GoPro Interface using Bluetooth Low Energy (BLE) and HTTP over WiFi. The tutorials are meant as an introduction to the Open GoPro specification. They are not a substitute for the complete [BLE]({% link specs/ble_versions/ble_2_0.md %}) and [HTTP](/http) specifications which will be your main source of reference after completing the tutorials. {% for tutorial in site.tutorials %} - [{{ tutorial.title }}]({{ tutorial.permalink | prepend: site.baseurl }}) {% endfor %}", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestsetlivestreammode" + "url": "/OpenGoPro/tutorials/#" }, { - "title": "Protocol Documentation: EnumLens", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | LENS_WIDE | 0 | | | LENS_LINEAR | 4 | | | LENS_SUPERVIEW | 3 | |", + "title": "open_gopro Protobuf Documentation: ", + "excerpt": "EnumCOHNNetworkState | Name | Value | Summary | | ---- | ----- | ------- | | COHN_STATE_Init | 0 | | | COHN_STATE_Error | 1 | | | COHN_STATE_Exit | 2 | | | COHN_STATE_Idle | 5 | | | COHN_STATE_NetworkConnected | 27 | | | COHN_STATE_NetworkDisconnected | 28 | | | COHN_STATE_ConnectingToNetwork | 29 | | | COHN_STATE_Invalid | 30 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumlens" + "url": "/OpenGoPro/protos/open_gopro.html#" }, { - "title": "Protocol Documentation: EnumLiveStreamError", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | LIVE_STREAM_ERROR_NONE | 0 | No error (success) | | LIVE_STREAM_ERROR_NETWORK | 1 | General network error during the stream | | LIVE_STREAM_ERROR_CREATESTREAM | 2 | Startup error: bad URL or valid with live stream server | | LIVE_STREAM_ERROR_OUTOFMEMORY | 3 | Not enough memory on camera to complete task | | LIVE_STREAM_ERROR_INPUTSTREAM | 4 | Failed to get stream from low level camera system | | LIVE_STREAM_ERROR_INTERNET | 5 | No internet access detected on startup of streamer | | LIVE_STREAM_ERROR_OSNETWORK | 6 | Error occured in linux networking stack. usually means the server closed the connection | | LIVE_STREAM_ERROR_SELECTEDNETWORKTIMEOUT | 7 | Timed out attemping to connect to the wifi network when attemping live stream | | LIVE_STREAM_ERROR_SSL_HANDSHAKE | 8 | SSL handshake failed (commonly caused due to incorrect time / time zone) | | LIVE_STREAM_ERROR_CAMERA_BLOCKED | 9 | Low level camera system rejected attempt to start live stream | | LIVE_STREAM_ERROR_UNKNOWN | 10 | Unknown | | LIVE_STREAM_ERROR_SD_CARD_FULL | 40 | Can not perform livestream because sd card is full | | LIVE_STREAM_ERROR_SD_CARD_REMOVED | 41 | Livestream stopped because sd card was removed |", + "title": "open_gopro Protobuf Documentation: EnumCOHNStatus", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | COHN_UNPROVISIONED | 0 | | | COHN_PROVISIONED | 1 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumlivestreamerror" + "url": "/OpenGoPro/protos/open_gopro.html#enumcohnstatus" }, { - "title": "Protocol Documentation: EnumLiveStreamStatus", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | LIVE_STREAM_STATE_IDLE | 0 | Initial status. Livestream has not yet been configured | | LIVE_STREAM_STATE_CONFIG | 1 | Livestream is being configured | | LIVE_STREAM_STATE_READY | 2 | Livestream has finished configuration and is ready to start streaming | | LIVE_STREAM_STATE_STREAMING | 3 | Livestream is actively streaming | | LIVE_STREAM_STATE_COMPLETE_STAY_ON | 4 | Live stream is exiting. No errors occured. | | LIVE_STREAM_STATE_FAILED_STAY_ON | 5 | Live stream is exiting. An error occurred. | | LIVE_STREAM_STATE_RECONNECTING | 6 | An error occurred during livestream and stream is attempting to reconnect. |", + "title": "open_gopro Protobuf Documentation: EnumCameraControlStatus", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | CAMERA_IDLE | 0 | | | CAMERA_CONTROL | 1 | Can only be set by camera, not by app or third party | | CAMERA_EXTERNAL_CONTROL | 2 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumlivestreamstatus" + "url": "/OpenGoPro/protos/open_gopro.html#enumcameracontrolstatus" }, { - "title": "Protocol Documentation: EnumRegisterLiveStreamStatus", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | REGISTER_LIVE_STREAM_STATUS_STATUS | 1 | | | REGISTER_LIVE_STREAM_STATUS_ERROR | 2 | | | REGISTER_LIVE_STREAM_STATUS_MODE | 3 | | | REGISTER_LIVE_STREAM_STATUS_BITRATE | 4 | |", + "title": "open_gopro Protobuf Documentation: EnumFlatMode", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | FLAT_MODE_UNKNOWN | -1 | | | FLAT_MODE_PLAYBACK | 4 | | | FLAT_MODE_SETUP | 5 | | | FLAT_MODE_VIDEO | 12 | | | FLAT_MODE_TIME_LAPSE_VIDEO | 13 | | | FLAT_MODE_LOOPING | 15 | | | FLAT_MODE_PHOTO_SINGLE | 16 | | | FLAT_MODE_PHOTO | 17 | | | FLAT_MODE_PHOTO_NIGHT | 18 | | | FLAT_MODE_PHOTO_BURST | 19 | | | FLAT_MODE_TIME_LAPSE_PHOTO | 20 | | | FLAT_MODE_NIGHT_LAPSE_PHOTO | 21 | | | FLAT_MODE_BROADCAST_RECORD | 22 | | | FLAT_MODE_BROADCAST_BROADCAST | 23 | | | FLAT_MODE_TIME_WARP_VIDEO | 24 | | | FLAT_MODE_LIVE_BURST | 25 | | | FLAT_MODE_NIGHT_LAPSE_VIDEO | 26 | | | FLAT_MODE_SLOMO | 27 | | | FLAT_MODE_IDLE | 28 | | | FLAT_MODE_VIDEO_STAR_TRAIL | 29 | | | FLAT_MODE_VIDEO_LIGHT_PAINTING | 30 | | | FLAT_MODE_VIDEO_LIGHT_TRAIL | 31 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumregisterlivestreamstatus" + "url": "/OpenGoPro/protos/open_gopro.html#enumflatmode" }, { - "title": "Protocol Documentation: EnumWindowSize", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | WINDOW_SIZE_480 | 4 | | | WINDOW_SIZE_720 | 7 | | | WINDOW_SIZE_1080 | 12 | |", + "title": "open_gopro Protobuf Documentation: EnumLens", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | LENS_WIDE | 0 | | | LENS_LINEAR | 4 | | | LENS_SUPERVIEW | 3 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumwindowsize" + "url": "/OpenGoPro/protos/open_gopro.html#enumlens" }, { - "title": "Protocol Documentation: network_management.proto", - "excerpt": "", + "title": "open_gopro Protobuf Documentation: EnumLiveStreamError", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | LIVE_STREAM_ERROR_NONE | 0 | No error (success) | | LIVE_STREAM_ERROR_NETWORK | 1 | General network error during the stream | | LIVE_STREAM_ERROR_CREATESTREAM | 2 | Startup error: bad URL or valid with live stream server | | LIVE_STREAM_ERROR_OUTOFMEMORY | 3 | Not enough memory on camera to complete task | | LIVE_STREAM_ERROR_INPUTSTREAM | 4 | Failed to get stream from low level camera system | | LIVE_STREAM_ERROR_INTERNET | 5 | No internet access detected on startup of streamer | | LIVE_STREAM_ERROR_OSNETWORK | 6 | Error occured in linux networking stack. usually means the server closed the connection | | LIVE_STREAM_ERROR_SELECTEDNETWORKTIMEOUT | 7 | Timed out attemping to connect to the wifi network when attemping live stream | | LIVE_STREAM_ERROR_SSL_HANDSHAKE | 8 | SSL handshake failed (commonly caused due to incorrect time / time zone) | | LIVE_STREAM_ERROR_CAMERA_BLOCKED | 9 | Low level camera system rejected attempt to start live stream | | LIVE_STREAM_ERROR_UNKNOWN | 10 | Unknown | | LIVE_STREAM_ERROR_SD_CARD_FULL | 40 | Can not perform livestream because sd card is full | | LIVE_STREAM_ERROR_SD_CARD_REMOVED | 41 | Livestream stopped because sd card was removed |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#network-management-proto" + "url": "/OpenGoPro/protos/open_gopro.html#enumlivestreamerror" }, { - "title": "Protocol Documentation: NotifProvisioningState", - "excerpt": "Provision state notification TODO refernce where this is triggered | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | provisioning_state | [EnumProvisioning](open_gopro-EnumProvisioning) | required | Provisioning / connection state |", + "title": "open_gopro Protobuf Documentation: EnumLiveStreamStatus", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | LIVE_STREAM_STATE_IDLE | 0 | Initial status. Livestream has not yet been configured | | LIVE_STREAM_STATE_CONFIG | 1 | Livestream is being configured | | LIVE_STREAM_STATE_READY | 2 | Livestream has finished configuration and is ready to start streaming | | LIVE_STREAM_STATE_STREAMING | 3 | Livestream is actively streaming | | LIVE_STREAM_STATE_COMPLETE_STAY_ON | 4 | Live stream is exiting. No errors occured. | | LIVE_STREAM_STATE_FAILED_STAY_ON | 5 | Live stream is exiting. An error occurred. | | LIVE_STREAM_STATE_RECONNECTING | 6 | An error occurred during livestream and stream is attempting to reconnect. |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#notifprovisioningstate" + "url": "/OpenGoPro/protos/open_gopro.html#enumlivestreamstatus" }, { - "title": "Protocol Documentation: NotifStartScanning", - "excerpt": "Scanning state notification Triggered via @ref RequestStartScan | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | scanning_state | [EnumScanning](open_gopro-EnumScanning) | required | Scanning state | | scan_id | [int32](int32) | optional | ID associated with scan results (included if scan was successful) | | total_entries | [int32](int32) | optional | Number of APs found during scan (included if scan was successful) | | total_configured_ssid | [int32](int32) | required | Total count of camera's provisioned SSIDs |", + "title": "open_gopro Protobuf Documentation: EnumPresetGroup", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | PRESET_GROUP_ID_VIDEO | 1000 | | | PRESET_GROUP_ID_PHOTO | 1001 | | | PRESET_GROUP_ID_TIMELAPSE | 1002 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#notifstartscanning" + "url": "/OpenGoPro/protos/open_gopro.html#enumpresetgroup" }, { - "title": "Protocol Documentation: RequestConnect", - "excerpt": "Connect to (but do not authenticate with) an Access Point This is intended to be used to connect to a previously-connected Access Point Response: @ref ResponseConnect | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | ssid | [string](string) | required | AP SSID |", + "title": "open_gopro Protobuf Documentation: EnumPresetGroupIcon", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | PRESET_GROUP_VIDEO_ICON_ID | 0 | | | PRESET_GROUP_PHOTO_ICON_ID | 1 | | | PRESET_GROUP_TIMELAPSE_ICON_ID | 2 | | | PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID | 3 | | | PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID | 4 | | | PRESET_GROUP_MAX_VIDEO_ICON_ID | 5 | | | PRESET_GROUP_MAX_PHOTO_ICON_ID | 6 | | | PRESET_GROUP_MAX_TIMELAPSE_ICON_ID | 7 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestconnect" + "url": "/OpenGoPro/protos/open_gopro.html#enumpresetgroupicon" }, { - "title": "Protocol Documentation: RequestConnectNew", - "excerpt": "Connect to and authenticate with an Access Point This is only intended to be used if the AP is not previously provisioned. Response: @ref ResponseConnectNew sent immediately Notification: @ref NotifProvisioningState sent periodically as provisioning state changes | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | ssid | [string](string) | required | AP SSID | | password | [string](string) | required | AP password | | static_ip | [bytes](bytes) | optional | Static IP address | | gateway | [bytes](bytes) | optional | Gateway IP address | | subnet | [bytes](bytes) | optional | Subnet mask | | dns_primary | [bytes](bytes) | optional | Primary DNS | | dns_secondary | [bytes](bytes) | optional | Secondary DNS |", + "title": "open_gopro Protobuf Documentation: EnumPresetIcon", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | PRESET_ICON_VIDEO | 0 | | | PRESET_ICON_ACTIVITY | 1 | | | PRESET_ICON_CINEMATIC | 2 | | | PRESET_ICON_PHOTO | 3 | | | PRESET_ICON_LIVE_BURST | 4 | | | PRESET_ICON_BURST | 5 | | | PRESET_ICON_PHOTO_NIGHT | 6 | | | PRESET_ICON_TIMEWARP | 7 | | | PRESET_ICON_TIMELAPSE | 8 | | | PRESET_ICON_NIGHTLAPSE | 9 | | | PRESET_ICON_SNAIL | 10 | | | PRESET_ICON_VIDEO_2 | 11 | | | PRESET_ICON_PHOTO_2 | 13 | | | PRESET_ICON_PANORAMA | 14 | | | PRESET_ICON_BURST_2 | 15 | | | PRESET_ICON_TIMEWARP_2 | 16 | | | PRESET_ICON_TIMELAPSE_2 | 17 | | | PRESET_ICON_CUSTOM | 18 | | | PRESET_ICON_AIR | 19 | | | PRESET_ICON_BIKE | 20 | | | PRESET_ICON_EPIC | 21 | | | PRESET_ICON_INDOOR | 22 | | | PRESET_ICON_MOTOR | 23 | | | PRESET_ICON_MOUNTED | 24 | | | PRESET_ICON_OUTDOOR | 25 | | | PRESET_ICON_POV | 26 | | | PRESET_ICON_SELFIE | 27 | | | PRESET_ICON_SKATE | 28 | | | PRESET_ICON_SNOW | 29 | | | PRESET_ICON_TRAIL | 30 | | | PRESET_ICON_TRAVEL | 31 | | | PRESET_ICON_WATER | 32 | | | PRESET_ICON_LOOPING | 33 | | | PRESET_ICON_BASIC | 58 | | | PRESET_ICON_ULTRA_SLO_MO | 59 | | | PRESET_ICON_STANDARD_ENDURANCE | 60 | | | PRESET_ICON_ACTIVITY_ENDURANCE | 61 | | | PRESET_ICON_CINEMATIC_ENDURANCE | 62 | | | PRESET_ICON_SLOMO_ENDURANCE | 63 | | | PRESET_ICON_STATIONARY_1 | 64 | | | PRESET_ICON_STATIONARY_2 | 65 | | | PRESET_ICON_STATIONARY_3 | 66 | | | PRESET_ICON_STATIONARY_4 | 67 | | | PRESET_ICON_SIMPLE_SUPER_PHOTO | 70 | | | PRESET_ICON_SIMPLE_NIGHT_PHOTO | 71 | | | PRESET_ICON_HIGHEST_QUALITY_VIDEO | 73 | | | PRESET_ICON_STANDARD_QUALITY_VIDEO | 74 | | | PRESET_ICON_BASIC_QUALITY_VIDEO | 75 | | | PRESET_ICON_STAR_TRAIL | 76 | | | PRESET_ICON_LIGHT_PAINTING | 77 | | | PRESET_ICON_LIGHT_TRAIL | 78 | | | PRESET_ICON_FULL_FRAME | 79 | | | PRESET_ICON_TIMELAPSE_PHOTO | 1000 | | | PRESET_ICON_NIGHTLAPSE_PHOTO | 1001 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestconnectnew" + "url": "/OpenGoPro/protos/open_gopro.html#enumpreseticon" }, { - "title": "Protocol Documentation: RequestGetApEntries", - "excerpt": "Get a list of Access Points found during a @ref RequestStartScan Response: @ref ResponseGetApEntries | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | start_index | [int32](int32) | required | Used for paging. 0", + "title": "open_gopro Protobuf Documentation: EnumPresetTitle", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | PRESET_TITLE_ACTIVITY | 0 | | | PRESET_TITLE_STANDARD | 1 | | | PRESET_TITLE_CINEMATIC | 2 | | | PRESET_TITLE_PHOTO | 3 | | | PRESET_TITLE_LIVE_BURST | 4 | | | PRESET_TITLE_BURST | 5 | | | PRESET_TITLE_NIGHT | 6 | | | PRESET_TITLE_TIME_WARP | 7 | | | PRESET_TITLE_TIME_LAPSE | 8 | | | PRESET_TITLE_NIGHT_LAPSE | 9 | | | PRESET_TITLE_VIDEO | 10 | | | PRESET_TITLE_SLOMO | 11 | | | PRESET_TITLE_PHOTO_2 | 13 | | | PRESET_TITLE_PANORAMA | 14 | | | PRESET_TITLE_TIME_WARP_2 | 16 | | | PRESET_TITLE_CUSTOM | 18 | | | PRESET_TITLE_AIR | 19 | | | PRESET_TITLE_BIKE | 20 | | | PRESET_TITLE_EPIC | 21 | | | PRESET_TITLE_INDOOR | 22 | | | PRESET_TITLE_MOTOR | 23 | | | PRESET_TITLE_MOUNTED | 24 | | | PRESET_TITLE_OUTDOOR | 25 | | | PRESET_TITLE_POV | 26 | | | PRESET_TITLE_SELFIE | 27 | | | PRESET_TITLE_SKATE | 28 | | | PRESET_TITLE_SNOW | 29 | | | PRESET_TITLE_TRAIL | 30 | | | PRESET_TITLE_TRAVEL | 31 | | | PRESET_TITLE_WATER | 32 | | | PRESET_TITLE_LOOPING | 33 | | | PRESET_TITLE_BASIC | 58 | | | PRESET_TITLE_ULTRA_SLO_MO | 59 | | | PRESET_TITLE_STANDARD_ENDURANCE | 60 | | | PRESET_TITLE_ACTIVITY_ENDURANCE | 61 | | | PRESET_TITLE_CINEMATIC_ENDURANCE | 62 | | | PRESET_TITLE_SLOMO_ENDURANCE | 63 | | | PRESET_TITLE_STATIONARY_1 | 64 | | | PRESET_TITLE_STATIONARY_2 | 65 | | | PRESET_TITLE_STATIONARY_3 | 66 | | | PRESET_TITLE_STATIONARY_4 | 67 | | | PRESET_TITLE_SIMPLE_VIDEO | 68 | | | PRESET_TITLE_SIMPLE_TIME_WARP | 69 | | | PRESET_TITLE_SIMPLE_SUPER_PHOTO | 70 | | | PRESET_TITLE_SIMPLE_NIGHT_PHOTO | 71 | | | PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE | 72 | | | PRESET_TITLE_HIGHEST_QUALITY | 73 | | | PRESET_TITLE_EXTENDED_BATTERY | 74 | | | PRESET_TITLE_LONGEST_BATTERY | 75 | | | PRESET_TITLE_STAR_TRAIL | 76 | | | PRESET_TITLE_LIGHT_PAINTING | 77 | | | PRESET_TITLE_LIGHT_TRAIL | 78 | | | PRESET_TITLE_FULL_FRAME | 79 | | | PRESET_TITLE_STANDARD_QUALITY_VIDEO | 82 | | | PRESET_TITLE_BASIC_QUALITY_VIDEO | 83 | | | PRESET_TITLE_HIGHEST_QUALITY_VIDEO | 93 | | | PRESET_TITLE_USER_DEFINED_CUSTOM_NAME | 94 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestgetapentries" + "url": "/OpenGoPro/protos/open_gopro.html#enumpresettitle" }, { - "title": "Protocol Documentation: RequestReleaseNetwork", - "excerpt": "Request to disconnect from current AP network Response: @ref ResponseGeneric", + "title": "open_gopro Protobuf Documentation: EnumProvisioning", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | PROVISIONING_UNKNOWN | 0 | | | PROVISIONING_NEVER_STARTED | 1 | | | PROVISIONING_STARTED | 2 | | | PROVISIONING_ABORTED_BY_SYSTEM | 3 | | | PROVISIONING_CANCELLED_BY_USER | 4 | | | PROVISIONING_SUCCESS_NEW_AP | 5 | | | PROVISIONING_SUCCESS_OLD_AP | 6 | | | PROVISIONING_ERROR_FAILED_TO_ASSOCIATE | 7 | | | PROVISIONING_ERROR_PASSWORD_AUTH | 8 | | | PROVISIONING_ERROR_EULA_BLOCKING | 9 | | | PROVISIONING_ERROR_NO_INTERNET | 10 | | | PROVISIONING_ERROR_UNSUPPORTED_TYPE | 11 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestreleasenetwork" + "url": "/OpenGoPro/protos/open_gopro.html#enumprovisioning" }, { - "title": "Protocol Documentation: RequestStartScan", - "excerpt": "Start scanning for Access Points @note Serialization of this object is zero bytes. Response: @ref ResponseStartScanning are sent immediately after the camera receives this command Notifications: @ref NotifStartScanning are sent periodically as scanning state changes. Use to detect scan complete.", + "title": "open_gopro Protobuf Documentation: EnumRegisterLiveStreamStatus", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | REGISTER_LIVE_STREAM_STATUS_STATUS | 1 | | | REGISTER_LIVE_STREAM_STATUS_ERROR | 2 | | | REGISTER_LIVE_STREAM_STATUS_MODE | 3 | | | REGISTER_LIVE_STREAM_STATUS_BITRATE | 4 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requeststartscan" + "url": "/OpenGoPro/protos/open_gopro.html#enumregisterlivestreamstatus" }, { - "title": "Protocol Documentation: ResponseConnect", - "excerpt": "The status of an attempt to connect to an Access Point Sent as the initial response to @ref RequestConnect | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | result | [EnumResultGeneric](open_gopro-EnumResultGeneric) | required | Generic pass/fail/error info | | provisioning_state | [EnumProvisioning](open_gopro-EnumProvisioning) | required | Provisioning/connection state | | timeout_seconds | [int32](int32) | required | Network connection timeout (seconds) |", + "title": "open_gopro Protobuf Documentation: EnumRegisterPresetStatus", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | REGISTER_PRESET_STATUS_PRESET | 1 | Send notification when properties of a preset change | | REGISTER_PRESET_STATUS_PRESET_GROUP_ARRAY | 2 | Send notification when properties of a preset group change |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#responseconnect" + "url": "/OpenGoPro/protos/open_gopro.html#enumregisterpresetstatus" }, { - "title": "Protocol Documentation: ResponseConnectNew", - "excerpt": "The status of an attempt to connect to an Access Point Sent as the initial response to @ref RequestConnectNew | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | result | [EnumResultGeneric](open_gopro-EnumResultGeneric) | required | Status of Connect New request | | provisioning_state | [EnumProvisioning](open_gopro-EnumProvisioning) | required | Current provisioning state of the network | | timeout_seconds | [int32](int32) | required | number of seconds camera will wait before declaring a network connection attempt failed. |", + "title": "open_gopro Protobuf Documentation: EnumResultGeneric", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | RESULT_UNKNOWN | 0 | | | RESULT_SUCCESS | 1 | | | RESULT_ILL_FORMED | 2 | | | RESULT_NOT_SUPPORTED | 3 | | | RESULT_ARGUMENT_OUT_OF_BOUNDS | 4 | | | RESULT_ARGUMENT_INVALID | 5 | | | RESULT_RESOURCE_NOT_AVAILABLE | 6 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#responseconnectnew" + "url": "/OpenGoPro/protos/open_gopro.html#enumresultgeneric" }, { - "title": "Protocol Documentation: ResponseGetApEntries", - "excerpt": "A list of scan entries describing a scanned Access Point This is sent in response to a @ref RequestGetApEntries | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | result | [EnumResultGeneric](open_gopro-EnumResultGeneric) | required | Generic pass/fail/error info | | scan_id | [int32](int32) | required | ID associated with this batch of results | | entries | [ResponseGetApEntries.ScanEntry](open_gopro-ResponseGetApEntries-ScanEntry) | repeated | Array containing details about discovered APs |", + "title": "open_gopro Protobuf Documentation: EnumScanEntryFlags", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | SCAN_FLAG_OPEN | 0x00 | This network does not require authentication | | SCAN_FLAG_AUTHENTICATED | 0x01 | This network requires authentication | | SCAN_FLAG_CONFIGURED | 0x02 | This network has been previously provisioned | | SCAN_FLAG_BEST_SSID | 0x04 | | | SCAN_FLAG_ASSOCIATED | 0x08 | camera is connected to this AP | | SCAN_FLAG_UNSUPPORTED_TYPE | 0x10 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#responsegetapentries" + "url": "/OpenGoPro/protos/open_gopro.html#enumscanentryflags" }, { - "title": "Protocol Documentation: ResponseGetApEntries.ScanEntry", - "excerpt": "The individual Scan Entry model | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | ssid | [string](string) | required | AP SSID | | signal_strength_bars | [int32](int32) | required | Signal strength (3 bars: >-70 dBm; 2 bars: >-85 dBm; 1 bar:", + "title": "open_gopro Protobuf Documentation: EnumScanning", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | SCANNING_UNKNOWN | 0 | | | SCANNING_NEVER_STARTED | 1 | | | SCANNING_STARTED | 2 | | | SCANNING_ABORTED_BY_SYSTEM | 3 | | | SCANNING_CANCELLED_BY_USER | 4 | | | SCANNING_SUCCESS | 5 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#responsegetapentries-scanentry" + "url": "/OpenGoPro/protos/open_gopro.html#enumscanning" }, { - "title": "Protocol Documentation: ResponseStartScanning", - "excerpt": "The current scanning state. This is the initial response to a @ref RequestStartScan | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | result | [EnumResultGeneric](open_gopro-EnumResultGeneric) | required | Generic pass/fail/error info | | scanning_state | [EnumScanning](open_gopro-EnumScanning) | required | Scanning state |", + "title": "open_gopro Protobuf Documentation: EnumWindowSize", + "excerpt": "| Name | Value | Summary | | ---- | ----- | ------- | | WINDOW_SIZE_480 | 4 | | | WINDOW_SIZE_720 | 7 | | | WINDOW_SIZE_1080 | 12 | |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#responsestartscanning" + "url": "/OpenGoPro/protos/open_gopro.html#enumwindowsize" }, { - "title": "Protocol Documentation: EnumProvisioning", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | PROVISIONING_UNKNOWN | 0 | | | PROVISIONING_NEVER_STARTED | 1 | | | PROVISIONING_STARTED | 2 | | | PROVISIONING_ABORTED_BY_SYSTEM | 3 | | | PROVISIONING_CANCELLED_BY_USER | 4 | | | PROVISIONING_SUCCESS_NEW_AP | 5 | | | PROVISIONING_SUCCESS_OLD_AP | 6 | | | PROVISIONING_ERROR_FAILED_TO_ASSOCIATE | 7 | | | PROVISIONING_ERROR_PASSWORD_AUTH | 8 | | | PROVISIONING_ERROR_EULA_BLOCKING | 9 | | | PROVISIONING_ERROR_NO_INTERNET | 10 | | | PROVISIONING_ERROR_UNSUPPORTED_TYPE | 11 | |", + "title": "open_gopro Protobuf Documentation: Media", + "excerpt": "A reusable model to represent a media file | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | folder | optional | string | 1 | Directory that the media is contained in | | file | optional | string | 2 | Filename of media |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumprovisioning" + "url": "/OpenGoPro/protos/open_gopro.html#media" }, { - "title": "Protocol Documentation: EnumScanEntryFlags", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | SCAN_FLAG_OPEN | 0 | This network does not require authentication | | SCAN_FLAG_AUTHENTICATED | 1 | This network requires authentication | | SCAN_FLAG_CONFIGURED | 2 | This network has been previously provisioned | | SCAN_FLAG_BEST_SSID | 4 | | | SCAN_FLAG_ASSOCIATED | 8 | camera is connected to this AP | | SCAN_FLAG_UNSUPPORTED_TYPE | 16 | |", + "title": "open_gopro Protobuf Documentation: NotifProvisioningState", + "excerpt": "Provision state notification TODO refernce where this is triggered | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | provisioning_state | required | [EnumProvisioning]({% link protos/open_gopro.md %}enumprovisioning) | 1 | Provisioning / connection state |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumscanentryflags" + "url": "/OpenGoPro/protos/open_gopro.html#notifprovisioningstate" }, { - "title": "Protocol Documentation: EnumScanning", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | SCANNING_UNKNOWN | 0 | | | SCANNING_NEVER_STARTED | 1 | | | SCANNING_STARTED | 2 | | | SCANNING_ABORTED_BY_SYSTEM | 3 | | | SCANNING_CANCELLED_BY_USER | 4 | | | SCANNING_SUCCESS | 5 | |", + "title": "open_gopro Protobuf Documentation: NotifStartScanning", + "excerpt": "Scanning state notification Triggered via [RequestStartScan]( {% link protos/open_gopro.md %}requeststartscan ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | scanning_state | required | [EnumScanning]({% link protos/open_gopro.md %}enumscanning) | 1 | Scanning state | | scan_id | optional | int32 | 2 | ID associated with scan results (included if scan was successful) | | total_entries | optional | int32 | 3 | Number of APs found during scan (included if scan was successful) | | total_configured_ssid | required | int32 | 4 | Total count of camera's provisioned SSIDs |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumscanning" + "url": "/OpenGoPro/protos/open_gopro.html#notifstartscanning" }, { - "title": "Protocol Documentation: preset_status.proto", - "excerpt": "", + "title": "open_gopro Protobuf Documentation: NotifyCOHNStatus", + "excerpt": "Current COHN status triggered by a RequestGetCOHNStatus | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | status | optional | [EnumCOHNStatus]({% link protos/open_gopro.md %}enumcohnstatus) | 1 | Current COHN status | | state | optional | [EnumCOHNNetworkState]({% link protos/open_gopro.md %}enumcohnnetworkstate) | 2 | Current COHN network state | | username | optional | string | 3 | Username used for http basic auth header | | password | optional | string | 4 | Password used for http basic auth header | | ipaddress | optional | string | 5 | Camera's IP address on the local network | | enabled | optional | bool | 6 | Is COHN currently enabled | | ssid | optional | string | 7 | Currently connected SSID | | macaddress | optional | string | 8 | MAC address of the wifi adapter |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#preset-status-proto" + "url": "/OpenGoPro/protos/open_gopro.html#notifycohnstatus" }, { - "title": "Protocol Documentation: NotifyPresetStatus", - "excerpt": "Current Preset status Sent either: - synchronously via initial response to @ref RequestGetPresetStatus - asynchronously when Preset change if registered in @rev RequestGetPresetStatus | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | preset_group_array | [PresetGroup](open_gopro-PresetGroup) | repeated | Array of currently available Preset Groups |", + "title": "open_gopro Protobuf Documentation: NotifyLiveStreamStatus", + "excerpt": "Live Stream status Sent either: - as a syncrhonous response to initial [RequestGetLiveStreamStatus]( {% link protos/open_gopro.md %}requestgetlivestreamstatus ) - as asynchronous notifications registered for via [RequestGetLiveStreamStatus]( {% link protos/open_gopro.md %}requestgetlivestreamstatus ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | live_stream_status | optional | [EnumLiveStreamStatus]({% link protos/open_gopro.md %}enumlivestreamstatus) | 1 | Live stream status | | live_stream_error | optional | [EnumLiveStreamError]({% link protos/open_gopro.md %}enumlivestreamerror) | 2 | Live stream error | | live_stream_encode | optional | bool | 3 | Is live stream encoding? | | live_stream_bitrate | optional | int32 | 4 | Live stream bitrate (Kbps) | | live_stream_window_size_supported_array | repeated | [EnumWindowSize]({% link protos/open_gopro.md %}enumwindowsize) | 5 | Set of currently supported resolutions | | live_stream_encode_supported | optional | bool | 6 | Does the camera support encoding while live streaming? | | live_stream_max_lens_unsupported | optional | bool | 7 | Is the Max Lens feature NOT supported? | | live_stream_minimum_stream_bitrate | optional | int32 | 8 | Camera-defined minimum bitrate (static) (Kbps) | | live_stream_maximum_stream_bitrate | optional | int32 | 9 | Camera-defined maximum bitrate (static) (Kbps) | | live_stream_lens_supported | optional | bool | 10 | Does camera support setting lens for live streaming? | | live_stream_lens_supported_array | repeated | [EnumLens]({% link protos/open_gopro.md %}enumlens) | 11 | Set of currently supported FOV options |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#notifypresetstatus" + "url": "/OpenGoPro/protos/open_gopro.html#notifylivestreamstatus" }, { - "title": "Protocol Documentation: Preset", - "excerpt": "An individual preset. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](int32) | optional | Preset ID | | mode | [EnumFlatMode](open_gopro-EnumFlatMode) | optional | Preset flatmode ID | | title_id | [EnumPresetTitle](open_gopro-EnumPresetTitle) | optional | Preset Title ID | | title_number | [int32](int32) | optional | Preset Title Number (e.g. 1/2/3 in Custom1, Custom2, Custom3) | | user_defined | [bool](bool) | optional | Is the Preset custom/user-defined? | | icon | [EnumPresetIcon](open_gopro-EnumPresetIcon) | optional | Preset Icon ID | | setting_array | [PresetSetting](open_gopro-PresetSetting) | repeated | Array of settings associated with this Preset | | is_modified | [bool](bool) | optional | Has Preset been modified from factory defaults? (False for user-defined Presets) | | is_fixed | [bool](bool) | optional | Is this Preset mutable? | | custom_name | [string](string) | optional | Custom string name given to this preset via @ref RequestCustomPresetUpdate |", + "title": "open_gopro Protobuf Documentation: NotifyPresetStatus", + "excerpt": "Current Preset status Sent either: - synchronously via initial response to [RequestGetPresetStatus]( {% link protos/open_gopro.md %}requestgetpresetstatus ) - asynchronously when Preset change if registered in @rev RequestGetPresetStatus | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | preset_group_array | repeated | [PresetGroup]({% link protos/open_gopro.md %}presetgroup) | 1 | Array of currently available Preset Groups |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#preset" + "url": "/OpenGoPro/protos/open_gopro.html#notifypresetstatus" }, { - "title": "Protocol Documentation: PresetGroup", - "excerpt": "Preset Group meta information and contained Presets | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [EnumPresetGroup](open_gopro-EnumPresetGroup) | optional | Preset Group ID | | preset_array | [Preset](open_gopro-Preset) | repeated | Array of Presets contained in this Preset Group | | can_add_preset | [bool](bool) | optional | Is there room in the group to add additional Presets? | | icon | [EnumPresetGroupIcon](open_gopro-EnumPresetGroupIcon) | optional | The icon to display for this preset group |", + "title": "open_gopro Protobuf Documentation: Preset", + "excerpt": "An individual preset. | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | id | optional | int32 | 1 | Preset ID | | mode | optional | [EnumFlatMode]({% link protos/open_gopro.md %}enumflatmode) | 2 | Preset flatmode ID | | title_id | optional | [EnumPresetTitle]({% link protos/open_gopro.md %}enumpresettitle) | 3 | Preset Title ID | | title_number | optional | int32 | 4 | Preset Title Number (e.g. 1/2/3 in Custom1, Custom2, Custom3) | | user_defined | optional | bool | 5 | Is the Preset custom/user-defined? | | icon | optional | [EnumPresetIcon]({% link protos/open_gopro.md %}enumpreseticon) | 6 | Preset Icon ID | | setting_array | repeated | [PresetSetting]({% link protos/open_gopro.md %}presetsetting) | 7 | Array of settings associated with this Preset | | is_modified | optional | bool | 8 | Has Preset been modified from factory defaults? (False for user-defined Presets) | | is_fixed | optional | bool | 9 | Is this Preset mutable? | | custom_name | optional | string | 10 | Custom string name given to this preset via [RequestCustomPresetUpdate]( {% link protos/open_gopro.md %}requestcustompresetupdate ) |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#presetgroup" + "url": "/OpenGoPro/protos/open_gopro.html#preset" }, { - "title": "Protocol Documentation: PresetSetting", - "excerpt": "Setting representation that comprises a @ref Preset | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](int32) | optional | Setting ID | | value | [int32](int32) | optional | Setting value | | is_caption | [bool](bool) | optional | Does this setting appear on the Preset \"pill\" in the camera UI? |", + "title": "open_gopro Protobuf Documentation: PresetGroup", + "excerpt": "Preset Group meta information and contained Presets | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | id | optional | [EnumPresetGroup]({% link protos/open_gopro.md %}enumpresetgroup) | 1 | Preset Group ID | | preset_array | repeated | [Preset]({% link protos/open_gopro.md %}preset) | 2 | Array of Presets contained in this Preset Group | | can_add_preset | optional | bool | 3 | Is there room in the group to add additional Presets? | | icon | optional | [EnumPresetGroupIcon]({% link protos/open_gopro.md %}enumpresetgroupicon) | 4 | The icon to display for this preset group |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#presetsetting" + "url": "/OpenGoPro/protos/open_gopro.html#presetgroup" }, { - "title": "Protocol Documentation: EnumFlatMode", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | FLAT_MODE_UNKNOWN | -1 | | | FLAT_MODE_PLAYBACK | 4 | | | FLAT_MODE_SETUP | 5 | | | FLAT_MODE_VIDEO | 12 | | | FLAT_MODE_TIME_LAPSE_VIDEO | 13 | | | FLAT_MODE_LOOPING | 15 | | | FLAT_MODE_PHOTO_SINGLE | 16 | | | FLAT_MODE_PHOTO | 17 | | | FLAT_MODE_PHOTO_NIGHT | 18 | | | FLAT_MODE_PHOTO_BURST | 19 | | | FLAT_MODE_TIME_LAPSE_PHOTO | 20 | | | FLAT_MODE_NIGHT_LAPSE_PHOTO | 21 | | | FLAT_MODE_BROADCAST_RECORD | 22 | | | FLAT_MODE_BROADCAST_BROADCAST | 23 | | | FLAT_MODE_TIME_WARP_VIDEO | 24 | | | FLAT_MODE_LIVE_BURST | 25 | | | FLAT_MODE_NIGHT_LAPSE_VIDEO | 26 | | | FLAT_MODE_SLOMO | 27 | | | FLAT_MODE_IDLE | 28 | | | FLAT_MODE_VIDEO_STAR_TRAIL | 29 | | | FLAT_MODE_VIDEO_LIGHT_PAINTING | 30 | | | FLAT_MODE_VIDEO_LIGHT_TRAIL | 31 | |", + "title": "open_gopro Protobuf Documentation: PresetSetting", + "excerpt": "Setting representation that comprises a [Preset]( {% link protos/open_gopro.md %}preset ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | id | optional | int32 | 1 | Setting ID | | value | optional | int32 | 2 | Setting value | | is_caption | optional | bool | 3 | Does this setting appear on the Preset \"pill\" in the camera UI? |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumflatmode" + "url": "/OpenGoPro/protos/open_gopro.html#presetsetting" }, { - "title": "Protocol Documentation: EnumPresetGroup", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | PRESET_GROUP_ID_VIDEO | 1000 | | | PRESET_GROUP_ID_PHOTO | 1001 | | | PRESET_GROUP_ID_TIMELAPSE | 1002 | | | PRESET_GROUP_ID_VIDEO_DUAL_LENS | 1003 | | | PRESET_GROUP_ID_PHOTO_DUAL_LENS | 1004 | | | PRESET_GROUP_ID_TIMELAPSE_DUAL_LENS | 1005 | | | PRESET_GROUP_ID_SPECIAL | 1006 | |", + "title": "open_gopro Protobuf Documentation: RequestCOHNCert", + "excerpt": "Get the COHN certificate. Returns a [ResponseCOHNCert]( {% link protos/open_gopro.md %}responsecohncert )", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumpresetgroup" + "url": "/OpenGoPro/protos/open_gopro.html#requestcohncert" }, { - "title": "Protocol Documentation: EnumPresetGroupIcon", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | PRESET_GROUP_VIDEO_ICON_ID | 0 | | | PRESET_GROUP_PHOTO_ICON_ID | 1 | | | PRESET_GROUP_TIMELAPSE_ICON_ID | 2 | | | PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID | 3 | | | PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID | 4 | | | PRESET_GROUP_MAX_VIDEO_ICON_ID | 5 | | | PRESET_GROUP_MAX_PHOTO_ICON_ID | 6 | | | PRESET_GROUP_MAX_TIMELAPSE_ICON_ID | 7 | |", + "title": "open_gopro Protobuf Documentation: RequestClearCOHNCert", + "excerpt": "Clear the COHN certificate. Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) with the status of the clear", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumpresetgroupicon" + "url": "/OpenGoPro/protos/open_gopro.html#requestclearcohncert" }, { - "title": "Protocol Documentation: EnumPresetIcon", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | PRESET_ICON_VIDEO | 0 | | | PRESET_ICON_ACTIVITY | 1 | | | PRESET_ICON_CINEMATIC | 2 | | | PRESET_ICON_PHOTO | 3 | | | PRESET_ICON_LIVE_BURST | 4 | | | PRESET_ICON_BURST | 5 | | | PRESET_ICON_PHOTO_NIGHT | 6 | | | PRESET_ICON_TIMEWARP | 7 | | | PRESET_ICON_TIMELAPSE | 8 | | | PRESET_ICON_NIGHTLAPSE | 9 | | | PRESET_ICON_SNAIL | 10 | | | PRESET_ICON_VIDEO_2 | 11 | | | PRESET_ICON_360_VIDEO | 12 | | | PRESET_ICON_PHOTO_2 | 13 | | | PRESET_ICON_PANORAMA | 14 | | | PRESET_ICON_BURST_2 | 15 | | | PRESET_ICON_TIMEWARP_2 | 16 | | | PRESET_ICON_TIMELAPSE_2 | 17 | | | PRESET_ICON_CUSTOM | 18 | | | PRESET_ICON_AIR | 19 | | | PRESET_ICON_BIKE | 20 | | | PRESET_ICON_EPIC | 21 | | | PRESET_ICON_INDOOR | 22 | | | PRESET_ICON_MOTOR | 23 | | | PRESET_ICON_MOUNTED | 24 | | | PRESET_ICON_OUTDOOR | 25 | | | PRESET_ICON_POV | 26 | | | PRESET_ICON_SELFIE | 27 | | | PRESET_ICON_SKATE | 28 | | | PRESET_ICON_SNOW | 29 | | | PRESET_ICON_TRAIL | 30 | | | PRESET_ICON_TRAVEL | 31 | | | PRESET_ICON_WATER | 32 | | | PRESET_ICON_LOOPING | 33 | | | PRESET_ICON_STARS | 34 | New custom icon (34 - 43)added for HERO 12 | | PRESET_ICON_ACTION | 35 | | | PRESET_ICON_FOLLOW_CAM | 36 | | | PRESET_ICON_SURF | 37 | | | PRESET_ICON_CITY | 38 | | | PRESET_ICON_SHAKY | 39 | | | PRESET_ICON_CHESTY | 40 | | | PRESET_ICON_HELMET | 41 | | | PRESET_ICON_BITE | 42 | | | PRESET_ICON_MTB | 43 | | | PRESET_ICON_MAX_VIDEO | 55 | Reserved 44 - 50 for Custom presets. Add icons below for new presets starting from 51 | | PRESET_ICON_MAX_PHOTO | 56 | | | PRESET_ICON_MAX_TIMEWARP | 57 | | | PRESET_ICON_BASIC | 58 | | | PRESET_ICON_ULTRA_SLO_MO | 59 | | | PRESET_ICON_STANDARD_ENDURANCE | 60 | | | PRESET_ICON_ACTIVITY_ENDURANCE | 61 | | | PRESET_ICON_CINEMATIC_ENDURANCE | 62 | | | PRESET_ICON_SLOMO_ENDURANCE | 63 | | | PRESET_ICON_STATIONARY_1 | 64 | | | PRESET_ICON_STATIONARY_2 | 65 | | | PRESET_ICON_STATIONARY_3 | 66 | | | PRESET_ICON_STATIONARY_4 | 67 | | | PRESET_ICON_SIMPLE_SUPER_PHOTO | 70 | | | PRESET_ICON_SIMPLE_NIGHT_PHOTO | 71 | | | PRESET_ICON_HIGHEST_QUALITY_VIDEO | 73 | | | PRESET_ICON_STANDARD_QUALITY_VIDEO | 74 | | | PRESET_ICON_BASIC_QUALITY_VIDEO | 75 | | | PRESET_ICON_STAR_TRAIL | 76 | | | PRESET_ICON_LIGHT_PAINTING | 77 | | | PRESET_ICON_LIGHT_TRAIL | 78 | | | PRESET_ICON_FULL_FRAME | 79 | | | PRESET_ICON_EASY_MAX_VIDEO | 80 | | | PRESET_ICON_EASY_MAX_PHOTO | 81 | | | PRESET_ICON_EASY_MAX_TIMEWARP | 82 | | | PRESET_ICON_EASY_MAX_STAR_TRAIL | 83 | | | PRESET_ICON_EASY_MAX_LIGHT_PAINTING | 84 | | | PRESET_ICON_EASY_MAX_LIGHT_TRAIL | 85 | | | PRESET_ICON_MAX_STAR_TRAIL | 89 | | | PRESET_ICON_MAX_LIGHT_PAINTING | 90 | | | PRESET_ICON_MAX_LIGHT_TRAIL | 91 | | | PRESET_ICON_TIMELAPSE_PHOTO | 1000 | | | PRESET_ICON_NIGHTLAPSE_PHOTO | 1001 | |", + "title": "open_gopro Protobuf Documentation: RequestConnect", + "excerpt": "Connect to (but do not authenticate with) an Access Point This is intended to be used to connect to a previously-connected Access Point Response: [ResponseConnect]( {% link protos/open_gopro.md %}responseconnect ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | ssid | required | string | 1 | AP SSID |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumpreseticon" + "url": "/OpenGoPro/protos/open_gopro.html#requestconnect" }, { - "title": "Protocol Documentation: EnumPresetTitle", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | PRESET_TITLE_ACTIVITY | 0 | | | PRESET_TITLE_STANDARD | 1 | | | PRESET_TITLE_CINEMATIC | 2 | | | PRESET_TITLE_PHOTO | 3 | | | PRESET_TITLE_LIVE_BURST | 4 | | | PRESET_TITLE_BURST | 5 | | | PRESET_TITLE_NIGHT | 6 | | | PRESET_TITLE_TIME_WARP | 7 | | | PRESET_TITLE_TIME_LAPSE | 8 | | | PRESET_TITLE_NIGHT_LAPSE | 9 | | | PRESET_TITLE_VIDEO | 10 | | | PRESET_TITLE_SLOMO | 11 | | | PRESET_TITLE_360_VIDEO | 12 | | | PRESET_TITLE_PHOTO_2 | 13 | | | PRESET_TITLE_PANORAMA | 14 | | | PRESET_TITLE_360_PHOTO | 15 | | | PRESET_TITLE_TIME_WARP_2 | 16 | | | PRESET_TITLE_360_TIME_WARP | 17 | | | PRESET_TITLE_CUSTOM | 18 | | | PRESET_TITLE_AIR | 19 | | | PRESET_TITLE_BIKE | 20 | | | PRESET_TITLE_EPIC | 21 | | | PRESET_TITLE_INDOOR | 22 | | | PRESET_TITLE_MOTOR | 23 | | | PRESET_TITLE_MOUNTED | 24 | | | PRESET_TITLE_OUTDOOR | 25 | | | PRESET_TITLE_POV | 26 | | | PRESET_TITLE_SELFIE | 27 | | | PRESET_TITLE_SKATE | 28 | | | PRESET_TITLE_SNOW | 29 | | | PRESET_TITLE_TRAIL | 30 | | | PRESET_TITLE_TRAVEL | 31 | | | PRESET_TITLE_WATER | 32 | | | PRESET_TITLE_LOOPING | 33 | | | PRESET_TITLE_STARS | 34 | New custom names (34 - 43)added for HERO 12 | | PRESET_TITLE_ACTION | 35 | | | PRESET_TITLE_FOLLOW_CAM | 36 | | | PRESET_TITLE_SURF | 37 | | | PRESET_TITLE_CITY | 38 | | | PRESET_TITLE_SHAKY | 39 | | | PRESET_TITLE_CHESTY | 40 | | | PRESET_TITLE_HELMET | 41 | | | PRESET_TITLE_BITE | 42 | | | PRESET_TITLE_MTB | 43 | | | PRESET_TITLE_360_TIMELAPSE | 51 | Reserved 44 - 50 for custom presets. | | PRESET_TITLE_360_NIGHT_LAPSE | 52 | | | PRESET_TITLE_360_NIGHT_PHOTO | 53 | | | PRESET_TITLE_PANO_TIME_LAPSE | 54 | | | PRESET_TITLE_MAX_VIDEO | 55 | | | PRESET_TITLE_MAX_PHOTO | 56 | | | PRESET_TITLE_MAX_TIMEWARP | 57 | | | PRESET_TITLE_BASIC | 58 | | | PRESET_TITLE_ULTRA_SLO_MO | 59 | | | PRESET_TITLE_STANDARD_ENDURANCE | 60 | | | PRESET_TITLE_ACTIVITY_ENDURANCE | 61 | | | PRESET_TITLE_CINEMATIC_ENDURANCE | 62 | | | PRESET_TITLE_SLOMO_ENDURANCE | 63 | | | PRESET_TITLE_STATIONARY_1 | 64 | | | PRESET_TITLE_STATIONARY_2 | 65 | | | PRESET_TITLE_STATIONARY_3 | 66 | | | PRESET_TITLE_STATIONARY_4 | 67 | | | PRESET_TITLE_SIMPLE_VIDEO | 68 | | | PRESET_TITLE_SIMPLE_TIME_WARP | 69 | | | PRESET_TITLE_SIMPLE_SUPER_PHOTO | 70 | | | PRESET_TITLE_SIMPLE_NIGHT_PHOTO | 71 | | | PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE | 72 | | | PRESET_TITLE_HIGHEST_QUALITY | 73 | | | PRESET_TITLE_EXTENDED_BATTERY | 74 | | | PRESET_TITLE_LONGEST_BATTERY | 75 | | | PRESET_TITLE_STAR_TRAIL | 76 | | | PRESET_TITLE_LIGHT_PAINTING | 77 | | | PRESET_TITLE_LIGHT_TRAIL | 78 | | | PRESET_TITLE_FULL_FRAME | 79 | | | PRESET_TITLE_MAX_LENS_VIDEO | 80 | | | PRESET_TITLE_MAX_LENS_TIMEWARP | 81 | | | PRESET_TITLE_STANDARD_QUALITY_VIDEO | 82 | | | PRESET_TITLE_BASIC_QUALITY_VIDEO | 83 | | | PRESET_TITLE_EASY_MAX_VIDEO | 84 | | | PRESET_TITLE_EASY_MAX_PHOTO | 85 | | | PRESET_TITLE_EASY_MAX_TIMEWARP | 86 | | | PRESET_TITLE_EASY_MAX_STAR_TRAIL | 87 | | | PRESET_TITLE_EASY_MAX_LIGHT_PAINTING | 88 | | | PRESET_TITLE_EASY_MAX_LIGHT_TRAIL | 89 | | | PRESET_TITLE_MAX_STAR_TRAIL | 90 | | | PRESET_TITLE_MAX_LIGHT_PAINTING | 91 | | | PRESET_TITLE_MAX_LIGHT_TRAIL | 92 | | | PRESET_TITLE_HIGHEST_QUALITY_VIDEO | 93 | | | PRESET_TITLE_USER_DEFINED_CUSTOM_NAME | 94 | |", + "title": "open_gopro Protobuf Documentation: RequestConnectNew", + "excerpt": "Connect to and authenticate with an Access Point This is only intended to be used if the AP is not previously provisioned. Response: [ResponseConnectNew]( {% link protos/open_gopro.md %}responseconnectnew ) sent immediately Notification: [NotifProvisioningState]( {% link protos/open_gopro.md %}notifprovisioningstate ) sent periodically as provisioning state changes | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | ssid | required | string | 1 | AP SSID | | password | required | string | 2 | AP password | | static_ip | optional | bytes | 3 | Static IP address | | gateway | optional | bytes | 4 | Gateway IP address | | subnet | optional | bytes | 5 | Subnet mask | | dns_primary | optional | bytes | 6 | Primary DNS | | dns_secondary | optional | bytes | 7 | Secondary DNS |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumpresettitle" + "url": "/OpenGoPro/protos/open_gopro.html#requestconnectnew" }, { - "title": "Protocol Documentation: request_get_preset_status.proto", - "excerpt": "", + "title": "open_gopro Protobuf Documentation: RequestCreateCOHNCert", + "excerpt": "Create the COHN certificate. Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) with the status of the creation | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | override | optional | bool | 1 | Override current provisioning and create new cert |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#request-get-preset-status-proto" + "url": "/OpenGoPro/protos/open_gopro.html#requestcreatecohncert" }, { - "title": "Protocol Documentation: RequestGetPresetStatus", - "excerpt": "Get preset status (and optionally register to be notified when it changes) Response: @ref NotifyPresetStatus sent immediately Notification: @ref NotifyPresetStatus sent periodically as preset status changes, if registered. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | register_preset_status | [EnumRegisterPresetStatus](open_gopro-EnumRegisterPresetStatus) | repeated | Array of Preset statuses to be notified about | | unregister_preset_status | [EnumRegisterPresetStatus](open_gopro-EnumRegisterPresetStatus) | repeated | Array of Preset statuses to stop being notified about |", + "title": "open_gopro Protobuf Documentation: RequestCustomPresetUpdate", + "excerpt": "Request to update the active custom preset This only operates on the currently active Preset and will fail if the current Preset is not custom. The use cases are: 1. Update the Custom Preset Icon - `icon_id` is always optional and can always be passed and / or 2. Update the Custom Preset Title to a... - **Factory Preset Title**: Set `title_id` to a non-94 value - **Custom Preset Name**: Set `title_id` to 94 and specify a `custom_name` Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) with the status of the preset update request. | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | title_id | optional | [EnumPresetTitle]({% link protos/open_gopro.md %}enumpresettitle) | 1 | Preset Title ID The range of acceptable custom title ID's can be found in the initial [NotifyPresetStatus]( {% link protos/open_gopro.md %}notifypresetstatus ) response to [RequestGetPresetStatus]( {% link protos/open_gopro.md %}requestgetpresetstatus ) | | custom_name | optional | string | 2 | utf-8 encoded target custom preset name | | icon_id | optional | [EnumPresetIcon]({% link protos/open_gopro.md %}enumpreseticon) | 3 | Preset Icon ID The range of acceptable custom icon ID's can be found in the initial [NotifyPresetStatus]( {% link protos/open_gopro.md %}notifypresetstatus ) response to [RequestGetPresetStatus]( {% link protos/open_gopro.md %}requestgetpresetstatus ) |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestgetpresetstatus" + "url": "/OpenGoPro/protos/open_gopro.html#requestcustompresetupdate" }, { - "title": "Protocol Documentation: EnumRegisterPresetStatus", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | REGISTER_PRESET_STATUS_PRESET | 1 | Send notification when properties of a preset change | | REGISTER_PRESET_STATUS_PRESET_GROUP_ARRAY | 2 | Send notification when properties of a preset group change |", + "title": "open_gopro Protobuf Documentation: RequestGetApEntries", + "excerpt": "Get a list of Access Points found during a [RequestStartScan]( {% link protos/open_gopro.md %}requeststartscan ) Response: [ResponseGetApEntries]( {% link protos/open_gopro.md %}responsegetapentries ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | start_index | required | int32 | 1 | Used for paging. 0 <= start_index < [ResponseGetApEntries]( {% link protos/open_gopro.md %}responsegetapentries ) .total_entries | | max_entries | required | int32 | 2 | Used for paging. Value must be < [ResponseGetApEntries]( {% link protos/open_gopro.md %}responsegetapentries ) .total_entries | | scan_id | required | int32 | 3 | ID corresponding to a set of scan results (i.e. [ResponseGetApEntries]( {% link protos/open_gopro.md %}responsegetapentries ) .scan_id) |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumregisterpresetstatus" + "url": "/OpenGoPro/protos/open_gopro.html#requestgetapentries" }, { - "title": "Protocol Documentation: response_generic.proto", - "excerpt": "", + "title": "open_gopro Protobuf Documentation: RequestGetCOHNStatus", + "excerpt": "Get the current COHN status. This always returns a [NotifyCOHNStatus]( {% link protos/open_gopro.md %}notifycohnstatus ) Additionally, asynchronous updates can also be registerd to return more [NotifyCOHNStatus]( {% link protos/open_gopro.md %}notifycohnstatus ) when a value changes. | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | register_cohn_status | optional | bool | 1 | 1 to register, 0 to unregister |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#response-generic-proto" + "url": "/OpenGoPro/protos/open_gopro.html#requestgetcohnstatus" }, { - "title": "Protocol Documentation: ResponseGeneric", - "excerpt": "Generic Response used across most response / notification messages @ref EnumResultGeneric | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | result | [EnumResultGeneric](open_gopro-EnumResultGeneric) | required | Generic pass/fail/error info |", + "title": "open_gopro Protobuf Documentation: RequestGetLastCapturedMedia", + "excerpt": "Get the last captured media filename Returns a [ResponseLastCapturedMedia]( {% link protos/open_gopro.md %}responselastcapturedmedia )", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#responsegeneric" + "url": "/OpenGoPro/protos/open_gopro.html#requestgetlastcapturedmedia" }, { - "title": "Protocol Documentation: EnumResultGeneric", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | RESULT_UNKNOWN | 0 | | | RESULT_SUCCESS | 1 | | | RESULT_ILL_FORMED | 2 | | | RESULT_NOT_SUPPORTED | 3 | | | RESULT_ARGUMENT_OUT_OF_BOUNDS | 4 | | | RESULT_ARGUMENT_INVALID | 5 | |", + "title": "open_gopro Protobuf Documentation: RequestGetLiveStreamStatus", + "excerpt": "Get the current livestream status (and optionally register for future status changes) Both current status and future status changes are sent via [NotifyLiveStreamStatus]( {% link protos/open_gopro.md %}notifylivestreamstatus ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | register_live_stream_status | repeated | [EnumRegisterLiveStreamStatus]({% link protos/open_gopro.md %}enumregisterlivestreamstatus) | 1 | Array of live stream statuses to be notified about | | unregister_live_stream_status | repeated | [EnumRegisterLiveStreamStatus]({% link protos/open_gopro.md %}enumregisterlivestreamstatus) | 2 | Array of live stream statuses to stop being notified about |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumresultgeneric" + "url": "/OpenGoPro/protos/open_gopro.html#requestgetlivestreamstatus" }, { - "title": "Protocol Documentation: set_camera_control_status.proto", - "excerpt": "", + "title": "open_gopro Protobuf Documentation: RequestGetPresetStatus", + "excerpt": "Get preset status (and optionally register to be notified when it changes) Response: [NotifyPresetStatus]( {% link protos/open_gopro.md %}notifypresetstatus ) sent immediately Notification: [NotifyPresetStatus]( {% link protos/open_gopro.md %}notifypresetstatus ) sent periodically as preset status changes, if registered. | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | register_preset_status | repeated | [EnumRegisterPresetStatus]({% link protos/open_gopro.md %}enumregisterpresetstatus) | 1 | Array of Preset statuses to be notified about | | unregister_preset_status | repeated | [EnumRegisterPresetStatus]({% link protos/open_gopro.md %}enumregisterpresetstatus) | 2 | Array of Preset statuses to stop being notified about |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#set-camera-control-status-proto" + "url": "/OpenGoPro/protos/open_gopro.html#requestgetpresetstatus" }, { - "title": "Protocol Documentation: RequestSetCameraControlStatus", - "excerpt": "Set Camera Control Status (as part of Global Behaviors feature) Response: @ref ResponseGeneric | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | camera_control_status | [EnumCameraControlStatus](open_gopro-EnumCameraControlStatus) | required | Declare who is taking control of the camera |", + "title": "open_gopro Protobuf Documentation: RequestReleaseNetwork", + "excerpt": "Request to disconnect from current AP network Response: [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric )", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestsetcameracontrolstatus" + "url": "/OpenGoPro/protos/open_gopro.html#requestreleasenetwork" }, { - "title": "Protocol Documentation: EnumCameraControlStatus", - "excerpt": "| Name | Number | Description | | ---- | ------ | ----------- | | CAMERA_IDLE | 0 | | | CAMERA_CONTROL | 1 | Can only be set by camera, not by app or third party | | CAMERA_EXTERNAL_CONTROL | 2 | |", + "title": "open_gopro Protobuf Documentation: RequestSetCOHNSetting", + "excerpt": "Enable and disable COHN if provisioned Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | cohn_active | optional | bool | 1 | 1 to enable, 0 to disable |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#enumcameracontrolstatus" + "url": "/OpenGoPro/protos/open_gopro.html#requestsetcohnsetting" }, { - "title": "Protocol Documentation: turbo_transfer.proto", - "excerpt": "", + "title": "open_gopro Protobuf Documentation: RequestSetCameraControlStatus", + "excerpt": "Set Camera Control Status (as part of Global Behaviors feature) Response: [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | camera_control_status | required | [EnumCameraControlStatus]({% link protos/open_gopro.md %}enumcameracontrolstatus) | 1 | Declare who is taking control of the camera |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#turbo-transfer-proto" + "url": "/OpenGoPro/protos/open_gopro.html#requestsetcameracontrolstatus" }, { - "title": "Protocol Documentation: RequestSetTurboActive", - "excerpt": "Enable/disable display of \"Transferring Media\" UI Response: @ref ResponseGeneric | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | active | [bool](bool) | required | Enable or disable Turbo Transfer feature |", + "title": "open_gopro Protobuf Documentation: RequestSetLiveStreamMode", + "excerpt": "Configure lives streaming The current livestream status can be queried via [RequestGetLiveStreamStatus]( {% link protos/open_gopro.md %}requestgetlivestreamstatus ) Response: [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | url | optional | string | 1 | RTMP(S) URL used for live stream | | encode | optional | bool | 2 | Save media to sdcard while streaming? | | window_size | optional | [EnumWindowSize]({% link protos/open_gopro.md %}enumwindowsize) | 3 | Resolution to use for live stream The set of supported lenses is only available from the `live_stream_window_size_supported_array` in [NotifyLiveStreamStatus]( {% link protos/open_gopro.md %}notifylivestreamstatus )) | | cert | optional | bytes | 6 | Certificate for servers that require it | | minimum_bitrate | optional | int32 | 7 | Minimum desired bitrate (may or may not be honored) | | maximum_bitrate | optional | int32 | 8 | Maximum desired bitrate (may or may not be honored) | | starting_bitrate | optional | int32 | 9 | Starting bitrate | | lens | optional | [EnumLens]({% link protos/open_gopro.md %}enumlens) | 10 | Lens to use for live stream The set of supported lenses is only available from the `live_stream_lens_supported_array` in [NotifyLiveStreamStatus]( {% link protos/open_gopro.md %}notifylivestreamstatus )) |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#requestsetturboactive" + "url": "/OpenGoPro/protos/open_gopro.html#requestsetlivestreammode" }, { - "title": "Protocol Documentation: Scalar Value Types", - "excerpt": "| .proto Type | Notes | C++ | Java | Python | Go | C | PHP | Ruby | | ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | | double | | double | double | float | float64 | double | float | Float | | float | | float | float | float | float32 | float | float | Float | | int32 | Uses variable-length encoding. Inefficient for encoding negative numbers โ€“ if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | | int64 | Uses variable-length encoding. Inefficient for encoding negative numbers โ€“ if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | | uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | | uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | | sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | | sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | | fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | | fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | | sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | | sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | | bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | | string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | | bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |", + "title": "open_gopro Protobuf Documentation: RequestSetTurboActive", + "excerpt": "Enable/disable display of \"Transferring Media\" UI Response: [ResponseGeneric]( {% link protos/open_gopro.md %}responsegeneric ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | active | required | bool | 1 | Enable or disable Turbo Transfer feature |", "categories": [], "tags": [], - "url": "/OpenGoPro/protos#scalar-value-types" + "url": "/OpenGoPro/protos/open_gopro.html#requestsetturboactive" }, { - "title": "Tutorials: ", - "excerpt": "This set of tutorials is a series of sample scripts / files and accompanying .html walk-throughs to implement basic functionality to interact with a GoPro device using the following languages: - Python - Kotlin - More to come! The tutorials only support Open GoPro Version 2.0 and must be run on a [supported camera]({% link specs/ble_versions/ble_2_0.md %}supported-cameras). They will provide walk-throughs and sample code to use the relevant language / framework to exercise the Open GoPro Interface using Bluetooth Low Energy (BLE) and HTTP over WiFi. The tutorials are meant as an introduction to the Open GoPro specification. They are not a substitute for the complete [BLE]({% link specs/ble_versions/ble_2_0.md %}) and [HTTP]({% link specs/http_versions/http_2_0.md %}) specifications which will be your main source of reference after completing the tutorials. {% for tutorial in site.tutorials %} - [{{ tutorial.title }}]({{ tutorial.permalink | prepend: site.baseurl }}) {% endfor %}", + "title": "open_gopro Protobuf Documentation: RequestStartScan", + "excerpt": "Start scanning for Access Points > Serialization of this object is zero bytes. Response: [ResponseStartScanning]( {% link protos/open_gopro.md %}responsestartscanning ) are sent immediately after the camera receives this command Notifications: [NotifStartScanning]( {% link protos/open_gopro.md %}notifstartscanning ) are sent periodically as scanning state changes. Use to detect scan complete.", "categories": [], "tags": [], - "url": "/OpenGoPro/tutorials/#" + "url": "/OpenGoPro/protos/open_gopro.html#requeststartscan" }, { - "title": "Over the Air Firmware Update Demo: ", - "excerpt": "Over the Air Firmware Update Demo Assumptions Prerequisites OTA Procedure Usage Testing This directory contains a bash script to perform an over-the-air (OTA) firmware (FW) update to the camera. Assumptions The host PC is already connected via WiFi to the target camera The target FW images are already provided from GoPro as a .zip file. These can be found on the Update Page or programmatically from the Firmware Catalog JSON information. Prerequisites Alternatively to satisfying these prerequisites, the script can be run with the Docker option (see usage) The script uses open ssl to calculate the hash so openssl must be installed and available on the system path. The script uses curl to send HTTP commands so curl must be installed and available on the system path. OTA Procedure The OTA procedure requires the following steps: Calculate the SHA1 hash of the target .zip file. Delete any partially stored data. Show the update UI Upload the target firmware to the camera Notify the camera that the upload is complete Instruct the camera to load the new firmware Usage Call the send_ota.sh script here with the -h option for a detailed usage: Usage: ./send_ota.sh [-d] OTA_UPDATE_FILE Given a target FW .zip file, calculate its SHA1 hash, then send it over-the-air to an already connected camera. Required positional arguments: OTA_UPDATE_FILE target .zip file to send over-the-air. If using docker, must be passed as relative path from the directory of this script Optional arguments: -d Use docker for openssl and curl commands. -h Print this Help. Testing There is a test script that will use a Python script (contained in a Docker container) to: get the FW catalog JSON get the UPDATE.zip from the link in the JSON exercise the send_ota.sh script to send this firmware to the camera (outside of the container) The test script is located ./test/test.sh and should be passed the camera that is connected, i.e.: ./test.sh \"HERO_11\" Note! The test script needs to be run from the test folder You can also run with the --help parameter to get a list of cameras.", + "title": "open_gopro Protobuf Documentation: ResponseCOHNCert", + "excerpt": "COHN Certificate response triggered by RequestCOHNCert | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | optional | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Was request successful? | | cert | optional | string | 2 | Root CA cert (ASCII text) |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/bash/ota_update#" + "url": "/OpenGoPro/protos/open_gopro.html#responsecohncert" }, { - "title": "GoPro C/C++ Demos: ", - "excerpt": "GoPro C/C++ Demos Build Requirements Steps Run Requirements Steps Media Commands Stream Commands This folder contains C and C++ examples to perform some Open GoPro functionality. There are two examples, each of which are detailed in a section below. Media Commands Stream Commands Build Requirements This demo depends on the following external libraries: libCurl: a client-side URL transfer library used to make command requests to the camera over WiFi and get the JSON response cJSON: an ultra-light JSON parser that can be used to parse the JSON responses from the WiFi commands To use the build system contained here, the following programs are required to be installed: Conan: a python-based C / C++ package manager If a local python 3 is found, this will be automatically installed CMake: a project configuration and build tool Steps Run the build.sh file. This will: verify existence of requirements (and install Conan if applicable) use Conan to download and install libCurl and cJson use CMake to configure build system and build executables The output binaries will then be available in build/bin Run Requirements Before running the executables built here, you must first be connected to the cameraโ€™s WiFi Access Point. This can be done via: Connect BLE to turn on AP and get WiFi SSID/PASSPHRASE Use retrieved WiFi SSID/PASSPHRASE to connect system to GoPro WiFi A programmatic example of this process can be found in the Open GoPro Python SDKโ€™s Connect Wifi Demo. This can be run (assuming a local Python 3.8.x installation exists) via: pip install open-gopro gopro-wifi Steps Media Commands This demo shows one way to get the media list and download the first media file. It also supports requests to get the media list, media info and downloading specific media files. For a list of possible commands, do: $ ./build/bin/media_commands --help Media List: $ ./build/bin/media_commands <-l, --list_files> Media List(Pretty Print): $ ./build/bin/media_commands <-f, --list_files_pretty> Media Info: $ ./build/bin/media_commands <-i, --info> <camera_file_path> Media Info(Pretty Print): $ ./build/bin/media_commands <-p, --info_pretty> <camera_file_path> Media Download: $ ./build/bin/media_commands <-g, --download> <camera_file_path> <output_path/output_file_name> Media Hilight Moment: $ ./build/bin/media_commands --tag Media Hilight File: $ ./build/bin/media_commands --tag-video <video_file_path> <offset_ms> $ ./build/bin/media_commands --tag-photo <photo_file_path> Media Hilight Remove: $ ./build/bin/media_commands --tag-video-remove <video_file_path> <offset_ms> $ ./build/bin/media_commands --tag-photo-remove <photo_file_path> Media Demo: $ ./build/bin/media_commands <-d, --demo> <output_path> Stream Commands This demo demonstrates one way to start and stop the preview stream. Note: To run the Preview Stream demo. A media player (i.e: VLC) that supports UDP is needed to view the preview stream. The UDP address is udp://0.0.0.0:8554 Start Stream: $ ./build/bin/stream_commands <-s, --start> Stop Stream: $ ./build/bin/stream_commands <-e, --end> Preview Stream Demo: $ ./build/bin/stream_commands <-d, --demo>", + "title": "open_gopro Protobuf Documentation: ResponseConnect", + "excerpt": "The status of an attempt to connect to an Access Point Sent as the initial response to [RequestConnect]( {% link protos/open_gopro.md %}requestconnect ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Generic pass/fail/error info | | provisioning_state | required | [EnumProvisioning]({% link protos/open_gopro.md %}enumprovisioning) | 2 | Provisioning/connection state | | timeout_seconds | required | int32 | 3 | Network connection timeout (seconds) |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/c_c++/GoProC_C++Demo#" + "url": "/OpenGoPro/protos/open_gopro.html#responseconnect" }, { - "title": "GoPro Low Latency Stream Demo: ", - "excerpt": "This demostrates how to decode the GoPro webcam or 16x9 video preview stream using the ffmpeg library. To use this demo, plug in a hero 9 or hero 10 camera while in a standard video mode and run the app. The webcam stream at 1080p should be displayed in the window. The display output is not optimized. To switch to preview stream (720p non processed stream), uncomment the define in GoProStreamDemo.h //define USE_PREVIEW_STREAM", + "title": "open_gopro Protobuf Documentation: ResponseConnectNew", + "excerpt": "The status of an attempt to connect to an Access Point Sent as the initial response to [RequestConnectNew]( {% link protos/open_gopro.md %}requestconnectnew ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Status of Connect New request | | provisioning_state | required | [EnumProvisioning]({% link protos/open_gopro.md %}enumprovisioning) | 2 | Current provisioning state of the network | | timeout_seconds | required | int32 | 3 | number of seconds camera will wait before declaring a network connection attempt failed. |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/c_c++/GoProStreamDemo#" + "url": "/OpenGoPro/protos/open_gopro.html#responseconnectnew" }, { - "title": "GoProCSharpSample: ", - "excerpt": "This sample demonstrates how to discover, pair, and connect to a GoPro camera via Bluetooth LE (BLE). Once a connection is established, the code shows how to: Enable Wi-Fi on the GoPro camera Read the camera wifi name and password Get status and notification of cameraโ€™s battery level, encoding flag, and wifi ap on flag. Start and stop camera shutter Requirements Visual Studio is required to run the solution. Visit https://visualstudio.microsoft.com/downloads/ to download. The target .NET framework is v4.7.2 GoPro camera must be paired before any other operations will succeed. Put the camera in pairing mode before attempting pairing with the app. Usage Open and run the demo in Visual Studio to show the GUI Scan for GoPro devices Pair to the discovered device that is not GoPro Cam. In the .gif below, this is GoPro 0456 (Only needs to be done once, or if camera is factory reset) After pairing is successful, connect to the same GoPro device Now use any of the GUI buttons to read WiFi info, enable WiFi AP, set shutter, etc.", + "title": "open_gopro Protobuf Documentation: ResponseGeneric", + "excerpt": "Generic Response used across most response / notification messages [EnumResultGeneric]( {% link protos/open_gopro.md %}enumresultgeneric ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Generic pass/fail/error info |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/csharp/GoProCSharpSample#" + "url": "/OpenGoPro/protos/open_gopro.html#responsegeneric" }, { - "title": "CSharp Webcam Demo: ", - "excerpt": "This demo implements a simple GUI to interact with a GoPro camera that supports Open GoPro 2.0. Requirements This demo will only run on Windows. Visual Studio is required to run the solution. Visit VisualStudio to download. The target .NET framework is v4.7.2 GoPro camera must be paired before any other operations will succeed. Put the camera in pairing mode before attempting pairing with the app. Prerequisites The correct GoPro Webcam drivers must be installed. To verify this, ensure that you can first use your desired GoPro as a webcam following the steps here. Usage Connect the GoPro to your computer using the USB cable Open the solution (GoProWebCamViewer.sln) in Visual Studio, build and run io to show the Webcam GUI Select Start Player to start the VLC backend. Note that the log and status bar have updated. This will be true for all functionality. Select Show Preview to start a low quality preview stream While in preview, feel free to update the FOV or change the zoom Once you are ready, select Start Webcam to start full resolution streaming", + "title": "open_gopro Protobuf Documentation: ResponseGetApEntries", + "excerpt": "A list of scan entries describing a scanned Access Point This is sent in response to a [RequestGetApEntries]( {% link protos/open_gopro.md %}requestgetapentries ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Generic pass/fail/error info | | scan_id | required | int32 | 2 | ID associated with this batch of results | | entries | repeated | [ScanEntry]({% link protos/open_gopro.md %}scanentry) | 3 | Array containing details about discovered APs |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/csharp/webcam#" + "url": "/OpenGoPro/protos/open_gopro.html#responsegetapentries" }, { - "title": "Multi Webcam: ", - "excerpt": "Multi Webcam Assumptions Installation Quick Start Start Webcam Example Single Webcam Multiple Webcams Module Usage This is a small Python module to demonstrate GoPro Webcam usage, including how to use multiple webcams simultaneously from the same PC. Assumptions It is assumed that the GoProโ€™s are using firmware versions that support the port parameter to the Start Webcam endpoint. See the Open GoPro Commands Quick Reference for more information. Installation This module requires Python >= 3.9 and < 3.11. It should be installed locally, either with pip via: pip install . or poetry via: poetry install --only main Quick Start Once installed, the following CLI programs are available: Each CLI has useful help available by calling it with the --help argument Start Webcam Configure and start a single webcam. Its stream can then be viewed using, for example VLC. usage: start-webcam [-h] [-p PORT] [-r RESOLUTION] [-f FOV] serial Enable and start the webcam. positional arguments: serial Last 3 digits of camera serial number. options: -h, --help show this help message and exit -p PORT, --port PORT Port to use. If not set, port will not be specified to camera. -r RESOLUTION, --resolution RESOLUTION Resolution to use. If set, fov must also be set. -f FOV, --fov FOV FOV to use. If set, resolution must also be set Example start-webcam 992 -p 9000 The stream can than be viewed at udp://@0.0.0.0:9001 Single Webcam Configure and start a single webcam. Then display its stream. This is different than the previous program in that it also handles displaying the stream (using OpenCV). usage: single-webcam [-h] [-p PORT] [-r RESOLUTION] [-f FOV] serial Enable and start the webcam and a player to view it. positional arguments: serial Last 3 digits of camera serial number. options: -h, --help show this help message and exit -p PORT, --port PORT Port to use. If not set, port will not be specified to camera. -r RESOLUTION, --resolution RESOLUTION Resolution to use. If set, fov must also be set. -f FOV, --fov FOV FOV to use. If set, resolution must also be set Multiple Webcams Using a .json configuraton file, configure, start, and view multiple webcams. usage: multi-webcam [-h] config Configure, enable and start webcams with players to view them. positional arguments: config Location of config json file. options: -h, --help show this help message and exit where an example config file could look like this: { \"992\": { \"port\": 9000, \"resolution\": 12, \"fov\": 0 }, \"149\": { \"resolution\": 12, \"fov\": 0 } } If port is not set, an available port will be discovered automatically starting at 8554. If resolution or fov are not set, they will be set to defaults by the GoPro. Cameras Module Usage For detailed module usage, see the docstrings in ./multi_webcam/webcam.py.", + "title": "open_gopro Protobuf Documentation: ResponseLastCapturedMedia", + "excerpt": "Message sent in response to a [RequestGetLastCapturedMedia]( {% link protos/open_gopro.md %}requestgetlastcapturedmedia ) This contains the complete path of the last captured media. Depending on the type of media captured, it will return: - Single photo / video: The single media path - Any grouped media: The path to the first captured media in the group | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | optional | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Was the request successful? | | media | optional | [Media]({% link protos/open_gopro.md %}media) | 2 | Last captured media if result is RESULT_SUCCESS. Invalid if result is RESULT_RESOURCE_NOT_AVAILBLE. |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/python/multi_webcam#" + "url": "/OpenGoPro/protos/open_gopro.html#responselastcapturedmedia" }, { - "title": "Open GoPro Python SDK: ", - "excerpt": "This is a Python package that provides an interface for the user to exercise the Open GoPro Bluetooth Low Energy (BLE) and Wi-Fi / USB HTTP APIโ€™s as well as install command line interfaces to take photos, videos, and view video streams. Free software: MIT license Documentation: View on Open GoPro View on Github Documentation Note! This README is only an overview of the package. Complete documentation can be found on Open GoPro Features Top-level GoPro class interface to use BLE, WiFi, and / or USB Cross-platform (tested on MacOS Big Sur, Windows 10, and Ubuntu 20.04) BLE implemented using bleak Wi-Fi controller provided in the Open GoPro package (loosely based on the Wireless Library Supports all commands, settings, and statuses from the Open GoPro API Asyncio based Automatically handles connection maintenance: manage camera ready / encoding periodically sends keep alive signals Includes detailed logging for each module Includes demo scripts installed as command-line applications to show BLE, WiFi, and USB functionality such as: Take a photo Take a video Configure and view a GoPro webcam stream GUI to send all commands and view the live / preview stream Log the battery Installation Note! This package requires Python >= 3.8 and < 3.12 The minimal install to use the Open GoPro library and the CLI demos is: $ pip install open-gopro To also install the extra dependencies to run the GUI demos, do: $ pip install open-gopro[gui] Usage To automatically connect to GoPro device via BLE and WiFI, set the preset, set video parameters, take a video, and download all files: import asyncio from open_gopro import WirelessGoPro, Params async def main(): async with WirelessGoPro() as gopro: await gopro.ble_setting.resolution.set(Params.Resolution.RES_4K) await gopro.ble_setting.fps.set(Params.FPS.FPS_30) await gopro.ble_command.set_shutter(shutter=Params.Toggle.ENABLE) await asyncio.sleep(2) Record for 2 seconds await gopro.ble_command.set_shutter(shutter=Params.Toggle.DISABLE) Download all of the files from the camera media_list = (await gopro.http_command.get_media_list()).data.files for item in media_list: await gopro.http_command.download_file(camera_file=item.filename) asyncio.run(main()) And much more! Demos Note! These demos can be found on Github Demos can be found in the installed package in the โ€œdemosโ€ folder. They are installed as a CLI entrypoint and can be run as shown below. Command Line Interface (CLI) Demos All of these demos are CLI only and can thus be run with the minimal (non-GUI) install. Capture a photo and download it to your computer: $ gopro-photo Capture a video and download it to your computer: $ gopro-video Connect to the GoPro and log battery consumption in to a .csv: $ gopro-log-battery Connect to the GoProโ€™s Wi-Fi AP and maintain the connection: $ gopro-wifi For more information on each, try running with help as such: $ gopro-photo --help usage: gopro-photo [-h] [-i IDENTIFIER] [-l LOG] [-o OUTPUT] [-w WIFI_INTERFACE] Connect to a GoPro camera, take a photo, then download it. optional arguments: -h, --help show this help message and exit -i IDENTIFIER, --identifier IDENTIFIER Last 4 digits of GoPro serial number, which is the last 4 digits of the default camera SSID. If not used, first discovered GoPro will be connected to -l LOG, --log LOG Location to store detailed log -o OUTPUT, --output OUTPUT Where to write the photo to. If not set, write to 'photo.jpg' -w WIFI_INTERFACE, --wifi_interface WIFI_INTERFACE System Wifi Interface. If not set, first discovered interface will be used. GUI Demos These demos require the additional GUI installation. Start the preview stream and view it: $ gopro-preview-stream Start the live stream and view it: $ gopro-live-stream", + "title": "open_gopro Protobuf Documentation: ResponseStartScanning", + "excerpt": "The current scanning state. This is the initial response to a [RequestStartScan]( {% link protos/open_gopro.md %}requeststartscan ) | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}enumresultgeneric) | 1 | Generic pass/fail/error info | | scanning_state | required | [EnumScanning]({% link protos/open_gopro.md %}enumscanning) | 2 | Scanning state |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/python/sdk_wireless_camera_control#" + "url": "/OpenGoPro/protos/open_gopro.html#responsestartscanning" }, { - "title": "Swift Enable WiFi Demo: ", - "excerpt": "This demo demonstrates how to discover and connect to a GoPro camera via Bluetooth LE (BLE). Once a connection is established, the demo demonstrates how to enable Wi-Fi on the GoPro camera and join the cameraโ€™s Wi-Fi. The steps required to join cameraโ€™s Wi-Fi are: Enable Wi-Fi Request cameraโ€™s Wi-Fi settings (SSID and password) Use iOS NetworkExtension API to join cameraโ€™s WiFi Requirements GoPro camera must be paired with the mobile device. If the camera is not paired, put the camera in pairing mode File Structure BLE CentralManager.swift - A simple wrapper around CBCentralManager to handle CoreBluetooth Central related tasks Peripheral.swift - A simple wrapper around CBPeripheral to handle CoreBluetooth Peripheral related tasks Peripheral+Camera.swift - An extension of Peripheral class for sending commands to a GoPro camera Views CameraSelectionView.swift - A SwiftUI list view for showing the nearby GoPro cameras CameraView.swift - A simple view with a button for initiate the request to enable Wi-Fi on the connected GoPro camera", + "title": "open_gopro Protobuf Documentation: ScanEntry", + "excerpt": "The individual Scan Entry model | Field | Typespec | Value Type | Value | Summary | | ----- | -------- | ---------- | ----- | ------- | | ssid | required | string | 1 | AP SSID | | signal_strength_bars | required | int32 | 2 | Signal strength (3 bars: >-70 dBm; 2 bars: >-85 dBm; 1 bar: <=-85 dBm) | | signal_frequency_mhz | required | int32 | 4 | Signal frequency (MHz) | | scan_entry_flags | required | int32 | 5 | Bitmasked value from [EnumScanEntryFlags]( {% link protos/open_gopro.md %}enumscanentryflags ) |", "categories": [], "tags": [], - "url": "/OpenGoPro/demos/swift/EnableWiFiDemo#" + "url": "/OpenGoPro/protos/open_gopro.html#scanentry" }, { "title": "Tutorial 1: Connect BLE: ", diff --git a/ble_2_0.html b/ble_2_0.html index df7e4477..cee92bf2 100644 --- a/ble_2_0.html +++ b/ble_2_0.html @@ -138,7 +138,7 @@ Tutorials
  • - Demos + Demos
  • FAQ @@ -346,7 +346,7 @@

    GoPro

  • - Protobuf + Protobuf @@ -386,7 +386,7 @@

    Bluetooth Low Energy - 61 minute read + 67 minute read @@ -527,6 +527,7 @@

    Bluetooth Low Energy Preset Status

  • @@ -1942,7 +1943,7 @@

    Settings Quick Reference

    Set video resolution (id: 2) to 4k (id: 1) 03:02:01:01 02:02:00 - โŒ + >= v02.00.00 โœ” โœ” โœ” @@ -1954,7 +1955,7 @@

    Settings Quick Reference

    Set video resolution (id: 2) to 2.7k (id: 4) 03:02:01:04 02:02:00 - โŒ + >= v02.00.00 โœ” โœ” โœ” @@ -1990,7 +1991,7 @@

    Settings Quick Reference

    Set video resolution (id: 2) to 1080 (id: 9) 03:02:01:09 02:02:00 - โŒ + >= v02.00.00 โœ” โœ” โœ” @@ -2002,7 +2003,7 @@

    Settings Quick Reference

    Set video resolution (id: 2) to 4k 4:3 (id: 18) 03:02:01:12 02:02:00 - โŒ + >= v02.00.00 โœ” โœ” โœ” @@ -2098,7 +2099,7 @@

    Settings Quick Reference

    Set video resolution (id: 2) to 5.3k (id: 100) 03:02:01:64 02:02:00 - โŒ + >= v02.00.00 โœ” โœ” โœ” @@ -2176,6 +2177,66 @@

    Settings Quick Reference

    โŒ โŒ + + 2 + Resolution + Set video resolution (id: 2) to 5.3k (id: 107) + 03:02:01:6B + 02:02:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 2 + Resolution + Set video resolution (id: 2) to 4k (id: 108) + 03:02:01:6C + 02:02:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 2 + Resolution + Set video resolution (id: 2) to 4k (id: 109) + 03:02:01:6D + 02:02:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 2 + Resolution + Set video resolution (id: 2) to 1080 (id: 110) + 03:02:01:6E + 02:02:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 2 + Resolution + Set video resolution (id: 2) to 2.7k (id: 111) + 03:02:01:6F + 02:02:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + 3 Frames Per Second @@ -3187,7 +3248,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 8x ultra slo-mo (id: 0) + Set speed (id: 176) to 8x ultra slo-mo (id: 0) 03:B0:01:00 02:B0:00 โœ” @@ -3199,7 +3260,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (id: 1) + Set speed (id: 176) to 4x super slo-mo (id: 1) 03:B0:01:01 02:B0:00 โœ” @@ -3211,7 +3272,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 2) + Set speed (id: 176) to 2x slo-mo (id: 2) 03:B0:01:02 02:B0:00 โœ” @@ -3223,7 +3284,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x (low light) (id: 3) + Set speed (id: 176) to 1x speed (low light) (id: 3) 03:B0:01:03 02:B0:00 โœ” @@ -3235,7 +3296,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (ext. batt) (id: 4) + Set speed (id: 176) to 4x super slo-mo (ext. batt.) (id: 4) 03:B0:01:04 02:B0:00 โŒ @@ -3247,7 +3308,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (ext. batt) (id: 5) + Set speed (id: 176) to 2x slo-mo (ext. batt.) (id: 5) 03:B0:01:05 02:B0:00 โŒ @@ -3259,7 +3320,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x (ext. batt, low light) (id: 6) + Set speed (id: 176) to 1x speed (ext. batt.) (low light) (id: 6) 03:B0:01:06 02:B0:00 โŒ @@ -3271,7 +3332,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 8x ultra slo-mo (50hz) (id: 7) + Set speed (id: 176) to 8x ultra slo-mo (50hz) (id: 7) 03:B0:01:07 02:B0:00 โœ” @@ -3283,7 +3344,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (50hz) (id: 8) + Set speed (id: 176) to 4x super slo-mo (50hz) (id: 8) 03:B0:01:08 02:B0:00 โœ” @@ -3295,7 +3356,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (50hz) (id: 9) + Set speed (id: 176) to 2x slo-mo (50hz) (id: 9) 03:B0:01:09 02:B0:00 โœ” @@ -3307,7 +3368,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x (low light, 50hz) (id: 10) + Set speed (id: 176) to 1x speed (50hz) (low light) (id: 10) 03:B0:01:0A 02:B0:00 โœ” @@ -3319,7 +3380,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (ext. batt, 50hz) (id: 11) + Set speed (id: 176) to 4x super slo-mo (50hz) (ext. batt.) (id: 11) 03:B0:01:0B 02:B0:00 โŒ @@ -3331,7 +3392,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (ext. batt, 50hz) (id: 12) + Set speed (id: 176) to 2x slo-mo (50hz) (ext. batt.) (id: 12) 03:B0:01:0C 02:B0:00 โŒ @@ -3343,7 +3404,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x (ext. batt, low light, 50hz) (id: 13) + Set speed (id: 176) to 1x speed (50hz) (ext. batt.) (low light) (id: 13) 03:B0:01:0D 02:B0:00 โŒ @@ -3355,7 +3416,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 8x ultra slo-mo (ext. batt) (id: 14) + Set speed (id: 176) to 8x ultra slo-mo (ext. batt.) (id: 14) 03:B0:01:0E 02:B0:00 โŒ @@ -3367,7 +3428,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 8x ultra slo-mo (ext. batt, 50hz) (id: 15) + Set speed (id: 176) to 8x ultra slo-mo (50hz) (ext. batt.) (id: 15) 03:B0:01:0F 02:B0:00 โŒ @@ -3379,7 +3440,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 8x ultra slo-mo (long. batt) (id: 16) + Set speed (id: 176) to 8x ultra slo-mo (long. batt.) (id: 16) 03:B0:01:10 02:B0:00 โœ” @@ -3391,7 +3452,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (long. batt) (id: 17) + Set speed (id: 176) to 4x super slo-mo (long. batt.) (id: 17) 03:B0:01:11 02:B0:00 โœ” @@ -3403,7 +3464,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (long. batt) (id: 18) + Set speed (id: 176) to 2x slo-mo (long. batt.) (id: 18) 03:B0:01:12 02:B0:00 โœ” @@ -3415,7 +3476,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x (long. batt, low light) (id: 19) + Set speed (id: 176) to 1x speed (long. batt.) (low light) (id: 19) 03:B0:01:13 02:B0:00 โœ” @@ -3427,7 +3488,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 8x ultra slo-mo (long. batt, 50hz) (id: 20) + Set speed (id: 176) to 8x ultra slo-mo (50hz) (long. batt.) (id: 20) 03:B0:01:14 02:B0:00 โœ” @@ -3439,7 +3500,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (long. batt, 50hz) (id: 21) + Set speed (id: 176) to 4x super slo-mo (50hz) (long. batt.) (id: 21) 03:B0:01:15 02:B0:00 โœ” @@ -3451,7 +3512,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (long. batt, 50hz) (id: 22) + Set speed (id: 176) to 2x slo-mo (50hz) (long. batt.) (id: 22) 03:B0:01:16 02:B0:00 โœ” @@ -3463,7 +3524,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x (long. batt, low light, 50hz) (id: 23) + Set speed (id: 176) to 1x speed (50hz) (long. batt.) (low light) (id: 23) 03:B0:01:17 02:B0:00 โœ” @@ -3475,7 +3536,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (4k) (id: 24) + Set speed (id: 176) to 2x slo-mo (4k) (id: 24) 03:B0:01:18 02:B0:00 โœ” @@ -3487,7 +3548,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (2.7k) (id: 25) + Set speed (id: 176) to 4x super slo-mo (2.7k) (id: 25) 03:B0:01:19 02:B0:00 โŒ @@ -3499,7 +3560,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (4k, 50hz) (id: 26) + Set speed (id: 176) to 2x slo-mo (4k) (50hz) (id: 26) 03:B0:01:1A 02:B0:00 โœ” @@ -3511,7 +3572,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 4x super slo-mo (2.7k, 50hz) (id: 27) + Set speed (id: 176) to 4x super slo-mo (2.7k) (50hz) (id: 27) 03:B0:01:1B 02:B0:00 โŒ @@ -3523,7 +3584,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 28) + Set speed (id: 176) to 1x speed (low light) (vertical) (id: 28) 03:B0:01:1C 02:B0:00 โœ” @@ -3535,7 +3596,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 29) + Set speed (id: 176) to 1x speed (50hz) (low light) (vertical) (id: 29) 03:B0:01:1D 02:B0:00 โœ” @@ -3547,7 +3608,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 30) + Set speed (id: 176) to 2x slo-mo (vertical) (id: 30) 03:B0:01:1E 02:B0:00 โœ” @@ -3559,7 +3620,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 31) + Set speed (id: 176) to 2x slo-mo (50hz) (vertical) (id: 31) 03:B0:01:1F 02:B0:00 โœ” @@ -3571,7 +3632,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 32) + Set speed (id: 176) to 1x speed (full frame) (low light) (id: 32) 03:B0:01:20 02:B0:00 โœ” @@ -3583,7 +3644,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 33) + Set speed (id: 176) to 1x speed (50hz) (full frame) (low light) (id: 33) 03:B0:01:21 02:B0:00 โœ” @@ -3595,7 +3656,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 34) + Set speed (id: 176) to 2x slo-mo (full frame) (id: 34) 03:B0:01:22 02:B0:00 โœ” @@ -3607,7 +3668,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 35) + Set speed (id: 176) to 2x slo-mo (50hz) (full frame) (id: 35) 03:B0:01:23 02:B0:00 โœ” @@ -3619,7 +3680,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 36) + Set speed (id: 176) to 1x speed (4k) (low light) (id: 36) 03:B0:01:24 02:B0:00 โœ” @@ -3631,7 +3692,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 37) + Set speed (id: 176) to 1x speed (4k) (50hz) (low light) (id: 37) 03:B0:01:25 02:B0:00 โœ” @@ -3643,7 +3704,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 38) + Set speed (id: 176) to 1x speed (2.7k) (low light) (id: 38) 03:B0:01:26 02:B0:00 โœ” @@ -3655,7 +3716,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 39) + Set speed (id: 176) to 1x speed (2.7k) (50hz) (low light) (id: 39) 03:B0:01:27 02:B0:00 โœ” @@ -3667,7 +3728,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 40) + Set speed (id: 176) to 2x slo-mo (2.7k) (id: 40) 03:B0:01:28 02:B0:00 โœ” @@ -3679,7 +3740,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 41) + Set speed (id: 176) to 2x slo-mo (2.7k) (50hz) (id: 41) 03:B0:01:29 02:B0:00 โœ” @@ -3691,7 +3752,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 42) + Set speed (id: 176) to 2x slo-mo (long. batt.) (vertical) (id: 42) 03:B0:01:2A 02:B0:00 โœ” @@ -3703,7 +3764,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 2x slo-mo (id: 43) + Set speed (id: 176) to 2x slo-mo (50hz) (long. batt.) (vertical) (id: 43) 03:B0:01:2B 02:B0:00 โœ” @@ -3715,7 +3776,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 44) + Set speed (id: 176) to 1x speed (long. batt.) (low light) (vertical) (id: 44) 03:B0:01:2C 02:B0:00 โœ” @@ -3727,7 +3788,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 45) + Set speed (id: 176) to 1x speed (50hz) (long. batt.) (low light) (vertical) (id: 45) 03:B0:01:2D 02:B0:00 โœ” @@ -3739,7 +3800,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 46) + Set speed (id: 176) to 1x speed (4k) (full frame) (low light) (id: 46) 03:B0:01:2E 02:B0:00 โœ” @@ -3751,7 +3812,7 @@

    Settings Quick Reference

    176 Speed - Set speed (id: 176) to 1x speed / low light (id: 47) + Set speed (id: 176) to 1x speed (4k) (50hz) (full frame) (low light) (id: 47) 03:B0:01:2F 02:B0:00 โœ” @@ -3760,6 +3821,462 @@

    Settings Quick Reference

    โŒ โŒ + + 176 + Speed + Set speed (id: 176) to 8x ultra slo-mo (v2) (id: 100) + 03:B0:01:64 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 4x super slo-mo (v2) (id: 101) + 03:B0:01:65 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (v2) (id: 102) + 03:B0:01:66 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (low light) (v2) (id: 103) + 03:B0:01:67 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 8x ultra slo-mo (50hz) (v2) (id: 104) + 03:B0:01:68 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 4x super slo-mo (50hz) (v2) (id: 105) + 03:B0:01:69 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (50hz) (v2) (id: 106) + 03:B0:01:6A + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (50hz) (low light) (v2) (id: 107) + 03:B0:01:6B + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 8x ultra slo-mo (long. batt.) (v2) (id: 108) + 03:B0:01:6C + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 4x super slo-mo (long. batt.) (v2) (id: 109) + 03:B0:01:6D + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (long. batt.) (v2) (id: 110) + 03:B0:01:6E + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (long. batt.) (low light) (v2) (id: 111) + 03:B0:01:6F + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 8x ultra slo-mo (50hz) (long. batt.) (v2) (id: 112) + 03:B0:01:70 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 4x super slo-mo (50hz) (long. batt.) (v2) (id: 113) + 03:B0:01:71 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (50hz) (long. batt.) (v2) (id: 114) + 03:B0:01:72 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (50hz) (long. batt.) (low light) (v2) (id: 115) + 03:B0:01:73 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (4k) (v2) (id: 116) + 03:B0:01:74 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (4k) (50hz) (v2) (id: 117) + 03:B0:01:75 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (low light) (v2) (vertical) (id: 118) + 03:B0:01:76 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (50hz) (low light) (v2) (vertical) (id: 119) + 03:B0:01:77 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (v2) (vertical) (id: 120) + 03:B0:01:78 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (50hz) (v2) (vertical) (id: 121) + 03:B0:01:79 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (full frame) (low light) (v2) (id: 122) + 03:B0:01:7A + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (50hz) (full frame) (low light) (v2) (id: 123) + 03:B0:01:7B + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (full frame) (v2) (id: 124) + 03:B0:01:7C + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (50hz) (full frame) (v2) (id: 125) + 03:B0:01:7D + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (4k) (low light) (v2) (id: 126) + 03:B0:01:7E + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (4k) (50hz) (low light) (v2) (id: 127) + 03:B0:01:7F + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (2.7k) (low light) (v2) (id: 128) + 03:B0:01:80 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (2.7k) (50hz) (low light) (v2) (id: 129) + 03:B0:01:81 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (2.7k) (v2) (id: 130) + 03:B0:01:82 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (2.7k) (50hz) (v2) (id: 131) + 03:B0:01:83 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (long. batt.) (v2) (vertical) (id: 132) + 03:B0:01:84 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 2x slo-mo (50hz) (long. batt.) (v2) (vertical) (id: 133) + 03:B0:01:85 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (long. batt.) (low light) (v2) (vertical) (id: 134) + 03:B0:01:86 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (50hz) (long. batt.) (low light) (v2) (vertical) (id: 135) + 03:B0:01:87 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (4k) (full frame) (low light) (v2) (id: 136) + 03:B0:01:88 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + + 176 + Speed + Set speed (id: 176) to 1x speed (4k) (50hz) (full frame) (low light) (v2) (id: 137) + 03:B0:01:89 + 02:B0:00 + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + 177 Enable Night Photo @@ -4403,10 +4920,13 @@

    Capability Documents

    Release - + capabilities.xlsx
    capabilities.json - HERO12 Black + HERO12 Black + v02.00.00 + + v01.30.00 @@ -5875,14 +6395,14 @@

    Protobuf IDs

    Command 0xF1 - 0x65, 0x66, 0x67, 0x69, 0x6B, 0x79, 0xE5, 0xE6, 0xE7, 0xE9, 0xEB, 0xF9 + 0x64, 0x65, 0x66, 0x67, 0x69, 0x6B, 0x79, 0xE4, 0xE5, 0xE6, 0xE7, 0xE9, 0xEB, 0xF9 GP-0072 GP-0073 Query 0xF5 - 0x6E, 0x6F, 0x72, 0x74, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5 + 0x6D, 0x6E, 0x6F, 0x72, 0x74, 0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5 GP-0076 GP-0077 @@ -6012,7 +6532,19 @@

    Protobuf Commands

    โœ” - 0xF1 + 0xF1 + 0x64 + 0xE4 + Request preset update custom + RequestCustomPresetUpdate + ResponseGeneric + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + 0x65 0xE5 Request cohn setting @@ -6085,7 +6617,19 @@

    Protobuf Commands

    โœ” - 0xF5 + 0xF5 + 0x6D + 0xED + Request get last media + RequestGetLastCapturedMedia + ResponseLastCapturedMedia + >= v02.00.00 + โŒ + โŒ + โŒ + โŒ + + 0x6E 0xEE Request get cohn cert @@ -6283,8 +6827,33 @@

    Presets

    Important Note: The Preset ID is required to load a Preset via the Presets: Load command.

    +

    Custom Preset Update

    +

    +The Custom Preset Update feature allows the user to update the title and icon of custom presets. +The feature includes the following capabilities: +

    + +
      +
    • Change icon to preexisting value defined in EnumPresetIcon +
    • +
    • Change title to preexisting value defined in EnumPresetTitle +
    • +
    • Use custom title (string)
    • +
    + +

    +Expectations: +

    + +
      +
    • Custom titles must be between 1 and 16 characters (inclusive)
    • +
    • No special characters outside of the following languages: English, French, Italian, German, Spanish, Portuguese, Swedish, Russian
    • +
    • When setting a custom name, the title_id field must be 94 (or "PRESET_TITLE_USER_DEFINED_CUSTOM_NAME")
    • +
    • Fields with unchanged values may be omitted (e.g. if only updating icon_id, custom_name and title_id can be omitted)
    • +
    +

    -For details on which cameras are supported and how to get Preset Status, see Protobuf Commands. +For details on which per-camera command support, see Protobuf Commands.

    Global Behaviors

    diff --git a/contribution.html b/contribution.html index af6bb03d..cb72e0ef 100644 --- a/contribution.html +++ b/contribution.html @@ -138,7 +138,7 @@ Tutorials
  • - Demos + Demos
  • FAQ @@ -520,10 +520,10 @@

    Quiz

    %} -
    +
    -
    What is the question?
    -
    +
    What is the question?
    +

    @@ -536,10 +536,10 @@

    Quiz

    - - @@ -555,10 +555,10 @@

    Quiz

    %}
    -
    +
    -
    True or False?
    -
    +
    True or False?
    +

    @@ -568,10 +568,10 @@

    Quiz

    - - @@ -594,7 +594,7 @@

    Tabs

    -
      +
      • tab1 @@ -609,7 +609,7 @@

        Tabs

      -
        +
        • This is the content of the first tab.

          diff --git a/faq.html b/faq.html index e6757c0c..60df680a 100644 --- a/faq.html +++ b/faq.html @@ -138,7 +138,7 @@ Tutorials
        • - Demos + Demos
        • FAQ @@ -612,7 +612,7 @@

          Streaming

          that as a result of using off-the-shelf libraries like ffmpeg which adds its own buffering. For preview and framing use cases, we donโ€™t recommend using the live streaming RTMP protocol because it adds unnecessary steps in the pipeline, and puts the camera in the streaming preset, which offers little other control. -A low latency streaming demo is available in the demos.

          +A low latency streaming demo is available in the demos.

    diff --git a/feed.xml b/feed.xml index aabac13d..41cc93b1 100644 --- a/feed.xml +++ b/feed.xml @@ -1 +1 @@ -Jekyll2023-12-11T15:38:12-08:00https://gopro.github.io/OpenGoPro/feed.xmlOpen GoProOpen Source GoPro InterfaceGoPro \ No newline at end of file +Jekyll2023-12-21T16:22:03-08:00https://gopro.github.io/OpenGoPro/feed.xmlOpen GoProOpen Source GoPro InterfaceGoPro \ No newline at end of file diff --git a/http-legacy.html b/http-legacy.html new file mode 100644 index 00000000..2fb98061 --- /dev/null +++ b/http-legacy.html @@ -0,0 +1,6856 @@ + + + + + + +HTTP Specification v2.0 : Open GoPro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + +
    + + + + + + + + + + + + + +
    + + + + + +
    + + + + + +
    + +
    +

    HTTP Specification v2.0 +

    + + +

    + + + + + + + + + + + + 62 minute read + + + +

    + + +
    + + +
    + + + +

    Overview

    + +

    +The GoPro API allows developers to create apps and utilities that interact with and control a GoPro camera. +

    + +

    What can you do with the GoPro API?

    + +

    +The GoPro API allows you to control and query the camera: +

    +
      +
    • Capture photo/video media
    • +
    • Get media list
    • +
    • Change settings
    • +
    • Get and set the date/time
    • +
    • Get camera status
    • +
    • Get media metadata (file size, width, height, duration, tags, etc)
    • +
    • and more!
    • +
    + + +

    Supported Cameras

    + +

    +Below is a table of cameras that support GoPro's public HTTP API: +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Model IDModel CodeMarketing NameMinimal Firmware Version
    62H23.01HERO12 Blackv01.10.00
    60H22.03HERO11 Black Miniv01.10.00
    58H22.01HERO11 Blackv01.10.00
    57H21.01HERO10 Blackv01.10.00
    55HD9.01HERO9 Blackv01.70.00
    + +

    The Basics

    + +

    Connection

    +

    WiFi

    +

    +Connection to the camera via WiFi requires that the camera's WiFi Access Point be enabled. +This can be done by connecting to the camera via +Bluetooth Low Energy (BLE) +and sending a command to enable AP Mode. +

    + +

    USB

    +

    +OpenGoPro systems that utilize USB must support the Network Control Model (NCM) protocol. +Connecting via USB requires the following steps: +

    +
      +
    1. Physically connect the camera's USB-C port to your system
    2. +
    3. Send HTTP command to enable wired USB control
    4. +
    + + +

    Authentication

    + +

    WiFi

    + +

    +Once the WiFi Access Point has been turned on, authentication with the camera simply requires connecting with the +correct SSID and password. This information can be obtained in two ways: + +

    +
      +
    • Put the camera into pairing mode and tap the info button in the top-right corner of the screen.
    • +
    • Read the SSID/password directly via Bluetooth Low Energy. See Services and Characteristics section in BLE Specification for details.
    • +
    + + +

    USB

    +

    +No authentication is necessary. +

    + +

    Socket Address

    + +

    WiFi

    +

    +The socket address for WiFi connections is 10.5.5.9:8080. +

    + +

    USB

    +

    +The socket address for USB connections is 172.2X.1YZ.51:8080 where: + +

    +
      +
    • X is the 100's digit from the camera serial number
    • +
    • Y is the 10's digit from the camera serial number
    • +
    • Z is the 1's digit from the camera serial number
    • +
    + + +

    +The camera's serial number can be obtained in any of the following ways: +

    +
      +
    • Reading the sticker inside the camera's battery enclosure
    • +
    • Camera UI: Preferences >> About >> Camera Info
    • +
    • Bluetooth Low Energy: By reading directly from Hardware Info +
    • +
    + + +

    +For example, if the camera's serial number is C0000123456789, the IP address for USB connections would be 172.27.189.51. +

    + +

    +Alternatively, the IP address can be discovered via mDNS as the camera registers the _gopro-web service. +

    + +

    Request and Response Formats

    +

    +Most commands are sent via HTTP/GET and require no special headers. +Responses come in two parts: The standard HTTP return codes and JSON containing any additional information. +

    + +

    +The typical use case is that the camera accepts a valid command, returns HTTP/200 (OK) and empty JSON +(i.e. { }) and begins asynchronously working on the command. +If an error occurs, the camera will return a standard HTTP error code and JSON with helpful error/debug information. +

    + +

    +Depending on the command sent, the camera can return JSON, binary, or Protobuf data. Some examples are listed below: +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CommandReturn Type
    Get Camera StateJSON
    Get Media InfoJSON
    Get Media GPMF +Binary
    Get Media ListJSON
    Get Media Screennail (JPEG)Binary
    Get Media Thumbnail (JPEG)Binary
    Get PresetsJSON
    + +

    Sending Commands

    + +

    +Depending on the camera's state, it may not be ready to accept specific commands. +This ready state is dependent on the System Busy and the Encoding Active status flags. For example: + +

    +
      +
    • System Busy flag is set while loading presets, changing settings, formatting sdcard, ...
    • +
    • Encoding Active flag is set while capturing photo/video media
    • +
    + + +

    +If the system is not ready, it should reject an incoming command; however, best practice is to always wait for the +System Busy and Encode Active flags to be unset before sending messages other than camera status queries. +For details regarding camera state, see Status Codes. +

    + +

    Keep Alive

    +

    +In order to maximize battery life, GoPro cameras automatically go to sleep after some time. +This logic is handled by a combination of an Auto Power Down setting which most (but not all) cameras support +and a Keep Alive message that the user can regularly send to the camera. +The camera will automatically go to sleep if both timers reach zero. +

    + +

    +The Auto Power Down timer is reset when the user taps the LCD screen, presses a button on the camera or +programmatically (un)sets the shutter, sets a setting, or loads a Preset. +

    + +

    +The Keep Alive timer is reset when the user sends a keep alive message. +

    + +

    +The best practice to prevent the camera from inadvertently going to sleep is to start sending Keep Alive messages +every 3.0 seconds after a connection is established. +

    + +

    Command

    + + + + + + + + + + + +
    HTTP/GETDescription
    /gopro/camera/keep_aliveSend keep-alive
    + +

    Commands

    +

    Using the Open GoPro API, a client can perform various command, control, and query operations!

    + +

    Commands Quick Reference

    +

    +Below is a table of commands that can be sent to the camera and how to send them.
    +* Indicates that item is experimental
    +โœ” Indicates support for all Open GoPro firmware versions.
    +โŒ Indicates a lack of support for all Open GoPro firmware versions.
    +>= vXX.YY.ZZ indicates support for firmware versions equal to or newer than vXX.YY.ZZ +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CommandDescriptionHTTP MethodEndpointHERO12 BlackHERO11 Black MiniHERO11 BlackHERO10 BlackHERO9 Black
    AnalyticsSet third party clientGET/gopro/camera/analytics/set_client_infoโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    COHN: Get certGet cohn certGET/GoProRootCA.crtโœ”โŒโŒโŒโŒ
    COHN: Get statusGet cohn statusPOST/gopro/cohn/statusโœ”โŒโŒโŒโŒ
    COHN: Get statusGet cohn statusPOST/gopro/cohn/statusโœ”โŒโŒโŒโŒ
    Camera: Get StateGet camera state (status + settings)GET/gopro/camera/stateโœ”โœ”โœ”โœ”โœ”
    Digital ZoomDigital zoom 50%GET/gopro/camera/digital_zoom?percent=50โœ”โœ”โœ”โœ”โœ”
    Get Date/TimeGet date/timeGET/gopro/camera/get_date_timeโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Get Hardware InfoGet camera hardware infoGET/gopro/camera/infoโœ”โŒโŒโŒโŒ
    Keep-aliveSend keep-aliveGET/gopro/camera/keep_aliveโœ”โœ”โœ”โœ”โœ”
    Media: GPMFGet GPMF data (JPG)GET/gopro/media/gpmf?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: GPMFGet GPMF data (MP4)GET/gopro/media/gpmf?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: HiLight (Add)Add hilight to 100GOPRO/xxx.JPGGET/gopro/media/hilight/file?path=100GOPRO/XXX.JPGโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight (Add)Add hilight to 100GOPRO/xxx.MP4 at offset 2500 msGET/gopro/media/hilight/file?path=100GOPRO/XXX.MP4&ms=2500โœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight (Remove)Remove hilight from 100GOPRO/xxx.JPGGET/gopro/media/hilight/remove?path=100GOPRO/XXX.JPGโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight (Remove)Remove hilight from 100GOPRO/xxx.MP4 at offset 2500msGET/gopro/media/hilight/remove?path=100GOPRO/XXX.MP4&ms=2500โœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight MomentHilight moment during encodingGET/gopro/media/hilight/momentโœ”โœ”โœ”>= v01.30.00โŒ
    Media: InfoGet media info (JPG)GET/gopro/media/info?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: InfoGet media info (MP4)GET/gopro/media/info?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: ListGet media listGET/gopro/media/listโœ”โœ”โœ”โœ”โœ”
    Media: ScreennailGet screennail for โ€œ100GOPRO/xxx.JPGโ€GET/gopro/media/screennail?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: ScreennailGet screennail for โ€œ100GOPRO/xxx.MP4โ€GET/gopro/media/screennail?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: TelemetryGet telemetry track data (JPG)GET/gopro/media/telemetry?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: TelemetryGet telemetry track data (MP4)GET/gopro/media/telemetry?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: ThumbnailGet thumbnail for โ€œ100GOPRO/xxx.JPGโ€GET/gopro/media/thumbnail?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: ThumbnailGet thumbnail for โ€œ100GOPRO/xxx.MP4โ€GET/gopro/media/thumbnail?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: Turbo TransferTurbo transfer: offGET/gopro/media/turbo_transfer?p=0โœ”โœ”โœ”โœ”โœ”
    Media: Turbo TransferTurbo transfer: onGET/gopro/media/turbo_transfer?p=1โœ”โœ”โœ”โœ”โœ”
    OTA UpdateSoft update: upload 12345 bytes starting at offset 67890POST/gp/gpSoftUpdate (plus data)โœ”โœ”โœ”โœ”โœ”
    OTA UpdateSoft update: mark upload completePOST/gp/gpSoftUpdate (plus data)โœ”โœ”โœ”โœ”โœ”
    Open GoProGet versionGET/gopro/versionโœ”โœ”โœ”โœ”โœ”
    Presets: Get StatusGet preset statusGET/gopro/camera/presets/getโœ”โœ”โœ”โœ”โœ”
    Presets: LoadExample preset id: 0x1234ABCDGET/gopro/camera/presets/load?id=305441741โœ”โœ”โœ”โœ”โœ”
    Presets: Load GroupVideoGET/gopro/camera/presets/set_group?id=1000โœ”โœ”โœ”โœ”โœ”
    Presets: Load GroupPhotoGET/gopro/camera/presets/set_group?id=1001โœ”โŒโœ”โœ”โœ”
    Presets: Load GroupTimelapseGET/gopro/camera/presets/set_group?id=1002โœ”โŒโœ”โœ”โœ”
    Set Camera Control StatusSet camera control status to idleGET/gopro/camera/control/set_ui_controller?p=0โœ”โœ”โœ”>= v01.20.00โŒ
    Set Camera Control StatusSet camera control status to external_controlGET/gopro/camera/control/set_ui_controller?p=2โœ”โœ”โœ”>= v01.20.00โŒ
    Set Date/TimeSet date/time to 2023-01-31 03:04:05GET/gopro/camera/set_date_time?date=2023_1_31&time=3_4_5โœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Set Local Date/TimeSet local date/time to: 2023-01-31 03:04:05 (utc-02:00) (dst: on)GET/gopro/camera/set_date_time?date=2023_1_31&time=3_4_5&tzone=-120&dst=1โœ”โœ”โœ”โŒโŒ
    Set shutterShutter: onGET/gopro/camera/shutter/startโœ”โœ”โœ”โœ”โŒ
    Set shutterShutter: offGET/gopro/camera/shutter/stopโœ”โœ”โœ”โœ”โŒ
    Simple OTA UpdateSimple ota update with file: update.zipPOST/gp/gpUpdate (plus data)โœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: show canceled/failed ui on the cameraGET/gp/gpSoftUpdate?request=canceledโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: delete cached update filesGET/gp/gpSoftUpdate?request=deleteโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: get current update stateGET/gp/gpSoftUpdate?request=progressโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: display update ui on cameraGET/gp/gpSoftUpdate?request=showuiโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: initiate firmware updateGET/gp/gpSoftUpdate?request=startโœ”โœ”โœ”โœ”โœ”
    Stream: StartStart preview streamGET/gopro/camera/stream/startโœ”โœ”โœ”โœ”โœ”
    Stream: StopStop preview streamGET/gopro/camera/stream/stopโœ”โœ”โœ”โœ”โœ”
    Webcam: ExitExit webcam modeGET/gopro/webcam/exitโœ”โŒโœ”โœ”โŒ
    Webcam: PreviewStart preview streamGET/gopro/webcam/previewโœ”โŒโœ”โœ”โŒ
    Webcam: StartStart webcamGET/gopro/webcam/startโœ”โŒโœ”>= v01.40.00โŒ
    Webcam: StartStart webcam (port: 12345)GET/gopro/webcam/start?port=12345โœ”โŒ>= v02.01.00โŒโŒ
    Webcam: StartStart webcam (port: 12345, protocol: rtsp)GET/gopro/webcam/start?port=12345&protocol=RTSPโœ”โŒโœ”โœ”โŒ
    Webcam: StartStart webcam (port: 12345, protocol: ts)GET/gopro/webcam/start?port=12345&protocol=TSโœ”โŒโœ”โœ”โŒ
    Webcam: StartStart webcam (res: resolution_1080, fov: wide)GET/gopro/webcam/start?res=12&fov=0โœ”โŒโœ”โœ”โŒ
    Webcam: StatusGet webcam statusGET/gopro/webcam/statusโœ”โŒโœ”โœ”โŒ
    Webcam: StopStop webcamGET/gopro/webcam/stopโœ”โŒโœ”โœ”โŒ
    Webcam: VersionGet webcam api versionGET/gopro/webcam/versionโœ”โŒโœ”โœ”โŒ
    Wired USB ControlDisable wired usb controlGET/gopro/camera/control/wired_usb?p=0โœ”โœ”โœ”>= v01.30.00โŒ
    Wired USB ControlEnable wired usb controlGET/gopro/camera/control/wired_usb?p=1โœ”โœ”โœ”>= v01.30.00โŒ
    + +

    Settings

    +

    +GoPro cameras have hundreds of setting options to choose from, all of which can be set using a single endpoint. +The endpoint is configured with a setting id and an option value. +Note that setting option values are not globally unique. +While most option values are enumerated values, some are complex bitmasked values. +

    + +

    Settings Quick Reference

    +

    +Below is a table of setting options detailing how to set every option supported by Open GoPro cameras.
    +* Indicates that item is experimental
    +โœ” Indicates support for all Open GoPro firmware versions.
    +โŒ Indicates a lack of support for all Open GoPro firmware versions.
    +>= vXX.YY.ZZ indicates support for firmware versions equal to or newer than vXX.YY.ZZ +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Setting IDSettingOptionHTTP MethodEndpointHERO12 BlackHERO11 Black MiniHERO11 BlackHERO10 BlackHERO9 Black
    2ResolutionSet video resolution (id: 2) to 4k (id: 1)GET/gopro/camera/setting?setting=2&option=1โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 2.7k (id: 4)GET/gopro/camera/setting?setting=2&option=4โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 2.7k 4:3 (id: 6)GET/gopro/camera/setting?setting=2&option=6โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 1440 (id: 7)GET/gopro/camera/setting?setting=2&option=7โŒโŒโŒโŒโœ”
    2ResolutionSet video resolution (id: 2) to 1080 (id: 9)GET/gopro/camera/setting?setting=2&option=9โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 4k 4:3 (id: 18)GET/gopro/camera/setting?setting=2&option=18โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 5k (id: 24)GET/gopro/camera/setting?setting=2&option=24โŒโŒโŒโŒโœ”
    2ResolutionSet video resolution (id: 2) to 5k 4:3 (id: 25)GET/gopro/camera/setting?setting=2&option=25โŒโŒโŒโœ”โŒ
    2ResolutionSet video resolution (id: 2) to 5.3k 8:7 (id: 26)GET/gopro/camera/setting?setting=2&option=26โœ”โœ”โœ”โŒโŒ
    2ResolutionSet video resolution (id: 2) to 5.3k 4:3 (id: 27)GET/gopro/camera/setting?setting=2&option=27โŒโœ”โœ”โŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 8:7 (id: 28)GET/gopro/camera/setting?setting=2&option=28โœ”โœ”โœ”โŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 9:16 (id: 29)GET/gopro/camera/setting?setting=2&option=29โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 1080 9:16 (id: 30)GET/gopro/camera/setting?setting=2&option=30โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 5.3k (id: 100)GET/gopro/camera/setting?setting=2&option=100โŒโœ”โœ”โœ”โŒ
    2ResolutionSet video resolution (id: 2) to 5.3k 16:9 (id: 101)GET/gopro/camera/setting?setting=2&option=101โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 16:9 (id: 102)GET/gopro/camera/setting?setting=2&option=102โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 4:3 (id: 103)GET/gopro/camera/setting?setting=2&option=103โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 2.7k 16:9 (id: 104)GET/gopro/camera/setting?setting=2&option=104โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 2.7k 4:3 (id: 105)GET/gopro/camera/setting?setting=2&option=105โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 1080 16:9 (id: 106)GET/gopro/camera/setting?setting=2&option=106โœ”โŒโŒโŒโŒ
    3Frames Per SecondSet video fps (id: 3) to 240 (id: 0)GET/gopro/camera/setting?setting=3&option=0โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 120 (id: 1)GET/gopro/camera/setting?setting=3&option=1โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 100 (id: 2)GET/gopro/camera/setting?setting=3&option=2โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 60 (id: 5)GET/gopro/camera/setting?setting=3&option=5โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 50 (id: 6)GET/gopro/camera/setting?setting=3&option=6โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 30 (id: 8)GET/gopro/camera/setting?setting=3&option=8โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 25 (id: 9)GET/gopro/camera/setting?setting=3&option=9โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 24 (id: 10)GET/gopro/camera/setting?setting=3&option=10โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 200 (id: 13)GET/gopro/camera/setting?setting=3&option=13โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to wide (id: 0)GET/gopro/camera/setting?setting=43&option=0โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to narrow (id: 2)GET/gopro/camera/setting?setting=43&option=2โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to superview (id: 3)GET/gopro/camera/setting?setting=43&option=3โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to linear (id: 4)GET/gopro/camera/setting?setting=43&option=4โœ”โœ”โœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to never (id: 0)GET/gopro/camera/setting?setting=59&option=0โœ”>= v02.10.00โœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 1 min (id: 1)GET/gopro/camera/setting?setting=59&option=1โœ”>= v02.10.00>= v02.01.00โŒโŒ
    59Auto Power DownSet auto power down (id: 59) to 5 min (id: 4)GET/gopro/camera/setting?setting=59&option=4โœ”>= v02.10.00โœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 15 min (id: 6)GET/gopro/camera/setting?setting=59&option=6โœ”โŒโœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 30 min (id: 7)GET/gopro/camera/setting?setting=59&option=7โœ”โŒโœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 8 seconds (id: 11)GET/gopro/camera/setting?setting=59&option=11โŒ>= v02.10.00โŒโŒโŒ
    59Auto Power DownSet auto power down (id: 59) to 30 seconds (id: 12)GET/gopro/camera/setting?setting=59&option=12โŒ>= v02.10.00โŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 4:3 (id: 0)GET/gopro/camera/setting?setting=108&option=0โœ”โŒโŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 16:9 (id: 1)GET/gopro/camera/setting?setting=108&option=1โœ”โŒโŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 8:7 (id: 3)GET/gopro/camera/setting?setting=108&option=3โœ”โŒโŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 9:16 (id: 4)GET/gopro/camera/setting?setting=108&option=4โœ”โŒโŒโŒโŒ
    121Video Digital LensesSet video digital lenses (id: 121) to wide (id: 0)GET/gopro/camera/setting?setting=121&option=0โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to narrow (id: 2)GET/gopro/camera/setting?setting=121&option=2โŒโŒโŒโœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to superview (id: 3)GET/gopro/camera/setting?setting=121&option=3โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to linear (id: 4)GET/gopro/camera/setting?setting=121&option=4โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to max superview (id: 7)GET/gopro/camera/setting?setting=121&option=7โœ”>= v02.00.00โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to linear + horizon leveling (id: 8)GET/gopro/camera/setting?setting=121&option=8โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to hyperview (id: 9)GET/gopro/camera/setting?setting=121&option=9โœ”โœ”โœ”โŒโŒ
    121Video Digital LensesSet video digital lenses (id: 121) to linear + horizon lock (id: 10)GET/gopro/camera/setting?setting=121&option=10โœ”โœ”โœ”โŒโŒ
    121Video Digital LensesSet video digital lenses (id: 121) to max hyperview (id: 11)GET/gopro/camera/setting?setting=121&option=11โœ”โŒโŒโŒโŒ
    122Photo Digital LensesSet photo digital lenses (id: 122) to narrow (id: 19)GET/gopro/camera/setting?setting=122&option=19โŒโŒโŒโœ”โœ”
    122Photo Digital LensesSet photo digital lenses (id: 122) to max superview (id: 100)GET/gopro/camera/setting?setting=122&option=100โœ”โŒโœ”โœ”โœ”
    122Photo Digital LensesSet photo digital lenses (id: 122) to wide (id: 101)GET/gopro/camera/setting?setting=122&option=101โœ”โŒโœ”โœ”โœ”
    122Photo Digital LensesSet photo digital lenses (id: 122) to linear (id: 102)GET/gopro/camera/setting?setting=122&option=102โœ”โŒโœ”โœ”โœ”
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to narrow (id: 19)GET/gopro/camera/setting?setting=123&option=19โŒโŒโŒโœ”โœ”
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to max superview (id: 100)GET/gopro/camera/setting?setting=123&option=100โŒโŒโœ”โœ”โŒ
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to wide (id: 101)GET/gopro/camera/setting?setting=123&option=101โœ”โŒโœ”โœ”โœ”
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to linear (id: 102)GET/gopro/camera/setting?setting=123&option=102โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to time lapse video (id: 13)GET/gopro/camera/setting?setting=128&option=13โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to time lapse photo (id: 20)GET/gopro/camera/setting?setting=128&option=20โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to night lapse photo (id: 21)GET/gopro/camera/setting?setting=128&option=21โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to night lapse video (id: 26)GET/gopro/camera/setting?setting=128&option=26โœ”โŒโœ”โœ”โœ”
    134Anti-FlickerSet setup anti flicker (id: 134) to 60hz (id: 2)GET/gopro/camera/setting?setting=134&option=2โœ”โœ”โœ”โœ”โœ”
    134Anti-FlickerSet setup anti flicker (id: 134) to 50hz (id: 3)GET/gopro/camera/setting?setting=134&option=3โœ”โœ”โœ”โœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to off (id: 0)GET/gopro/camera/setting?setting=135&option=0โœ”โœ”โœ”โœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to low (id: 1)GET/gopro/camera/setting?setting=135&option=1โœ”โœ”โœ”โŒโœ”
    135HypersmoothSet video hypersmooth (id: 135) to high (id: 2)GET/gopro/camera/setting?setting=135&option=2โŒโŒโŒโœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to boost (id: 3)GET/gopro/camera/setting?setting=135&option=3โŒโœ”โœ”โœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to auto boost (id: 4)GET/gopro/camera/setting?setting=135&option=4โœ”โœ”โœ”โŒโŒ
    135HypersmoothSet video hypersmooth (id: 135) to standard (id: 100)GET/gopro/camera/setting?setting=135&option=100โŒโŒโŒโœ”โŒ
    150Horizon LevelingSet video horizon levelling (id: 150) to off (id: 0)GET/gopro/camera/setting?setting=150&option=0โŒ>= v02.00.00โœ”โŒโŒ
    150Horizon LevelingSet video horizon levelling (id: 150) to on (id: 1)GET/gopro/camera/setting?setting=150&option=1โŒ>= v02.00.00โŒโŒโŒ
    150Horizon LevelingSet video horizon levelling (id: 150) to locked (id: 2)GET/gopro/camera/setting?setting=150&option=2โŒโŒโœ”โŒโŒ
    151Horizon LevelingSet photo horizon levelling (id: 151) to off (id: 0)GET/gopro/camera/setting?setting=151&option=0โŒโŒโœ”โŒโŒ
    151Horizon LevelingSet photo horizon levelling (id: 151) to locked (id: 2)GET/gopro/camera/setting?setting=151&option=2โŒโŒโœ”โŒโŒ
    162Max LensSet max lens (id: 162) to off (id: 0)GET/gopro/camera/setting?setting=162&option=0โŒโŒโœ”>= v01.20.00โœ”
    162Max LensSet max lens (id: 162) to on (id: 1)GET/gopro/camera/setting?setting=162&option=1โŒโŒโœ”>= v01.20.00โœ”
    167Hindsight*Set hindsight (id: 167) to 15 seconds (id: 2)GET/gopro/camera/setting?setting=167&option=2โœ”โŒโœ”โœ”โœ”
    167Hindsight*Set hindsight (id: 167) to 30 seconds (id: 3)GET/gopro/camera/setting?setting=167&option=3โœ”โŒโœ”โœ”โœ”
    167Hindsight*Set hindsight (id: 167) to off (id: 4)GET/gopro/camera/setting?setting=167&option=4โœ”โŒโœ”โœ”โœ”
    171IntervalSet photo single interval (id: 171) to off (id: 0)GET/gopro/camera/setting?setting=171&option=0โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 0.5s (id: 2)GET/gopro/camera/setting?setting=171&option=2โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 1s (id: 3)GET/gopro/camera/setting?setting=171&option=3โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 2s (id: 4)GET/gopro/camera/setting?setting=171&option=4โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 5s (id: 5)GET/gopro/camera/setting?setting=171&option=5โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 10s (id: 6)GET/gopro/camera/setting?setting=171&option=6โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 30s (id: 7)GET/gopro/camera/setting?setting=171&option=7โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 60s (id: 8)GET/gopro/camera/setting?setting=171&option=8โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 120s (id: 9)GET/gopro/camera/setting?setting=171&option=9โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 3s (id: 10)GET/gopro/camera/setting?setting=171&option=10โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to off (id: 0)GET/gopro/camera/setting?setting=172&option=0โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 15 seconds (id: 1)GET/gopro/camera/setting?setting=172&option=1โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 30 seconds (id: 2)GET/gopro/camera/setting?setting=172&option=2โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 1 minute (id: 3)GET/gopro/camera/setting?setting=172&option=3โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 5 minutes (id: 4)GET/gopro/camera/setting?setting=172&option=4โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 15 minutes (id: 5)GET/gopro/camera/setting?setting=172&option=5โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 30 minutes (id: 6)GET/gopro/camera/setting?setting=172&option=6โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 1 hour (id: 7)GET/gopro/camera/setting?setting=172&option=7โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 2 hours (id: 8)GET/gopro/camera/setting?setting=172&option=8โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 3 hours (id: 9)GET/gopro/camera/setting?setting=172&option=9โœ”โŒโŒโŒโŒ
    173Video Performance ModeSet video performance mode (id: 173) to maximum video performance (id: 0)GET/gopro/camera/setting?setting=173&option=0โŒโŒโŒ>= v01.16.00โŒ
    173Video Performance ModeSet video performance mode (id: 173) to extended battery (id: 1)GET/gopro/camera/setting?setting=173&option=1โŒโŒโŒ>= v01.16.00โŒ
    173Video Performance ModeSet video performance mode (id: 173) to tripod / stationary video (id: 2)GET/gopro/camera/setting?setting=173&option=2โŒโŒโŒ>= v01.16.00โŒ
    175ControlsSet controls (id: 175) to easy (id: 0)GET/gopro/camera/setting?setting=175&option=0โœ”โœ”โœ”โŒโŒ
    175ControlsSet controls (id: 175) to pro (id: 1)GET/gopro/camera/setting?setting=175&option=1โœ”โœ”โœ”โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (id: 0)GET/gopro/camera/setting?setting=176&option=0โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (id: 1)GET/gopro/camera/setting?setting=176&option=1โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 2)GET/gopro/camera/setting?setting=176&option=2โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (low light) (id: 3)GET/gopro/camera/setting?setting=176&option=3โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (ext. batt) (id: 4)GET/gopro/camera/setting?setting=176&option=4โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (ext. batt) (id: 5)GET/gopro/camera/setting?setting=176&option=5โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (ext. batt, low light) (id: 6)GET/gopro/camera/setting?setting=176&option=6โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (50hz) (id: 7)GET/gopro/camera/setting?setting=176&option=7โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (50hz) (id: 8)GET/gopro/camera/setting?setting=176&option=8โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (50hz) (id: 9)GET/gopro/camera/setting?setting=176&option=9โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (low light, 50hz) (id: 10)GET/gopro/camera/setting?setting=176&option=10โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (ext. batt, 50hz) (id: 11)GET/gopro/camera/setting?setting=176&option=11โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (ext. batt, 50hz) (id: 12)GET/gopro/camera/setting?setting=176&option=12โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (ext. batt, low light, 50hz) (id: 13)GET/gopro/camera/setting?setting=176&option=13โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (ext. batt) (id: 14)GET/gopro/camera/setting?setting=176&option=14โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (ext. batt, 50hz) (id: 15)GET/gopro/camera/setting?setting=176&option=15โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (long. batt) (id: 16)GET/gopro/camera/setting?setting=176&option=16โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (long. batt) (id: 17)GET/gopro/camera/setting?setting=176&option=17โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (long. batt) (id: 18)GET/gopro/camera/setting?setting=176&option=18โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 1x (long. batt, low light) (id: 19)GET/gopro/camera/setting?setting=176&option=19โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (long. batt, 50hz) (id: 20)GET/gopro/camera/setting?setting=176&option=20โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (long. batt, 50hz) (id: 21)GET/gopro/camera/setting?setting=176&option=21โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (long. batt, 50hz) (id: 22)GET/gopro/camera/setting?setting=176&option=22โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 1x (long. batt, low light, 50hz) (id: 23)GET/gopro/camera/setting?setting=176&option=23โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (4k) (id: 24)GET/gopro/camera/setting?setting=176&option=24โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (2.7k) (id: 25)GET/gopro/camera/setting?setting=176&option=25โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (4k, 50hz) (id: 26)GET/gopro/camera/setting?setting=176&option=26โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (2.7k, 50hz) (id: 27)GET/gopro/camera/setting?setting=176&option=27โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 28)GET/gopro/camera/setting?setting=176&option=28โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 29)GET/gopro/camera/setting?setting=176&option=29โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 30)GET/gopro/camera/setting?setting=176&option=30โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 31)GET/gopro/camera/setting?setting=176&option=31โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 32)GET/gopro/camera/setting?setting=176&option=32โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 33)GET/gopro/camera/setting?setting=176&option=33โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 34)GET/gopro/camera/setting?setting=176&option=34โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 35)GET/gopro/camera/setting?setting=176&option=35โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 36)GET/gopro/camera/setting?setting=176&option=36โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 37)GET/gopro/camera/setting?setting=176&option=37โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 38)GET/gopro/camera/setting?setting=176&option=38โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 39)GET/gopro/camera/setting?setting=176&option=39โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 40)GET/gopro/camera/setting?setting=176&option=40โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 41)GET/gopro/camera/setting?setting=176&option=41โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 42)GET/gopro/camera/setting?setting=176&option=42โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 43)GET/gopro/camera/setting?setting=176&option=43โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 44)GET/gopro/camera/setting?setting=176&option=44โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 45)GET/gopro/camera/setting?setting=176&option=45โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 46)GET/gopro/camera/setting?setting=176&option=46โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 47)GET/gopro/camera/setting?setting=176&option=47โœ”โŒโŒโŒโŒ
    177Enable Night PhotoSet enable night photo (id: 177) to off (id: 0)GET/gopro/camera/setting?setting=177&option=0โŒโŒโœ”โŒโŒ
    177Enable Night PhotoSet enable night photo (id: 177) to on (id: 1)GET/gopro/camera/setting?setting=177&option=1โŒโŒโœ”โŒโŒ
    178Wireless BandSet wireless band (id: 178) to 2.4ghz (id: 0)GET/gopro/camera/setting?setting=178&option=0โœ”โœ”โœ”โŒโŒ
    178Wireless BandSet wireless band (id: 178) to 5ghz (id: 1)GET/gopro/camera/setting?setting=178&option=1โœ”โœ”โœ”โŒโŒ
    179Trail LengthSet trail length (id: 179) to short (id: 1)GET/gopro/camera/setting?setting=179&option=1โœ”โœ”โœ”โŒโŒ
    179Trail LengthSet trail length (id: 179) to long (id: 2)GET/gopro/camera/setting?setting=179&option=2โœ”โœ”โœ”โŒโŒ
    179Trail LengthSet trail length (id: 179) to max (id: 3)GET/gopro/camera/setting?setting=179&option=3โœ”โœ”โœ”โŒโŒ
    180Video ModeSet video mode (id: 180) to highest quality (id: 0)GET/gopro/camera/setting?setting=180&option=0โŒโŒโœ”โŒโŒ
    180Video ModeSet video mode (id: 180) to extended battery (id: 1)GET/gopro/camera/setting?setting=180&option=1โŒโŒโœ”โŒโŒ
    180Video ModeSet video mode (id: 180) to extended battery (green icon) (id: 101)GET/gopro/camera/setting?setting=180&option=101โŒโŒ>= v02.01.00โŒโŒ
    180Video ModeSet video mode (id: 180) to longest battery (green icon) (id: 102)GET/gopro/camera/setting?setting=180&option=102โŒโŒ>= v02.01.00โŒโŒ
    182Bit RateSet system video bit rate (id: 182) to standard (id: 0)GET/gopro/camera/setting?setting=182&option=0โœ”โŒโŒโŒโŒ
    182Bit RateSet system video bit rate (id: 182) to high (id: 1)GET/gopro/camera/setting?setting=182&option=1โœ”โŒโŒโŒโŒ
    183Bit DepthSet system video bit depth (id: 183) to 8-bit (id: 0)GET/gopro/camera/setting?setting=183&option=0โœ”โŒโŒโŒโŒ
    183Bit DepthSet system video bit depth (id: 183) to 10-bit (id: 2)GET/gopro/camera/setting?setting=183&option=2โœ”โŒโŒโŒโŒ
    184ProfilesSet video profile (id: 184) to standard (id: 0)GET/gopro/camera/setting?setting=184&option=0โœ”โŒโŒโŒโŒ
    184ProfilesSet video profile (id: 184) to hdr (id: 1)GET/gopro/camera/setting?setting=184&option=1โœ”โŒโŒโŒโŒ
    184ProfilesSet video profile (id: 184) to log (id: 2)GET/gopro/camera/setting?setting=184&option=2โœ”โŒโŒโŒโŒ
    185Aspect RatioSet video easy aspect ratio (id: 185) to widescreen (id: 0)GET/gopro/camera/setting?setting=185&option=0โœ”โŒโŒโŒโŒ
    185Aspect RatioSet video easy aspect ratio (id: 185) to mobile (id: 1)GET/gopro/camera/setting?setting=185&option=1โœ”โŒโŒโŒโŒ
    185Aspect RatioSet video easy aspect ratio (id: 185) to universal (id: 2)GET/gopro/camera/setting?setting=185&option=2โœ”โŒโŒโŒโŒ
    186Video ModeSet video easy presets (id: 186) to highest quality (id: 0)GET/gopro/camera/setting?setting=186&option=0โœ”โŒโŒโŒโŒ
    186Video ModeSet video easy presets (id: 186) to standard quality (id: 1)GET/gopro/camera/setting?setting=186&option=1โœ”โŒโŒโŒโŒ
    186Video ModeSet video easy presets (id: 186) to basic quality (id: 2)GET/gopro/camera/setting?setting=186&option=2โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to timewarp (id: 0)GET/gopro/camera/setting?setting=187&option=0โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to star trails (id: 1)GET/gopro/camera/setting?setting=187&option=1โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to light painting (id: 2)GET/gopro/camera/setting?setting=187&option=2โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to vehicle lights (id: 3)GET/gopro/camera/setting?setting=187&option=3โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max timewarp (id: 4)GET/gopro/camera/setting?setting=187&option=4โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max star trails (id: 5)GET/gopro/camera/setting?setting=187&option=5โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max light painting (id: 6)GET/gopro/camera/setting?setting=187&option=6โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max vehicle lights (id: 7)GET/gopro/camera/setting?setting=187&option=7โœ”โŒโŒโŒโŒ
    188Aspect RatioSet multi shot easy aspect ratio (id: 188) to widescreen (id: 0)GET/gopro/camera/setting?setting=188&option=0โœ”โŒโŒโŒโŒ
    188Aspect RatioSet multi shot easy aspect ratio (id: 188) to mobile (id: 1)GET/gopro/camera/setting?setting=188&option=1โœ”โŒโŒโŒโŒ
    188Aspect RatioSet multi shot easy aspect ratio (id: 188) to universal (id: 2)GET/gopro/camera/setting?setting=188&option=2โœ”โŒโŒโŒโŒ
    189Max Lens ModSet system addon lens active (id: 189) to none (id: 0)GET/gopro/camera/setting?setting=189&option=0โœ”โŒโŒโŒโŒ
    189Max Lens ModSet system addon lens active (id: 189) to max lens 1.0 (id: 1)GET/gopro/camera/setting?setting=189&option=1โœ”โŒโŒโŒโŒ
    189Max Lens ModSet system addon lens active (id: 189) to max lens 2.0 (id: 2)GET/gopro/camera/setting?setting=189&option=2โœ”โŒโŒโŒโŒ
    190Max Lens Mod EnableSet system addon lens status (id: 190) to off (id: 0)GET/gopro/camera/setting?setting=190&option=0โœ”โŒโŒโŒโŒ
    190Max Lens Mod EnableSet system addon lens status (id: 190) to on (id: 1)GET/gopro/camera/setting?setting=190&option=1โœ”โŒโŒโŒโŒ
    191Photo ModeSet photo easy presets (id: 191) to super photo (id: 0)GET/gopro/camera/setting?setting=191&option=0โœ”โŒโŒโŒโŒ
    191Photo ModeSet photo easy presets (id: 191) to night photo (id: 1)GET/gopro/camera/setting?setting=191&option=1โœ”โŒโŒโŒโŒ
    192Aspect RatioSet multi shot nlv aspect ratio (id: 192) to 4:3 (id: 0)GET/gopro/camera/setting?setting=192&option=0โœ”โŒโŒโŒโŒ
    192Aspect RatioSet multi shot nlv aspect ratio (id: 192) to 16:9 (id: 1)GET/gopro/camera/setting?setting=192&option=1โœ”โŒโŒโŒโŒ
    192Aspect RatioSet multi shot nlv aspect ratio (id: 192) to 8:7 (id: 3)GET/gopro/camera/setting?setting=192&option=3โœ”โŒโŒโŒโŒ
    193FramingSet video easy framing (id: 193) to widescreen (id: 0)GET/gopro/camera/setting?setting=193&option=0โœ”โŒโŒโŒโŒ
    193FramingSet video easy framing (id: 193) to vertical (id: 1)GET/gopro/camera/setting?setting=193&option=1โœ”โŒโŒโŒโŒ
    193FramingSet video easy framing (id: 193) to full frame (id: 2)GET/gopro/camera/setting?setting=193&option=2โœ”โŒโŒโŒโŒ
    + +

    Camera Capabilities

    +

    +Camera capabilities usually change from one camera to another and often change from one release to the next. +Below are documents that detail whitelists for basic video settings for every supported camera release. +

    + +

    Note about Dependency Ordering and Blacklisting

    +

    +Capability documents define supported camera states. +Each state is comprised of a set of setting options that are presented in dependency order. +This means each state is guaranteed to be attainable if and only if the setting options are set in the order presented. +Failure to adhere to dependency ordering may result in the camera's blacklist rules rejecting a set-setting command. +

    + +

    Example

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraCommand 1Command 2Command 3Command 4Command 5Guaranteed Valid?
    HERO10 BlackRes: 1080Anti-Flicker: 60Hz (NTSC)FPS: 240FOV: WideHypersmooth: OFFโœ”
    HERO10 BlackFPS: 240Anti-Flicker: 60Hz (NTSC)Res: 1080FOV: WideHypersmooth: OFFโŒ
    +

    +In the example above, the first set of commands will always work for basic video presets such as Standard. +

    + +

    +In the second example, suppose the camera's Video Resolution was previously set to 4K. +If the user tries to set Video FPS to 240, it will fail because 4K/240fps is not supported. +

    + +

    Capability Documents

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DocumentsProductRelease
    +capabilities.xlsx
    capabilities.json +
    HERO12 Blackv01.30.00
    v01.20.00
    v01.10.00
    HERO11 Black Miniv02.30.00
    v02.20.00
    v02.10.00
    v02.00.00
    v01.10.00
    HERO11 Blackv02.12.00
    v02.10.00
    v02.01.00
    v01.20.00
    v01.12.00
    v01.10.00
    HERO10 Blackv01.50.00
    v01.46.00
    v01.42.00
    v01.40.00
    v01.30.00
    v01.20.00
    v01.16.00
    v01.10.00
    HERO9 Blackv01.72.00
    v01.70.00
    + +

    Spreadsheet Format

    +

    +The capabilities spreadsheet contains worksheets for every supported release. +Each row in a worksheet represents a whitelisted state and is presented in dependency order as outlined above. +

    + +

    JSON Format

    +

    +The capabilities JSON contains a set of whitelist states for every supported release. +Each state is comprised of a list of objects that contain setting and option IDs necessary to construct set-setting +commands and are given in dependency order as outlined above. +

    + +

    +Below is a simplified example of the capabilities JSON file; a formal schema is also available here: +capabilities_schema.json +

    + +
    {
    +    "(PRODUCT_NAME)": {
    +        "(RELEASE_VERSION)": {
    +            "states": [
    +                [
    +                    {"setting_name": "(str)", "setting_id": (int), "option_name": "(str)", "option_id": (int)},
    +                    ...
    +                ],
    +                ...
    +            ],
    +        },
    +        ...
    +    },
    +    ...
    +}
    +
    + +

    Media

    +

    +The camera provides an endpoint to query basic details about media captured on the sdcard. +

    + +

    Chapters

    +

    +All GoPro cameras break longer videos into chapters. +GoPro cameras currently limit file sizes on sdcards to 4GB for both FAT32 and exFAT file systems. +This limitation is most commonly seen when recording longer (10+ minute) videos. +In practice, the camera will split video media into chapters named Gqccmmmm.MP4 (and ones for THM/LRV) such that: +

    + +
      +
    • q: Quality Level (X: Extreme, H: High, M: Medium, L: Low)
    • +
    • cc: Chapter Number (01-99)
    • +
    • mmmm: Media ID (0001-9999)
    • +
    + +

    +When media becomes chaptered, the camera increments subsequent Chapter Numbers while leaving the Media ID unchanged. +For example, if the user records a long High-quality video that results in 4 chapters, the files on the sdcard may +look like the following: +

    + +
    -rwxrwxrwx@ 1 gopro  123456789  4006413091 Jan  1 00:00 GH010078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17663 Jan  1 00:00 GH010078.THM
    +-rwxrwxrwx@ 1 gopro  123456789  4006001541 Jan  1 00:00 GH020078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17357 Jan  1 00:00 GH020078.THM
    +-rwxrwxrwx@ 1 gopro  123456789  4006041985 Jan  1 00:00 GH030078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17204 Jan  1 00:00 GH030078.THM
    +-rwxrwxrwx@ 1 gopro  123456789   756706872 Jan  1 00:00 GH040078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17420 Jan  1 00:00 GH040078.THM
    +-rwxrwxrwx@ 1 gopro  123456789   184526939 Jan  1 00:00 GL010078.LRV
    +-rwxrwxrwx@ 1 gopro  123456789   184519787 Jan  1 00:00 GL020078.LRV
    +-rwxrwxrwx@ 1 gopro  123456789   184517614 Jan  1 00:00 GL030078.LRV
    +-rwxrwxrwx@ 1 gopro  123456789    34877660 Jan  1 00:00 GL040078.LRV
    +
    + +

    Media Info Format

    +

    +The Media: Info command provides additional details about a media above and beyond its counterpart, the Media: List command. +Such information includes resolution, frame rate, duration, hilight info, etc. +

    + +

    Example Video Info:

    +
    {
    +    "cre": "1613676644",
    +    "s": "11305367",
    +    "mahs": "1",
    +    "us": "0",
    +    "mos": [],
    +    "eis": "0",
    +    "pta": "1",
    +    "ao": "stereo",
    +    "tr": "0",
    +    "mp": "0",
    +    "ct": "0",
    +    "rot": "0",
    +    "fov": "4",
    +    "lc": "0",
    +    "prjn": "6",
    +    "gumi": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    +    "ls": "1072714",
    +    "cl": "0",
    +    "avc_profile": "4",
    +    "profile": "42",
    +    "hc": "0",
    +    "hi": [],
    +    "dur": "2",
    +    "w": "1920",
    +    "h": "1080",
    +    "fps": "60000",
    +    "fps_denom": "1001",
    +    "prog": "1",
    +    "subsample": "0"
    +}
    +
    + +

    Common Keys (Video / Photo)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyTypeDescriptionExamples
    aostringAudio Optionoff, stereo, wind, auto
    avc_profileuint8Advanced Video Codec Profile0..255
    clboolFile clipped from another source?0:false, 1:true
    creuint32File creation timestamp (sec since epoch)1692992748
    ctuint32Content type0..12
    duruint32Duration of video in seconds42
    eisboolFile made with Electronic Image Stabilization0:false, 1:true
    fpsuint32Frame rate (numerator)1001
    fps_denomuint32Frme rate (denominator)30000
    gumistringGlobally Unique Media IDโ€œxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxโ€
    huint32Video height in pixels1080
    hcuint32Hilight countvideo:0..99, photo:0..1
    hdrboolPhoto taken with High Dynamic Range?0:false, 1:true
    hiArray of uint32Offset to hilights in media in milliseconds[1500, 4700]
    lcuint32Spherical Lens Config0:front, 1:rear
    lsint32Low Resolution Video file size in bytes (or -1 if no LRV file)-1, 1234567890
    mosArray of stringMobile Offload Stateโ€œappโ€, โ€œpcโ€, โ€œotherโ€
    mpboolMetadata Present?0:no metadata, 1:metadata exists
    profileuint8Advanced Video Codec Level0..255
    progboolIs video progressive?0:interlaced, 1:progressive
    ptaboolMedia has Protune audio file?0:false, 1:true
    rawboolPhoto has raw version?0:false, 1:true
    suint64File size in bytes1234567890
    subsampleboolIs video subsampled?0:false, 1:true
    trboolIs file transcoded?0:false, 1:true
    wuint32Width of media in pixels1920
    wdrboolPhoto taken with Wide Dynamic Range?0:false, 1:true
    + +

    Video Keys

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyTypeDescriptionExamples
    aostringAudio Optionoff, stereo, wind, auto
    avc_profileuint8Advanced Video Codec Profile0..255
    clboolFile clipped from another source?0:false, 1:true
    duruint32Duration of video in seconds42
    fpsuint32Frame rate (numerator)1001
    fps_denomuint32Frme rate (denominator)30000
    hiArray of uint32Offset to hilights in media in milliseconds[1500, 4700]
    lsint32Low Resolution Video file size in bytes (or -1 if no LRV file)-1, 1234567890
    profileuint8Advanced Video Codec Level0..255
    progboolIs video progressive?0:interlaced, 1:progressive
    ptaboolMedia has Protune audio file?0:false, 1:true
    subsampleboolIs video subsampled?0:false, 1:true
    + +

    Photo Keys

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyTypeDescriptionExamples
    hdrboolPhoto taken with High Dynamic Range?0:false, 1:true
    rawboolPhoto has raw version?0:false, 1:true
    wdrboolPhoto taken with Wide Dynamic Range?0:false, 1:true
    + +

    Media Info: Content Type

    +

    +The "ct" (Content Type) metadata indicates what mode (or group) the media was captured in. +

    + +

    +Note: All Time Lapse modes that result in MPEG media use the same content type ID. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    Video0
    Looping1
    Chaptered Video2
    Time Lapse3
    Single Photo4
    Burst Photo5
    Time Lapse Photo6
    Night Lapse Photo8
    Night Photo9
    Continuous Photo10
    Raw Photo11
    Live Burst12
    + +

    Media List Format

    +

    +The format of the media list is given below. +

    + +
    {
    +    "id": "<MEDIA SESSION ID>",
    +    "media": [
    +        {
    +            "d": "<DIRECTORY NAME>",
    +            "fs": [
    +                {<MEDIA ITEM INFO>},
    +                ...
    +            ]
    +        },
    +        ...
    +    ]
    +}
    +
    + +

    Media List Keys

    +

    The outer structure of the media list and the inner structure of individual media items use the keys in the table below.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyDescription
    bID of first member of a group (for grouped media items)
    creCreation timestamp (seconds since epoch)
    dDirectory name
    fsFile system. Contains listing of media items in directory
    gGroup ID (if grouped media item)
    glrvLow resolution video file size
    idMedia list session identifier
    lID of last member of a group (for grouped media items)
    mList of missing/deleted group member IDs (for grouped media items)
    mediaContains media info for for each directory (e.g. 100GOPRO/, 101GOPRO/, โ€ฆ)
    modLast modified time (seconds since epoch)
    nMedia filename
    sSize of (group) media in bytes
    tGroup type (for grouped media items) (b -> burst, c -> continuous shot, n -> night lapse, t -> time lapse)
    + +

    Grouped Media Items

    +

    +To minimize the size of the JSON transmitted by the camera, grouped media items such as Burst Photos, +Time Lapse Photos, Night Lapse Photos, etc are represented with a single item in the media list with additional keys +that allow the user to extrapolate individual filenames for each member of the group. +

    + +

    +Filenames for group media items have the form "GXXXYYYY.ZZZ" +where XXX is the group ID, YYY is the group member ID and ZZZ is the file extension. +

    + +

    +For example, take the media list below, which contains a Time Lapse Photo group media item: +

    + +
    {
    +    "id": "2530266050123724003",
    +    "media": [
    +        {
    +            "d": "100GOPRO",
    +            "fs": [
    +                {
    +                    "b": "8",
    +                    "cre": "1613669353",
    +                    "g": "1",
    +                    "l": "396",
    +                    "m": ['75', '139'],
    +                    "mod": "1613669353",
    +                    "n": "G0010008.JPG",
    +                    "s": "773977407",
    +                    "t": "t"
    +                }
    +            ]
    +        }
    +    ]
    +}
    +
    + +

    +The first filename in the group is "G0010008.JPG" (key: "n").
    +The ID of the first group member in this case is "008" (key: "b").
    +The ID of the last group member in this case is "396" (key: "l").
    +The IDs of deleted members in this case are "75" and "139" (key: "m")
    +Given this information, the user can extrapolate that the group currently contains +

    + +

    +G0010008.JPG, G0010009.JPG, G0010010.JPG,
    +...,
    +G0010074.JPG, G0010076.JPG,
    +...,
    +G0010138.JPG, G0010140.JPG,
    +...,
    +G0010394.JPG, G0010395.JPG. G0010396.JPG
    +

    + +

    Media HiLights

    +

    +The HiLight Tags feature allows the user to tag moments of interest either during video +capture or on existing media. +

    + +

    Add/Remove HiLights

    +

    +Below is a table of all HiLight commands. +For details on how to send HiLight commands, see Commands Quick Reference. + +

    + + + + + + + + + + + + + + + + + + + +
    CommandDescription
    Media: HiLight (Add)Video: Add a tag at a specific time offset (ms)
    Photo: Add a tag
    Media: HiLight (Remove)Video: Remove a tag at a specific time offset (ms)
    Photo: Remove tag
    Media: HiLight MomentAdd a tag to the current time offset (ms) while encoding video
    + +

    +Note: Attempting to add a HiLight tag at a time offset that exceeds the duration of the video +or removing a non-existent HiLight tag will result in an HTTP/500 error. +

    + +

    Get HiLights

    +

    +Once HiLight tags have been added, they can be queried by calling the Media: Info command; +the response content will be JSON that contains HiLight information: +

    + + + + + + + + + + + + + + + + + + + + + + + +
    Media TypeKeyValue
    PhotohcHiLight Count
    VideohcHiLight Count
    VideohiHiLights (list of time offsets in ms)
    + +

    Example

    +

    +The JSON sample below shows media that contains three HiLights at time offsets 2502ms, 5839ms, and 11478ms. +Note: Photo info will not have an "hi":[...] key-value pair. +

    + +
    {
    +  ...,
    +  "hc":"3",
    +  "hi":[2502,5839,11478],
    +  ...,
    +}
    +
    + +

    Downloading Media

    +

    +The URL to download/stream media from the DCIM/ directory on the sdcard is the Base URL plus /videos/DCIM/XXX/YYY +where XXX is the directory name within DCIM/ given by the media list and YYY is the target media filename. +

    + +

    +For example: Given the following media list: +

    + +
    {
    +    "id": "3586667939918700960",
    +    "media": [
    +        {
    +            "d": "100GOPRO",
    +            "fs": [
    +                {
    +                    "n": "GH010397.MP4",
    +                    "cre": "1613672729",
    +                    "mod": "1613672729",
    +                    "glrv": "1895626",
    +                    "ls": "-1",
    +                    "s": "19917136"
    +                },
    +                {
    +                    "cre": "1614340213",
    +                    "mod": "1614340213",
    +                    "n": "GOPR0001.JPG",
    +                    "s": "6961371"
    +                }
    +            ]
    +        }
    +    ]
    +}
    +
    + +

    +The URL to download GH010397.MP4 over WiFi would be +http://10.5.5.9:8080/videos/DCIM/100GOPRO/GH010397.MP4 +

    + +

    +The URL to download GOPR0001.JPG over WiFi would be +http://10.5.5.9:8080/videos/DCIM/100GOPRO/GOPR0001.JPG +

    + +

    Turbo Transfer

    +

    +Some cameras support Turbo Transfer mode, which allows media to be downloaded over WiFi more rapidly. +This special mode should only be used during media offload. +It is recommended that the user check for and--if necessary--disable Turbo Transfer on connect. +For details on which cameras are supported and how to enable and disable Turbo Transfer, see +Commands Quick Reference. +

    + +

    Downloading Preview Stream

    +

    +When the preview stream is started, the camera starts up a UDP client and begins writing MPEG Transport Stream data to the client on port 8554. +In order to stream this data, the client must implement a UDP connection that binds to the same port and decode the data. +

    + +

    Camera State

    +

    +The camera provides multiple types of state, all of which can be queried: +

    + +
      +
    • Camera state: Contains information about camera status (photos taken, date, is-camera-encoding, etc) and settings (current video resolution, current frame rate, etc)
    • +
    • Preset State: How presets are arranged into preset groups, their titles, icons, settings closely associated with each preset, etc
    • +
    + +

    Camera State Format

    +

    Camera state is given in the following form:

    + +
    {
    +    "status": {
    +        "1": <status 1 value>,
    +        "2": <status 2 value>,
    +        ...
    +    },
    +    "settings: {
    +        "2": <setting 2 value>,
    +        "3": <setting 3 value>,
    +        ...
    +    }
    +}
    +
    + +

    +Where status X value and setting X value are almost always integer values. +See Status Codes table in this document for exceptions. +

    + +

    +For status, keys are status codes and values are status values. +

    + +

    +For settings, keys are setting IDs, and values are option values +

    + +

    Status IDs

    +

    +Below is a table of supported status IDs.
    +* Indicates that item is experimental
    +โœ” Indicates support for all Open GoPro firmware versions.
    +โŒ Indicates a lack of support for all Open GoPro firmware versions.
    +>= vXX.YY.ZZ indicates support for firmware versions equal to or newer than vXX.YY.ZZ +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Status IDNameDescriptionTypeValuesHERO12 BlackHERO11 Black MiniHERO11 BlackHERO10 BlackHERO9 Black
    1Internal battery presentIs the systemโ€™s internal battery present?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    2Internal battery levelRough approximation of internal battery level in bars (or charging)integer0: Zero
    1: One
    2: Two
    3: Three
    4: Charging
    +
    โœ”โœ”โœ”โœ”โœ”
    6System hotIs the system currently overheating?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    8System busyIs the camera busy?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    9Quick capture activeIs Quick Capture feature enabled?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    10Encoding activeIs the system encoding right now?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    11Lcd lock activeIs LCD lock active?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    13Video progress counterWhen encoding video, this is the duration (seconds) of the video so far; 0 otherwiseinteger*โœ”โœ”โœ”โœ”โœ”
    17EnableAre Wireless Connections enabled?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    19StateThe pairing state of the camerainteger0: Never Started
    1: Started
    2: Aborted
    3: Cancelled
    4: Completed
    +
    โœ”โœ”โœ”โœ”โœ”
    20TypeThe last type of pairing that the camera was engaged ininteger0: Not Pairing
    1: Pairing App
    2: Pairing Remote Control
    3: Pairing Bluetooth Device
    +
    โœ”โœ”โœ”โœ”โœ”
    21Pair timeTime (milliseconds) since boot of last successful pairing complete actioninteger*โŒโœ”โœ”โœ”โœ”
    22StateState of current scan for WiFi Access Points. Appears to only change for CAH-related scansinteger0: Never started
    1: Started
    2: Aborted
    3: Canceled
    4: Completed
    +
    โœ”โœ”โœ”โœ”โœ”
    23Scan time msecThe time, in milliseconds since boot that the WiFi Access Point scan completedinteger*โœ”โœ”โœ”โœ”โœ”
    24Provision statusWiFi AP provisioning stateinteger0: Never started
    1: Started
    2: Aborted
    3: Canceled
    4: Completed
    +
    โœ”โœ”โœ”โœ”โœ”
    26Remote control versionWireless remote control versioninteger*โŒโœ”โœ”โœ”โœ”
    27Remote control connectedIs a wireless remote control connected?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    28PairingWireless Pairing Stateinteger*โŒโœ”โœ”โœ”โœ”
    29Wlan ssidSSID of the AP the camera is currently connected to. On BLE connection, value is big-endian byte-encoded intstring*โœ”โœ”โœ”โœ”โœ”
    30Ap ssidThe cameraโ€™s WiFi SSID. On BLE connection, value is big-endian byte-encoded intstring*โœ”โœ”โœ”โœ”โœ”
    31App countThe number of wireless devices connected to the camerainteger*โœ”โœ”โœ”โœ”โœ”
    32EnableIs Preview Stream enabled?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    33Sd statusPrimary Storage Statusinteger-1: Unknown
    0: OK
    1: SD Card Full
    2: SD Card Removed
    3: SD Card Format Error
    4: SD Card Busy
    8: SD Card Swapped
    +
    โœ”โœ”โœ”โœ”โœ”
    34Remaining photosHow many photos can be taken before sdcard is fullinteger*โœ”โŒโœ”โœ”โœ”
    35Remaining video timeHow many minutes of video can be captured with current settings before sdcard is fullinteger*โœ”โœ”โœ”โœ”โœ”
    How many group photos can be taken with current settings before sdcard is full38Num total photosTotal number of photos on sdcardinteger*โœ”โœ”โœ”โœ”โœ”
    39Num total videosTotal number of videos on sdcardinteger*โœ”โœ”โœ”โœ”โœ”
    41Ota statusThe current status of Over The Air (OTA) updateinteger0: Idle
    1: Downloading
    2: Verifying
    3: Download Failed
    4: Verify Failed
    5: Ready
    6: GoPro App: Downloading
    7: GoPro App: Verifying
    8: GoPro App: Download Failed
    9: GoPro App: Verify Failed
    10: GoPro App: Ready
    +
    โœ”โœ”โœ”โœ”โœ”
    42Download cancel request pendingIs there a pending request to cancel a firmware update download?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    45Camera locate activeIs locate camera feature active?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    49Multi shot count downThe current timelapse interval countdown value (e.g. 5โ€ฆ4โ€ฆ3โ€ฆ2โ€ฆ1โ€ฆ)integer*โœ”โœ”โœ”โœ”โœ”
    54Remaining spaceRemaining space on the sdcard in Kilobytesinteger*โœ”โœ”โœ”โœ”โœ”
    55SupportedIs preview stream supported in current recording/mode/secondary-stream?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    56Wifi barsWiFi signal strength in barsinteger*โœ”โœ”โœ”โœ”โœ”
    58Num hilightsThe number of hilights in encoding video (set to 0 when encoding stops)integer*โœ”โœ”โœ”โœ”โœ”
    59Last hilight time msecTime since boot (msec) of most recent hilight in encoding video (set to 0 when encoding stops)integer*โœ”โœ”โœ”โœ”โœ”
    60Next poll msecThe min time between camera status updates (msec). Do not poll for status more often than thisinteger*โœ”โœ”โœ”โœ”โœ”
    64Remaining timelapse timeHow many min of Timelapse video can be captured with current settings before sdcard is fullinteger*โœ”โœ”โœ”โœ”โœ”
    65Exposure select typeLiveview Exposure Select Modeinteger0: Disabled
    1: Auto
    2: ISO Lock
    3: Hemisphere
    +
    โœ”โŒโœ”โœ”โœ”
    66Exposure select xLiveview Exposure Select: y-coordinate (percent)percent0-100โœ”โŒโœ”โœ”โœ”
    67Exposure select yLiveview Exposure Select: y-coordinate (percent)percent0-100โœ”โŒโœ”โœ”โœ”
    68Gps statusDoes the camera currently have a GPS lock?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    69Ap stateIs the camera in AP Mode?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    70Internal battery percentageInternal battery level (percent)percent0-100โœ”โœ”โœ”โœ”โœ”
    74Acc mic statusMicrophone Accesstory statusinteger0: Microphone mod not connected
    1: Microphone mod connected
    2: Microphone mod connected and microphone plugged into Microphone mod
    +
    โœ”โœ”โœ”โœ”โœ”
    75Digital zoomDigital Zoom level (percent)percent0-100โœ”โœ”โœ”โœ”โœ”
    76Wireless bandWireless Bandinteger0: 2.4 GHz
    1: 5 GHz
    2: Max
    +
    โœ”โœ”โœ”โœ”โœ”
    77Digital zoom activeIs Digital Zoom feature available?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    78Mobile friendly videoAre current video settings mobile friendly? (related to video compression and frame rate)boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    79First time useIs the camera currently in First Time Use (FTU) UI flow?boolean0: False
    1: True
    +
    โŒโŒโŒโœ”โœ”
    81Band 5ghz availIs 5GHz wireless band available?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    82System readyIs the system ready to accept commands?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    83Batt okay for otaIs the internal battery charged sufficiently to start Over The Air (OTA) update?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    85Video low temp alertIs the camera getting too cold to continue recording?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    86Actual orientationThe rotational orientation of the camerainteger0: 0 degrees (upright)
    1: 180 degrees (upside down)
    2: 90 degrees (laying on right side)
    3: 270 degrees (laying on left side)
    +
    โœ”โœ”โœ”โœ”โœ”
    88Zoom while encodingIs this camera capable of zooming while encoding (static value based on model, not settings)boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    89Current modeCurrent flatmode IDinteger*โœ”โœ”โœ”โœ”โœ”
    93Active video presetsCurrent Video Preset (ID)integer*โœ”โœ”โœ”โœ”โœ”
    94Active photo presetsCurrent Photo Preset (ID)integer*โœ”โŒโœ”โœ”โœ”
    95Active timelapse presetsCurrent Timelapse Preset (ID)integer*โœ”โœ”โœ”โœ”โœ”
    96Active presets groupCurrent Preset Group (ID)integer*โœ”โœ”โœ”โœ”โœ”
    97Active presetCurrent Preset (ID)integer*โœ”โœ”โœ”โœ”โœ”
    98Preset modifiedPreset Modified Status, which contains an event ID and a preset (group) IDinteger*โœ”โœ”โœ”โœ”โœ”
    99Remaining live burstsHow many Live Bursts can be captured before sdcard is fullinteger*โŒโŒโœ”โœ”โœ”
    100Num total live burstsTotal number of Live Bursts on sdcardinteger*โŒโŒโœ”โœ”โœ”
    101Capture delay activeIs Capture Delay currently active (i.e. counting down)?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    102Media mod mic statusMedia mod Stateinteger0: Media mod microphone removed
    2: Media mod microphone only
    3: Media mod microphone with external microphone
    +
    โœ”โœ”โœ”โœ”โœ”
    103Timewarp speed ramp activeTime Warp Speedinteger0: 15x
    1: 30x
    2: 60x
    3: 150x
    4: 300x
    5: 900x
    6: 1800x
    7: 2x
    8: 5x
    9: 10x
    10: Auto
    11: 1x (realtime)
    12: 1/2x (slow-motion)
    +
    โœ”โœ”โœ”โœ”โœ”
    104Linux core activeIs the systemโ€™s Linux core active?boolean0: False
    1: True
    +
    โŒโŒโŒโœ”โœ”
    105Camera lens typeCamera lens type (reflects changes to setting 162 or setting 189)integer0: Default
    1: Max Lens
    2: Max Lens 2.0
    +
    โœ”โœ”โœ”โœ”โœ”
    106Video hindsight capture activeIs Video Hindsight Capture Active?boolean0: False
    1: True
    +
    โœ”โŒโœ”โœ”โœ”
    107Scheduled presetScheduled Capture Preset IDinteger*โœ”โŒโœ”โœ”โœ”
    108Scheduled enabledIs Scheduled Capture set?boolean0: False
    1: True
    +
    โœ”โŒโœ”โœ”โœ”
    110Media mod statusMedia Mode Status (bitmasked)integer0: 000 = Selfie mod: 0, HDMI: 0, Media Mod Connected: False
    1: 001 = Selfie mod: 0, HDMI: 0, Media Mod Connected: True
    2: 010 = Selfie mod: 0, HDMI: 1, Media Mod Connected: False
    3: 011 = Selfie mod: 0, HDMI: 1, Media Mod Connected: True
    4: 100 = Selfie mod: 1, HDMI: 0, Media Mod Connected: False
    5: 101 = Selfie mod: 1, HDMI: 0, Media Mod Connected: True
    6: 110 = Selfie mod: 1, HDMI: 1, Media Mod Connected: False
    7: 111 = Selfie mod: 1, HDMI: 1, Media Mod Connected: True
    +
    โœ”โŒโœ”โœ”โœ”
    111Sd rating check errorDoes sdcard meet specified minimum write speed?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โŒ
    112Sd write speed errorNumber of sdcard write speed errors since device bootedinteger*โœ”โœ”โœ”โœ”โŒ
    113Turbo transferIs Turbo Transfer active?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โœ”
    114Camera control statusCamera control status IDinteger0: Camera Idle: No one is attempting to change camera settings
    1: Camera Control: Camera is in a menu or changing settings. To intervene, app must request control
    2: Camera External Control: An outside entity (app) has control and is in a menu or modifying settings
    +
    โœ”โœ”โœ”โœ”โŒ
    115Usb connectedIs the camera connected to a PC via USB?boolean0: False
    1: True
    +
    โœ”โœ”โœ”โœ”โŒ
    116Allow control over usbCamera control over USB stateinteger0: Disabled
    1: Enabled
    +
    โœ”โœ”โœ”>= v01.30.00โŒ
    117Total sd space kbTotal SD card capacity in Kilobytesinteger*โœ”โœ”โœ”โŒโŒ
    + +

    Preset Status Format

    +

    +Preset Status is returned as JSON, whose content is the serialization of the protobuf message: +NotifyPresetStatus. +Using Google protobuf APIs, the JSON can be converted back into a programmatic object in the user's language of choice. +

    + +

    Features

    + +

    Presets

    +

    +The camera organizes modes of operation into presets. +A preset is a logical wrapper around a specific camera mode, title, icon, and a set of settings that enhance different styles of capturing media. +

    + +

    +Depending on the camera's state, different collections of presets will be available for immediate loading and use. +Below is a table of settings that affect the current preset collection and thereby which presets can be loaded: +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDSetting
    162Max Lens
    173Video Performance Mode
    175Controls
    177Enable Night Photo
    180Video Mode
    186Video Mode
    187Lapse Mode
    189Max Lens Mod
    190Max Lens Mod Enable
    191Photo Mode
    + +

    +To determine which presets are available for immediate use, get Preset Status. +

    + +

    Preset Status

    +

    +All cameras support basic query and subscription mechanics that allow the user to: +

    + +
      +
    • Get hierarchical data describing the Preset Groups, Presets, and Settings that are available in the camera's current state
    • + +
    + +

    +Preset Status should not be confused with camera status: +

    +
      +
    • Preset Status contains information about current preset groups and presets
    • +
    • Camera status contains numerous statuses about current settings and camera system state
    • +
    + + +

    Preset Groups

    +

    +Each Preset Group contains an ID, whether additional presets can be added, and an array of existing Presets. +

    + +

    Presets

    +

    +Each Preset contains information about its ID, associated core mode, title, icon, whether it's a user-defined preset, +whether the preset has been modified from its factory-default state (for factory-default presets only) and an array of +Settings associated with the Preset. +

    + +

    +Important Note: The Preset ID is required to load a Preset via the Presets: Load command. +

    + +

    Global Behaviors

    +

    +In order to prevent undefined behavior between the camera and a connected app, simultaneous use of the camera and a +connected app is discouraged. +

    + +

    +Best practice for synchronizing user/app control is to use the Set Camera Control Status command and +corresponding Camera Control Status (CCS) camera statuses in alignment with the finite state machine below: +

    + +IDLEControl Status: IdleCAMERA_CONTROLControl Status: Camera ControlEXTERNAL_CONTROLControl Status: External ControlApp sets CCS: IdleUser interacts with cameraUser returns camera to idle screenApp sets CCS: IdleApp sets CCS: External ControlApp sets CCS: IdleUser interacts with cameraUser interacts with cameraApp sets CCS: External ControlUser interacts with camera + + + + + + + + + + + + + + + + + + + + +
    Control StatusID
    IDLE0
    CONTROL1
    EXTERNAL_CONTROL2
    + +

    Set Camera Control Status

    +

    +This command is used to tell the camera that the app (i.e. External Control) wishes to claim control of the camera. +This causes the camera to immediately exit any contextual menus and return to the idle screen. +Any interaction with the camera's physical buttons will cause the camera to reclaim control and update control status accordingly. +If the user returns the camera UI to the idle screen, the camera updates control status to Idle. +

    + +

    +Note: +

    +
      +
    • The entity currently claiming control of the camera is advertised in camera status 114
    • +
    • Information about whether the camera is in a contextual menu or not is advertised in camera status 63.
    • +
    + + +

    OTA Update

    + +

    +The Over The Air (OTA) update feature allows the user to update the camera's firmware via HTTP connection. +There are two ways to perform OTA updates: Simple OTA Update and Resumable OTA Update. +

    + +

    +Firmware update files can be obtained from GoPro's update page or programmatically using the +firmware catalog. +

    + +

    +Note: In order to complete the firmware update process, the camera will reboot one or more times. +This will cause any existing HTTP connections to be lost. +

    + +

    Simple OTA Update

    +

    +The simple OTA update process is done by sending an entire update file to the camera in a single HTTP/POST. +Details can be found in the diagram below. +

    + +Simple OTA UpdateClientClientCameraCameraObtain UPDATE.zip from update page or firmware catalogCalculate SHA1_HASH for UPDATE.zipHTTP/POST: /gp/gpUpdateContent-Type: multipart/form-dataData:DirectToSD=1update=1sha1=<SHA1_HASH>file=<UPDATE.zip>HTTP/200 (OK)JSON: { "status":"0" }WiFi connection terminatesCamera displays "Update Complete" OSD, reboots 1-2 times + +

    Resumable OTA Update

    +

    +The resumable OTA update process involves uploading chunks (or all) of a file, marking the file complete and then telling the camera to begin the update process. +Chunks are stored until they are explicitly deleted, allowing the client to stop and resume as needed. +Details can be found in the diagram below. +

    + +Resumable OTA UpdateClientClientCameraCameraObtain UPDATE.zip from update page or firmware catalogCalculate SHA1_HASH for UPDATE.zipHTTP/GET: /gp/gpSoftUpdate?request=deleteDelete any old/cached dataHTTP/200 (OK)JSON {"status":0,"message":"OK","sha1":"","bytes_complete":0,"complete":false}HTTP/GET: /gp/gpSoftUpdate?request=showuiDisplay update OSD on camera UI (optional)HTTP/200 (OK)JSON: {"status":0,"message":"OK","sha1":"","bytes_complete":0,"complete":false}loop[read CHUNK_BYTES of UPDATE.zip, starting at OFFSET]HTTP/POST: /gp/gpSoftUpdateContent-Type: multipart/form-dataData:sha1=<SHA1_HASH>offset=<OFFSET>file=<CHUNK_BYTES>HTTP/200 (OK)JSON: {"status": 0,"message": "OK","sha1": "SHA1_HASH","bytes_complete": (total uploaded bytes),"complete": false}HTTP/POST: /gp/gpSoftUpdateContent-Type: multipart/form-dataData:sha1=<SHA1_HASH>complete=trueHTTP/200 (OK)JSON: {"status":0,"message":"OK","sha1":"SHA1_HASH","bytes_complete":(size of UPDATE.zip),"complete":true}HTTP/GET: /gp/gpSoftUpdate?request=startStart updating firmwareHTTP/200 (OK)JSON: {"status":0,"message":"OK","sha1":"SHA1_HASH","bytes_complete":(size of UPDATE.zip),"complete":true}loop[while camera updates firmware]HTTP/GET: /gp/gpSoftUpdate?request=progressJSON: {"status":11,"message":"Firmware update in progress"}WiFi connection lostCamera displays OSD "Update Complete", reboots 1-2 times + +

    OTA Update Status Codes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDStatusDescription
    0OkNo errors occurred
    1Unknown RequestServer did not recognize the request
    2Bad ParamsParameter values not recognized
    3SHA1 Send MismatchSHA1 for chunk did not match SHA1 of previous chunk(s)
    4SHA1 Calculates MismatchCalculated SHA1 did not match user-specified SHA1
    5HTTP Boundary ErrorHTTP Post malformed
    6HTTP Post ErrorUnexpected HTTP/POST Content Type
    7Server BusyHTTP server is busy
    8Offset MismatchTried to upload chunk with offset that did not align with previous chunk
    9Bad Post DataServer failed to parse POST data
    10File IncompleteTried to start update before server finished validating .zip file
    11Update in ProgressFirmware update in progress
    12Insufficient SpaceInsufficient space on the sdcard to hold (decompressed) update file
    + +

    Webcam

    + +

    +The webcam feature enables developers who are interested in writing custom drivers to broadcast the camera's video preview with a limited set of resolution, field of view, port, and protocol options. +

    + +

    +While active, the webcam feature sends raw data to the connected client using a supported protocol. +To enable multi-cam support, some cameras support running on a user-specified port. +Protocol and port details are provided in a table below. +

    + +

    +To test basic functionality, start the webcam, and use an application such as VLC to open a network stream: +

    + + + + + + + + + + + + + + + +
    ProtocolVLC Network URL
    TSudp://@:{PORT}
    RTSPrtsp://{CAMERA_IP}:554/live
    + + +

    +For readers interested in using a GoPro camera as a webcam with preexisting tools, please see How to use GoPro as a Webcam. +

    + +

    Webcam Finite State Machine

    +PREREQUISITEWired USB Control disabledREADYWebcam ready to startStatus is either OFF (0) or IDLE (1)High Power PreviewStatus: 2Low Power PreviewStatus: 3Connect USB to cameraStopExitStartStopExitPreviewStopExitStartPreviewStartPreview + +

    Webcam Commands

    +

    +Note: For USB connections, prior to issuing webcam commands, Wired USB Control should be disabled. +For details about how to send this and webcam commands, see Commands Quick Reference. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CommandConnectionsDescription
    Webcam: StartUSB, WIFI*Enters webcam mode, uses default resolution and last-used fov, starts high-res stream to the IP address of caller
    Webcam: Start (with args)USB, WIFI*Enters webcam mode, uses specified res/fov/protocol/port, starts streaming to the IP address of caller
    Webcam: PreviewUSB, WIFI*Enters webcam mode, sets stream resolution and bitrate, starts low-res stream to the IP address of caller.
    Can set Webcam Digital Lenses and Digital Zoom levels while streaming
    Webcam: StopUSB, WIFI*Stops the webcam stream
    Webcam: ExitUSB, WIFI*Stops the webcam stream and exits webcam mode
    Webcam: StatusUSB, WIFIReturns the current state of the webcam endpoint, including status and error codes (see tables below)
    Webcam: VersionUSB, WIFIProvides version information about webcam implementation in JSON format
    +

    * Indicates that connection is supported in HERO12 Black v01.10.00 and newer versions/models

    + +

    Status Codes

    + + + + + + + + + + + + + + + + + + + + + + + +
    StatusCode
    OFF0
    IDLE1
    HIGH_POWER_PREVIEW2
    LOW_POWER_PREVIEW3
    + +

    Error Codes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StatusCode
    NONE0
    SET_PRESET1
    SET_WINDOW_SIZE2
    EXEC_STREAM3
    SHUTTER4
    COM_TIMEOUT5
    INVALID_PARAM6
    UNAVAILABLE7
    EXIT8
    + +

    Webcam Capabilities

    + +

    +Webcam supports setting resolution and field of view. +Changing other settings while in IDLE state such as Hypersmooth may succeed but are not officially supported. +

    + +

    +There is a known issue on some cameras in which the webcam status will be wrongly reported as IDLE instead of OFF after a new USB connection. +The best workaround for this is to call Webcam: Start followed by the Webcam: Stop after connecting USB in order to attain the true IDLE state. +

    + +

    Default Parameter Values

    + + + + + + + + + + + + + + + + + + + +
    ParameterDefault Value
    res12 (1080p)
    fovLast-used or 0 (Wide) if FOV not previously set
    protocolโ€œTSโ€
    + +

    Webcam Capabilities

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraResolutionFOV
    HERO12 Black720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    HERO11 Black720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    HERO10 Black480p (id: 4)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    HERO9 Black480p (id: 4)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    + +

    Supported Protocols

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraProtocolDefault PortSupports User-Defined Port?
    HERO12 BlackTS8554โœ”
    RTSP554โŒ
    HERO11 BlackTS8554โœ”
    HERO10 BlackTS8554โŒ
    HERO9 BlackTS8554โŒ
    + +

    Webcam Stabilization

    + +

    +Should the client require stabilization, the Hypersmooth setting can be used while in the state: READY (Status: OFF). +This setting can only be set while webcam is disabled, which requires either sending the Webcam: Exit command or reseating the USB-C connection to the camera. +

    + +

    +Note: The Low Hypersmooth option provides lower/lighter stabilization when used in Webcam mode vs other camera modes. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraVersionSupported Hypersmooth Options
    HERO12 Blackv01.10.00+Off (id: 0), Low (id: 1), Auto Boost (id: 4)
    HERO11 Black Miniv01.10.00+Off (id: 0), Low (id: 1), Boost (id: 3), Auto Boost (id: 4)
    HERO11 Blackv01.10.00+Off (id: 0), Low (id: 1), Boost (id: 3), Auto Boost (id: 4)
    HERO10 Blackv01.10.00+Off (id: 0), High (id: 2), Boost (id: 3), Standard (id: 100)
    HERO9 Blackv01.70.00+Off (id: 0), Low (id: 1), High (id: 2), Boost (id: 3)
    + +

    Camera On the Home Network (COHN)

    +

    +Some cameras support Camera On the Home Network (COHN). +This capability allows the client to perform command and control with the camera indirectly through an access point such as a router at home. +For security purposes, all communications are performed over HTTPS. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraSupported
    HERO12 Blackโœ”
    HERO11 Black MiniโŒ
    HERO11 BlackโŒ
    HERO10 BlackโŒ
    HERO9 BlackโŒ
    + +

    Provisioning COHN

    +

    +In order to use the COHN capability, the camera must first be provisioned for COHN. +

    + +

    Send Messages via HTTPS

    +

    +Once the camera is provisioned, the client can issue +commands +and set settings +via HTTPS using the COHN certificate and Basic authorization (username/password) credentials obtained during provisioning or subsequently by querying for COHN status. +

    + +

    HTTPS Headers

    + +

    +All HTTPS messages must contain Basic access authentication headers, using the username and password from the COHN status obtained during or after provisioning. +

    + +

    COHN Commands

    + +

    Command

    + + + + + + + + + + + + + + + + + + +
    CommandResponse FormatDescription
    /GoProRootCA.crtTextGet COHN cert
    /gopro/cohn/statusJSONGet current COHN status
    + +

    Get COHN Cert

    +

    +The /GoProRootCA.crt endpoint provides a way to obtain the COHN cert via HTTP(S). +The response content is in plain text. For example: +

    + +
    -----BEGIN CERTIFICATE-----
    +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    +-----END CERTIFICATE-----
    +
    + +

    Get COHN Status

    +

    +The /gopro/cohn/status endpoint provides a way to get the current status of COHN. +The status's format is NotifyCOHNStatus (a Google Procol Buffer v2 message) converted into JSON. +

    + +

    +Example: +

    +
    {
    + "status": "COHN_PROVISIONED",
    + "state": "COHN_STATE_NetworkConnected",
    + "username": "gopro",
    + "password": "xxxxxxxxxxxx",
    + "ipaddress": "xxx.xxx.xxx.xxx",
    + "enabled": true
    +}
    +
    + +

    Limitations

    + +

    HERO12 Black

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference +
    • +
    +

    HERO11 Black Mini

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference +
    • +
    +

    HERO11 Black

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference +
    • +
    +

    HERO10 Black

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference +
    • +
    +

    HERO9 Black

    +
      +
    • The HTTP server is not available while the camera is encoding, which means shutter controls are not supported over WiFi. This limitation can be overcome by using Bluetooth Low Energy for command and control and HTTP/REST for querying media content such as media list, media info, preview stream, etc.
    • +
    • USB command and control is not supported on HERO9 Black.
    • +
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference +
    • +
    + +

    General

    + +
      +
    • Unless changed by the user, GoPro cameras will automatically power off after some time (e.g. 5min, 15min, 30min). The Auto Power Down watchdog timer can be reset by sending periodic keep-alive messages to the camera. It is recommended to send a keep-alive at least once every 120 seconds.
    • +
    • In general, querying the value for a setting that is not associated with the current preset/core mode results in an undefined value. For example, the user should not try to query the current Photo Digital Lenses (FOV) value while in Standard preset (Video mode).
    • +
    + + +
    + +
    + + + + + + + +
    + + + + +
    + + +
    + + + +
    + +
    + + +
    +
    +
    + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/http.html b/http.html index 22d7f7da..16b78f22 100644 --- a/http.html +++ b/http.html @@ -1,16 +1,24787 @@ - - - - - - Redirectingโ€ฆ - - - - - - -

    Redirectingโ€ฆ

    - Click here if you are not redirected. - - + + + + + OpenGoPro HTTP API + + + + + + + + + +

    OpenGoPro HTTP API (2.0)

    Download OpenAPI specification:Download

    The GoPro API allows developers to create apps and utilities that interact with and control a GoPro camera.

    +

    Overview

    The GoPro API allows you to control and query the camera to:

    +
      +
    • Capture photo/video media
    • +
    • Get media list
    • +
    • Change settings
    • +
    • Get and set the date/time
    • +
    • Get camera status
    • +
    • Get media metadata (file size, width, height, duration, tags, etc)
    • +
    • and more!
    • +
    +

    Supported Cameras

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Model IDModel CodeMarketing NameMinimal Firmware Version
    62H23.01HERO12 Blackv01.10.00
    60H22.03HERO11 Black Miniv01.10.00
    58H22.01HERO11 Blackv01.10.00
    57H21.01HERO10 Blackv01.10.00
    55HD9.01HERO9 Blackv01.70.00
    +

    Setup

    Connection

    +

    WiFi

    +

    Connection to the camera via WiFi requires that the camera's WiFi Access Point be enabled. This can be done by +connecting to the camera via Bluetooth Low Energy and sending a command to +enable AP Mode.

    +

    USB

    +

    Open GoPro systems that utilize USB must support the Network Control Model (NCM) protocol. Connecting via USB +requires the following steps:

    +
      +
    1. Physically connect the camera's USB-C port to your system
    2. +
    3. Send HTTP command to enable wired USB control
    4. +
    +

    Authentication

    +

    WiFi

    +

    Once the WiFi Access Point has been turned on, authentication with the camera simply requires connecting with the +correct SSID and password. This information can be obtained in two ways:

    + +

    USB

    +

    No authentication is necessary.

    +

    Socket Address

    +

    WiFi

    +

    The socket address for WiFi connections is 10.5.5.9:8080.

    +

    USB

    +

    The socket address for USB connections is 172.2X.1YZ.51:8080 where XYZ are the last three digits of the camera's +serial number.

    +

    The camera's serial number can be obtained in any of the following ways:

    +
      +
    • Reading the sticker inside the camera's battery enclosure
    • +
    • Camera UI: Preferences >> About >> Camera Info
    • +
    • Bluetooth Low Energy: By reading directly from Hardware Info
    • +
    +

    For example, if the camera's serial number is C0000123456789, the IP address for USB connections would be +172.27.189.51.

    +

    Alternatively, the IP address can be discovered via mDNS as the camera registers the _gopro-web service.

    +

    General Usage

    Commands

    +

    Using the Open GoPro API, a client can perform various command, control, and query operations.

    +

    Depending on the camera's state, it may not be ready to accept specific commands. +This ready state is dependent on the System Busy and the Encoding Active status flags. For example:

    +
      +
    • System Busy flag is set while loading presets, changing settings, formatting sdcard
    • +
    • Encoding Active flag is set while capturing photo/video media
    • +
    +

    If the system is not ready, it should reject an incoming command; however, best practice is to always wait for the +System Busy and Encode Active flags to be unset before sending messages other than camera status queries. +For details regarding camera state, see the Get State Operation

    +

    Keep Alive

    +

    It is necessary to periodically send a keep-alive signal to maintain the connection.

    +

    Camera Control

    +

    In order to prevent undefined behavior between the camera and a connected app, simultaneous use of the camera and a +connected app is discouraged. A third party client should use the Set Camera Control Status +command to tell the camera that the client wishes to claim control of the camera.

    +

    Limitations

    +

    HERO12 Black:

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given the order defined in the spec
    • +
    +

    HERO11 Black Mini

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order defined in the spec
    • +
    +

    HERO11 Black

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order defined in the spec
    • +
    +

    HERO10 Black

    +
      +
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • +
    • HTTP command arguments must be given in the order defined in the spec
    • +
    +

    HERO9 Black

    +
      +
    • The HTTP server is not available while the camera is encoding, which means shutter controls are not supported over WiFi. +This limitation can be overcome by using Bluetooth Low Energy for command and control and HTTP/REST +for querying media content such as media list, media info, preview stream, etc.
    • +
    • USB command and control is not supported on HERO9 Black.
    • +
    • HTTP command arguments must be given in the order defined in the spec
    • +
    +

    General

    +
      +
    • In general, querying the value for a setting that is not associated with the current preset/core mode results +in an undefined value. For example, the user should not try to query the current Photo Digital Lenses (FOV) +value while in Standard preset (Video mode).
    • +
    +

    Analytics

    Query / Configure Analytics

    +

    Set Client as Third Party


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    COHN

    The Camera On the Home Network (COHN) capability allows the client to perform command and control with the camera +indirectly through an access point such as a router at home.

    +

    For security purposes, all communications are performed over HTTPS.

    +

    The following cameras support COHN:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraSupported
    HERO12 Blackโœ”
    HERO11 Black MiniโŒ
    HERO11 BlackโŒ
    HERO10 BlackโŒ
    HERO9 BlackโŒ
    +

    Provisioning COHN

    In order to use the COHN capability, the camera must first be provisioned for COHN. +For instructions on how to do this, see the Open GoPro BLE spec.

    +

    Send Messages via HTTPS

    Once the camera is provisioned, the client can issue commands and set settings +via HTTPS using the COHN certificate and Basic authorization (username/password) credentials obtained during +provisioning or subsequently by querying for COHN status.

    +

    HTTPS Headers

    All HTTPS messages must contain Basic access authentication +headers, using the username and password from the COHN status obtained during or after provisioning.

    +

    Configure COHN Settings


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +
    Request Body schema: application/json
    cohn_active
    integer
    Enum: 0 1

    1 to enable, 0 to disable

    +

    When cohn_active == 1, STA Mode connection will be dropped and camera will not +automatically re-connect for COHN.

    +

    Responses

    Response Schema: application/json
    object

    Request samples

    Content type
    application/json
    {
    • "cohn_active": 0
    }

    Response samples

    Content type
    application/json
    { }

    Create the COHN Certificates

    This creates the Camera On the Home Network SSL/TLS certs certs. +The created certificate(s) can be obtained via Get COHN Certificate and +used for SSL/TLS communications

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +
    Request Body schema: application/json
    override
    integer
    Enum: 0 1

    If 1, replace existing Root CA cert with a newly-generated one.

    +

    Responses

    Response Schema: application/json
    object

    Request samples

    Content type
    application/json
    {
    • "override": 0
    }

    Response samples

    Content type
    application/json
    { }

    Delete COHN Certificates


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Get COHN Certificate


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +

    Responses

    Response Schema: text/plain
    string

    Response samples

    Content type
    text/plain
    -----BEGIN CERTIFICATE-----
    +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    +-----END CERTIFICATE----
    +

    Get COHN Status


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +

    Responses

    Response Schema: application/json
    enabled
    integer
    Enum: 0 1

    Is COHN currently enabled?

    +
    ipaddress
    string
    Example: "123.45.67.890"

    Camera's IP address on the local network

    +
    macaddress
    string

    MAC address of the wifi adapter

    +
    password
    string

    Password used for http basic auth header

    +
    ssid
    string

    Currently connected SSID

    +
    state
    integer (EnumCOHNNetworkState)
    Enum: 0 1 2 5 27 28 29 30
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0COHN_STATE_Init
    1COHN_STATE_Error
    2COHN_STATE_Exit
    5COHN_STATE_Idle
    27COHN_STATE_NetworkConnected
    28COHN_STATE_NetworkDisconnected
    29COHN_STATE_ConnectingToNetwork
    30COHN_STATE_Invalid
    +
    status
    integer (EnumCOHNStatus)
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0COHN_UNPROVISIONED
    1COHN_PROVISIONED
    +
    username
    string

    Username used for http basic auth header

    +

    Response samples

    Content type
    application/json
    {
    • "enabled": 0,
    • "ipaddress": "123.45.67.890",
    • "macaddress": "string",
    • "password": "string",
    • "ssid": "string",
    • "state": 0,
    • "status": 0,
    • "username": "string"
    }

    Control

    Command and control of the camera

    +

    Configure Turbo Transfer

    Some cameras support Turbo Transfer mode, which allows media to be downloaded over WiFi more rapidly.

    +

    This special mode should only be used during media offload.

    +

    It is recommended that the user check for and, if necessary, disable Turbo Transfer on connection.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    p
    integer
    Enum: 0 1

    0 to disable, 1 to enable

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Enable Wired camera control over USB


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    p
    integer
    Enum: 0 1

    If 1, enable wired usb control; If 0, disable usb control

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Keep Alive

    In order to maximize battery life, GoPro cameras automatically go to sleep after some time. +This logic is handled by a combination of the Auto Power Down setting which most (but not all) cameras support +and a Keep Alive message that the user can regularly send to the camera.

    +

    The camera will automatically go to sleep if both timers reach zero.

    +

    The Auto Power Down timer is reset when the user taps the LCD screen, presses a button on the camera, +programmatically (un)sets the shutter, sets a setting, or loads a Preset.

    +

    The Keep Alive timer is reset when the user sends a keep alive message.

    +

    The best practice to prevent the camera from inadvertently going to sleep is to start sending Keep Alive messages +every 3.0 seconds after a connection is established.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Set Camera Control Status

    This command is used to tell the camera that a client (i.e. External Control) wishes to claim control of the camera. +This causes the camera to immediately exit any contextual menus and return to the idle screen. Any interaction with the +camera's physical buttons will cause the camera to reclaim control and update control status accordingly. If the user +returns the camera UI to the idle screen, the camera updates control status to Idle.

    +

    Note:

    +
      +
    • The entity currently claiming control of the camera is advertised in camera status 114
    • +
    • Information about whether the camera is in a contextual menu or not is advertised in camera status 63.
    • +
    +

    See the below diagram for a state diagram of Camera Control:

    +

    global behaviors state diagram

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    p
    integer (EnumCameraControlStatus)
    Enum: 0 1 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0CAMERA_IDLE
    1CAMERA_CONTROLCan only be set by camera, not by app or third party
    2CAMERA_EXTERNAL_CONTROL
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Set Date / Time


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    date
    string
    Example: date=2023_12_31

    current date in format YYYY_MM_DD

    +
    time
    string
    Example: time=21_12_13

    current time in format HH_MM_SS in 24 hour format

    +
    tzone
    integer
    Example: tzone=-480

    Timezone offset in minutes. See here for a +listing of all UTC offsets.

    +

    Not supported on:

    +
      +
    • Hero 10 Black
    • +
    • Hero 9 Black
    • +
    +
    dst
    integer
    Enum: 0 1

    Is daylight savings time active?

    +

    Not supported on:

    +
      +
    • Hero 10 Black
    • +
    • Hero 9 Black
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Set Digital Zoom


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    percent
    integer [ 0 .. 100 ]
    Example: percent=50

    Zoom Level (0-100)

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Set Shutter


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    path Parameters
    mode
    string
    Enum: "start" "stop"

    Start / stop encoding.

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Hilights

    The HiLight Tags +feature allows the user to tag moments of interest either during video capture or on existing media.

    +

    Once HiLight tags have been added, they can be queried via Media Info

    +

    Hilight a Media File

    Add a hilight / tag to an existing photo or media file.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    required
    string
    Example: path=100GOPRO/GOPR0002.MP4

    The path to a file on the camera to HiLight

    +
    ms
    integer
    Example: ms=1

    The offset from the beginning of a video file, in milliseconds

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Hilight While Recording

    Add hilight at current time while recording video

    +

    This can only be used during recording.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Remove Hilight

    Remove an existing hilight from a photo or video file.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    required
    string
    Example: path=100GOPRO/GOPR0002.MP4

    The path to a file on the camera to remove a HiLight from

    +
    ms
    integer
    Example: ms=1

    The offset from the beginning of a video file, in milliseconds

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Media

    This section describes the operations to query basic details about media captured on the sdcard.

    +

    Chapters

    All GoPro cameras break longer videos into chapters. +GoPro cameras currently limit file sizes on sdcards to 4GB for both FAT32 and exFAT file systems. +This limitation is most commonly seen when recording longer (10+ minute) videos. +In practice, the camera will split video media into chapters named Gqccmmmm.MP4 (and ones for THM/LRV) such that:

    +
      +
    • q: Quality Level (X: Extreme, H: High, M: Medium, L: Low)
    • +
    • cc: Chapter Number (01-99)
    • +
    • mmmm: Media ID (0001-9999)
    • +
    +

    When media becomes chaptered, the camera increments subsequent Chapter Numbers while leaving the Media ID unchanged. +For example, if the user records a long High-quality video that results in 4 chapters, the files on the sdcard may +look like the following:

    +
    -rwxrwxrwx@ 1 gopro  123456789  4006413091 Jan  1 00:00 GH010078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17663 Jan  1 00:00 GH010078.THM
    +-rwxrwxrwx@ 1 gopro  123456789  4006001541 Jan  1 00:00 GH020078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17357 Jan  1 00:00 GH020078.THM
    +-rwxrwxrwx@ 1 gopro  123456789  4006041985 Jan  1 00:00 GH030078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17204 Jan  1 00:00 GH030078.THM
    +-rwxrwxrwx@ 1 gopro  123456789   756706872 Jan  1 00:00 GH040078.MP4
    +-rwxrwxrwx@ 1 gopro  123456789       17420 Jan  1 00:00 GH040078.THM
    +-rwxrwxrwx@ 1 gopro  123456789   184526939 Jan  1 00:00 GL010078.LRV
    +-rwxrwxrwx@ 1 gopro  123456789   184519787 Jan  1 00:00 GL020078.LRV
    +-rwxrwxrwx@ 1 gopro  123456789   184517614 Jan  1 00:00 GL030078.LRV
    +-rwxrwxrwx@ 1 gopro  123456789    34877660 Jan  1 00:00 GL040078.LRV
    +
    +

    Download a Media File

    Note that this is the same endpoint for all media (photos, video, etc.).

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    path Parameters
    directory
    required
    string
    Example: 100GOPRO

    Case sensitive directory that media resides in

    +
    filename
    required
    string
    Examples:
    • GOPR0001.JPG - Sample photo file
    • GH010397.MP4 - Sample video file

    Case sensitive media filename

    +

    Get Last Captured Media

    This will return the complete path of the last captured media. Depending on the type of media captured, it will return:

    +
      +
    • single photo / video: The single media path
    • +
    • any grouped media: The path to the first captured media in the group
    • +
    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +

    Responses

    Response Schema: application/json
    file
    string
    Example: "GOPR0002.JPG"

    Filename of media

    +
    folder
    string
    Example: "100GOPRO"

    Directory that the media is contained in

    +

    Response samples

    Content type
    application/json
    {
    • "file": "GOPR0002.JPG",
    • "folder": "100GOPRO"
    }

    Get Media File GPMF

    None

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    string
    Example: path=100GOPRO/GOPR0002.JPG

    media file name

    +

    Responses

    Response Schema: application/octet-stream
    string <binary>

    Get Media File Info


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    string
    Example: path=100GOPRO/GOPR0002.JPG

    media file name

    +

    Responses

    Response Schema: application/json
    Any of
    ao
    required
    string
    Enum: "auto" "wind" "stereo" "off"
    Example: "auto"

    Audio option

    +
    avc_profile
    required
    integer [ 0 .. 255 ]
    Example: "0"

    Advanced Video Code Profile

    +
    cl
    required
    integer
    Enum: 0 1

    1 if clipped, 0 otherwise

    +
    cre
    required
    integer
    Example: "1692992748"

    Creation time in seconds since epoch

    +
    ct
    required
    integer
    Enum: 0 1 2 3 4 5 6 8 9 10 11 12

    Media content type

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    Video0
    Looping1
    Chaptered Video2
    Time Lapse3
    Single Photo4
    Burst Photo5
    Time Lapse Photo6
    Night Lapse Photo8
    Night Photo9
    Continuous Photo10
    Raw Photo11
    Live Burst12
    +
    dur
    required
    integer
    Example: "42"

    Video duration in seconds

    +
    eis
    required
    integer
    Enum: 0 1

    1 if stabilized, 0 otherwise

    +
    fov
    string

    Field of View

    +
    fps
    required
    integer
    Example: "1001"

    Video frame rate numerator

    +
    fps_denom
    required
    integer
    Example: "30000"

    Video frame rate denominator

    +
    gumi
    required
    string
    Example: "12345678998765443211234567899875"

    Globally Unique Media ID

    +
    h
    required
    integer
    Example: "1080"

    Height of media in pixels

    +
    hc
    required
    integer [ 0 .. 99 ]

    Number of hilights in media

    +
    hi
    Array of integers
    Example: "1500,4700"

    List of hilights in ms offset from start of video

    +
    lc
    integer
    Enum: 0 1

    Lens configuration ==> 0 for front, 1 for rear

    +
    ls
    required
    integer [ -1 .. 1234567890 ]

    Low Resolution Video file size in bytes. -1 if there is no LRV file

    +
    mos
    Array of strings
    Items Enum: "app" "pc" "other"
    Example: "app,pc"

    List of offload states

    +
    mp
    required
    integer
    Enum: 0 1

    1 if metadata is present, 0 otherwise

    +
    prjn
    integer
    Enum: 0 1 2 3 4 5 6 7 8

    Lens projection

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    EAC0
    ERP1
    EAC, split horizontally in the middle for 2 output2
    ERP, cropped for panorama3
    Bypass stitch algorithm, side by side circles4
    Stitch is disabled, stitch algorithm is enabled for offline stitch5
    Stitch is disabled6
    Bypass stitch algorithm for EAC split7
    Hemisheric8
    +
    profile
    required
    integer [ 0 .. 255 ]

    Advanced Video Codec Level

    +
    progr
    integer
    Enum: 0 1

    Is video progressive? 1 if progressive, 0 if interlaced

    +
    pta
    required
    integer
    Enum: 0 1

    1 if protune audio is present, 0 otherwise

    +
    rot
    required
    string

    Deprecated

    +
    s
    required
    integer
    Example: "1234567890"

    File size in bytes

    +
    subsample
    required
    integer
    Enum: 0 1

    1 if subsampled from other video, 0 otherwise

    +
    tr
    required
    integer
    Enum: 0 1

    1 if file is transcoded, 0 otherwise

    +
    us
    required
    integer
    Enum: 0 1

    Has the file been uploaded? 0 if no, 1 if yes

    +
    w
    required
    integer
    Example: "1920"

    Width of media in pixels

    +

    Response samples

    Content type
    application/json
    Example
    {
    • "ao": "auto",
    • "avc_profile": 0,
    • "cl": 0,
    • "cre": 1692992748,
    • "ct": 0,
    • "dur": 42,
    • "eis": 0,
    • "fov": "string",
    • "fps": 1001,
    • "fps_denom": 30000,
    • "gumi": "12345678998765443211234567899875",
    • "h": 1080,
    • "hc": 99,
    • "hi": [
      ],
    • "lc": 0,
    • "ls": -1,
    • "mos": [
      ],
    • "mp": 0,
    • "prjn": 0,
    • "profile": 255,
    • "progr": 0,
    • "pta": 0,
    • "rot": "string",
    • "s": 1234567890,
    • "subsample": 0,
    • "tr": 0,
    • "us": 0,
    • "w": 1920
    }

    Get Media File Screennail

    A screennail is a low-res preview image that is higher resolution than a thumbnail.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    string
    Example: path=100GOPRO/GOPR0002.JPG

    media file name

    +

    Responses

    Response Schema: application/octet-stream
    string <binary>

    Get Media File Telemetry

    Get Media File Telemetry track data

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    string
    Example: path=100GOPRO/GOPR0002.JPG

    media file name

    +

    Responses

    Response Schema: application/octet-stream
    string <binary>

    Get Media File Thumbnail


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    path
    string
    Example: path=100GOPRO/GOPR0002.JPG

    media file name

    +

    Responses

    Response Schema: application/octet-stream
    string <binary>

    Get Media List

    To minimize the size of the JSON transmitted by the camera, grouped media items such as Burst Photos, + Time Lapse Photos, Night Lapse Photos, etc are represented with a single item in the media list with additional keys + that allow the user to extrapolate individual filenames for each member of the group.

    +

    Filenames for group media items have the form "GXXXYYYY.ZZZ" +where XXX is the group ID, YYY is the group member ID and ZZZ is the file extension.

    +

    For example, take the media list below, which contains a Time Lapse Photo group media item:

    +
    {
    +    "id": "2530266050123724003",
    +    "media": [
    +        {
    +            "d": "100GOPRO",
    +            "fs" : [
    +                {
    +                    "b": "8",
    +                    "cre": "1613669353",
    +                    "g": "1",
    +                    "l": "396",
    +                    "m": ["75", "139"],
    +                    "mod": "1613669353",
    +                    "n": "G0010008.JPG",
    +                    "s": "773977407",
    +                    "t": "t"
    +                }
    +            ]
    +        }
    +    ]
    +}
    +
    +

    The first filename in the group is G0010008.JP (key: n).

    +

    The ID of the first group member in this case is 008 (key: b).

    +

    The ID of the last group member in this case is 396 (key: l).

    +

    The IDs of deleted members in this case are 75 and 139 (key: m)

    +

    Given this information, the user can extrapolate that the group currently contains

    +
    G0010008.JPG, G0010009.JPG, G0010010.JPG,
    +...,
    +G0010074.JPG, G0010076.JPG,
    +...,
    +G0010138.JPG, G0010140.JPG,
    +...,
    +G0010394.JPG, G0010395.JPG. G0010396.JPG
    +
    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    id
    required
    string
    Example: "1554375628411872255"

    media list identifier

    +
    required
    Array of objects
    Array
    d
    required
    string
    Example: "100GOPRO"

    directory that the media files reside in

    +
    required
    Array of SingleMediaListItem (object) or GroupedMediaListItem (object)

    list of files

    +
    Array
    Any of
    cre
    required
    integer
    Example: "1696600109"

    Creation time in seconds since epoch

    +
    glrv
    integer
    Example: "817767"

    Low resolution video size

    +
    ls
    integer
    Example: "-1"

    Low resolution file size. -1 if there is no LRV file

    +
    mod
    required
    integer
    Example: "1696600109"

    Time file was last modified in seconds since epoch

    +
    n
    required
    string
    Example: "GOPR0001.JPG"

    Media filename

    +
    s
    required
    integer
    Example: "2806303"

    Size of media in bytes

    +

    Response samples

    Content type
    application/json
    {
    • "id": "1554375628411872255",
    • "media": [
      ]
    }

    Models

    Common data models used across operations

    +

    GroupedMediaListItem

    b
    required
    integer
    Example: "1"

    ID of first member in the group

    +
    cre
    required
    integer
    Example: "1696600109"

    Creation time in seconds since epoch

    +
    g
    required
    integer
    Example: "1"

    Group Identifier

    +
    glrv
    integer
    Example: "817767"

    Low resolution video size

    +
    id
    string

    Media list session identifier

    +
    l
    required
    integer
    Example: "6"

    ID of last member in the group

    +
    ls
    integer
    Example: "-1"

    Low resolution file size. -1 if there is no LRV file

    +
    m
    required
    Array of integers
    Example: "1,2"

    File ID's that are missing or deleted

    +
    mod
    required
    integer
    Example: "1696600109"

    Time file was last modified in seconds since epoch

    +
    n
    required
    string
    Example: "G0010011.MP4"

    Media filename

    +
    s
    required
    integer
    Example: "5"

    Number of files in the group

    +
    t
    required
    string
    Enum: "b" "c" "n" "t"

    Group Type (b -> burst, c -> continuous shot, n -> night lapse, t -> time lapse)

    +
    {
    • "b": 1,
    • "cre": 1696600109,
    • "g": 1,
    • "glrv": 817767,
    • "id": "string",
    • "l": 6,
    • "ls": -1,
    • "m": [
      ],
    • "mod": 1696600109,
    • "n": "G0010011.MP4",
    • "s": 5,
    • "t": "b"
    }

    MediaList

    id
    required
    string
    Example: "1554375628411872255"

    media list identifier

    +
    required
    Array of objects
    Array
    d
    required
    string
    Example: "100GOPRO"

    directory that the media files reside in

    +
    required
    Array of SingleMediaListItem (object) or GroupedMediaListItem (object)

    list of files

    +
    Array
    Any of
    cre
    required
    integer
    Example: "1696600109"

    Creation time in seconds since epoch

    +
    glrv
    integer
    Example: "817767"

    Low resolution video size

    +
    ls
    integer
    Example: "-1"

    Low resolution file size. -1 if there is no LRV file

    +
    mod
    required
    integer
    Example: "1696600109"

    Time file was last modified in seconds since epoch

    +
    n
    required
    string
    Example: "GOPR0001.JPG"

    Media filename

    +
    s
    required
    integer
    Example: "2806303"

    Size of media in bytes

    +
    {
    • "id": "1554375628411872255",
    • "media": [
      ]
    }

    PhotoMetadata

    cre
    required
    integer
    Example: "1692992748"

    Creation time in seconds since epoch

    +
    ct
    required
    integer
    Enum: 0 1 2 3 4 5 6 8 9 10 11 12

    Media content type

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    Video0
    Looping1
    Chaptered Video2
    Time Lapse3
    Single Photo4
    Burst Photo5
    Time Lapse Photo6
    Night Lapse Photo8
    Night Photo9
    Continuous Photo10
    Raw Photo11
    Live Burst12
    +
    eis
    required
    integer
    Enum: 0 1

    1 if stabilized, 0 otherwise

    +
    fov
    string

    Field of View

    +
    gumi
    required
    string
    Example: "12345678998765443211234567899875"

    Globally Unique Media ID

    +
    h
    required
    integer
    Example: "1080"

    Height of media in pixels

    +
    hc
    required
    integer [ 0 .. 99 ]

    Number of hilights in media

    +
    hdr
    integer
    Enum: 0 1

    1 if photo taken with high dynamic range, 0 otherwise

    +
    lc
    integer
    Enum: 0 1

    Lens configuration ==> 0 for front, 1 for rear

    +
    mos
    Array of strings
    Items Enum: "app" "pc" "other"
    Example: "app,pc"

    List of offload states

    +
    mp
    required
    integer
    Enum: 0 1

    1 if metadata is present, 0 otherwise

    +
    prjn
    integer
    Enum: 0 1 2 3 4 5 6 7 8

    Lens projection

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    EAC0
    ERP1
    EAC, split horizontally in the middle for 2 output2
    ERP, cropped for panorama3
    Bypass stitch algorithm, side by side circles4
    Stitch is disabled, stitch algorithm is enabled for offline stitch5
    Stitch is disabled6
    Bypass stitch algorithm for EAC split7
    Hemisheric8
    +
    raw
    integer
    Enum: 0 1

    1 if photo has raw version, 0 otherwise

    +
    rot
    required
    string

    Deprecated

    +
    s
    required
    integer
    Example: "1234567890"

    File size in bytes

    +
    tr
    required
    integer
    Enum: 0 1

    1 if file is transcoded, 0 otherwise

    +
    us
    required
    integer
    Enum: 0 1

    Has the file been uploaded? 0 if no, 1 if yes

    +
    w
    required
    integer
    Example: "1920"

    Width of media in pixels

    +
    wdr
    integer
    Enum: 0 1

    1 if photo taken with wide dynamic range, 0 otherwise

    +
    {
    • "cre": 1692992748,
    • "ct": 0,
    • "eis": 0,
    • "fov": "string",
    • "gumi": "12345678998765443211234567899875",
    • "h": 1080,
    • "hc": 99,
    • "hdr": 0,
    • "lc": 0,
    • "mos": [
      ],
    • "mp": 0,
    • "prjn": 0,
    • "raw": 0,
    • "rot": "string",
    • "s": 1234567890,
    • "tr": 0,
    • "us": 0,
    • "w": 1920,
    • "wdr": 0
    }

    Preset

    icon
    integer (EnumPresetIcon)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 78 79 1000 1001
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_ICON_VIDEO
    1PRESET_ICON_ACTIVITY
    2PRESET_ICON_CINEMATIC
    3PRESET_ICON_PHOTO
    4PRESET_ICON_LIVE_BURST
    5PRESET_ICON_BURST
    6PRESET_ICON_PHOTO_NIGHT
    7PRESET_ICON_TIMEWARP
    8PRESET_ICON_TIMELAPSE
    9PRESET_ICON_NIGHTLAPSE
    10PRESET_ICON_SNAIL
    11PRESET_ICON_VIDEO_2
    13PRESET_ICON_PHOTO_2
    14PRESET_ICON_PANORAMA
    15PRESET_ICON_BURST_2
    16PRESET_ICON_TIMEWARP_2
    17PRESET_ICON_TIMELAPSE_2
    18PRESET_ICON_CUSTOM
    19PRESET_ICON_AIR
    20PRESET_ICON_BIKE
    21PRESET_ICON_EPIC
    22PRESET_ICON_INDOOR
    23PRESET_ICON_MOTOR
    24PRESET_ICON_MOUNTED
    25PRESET_ICON_OUTDOOR
    26PRESET_ICON_POV
    27PRESET_ICON_SELFIE
    28PRESET_ICON_SKATE
    29PRESET_ICON_SNOW
    30PRESET_ICON_TRAIL
    31PRESET_ICON_TRAVEL
    32PRESET_ICON_WATER
    33PRESET_ICON_LOOPING
    58PRESET_ICON_BASIC
    59PRESET_ICON_ULTRA_SLO_MO
    60PRESET_ICON_STANDARD_ENDURANCE
    61PRESET_ICON_ACTIVITY_ENDURANCE
    62PRESET_ICON_CINEMATIC_ENDURANCE
    63PRESET_ICON_SLOMO_ENDURANCE
    64PRESET_ICON_STATIONARY_1
    65PRESET_ICON_STATIONARY_2
    66PRESET_ICON_STATIONARY_3
    67PRESET_ICON_STATIONARY_4
    70PRESET_ICON_SIMPLE_SUPER_PHOTO
    71PRESET_ICON_SIMPLE_NIGHT_PHOTO
    73PRESET_ICON_HIGHEST_QUALITY_VIDEO
    74PRESET_ICON_STANDARD_QUALITY_VIDEO
    75PRESET_ICON_BASIC_QUALITY_VIDEO
    76PRESET_ICON_STAR_TRAIL
    77PRESET_ICON_LIGHT_PAINTING
    78PRESET_ICON_LIGHT_TRAIL
    79PRESET_ICON_FULL_FRAME
    1000PRESET_ICON_TIMELAPSE_PHOTO
    1001PRESET_ICON_NIGHTLAPSE_PHOTO
    +
    id
    integer <int32>

    Unique preset identifier

    +
    is_fixed
    boolean

    Is this preset mutable?

    +
    is_modified
    boolean

    Has the preset been modified from the factory defaults?

    +
    mode
    integer (EnumFlatMode)
    Enum: -1 4 5 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    -1FLAT_MODE_UNKNOWN
    4FLAT_MODE_PLAYBACK
    5FLAT_MODE_SETUP
    12FLAT_MODE_VIDEO
    13FLAT_MODE_TIME_LAPSE_VIDEO
    15FLAT_MODE_LOOPING
    16FLAT_MODE_PHOTO_SINGLE
    17FLAT_MODE_PHOTO
    18FLAT_MODE_PHOTO_NIGHT
    19FLAT_MODE_PHOTO_BURST
    20FLAT_MODE_TIME_LAPSE_PHOTO
    21FLAT_MODE_NIGHT_LAPSE_PHOTO
    22FLAT_MODE_BROADCAST_RECORD
    23FLAT_MODE_BROADCAST_BROADCAST
    24FLAT_MODE_TIME_WARP_VIDEO
    25FLAT_MODE_LIVE_BURST
    26FLAT_MODE_NIGHT_LAPSE_VIDEO
    27FLAT_MODE_SLOMO
    28FLAT_MODE_IDLE
    29FLAT_MODE_VIDEO_STAR_TRAIL
    30FLAT_MODE_VIDEO_LIGHT_PAINTING
    31FLAT_MODE_VIDEO_LIGHT_TRAIL
    +
    Array of objects (PresetSetting)
    Array
    id
    integer <int32>

    Setting identifier

    +
    is_caption
    boolean

    Does this setting appear on the Preset "pill" in the camera UI?

    +
    value
    integer <int32>

    Setting value

    +
    title_id
    integer (EnumPresetTitle)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 82 83 93 94
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_TITLE_ACTIVITY
    1PRESET_TITLE_STANDARD
    2PRESET_TITLE_CINEMATIC
    3PRESET_TITLE_PHOTO
    4PRESET_TITLE_LIVE_BURST
    5PRESET_TITLE_BURST
    6PRESET_TITLE_NIGHT
    7PRESET_TITLE_TIME_WARP
    8PRESET_TITLE_TIME_LAPSE
    9PRESET_TITLE_NIGHT_LAPSE
    10PRESET_TITLE_VIDEO
    11PRESET_TITLE_SLOMO
    13PRESET_TITLE_PHOTO_2
    14PRESET_TITLE_PANORAMA
    16PRESET_TITLE_TIME_WARP_2
    18PRESET_TITLE_CUSTOM
    19PRESET_TITLE_AIR
    20PRESET_TITLE_BIKE
    21PRESET_TITLE_EPIC
    22PRESET_TITLE_INDOOR
    23PRESET_TITLE_MOTOR
    24PRESET_TITLE_MOUNTED
    25PRESET_TITLE_OUTDOOR
    26PRESET_TITLE_POV
    27PRESET_TITLE_SELFIE
    28PRESET_TITLE_SKATE
    29PRESET_TITLE_SNOW
    30PRESET_TITLE_TRAIL
    31PRESET_TITLE_TRAVEL
    32PRESET_TITLE_WATER
    33PRESET_TITLE_LOOPING
    58PRESET_TITLE_BASIC
    59PRESET_TITLE_ULTRA_SLO_MO
    60PRESET_TITLE_STANDARD_ENDURANCE
    61PRESET_TITLE_ACTIVITY_ENDURANCE
    62PRESET_TITLE_CINEMATIC_ENDURANCE
    63PRESET_TITLE_SLOMO_ENDURANCE
    64PRESET_TITLE_STATIONARY_1
    65PRESET_TITLE_STATIONARY_2
    66PRESET_TITLE_STATIONARY_3
    67PRESET_TITLE_STATIONARY_4
    68PRESET_TITLE_SIMPLE_VIDEO
    69PRESET_TITLE_SIMPLE_TIME_WARP
    70PRESET_TITLE_SIMPLE_SUPER_PHOTO
    71PRESET_TITLE_SIMPLE_NIGHT_PHOTO
    72PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE
    73PRESET_TITLE_HIGHEST_QUALITY
    74PRESET_TITLE_EXTENDED_BATTERY
    75PRESET_TITLE_LONGEST_BATTERY
    76PRESET_TITLE_STAR_TRAIL
    77PRESET_TITLE_LIGHT_PAINTING
    78PRESET_TITLE_LIGHT_TRAIL
    79PRESET_TITLE_FULL_FRAME
    82PRESET_TITLE_STANDARD_QUALITY_VIDEO
    83PRESET_TITLE_BASIC_QUALITY_VIDEO
    93PRESET_TITLE_HIGHEST_QUALITY_VIDEO
    94PRESET_TITLE_USER_DEFINED_CUSTOM_NAME
    +
    title_number
    integer <int32>

    Preset title number

    +
    user_defined
    boolean

    Is this preset user defined?

    +
    {
    • "icon": 0,
    • "id": 0,
    • "is_fixed": true,
    • "is_modified": true,
    • "mode": -1,
    • "setting_array": [
      ],
    • "title_id": 0,
    • "title_number": 0,
    • "user_defined": true
    }

    PresetGroup

    can_add_preset
    boolean

    Is there room in the group to add additional Presets?

    +
    icon
    integer (EnumPresetGroupIcon)
    Enum: 0 1 2 3 4 5 6 7
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_GROUP_VIDEO_ICON_ID
    1PRESET_GROUP_PHOTO_ICON_ID
    2PRESET_GROUP_TIMELAPSE_ICON_ID
    3PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID
    4PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID
    5PRESET_GROUP_MAX_VIDEO_ICON_ID
    6PRESET_GROUP_MAX_PHOTO_ICON_ID
    7PRESET_GROUP_MAX_TIMELAPSE_ICON_ID
    +
    id
    integer (EnumPresetGroup)
    Enum: 1000 1001 1002
    + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    1000PRESET_GROUP_ID_VIDEO
    1001PRESET_GROUP_ID_PHOTO
    1002PRESET_GROUP_ID_TIMELAPSE
    +
    Array of objects (Preset)

    Array of Presets contained in this Preset Group

    +
    Array
    icon
    integer (EnumPresetIcon)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 78 79 1000 1001
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_ICON_VIDEO
    1PRESET_ICON_ACTIVITY
    2PRESET_ICON_CINEMATIC
    3PRESET_ICON_PHOTO
    4PRESET_ICON_LIVE_BURST
    5PRESET_ICON_BURST
    6PRESET_ICON_PHOTO_NIGHT
    7PRESET_ICON_TIMEWARP
    8PRESET_ICON_TIMELAPSE
    9PRESET_ICON_NIGHTLAPSE
    10PRESET_ICON_SNAIL
    11PRESET_ICON_VIDEO_2
    13PRESET_ICON_PHOTO_2
    14PRESET_ICON_PANORAMA
    15PRESET_ICON_BURST_2
    16PRESET_ICON_TIMEWARP_2
    17PRESET_ICON_TIMELAPSE_2
    18PRESET_ICON_CUSTOM
    19PRESET_ICON_AIR
    20PRESET_ICON_BIKE
    21PRESET_ICON_EPIC
    22PRESET_ICON_INDOOR
    23PRESET_ICON_MOTOR
    24PRESET_ICON_MOUNTED
    25PRESET_ICON_OUTDOOR
    26PRESET_ICON_POV
    27PRESET_ICON_SELFIE
    28PRESET_ICON_SKATE
    29PRESET_ICON_SNOW
    30PRESET_ICON_TRAIL
    31PRESET_ICON_TRAVEL
    32PRESET_ICON_WATER
    33PRESET_ICON_LOOPING
    58PRESET_ICON_BASIC
    59PRESET_ICON_ULTRA_SLO_MO
    60PRESET_ICON_STANDARD_ENDURANCE
    61PRESET_ICON_ACTIVITY_ENDURANCE
    62PRESET_ICON_CINEMATIC_ENDURANCE
    63PRESET_ICON_SLOMO_ENDURANCE
    64PRESET_ICON_STATIONARY_1
    65PRESET_ICON_STATIONARY_2
    66PRESET_ICON_STATIONARY_3
    67PRESET_ICON_STATIONARY_4
    70PRESET_ICON_SIMPLE_SUPER_PHOTO
    71PRESET_ICON_SIMPLE_NIGHT_PHOTO
    73PRESET_ICON_HIGHEST_QUALITY_VIDEO
    74PRESET_ICON_STANDARD_QUALITY_VIDEO
    75PRESET_ICON_BASIC_QUALITY_VIDEO
    76PRESET_ICON_STAR_TRAIL
    77PRESET_ICON_LIGHT_PAINTING
    78PRESET_ICON_LIGHT_TRAIL
    79PRESET_ICON_FULL_FRAME
    1000PRESET_ICON_TIMELAPSE_PHOTO
    1001PRESET_ICON_NIGHTLAPSE_PHOTO
    +
    id
    integer <int32>

    Unique preset identifier

    +
    is_fixed
    boolean

    Is this preset mutable?

    +
    is_modified
    boolean

    Has the preset been modified from the factory defaults?

    +
    mode
    integer (EnumFlatMode)
    Enum: -1 4 5 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    -1FLAT_MODE_UNKNOWN
    4FLAT_MODE_PLAYBACK
    5FLAT_MODE_SETUP
    12FLAT_MODE_VIDEO
    13FLAT_MODE_TIME_LAPSE_VIDEO
    15FLAT_MODE_LOOPING
    16FLAT_MODE_PHOTO_SINGLE
    17FLAT_MODE_PHOTO
    18FLAT_MODE_PHOTO_NIGHT
    19FLAT_MODE_PHOTO_BURST
    20FLAT_MODE_TIME_LAPSE_PHOTO
    21FLAT_MODE_NIGHT_LAPSE_PHOTO
    22FLAT_MODE_BROADCAST_RECORD
    23FLAT_MODE_BROADCAST_BROADCAST
    24FLAT_MODE_TIME_WARP_VIDEO
    25FLAT_MODE_LIVE_BURST
    26FLAT_MODE_NIGHT_LAPSE_VIDEO
    27FLAT_MODE_SLOMO
    28FLAT_MODE_IDLE
    29FLAT_MODE_VIDEO_STAR_TRAIL
    30FLAT_MODE_VIDEO_LIGHT_PAINTING
    31FLAT_MODE_VIDEO_LIGHT_TRAIL
    +
    Array of objects (PresetSetting)
    Array
    id
    integer <int32>

    Setting identifier

    +
    is_caption
    boolean

    Does this setting appear on the Preset "pill" in the camera UI?

    +
    value
    integer <int32>

    Setting value

    +
    title_id
    integer (EnumPresetTitle)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 82 83 93 94
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_TITLE_ACTIVITY
    1PRESET_TITLE_STANDARD
    2PRESET_TITLE_CINEMATIC
    3PRESET_TITLE_PHOTO
    4PRESET_TITLE_LIVE_BURST
    5PRESET_TITLE_BURST
    6PRESET_TITLE_NIGHT
    7PRESET_TITLE_TIME_WARP
    8PRESET_TITLE_TIME_LAPSE
    9PRESET_TITLE_NIGHT_LAPSE
    10PRESET_TITLE_VIDEO
    11PRESET_TITLE_SLOMO
    13PRESET_TITLE_PHOTO_2
    14PRESET_TITLE_PANORAMA
    16PRESET_TITLE_TIME_WARP_2
    18PRESET_TITLE_CUSTOM
    19PRESET_TITLE_AIR
    20PRESET_TITLE_BIKE
    21PRESET_TITLE_EPIC
    22PRESET_TITLE_INDOOR
    23PRESET_TITLE_MOTOR
    24PRESET_TITLE_MOUNTED
    25PRESET_TITLE_OUTDOOR
    26PRESET_TITLE_POV
    27PRESET_TITLE_SELFIE
    28PRESET_TITLE_SKATE
    29PRESET_TITLE_SNOW
    30PRESET_TITLE_TRAIL
    31PRESET_TITLE_TRAVEL
    32PRESET_TITLE_WATER
    33PRESET_TITLE_LOOPING
    58PRESET_TITLE_BASIC
    59PRESET_TITLE_ULTRA_SLO_MO
    60PRESET_TITLE_STANDARD_ENDURANCE
    61PRESET_TITLE_ACTIVITY_ENDURANCE
    62PRESET_TITLE_CINEMATIC_ENDURANCE
    63PRESET_TITLE_SLOMO_ENDURANCE
    64PRESET_TITLE_STATIONARY_1
    65PRESET_TITLE_STATIONARY_2
    66PRESET_TITLE_STATIONARY_3
    67PRESET_TITLE_STATIONARY_4
    68PRESET_TITLE_SIMPLE_VIDEO
    69PRESET_TITLE_SIMPLE_TIME_WARP
    70PRESET_TITLE_SIMPLE_SUPER_PHOTO
    71PRESET_TITLE_SIMPLE_NIGHT_PHOTO
    72PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE
    73PRESET_TITLE_HIGHEST_QUALITY
    74PRESET_TITLE_EXTENDED_BATTERY
    75PRESET_TITLE_LONGEST_BATTERY
    76PRESET_TITLE_STAR_TRAIL
    77PRESET_TITLE_LIGHT_PAINTING
    78PRESET_TITLE_LIGHT_TRAIL
    79PRESET_TITLE_FULL_FRAME
    82PRESET_TITLE_STANDARD_QUALITY_VIDEO
    83PRESET_TITLE_BASIC_QUALITY_VIDEO
    93PRESET_TITLE_HIGHEST_QUALITY_VIDEO
    94PRESET_TITLE_USER_DEFINED_CUSTOM_NAME
    +
    title_number
    integer <int32>

    Preset title number

    +
    user_defined
    boolean

    Is this preset user defined?

    +
    {
    • "can_add_preset": true,
    • "icon": 0,
    • "id": 1000,
    • "preset_array": [
      ]
    }

    PresetSetting

    id
    integer <int32>

    Setting identifier

    +
    is_caption
    boolean

    Does this setting appear on the Preset "pill" in the camera UI?

    +
    value
    integer <int32>

    Setting value

    +
    {
    • "id": 0,
    • "is_caption": true,
    • "value": 0
    }

    SingleMediaListItem

    cre
    required
    integer
    Example: "1696600109"

    Creation time in seconds since epoch

    +
    glrv
    integer
    Example: "817767"

    Low resolution video size

    +
    ls
    integer
    Example: "-1"

    Low resolution file size. -1 if there is no LRV file

    +
    mod
    required
    integer
    Example: "1696600109"

    Time file was last modified in seconds since epoch

    +
    n
    required
    string
    Example: "GOPR0001.JPG"

    Media filename

    +
    s
    required
    integer
    Example: "2806303"

    Size of media in bytes

    +
    {
    • "cre": 1696600109,
    • "glrv": 817767,
    • "ls": -1,
    • "mod": 1696600109,
    • "n": "GOPR0001.JPG",
    • "s": 2806303
    }

    State

    object

    All currently known setting values indexed by setting ID

    +
    2
    integer
    Enum: 1 4 6 7 9 18 24 25 26 27 28 100 107 108 109 110 111

    Video Resolution

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    1Video Resolution 4KHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Resolution 2 7KHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    6Video Resolution 2 7K 4By3HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    7Video Resolution 1440HERO9 Black
    9Video Resolution 1080HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    18Video Resolution 4K 4By3HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    24Video Resolution 5KHERO9 Black
    25Video Resolution 5K 4By3HERO10 Black
    26Video Resolution 5 3K 8By7HERO11 Black Mini, HERO11 Black
    27Video Resolution 5 3K 4By3HERO11 Black Mini, HERO11 Black
    28Video Resolution 4K 8By7HERO11 Black Mini, HERO11 Black
    100Video Resolution 5 3KHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black
    107Video Resolution 5 3K 8By7 V2HERO12 Black
    108Video Resolution 4K 8By7 V2HERO12 Black
    109Video Resolution 4K 9By16 V2HERO12 Black
    110Video Resolution 1080 9By16 V2HERO12 Black
    111Video Resolution 2 7K 4By3 V2HERO12 Black
    +
    3
    integer
    Enum: 0 1 2 5 6 8 9 10 13

    Video Fps

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Fps 240HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    1Video Fps 120HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    2Video Fps 100HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    5Video Fps 60HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    6Video Fps 50HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    8Video Fps 30HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    9Video Fps 25HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    10Video Fps 24HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    13Video Fps 200HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    +
    43
    integer
    Enum: 0 2 3 4

    Broadcast Fov

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Broadcast Fov WideHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    2Broadcast Fov NarrowHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    3Broadcast Fov SuperviewHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Broadcast Fov LinearHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    +
    59
    integer
    Enum: 0 1 4 6 7 11 12

    Setup Auto Power Down

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Setup Auto Power Down NeverHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    1Setup Auto Power Down 1 MinHERO12 Black, HERO11 Black Mini, HERO11 Black
    4Setup Auto Power Down 5 MinHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    6Setup Auto Power Down 15 MinHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    7Setup Auto Power Down 30 MinHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    11Setup Auto Power Down 8 SecondsHERO11 Black Mini
    12Setup Auto Power Down 30 SecondsHERO11 Black Mini
    +
    108
    integer
    Enum: 0 1 3 4

    Video Aspect Ratio

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Aspect Ratio 4By3HERO12 Black
    1Video Aspect Ratio 16By9HERO12 Black
    3Video Aspect Ratio 8By7HERO12 Black
    4Video Aspect Ratio 9By16HERO12 Black
    +
    121
    integer
    Enum: 0 2 3 4 7 8 9 10 11

    Video Digital Lenses

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Digital Lenses WideHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    2Video Digital Lenses NarrowHERO10 Black, HERO9 Black
    3Video Digital Lenses SuperviewHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Digital Lenses LinearHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    7Video Digital Lenses Max SuperviewHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    8Video Digital Lenses Linear Plus Horizon LevelingHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    9Video Digital Lenses HyperviewHERO12 Black, HERO11 Black Mini, HERO11 Black
    10Video Digital Lenses Linear Plus Horizon LockHERO12 Black, HERO11 Black Mini, HERO11 Black
    11Video Digital Lenses Max HyperviewHERO12 Black
    +
    122
    integer
    Enum: 19 100 101 102

    Photo Digital Lenses

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    19Photo Digital Lenses NarrowHERO10 Black, HERO9 Black
    100Photo Digital Lenses Max SuperviewHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    101Photo Digital Lenses WideHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    102Photo Digital Lenses LinearHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    123
    integer
    Enum: 19 100 101 102

    Multi Shot Digital Lenses

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    19Multi Shot Digital Lenses NarrowHERO10 Black, HERO9 Black
    100Multi Shot Digital Lenses Max SuperviewHERO10 Black
    101Multi Shot Digital Lenses WideHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    102Multi Shot Digital Lenses LinearHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    128
    integer
    Enum: 13 20 21 26

    General Format

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    13General Format Time Lapse VideoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    20General Format Time Lapse PhotoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    21General Format Night Lapse PhotoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    26General Format Night Lapse VideoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    134
    integer
    Enum: 2 3

    Setup Anti Flicker

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    2Setup Anti Flicker 60 HzHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    3Setup Anti Flicker 50 HzHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    +
    135
    integer
    Enum: 0 1 2 3 4 100

    Video Hypersmooth

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Hypersmooth OffHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    1Video Hypersmooth OnHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO9 Black
    2Video Hypersmooth HighHERO10 Black, HERO9 Black
    3Video Hypersmooth BoostHERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Hypersmooth Auto BoostHERO12 Black, HERO11 Black Mini, HERO11 Black
    100Video Hypersmooth StandardHERO10 Black
    +
    150
    integer
    Enum: 0 2

    Video Horizon Levelling

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Horizon Levelling OffHERO11 Black
    2Video Horizon Levelling LockedHERO11 Black
    +
    151
    integer
    Enum: 0 2

    Photo Horizon Levelling

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Horizon Levelling OffHERO11 Black
    2Photo Horizon Levelling LockedHERO11 Black
    +
    162
    integer
    Enum: 0 1

    Mods Max Lens Enable

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Mods Max Lens Enable OffHERO11 Black, HERO10 Black, HERO9 Black
    1Mods Max Lens Enable OnHERO11 Black, HERO10 Black, HERO9 Black
    +
    167
    integer
    Enum: 2 3 4

    Video Hindsight Length

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    2Video Hindsight Length 15 SecondsHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    3Video Hindsight Length 30 SecondsHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Hindsight Length OffHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    171
    integer
    Enum: 0 2 3 4 5 6 7 8 9 10

    Photo Single Interval

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Single Interval OffHERO12 Black
    2Photo Single Interval 0 5 SecondsHERO12 Black
    3Photo Single Interval 1 SecondHERO12 Black
    4Photo Single Interval 2 SecondsHERO12 Black
    5Photo Single Interval 5 SecondsHERO12 Black
    6Photo Single Interval 10 SecondsHERO12 Black
    7Photo Single Interval 30 SecondsHERO12 Black
    8Photo Single Interval 60 SecondsHERO12 Black
    9Photo Single Interval 120 SecondsHERO12 Black
    10Photo Single Interval 3 SecondsHERO12 Black
    +
    172
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9

    Photo Interval Duration

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Interval Duration OffHERO12 Black
    1Photo Interval Duration 15 SecondsHERO12 Black
    2Photo Interval Duration 30 SecondsHERO12 Black
    3Photo Interval Duration 1 MinuteHERO12 Black
    4Photo Interval Duration 5 MinutesHERO12 Black
    5Photo Interval Duration 15 MinutesHERO12 Black
    6Photo Interval Duration 30 MinutesHERO12 Black
    7Photo Interval Duration 1 HourHERO12 Black
    8Photo Interval Duration 2 HoursHERO12 Black
    9Photo Interval Duration 3 HoursHERO12 Black
    +
    173
    integer
    Enum: 0 1 2

    System Power Profile

    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Power Profile Maximum Video PerformanceHERO10 Black
    1System Power Profile Extended BatteryHERO10 Black
    2System Power Profile Tripod Stationary VideoHERO10 Black
    +
    175
    integer
    Enum: 0 1

    Setup Camera Ux Mode

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Setup Camera Ux Mode EasyHERO12 Black, HERO11 Black
    1Setup Camera Ux Mode ProHERO12 Black, HERO11 Black
    +
    176
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137

    Video Easy Mode Speed

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Easy Mode Speed 8X Ultra Slo MoHERO11 Black
    1Video Easy Mode Speed 4X Super Slo MoHERO11 Black
    2Video Easy Mode Speed 2X Slo MoHERO11 Black
    3Video Easy Mode Speed 1X Speed Low LightHERO11 Black
    4Video Easy Mode Speed Eb 4X Super Slo MoHERO11 Black
    5Video Easy Mode Speed Eb 2X Slo MoHERO11 Black
    6Video Easy Mode Speed Eb 1X Speed Low LightHERO11 Black
    7Video Easy Mode Speed 8X Ultra Slo Mo 50HzHERO11 Black
    8Video Easy Mode Speed 4X Super Slo Mo 50HzHERO11 Black
    9Video Easy Mode Speed 2X Slo Mo 50HzHERO11 Black
    10Video Easy Mode Speed 1X Speed Low Light 50HzHERO11 Black
    11Video Easy Mode Speed Eb 4X Super Slo Mo 50HzHERO11 Black
    12Video Easy Mode Speed Eb 2X Slo Mo 50HzHERO11 Black
    13Video Easy Mode Speed Eb 1X Speed Low Light 50HzHERO11 Black
    14Video Easy Mode Speed Eb 8X Ultra Slo MoHERO11 Black
    15Video Easy Mode Speed Eb 8X Ultra Slo Mo 50HzHERO11 Black
    16Video Easy Mode Speed Lb 8X Ultra Slo MoHERO11 Black
    17Video Easy Mode Speed Lb 4X Super Slo MoHERO11 Black
    18Video Easy Mode Speed Lb 2X Slo MoHERO11 Black
    19Video Easy Mode Speed Lb 1X Speed Low LightHERO11 Black
    20Video Easy Mode Speed Lb 8X Ultra Slo Mo 50HzHERO11 Black
    21Video Easy Mode Speed Lb 4X Super Slo Mo 50HzHERO11 Black
    22Video Easy Mode Speed Lb 2X Slo Mo 50HzHERO11 Black
    23Video Easy Mode Speed Lb 1X Speed Low Light 50HzHERO11 Black
    24Video Easy Mode Speed 2X Slo Mo 4KHERO11 Black
    25Video Easy Mode Speed 4X Super Slo Mo 2 7KHERO11 Black
    26Video Easy Mode Speed 2X Slo Mo 4K 50HzHERO11 Black
    27Video Easy Mode Speed 4X Super Slo Mo 2 7K 50HzHERO11 Black
    100Video Easy Mode Speed 8X Ultra Slo Mo V2HERO12 Black
    101Video Easy Mode Speed 4X Super Slo Mo V2HERO12 Black
    102Video Easy Mode Speed 2X Slo Mo V2HERO12 Black
    103Video Easy Mode Speed 1X Speed Low Light V2HERO12 Black
    104Video Easy Mode Speed 8X Ultra Slo Mo 50Hz V2HERO12 Black
    105Video Easy Mode Speed 4X Super Slo Mo 50Hz V2HERO12 Black
    106Video Easy Mode Speed 2X Slo Mo 50Hz V2HERO12 Black
    107Video Easy Mode Speed 1X Speed Low Light 50Hz V2HERO12 Black
    108Video Easy Mode Speed Lb 8X Ultra Slo Mo V2HERO12 Black
    109Video Easy Mode Speed Lb 4X Super Slo Mo V2HERO12 Black
    110Video Easy Mode Speed Lb 2X Slo Mo V2HERO12 Black
    111Video Easy Mode Speed Lb 1X Speed Low Light V2HERO12 Black
    112Video Easy Mode Speed Lb 8X Ultra Slo Mo 50Hz V2HERO12 Black
    113Video Easy Mode Speed Lb 4X Super Slo Mo 50Hz V2HERO12 Black
    114Video Easy Mode Speed Lb 2X Slo Mo 50Hz V2HERO12 Black
    115Video Easy Mode Speed Lb 1X Speed Low Light 50Hz V2HERO12 Black
    116Video Easy Mode Speed 2X Slo Mo 4K V2HERO12 Black
    117Video Easy Mode Speed 2X Slo Mo 4K 50Hz V2HERO12 Black
    118Video Easy Mode Speed Mobile 1X Speed Low Light V2HERO12 Black
    119Video Easy Mode Speed Mobile 1X Speed Low Light 50Hz V2HERO12 Black
    120Video Easy Mode Speed Mobile 2X Slo Mo V2HERO12 Black
    121Video Easy Mode Speed Mobile 2X Slo Mo 50Hz V2HERO12 Black
    122Video Easy Mode Speed Universal 1X Speed Low Light V2HERO12 Black
    123Video Easy Mode Speed Universal 1X Speed Low Light 50Hz V2HERO12 Black
    124Video Easy Mode Speed Universal 2X Slo Mo V2HERO12 Black
    125Video Easy Mode Speed Universal 2X Slo Mo 50Hz V2HERO12 Black
    126Video Easy Mode Speed 1X Speed Low Light 4K V2HERO12 Black
    127Video Easy Mode Speed 1X Speed Low Light 4K 50Hz V2HERO12 Black
    128Video Easy Mode Speed 1X Speed Low Light 2 7K V2HERO12 Black
    129Video Easy Mode Speed 1X Speed Low Light 2 7K 50Hz V2HERO12 Black
    130Video Easy Mode Speed 2X Slo Mo 2 7K V2HERO12 Black
    131Video Easy Mode Speed 2X Slo Mo 2 7K 50Hz V2HERO12 Black
    132Video Easy Mode Speed Mobile Lb 2X Slo Mo V2HERO12 Black
    133Video Easy Mode Speed Mobile Lb 2X Slo Mo 50Hz V2HERO12 Black
    134Video Easy Mode Speed Mobile Lb 1X Speed Low Light V2HERO12 Black
    135Video Easy Mode Speed Mobile Lb 1X Speed Low Light 50Hz V2HERO12 Black
    136Video Easy Mode Speed Universal 1X Speed Low Light 4K V2HERO12 Black
    137Video Easy Mode Speed Universal 1X Speed Low Light 4K 50Hz V2HERO12 Black
    +
    177
    integer
    Enum: 0 1

    Photo Easy Mode Night Photo

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Easy Mode Night Photo OffHERO11 Black
    1Photo Easy Mode Night Photo OnHERO11 Black
    +
    178
    integer
    Enum: 0 1

    Wireless Wireless Band

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Wireless Wireless Band 2 4 GhzHERO12 Black, HERO11 Black Mini, HERO11 Black
    1Wireless Wireless Band 5 GhzHERO12 Black, HERO11 Black Mini, HERO11 Black
    +
    179
    integer
    Enum: 1 2 3

    Multi Shot Trail Length

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    1Multi Shot Trail Length ShortHERO12 Black, HERO11 Black Mini, HERO11 Black
    2Multi Shot Trail Length LongHERO12 Black, HERO11 Black Mini, HERO11 Black
    3Multi Shot Trail Length MaxHERO12 Black, HERO11 Black Mini, HERO11 Black
    +
    180
    integer
    Enum: 0 101 102

    System Video Mode

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Video Mode Highest QualityHERO11 Black
    101System Video Mode Extended Battery GreenHERO11 Black
    102System Video Mode Longest Battery GreenHERO11 Black
    +
    182
    integer
    Enum: 0 1

    System Video Bit Rate

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Video Bit Rate StandardHERO12 Black
    1System Video Bit Rate HighHERO12 Black
    +
    183
    integer
    Enum: 0 2

    System Video Bit Depth

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Video Bit Depth 8BitHERO12 Black
    2System Video Bit Depth 10BitHERO12 Black
    +
    184
    integer
    Enum: 0 1 2

    Video Profile

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Profile StandardHERO12 Black
    1Video Profile HdrHERO12 Black
    2Video Profile 10 Bit LogHERO12 Black
    +
    186
    integer
    Enum: 0 1 2

    Video Easy Presets

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Easy Presets Highest QualityHERO12 Black
    1Video Easy Presets Standard QualityHERO12 Black
    2Video Easy Presets Basic QualityHERO12 Black
    +
    187
    integer
    Enum: 0 1 2 3 4 5 6 7

    Multi Shot Easy Presets

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Multi Shot Easy Presets Lapse Mode Time WarpHERO12 Black
    1Multi Shot Easy Presets Lapse Mode Star TrailsHERO12 Black
    2Multi Shot Easy Presets Lapse Mode Light PaintingHERO12 Black
    3Multi Shot Easy Presets Lapse Mode Vehicle LightsHERO12 Black
    4Multi Shot Easy Presets Max Lapse Mode Time WarpHERO12 Black
    5Multi Shot Easy Presets Max Lapse Mode Star TrailsHERO12 Black
    6Multi Shot Easy Presets Max Lapse Mode Light PaintingHERO12 Black
    7Multi Shot Easy Presets Max Lapse Mode Vehicle LightsHERO12 Black
    +
    189
    integer
    Enum: 0 1 2

    System Addon Lens Active

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Addon Lens Active NoneHERO12 Black
    1System Addon Lens Active Max Lens 1 0HERO12 Black
    2System Addon Lens Active Max Lens 2 0HERO12 Black
    +
    190
    integer
    Enum: 0 1

    System Addon Lens Status

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Addon Lens Status OffHERO12 Black
    1System Addon Lens Status OnHERO12 Black
    +
    191
    integer
    Enum: 0 1

    Photo Easy Presets

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Easy Presets Super PhotoHERO12 Black
    1Photo Easy Presets Night PhotoHERO12 Black
    +
    192
    integer
    Enum: 0 1 3

    Multi Shot Nlv Aspect Ratio

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Multi Shot Nlv Aspect Ratio 4By3HERO12 Black
    1Multi Shot Nlv Aspect Ratio 16By9HERO12 Black
    3Multi Shot Nlv Aspect Ratio 8By7HERO12 Black
    +
    193
    integer
    Enum: 0 1 2

    Video Easy Framing

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Easy Framing WidescreenHERO12 Black
    1Video Easy Framing VerticalHERO12 Black
    2Video Easy Framing Full FrameHERO12 Black
    +
    object

    All currently known status values indexed by status ID

    +
    1
    integer
    Enum: 0 1

    Is the system's internal battery present?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    2
    integer
    Enum: 0 1 2 3

    Rough approximation of internal battery level in bars

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Zero
    1One
    2Two
    3Three
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    6
    integer
    Enum: 0 1

    Is the system currently overheating?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    8
    integer
    Enum: 0 1

    Is the camera busy?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    9
    integer
    Enum: 0 1

    Is Quick Capture feature enabled?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    10
    integer
    Enum: 0 1

    Is the system encoding right now?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    11
    integer
    Enum: 0 1

    Is LCD lock active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    13
    integer

    When encoding video, this is the duration (seconds) of the video so far; 0 otherwise

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    17
    integer
    Enum: 0 1

    Are Wireless Connections enabled?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    19
    integer
    Enum: 0 1 2 3 4

    The pairing state of the camera

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Never Started
    1Started
    2Aborted
    3Cancelled
    4Completed
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    20
    integer
    Enum: 0 1 2 3

    The last type of pairing that the camera was engaged in

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Not Pairing
    1Pairing App
    2Pairing Remote Control
    3Pairing Bluetooth Device
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    21
    integer

    Time (milliseconds) since boot of last successful pairing complete action

    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    22
    integer
    Enum: 0 1 2 3 4

    State of current scan for WiFi Access Points. Appears to only change for CAH-related scans

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Never started
    1Started
    2Aborted
    3Canceled
    4Completed
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    23
    integer

    The time, in milliseconds since boot that the WiFi Access Point scan completed

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    24
    integer
    Enum: 0 1 2 3 4

    WiFi AP provisioning state

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Never started
    1Started
    2Aborted
    3Canceled
    4Completed
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    26
    integer

    Wireless remote control version

    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    27
    integer
    Enum: 0 1

    Is a wireless remote control connected?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    28
    integer

    Wireless Pairing State. Each bit contains state information (see WirelessPairingStateFlags)

    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    29
    string

    Provisioned WIFI AP SSID. On BLE connection, value is big-endian byte-encoded int

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    30
    string

    Camera's WIFI SSID. On BLE connection, value is big-endian byte-encoded int

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    31
    integer

    The number of wireless devices connected to the camera

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    32
    integer
    Enum: 0 1

    Is Preview Stream enabled?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    33
    integer
    Enum: -1 0 1 2 3 4 8

    Primary Storage Status

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    -1Unknown
    0OK
    1SD Card Full
    2SD Card Removed
    3SD Card Format Error
    4SD Card Busy
    8SD Card Swapped
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    34
    integer

    How many photos can be taken before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    35
    integer

    How many minutes of video can be captured with current settings before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    38
    integer

    Total number of photos on sdcard

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    39
    integer

    Total number of videos on sdcard

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    41
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10

    The current status of Over The Air (OTA) update

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Idle
    1Downloading
    2Verifying
    3Download Failed
    4Verify Failed
    5Ready
    6GoPro App: Downloading
    7GoPro App: Verifying
    8GoPro App: Download Failed
    9GoPro App: Verify Failed
    10GoPro App: Ready
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    42
    integer
    Enum: 0 1

    Is there a pending request to cancel a firmware update download?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    45
    integer
    Enum: 0 1

    Is locate camera feature active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    49
    integer

    The current timelapse interval countdown value (e.g. 5...4...3...2...1...)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    54
    integer

    Remaining space on the sdcard in Kilobytes

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    55
    integer
    Enum: 0 1

    Is preview stream supported in current recording/mode/secondary-stream?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    56
    integer

    WiFi signal strength in bars

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    58
    integer

    The number of hilights in encoding video (set to 0 when encoding stops)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    59
    integer

    Time since boot (msec) of most recent hilight in encoding video (set to 0 when encoding stops)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    60
    integer

    The min time between camera status updates (msec). Do not poll for status more often than this

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    64
    integer

    How many min of Timelapse video can be captured with current settings before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    65
    integer
    Enum: 0 1 2 3

    Liveview Exposure Select Mode

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Disabled
    1Auto
    2ISO Lock
    3Hemisphere
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    66
    integer [ 0 .. 100 ]

    Liveview Exposure Select: y-coordinate (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    67
    integer [ 0 .. 100 ]

    Liveview Exposure Select: y-coordinate (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    68
    integer
    Enum: 0 1

    Does the camera currently have a GPS lock?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    69
    integer
    Enum: 0 1

    Is the camera in AP Mode?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    70
    integer [ 0 .. 100 ]

    Internal battery level (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    74
    integer
    Enum: 0 1 2

    Microphone Accesstory (Garter) status

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Garter not connected
    1Garter connected
    2Garter connected and microphone plugged into Garter
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    75
    integer [ 0 .. 100 ]

    Digital Zoom level (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    76
    integer
    Enum: 0 1 2

    Wireless Band

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    02.4 GHz
    15 GHz
    2Max
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    77
    integer
    Enum: 0 1

    Is Digital Zoom feature available?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    78
    integer
    Enum: 0 1

    Are current video settings mobile friendly? (related to video compression and frame rate)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    79
    integer
    Enum: 0 1

    Is the camera currently in First Time Use (FTU) UI flow?

    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    81
    integer
    Enum: 0 1

    Is 5GHz wireless band available?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    82
    integer
    Enum: 0 1

    Is the system ready to accept commands?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    83
    integer
    Enum: 0 1

    Is the internal battery charged sufficiently to start Over The Air (OTA) update?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    85
    integer
    Enum: 0 1

    Is the camera getting too cold to continue recording?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    86
    integer
    Enum: 0 1 2 3

    The rotational orientation of the camera

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    00 degrees (upright)
    1180 degrees (upside down)
    290 degrees (laying on right side)
    3270 degrees (laying on left side)
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    88
    integer
    Enum: 0 1

    Is this camera capable of zooming while encoding (static value based on model, not settings)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    89
    integer

    Current flatmode ID

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    93
    integer

    Current Video Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    94
    integer

    Current Photo Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    95
    integer

    Current Timelapse Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    96
    integer

    Current Preset Group (ID) (corresponds to ui_mode_groups in settings.json)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    97
    integer

    Current Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    98
    integer

    Preset Modified Status, which contains an event ID and a preset (group) ID

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    99
    integer

    How many Live Bursts can be captured before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    100
    integer

    Total number of Live Bursts on sdcard

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    101
    integer
    Enum: 0 1

    Is Capture Delay currently active (i.e. counting down)?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    102
    integer
    Enum: 0 2 3

    Borg State

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Borg microphone removed
    2Borg microphone only
    3Borg microphone with external microphone
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    103
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12

    Time Warp Speed

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    015x
    130x
    260x
    3150x
    4300x
    5900x
    61800x
    72x
    85x
    910x
    10Auto
    111x (realtime)
    121/2x (slow-motion)
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    104
    integer
    Enum: 0 1

    Is the system's Linux core active?

    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    105
    integer
    Enum: 0 1 2

    Camera lens type (reflects changes to setting 162 or setting 189)

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Default
    1Max Lens
    2Max Lens 2.0
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    106
    integer
    Enum: 0 1

    Is Video Hindsight Capture Active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    107
    integer

    Scheduled Capture Preset ID

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    108
    integer
    Enum: 0 1

    Is Scheduled Capture set?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    110
    integer
    Enum: 0 1 2 3 4 5 6 7

    Media Mode Status (bitmasked)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0000 = Headroom: 0, HDMI: 0, Media Mod Connected: False
    1001 = Headroom: 0, HDMI: 0, Media Mod Connected: True
    2010 = Headroom: 0, HDMI: 1, Media Mod Connected: False
    3011 = Headroom: 0, HDMI: 1, Media Mod Connected: True
    4100 = Headroom: 1, HDMI: 0, Media Mod Connected: False
    5101 = Headroom: 1, HDMI: 0, Media Mod Connected: True
    6110 = Headroom: 1, HDMI: 1, Media Mod Connected: False
    7111 = Headroom: 1, HDMI: 1, Media Mod Connected: True
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    111
    integer
    Enum: 0 1

    Does sdcard meet specified minimum write speed?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    112
    integer

    Number of sdcard write speed errors since device booted

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    113
    integer
    Enum: 0 1

    Is Turbo Transfer active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    114
    integer
    Enum: 0 1 2

    Camera control status ID

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Camera Idle: No one is attempting to change camera settings
    1Camera Control: Camera is in a menu or changing settings. To intervene, app must request control
    2Camera External Control: An outside entity (app) has control and is in a menu or modifying settings
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    115
    integer
    Enum: 0 1

    Is the camera connected to a PC via USB?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    116
    integer
    Enum: 0 1

    Camera control over USB state

    + + + + + + + + + + + + + + + +
    ValueMeaning
    0Disabled
    1Enabled
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    117
    integer

    Total SD card capacity in Kilobytes

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    +
    {
    • "settings": {
      },
    • "status": {
      }
    }

    VideoMetadata

    ao
    required
    string
    Enum: "auto" "wind" "stereo" "off"
    Example: "auto"

    Audio option

    +
    avc_profile
    required
    integer [ 0 .. 255 ]
    Example: "0"

    Advanced Video Code Profile

    +
    cl
    required
    integer
    Enum: 0 1

    1 if clipped, 0 otherwise

    +
    cre
    required
    integer
    Example: "1692992748"

    Creation time in seconds since epoch

    +
    ct
    required
    integer
    Enum: 0 1 2 3 4 5 6 8 9 10 11 12

    Media content type

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    Video0
    Looping1
    Chaptered Video2
    Time Lapse3
    Single Photo4
    Burst Photo5
    Time Lapse Photo6
    Night Lapse Photo8
    Night Photo9
    Continuous Photo10
    Raw Photo11
    Live Burst12
    +
    dur
    required
    integer
    Example: "42"

    Video duration in seconds

    +
    eis
    required
    integer
    Enum: 0 1

    1 if stabilized, 0 otherwise

    +
    fov
    string

    Field of View

    +
    fps
    required
    integer
    Example: "1001"

    Video frame rate numerator

    +
    fps_denom
    required
    integer
    Example: "30000"

    Video frame rate denominator

    +
    gumi
    required
    string
    Example: "12345678998765443211234567899875"

    Globally Unique Media ID

    +
    h
    required
    integer
    Example: "1080"

    Height of media in pixels

    +
    hc
    required
    integer [ 0 .. 99 ]

    Number of hilights in media

    +
    hi
    Array of integers
    Example: "1500,4700"

    List of hilights in ms offset from start of video

    +
    lc
    integer
    Enum: 0 1

    Lens configuration ==> 0 for front, 1 for rear

    +
    ls
    required
    integer [ -1 .. 1234567890 ]

    Low Resolution Video file size in bytes. -1 if there is no LRV file

    +
    mos
    Array of strings
    Items Enum: "app" "pc" "other"
    Example: "app,pc"

    List of offload states

    +
    mp
    required
    integer
    Enum: 0 1

    1 if metadata is present, 0 otherwise

    +
    prjn
    integer
    Enum: 0 1 2 3 4 5 6 7 8

    Lens projection

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMode
    EAC0
    ERP1
    EAC, split horizontally in the middle for 2 output2
    ERP, cropped for panorama3
    Bypass stitch algorithm, side by side circles4
    Stitch is disabled, stitch algorithm is enabled for offline stitch5
    Stitch is disabled6
    Bypass stitch algorithm for EAC split7
    Hemisheric8
    +
    profile
    required
    integer [ 0 .. 255 ]

    Advanced Video Codec Level

    +
    progr
    integer
    Enum: 0 1

    Is video progressive? 1 if progressive, 0 if interlaced

    +
    pta
    required
    integer
    Enum: 0 1

    1 if protune audio is present, 0 otherwise

    +
    rot
    required
    string

    Deprecated

    +
    s
    required
    integer
    Example: "1234567890"

    File size in bytes

    +
    subsample
    required
    integer
    Enum: 0 1

    1 if subsampled from other video, 0 otherwise

    +
    tr
    required
    integer
    Enum: 0 1

    1 if file is transcoded, 0 otherwise

    +
    us
    required
    integer
    Enum: 0 1

    Has the file been uploaded? 0 if no, 1 if yes

    +
    w
    required
    integer
    Example: "1920"

    Width of media in pixels

    +
    {
    • "ao": "auto",
    • "avc_profile": 0,
    • "cl": 0,
    • "cre": 1692992748,
    • "ct": 0,
    • "dur": 42,
    • "eis": 0,
    • "fov": "string",
    • "fps": 1001,
    • "fps_denom": 30000,
    • "gumi": "12345678998765443211234567899875",
    • "h": 1080,
    • "hc": 99,
    • "hi": [
      ],
    • "lc": 0,
    • "ls": -1,
    • "mos": [
      ],
    • "mp": 0,
    • "prjn": 0,
    • "profile": 255,
    • "progr": 0,
    • "pta": 0,
    • "rot": "string",
    • "s": 1234567890,
    • "subsample": 0,
    • "tr": 0,
    • "us": 0,
    • "w": 1920
    }

    OTA

    The Over The Air (OTA) update feature allows the user to update the camera's firmware via HTTP connection. There are +two ways to perform OTA updates: Simple OTA Update and Resumable OTA Update.

    +

    Firmware update files can be obtained from GoPro's update page or programmatically +using the firmware catalog.

    +
    +

    In order to complete the firmware update process, the camera will reboot one or more times. This will cause any +existing HTTP connections to be lost.

    +
    +

    Simple OTA Update

    The simple OTA update process is done by sending an entire update file to the camera in a single HTTP/POST. Details can +be found in the diagram below.

    +

    simple ota state diagram

    +

    Resumable OTA Update

    The resumable OTA update process involves uploading chunks (or all) of a file, marking the file complete and then telling +the camera to begin the update process. Chunks are stored until they are explicitly deleted, allowing the client to stop +and resume as needed. Details can be found in the diagram below.

    +

    simple ota state diagram

    +

    Resumable OTA Update

    Perform Resumable OTA Update

    +

    To send a portion of the OTA image as per the requestBody specification, do not use the request parameter.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    request
    string
    Enum: "delete" "showui" "start" "progress" "cancelled"

    Optional request parameter to control / query OTA functionality.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParameterBehavior
    deleteDelete any old / cached OTA data
    showuiDisplay the update OSD on the camera UI
    startStart updating firmware with received OTA image
    progressGet the current firmware update progress
    cancelledshow canceled/failed ui on the camera
    +
    Request Body schema: multipart/form-data

    OTA image chunk used when executed with no request parameter

    +
    file
    string <binary>

    Binary file

    +
    offset
    integer

    Offset (in bytes) into the file data to start reading from

    +
    sha1
    string

    SHA of the complete firmware upload zip file

    +

    Responses

    Response Schema: application/json
    bytes_complete
    integer
    complete
    boolean
    message
    string
    sha1
    string
    status
    integer (OtaStatus)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12

    OTA Status

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDStatusDescription
    0OKNo errors occurred
    1Unknown RequestServer did not recognize the request
    2Bad ParamsParameter values not recognized
    3SHA1 Send MismatchSHA1 for chunk did not match SHA1 of previous chunk(s)
    4SHA1 Calculated MismatchCalculated SHA1 did not match user-specified SHA1
    5HTTP Boundary ErrorHTTP Post was malformed
    6HTTP Post ErrorUnexpected HTTP / Post Content Type
    7Server BusyHTTP server is busy
    8Offset MismatchAttempt to upload chunk with offset that did not align with previous chunk
    9Bad Post DataServer failed to parse POST data
    10File IncompleteTried to start update before server finished validating .zip file
    11Update in progressFirmware update is in progress
    12Insufficient SpaceInsufficient space on the sdcard to hold decompressed update file
    +

    Response samples

    Content type
    application/json
    {
    • "bytes_complete": 0,
    • "complete": true,
    • "message": "string",
    • "sha1": "string",
    • "status": 0
    }

    Simple OTA Update


    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    Request Body schema: multipart/form-data
    DirectToSD
    integer

    Always set to 1

    +
    file
    string <binary>

    Binary file

    +
    sha1
    string

    SHA of the complete firmware upload zip file

    +
    update
    integer

    Always set to 1

    +

    Responses

    Response Schema: application/json
    status
    integer (OtaStatus)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12

    OTA Status

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDStatusDescription
    0OKNo errors occurred
    1Unknown RequestServer did not recognize the request
    2Bad ParamsParameter values not recognized
    3SHA1 Send MismatchSHA1 for chunk did not match SHA1 of previous chunk(s)
    4SHA1 Calculated MismatchCalculated SHA1 did not match user-specified SHA1
    5HTTP Boundary ErrorHTTP Post was malformed
    6HTTP Post ErrorUnexpected HTTP / Post Content Type
    7Server BusyHTTP server is busy
    8Offset MismatchAttempt to upload chunk with offset that did not align with previous chunk
    9Bad Post DataServer failed to parse POST data
    10File IncompleteTried to start update before server finished validating .zip file
    11Update in progressFirmware update is in progress
    12Insufficient SpaceInsufficient space on the sdcard to hold decompressed update file
    +

    Response samples

    Content type
    application/json
    {
    • "status": 0
    }

    Presets

    Presets

    The camera organizes modes of operation into Presets.

    +
    +

    Note: The Preset ID is required to load a Preset via Load Preset.

    +
    +

    Depending on the camera's state, different collections of presets will be available for immediate loading and use. +Below is a table of settings that affect the current preset collection and thereby which presets can be loaded:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDSetting
    162Max Lens
    173Video Performance Mode
    175Controls
    177Enable Night Photo
    180Video Mode
    186Video Mode
    187Lapse Mode
    189Max Lens Mod
    190Max Lens Mod Enable
    191Photo Mode
    +

    Preset Groups

    Presets are organized into Preset Groups.

    +

    To find the currently available Presets / Preset Groups, use Get Preset Status.

    +

    Get Available Presets

    Get the currently available Preset Groups and Presets, the set of which +depends on the current camera settings.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    Array of objects (PresetGroup)

    Array of Preset Groups

    +
    Array
    can_add_preset
    boolean

    Is there room in the group to add additional Presets?

    +
    icon
    integer (EnumPresetGroupIcon)
    Enum: 0 1 2 3 4 5 6 7
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_GROUP_VIDEO_ICON_ID
    1PRESET_GROUP_PHOTO_ICON_ID
    2PRESET_GROUP_TIMELAPSE_ICON_ID
    3PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID
    4PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID
    5PRESET_GROUP_MAX_VIDEO_ICON_ID
    6PRESET_GROUP_MAX_PHOTO_ICON_ID
    7PRESET_GROUP_MAX_TIMELAPSE_ICON_ID
    +
    id
    integer (EnumPresetGroup)
    Enum: 1000 1001 1002
    + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    1000PRESET_GROUP_ID_VIDEO
    1001PRESET_GROUP_ID_PHOTO
    1002PRESET_GROUP_ID_TIMELAPSE
    +
    Array of objects (Preset)

    Array of Presets contained in this Preset Group

    +
    Array
    icon
    integer (EnumPresetIcon)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 78 79 1000 1001
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_ICON_VIDEO
    1PRESET_ICON_ACTIVITY
    2PRESET_ICON_CINEMATIC
    3PRESET_ICON_PHOTO
    4PRESET_ICON_LIVE_BURST
    5PRESET_ICON_BURST
    6PRESET_ICON_PHOTO_NIGHT
    7PRESET_ICON_TIMEWARP
    8PRESET_ICON_TIMELAPSE
    9PRESET_ICON_NIGHTLAPSE
    10PRESET_ICON_SNAIL
    11PRESET_ICON_VIDEO_2
    13PRESET_ICON_PHOTO_2
    14PRESET_ICON_PANORAMA
    15PRESET_ICON_BURST_2
    16PRESET_ICON_TIMEWARP_2
    17PRESET_ICON_TIMELAPSE_2
    18PRESET_ICON_CUSTOM
    19PRESET_ICON_AIR
    20PRESET_ICON_BIKE
    21PRESET_ICON_EPIC
    22PRESET_ICON_INDOOR
    23PRESET_ICON_MOTOR
    24PRESET_ICON_MOUNTED
    25PRESET_ICON_OUTDOOR
    26PRESET_ICON_POV
    27PRESET_ICON_SELFIE
    28PRESET_ICON_SKATE
    29PRESET_ICON_SNOW
    30PRESET_ICON_TRAIL
    31PRESET_ICON_TRAVEL
    32PRESET_ICON_WATER
    33PRESET_ICON_LOOPING
    58PRESET_ICON_BASIC
    59PRESET_ICON_ULTRA_SLO_MO
    60PRESET_ICON_STANDARD_ENDURANCE
    61PRESET_ICON_ACTIVITY_ENDURANCE
    62PRESET_ICON_CINEMATIC_ENDURANCE
    63PRESET_ICON_SLOMO_ENDURANCE
    64PRESET_ICON_STATIONARY_1
    65PRESET_ICON_STATIONARY_2
    66PRESET_ICON_STATIONARY_3
    67PRESET_ICON_STATIONARY_4
    70PRESET_ICON_SIMPLE_SUPER_PHOTO
    71PRESET_ICON_SIMPLE_NIGHT_PHOTO
    73PRESET_ICON_HIGHEST_QUALITY_VIDEO
    74PRESET_ICON_STANDARD_QUALITY_VIDEO
    75PRESET_ICON_BASIC_QUALITY_VIDEO
    76PRESET_ICON_STAR_TRAIL
    77PRESET_ICON_LIGHT_PAINTING
    78PRESET_ICON_LIGHT_TRAIL
    79PRESET_ICON_FULL_FRAME
    1000PRESET_ICON_TIMELAPSE_PHOTO
    1001PRESET_ICON_NIGHTLAPSE_PHOTO
    +
    id
    integer <int32>

    Unique preset identifier

    +
    is_fixed
    boolean

    Is this preset mutable?

    +
    is_modified
    boolean

    Has the preset been modified from the factory defaults?

    +
    mode
    integer (EnumFlatMode)
    Enum: -1 4 5 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    -1FLAT_MODE_UNKNOWN
    4FLAT_MODE_PLAYBACK
    5FLAT_MODE_SETUP
    12FLAT_MODE_VIDEO
    13FLAT_MODE_TIME_LAPSE_VIDEO
    15FLAT_MODE_LOOPING
    16FLAT_MODE_PHOTO_SINGLE
    17FLAT_MODE_PHOTO
    18FLAT_MODE_PHOTO_NIGHT
    19FLAT_MODE_PHOTO_BURST
    20FLAT_MODE_TIME_LAPSE_PHOTO
    21FLAT_MODE_NIGHT_LAPSE_PHOTO
    22FLAT_MODE_BROADCAST_RECORD
    23FLAT_MODE_BROADCAST_BROADCAST
    24FLAT_MODE_TIME_WARP_VIDEO
    25FLAT_MODE_LIVE_BURST
    26FLAT_MODE_NIGHT_LAPSE_VIDEO
    27FLAT_MODE_SLOMO
    28FLAT_MODE_IDLE
    29FLAT_MODE_VIDEO_STAR_TRAIL
    30FLAT_MODE_VIDEO_LIGHT_PAINTING
    31FLAT_MODE_VIDEO_LIGHT_TRAIL
    +
    Array of objects (PresetSetting)
    Array
    id
    integer <int32>

    Setting identifier

    +
    is_caption
    boolean

    Does this setting appear on the Preset "pill" in the camera UI?

    +
    value
    integer <int32>

    Setting value

    +
    title_id
    integer (EnumPresetTitle)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 82 83 93 94
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_TITLE_ACTIVITY
    1PRESET_TITLE_STANDARD
    2PRESET_TITLE_CINEMATIC
    3PRESET_TITLE_PHOTO
    4PRESET_TITLE_LIVE_BURST
    5PRESET_TITLE_BURST
    6PRESET_TITLE_NIGHT
    7PRESET_TITLE_TIME_WARP
    8PRESET_TITLE_TIME_LAPSE
    9PRESET_TITLE_NIGHT_LAPSE
    10PRESET_TITLE_VIDEO
    11PRESET_TITLE_SLOMO
    13PRESET_TITLE_PHOTO_2
    14PRESET_TITLE_PANORAMA
    16PRESET_TITLE_TIME_WARP_2
    18PRESET_TITLE_CUSTOM
    19PRESET_TITLE_AIR
    20PRESET_TITLE_BIKE
    21PRESET_TITLE_EPIC
    22PRESET_TITLE_INDOOR
    23PRESET_TITLE_MOTOR
    24PRESET_TITLE_MOUNTED
    25PRESET_TITLE_OUTDOOR
    26PRESET_TITLE_POV
    27PRESET_TITLE_SELFIE
    28PRESET_TITLE_SKATE
    29PRESET_TITLE_SNOW
    30PRESET_TITLE_TRAIL
    31PRESET_TITLE_TRAVEL
    32PRESET_TITLE_WATER
    33PRESET_TITLE_LOOPING
    58PRESET_TITLE_BASIC
    59PRESET_TITLE_ULTRA_SLO_MO
    60PRESET_TITLE_STANDARD_ENDURANCE
    61PRESET_TITLE_ACTIVITY_ENDURANCE
    62PRESET_TITLE_CINEMATIC_ENDURANCE
    63PRESET_TITLE_SLOMO_ENDURANCE
    64PRESET_TITLE_STATIONARY_1
    65PRESET_TITLE_STATIONARY_2
    66PRESET_TITLE_STATIONARY_3
    67PRESET_TITLE_STATIONARY_4
    68PRESET_TITLE_SIMPLE_VIDEO
    69PRESET_TITLE_SIMPLE_TIME_WARP
    70PRESET_TITLE_SIMPLE_SUPER_PHOTO
    71PRESET_TITLE_SIMPLE_NIGHT_PHOTO
    72PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE
    73PRESET_TITLE_HIGHEST_QUALITY
    74PRESET_TITLE_EXTENDED_BATTERY
    75PRESET_TITLE_LONGEST_BATTERY
    76PRESET_TITLE_STAR_TRAIL
    77PRESET_TITLE_LIGHT_PAINTING
    78PRESET_TITLE_LIGHT_TRAIL
    79PRESET_TITLE_FULL_FRAME
    82PRESET_TITLE_STANDARD_QUALITY_VIDEO
    83PRESET_TITLE_BASIC_QUALITY_VIDEO
    93PRESET_TITLE_HIGHEST_QUALITY_VIDEO
    94PRESET_TITLE_USER_DEFINED_CUSTOM_NAME
    +
    title_number
    integer <int32>

    Preset title number

    +
    user_defined
    boolean

    Is this preset user defined?

    +

    Response samples

    Content type
    application/json
    {
    • "presetGroupArray": [
      ]
    }

    Load Preset by ID

    Preset ID's are not constant and must be retrieved via Get Preset Status

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    id
    integer

    Preset to load

    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Load Preset Group by ID


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    id
    integer (EnumPresetGroup)
    Enum: 1000 1001 1002
    + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    1000PRESET_GROUP_ID_VIDEO
    1001PRESET_GROUP_ID_PHOTO
    1002PRESET_GROUP_ID_TIMELAPSE
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Update Custom Preset

    This only operates on the currently active Preset and will fail if the current +Preset is not custom.

    +

    The use cases are:

    +
      +
    1. Update the Custom Preset Icon

      +
        +
      • icon_id is always optional and can always be passed
      • +
      +
    2. +
    +

    and / or

    +
      +
    1. Update the Custom Preset Title to a...

      +
        +
      • Factory Preset Title: Set title_id to a non-94 value
      • +
      • Custom Preset Name: Set title_id to 94 and specify a custom_name
      • +
      +
    2. +
    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +
    Request Body schema: application/json
    required
    custom_name
    string

    utf-8 encoded target custom preset name which obeys the following:

    +
      +
    • must be between 1 and 16 characters (inclusive)
    • +
    • No special characters outside of the following languages: English, French, +Italian, German, Spanish, Portuguese, Swedish, Russian
    • +
    +
    icon_id
    integer (EnumPresetIcon)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 78 79 1000 1001
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_ICON_VIDEO
    1PRESET_ICON_ACTIVITY
    2PRESET_ICON_CINEMATIC
    3PRESET_ICON_PHOTO
    4PRESET_ICON_LIVE_BURST
    5PRESET_ICON_BURST
    6PRESET_ICON_PHOTO_NIGHT
    7PRESET_ICON_TIMEWARP
    8PRESET_ICON_TIMELAPSE
    9PRESET_ICON_NIGHTLAPSE
    10PRESET_ICON_SNAIL
    11PRESET_ICON_VIDEO_2
    13PRESET_ICON_PHOTO_2
    14PRESET_ICON_PANORAMA
    15PRESET_ICON_BURST_2
    16PRESET_ICON_TIMEWARP_2
    17PRESET_ICON_TIMELAPSE_2
    18PRESET_ICON_CUSTOM
    19PRESET_ICON_AIR
    20PRESET_ICON_BIKE
    21PRESET_ICON_EPIC
    22PRESET_ICON_INDOOR
    23PRESET_ICON_MOTOR
    24PRESET_ICON_MOUNTED
    25PRESET_ICON_OUTDOOR
    26PRESET_ICON_POV
    27PRESET_ICON_SELFIE
    28PRESET_ICON_SKATE
    29PRESET_ICON_SNOW
    30PRESET_ICON_TRAIL
    31PRESET_ICON_TRAVEL
    32PRESET_ICON_WATER
    33PRESET_ICON_LOOPING
    58PRESET_ICON_BASIC
    59PRESET_ICON_ULTRA_SLO_MO
    60PRESET_ICON_STANDARD_ENDURANCE
    61PRESET_ICON_ACTIVITY_ENDURANCE
    62PRESET_ICON_CINEMATIC_ENDURANCE
    63PRESET_ICON_SLOMO_ENDURANCE
    64PRESET_ICON_STATIONARY_1
    65PRESET_ICON_STATIONARY_2
    66PRESET_ICON_STATIONARY_3
    67PRESET_ICON_STATIONARY_4
    70PRESET_ICON_SIMPLE_SUPER_PHOTO
    71PRESET_ICON_SIMPLE_NIGHT_PHOTO
    73PRESET_ICON_HIGHEST_QUALITY_VIDEO
    74PRESET_ICON_STANDARD_QUALITY_VIDEO
    75PRESET_ICON_BASIC_QUALITY_VIDEO
    76PRESET_ICON_STAR_TRAIL
    77PRESET_ICON_LIGHT_PAINTING
    78PRESET_ICON_LIGHT_TRAIL
    79PRESET_ICON_FULL_FRAME
    1000PRESET_ICON_TIMELAPSE_PHOTO
    1001PRESET_ICON_NIGHTLAPSE_PHOTO
    +
    title_id
    integer (EnumPresetTitle)
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 82 83 93 94
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDNameSummary
    0PRESET_TITLE_ACTIVITY
    1PRESET_TITLE_STANDARD
    2PRESET_TITLE_CINEMATIC
    3PRESET_TITLE_PHOTO
    4PRESET_TITLE_LIVE_BURST
    5PRESET_TITLE_BURST
    6PRESET_TITLE_NIGHT
    7PRESET_TITLE_TIME_WARP
    8PRESET_TITLE_TIME_LAPSE
    9PRESET_TITLE_NIGHT_LAPSE
    10PRESET_TITLE_VIDEO
    11PRESET_TITLE_SLOMO
    13PRESET_TITLE_PHOTO_2
    14PRESET_TITLE_PANORAMA
    16PRESET_TITLE_TIME_WARP_2
    18PRESET_TITLE_CUSTOM
    19PRESET_TITLE_AIR
    20PRESET_TITLE_BIKE
    21PRESET_TITLE_EPIC
    22PRESET_TITLE_INDOOR
    23PRESET_TITLE_MOTOR
    24PRESET_TITLE_MOUNTED
    25PRESET_TITLE_OUTDOOR
    26PRESET_TITLE_POV
    27PRESET_TITLE_SELFIE
    28PRESET_TITLE_SKATE
    29PRESET_TITLE_SNOW
    30PRESET_TITLE_TRAIL
    31PRESET_TITLE_TRAVEL
    32PRESET_TITLE_WATER
    33PRESET_TITLE_LOOPING
    58PRESET_TITLE_BASIC
    59PRESET_TITLE_ULTRA_SLO_MO
    60PRESET_TITLE_STANDARD_ENDURANCE
    61PRESET_TITLE_ACTIVITY_ENDURANCE
    62PRESET_TITLE_CINEMATIC_ENDURANCE
    63PRESET_TITLE_SLOMO_ENDURANCE
    64PRESET_TITLE_STATIONARY_1
    65PRESET_TITLE_STATIONARY_2
    66PRESET_TITLE_STATIONARY_3
    67PRESET_TITLE_STATIONARY_4
    68PRESET_TITLE_SIMPLE_VIDEO
    69PRESET_TITLE_SIMPLE_TIME_WARP
    70PRESET_TITLE_SIMPLE_SUPER_PHOTO
    71PRESET_TITLE_SIMPLE_NIGHT_PHOTO
    72PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE
    73PRESET_TITLE_HIGHEST_QUALITY
    74PRESET_TITLE_EXTENDED_BATTERY
    75PRESET_TITLE_LONGEST_BATTERY
    76PRESET_TITLE_STAR_TRAIL
    77PRESET_TITLE_LIGHT_PAINTING
    78PRESET_TITLE_LIGHT_TRAIL
    79PRESET_TITLE_FULL_FRAME
    82PRESET_TITLE_STANDARD_QUALITY_VIDEO
    83PRESET_TITLE_BASIC_QUALITY_VIDEO
    93PRESET_TITLE_HIGHEST_QUALITY_VIDEO
    94PRESET_TITLE_USER_DEFINED_CUSTOM_NAME
    +

    Responses

    Response Schema: application/json
    object

    Request samples

    Content type
    application/json
    {
    • "custom_name": "string",
    • "icon_id": 0,
    • "title_id": 0
    }

    Response samples

    Content type
    application/json
    { }

    Preview Stream

    When the preview stream is started, the camera starts up a UDP client and begins writing MPEG Transport +Stream data to the client on port 8554. In order to stream this data, the client must implement a UDP +connection that binds to the same port and decode the data.

    +

    Start the Preview Stream


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    port
    integer
    Example: port=8556

    Port to use for Preview Stream. Defaults to 8554 if not set

    +

    Not supported on:

    +
      +
    • Hero 11 Black Mini
    • +
    • Hero 11 Black
    • +
    • Hero 10 Black
    • +
    • Hero 9 Black
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Stop the Preview Stream


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Query

    Get information about the camera

    +

    Get Camera State

    Get all camera settings and statuses.

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    All currently known setting values indexed by setting ID

    +
    2
    integer
    Enum: 1 4 6 7 9 18 24 25 26 27 28 100 107 108 109 110 111

    Video Resolution

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    1Video Resolution 4KHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Resolution 2 7KHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    6Video Resolution 2 7K 4By3HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    7Video Resolution 1440HERO9 Black
    9Video Resolution 1080HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    18Video Resolution 4K 4By3HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    24Video Resolution 5KHERO9 Black
    25Video Resolution 5K 4By3HERO10 Black
    26Video Resolution 5 3K 8By7HERO11 Black Mini, HERO11 Black
    27Video Resolution 5 3K 4By3HERO11 Black Mini, HERO11 Black
    28Video Resolution 4K 8By7HERO11 Black Mini, HERO11 Black
    100Video Resolution 5 3KHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black
    107Video Resolution 5 3K 8By7 V2HERO12 Black
    108Video Resolution 4K 8By7 V2HERO12 Black
    109Video Resolution 4K 9By16 V2HERO12 Black
    110Video Resolution 1080 9By16 V2HERO12 Black
    111Video Resolution 2 7K 4By3 V2HERO12 Black
    +
    3
    integer
    Enum: 0 1 2 5 6 8 9 10 13

    Video Fps

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Fps 240HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    1Video Fps 120HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    2Video Fps 100HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    5Video Fps 60HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    6Video Fps 50HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    8Video Fps 30HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    9Video Fps 25HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    10Video Fps 24HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    13Video Fps 200HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    +
    43
    integer
    Enum: 0 2 3 4

    Broadcast Fov

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Broadcast Fov WideHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    2Broadcast Fov NarrowHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    3Broadcast Fov SuperviewHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Broadcast Fov LinearHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    +
    59
    integer
    Enum: 0 1 4 6 7 11 12

    Setup Auto Power Down

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Setup Auto Power Down NeverHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    1Setup Auto Power Down 1 MinHERO12 Black, HERO11 Black Mini, HERO11 Black
    4Setup Auto Power Down 5 MinHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    6Setup Auto Power Down 15 MinHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    7Setup Auto Power Down 30 MinHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    11Setup Auto Power Down 8 SecondsHERO11 Black Mini
    12Setup Auto Power Down 30 SecondsHERO11 Black Mini
    +
    108
    integer
    Enum: 0 1 3 4

    Video Aspect Ratio

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Aspect Ratio 4By3HERO12 Black
    1Video Aspect Ratio 16By9HERO12 Black
    3Video Aspect Ratio 8By7HERO12 Black
    4Video Aspect Ratio 9By16HERO12 Black
    +
    121
    integer
    Enum: 0 2 3 4 7 8 9 10 11

    Video Digital Lenses

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Digital Lenses WideHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    2Video Digital Lenses NarrowHERO10 Black, HERO9 Black
    3Video Digital Lenses SuperviewHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Digital Lenses LinearHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    7Video Digital Lenses Max SuperviewHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    8Video Digital Lenses Linear Plus Horizon LevelingHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    9Video Digital Lenses HyperviewHERO12 Black, HERO11 Black Mini, HERO11 Black
    10Video Digital Lenses Linear Plus Horizon LockHERO12 Black, HERO11 Black Mini, HERO11 Black
    11Video Digital Lenses Max HyperviewHERO12 Black
    +
    122
    integer
    Enum: 19 100 101 102

    Photo Digital Lenses

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    19Photo Digital Lenses NarrowHERO10 Black, HERO9 Black
    100Photo Digital Lenses Max SuperviewHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    101Photo Digital Lenses WideHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    102Photo Digital Lenses LinearHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    123
    integer
    Enum: 19 100 101 102

    Multi Shot Digital Lenses

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    19Multi Shot Digital Lenses NarrowHERO10 Black, HERO9 Black
    100Multi Shot Digital Lenses Max SuperviewHERO10 Black
    101Multi Shot Digital Lenses WideHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    102Multi Shot Digital Lenses LinearHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    128
    integer
    Enum: 13 20 21 26

    General Format

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    13General Format Time Lapse VideoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    20General Format Time Lapse PhotoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    21General Format Night Lapse PhotoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    26General Format Night Lapse VideoHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    134
    integer
    Enum: 2 3

    Setup Anti Flicker

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    2Setup Anti Flicker 60 HzHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    3Setup Anti Flicker 50 HzHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    +
    135
    integer
    Enum: 0 1 2 3 4 100

    Video Hypersmooth

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Hypersmooth OffHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    1Video Hypersmooth OnHERO12 Black, HERO11 Black Mini, HERO11 Black, HERO9 Black
    2Video Hypersmooth HighHERO10 Black, HERO9 Black
    3Video Hypersmooth BoostHERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Hypersmooth Auto BoostHERO12 Black, HERO11 Black Mini, HERO11 Black
    100Video Hypersmooth StandardHERO10 Black
    +
    150
    integer
    Enum: 0 2

    Video Horizon Levelling

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Horizon Levelling OffHERO11 Black
    2Video Horizon Levelling LockedHERO11 Black
    +
    151
    integer
    Enum: 0 2

    Photo Horizon Levelling

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Horizon Levelling OffHERO11 Black
    2Photo Horizon Levelling LockedHERO11 Black
    +
    162
    integer
    Enum: 0 1

    Mods Max Lens Enable

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Mods Max Lens Enable OffHERO11 Black, HERO10 Black, HERO9 Black
    1Mods Max Lens Enable OnHERO11 Black, HERO10 Black, HERO9 Black
    +
    167
    integer
    Enum: 2 3 4

    Video Hindsight Length

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    2Video Hindsight Length 15 SecondsHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    3Video Hindsight Length 30 SecondsHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    4Video Hindsight Length OffHERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black
    +
    171
    integer
    Enum: 0 2 3 4 5 6 7 8 9 10

    Photo Single Interval

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Single Interval OffHERO12 Black
    2Photo Single Interval 0 5 SecondsHERO12 Black
    3Photo Single Interval 1 SecondHERO12 Black
    4Photo Single Interval 2 SecondsHERO12 Black
    5Photo Single Interval 5 SecondsHERO12 Black
    6Photo Single Interval 10 SecondsHERO12 Black
    7Photo Single Interval 30 SecondsHERO12 Black
    8Photo Single Interval 60 SecondsHERO12 Black
    9Photo Single Interval 120 SecondsHERO12 Black
    10Photo Single Interval 3 SecondsHERO12 Black
    +
    172
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9

    Photo Interval Duration

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Interval Duration OffHERO12 Black
    1Photo Interval Duration 15 SecondsHERO12 Black
    2Photo Interval Duration 30 SecondsHERO12 Black
    3Photo Interval Duration 1 MinuteHERO12 Black
    4Photo Interval Duration 5 MinutesHERO12 Black
    5Photo Interval Duration 15 MinutesHERO12 Black
    6Photo Interval Duration 30 MinutesHERO12 Black
    7Photo Interval Duration 1 HourHERO12 Black
    8Photo Interval Duration 2 HoursHERO12 Black
    9Photo Interval Duration 3 HoursHERO12 Black
    +
    173
    integer
    Enum: 0 1 2

    System Power Profile

    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Power Profile Maximum Video PerformanceHERO10 Black
    1System Power Profile Extended BatteryHERO10 Black
    2System Power Profile Tripod Stationary VideoHERO10 Black
    +
    175
    integer
    Enum: 0 1

    Setup Camera Ux Mode

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Setup Camera Ux Mode EasyHERO12 Black, HERO11 Black
    1Setup Camera Ux Mode ProHERO12 Black, HERO11 Black
    +
    176
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137

    Video Easy Mode Speed

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Easy Mode Speed 8X Ultra Slo MoHERO11 Black
    1Video Easy Mode Speed 4X Super Slo MoHERO11 Black
    2Video Easy Mode Speed 2X Slo MoHERO11 Black
    3Video Easy Mode Speed 1X Speed Low LightHERO11 Black
    4Video Easy Mode Speed Eb 4X Super Slo MoHERO11 Black
    5Video Easy Mode Speed Eb 2X Slo MoHERO11 Black
    6Video Easy Mode Speed Eb 1X Speed Low LightHERO11 Black
    7Video Easy Mode Speed 8X Ultra Slo Mo 50HzHERO11 Black
    8Video Easy Mode Speed 4X Super Slo Mo 50HzHERO11 Black
    9Video Easy Mode Speed 2X Slo Mo 50HzHERO11 Black
    10Video Easy Mode Speed 1X Speed Low Light 50HzHERO11 Black
    11Video Easy Mode Speed Eb 4X Super Slo Mo 50HzHERO11 Black
    12Video Easy Mode Speed Eb 2X Slo Mo 50HzHERO11 Black
    13Video Easy Mode Speed Eb 1X Speed Low Light 50HzHERO11 Black
    14Video Easy Mode Speed Eb 8X Ultra Slo MoHERO11 Black
    15Video Easy Mode Speed Eb 8X Ultra Slo Mo 50HzHERO11 Black
    16Video Easy Mode Speed Lb 8X Ultra Slo MoHERO11 Black
    17Video Easy Mode Speed Lb 4X Super Slo MoHERO11 Black
    18Video Easy Mode Speed Lb 2X Slo MoHERO11 Black
    19Video Easy Mode Speed Lb 1X Speed Low LightHERO11 Black
    20Video Easy Mode Speed Lb 8X Ultra Slo Mo 50HzHERO11 Black
    21Video Easy Mode Speed Lb 4X Super Slo Mo 50HzHERO11 Black
    22Video Easy Mode Speed Lb 2X Slo Mo 50HzHERO11 Black
    23Video Easy Mode Speed Lb 1X Speed Low Light 50HzHERO11 Black
    24Video Easy Mode Speed 2X Slo Mo 4KHERO11 Black
    25Video Easy Mode Speed 4X Super Slo Mo 2 7KHERO11 Black
    26Video Easy Mode Speed 2X Slo Mo 4K 50HzHERO11 Black
    27Video Easy Mode Speed 4X Super Slo Mo 2 7K 50HzHERO11 Black
    100Video Easy Mode Speed 8X Ultra Slo Mo V2HERO12 Black
    101Video Easy Mode Speed 4X Super Slo Mo V2HERO12 Black
    102Video Easy Mode Speed 2X Slo Mo V2HERO12 Black
    103Video Easy Mode Speed 1X Speed Low Light V2HERO12 Black
    104Video Easy Mode Speed 8X Ultra Slo Mo 50Hz V2HERO12 Black
    105Video Easy Mode Speed 4X Super Slo Mo 50Hz V2HERO12 Black
    106Video Easy Mode Speed 2X Slo Mo 50Hz V2HERO12 Black
    107Video Easy Mode Speed 1X Speed Low Light 50Hz V2HERO12 Black
    108Video Easy Mode Speed Lb 8X Ultra Slo Mo V2HERO12 Black
    109Video Easy Mode Speed Lb 4X Super Slo Mo V2HERO12 Black
    110Video Easy Mode Speed Lb 2X Slo Mo V2HERO12 Black
    111Video Easy Mode Speed Lb 1X Speed Low Light V2HERO12 Black
    112Video Easy Mode Speed Lb 8X Ultra Slo Mo 50Hz V2HERO12 Black
    113Video Easy Mode Speed Lb 4X Super Slo Mo 50Hz V2HERO12 Black
    114Video Easy Mode Speed Lb 2X Slo Mo 50Hz V2HERO12 Black
    115Video Easy Mode Speed Lb 1X Speed Low Light 50Hz V2HERO12 Black
    116Video Easy Mode Speed 2X Slo Mo 4K V2HERO12 Black
    117Video Easy Mode Speed 2X Slo Mo 4K 50Hz V2HERO12 Black
    118Video Easy Mode Speed Mobile 1X Speed Low Light V2HERO12 Black
    119Video Easy Mode Speed Mobile 1X Speed Low Light 50Hz V2HERO12 Black
    120Video Easy Mode Speed Mobile 2X Slo Mo V2HERO12 Black
    121Video Easy Mode Speed Mobile 2X Slo Mo 50Hz V2HERO12 Black
    122Video Easy Mode Speed Universal 1X Speed Low Light V2HERO12 Black
    123Video Easy Mode Speed Universal 1X Speed Low Light 50Hz V2HERO12 Black
    124Video Easy Mode Speed Universal 2X Slo Mo V2HERO12 Black
    125Video Easy Mode Speed Universal 2X Slo Mo 50Hz V2HERO12 Black
    126Video Easy Mode Speed 1X Speed Low Light 4K V2HERO12 Black
    127Video Easy Mode Speed 1X Speed Low Light 4K 50Hz V2HERO12 Black
    128Video Easy Mode Speed 1X Speed Low Light 2 7K V2HERO12 Black
    129Video Easy Mode Speed 1X Speed Low Light 2 7K 50Hz V2HERO12 Black
    130Video Easy Mode Speed 2X Slo Mo 2 7K V2HERO12 Black
    131Video Easy Mode Speed 2X Slo Mo 2 7K 50Hz V2HERO12 Black
    132Video Easy Mode Speed Mobile Lb 2X Slo Mo V2HERO12 Black
    133Video Easy Mode Speed Mobile Lb 2X Slo Mo 50Hz V2HERO12 Black
    134Video Easy Mode Speed Mobile Lb 1X Speed Low Light V2HERO12 Black
    135Video Easy Mode Speed Mobile Lb 1X Speed Low Light 50Hz V2HERO12 Black
    136Video Easy Mode Speed Universal 1X Speed Low Light 4K V2HERO12 Black
    137Video Easy Mode Speed Universal 1X Speed Low Light 4K 50Hz V2HERO12 Black
    +
    177
    integer
    Enum: 0 1

    Photo Easy Mode Night Photo

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Easy Mode Night Photo OffHERO11 Black
    1Photo Easy Mode Night Photo OnHERO11 Black
    +
    178
    integer
    Enum: 0 1

    Wireless Wireless Band

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Wireless Wireless Band 2 4 GhzHERO12 Black, HERO11 Black Mini, HERO11 Black
    1Wireless Wireless Band 5 GhzHERO12 Black, HERO11 Black Mini, HERO11 Black
    +
    179
    integer
    Enum: 1 2 3

    Multi Shot Trail Length

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    1Multi Shot Trail Length ShortHERO12 Black, HERO11 Black Mini, HERO11 Black
    2Multi Shot Trail Length LongHERO12 Black, HERO11 Black Mini, HERO11 Black
    3Multi Shot Trail Length MaxHERO12 Black, HERO11 Black Mini, HERO11 Black
    +
    180
    integer
    Enum: 0 101 102

    System Video Mode

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Video Mode Highest QualityHERO11 Black
    101System Video Mode Extended Battery GreenHERO11 Black
    102System Video Mode Longest Battery GreenHERO11 Black
    +
    182
    integer
    Enum: 0 1

    System Video Bit Rate

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Video Bit Rate StandardHERO12 Black
    1System Video Bit Rate HighHERO12 Black
    +
    183
    integer
    Enum: 0 2

    System Video Bit Depth

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Video Bit Depth 8BitHERO12 Black
    2System Video Bit Depth 10BitHERO12 Black
    +
    184
    integer
    Enum: 0 1 2

    Video Profile

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Profile StandardHERO12 Black
    1Video Profile HdrHERO12 Black
    2Video Profile 10 Bit LogHERO12 Black
    +
    186
    integer
    Enum: 0 1 2

    Video Easy Presets

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Easy Presets Highest QualityHERO12 Black
    1Video Easy Presets Standard QualityHERO12 Black
    2Video Easy Presets Basic QualityHERO12 Black
    +
    187
    integer
    Enum: 0 1 2 3 4 5 6 7

    Multi Shot Easy Presets

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Multi Shot Easy Presets Lapse Mode Time WarpHERO12 Black
    1Multi Shot Easy Presets Lapse Mode Star TrailsHERO12 Black
    2Multi Shot Easy Presets Lapse Mode Light PaintingHERO12 Black
    3Multi Shot Easy Presets Lapse Mode Vehicle LightsHERO12 Black
    4Multi Shot Easy Presets Max Lapse Mode Time WarpHERO12 Black
    5Multi Shot Easy Presets Max Lapse Mode Star TrailsHERO12 Black
    6Multi Shot Easy Presets Max Lapse Mode Light PaintingHERO12 Black
    7Multi Shot Easy Presets Max Lapse Mode Vehicle LightsHERO12 Black
    +
    189
    integer
    Enum: 0 1 2

    System Addon Lens Active

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Addon Lens Active NoneHERO12 Black
    1System Addon Lens Active Max Lens 1 0HERO12 Black
    2System Addon Lens Active Max Lens 2 0HERO12 Black
    +
    190
    integer
    Enum: 0 1

    System Addon Lens Status

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0System Addon Lens Status OffHERO12 Black
    1System Addon Lens Status OnHERO12 Black
    +
    191
    integer
    Enum: 0 1

    Photo Easy Presets

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Photo Easy Presets Super PhotoHERO12 Black
    1Photo Easy Presets Night PhotoHERO12 Black
    +
    192
    integer
    Enum: 0 1 3

    Multi Shot Nlv Aspect Ratio

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Multi Shot Nlv Aspect Ratio 4By3HERO12 Black
    1Multi Shot Nlv Aspect Ratio 16By9HERO12 Black
    3Multi Shot Nlv Aspect Ratio 8By7HERO12 Black
    +
    193
    integer
    Enum: 0 1 2

    Video Easy Framing

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaningSupported Cameras
    0Video Easy Framing WidescreenHERO12 Black
    1Video Easy Framing VerticalHERO12 Black
    2Video Easy Framing Full FrameHERO12 Black
    +
    object

    All currently known status values indexed by status ID

    +
    1
    integer
    Enum: 0 1

    Is the system's internal battery present?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    2
    integer
    Enum: 0 1 2 3

    Rough approximation of internal battery level in bars

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Zero
    1One
    2Two
    3Three
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    6
    integer
    Enum: 0 1

    Is the system currently overheating?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    8
    integer
    Enum: 0 1

    Is the camera busy?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    9
    integer
    Enum: 0 1

    Is Quick Capture feature enabled?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    10
    integer
    Enum: 0 1

    Is the system encoding right now?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    11
    integer
    Enum: 0 1

    Is LCD lock active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    13
    integer

    When encoding video, this is the duration (seconds) of the video so far; 0 otherwise

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    17
    integer
    Enum: 0 1

    Are Wireless Connections enabled?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    19
    integer
    Enum: 0 1 2 3 4

    The pairing state of the camera

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Never Started
    1Started
    2Aborted
    3Cancelled
    4Completed
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    20
    integer
    Enum: 0 1 2 3

    The last type of pairing that the camera was engaged in

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Not Pairing
    1Pairing App
    2Pairing Remote Control
    3Pairing Bluetooth Device
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    21
    integer

    Time (milliseconds) since boot of last successful pairing complete action

    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    22
    integer
    Enum: 0 1 2 3 4

    State of current scan for WiFi Access Points. Appears to only change for CAH-related scans

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Never started
    1Started
    2Aborted
    3Canceled
    4Completed
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    23
    integer

    The time, in milliseconds since boot that the WiFi Access Point scan completed

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    24
    integer
    Enum: 0 1 2 3 4

    WiFi AP provisioning state

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Never started
    1Started
    2Aborted
    3Canceled
    4Completed
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    26
    integer

    Wireless remote control version

    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    27
    integer
    Enum: 0 1

    Is a wireless remote control connected?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    28
    integer

    Wireless Pairing State. Each bit contains state information (see WirelessPairingStateFlags)

    +

    Supported Cameras:

    +
      +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    29
    string

    Provisioned WIFI AP SSID. On BLE connection, value is big-endian byte-encoded int

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    30
    string

    Camera's WIFI SSID. On BLE connection, value is big-endian byte-encoded int

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    31
    integer

    The number of wireless devices connected to the camera

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    32
    integer
    Enum: 0 1

    Is Preview Stream enabled?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    33
    integer
    Enum: -1 0 1 2 3 4 8

    Primary Storage Status

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    -1Unknown
    0OK
    1SD Card Full
    2SD Card Removed
    3SD Card Format Error
    4SD Card Busy
    8SD Card Swapped
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    34
    integer

    How many photos can be taken before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    35
    integer

    How many minutes of video can be captured with current settings before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    38
    integer

    Total number of photos on sdcard

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    39
    integer

    Total number of videos on sdcard

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    41
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10

    The current status of Over The Air (OTA) update

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Idle
    1Downloading
    2Verifying
    3Download Failed
    4Verify Failed
    5Ready
    6GoPro App: Downloading
    7GoPro App: Verifying
    8GoPro App: Download Failed
    9GoPro App: Verify Failed
    10GoPro App: Ready
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    42
    integer
    Enum: 0 1

    Is there a pending request to cancel a firmware update download?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    45
    integer
    Enum: 0 1

    Is locate camera feature active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    49
    integer

    The current timelapse interval countdown value (e.g. 5...4...3...2...1...)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    54
    integer

    Remaining space on the sdcard in Kilobytes

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    55
    integer
    Enum: 0 1

    Is preview stream supported in current recording/mode/secondary-stream?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    56
    integer

    WiFi signal strength in bars

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    58
    integer

    The number of hilights in encoding video (set to 0 when encoding stops)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    59
    integer

    Time since boot (msec) of most recent hilight in encoding video (set to 0 when encoding stops)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    60
    integer

    The min time between camera status updates (msec). Do not poll for status more often than this

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    64
    integer

    How many min of Timelapse video can be captured with current settings before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    65
    integer
    Enum: 0 1 2 3

    Liveview Exposure Select Mode

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Disabled
    1Auto
    2ISO Lock
    3Hemisphere
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    66
    integer [ 0 .. 100 ]

    Liveview Exposure Select: y-coordinate (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    67
    integer [ 0 .. 100 ]

    Liveview Exposure Select: y-coordinate (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    68
    integer
    Enum: 0 1

    Does the camera currently have a GPS lock?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    69
    integer
    Enum: 0 1

    Is the camera in AP Mode?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    70
    integer [ 0 .. 100 ]

    Internal battery level (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    74
    integer
    Enum: 0 1 2

    Microphone Accesstory (Garter) status

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Garter not connected
    1Garter connected
    2Garter connected and microphone plugged into Garter
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    75
    integer [ 0 .. 100 ]

    Digital Zoom level (percent)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    76
    integer
    Enum: 0 1 2

    Wireless Band

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    02.4 GHz
    15 GHz
    2Max
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    77
    integer
    Enum: 0 1

    Is Digital Zoom feature available?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    78
    integer
    Enum: 0 1

    Are current video settings mobile friendly? (related to video compression and frame rate)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    79
    integer
    Enum: 0 1

    Is the camera currently in First Time Use (FTU) UI flow?

    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    81
    integer
    Enum: 0 1

    Is 5GHz wireless band available?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    82
    integer
    Enum: 0 1

    Is the system ready to accept commands?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    83
    integer
    Enum: 0 1

    Is the internal battery charged sufficiently to start Over The Air (OTA) update?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    85
    integer
    Enum: 0 1

    Is the camera getting too cold to continue recording?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    86
    integer
    Enum: 0 1 2 3

    The rotational orientation of the camera

    + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    00 degrees (upright)
    1180 degrees (upside down)
    290 degrees (laying on right side)
    3270 degrees (laying on left side)
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    88
    integer
    Enum: 0 1

    Is this camera capable of zooming while encoding (static value based on model, not settings)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    89
    integer

    Current flatmode ID

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    93
    integer

    Current Video Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    94
    integer

    Current Photo Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    95
    integer

    Current Timelapse Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    96
    integer

    Current Preset Group (ID) (corresponds to ui_mode_groups in settings.json)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    97
    integer

    Current Preset (ID)

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    98
    integer

    Preset Modified Status, which contains an event ID and a preset (group) ID

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    99
    integer

    How many Live Bursts can be captured before sdcard is full

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    100
    integer

    Total number of Live Bursts on sdcard

    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    101
    integer
    Enum: 0 1

    Is Capture Delay currently active (i.e. counting down)?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    102
    integer
    Enum: 0 2 3

    Borg State

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Borg microphone removed
    2Borg microphone only
    3Borg microphone with external microphone
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    103
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12

    Time Warp Speed

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    015x
    130x
    260x
    3150x
    4300x
    5900x
    61800x
    72x
    85x
    910x
    10Auto
    111x (realtime)
    121/2x (slow-motion)
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    104
    integer
    Enum: 0 1

    Is the system's Linux core active?

    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    105
    integer
    Enum: 0 1 2

    Camera lens type (reflects changes to setting 162 or setting 189)

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Default
    1Max Lens
    2Max Lens 2.0
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    106
    integer
    Enum: 0 1

    Is Video Hindsight Capture Active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    107
    integer

    Scheduled Capture Preset ID

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    108
    integer
    Enum: 0 1

    Is Scheduled Capture set?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    110
    integer
    Enum: 0 1 2 3 4 5 6 7

    Media Mode Status (bitmasked)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0000 = Headroom: 0, HDMI: 0, Media Mod Connected: False
    1001 = Headroom: 0, HDMI: 0, Media Mod Connected: True
    2010 = Headroom: 0, HDMI: 1, Media Mod Connected: False
    3011 = Headroom: 0, HDMI: 1, Media Mod Connected: True
    4100 = Headroom: 1, HDMI: 0, Media Mod Connected: False
    5101 = Headroom: 1, HDMI: 0, Media Mod Connected: True
    6110 = Headroom: 1, HDMI: 1, Media Mod Connected: False
    7111 = Headroom: 1, HDMI: 1, Media Mod Connected: True
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    111
    integer
    Enum: 0 1

    Does sdcard meet specified minimum write speed?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    112
    integer

    Number of sdcard write speed errors since device booted

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    113
    integer
    Enum: 0 1

    Is Turbo Transfer active?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    114
    integer
    Enum: 0 1 2

    Camera control status ID

    + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Camera Idle: No one is attempting to change camera settings
    1Camera Control: Camera is in a menu or changing settings. To intervene, app must request control
    2Camera External Control: An outside entity (app) has control and is in a menu or modifying settings
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    115
    integer
    Enum: 0 1

    Is the camera connected to a PC via USB?

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    116
    integer
    Enum: 0 1

    Camera control over USB state

    + + + + + + + + + + + + + + + +
    ValueMeaning
    0Disabled
    1Enabled
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    117
    integer

    Total SD card capacity in Kilobytes

    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    +

    Response samples

    Content type
    application/json
    {
    • "settings": {
      },
    • "status": {
      }
    }

    Get Date / Time


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    date
    required
    string
    Example: "2023_12_31"

    current date in format YYYY_MM_DD

    +
    dst
    integer
    Enum: 0 1

    Is daylight savings time active?

    +
    time
    required
    string
    Example: "11_05_45"

    current time in format HH_MM_SS

    +
    tzone
    integer
    Example: "-480"

    Timezone offset in minutes

    +

    Response samples

    Content type
    application/json
    {
    • "date": "2023_12_31",
    • "dst": 0,
    • "time": "11_05_45",
    • "tzone": -480
    }

    Get Hardware Info


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object
    ap_mac_addr
    string
    Example: "065747046ceb"

    Camera's Access Point MAC address

    +
    ap_ssid
    string
    Example: "GP24645504"

    Camera's ACcess Point SSID name

    +
    firmware_version
    string <version>
    Example: "H23.01.01.10.00"

    Camera Firmware version

    +
    model_name
    string
    Example: "Hero12 Black"

    Camera Model Name

    +
    model_number
    string
    Example: "62"

    Camera Model integer (as string)

    +
    serial_number
    string
    Example: "C3501324645504"

    Camera serial number

    +

    Response samples

    Content type
    application/json
    {
    • "info": {
      }
    }

    Get Last Captured Media

    This will return the complete path of the last captured media. Depending on the type of media captured, it will return:

    +
      +
    • single photo / video: The single media path
    • +
    • any grouped media: The path to the first captured media in the group
    • +
    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +

    Responses

    Response Schema: application/json
    file
    string
    Example: "GOPR0002.JPG"

    Filename of media

    +
    folder
    string
    Example: "100GOPRO"

    Directory that the media is contained in

    +

    Response samples

    Content type
    application/json
    {
    • "file": "GOPR0002.JPG",
    • "folder": "100GOPRO"
    }

    Get Open GoPro Version


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • WIFI
    • +
    • USB
    • +
    +

    Responses

    Response Schema: application/json
    version
    string <version>
    Example: "2.0"

    Open GoPro version

    +

    Response samples

    Content type
    application/json
    {
    • "version": "2.0"
    }

    settings

    GoPro cameras have hundreds of setting options to choose from, all of which can be set using a single endpoint. The endpoint is configured with a setting id and an option value. Note that setting option values are not globally unique. While most option values are enumerated values, some are complex bit-masked values.

    +

    Capabilities

    Camera capabilities usually change from one camera to another and often change from one release to the next. +Below are documents that detail whitelists for basic video settings for every supported camera release.

    +

    These Capability documents define supported camera states. +Each state is comprised of a set of setting options that are presented in dependency order. +This means each state is guaranteed to be attainable if and only if the setting options are set in the order presented. +Failure to adhere to dependency ordering may result in the camera's blacklist rules rejecting a set-setting command.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CameraCommand 1Command 2Command 3Command 4Command 5Guaranteed Valid?
    HERO10 BlackRes: 1080Anti-Flicker: 60Hz (NTSC)FPS: 240FOV: WideHypersmooth: OFFโœ”
    HERO10 BlackFPS: 240Anti-Flicker: 60Hz (NTSC)Res: 1080FOV: WideHypersmooth: OFFโŒ
    +

    In the example above, the first set of commands will always work for basic video presets such as Standard.

    +

    In the second example, suppose the camera's Video Resolution was previously set to 4K. +If the user tries to set Video FPS to 240, it will fail because 4K/240fps is not supported.

    +

    Capability documents for each camera / firmware version can be found in the following file formats:

    +

    XLSX

    +

    An XLSX file can be found here.

    +

    The capabilities spreadsheet contains worksheets for every supported release. Each row in a worksheet represents +a whitelisted state and is presented in dependency order as outlined above.

    +

    JSON

    +

    A JSON file can be found here.

    +

    The capabilities JSON contains a set of whitelist states for every supported release. Each state is comprised of a +list of objects that contain setting and option IDs necessary to construct set-setting commands and are given in +dependency order as outlined above. For more information on the object format, see the JSON +schema

    +

    Broadcast Fov (43)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 2 3 4
    Example: 3
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Broadcast Fov WideHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    2Broadcast Fov NarrowHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    3Broadcast Fov SuperviewHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    4Broadcast Fov LinearHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    General Format (128)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 13 20 21 26
    Example: 13
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    13General Format Time Lapse VideoHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    20General Format Time Lapse PhotoHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    21General Format Night Lapse PhotoHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    26General Format Night Lapse VideoHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Mods Max Lens Enable (162)


    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Mods Max Lens Enable OffHERO9 Black, HERO10 Black, HERO11 Black
    1Mods Max Lens Enable OnHERO9 Black, HERO10 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Multi Shot Digital Lenses (123)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 19 100 101 102
    Example: 101
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    19Multi Shot Digital Lenses NarrowHERO9 Black, HERO10 Black
    100Multi Shot Digital Lenses Max SuperviewHERO10 Black
    101Multi Shot Digital Lenses WideHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    102Multi Shot Digital Lenses LinearHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Multi Shot Easy Presets (187)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2 3 4 5 6 7
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Multi Shot Easy Presets Lapse Mode Time WarpHERO12 Black
    1Multi Shot Easy Presets Lapse Mode Star TrailsHERO12 Black
    2Multi Shot Easy Presets Lapse Mode Light PaintingHERO12 Black
    3Multi Shot Easy Presets Lapse Mode Vehicle LightsHERO12 Black
    4Multi Shot Easy Presets Max Lapse Mode Time WarpHERO12 Black
    5Multi Shot Easy Presets Max Lapse Mode Star TrailsHERO12 Black
    6Multi Shot Easy Presets Max Lapse Mode Light PaintingHERO12 Black
    7Multi Shot Easy Presets Max Lapse Mode Vehicle LightsHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Multi Shot Nlv Aspect Ratio (192)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 3
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Multi Shot Nlv Aspect Ratio 4By3HERO12 Black
    1Multi Shot Nlv Aspect Ratio 16By9HERO12 Black
    3Multi Shot Nlv Aspect Ratio 8By7HERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Multi Shot Trail Length (179)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 1 2 3
    Example: 3
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    1Multi Shot Trail Length ShortHERO11 Black Mini, HERO12 Black, HERO11 Black
    2Multi Shot Trail Length LongHERO11 Black Mini, HERO12 Black, HERO11 Black
    3Multi Shot Trail Length MaxHERO11 Black Mini, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Photo Digital Lenses (122)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 19 100 101 102
    Example: 100
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    19Photo Digital Lenses NarrowHERO9 Black, HERO10 Black
    100Photo Digital Lenses Max SuperviewHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    101Photo Digital Lenses WideHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    102Photo Digital Lenses LinearHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Photo Easy Mode Night Photo (177)


    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Photo Easy Mode Night Photo OffHERO11 Black
    1Photo Easy Mode Night Photo OnHERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Photo Easy Presets (191)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Photo Easy Presets Super PhotoHERO12 Black
    1Photo Easy Presets Night PhotoHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Photo Horizon Levelling (151)


    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 2
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Photo Horizon Levelling OffHERO11 Black
    2Photo Horizon Levelling LockedHERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Photo Interval Duration (172)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Photo Interval Duration OffHERO12 Black
    1Photo Interval Duration 15 SecondsHERO12 Black
    2Photo Interval Duration 30 SecondsHERO12 Black
    3Photo Interval Duration 1 MinuteHERO12 Black
    4Photo Interval Duration 5 MinutesHERO12 Black
    5Photo Interval Duration 15 MinutesHERO12 Black
    6Photo Interval Duration 30 MinutesHERO12 Black
    7Photo Interval Duration 1 HourHERO12 Black
    8Photo Interval Duration 2 HoursHERO12 Black
    9Photo Interval Duration 3 HoursHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Photo Single Interval (171)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 2 3 4 5 6 7 8 9 10
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Photo Single Interval OffHERO12 Black
    2Photo Single Interval 0 5 SecondsHERO12 Black
    3Photo Single Interval 1 SecondHERO12 Black
    4Photo Single Interval 2 SecondsHERO12 Black
    5Photo Single Interval 5 SecondsHERO12 Black
    6Photo Single Interval 10 SecondsHERO12 Black
    7Photo Single Interval 30 SecondsHERO12 Black
    8Photo Single Interval 60 SecondsHERO12 Black
    9Photo Single Interval 120 SecondsHERO12 Black
    10Photo Single Interval 3 SecondsHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Setup Anti Flicker (134)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 2 3
    Example: 2
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    2Setup Anti Flicker 60 HzHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    3Setup Anti Flicker 50 HzHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Setup Auto Power Down (59)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 4 6 7 11 12
    Example: 4
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Setup Auto Power Down NeverHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    1Setup Auto Power Down 1 MinHERO11 Black Mini, HERO12 Black, HERO11 Black
    4Setup Auto Power Down 5 MinHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    6Setup Auto Power Down 15 MinHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    7Setup Auto Power Down 30 MinHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    11Setup Auto Power Down 8 SecondsHERO11 Black Mini
    12Setup Auto Power Down 30 SecondsHERO11 Black Mini
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Setup Camera Ux Mode (175)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Setup Camera Ux Mode EasyHERO12 Black, HERO11 Black
    1Setup Camera Ux Mode ProHERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    System Addon Lens Active (189)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0System Addon Lens Active NoneHERO12 Black
    1System Addon Lens Active Max Lens 1 0HERO12 Black
    2System Addon Lens Active Max Lens 2 0HERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    System Addon Lens Status (190)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0System Addon Lens Status OffHERO12 Black
    1System Addon Lens Status OnHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    System Power Profile (173)


    +

    Supported Cameras:

    +
      +
    • HERO10 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0System Power Profile Maximum Video PerformanceHERO10 Black
    1System Power Profile Extended BatteryHERO10 Black
    2System Power Profile Tripod Stationary VideoHERO10 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    System Video Bit Depth (183)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 2
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0System Video Bit Depth 8BitHERO12 Black
    2System Video Bit Depth 10BitHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    System Video Bit Rate (182)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    Example: 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0System Video Bit Rate StandardHERO12 Black
    1System Video Bit Rate HighHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    System Video Mode (180)


    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 101 102
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0System Video Mode Highest QualityHERO11 Black
    101System Video Mode Extended Battery GreenHERO11 Black
    102System Video Mode Longest Battery GreenHERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Aspect Ratio (108)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 3 4
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Aspect Ratio 4By3HERO12 Black
    1Video Aspect Ratio 16By9HERO12 Black
    3Video Aspect Ratio 8By7HERO12 Black
    4Video Aspect Ratio 9By16HERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Digital Lenses (121)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 2 3 4 7 8 9 10 11
    Example: 7
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Digital Lenses WideHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    2Video Digital Lenses NarrowHERO9 Black, HERO10 Black
    3Video Digital Lenses SuperviewHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    4Video Digital Lenses LinearHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    7Video Digital Lenses Max SuperviewHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    8Video Digital Lenses Linear Plus Horizon LevelingHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    9Video Digital Lenses HyperviewHERO11 Black Mini, HERO12 Black, HERO11 Black
    10Video Digital Lenses Linear Plus Horizon LockHERO11 Black Mini, HERO12 Black, HERO11 Black
    11Video Digital Lenses Max HyperviewHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Easy Framing (193)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Easy Framing WidescreenHERO12 Black
    1Video Easy Framing VerticalHERO12 Black
    2Video Easy Framing Full FrameHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Easy Mode Speed (176)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
    Example: 103
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Easy Mode Speed 8X Ultra Slo MoHERO11 Black
    1Video Easy Mode Speed 4X Super Slo MoHERO11 Black
    2Video Easy Mode Speed 2X Slo MoHERO11 Black
    3Video Easy Mode Speed 1X Speed Low LightHERO11 Black
    4Video Easy Mode Speed Eb 4X Super Slo MoHERO11 Black
    5Video Easy Mode Speed Eb 2X Slo MoHERO11 Black
    6Video Easy Mode Speed Eb 1X Speed Low LightHERO11 Black
    7Video Easy Mode Speed 8X Ultra Slo Mo 50HzHERO11 Black
    8Video Easy Mode Speed 4X Super Slo Mo 50HzHERO11 Black
    9Video Easy Mode Speed 2X Slo Mo 50HzHERO11 Black
    10Video Easy Mode Speed 1X Speed Low Light 50HzHERO11 Black
    11Video Easy Mode Speed Eb 4X Super Slo Mo 50HzHERO11 Black
    12Video Easy Mode Speed Eb 2X Slo Mo 50HzHERO11 Black
    13Video Easy Mode Speed Eb 1X Speed Low Light 50HzHERO11 Black
    14Video Easy Mode Speed Eb 8X Ultra Slo MoHERO11 Black
    15Video Easy Mode Speed Eb 8X Ultra Slo Mo 50HzHERO11 Black
    16Video Easy Mode Speed Lb 8X Ultra Slo MoHERO11 Black
    17Video Easy Mode Speed Lb 4X Super Slo MoHERO11 Black
    18Video Easy Mode Speed Lb 2X Slo MoHERO11 Black
    19Video Easy Mode Speed Lb 1X Speed Low LightHERO11 Black
    20Video Easy Mode Speed Lb 8X Ultra Slo Mo 50HzHERO11 Black
    21Video Easy Mode Speed Lb 4X Super Slo Mo 50HzHERO11 Black
    22Video Easy Mode Speed Lb 2X Slo Mo 50HzHERO11 Black
    23Video Easy Mode Speed Lb 1X Speed Low Light 50HzHERO11 Black
    24Video Easy Mode Speed 2X Slo Mo 4KHERO11 Black
    25Video Easy Mode Speed 4X Super Slo Mo 2 7KHERO11 Black
    26Video Easy Mode Speed 2X Slo Mo 4K 50HzHERO11 Black
    27Video Easy Mode Speed 4X Super Slo Mo 2 7K 50HzHERO11 Black
    100Video Easy Mode Speed 8X Ultra Slo Mo V2HERO12 Black
    101Video Easy Mode Speed 4X Super Slo Mo V2HERO12 Black
    102Video Easy Mode Speed 2X Slo Mo V2HERO12 Black
    103Video Easy Mode Speed 1X Speed Low Light V2HERO12 Black
    104Video Easy Mode Speed 8X Ultra Slo Mo 50Hz V2HERO12 Black
    105Video Easy Mode Speed 4X Super Slo Mo 50Hz V2HERO12 Black
    106Video Easy Mode Speed 2X Slo Mo 50Hz V2HERO12 Black
    107Video Easy Mode Speed 1X Speed Low Light 50Hz V2HERO12 Black
    108Video Easy Mode Speed Lb 8X Ultra Slo Mo V2HERO12 Black
    109Video Easy Mode Speed Lb 4X Super Slo Mo V2HERO12 Black
    110Video Easy Mode Speed Lb 2X Slo Mo V2HERO12 Black
    111Video Easy Mode Speed Lb 1X Speed Low Light V2HERO12 Black
    112Video Easy Mode Speed Lb 8X Ultra Slo Mo 50Hz V2HERO12 Black
    113Video Easy Mode Speed Lb 4X Super Slo Mo 50Hz V2HERO12 Black
    114Video Easy Mode Speed Lb 2X Slo Mo 50Hz V2HERO12 Black
    115Video Easy Mode Speed Lb 1X Speed Low Light 50Hz V2HERO12 Black
    116Video Easy Mode Speed 2X Slo Mo 4K V2HERO12 Black
    117Video Easy Mode Speed 2X Slo Mo 4K 50Hz V2HERO12 Black
    118Video Easy Mode Speed Mobile 1X Speed Low Light V2HERO12 Black
    119Video Easy Mode Speed Mobile 1X Speed Low Light 50Hz V2HERO12 Black
    120Video Easy Mode Speed Mobile 2X Slo Mo V2HERO12 Black
    121Video Easy Mode Speed Mobile 2X Slo Mo 50Hz V2HERO12 Black
    122Video Easy Mode Speed Universal 1X Speed Low Light V2HERO12 Black
    123Video Easy Mode Speed Universal 1X Speed Low Light 50Hz V2HERO12 Black
    124Video Easy Mode Speed Universal 2X Slo Mo V2HERO12 Black
    125Video Easy Mode Speed Universal 2X Slo Mo 50Hz V2HERO12 Black
    126Video Easy Mode Speed 1X Speed Low Light 4K V2HERO12 Black
    127Video Easy Mode Speed 1X Speed Low Light 4K 50Hz V2HERO12 Black
    128Video Easy Mode Speed 1X Speed Low Light 2 7K V2HERO12 Black
    129Video Easy Mode Speed 1X Speed Low Light 2 7K 50Hz V2HERO12 Black
    130Video Easy Mode Speed 2X Slo Mo 2 7K V2HERO12 Black
    131Video Easy Mode Speed 2X Slo Mo 2 7K 50Hz V2HERO12 Black
    132Video Easy Mode Speed Mobile Lb 2X Slo Mo V2HERO12 Black
    133Video Easy Mode Speed Mobile Lb 2X Slo Mo 50Hz V2HERO12 Black
    134Video Easy Mode Speed Mobile Lb 1X Speed Low Light V2HERO12 Black
    135Video Easy Mode Speed Mobile Lb 1X Speed Low Light 50Hz V2HERO12 Black
    136Video Easy Mode Speed Universal 1X Speed Low Light 4K V2HERO12 Black
    137Video Easy Mode Speed Universal 1X Speed Low Light 4K 50Hz V2HERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Easy Presets (186)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Easy Presets Highest QualityHERO12 Black
    1Video Easy Presets Standard QualityHERO12 Black
    2Video Easy Presets Basic QualityHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Fps (3)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2 5 6 8 9 10 13
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Fps 240HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    1Video Fps 120HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    2Video Fps 100HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    5Video Fps 60HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    6Video Fps 50HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    8Video Fps 30HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    9Video Fps 25HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    10Video Fps 24HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    13Video Fps 200HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Hindsight Length (167)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 2 3 4
    Example: 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    2Video Hindsight Length 15 SecondsHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    3Video Hindsight Length 30 SecondsHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    4Video Hindsight Length OffHERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Horizon Levelling (150)


    +

    Supported Cameras:

    +
      +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 2
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Horizon Levelling OffHERO11 Black
    2Video Horizon Levelling LockedHERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Hypersmooth (135)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2 3 4 100
    Example: 3
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Hypersmooth OffHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    1Video Hypersmooth OnHERO11 Black Mini, HERO9 Black, HERO12 Black, HERO11 Black
    2Video Hypersmooth HighHERO9 Black, HERO10 Black
    3Video Hypersmooth BoostHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO11 Black
    4Video Hypersmooth Auto BoostHERO11 Black Mini, HERO12 Black, HERO11 Black
    100Video Hypersmooth StandardHERO10 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Profile (184)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1 2
    + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Video Profile StandardHERO12 Black
    1Video Profile HdrHERO12 Black
    2Video Profile 10 Bit LogHERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Video Resolution (2)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    • HERO9 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 1 4 6 7 9 18 24 25 26 27 28 100 107 108 109 110 111
    Example: 24
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    1Video Resolution 4KHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    4Video Resolution 2 7KHERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    6Video Resolution 2 7K 4By3HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO11 Black
    7Video Resolution 1440HERO9 Black
    9Video Resolution 1080HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    18Video Resolution 4K 4By3HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black
    24Video Resolution 5KHERO9 Black
    25Video Resolution 5K 4By3HERO10 Black
    26Video Resolution 5 3K 8By7HERO11 Black Mini, HERO11 Black
    27Video Resolution 5 3K 4By3HERO11 Black Mini, HERO11 Black
    28Video Resolution 4K 8By7HERO11 Black Mini, HERO11 Black
    100Video Resolution 5 3KHERO11 Black Mini, HERO10 Black, HERO12 Black, HERO11 Black
    107Video Resolution 5 3K 8By7 V2HERO12 Black
    108Video Resolution 4K 8By7 V2HERO12 Black
    109Video Resolution 4K 9By16 V2HERO12 Black
    110Video Resolution 1080 9By16 V2HERO12 Black
    111Video Resolution 2 7K 4By3 V2HERO12 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Wireless Wireless Band (178)


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black Mini
    • +
    • HERO11 Black
    • +
    +
    path Parameters
    option
    required
    integer
    Enum: 0 1
    + + + + + + + + + + + + + + + + + +
    IDMeaningCameras
    0Wireless Wireless Band 2 4 GhzHERO11 Black Mini, HERO12 Black, HERO11 Black
    1Wireless Wireless Band 5 GhzHERO11 Black Mini, HERO12 Black, HERO11 Black
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Webcam

    The webcam feature enables developers who are interested in writing custom drivers to broadcast the camera's video +preview with a limited set of resolution, field of view, port, and protocol options.

    +

    While active, the webcam feature sends raw data to the connected client using a supported protocol. To enable +multi-cam support, some cameras support running on a user-specified port. Protocol and port details are provided in a +table below.

    +

    To test basic functionality, start the webcam, and use an application such as VLC to open a network stream:

    + + + + + + + + + + + + + + + +
    ProtocolPort
    TSudp://@:{PORT}
    RTSPrtsp://{CAMERA_IP}:554/live
    +

    For readers interested in using a GoPro camera as a webcam with preexisting tools, please see +How to use GoPro as a Webcam.

    +

    Webcam via USB

    +

    For USB connections, prior to issuing webcam commands, Wired USB Control should +be disabled.

    +

    Webcam State Diagram

    +

    webcam state diagram

    +

    Webcam Stabilization

    +

    Should the client require stabilization, the +Hypersmooth setting +can be used while in the state: READY (Status: OFF). This setting can only be set while webcam is disabled, which +requires either sending the Webcam Exit command or reseating the USB-C connection to the camera.

    +
    +

    Note! The Low Hypersmooth option provides lower/lighter stabilization when used in Webcam mode vs other camera modes.

    +
    +

    Enter Webcam Preview

    Not supported on WiFi for: + - Hero 11 Black Mini + - Hero 11 Black + - Hero 10 Black + - Hero 9 Black

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Exit Webcam Mode

    Not supported on WiFi for: + - Hero 11 Black Mini + - Hero 11 Black + - Hero 10 Black + - Hero 9 Black

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Get Webcam Status


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    error
    integer
    Enum: 0 1 2 3 4 5 6 7 8

    Current webcam error (if status was not successful)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CodeStatus
    0None
    1Set Preset
    2Set Window Size
    3Exec Stream
    4Shutter
    5Com timeout
    6Invalid param
    7Unavailable
    8Exit
    +
    status
    integer
    Enum: 0 1 2 3

    Current webcam status

    + + + + + + + + + + + + + + + + + + + + + + + +
    CodeStatus
    0Off
    1Idle
    2High Power Preview
    3Low Power Preview
    +

    Response samples

    Content type
    application/json
    {
    • "error": 0,
    • "status": 0
    }

    Get Webcam Version


    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    max_lens_support
    boolean

    Does the webcam support Max Lens Mod?

    +
    usb_3_1_compatible
    boolean

    Is the webcam USB 3.1 compatible?

    +
    version
    integer

    Current webcam version

    +

    Response samples

    Content type
    application/json
    {
    • "max_lens_support": true,
    • "usb_3_1_compatible": true,
    • "version": 0
    }

    Start Webcam

    Not supported on WiFi for: + - Hero 11 Black Mini + - Hero 11 Black + - Hero 10 Black + - Hero 9 Black

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +
    query Parameters
    res
    integer

    Webcam Resolution

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDSetting
    162Max Lens
    173Video Performance Mode
    175Controls
    177Enable Night Photo
    180Video Mode
    186Video Mode
    187Lapse Mode
    189Max Lens Mod
    190Max Lens Mod Enable
    191Photo Mode
    +
    fov
    integer

    Webcam field-of-view

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDSetting
    162Max Lens
    173Video Performance Mode
    175Controls
    177Enable Night Photo
    180Video Mode
    186Video Mode
    187Lapse Mode
    189Max Lens Mod
    190Max Lens Mod Enable
    191Photo Mode
    +
    port
    integer
    Example: port=8556

    Port to use for Webcam Stream. Defaults to 8554 if not set

    +

    Not supported on:

    +
      +
    • Hero 11 Black Mini
    • +
    • Hero 10 Black
    • +
    • Hero 9 Black
    • +
    +
    protocol
    string
    Enum: "RTSP" "TS"

    Streaming protocol to use.

    +

    Not supported on:

    +
      +
    • Hero 11 Black Mini
    • +
    • Hero 11 Black
    • +
    • Hero 10 Black
    • +
    • Hero 9 Black
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }

    Stop Webcam

    Not supported on WiFi for: + - Hero 11 Black Mini + - Hero 11 Black + - Hero 10 Black + - Hero 9 Black

    +
    +

    Supported Cameras:

    +
      +
    • HERO12 Black
    • +
    • HERO11 Black
    • +
    • HERO10 Black
    • +
    +
    +

    Supported Protocols:

    +
      +
    • USB
    • +
    • WIFI
    • +
    +

    Responses

    Response Schema: application/json
    object

    Response samples

    Content type
    application/json
    { }
    + + + + \ No newline at end of file diff --git a/http_2_0.html b/http_2_0.html index 17a55913..77c90bc5 100644 --- a/http_2_0.html +++ b/http_2_0.html @@ -1,6856 +1,14 @@ - - - - - -HTTP Specification v2.0 : Open GoPro - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -
    -
    -
    - - -
    - - - - - - - - - - - - - -
    - - - - - -
    - - - - - -
    - -
    -

    HTTP Specification v2.0 -

    - - -

    - - - - - - - - - - - - 62 minute read - - - -

    - - -
    - - -
    - - - -

    Overview

    - -

    -The GoPro API allows developers to create apps and utilities that interact with and control a GoPro camera. -

    - -

    What can you do with the GoPro API?

    - -

    -The GoPro API allows you to control and query the camera: -

    -
      -
    • Capture photo/video media
    • -
    • Get media list
    • -
    • Change settings
    • -
    • Get and set the date/time
    • -
    • Get camera status
    • -
    • Get media metadata (file size, width, height, duration, tags, etc)
    • -
    • and more!
    • -
    - - -

    Supported Cameras

    - -

    -Below is a table of cameras that support GoPro's public HTTP API: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Model IDModel CodeMarketing NameMinimal Firmware Version
    62H23.01HERO12 Blackv01.10.00
    60H22.03HERO11 Black Miniv01.10.00
    58H22.01HERO11 Blackv01.10.00
    57H21.01HERO10 Blackv01.10.00
    55HD9.01HERO9 Blackv01.70.00
    - -

    The Basics

    - -

    Connection

    -

    WiFi

    -

    -Connection to the camera via WiFi requires that the camera's WiFi Access Point be enabled. -This can be done by connecting to the camera via -Bluetooth Low Energy (BLE) -and sending a command to enable AP Mode. -

    - -

    USB

    -

    -OpenGoPro systems that utilize USB must support the Network Control Model (NCM) protocol. -Connecting via USB requires the following steps: -

    -
      -
    1. Physically connect the camera's USB-C port to your system
    2. -
    3. Send HTTP command to enable wired USB control
    4. -
    - - -

    Authentication

    - -

    WiFi

    - -

    -Once the WiFi Access Point has been turned on, authentication with the camera simply requires connecting with the -correct SSID and password. This information can be obtained in two ways: - -

    -
      -
    • Put the camera into pairing mode and tap the info button in the top-right corner of the screen.
    • -
    • Read the SSID/password directly via Bluetooth Low Energy. See Services and Characteristics section in BLE Specification for details.
    • -
    - - -

    USB

    -

    -No authentication is necessary. -

    - -

    Socket Address

    - -

    WiFi

    -

    -The socket address for WiFi connections is 10.5.5.9:8080. -

    - -

    USB

    -

    -The socket address for USB connections is 172.2X.1YZ.51:8080 where: - -

    -
      -
    • X is the 100's digit from the camera serial number
    • -
    • Y is the 10's digit from the camera serial number
    • -
    • Z is the 1's digit from the camera serial number
    • -
    - - -

    -The camera's serial number can be obtained in any of the following ways: -

    -
      -
    • Reading the sticker inside the camera's battery enclosure
    • -
    • Camera UI: Preferences >> About >> Camera Info
    • -
    • Bluetooth Low Energy: By reading directly from Hardware Info -
    • -
    - - -

    -For example, if the camera's serial number is C0000123456789, the IP address for USB connections would be 172.27.189.51. -

    - -

    -Alternatively, the IP address can be discovered via mDNS as the camera registers the _gopro-web service. -

    - -

    Request and Response Formats

    -

    -Most commands are sent via HTTP/GET and require no special headers. -Responses come in two parts: The standard HTTP return codes and JSON containing any additional information. -

    - -

    -The typical use case is that the camera accepts a valid command, returns HTTP/200 (OK) and empty JSON -(i.e. { }) and begins asynchronously working on the command. -If an error occurs, the camera will return a standard HTTP error code and JSON with helpful error/debug information. -

    - -

    -Depending on the command sent, the camera can return JSON, binary, or Protobuf data. Some examples are listed below: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CommandReturn Type
    Get Camera StateJSON
    Get Media InfoJSON
    Get Media GPMF -Binary
    Get Media ListJSON
    Get Media Screennail (JPEG)Binary
    Get Media Thumbnail (JPEG)Binary
    Get PresetsJSON
    - -

    Sending Commands

    - -

    -Depending on the camera's state, it may not be ready to accept specific commands. -This ready state is dependent on the System Busy and the Encoding Active status flags. For example: - -

    -
      -
    • System Busy flag is set while loading presets, changing settings, formatting sdcard, ...
    • -
    • Encoding Active flag is set while capturing photo/video media
    • -
    - - -

    -If the system is not ready, it should reject an incoming command; however, best practice is to always wait for the -System Busy and Encode Active flags to be unset before sending messages other than camera status queries. -For details regarding camera state, see Status Codes. -

    - -

    Keep Alive

    -

    -In order to maximize battery life, GoPro cameras automatically go to sleep after some time. -This logic is handled by a combination of an Auto Power Down setting which most (but not all) cameras support -and a Keep Alive message that the user can regularly send to the camera. -The camera will automatically go to sleep if both timers reach zero. -

    - -

    -The Auto Power Down timer is reset when the user taps the LCD screen, presses a button on the camera or -programmatically (un)sets the shutter, sets a setting, or loads a Preset. -

    - -

    -The Keep Alive timer is reset when the user sends a keep alive message. -

    - -

    -The best practice to prevent the camera from inadvertently going to sleep is to start sending Keep Alive messages -every 3.0 seconds after a connection is established. -

    - -

    Command

    - - - - - - - - - - - -
    HTTP/GETDescription
    /gopro/camera/keep_aliveSend keep-alive
    - -

    Commands

    -

    Using the Open GoPro API, a client can perform various command, control, and query operations!

    - -

    Commands Quick Reference

    -

    -Below is a table of commands that can be sent to the camera and how to send them.
    -* Indicates that item is experimental
    -โœ” Indicates support for all Open GoPro firmware versions.
    -โŒ Indicates a lack of support for all Open GoPro firmware versions.
    ->= vXX.YY.ZZ indicates support for firmware versions equal to or newer than vXX.YY.ZZ -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CommandDescriptionHTTP MethodEndpointHERO12 BlackHERO11 Black MiniHERO11 BlackHERO10 BlackHERO9 Black
    AnalyticsSet third party clientGET/gopro/camera/analytics/set_client_infoโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    COHN: Get certGet cohn certGET/GoProRootCA.crtโœ”โŒโŒโŒโŒ
    COHN: Get statusGet cohn statusPOST/gopro/cohn/statusโœ”โŒโŒโŒโŒ
    COHN: Get statusGet cohn statusPOST/gopro/cohn/statusโœ”โŒโŒโŒโŒ
    Camera: Get StateGet camera state (status + settings)GET/gopro/camera/stateโœ”โœ”โœ”โœ”โœ”
    Digital ZoomDigital zoom 50%GET/gopro/camera/digital_zoom?percent=50โœ”โœ”โœ”โœ”โœ”
    Get Date/TimeGet date/timeGET/gopro/camera/get_date_timeโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Get Hardware InfoGet camera hardware infoGET/gopro/camera/infoโœ”โŒโŒโŒโŒ
    Keep-aliveSend keep-aliveGET/gopro/camera/keep_aliveโœ”โœ”โœ”โœ”โœ”
    Media: GPMFGet GPMF data (JPG)GET/gopro/media/gpmf?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: GPMFGet GPMF data (MP4)GET/gopro/media/gpmf?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: HiLight (Add)Add hilight to 100GOPRO/xxx.JPGGET/gopro/media/hilight/file?path=100GOPRO/XXX.JPGโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight (Add)Add hilight to 100GOPRO/xxx.MP4 at offset 2500 msGET/gopro/media/hilight/file?path=100GOPRO/XXX.MP4&ms=2500โœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight (Remove)Remove hilight from 100GOPRO/xxx.JPGGET/gopro/media/hilight/remove?path=100GOPRO/XXX.JPGโœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight (Remove)Remove hilight from 100GOPRO/xxx.MP4 at offset 2500msGET/gopro/media/hilight/remove?path=100GOPRO/XXX.MP4&ms=2500โœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Media: HiLight MomentHilight moment during encodingGET/gopro/media/hilight/momentโœ”โœ”โœ”>= v01.30.00โŒ
    Media: InfoGet media info (JPG)GET/gopro/media/info?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: InfoGet media info (MP4)GET/gopro/media/info?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: ListGet media listGET/gopro/media/listโœ”โœ”โœ”โœ”โœ”
    Media: ScreennailGet screennail for โ€œ100GOPRO/xxx.JPGโ€GET/gopro/media/screennail?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: ScreennailGet screennail for โ€œ100GOPRO/xxx.MP4โ€GET/gopro/media/screennail?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: TelemetryGet telemetry track data (JPG)GET/gopro/media/telemetry?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: TelemetryGet telemetry track data (MP4)GET/gopro/media/telemetry?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: ThumbnailGet thumbnail for โ€œ100GOPRO/xxx.JPGโ€GET/gopro/media/thumbnail?path=100GOPRO/XXX.JPGโœ”โœ”โœ”โœ”โœ”
    Media: ThumbnailGet thumbnail for โ€œ100GOPRO/xxx.MP4โ€GET/gopro/media/thumbnail?path=100GOPRO/XXX.MP4โœ”โœ”โœ”โœ”โœ”
    Media: Turbo TransferTurbo transfer: offGET/gopro/media/turbo_transfer?p=0โœ”โœ”โœ”โœ”โœ”
    Media: Turbo TransferTurbo transfer: onGET/gopro/media/turbo_transfer?p=1โœ”โœ”โœ”โœ”โœ”
    OTA UpdateSoft update: upload 12345 bytes starting at offset 67890POST/gp/gpSoftUpdate (plus data)โœ”โœ”โœ”โœ”โœ”
    OTA UpdateSoft update: mark upload completePOST/gp/gpSoftUpdate (plus data)โœ”โœ”โœ”โœ”โœ”
    Open GoProGet versionGET/gopro/versionโœ”โœ”โœ”โœ”โœ”
    Presets: Get StatusGet preset statusGET/gopro/camera/presets/getโœ”โœ”โœ”โœ”โœ”
    Presets: LoadExample preset id: 0x1234ABCDGET/gopro/camera/presets/load?id=305441741โœ”โœ”โœ”โœ”โœ”
    Presets: Load GroupVideoGET/gopro/camera/presets/set_group?id=1000โœ”โœ”โœ”โœ”โœ”
    Presets: Load GroupPhotoGET/gopro/camera/presets/set_group?id=1001โœ”โŒโœ”โœ”โœ”
    Presets: Load GroupTimelapseGET/gopro/camera/presets/set_group?id=1002โœ”โŒโœ”โœ”โœ”
    Set Camera Control StatusSet camera control status to idleGET/gopro/camera/control/set_ui_controller?p=0โœ”โœ”โœ”>= v01.20.00โŒ
    Set Camera Control StatusSet camera control status to external_controlGET/gopro/camera/control/set_ui_controller?p=2โœ”โœ”โœ”>= v01.20.00โŒ
    Set Date/TimeSet date/time to 2023-01-31 03:04:05GET/gopro/camera/set_date_time?date=2023_1_31&time=3_4_5โœ”โœ”โœ”>= v01.30.00>= v01.70.00
    Set Local Date/TimeSet local date/time to: 2023-01-31 03:04:05 (utc-02:00) (dst: on)GET/gopro/camera/set_date_time?date=2023_1_31&time=3_4_5&tzone=-120&dst=1โœ”โœ”โœ”โŒโŒ
    Set shutterShutter: onGET/gopro/camera/shutter/startโœ”โœ”โœ”โœ”โŒ
    Set shutterShutter: offGET/gopro/camera/shutter/stopโœ”โœ”โœ”โœ”โŒ
    Simple OTA UpdateSimple ota update with file: update.zipPOST/gp/gpUpdate (plus data)โœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: show canceled/failed ui on the cameraGET/gp/gpSoftUpdate?request=canceledโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: delete cached update filesGET/gp/gpSoftUpdate?request=deleteโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: get current update stateGET/gp/gpSoftUpdate?request=progressโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: display update ui on cameraGET/gp/gpSoftUpdate?request=showuiโœ”โœ”โœ”โœ”โœ”
    Soft UpdateSoft update: initiate firmware updateGET/gp/gpSoftUpdate?request=startโœ”โœ”โœ”โœ”โœ”
    Stream: StartStart preview streamGET/gopro/camera/stream/startโœ”โœ”โœ”โœ”โœ”
    Stream: StopStop preview streamGET/gopro/camera/stream/stopโœ”โœ”โœ”โœ”โœ”
    Webcam: ExitExit webcam modeGET/gopro/webcam/exitโœ”โŒโœ”โœ”โŒ
    Webcam: PreviewStart preview streamGET/gopro/webcam/previewโœ”โŒโœ”โœ”โŒ
    Webcam: StartStart webcamGET/gopro/webcam/startโœ”โŒโœ”>= v01.40.00โŒ
    Webcam: StartStart webcam (port: 12345)GET/gopro/webcam/start?port=12345โœ”โŒ>= v02.01.00โŒโŒ
    Webcam: StartStart webcam (port: 12345, protocol: rtsp)GET/gopro/webcam/start?port=12345&protocol=RTSPโœ”โŒโœ”โœ”โŒ
    Webcam: StartStart webcam (port: 12345, protocol: ts)GET/gopro/webcam/start?port=12345&protocol=TSโœ”โŒโœ”โœ”โŒ
    Webcam: StartStart webcam (res: resolution_1080, fov: wide)GET/gopro/webcam/start?res=12&fov=0โœ”โŒโœ”โœ”โŒ
    Webcam: StatusGet webcam statusGET/gopro/webcam/statusโœ”โŒโœ”โœ”โŒ
    Webcam: StopStop webcamGET/gopro/webcam/stopโœ”โŒโœ”โœ”โŒ
    Webcam: VersionGet webcam api versionGET/gopro/webcam/versionโœ”โŒโœ”โœ”โŒ
    Wired USB ControlDisable wired usb controlGET/gopro/camera/control/wired_usb?p=0โœ”โœ”โœ”>= v01.30.00โŒ
    Wired USB ControlEnable wired usb controlGET/gopro/camera/control/wired_usb?p=1โœ”โœ”โœ”>= v01.30.00โŒ
    - -

    Settings

    -

    -GoPro cameras have hundreds of setting options to choose from, all of which can be set using a single endpoint. -The endpoint is configured with a setting id and an option value. -Note that setting option values are not globally unique. -While most option values are enumerated values, some are complex bitmasked values. -

    - -

    Settings Quick Reference

    -

    -Below is a table of setting options detailing how to set every option supported by Open GoPro cameras.
    -* Indicates that item is experimental
    -โœ” Indicates support for all Open GoPro firmware versions.
    -โŒ Indicates a lack of support for all Open GoPro firmware versions.
    ->= vXX.YY.ZZ indicates support for firmware versions equal to or newer than vXX.YY.ZZ -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Setting IDSettingOptionHTTP MethodEndpointHERO12 BlackHERO11 Black MiniHERO11 BlackHERO10 BlackHERO9 Black
    2ResolutionSet video resolution (id: 2) to 4k (id: 1)GET/gopro/camera/setting?setting=2&option=1โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 2.7k (id: 4)GET/gopro/camera/setting?setting=2&option=4โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 2.7k 4:3 (id: 6)GET/gopro/camera/setting?setting=2&option=6โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 1440 (id: 7)GET/gopro/camera/setting?setting=2&option=7โŒโŒโŒโŒโœ”
    2ResolutionSet video resolution (id: 2) to 1080 (id: 9)GET/gopro/camera/setting?setting=2&option=9โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 4k 4:3 (id: 18)GET/gopro/camera/setting?setting=2&option=18โŒโœ”โœ”โœ”โœ”
    2ResolutionSet video resolution (id: 2) to 5k (id: 24)GET/gopro/camera/setting?setting=2&option=24โŒโŒโŒโŒโœ”
    2ResolutionSet video resolution (id: 2) to 5k 4:3 (id: 25)GET/gopro/camera/setting?setting=2&option=25โŒโŒโŒโœ”โŒ
    2ResolutionSet video resolution (id: 2) to 5.3k 8:7 (id: 26)GET/gopro/camera/setting?setting=2&option=26โœ”โœ”โœ”โŒโŒ
    2ResolutionSet video resolution (id: 2) to 5.3k 4:3 (id: 27)GET/gopro/camera/setting?setting=2&option=27โŒโœ”โœ”โŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 8:7 (id: 28)GET/gopro/camera/setting?setting=2&option=28โœ”โœ”โœ”โŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 9:16 (id: 29)GET/gopro/camera/setting?setting=2&option=29โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 1080 9:16 (id: 30)GET/gopro/camera/setting?setting=2&option=30โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 5.3k (id: 100)GET/gopro/camera/setting?setting=2&option=100โŒโœ”โœ”โœ”โŒ
    2ResolutionSet video resolution (id: 2) to 5.3k 16:9 (id: 101)GET/gopro/camera/setting?setting=2&option=101โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 16:9 (id: 102)GET/gopro/camera/setting?setting=2&option=102โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 4k 4:3 (id: 103)GET/gopro/camera/setting?setting=2&option=103โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 2.7k 16:9 (id: 104)GET/gopro/camera/setting?setting=2&option=104โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 2.7k 4:3 (id: 105)GET/gopro/camera/setting?setting=2&option=105โœ”โŒโŒโŒโŒ
    2ResolutionSet video resolution (id: 2) to 1080 16:9 (id: 106)GET/gopro/camera/setting?setting=2&option=106โœ”โŒโŒโŒโŒ
    3Frames Per SecondSet video fps (id: 3) to 240 (id: 0)GET/gopro/camera/setting?setting=3&option=0โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 120 (id: 1)GET/gopro/camera/setting?setting=3&option=1โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 100 (id: 2)GET/gopro/camera/setting?setting=3&option=2โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 60 (id: 5)GET/gopro/camera/setting?setting=3&option=5โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 50 (id: 6)GET/gopro/camera/setting?setting=3&option=6โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 30 (id: 8)GET/gopro/camera/setting?setting=3&option=8โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 25 (id: 9)GET/gopro/camera/setting?setting=3&option=9โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 24 (id: 10)GET/gopro/camera/setting?setting=3&option=10โœ”โœ”โœ”โœ”โœ”
    3Frames Per SecondSet video fps (id: 3) to 200 (id: 13)GET/gopro/camera/setting?setting=3&option=13โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to wide (id: 0)GET/gopro/camera/setting?setting=43&option=0โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to narrow (id: 2)GET/gopro/camera/setting?setting=43&option=2โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to superview (id: 3)GET/gopro/camera/setting?setting=43&option=3โœ”โœ”โœ”โœ”โœ”
    43Webcam Digital LensesSet webcam digital lenses (id: 43) to linear (id: 4)GET/gopro/camera/setting?setting=43&option=4โœ”โœ”โœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to never (id: 0)GET/gopro/camera/setting?setting=59&option=0โœ”>= v02.10.00โœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 1 min (id: 1)GET/gopro/camera/setting?setting=59&option=1โœ”>= v02.10.00>= v02.01.00โŒโŒ
    59Auto Power DownSet auto power down (id: 59) to 5 min (id: 4)GET/gopro/camera/setting?setting=59&option=4โœ”>= v02.10.00โœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 15 min (id: 6)GET/gopro/camera/setting?setting=59&option=6โœ”โŒโœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 30 min (id: 7)GET/gopro/camera/setting?setting=59&option=7โœ”โŒโœ”โœ”โœ”
    59Auto Power DownSet auto power down (id: 59) to 8 seconds (id: 11)GET/gopro/camera/setting?setting=59&option=11โŒ>= v02.10.00โŒโŒโŒ
    59Auto Power DownSet auto power down (id: 59) to 30 seconds (id: 12)GET/gopro/camera/setting?setting=59&option=12โŒ>= v02.10.00โŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 4:3 (id: 0)GET/gopro/camera/setting?setting=108&option=0โœ”โŒโŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 16:9 (id: 1)GET/gopro/camera/setting?setting=108&option=1โœ”โŒโŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 8:7 (id: 3)GET/gopro/camera/setting?setting=108&option=3โœ”โŒโŒโŒโŒ
    108Aspect RatioSet video aspect ratio (id: 108) to 9:16 (id: 4)GET/gopro/camera/setting?setting=108&option=4โœ”โŒโŒโŒโŒ
    121Video Digital LensesSet video digital lenses (id: 121) to wide (id: 0)GET/gopro/camera/setting?setting=121&option=0โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to narrow (id: 2)GET/gopro/camera/setting?setting=121&option=2โŒโŒโŒโœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to superview (id: 3)GET/gopro/camera/setting?setting=121&option=3โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to linear (id: 4)GET/gopro/camera/setting?setting=121&option=4โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to max superview (id: 7)GET/gopro/camera/setting?setting=121&option=7โœ”>= v02.00.00โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to linear + horizon leveling (id: 8)GET/gopro/camera/setting?setting=121&option=8โœ”โœ”โœ”โœ”โœ”
    121Video Digital LensesSet video digital lenses (id: 121) to hyperview (id: 9)GET/gopro/camera/setting?setting=121&option=9โœ”โœ”โœ”โŒโŒ
    121Video Digital LensesSet video digital lenses (id: 121) to linear + horizon lock (id: 10)GET/gopro/camera/setting?setting=121&option=10โœ”โœ”โœ”โŒโŒ
    121Video Digital LensesSet video digital lenses (id: 121) to max hyperview (id: 11)GET/gopro/camera/setting?setting=121&option=11โœ”โŒโŒโŒโŒ
    122Photo Digital LensesSet photo digital lenses (id: 122) to narrow (id: 19)GET/gopro/camera/setting?setting=122&option=19โŒโŒโŒโœ”โœ”
    122Photo Digital LensesSet photo digital lenses (id: 122) to max superview (id: 100)GET/gopro/camera/setting?setting=122&option=100โœ”โŒโœ”โœ”โœ”
    122Photo Digital LensesSet photo digital lenses (id: 122) to wide (id: 101)GET/gopro/camera/setting?setting=122&option=101โœ”โŒโœ”โœ”โœ”
    122Photo Digital LensesSet photo digital lenses (id: 122) to linear (id: 102)GET/gopro/camera/setting?setting=122&option=102โœ”โŒโœ”โœ”โœ”
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to narrow (id: 19)GET/gopro/camera/setting?setting=123&option=19โŒโŒโŒโœ”โœ”
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to max superview (id: 100)GET/gopro/camera/setting?setting=123&option=100โŒโŒโœ”โœ”โŒ
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to wide (id: 101)GET/gopro/camera/setting?setting=123&option=101โœ”โŒโœ”โœ”โœ”
    123Time Lapse Digital LensesSet time lapse digital lenses (id: 123) to linear (id: 102)GET/gopro/camera/setting?setting=123&option=102โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to time lapse video (id: 13)GET/gopro/camera/setting?setting=128&option=13โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to time lapse photo (id: 20)GET/gopro/camera/setting?setting=128&option=20โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to night lapse photo (id: 21)GET/gopro/camera/setting?setting=128&option=21โœ”โŒโœ”โœ”โœ”
    128Media FormatSet media format (id: 128) to night lapse video (id: 26)GET/gopro/camera/setting?setting=128&option=26โœ”โŒโœ”โœ”โœ”
    134Anti-FlickerSet setup anti flicker (id: 134) to 60hz (id: 2)GET/gopro/camera/setting?setting=134&option=2โœ”โœ”โœ”โœ”โœ”
    134Anti-FlickerSet setup anti flicker (id: 134) to 50hz (id: 3)GET/gopro/camera/setting?setting=134&option=3โœ”โœ”โœ”โœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to off (id: 0)GET/gopro/camera/setting?setting=135&option=0โœ”โœ”โœ”โœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to low (id: 1)GET/gopro/camera/setting?setting=135&option=1โœ”โœ”โœ”โŒโœ”
    135HypersmoothSet video hypersmooth (id: 135) to high (id: 2)GET/gopro/camera/setting?setting=135&option=2โŒโŒโŒโœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to boost (id: 3)GET/gopro/camera/setting?setting=135&option=3โŒโœ”โœ”โœ”โœ”
    135HypersmoothSet video hypersmooth (id: 135) to auto boost (id: 4)GET/gopro/camera/setting?setting=135&option=4โœ”โœ”โœ”โŒโŒ
    135HypersmoothSet video hypersmooth (id: 135) to standard (id: 100)GET/gopro/camera/setting?setting=135&option=100โŒโŒโŒโœ”โŒ
    150Horizon LevelingSet video horizon levelling (id: 150) to off (id: 0)GET/gopro/camera/setting?setting=150&option=0โŒ>= v02.00.00โœ”โŒโŒ
    150Horizon LevelingSet video horizon levelling (id: 150) to on (id: 1)GET/gopro/camera/setting?setting=150&option=1โŒ>= v02.00.00โŒโŒโŒ
    150Horizon LevelingSet video horizon levelling (id: 150) to locked (id: 2)GET/gopro/camera/setting?setting=150&option=2โŒโŒโœ”โŒโŒ
    151Horizon LevelingSet photo horizon levelling (id: 151) to off (id: 0)GET/gopro/camera/setting?setting=151&option=0โŒโŒโœ”โŒโŒ
    151Horizon LevelingSet photo horizon levelling (id: 151) to locked (id: 2)GET/gopro/camera/setting?setting=151&option=2โŒโŒโœ”โŒโŒ
    162Max LensSet max lens (id: 162) to off (id: 0)GET/gopro/camera/setting?setting=162&option=0โŒโŒโœ”>= v01.20.00โœ”
    162Max LensSet max lens (id: 162) to on (id: 1)GET/gopro/camera/setting?setting=162&option=1โŒโŒโœ”>= v01.20.00โœ”
    167Hindsight*Set hindsight (id: 167) to 15 seconds (id: 2)GET/gopro/camera/setting?setting=167&option=2โœ”โŒโœ”โœ”โœ”
    167Hindsight*Set hindsight (id: 167) to 30 seconds (id: 3)GET/gopro/camera/setting?setting=167&option=3โœ”โŒโœ”โœ”โœ”
    167Hindsight*Set hindsight (id: 167) to off (id: 4)GET/gopro/camera/setting?setting=167&option=4โœ”โŒโœ”โœ”โœ”
    171IntervalSet photo single interval (id: 171) to off (id: 0)GET/gopro/camera/setting?setting=171&option=0โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 0.5s (id: 2)GET/gopro/camera/setting?setting=171&option=2โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 1s (id: 3)GET/gopro/camera/setting?setting=171&option=3โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 2s (id: 4)GET/gopro/camera/setting?setting=171&option=4โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 5s (id: 5)GET/gopro/camera/setting?setting=171&option=5โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 10s (id: 6)GET/gopro/camera/setting?setting=171&option=6โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 30s (id: 7)GET/gopro/camera/setting?setting=171&option=7โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 60s (id: 8)GET/gopro/camera/setting?setting=171&option=8โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 120s (id: 9)GET/gopro/camera/setting?setting=171&option=9โœ”โŒโŒโŒโŒ
    171IntervalSet photo single interval (id: 171) to 3s (id: 10)GET/gopro/camera/setting?setting=171&option=10โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to off (id: 0)GET/gopro/camera/setting?setting=172&option=0โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 15 seconds (id: 1)GET/gopro/camera/setting?setting=172&option=1โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 30 seconds (id: 2)GET/gopro/camera/setting?setting=172&option=2โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 1 minute (id: 3)GET/gopro/camera/setting?setting=172&option=3โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 5 minutes (id: 4)GET/gopro/camera/setting?setting=172&option=4โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 15 minutes (id: 5)GET/gopro/camera/setting?setting=172&option=5โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 30 minutes (id: 6)GET/gopro/camera/setting?setting=172&option=6โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 1 hour (id: 7)GET/gopro/camera/setting?setting=172&option=7โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 2 hours (id: 8)GET/gopro/camera/setting?setting=172&option=8โœ”โŒโŒโŒโŒ
    172DurationSet photo interval duration (id: 172) to 3 hours (id: 9)GET/gopro/camera/setting?setting=172&option=9โœ”โŒโŒโŒโŒ
    173Video Performance ModeSet video performance mode (id: 173) to maximum video performance (id: 0)GET/gopro/camera/setting?setting=173&option=0โŒโŒโŒ>= v01.16.00โŒ
    173Video Performance ModeSet video performance mode (id: 173) to extended battery (id: 1)GET/gopro/camera/setting?setting=173&option=1โŒโŒโŒ>= v01.16.00โŒ
    173Video Performance ModeSet video performance mode (id: 173) to tripod / stationary video (id: 2)GET/gopro/camera/setting?setting=173&option=2โŒโŒโŒ>= v01.16.00โŒ
    175ControlsSet controls (id: 175) to easy (id: 0)GET/gopro/camera/setting?setting=175&option=0โœ”โœ”โœ”โŒโŒ
    175ControlsSet controls (id: 175) to pro (id: 1)GET/gopro/camera/setting?setting=175&option=1โœ”โœ”โœ”โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (id: 0)GET/gopro/camera/setting?setting=176&option=0โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (id: 1)GET/gopro/camera/setting?setting=176&option=1โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 2)GET/gopro/camera/setting?setting=176&option=2โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (low light) (id: 3)GET/gopro/camera/setting?setting=176&option=3โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (ext. batt) (id: 4)GET/gopro/camera/setting?setting=176&option=4โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (ext. batt) (id: 5)GET/gopro/camera/setting?setting=176&option=5โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (ext. batt, low light) (id: 6)GET/gopro/camera/setting?setting=176&option=6โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (50hz) (id: 7)GET/gopro/camera/setting?setting=176&option=7โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (50hz) (id: 8)GET/gopro/camera/setting?setting=176&option=8โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (50hz) (id: 9)GET/gopro/camera/setting?setting=176&option=9โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (low light, 50hz) (id: 10)GET/gopro/camera/setting?setting=176&option=10โœ”โŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (ext. batt, 50hz) (id: 11)GET/gopro/camera/setting?setting=176&option=11โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (ext. batt, 50hz) (id: 12)GET/gopro/camera/setting?setting=176&option=12โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 1x (ext. batt, low light, 50hz) (id: 13)GET/gopro/camera/setting?setting=176&option=13โŒโŒโœ”โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (ext. batt) (id: 14)GET/gopro/camera/setting?setting=176&option=14โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (ext. batt, 50hz) (id: 15)GET/gopro/camera/setting?setting=176&option=15โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (long. batt) (id: 16)GET/gopro/camera/setting?setting=176&option=16โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (long. batt) (id: 17)GET/gopro/camera/setting?setting=176&option=17โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (long. batt) (id: 18)GET/gopro/camera/setting?setting=176&option=18โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 1x (long. batt, low light) (id: 19)GET/gopro/camera/setting?setting=176&option=19โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 8x ultra slo-mo (long. batt, 50hz) (id: 20)GET/gopro/camera/setting?setting=176&option=20โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (long. batt, 50hz) (id: 21)GET/gopro/camera/setting?setting=176&option=21โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (long. batt, 50hz) (id: 22)GET/gopro/camera/setting?setting=176&option=22โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 1x (long. batt, low light, 50hz) (id: 23)GET/gopro/camera/setting?setting=176&option=23โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (4k) (id: 24)GET/gopro/camera/setting?setting=176&option=24โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (2.7k) (id: 25)GET/gopro/camera/setting?setting=176&option=25โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (4k, 50hz) (id: 26)GET/gopro/camera/setting?setting=176&option=26โœ”โŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 4x super slo-mo (2.7k, 50hz) (id: 27)GET/gopro/camera/setting?setting=176&option=27โŒโŒ>= v02.01.00โŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 28)GET/gopro/camera/setting?setting=176&option=28โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 29)GET/gopro/camera/setting?setting=176&option=29โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 30)GET/gopro/camera/setting?setting=176&option=30โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 31)GET/gopro/camera/setting?setting=176&option=31โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 32)GET/gopro/camera/setting?setting=176&option=32โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 33)GET/gopro/camera/setting?setting=176&option=33โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 34)GET/gopro/camera/setting?setting=176&option=34โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 35)GET/gopro/camera/setting?setting=176&option=35โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 36)GET/gopro/camera/setting?setting=176&option=36โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 37)GET/gopro/camera/setting?setting=176&option=37โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 38)GET/gopro/camera/setting?setting=176&option=38โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 39)GET/gopro/camera/setting?setting=176&option=39โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 40)GET/gopro/camera/setting?setting=176&option=40โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 41)GET/gopro/camera/setting?setting=176&option=41โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 42)GET/gopro/camera/setting?setting=176&option=42โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 2x slo-mo (id: 43)GET/gopro/camera/setting?setting=176&option=43โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 44)GET/gopro/camera/setting?setting=176&option=44โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 45)GET/gopro/camera/setting?setting=176&option=45โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 46)GET/gopro/camera/setting?setting=176&option=46โœ”โŒโŒโŒโŒ
    176SpeedSet speed (id: 176) to 1x speed / low light (id: 47)GET/gopro/camera/setting?setting=176&option=47โœ”โŒโŒโŒโŒ
    177Enable Night PhotoSet enable night photo (id: 177) to off (id: 0)GET/gopro/camera/setting?setting=177&option=0โŒโŒโœ”โŒโŒ
    177Enable Night PhotoSet enable night photo (id: 177) to on (id: 1)GET/gopro/camera/setting?setting=177&option=1โŒโŒโœ”โŒโŒ
    178Wireless BandSet wireless band (id: 178) to 2.4ghz (id: 0)GET/gopro/camera/setting?setting=178&option=0โœ”โœ”โœ”โŒโŒ
    178Wireless BandSet wireless band (id: 178) to 5ghz (id: 1)GET/gopro/camera/setting?setting=178&option=1โœ”โœ”โœ”โŒโŒ
    179Trail LengthSet trail length (id: 179) to short (id: 1)GET/gopro/camera/setting?setting=179&option=1โœ”โœ”โœ”โŒโŒ
    179Trail LengthSet trail length (id: 179) to long (id: 2)GET/gopro/camera/setting?setting=179&option=2โœ”โœ”โœ”โŒโŒ
    179Trail LengthSet trail length (id: 179) to max (id: 3)GET/gopro/camera/setting?setting=179&option=3โœ”โœ”โœ”โŒโŒ
    180Video ModeSet video mode (id: 180) to highest quality (id: 0)GET/gopro/camera/setting?setting=180&option=0โŒโŒโœ”โŒโŒ
    180Video ModeSet video mode (id: 180) to extended battery (id: 1)GET/gopro/camera/setting?setting=180&option=1โŒโŒโœ”โŒโŒ
    180Video ModeSet video mode (id: 180) to extended battery (green icon) (id: 101)GET/gopro/camera/setting?setting=180&option=101โŒโŒ>= v02.01.00โŒโŒ
    180Video ModeSet video mode (id: 180) to longest battery (green icon) (id: 102)GET/gopro/camera/setting?setting=180&option=102โŒโŒ>= v02.01.00โŒโŒ
    182Bit RateSet system video bit rate (id: 182) to standard (id: 0)GET/gopro/camera/setting?setting=182&option=0โœ”โŒโŒโŒโŒ
    182Bit RateSet system video bit rate (id: 182) to high (id: 1)GET/gopro/camera/setting?setting=182&option=1โœ”โŒโŒโŒโŒ
    183Bit DepthSet system video bit depth (id: 183) to 8-bit (id: 0)GET/gopro/camera/setting?setting=183&option=0โœ”โŒโŒโŒโŒ
    183Bit DepthSet system video bit depth (id: 183) to 10-bit (id: 2)GET/gopro/camera/setting?setting=183&option=2โœ”โŒโŒโŒโŒ
    184ProfilesSet video profile (id: 184) to standard (id: 0)GET/gopro/camera/setting?setting=184&option=0โœ”โŒโŒโŒโŒ
    184ProfilesSet video profile (id: 184) to hdr (id: 1)GET/gopro/camera/setting?setting=184&option=1โœ”โŒโŒโŒโŒ
    184ProfilesSet video profile (id: 184) to log (id: 2)GET/gopro/camera/setting?setting=184&option=2โœ”โŒโŒโŒโŒ
    185Aspect RatioSet video easy aspect ratio (id: 185) to widescreen (id: 0)GET/gopro/camera/setting?setting=185&option=0โœ”โŒโŒโŒโŒ
    185Aspect RatioSet video easy aspect ratio (id: 185) to mobile (id: 1)GET/gopro/camera/setting?setting=185&option=1โœ”โŒโŒโŒโŒ
    185Aspect RatioSet video easy aspect ratio (id: 185) to universal (id: 2)GET/gopro/camera/setting?setting=185&option=2โœ”โŒโŒโŒโŒ
    186Video ModeSet video easy presets (id: 186) to highest quality (id: 0)GET/gopro/camera/setting?setting=186&option=0โœ”โŒโŒโŒโŒ
    186Video ModeSet video easy presets (id: 186) to standard quality (id: 1)GET/gopro/camera/setting?setting=186&option=1โœ”โŒโŒโŒโŒ
    186Video ModeSet video easy presets (id: 186) to basic quality (id: 2)GET/gopro/camera/setting?setting=186&option=2โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to timewarp (id: 0)GET/gopro/camera/setting?setting=187&option=0โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to star trails (id: 1)GET/gopro/camera/setting?setting=187&option=1โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to light painting (id: 2)GET/gopro/camera/setting?setting=187&option=2โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to vehicle lights (id: 3)GET/gopro/camera/setting?setting=187&option=3โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max timewarp (id: 4)GET/gopro/camera/setting?setting=187&option=4โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max star trails (id: 5)GET/gopro/camera/setting?setting=187&option=5โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max light painting (id: 6)GET/gopro/camera/setting?setting=187&option=6โœ”โŒโŒโŒโŒ
    187Lapse ModeSet multi shot easy presets (id: 187) to max vehicle lights (id: 7)GET/gopro/camera/setting?setting=187&option=7โœ”โŒโŒโŒโŒ
    188Aspect RatioSet multi shot easy aspect ratio (id: 188) to widescreen (id: 0)GET/gopro/camera/setting?setting=188&option=0โœ”โŒโŒโŒโŒ
    188Aspect RatioSet multi shot easy aspect ratio (id: 188) to mobile (id: 1)GET/gopro/camera/setting?setting=188&option=1โœ”โŒโŒโŒโŒ
    188Aspect RatioSet multi shot easy aspect ratio (id: 188) to universal (id: 2)GET/gopro/camera/setting?setting=188&option=2โœ”โŒโŒโŒโŒ
    189Max Lens ModSet system addon lens active (id: 189) to none (id: 0)GET/gopro/camera/setting?setting=189&option=0โœ”โŒโŒโŒโŒ
    189Max Lens ModSet system addon lens active (id: 189) to max lens 1.0 (id: 1)GET/gopro/camera/setting?setting=189&option=1โœ”โŒโŒโŒโŒ
    189Max Lens ModSet system addon lens active (id: 189) to max lens 2.0 (id: 2)GET/gopro/camera/setting?setting=189&option=2โœ”โŒโŒโŒโŒ
    190Max Lens Mod EnableSet system addon lens status (id: 190) to off (id: 0)GET/gopro/camera/setting?setting=190&option=0โœ”โŒโŒโŒโŒ
    190Max Lens Mod EnableSet system addon lens status (id: 190) to on (id: 1)GET/gopro/camera/setting?setting=190&option=1โœ”โŒโŒโŒโŒ
    191Photo ModeSet photo easy presets (id: 191) to super photo (id: 0)GET/gopro/camera/setting?setting=191&option=0โœ”โŒโŒโŒโŒ
    191Photo ModeSet photo easy presets (id: 191) to night photo (id: 1)GET/gopro/camera/setting?setting=191&option=1โœ”โŒโŒโŒโŒ
    192Aspect RatioSet multi shot nlv aspect ratio (id: 192) to 4:3 (id: 0)GET/gopro/camera/setting?setting=192&option=0โœ”โŒโŒโŒโŒ
    192Aspect RatioSet multi shot nlv aspect ratio (id: 192) to 16:9 (id: 1)GET/gopro/camera/setting?setting=192&option=1โœ”โŒโŒโŒโŒ
    192Aspect RatioSet multi shot nlv aspect ratio (id: 192) to 8:7 (id: 3)GET/gopro/camera/setting?setting=192&option=3โœ”โŒโŒโŒโŒ
    193FramingSet video easy framing (id: 193) to widescreen (id: 0)GET/gopro/camera/setting?setting=193&option=0โœ”โŒโŒโŒโŒ
    193FramingSet video easy framing (id: 193) to vertical (id: 1)GET/gopro/camera/setting?setting=193&option=1โœ”โŒโŒโŒโŒ
    193FramingSet video easy framing (id: 193) to full frame (id: 2)GET/gopro/camera/setting?setting=193&option=2โœ”โŒโŒโŒโŒ
    - -

    Camera Capabilities

    -

    -Camera capabilities usually change from one camera to another and often change from one release to the next. -Below are documents that detail whitelists for basic video settings for every supported camera release. -

    - -

    Note about Dependency Ordering and Blacklisting

    -

    -Capability documents define supported camera states. -Each state is comprised of a set of setting options that are presented in dependency order. -This means each state is guaranteed to be attainable if and only if the setting options are set in the order presented. -Failure to adhere to dependency ordering may result in the camera's blacklist rules rejecting a set-setting command. -

    - -

    Example

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CameraCommand 1Command 2Command 3Command 4Command 5Guaranteed Valid?
    HERO10 BlackRes: 1080Anti-Flicker: 60Hz (NTSC)FPS: 240FOV: WideHypersmooth: OFFโœ”
    HERO10 BlackFPS: 240Anti-Flicker: 60Hz (NTSC)Res: 1080FOV: WideHypersmooth: OFFโŒ
    -

    -In the example above, the first set of commands will always work for basic video presets such as Standard. -

    - -

    -In the second example, suppose the camera's Video Resolution was previously set to 4K. -If the user tries to set Video FPS to 240, it will fail because 4K/240fps is not supported. -

    - -

    Capability Documents

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    DocumentsProductRelease
    -capabilities.xlsx
    capabilities.json -
    HERO12 Blackv01.30.00
    v01.20.00
    v01.10.00
    HERO11 Black Miniv02.30.00
    v02.20.00
    v02.10.00
    v02.00.00
    v01.10.00
    HERO11 Blackv02.12.00
    v02.10.00
    v02.01.00
    v01.20.00
    v01.12.00
    v01.10.00
    HERO10 Blackv01.50.00
    v01.46.00
    v01.42.00
    v01.40.00
    v01.30.00
    v01.20.00
    v01.16.00
    v01.10.00
    HERO9 Blackv01.72.00
    v01.70.00
    - -

    Spreadsheet Format

    -

    -The capabilities spreadsheet contains worksheets for every supported release. -Each row in a worksheet represents a whitelisted state and is presented in dependency order as outlined above. -

    - -

    JSON Format

    -

    -The capabilities JSON contains a set of whitelist states for every supported release. -Each state is comprised of a list of objects that contain setting and option IDs necessary to construct set-setting -commands and are given in dependency order as outlined above. -

    - -

    -Below is a simplified example of the capabilities JSON file; a formal schema is also available here: -capabilities_schema.json -

    - -
    {
    -    "(PRODUCT_NAME)": {
    -        "(RELEASE_VERSION)": {
    -            "states": [
    -                [
    -                    {"setting_name": "(str)", "setting_id": (int), "option_name": "(str)", "option_id": (int)},
    -                    ...
    -                ],
    -                ...
    -            ],
    -        },
    -        ...
    -    },
    -    ...
    -}
    -
    - -

    Media

    -

    -The camera provides an endpoint to query basic details about media captured on the sdcard. -

    - -

    Chapters

    -

    -All GoPro cameras break longer videos into chapters. -GoPro cameras currently limit file sizes on sdcards to 4GB for both FAT32 and exFAT file systems. -This limitation is most commonly seen when recording longer (10+ minute) videos. -In practice, the camera will split video media into chapters named Gqccmmmm.MP4 (and ones for THM/LRV) such that: -

    - -
      -
    • q: Quality Level (X: Extreme, H: High, M: Medium, L: Low)
    • -
    • cc: Chapter Number (01-99)
    • -
    • mmmm: Media ID (0001-9999)
    • -
    - -

    -When media becomes chaptered, the camera increments subsequent Chapter Numbers while leaving the Media ID unchanged. -For example, if the user records a long High-quality video that results in 4 chapters, the files on the sdcard may -look like the following: -

    - -
    -rwxrwxrwx@ 1 gopro  123456789  4006413091 Jan  1 00:00 GH010078.MP4
    --rwxrwxrwx@ 1 gopro  123456789       17663 Jan  1 00:00 GH010078.THM
    --rwxrwxrwx@ 1 gopro  123456789  4006001541 Jan  1 00:00 GH020078.MP4
    --rwxrwxrwx@ 1 gopro  123456789       17357 Jan  1 00:00 GH020078.THM
    --rwxrwxrwx@ 1 gopro  123456789  4006041985 Jan  1 00:00 GH030078.MP4
    --rwxrwxrwx@ 1 gopro  123456789       17204 Jan  1 00:00 GH030078.THM
    --rwxrwxrwx@ 1 gopro  123456789   756706872 Jan  1 00:00 GH040078.MP4
    --rwxrwxrwx@ 1 gopro  123456789       17420 Jan  1 00:00 GH040078.THM
    --rwxrwxrwx@ 1 gopro  123456789   184526939 Jan  1 00:00 GL010078.LRV
    --rwxrwxrwx@ 1 gopro  123456789   184519787 Jan  1 00:00 GL020078.LRV
    --rwxrwxrwx@ 1 gopro  123456789   184517614 Jan  1 00:00 GL030078.LRV
    --rwxrwxrwx@ 1 gopro  123456789    34877660 Jan  1 00:00 GL040078.LRV
    -
    - -

    Media Info Format

    -

    -The Media: Info command provides additional details about a media above and beyond its counterpart, the Media: List command. -Such information includes resolution, frame rate, duration, hilight info, etc. -

    - -

    Example Video Info:

    -
    {
    -    "cre": "1613676644",
    -    "s": "11305367",
    -    "mahs": "1",
    -    "us": "0",
    -    "mos": [],
    -    "eis": "0",
    -    "pta": "1",
    -    "ao": "stereo",
    -    "tr": "0",
    -    "mp": "0",
    -    "ct": "0",
    -    "rot": "0",
    -    "fov": "4",
    -    "lc": "0",
    -    "prjn": "6",
    -    "gumi": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    -    "ls": "1072714",
    -    "cl": "0",
    -    "avc_profile": "4",
    -    "profile": "42",
    -    "hc": "0",
    -    "hi": [],
    -    "dur": "2",
    -    "w": "1920",
    -    "h": "1080",
    -    "fps": "60000",
    -    "fps_denom": "1001",
    -    "prog": "1",
    -    "subsample": "0"
    -}
    -
    - -

    Common Keys (Video / Photo)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyTypeDescriptionExamples
    aostringAudio Optionoff, stereo, wind, auto
    avc_profileuint8Advanced Video Codec Profile0..255
    clboolFile clipped from another source?0:false, 1:true
    creuint32File creation timestamp (sec since epoch)1692992748
    ctuint32Content type0..12
    duruint32Duration of video in seconds42
    eisboolFile made with Electronic Image Stabilization0:false, 1:true
    fpsuint32Frame rate (numerator)1001
    fps_denomuint32Frme rate (denominator)30000
    gumistringGlobally Unique Media IDโ€œxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxโ€
    huint32Video height in pixels1080
    hcuint32Hilight countvideo:0..99, photo:0..1
    hdrboolPhoto taken with High Dynamic Range?0:false, 1:true
    hiArray of uint32Offset to hilights in media in milliseconds[1500, 4700]
    lcuint32Spherical Lens Config0:front, 1:rear
    lsint32Low Resolution Video file size in bytes (or -1 if no LRV file)-1, 1234567890
    mosArray of stringMobile Offload Stateโ€œappโ€, โ€œpcโ€, โ€œotherโ€
    mpboolMetadata Present?0:no metadata, 1:metadata exists
    profileuint8Advanced Video Codec Level0..255
    progboolIs video progressive?0:interlaced, 1:progressive
    ptaboolMedia has Protune audio file?0:false, 1:true
    rawboolPhoto has raw version?0:false, 1:true
    suint64File size in bytes1234567890
    subsampleboolIs video subsampled?0:false, 1:true
    trboolIs file transcoded?0:false, 1:true
    wuint32Width of media in pixels1920
    wdrboolPhoto taken with Wide Dynamic Range?0:false, 1:true
    - -

    Video Keys

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyTypeDescriptionExamples
    aostringAudio Optionoff, stereo, wind, auto
    avc_profileuint8Advanced Video Codec Profile0..255
    clboolFile clipped from another source?0:false, 1:true
    duruint32Duration of video in seconds42
    fpsuint32Frame rate (numerator)1001
    fps_denomuint32Frme rate (denominator)30000
    hiArray of uint32Offset to hilights in media in milliseconds[1500, 4700]
    lsint32Low Resolution Video file size in bytes (or -1 if no LRV file)-1, 1234567890
    profileuint8Advanced Video Codec Level0..255
    progboolIs video progressive?0:interlaced, 1:progressive
    ptaboolMedia has Protune audio file?0:false, 1:true
    subsampleboolIs video subsampled?0:false, 1:true
    - -

    Photo Keys

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyTypeDescriptionExamples
    hdrboolPhoto taken with High Dynamic Range?0:false, 1:true
    rawboolPhoto has raw version?0:false, 1:true
    wdrboolPhoto taken with Wide Dynamic Range?0:false, 1:true
    - -

    Media Info: Content Type

    -

    -The "ct" (Content Type) metadata indicates what mode (or group) the media was captured in. -

    - -

    -Note: All Time Lapse modes that result in MPEG media use the same content type ID. -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDMode
    Video0
    Looping1
    Chaptered Video2
    Time Lapse3
    Single Photo4
    Burst Photo5
    Time Lapse Photo6
    Night Lapse Photo8
    Night Photo9
    Continuous Photo10
    Raw Photo11
    Live Burst12
    - -

    Media List Format

    -

    -The format of the media list is given below. -

    - -
    {
    -    "id": "<MEDIA SESSION ID>",
    -    "media": [
    -        {
    -            "d": "<DIRECTORY NAME>",
    -            "fs": [
    -                {<MEDIA ITEM INFO>},
    -                ...
    -            ]
    -        },
    -        ...
    -    ]
    -}
    -
    - -

    Media List Keys

    -

    The outer structure of the media list and the inner structure of individual media items use the keys in the table below.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyDescription
    bID of first member of a group (for grouped media items)
    creCreation timestamp (seconds since epoch)
    dDirectory name
    fsFile system. Contains listing of media items in directory
    gGroup ID (if grouped media item)
    glrvLow resolution video file size
    idMedia list session identifier
    lID of last member of a group (for grouped media items)
    mList of missing/deleted group member IDs (for grouped media items)
    mediaContains media info for for each directory (e.g. 100GOPRO/, 101GOPRO/, โ€ฆ)
    modLast modified time (seconds since epoch)
    nMedia filename
    sSize of (group) media in bytes
    tGroup type (for grouped media items) (b -> burst, c -> continuous shot, n -> night lapse, t -> time lapse)
    - -

    Grouped Media Items

    -

    -To minimize the size of the JSON transmitted by the camera, grouped media items such as Burst Photos, -Time Lapse Photos, Night Lapse Photos, etc are represented with a single item in the media list with additional keys -that allow the user to extrapolate individual filenames for each member of the group. -

    - -

    -Filenames for group media items have the form "GXXXYYYY.ZZZ" -where XXX is the group ID, YYY is the group member ID and ZZZ is the file extension. -

    - -

    -For example, take the media list below, which contains a Time Lapse Photo group media item: -

    - -
    {
    -    "id": "2530266050123724003",
    -    "media": [
    -        {
    -            "d": "100GOPRO",
    -            "fs": [
    -                {
    -                    "b": "8",
    -                    "cre": "1613669353",
    -                    "g": "1",
    -                    "l": "396",
    -                    "m": ['75', '139'],
    -                    "mod": "1613669353",
    -                    "n": "G0010008.JPG",
    -                    "s": "773977407",
    -                    "t": "t"
    -                }
    -            ]
    -        }
    -    ]
    -}
    -
    - -

    -The first filename in the group is "G0010008.JPG" (key: "n").
    -The ID of the first group member in this case is "008" (key: "b").
    -The ID of the last group member in this case is "396" (key: "l").
    -The IDs of deleted members in this case are "75" and "139" (key: "m")
    -Given this information, the user can extrapolate that the group currently contains -

    - -

    -G0010008.JPG, G0010009.JPG, G0010010.JPG,
    -...,
    -G0010074.JPG, G0010076.JPG,
    -...,
    -G0010138.JPG, G0010140.JPG,
    -...,
    -G0010394.JPG, G0010395.JPG. G0010396.JPG
    -

    - -

    Media HiLights

    -

    -The HiLight Tags feature allows the user to tag moments of interest either during video -capture or on existing media. -

    - -

    Add/Remove HiLights

    -

    -Below is a table of all HiLight commands. -For details on how to send HiLight commands, see Commands Quick Reference. - -

    - - - - - - - - - - - - - - - - - - - -
    CommandDescription
    Media: HiLight (Add)Video: Add a tag at a specific time offset (ms)
    Photo: Add a tag
    Media: HiLight (Remove)Video: Remove a tag at a specific time offset (ms)
    Photo: Remove tag
    Media: HiLight MomentAdd a tag to the current time offset (ms) while encoding video
    - -

    -Note: Attempting to add a HiLight tag at a time offset that exceeds the duration of the video -or removing a non-existent HiLight tag will result in an HTTP/500 error. -

    - -

    Get HiLights

    -

    -Once HiLight tags have been added, they can be queried by calling the Media: Info command; -the response content will be JSON that contains HiLight information: -

    - - - - - - - - - - - - - - - - - - - - - - - -
    Media TypeKeyValue
    PhotohcHiLight Count
    VideohcHiLight Count
    VideohiHiLights (list of time offsets in ms)
    - -

    Example

    -

    -The JSON sample below shows media that contains three HiLights at time offsets 2502ms, 5839ms, and 11478ms. -Note: Photo info will not have an "hi":[...] key-value pair. -

    - -
    {
    -  ...,
    -  "hc":"3",
    -  "hi":[2502,5839,11478],
    -  ...,
    -}
    -
    - -

    Downloading Media

    -

    -The URL to download/stream media from the DCIM/ directory on the sdcard is the Base URL plus /videos/DCIM/XXX/YYY -where XXX is the directory name within DCIM/ given by the media list and YYY is the target media filename. -

    - -

    -For example: Given the following media list: -

    - -
    {
    -    "id": "3586667939918700960",
    -    "media": [
    -        {
    -            "d": "100GOPRO",
    -            "fs": [
    -                {
    -                    "n": "GH010397.MP4",
    -                    "cre": "1613672729",
    -                    "mod": "1613672729",
    -                    "glrv": "1895626",
    -                    "ls": "-1",
    -                    "s": "19917136"
    -                },
    -                {
    -                    "cre": "1614340213",
    -                    "mod": "1614340213",
    -                    "n": "GOPR0001.JPG",
    -                    "s": "6961371"
    -                }
    -            ]
    -        }
    -    ]
    -}
    -
    - -

    -The URL to download GH010397.MP4 over WiFi would be -http://10.5.5.9:8080/videos/DCIM/100GOPRO/GH010397.MP4 -

    - -

    -The URL to download GOPR0001.JPG over WiFi would be -http://10.5.5.9:8080/videos/DCIM/100GOPRO/GOPR0001.JPG -

    - -

    Turbo Transfer

    -

    -Some cameras support Turbo Transfer mode, which allows media to be downloaded over WiFi more rapidly. -This special mode should only be used during media offload. -It is recommended that the user check for and--if necessary--disable Turbo Transfer on connect. -For details on which cameras are supported and how to enable and disable Turbo Transfer, see -Commands Quick Reference. -

    - -

    Downloading Preview Stream

    -

    -When the preview stream is started, the camera starts up a UDP client and begins writing MPEG Transport Stream data to the client on port 8554. -In order to stream this data, the client must implement a UDP connection that binds to the same port and decode the data. -

    - -

    Camera State

    -

    -The camera provides multiple types of state, all of which can be queried: -

    - -
      -
    • Camera state: Contains information about camera status (photos taken, date, is-camera-encoding, etc) and settings (current video resolution, current frame rate, etc)
    • -
    • Preset State: How presets are arranged into preset groups, their titles, icons, settings closely associated with each preset, etc
    • -
    - -

    Camera State Format

    -

    Camera state is given in the following form:

    - -
    {
    -    "status": {
    -        "1": <status 1 value>,
    -        "2": <status 2 value>,
    -        ...
    -    },
    -    "settings: {
    -        "2": <setting 2 value>,
    -        "3": <setting 3 value>,
    -        ...
    -    }
    -}
    -
    - -

    -Where status X value and setting X value are almost always integer values. -See Status Codes table in this document for exceptions. -

    - -

    -For status, keys are status codes and values are status values. -

    - -

    -For settings, keys are setting IDs, and values are option values -

    - -

    Status IDs

    -

    -Below is a table of supported status IDs.
    -* Indicates that item is experimental
    -โœ” Indicates support for all Open GoPro firmware versions.
    -โŒ Indicates a lack of support for all Open GoPro firmware versions.
    ->= vXX.YY.ZZ indicates support for firmware versions equal to or newer than vXX.YY.ZZ -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Status IDNameDescriptionTypeValuesHERO12 BlackHERO11 Black MiniHERO11 BlackHERO10 BlackHERO9 Black
    1Internal battery presentIs the systemโ€™s internal battery present?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    2Internal battery levelRough approximation of internal battery level in bars (or charging)integer0: Zero
    1: One
    2: Two
    3: Three
    4: Charging
    -
    โœ”โœ”โœ”โœ”โœ”
    6System hotIs the system currently overheating?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    8System busyIs the camera busy?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    9Quick capture activeIs Quick Capture feature enabled?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    10Encoding activeIs the system encoding right now?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    11Lcd lock activeIs LCD lock active?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    13Video progress counterWhen encoding video, this is the duration (seconds) of the video so far; 0 otherwiseinteger*โœ”โœ”โœ”โœ”โœ”
    17EnableAre Wireless Connections enabled?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    19StateThe pairing state of the camerainteger0: Never Started
    1: Started
    2: Aborted
    3: Cancelled
    4: Completed
    -
    โœ”โœ”โœ”โœ”โœ”
    20TypeThe last type of pairing that the camera was engaged ininteger0: Not Pairing
    1: Pairing App
    2: Pairing Remote Control
    3: Pairing Bluetooth Device
    -
    โœ”โœ”โœ”โœ”โœ”
    21Pair timeTime (milliseconds) since boot of last successful pairing complete actioninteger*โŒโœ”โœ”โœ”โœ”
    22StateState of current scan for WiFi Access Points. Appears to only change for CAH-related scansinteger0: Never started
    1: Started
    2: Aborted
    3: Canceled
    4: Completed
    -
    โœ”โœ”โœ”โœ”โœ”
    23Scan time msecThe time, in milliseconds since boot that the WiFi Access Point scan completedinteger*โœ”โœ”โœ”โœ”โœ”
    24Provision statusWiFi AP provisioning stateinteger0: Never started
    1: Started
    2: Aborted
    3: Canceled
    4: Completed
    -
    โœ”โœ”โœ”โœ”โœ”
    26Remote control versionWireless remote control versioninteger*โŒโœ”โœ”โœ”โœ”
    27Remote control connectedIs a wireless remote control connected?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    28PairingWireless Pairing Stateinteger*โŒโœ”โœ”โœ”โœ”
    29Wlan ssidSSID of the AP the camera is currently connected to. On BLE connection, value is big-endian byte-encoded intstring*โœ”โœ”โœ”โœ”โœ”
    30Ap ssidThe cameraโ€™s WiFi SSID. On BLE connection, value is big-endian byte-encoded intstring*โœ”โœ”โœ”โœ”โœ”
    31App countThe number of wireless devices connected to the camerainteger*โœ”โœ”โœ”โœ”โœ”
    32EnableIs Preview Stream enabled?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    33Sd statusPrimary Storage Statusinteger-1: Unknown
    0: OK
    1: SD Card Full
    2: SD Card Removed
    3: SD Card Format Error
    4: SD Card Busy
    8: SD Card Swapped
    -
    โœ”โœ”โœ”โœ”โœ”
    34Remaining photosHow many photos can be taken before sdcard is fullinteger*โœ”โŒโœ”โœ”โœ”
    35Remaining video timeHow many minutes of video can be captured with current settings before sdcard is fullinteger*โœ”โœ”โœ”โœ”โœ”
    38Num total photosTotal number of photos on sdcardinteger*โœ”โœ”โœ”โœ”โœ”
    39Num total videosTotal number of videos on sdcardinteger*โœ”โœ”โœ”โœ”โœ”
    41Ota statusThe current status of Over The Air (OTA) updateinteger0: Idle
    1: Downloading
    2: Verifying
    3: Download Failed
    4: Verify Failed
    5: Ready
    6: GoPro App: Downloading
    7: GoPro App: Verifying
    8: GoPro App: Download Failed
    9: GoPro App: Verify Failed
    10: GoPro App: Ready
    -
    โœ”โœ”โœ”โœ”โœ”
    42Download cancel request pendingIs there a pending request to cancel a firmware update download?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    45Camera locate activeIs locate camera feature active?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    49Multi shot count downThe current timelapse interval countdown value (e.g. 5โ€ฆ4โ€ฆ3โ€ฆ2โ€ฆ1โ€ฆ)integer*โœ”โœ”โœ”โœ”โœ”
    54Remaining spaceRemaining space on the sdcard in Kilobytesinteger*โœ”โœ”โœ”โœ”โœ”
    55SupportedIs preview stream supported in current recording/mode/secondary-stream?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    56Wifi barsWiFi signal strength in barsinteger*โœ”โœ”โœ”โœ”โœ”
    58Num hilightsThe number of hilights in encoding video (set to 0 when encoding stops)integer*โœ”โœ”โœ”โœ”โœ”
    59Last hilight time msecTime since boot (msec) of most recent hilight in encoding video (set to 0 when encoding stops)integer*โœ”โœ”โœ”โœ”โœ”
    60Next poll msecThe min time between camera status updates (msec). Do not poll for status more often than thisinteger*โœ”โœ”โœ”โœ”โœ”
    64Remaining timelapse timeHow many min of Timelapse video can be captured with current settings before sdcard is fullinteger*โœ”โœ”โœ”โœ”โœ”
    65Exposure select typeLiveview Exposure Select Modeinteger0: Disabled
    1: Auto
    2: ISO Lock
    3: Hemisphere
    -
    โœ”โŒโœ”โœ”โœ”
    66Exposure select xLiveview Exposure Select: y-coordinate (percent)percent0-100โœ”โŒโœ”โœ”โœ”
    67Exposure select yLiveview Exposure Select: y-coordinate (percent)percent0-100โœ”โŒโœ”โœ”โœ”
    68Gps statusDoes the camera currently have a GPS lock?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    69Ap stateIs the camera in AP Mode?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    70Internal battery percentageInternal battery level (percent)percent0-100โœ”โœ”โœ”โœ”โœ”
    74Acc mic statusMicrophone Accesstory statusinteger0: Microphone mod not connected
    1: Microphone mod connected
    2: Microphone mod connected and microphone plugged into Microphone mod
    -
    โœ”โœ”โœ”โœ”โœ”
    75Digital zoomDigital Zoom level (percent)percent0-100โœ”โœ”โœ”โœ”โœ”
    76Wireless bandWireless Bandinteger0: 2.4 GHz
    1: 5 GHz
    2: Max
    -
    โœ”โœ”โœ”โœ”โœ”
    77Digital zoom activeIs Digital Zoom feature available?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    78Mobile friendly videoAre current video settings mobile friendly? (related to video compression and frame rate)boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    79First time useIs the camera currently in First Time Use (FTU) UI flow?boolean0: False
    1: True
    -
    โŒโŒโŒโœ”โœ”
    81Band 5ghz availIs 5GHz wireless band available?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    82System readyIs the system ready to accept commands?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    83Batt okay for otaIs the internal battery charged sufficiently to start Over The Air (OTA) update?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    85Video low temp alertIs the camera getting too cold to continue recording?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    86Actual orientationThe rotational orientation of the camerainteger0: 0 degrees (upright)
    1: 180 degrees (upside down)
    2: 90 degrees (laying on right side)
    3: 270 degrees (laying on left side)
    -
    โœ”โœ”โœ”โœ”โœ”
    88Zoom while encodingIs this camera capable of zooming while encoding (static value based on model, not settings)boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    89Current modeCurrent flatmode IDinteger*โœ”โœ”โœ”โœ”โœ”
    93Active video presetsCurrent Video Preset (ID)integer*โœ”โœ”โœ”โœ”โœ”
    94Active photo presetsCurrent Photo Preset (ID)integer*โœ”โŒโœ”โœ”โœ”
    95Active timelapse presetsCurrent Timelapse Preset (ID)integer*โœ”โœ”โœ”โœ”โœ”
    96Active presets groupCurrent Preset Group (ID)integer*โœ”โœ”โœ”โœ”โœ”
    97Active presetCurrent Preset (ID)integer*โœ”โœ”โœ”โœ”โœ”
    98Preset modifiedPreset Modified Status, which contains an event ID and a preset (group) IDinteger*โœ”โœ”โœ”โœ”โœ”
    99Remaining live burstsHow many Live Bursts can be captured before sdcard is fullinteger*โŒโŒโœ”โœ”โœ”
    100Num total live burstsTotal number of Live Bursts on sdcardinteger*โŒโŒโœ”โœ”โœ”
    101Capture delay activeIs Capture Delay currently active (i.e. counting down)?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    102Media mod mic statusMedia mod Stateinteger0: Media mod microphone removed
    2: Media mod microphone only
    3: Media mod microphone with external microphone
    -
    โœ”โœ”โœ”โœ”โœ”
    103Timewarp speed ramp activeTime Warp Speedinteger0: 15x
    1: 30x
    2: 60x
    3: 150x
    4: 300x
    5: 900x
    6: 1800x
    7: 2x
    8: 5x
    9: 10x
    10: Auto
    11: 1x (realtime)
    12: 1/2x (slow-motion)
    -
    โœ”โœ”โœ”โœ”โœ”
    104Linux core activeIs the systemโ€™s Linux core active?boolean0: False
    1: True
    -
    โŒโŒโŒโœ”โœ”
    105Camera lens typeCamera lens type (reflects changes to setting 162 or setting 189)integer0: Default
    1: Max Lens
    2: Max Lens 2.0
    -
    โœ”โœ”โœ”โœ”โœ”
    106Video hindsight capture activeIs Video Hindsight Capture Active?boolean0: False
    1: True
    -
    โœ”โŒโœ”โœ”โœ”
    107Scheduled presetScheduled Capture Preset IDinteger*โœ”โŒโœ”โœ”โœ”
    108Scheduled enabledIs Scheduled Capture set?boolean0: False
    1: True
    -
    โœ”โŒโœ”โœ”โœ”
    110Media mod statusMedia Mode Status (bitmasked)integer0: 000 = Selfie mod: 0, HDMI: 0, Media Mod Connected: False
    1: 001 = Selfie mod: 0, HDMI: 0, Media Mod Connected: True
    2: 010 = Selfie mod: 0, HDMI: 1, Media Mod Connected: False
    3: 011 = Selfie mod: 0, HDMI: 1, Media Mod Connected: True
    4: 100 = Selfie mod: 1, HDMI: 0, Media Mod Connected: False
    5: 101 = Selfie mod: 1, HDMI: 0, Media Mod Connected: True
    6: 110 = Selfie mod: 1, HDMI: 1, Media Mod Connected: False
    7: 111 = Selfie mod: 1, HDMI: 1, Media Mod Connected: True
    -
    โœ”โŒโœ”โœ”โœ”
    111Sd rating check errorDoes sdcard meet specified minimum write speed?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โŒ
    112Sd write speed errorNumber of sdcard write speed errors since device bootedinteger*โœ”โœ”โœ”โœ”โŒ
    113Turbo transferIs Turbo Transfer active?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โœ”
    114Camera control statusCamera control status IDinteger0: Camera Idle: No one is attempting to change camera settings
    1: Camera Control: Camera is in a menu or changing settings. To intervene, app must request control
    2: Camera External Control: An outside entity (app) has control and is in a menu or modifying settings
    -
    โœ”โœ”โœ”โœ”โŒ
    115Usb connectedIs the camera connected to a PC via USB?boolean0: False
    1: True
    -
    โœ”โœ”โœ”โœ”โŒ
    116Allow control over usbCamera control over USB stateinteger0: Disabled
    1: Enabled
    -
    โœ”โœ”โœ”>= v01.30.00โŒ
    117Total sd space kbTotal SD card capacity in Kilobytesinteger*โœ”โœ”โœ”โŒโŒ
    - -

    Preset Status Format

    -

    -Preset Status is returned as JSON, whose content is the serialization of the protobuf message: -NotifyPresetStatus. -Using Google protobuf APIs, the JSON can be converted back into a programmatic object in the user's language of choice. -

    - -

    Features

    - -

    Presets

    -

    -The camera organizes modes of operation into presets. -A preset is a logical wrapper around a specific camera mode, title, icon, and a set of settings that enhance different styles of capturing media. -

    - -

    -Depending on the camera's state, different collections of presets will be available for immediate loading and use. -Below is a table of settings that affect the current preset collection and thereby which presets can be loaded: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDSetting
    162Max Lens
    173Video Performance Mode
    175Controls
    177Enable Night Photo
    180Video Mode
    186Video Mode
    187Lapse Mode
    189Max Lens Mod
    190Max Lens Mod Enable
    191Photo Mode
    - -

    -To determine which presets are available for immediate use, get Preset Status. -

    - -

    Preset Status

    -

    -All cameras support basic query and subscription mechanics that allow the user to: -

    - -
      -
    • Get hierarchical data describing the Preset Groups, Presets, and Settings that are available in the camera's current state
    • - -
    - -

    -Preset Status should not be confused with camera status: -

    -
      -
    • Preset Status contains information about current preset groups and presets
    • -
    • Camera status contains numerous statuses about current settings and camera system state
    • -
    - - -

    Preset Groups

    -

    -Each Preset Group contains an ID, whether additional presets can be added, and an array of existing Presets. -

    - -

    Presets

    -

    -Each Preset contains information about its ID, associated core mode, title, icon, whether it's a user-defined preset, -whether the preset has been modified from its factory-default state (for factory-default presets only) and an array of -Settings associated with the Preset. -

    - -

    -Important Note: The Preset ID is required to load a Preset via the Presets: Load command. -

    - -

    Global Behaviors

    -

    -In order to prevent undefined behavior between the camera and a connected app, simultaneous use of the camera and a -connected app is discouraged. -

    - -

    -Best practice for synchronizing user/app control is to use the Set Camera Control Status command and -corresponding Camera Control Status (CCS) camera statuses in alignment with the finite state machine below: -

    - -IDLEControl Status: IdleCAMERA_CONTROLControl Status: Camera ControlEXTERNAL_CONTROLControl Status: External ControlApp sets CCS: IdleUser interacts with cameraUser returns camera to idle screenApp sets CCS: IdleApp sets CCS: External ControlApp sets CCS: IdleUser interacts with cameraUser interacts with cameraApp sets CCS: External ControlUser interacts with camera - - - - - - - - - - - - - - - - - - - - -
    Control StatusID
    IDLE0
    CONTROL1
    EXTERNAL_CONTROL2
    - -

    Set Camera Control Status

    -

    -This command is used to tell the camera that the app (i.e. External Control) wishes to claim control of the camera. -This causes the camera to immediately exit any contextual menus and return to the idle screen. -Any interaction with the camera's physical buttons will cause the camera to reclaim control and update control status accordingly. -If the user returns the camera UI to the idle screen, the camera updates control status to Idle. -

    - -

    -Note: -

    -
      -
    • The entity currently claiming control of the camera is advertised in camera status 114
    • -
    • Information about whether the camera is in a contextual menu or not is advertised in camera status 63.
    • -
    - - -

    OTA Update

    - -

    -The Over The Air (OTA) update feature allows the user to update the camera's firmware via HTTP connection. -There are two ways to perform OTA updates: Simple OTA Update and Resumable OTA Update. -

    - -

    -Firmware update files can be obtained from GoPro's update page or programmatically using the -firmware catalog. -

    - -

    -Note: In order to complete the firmware update process, the camera will reboot one or more times. -This will cause any existing HTTP connections to be lost. -

    - -

    Simple OTA Update

    -

    -The simple OTA update process is done by sending an entire update file to the camera in a single HTTP/POST. -Details can be found in the diagram below. -

    - -Simple OTA UpdateClientClientCameraCameraObtain UPDATE.zip from update page or firmware catalogCalculate SHA1_HASH for UPDATE.zipHTTP/POST: /gp/gpUpdateContent-Type: multipart/form-dataData:DirectToSD=1update=1sha1=<SHA1_HASH>file=<UPDATE.zip>HTTP/200 (OK)JSON: { "status":"0" }WiFi connection terminatesCamera displays "Update Complete" OSD, reboots 1-2 times - -

    Resumable OTA Update

    -

    -The resumable OTA update process involves uploading chunks (or all) of a file, marking the file complete and then telling the camera to begin the update process. -Chunks are stored until they are explicitly deleted, allowing the client to stop and resume as needed. -Details can be found in the diagram below. -

    - -Resumable OTA UpdateClientClientCameraCameraObtain UPDATE.zip from update page or firmware catalogCalculate SHA1_HASH for UPDATE.zipHTTP/GET: /gp/gpSoftUpdate?request=deleteDelete any old/cached dataHTTP/200 (OK)JSON {"status":0,"message":"OK","sha1":"","bytes_complete":0,"complete":false}HTTP/GET: /gp/gpSoftUpdate?request=showuiDisplay update OSD on camera UI (optional)HTTP/200 (OK)JSON: {"status":0,"message":"OK","sha1":"","bytes_complete":0,"complete":false}loop[read CHUNK_BYTES of UPDATE.zip, starting at OFFSET]HTTP/POST: /gp/gpSoftUpdateContent-Type: multipart/form-dataData:sha1=<SHA1_HASH>offset=<OFFSET>file=<CHUNK_BYTES>HTTP/200 (OK)JSON: {"status": 0,"message": "OK","sha1": "SHA1_HASH","bytes_complete": (total uploaded bytes),"complete": false}HTTP/POST: /gp/gpSoftUpdateContent-Type: multipart/form-dataData:sha1=<SHA1_HASH>complete=trueHTTP/200 (OK)JSON: {"status":0,"message":"OK","sha1":"SHA1_HASH","bytes_complete":(size of UPDATE.zip),"complete":true}HTTP/GET: /gp/gpSoftUpdate?request=startStart updating firmwareHTTP/200 (OK)JSON: {"status":0,"message":"OK","sha1":"SHA1_HASH","bytes_complete":(size of UPDATE.zip),"complete":true}loop[while camera updates firmware]HTTP/GET: /gp/gpSoftUpdate?request=progressJSON: {"status":11,"message":"Firmware update in progress"}WiFi connection lostCamera displays OSD "Update Complete", reboots 1-2 times - -

    OTA Update Status Codes

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IDStatusDescription
    0OkNo errors occurred
    1Unknown RequestServer did not recognize the request
    2Bad ParamsParameter values not recognized
    3SHA1 Send MismatchSHA1 for chunk did not match SHA1 of previous chunk(s)
    4SHA1 Calculates MismatchCalculated SHA1 did not match user-specified SHA1
    5HTTP Boundary ErrorHTTP Post malformed
    6HTTP Post ErrorUnexpected HTTP/POST Content Type
    7Server BusyHTTP server is busy
    8Offset MismatchTried to upload chunk with offset that did not align with previous chunk
    9Bad Post DataServer failed to parse POST data
    10File IncompleteTried to start update before server finished validating .zip file
    11Update in ProgressFirmware update in progress
    12Insufficient SpaceInsufficient space on the sdcard to hold (decompressed) update file
    - -

    Webcam

    - -

    -The webcam feature enables developers who are interested in writing custom drivers to broadcast the camera's video preview with a limited set of resolution, field of view, port, and protocol options. -

    - -

    -While active, the webcam feature sends raw data to the connected client using a supported protocol. -To enable multi-cam support, some cameras support running on a user-specified port. -Protocol and port details are provided in a table below. -

    - -

    -To test basic functionality, start the webcam, and use an application such as VLC to open a network stream: -

    - - - - - - - - - - - - - - - -
    ProtocolVLC Network URL
    TSudp://@:{PORT}
    RTSPrtsp://{CAMERA_IP}:554/live
    - - -

    -For readers interested in using a GoPro camera as a webcam with preexisting tools, please see How to use GoPro as a Webcam. -

    - -

    Webcam Finite State Machine

    -PREREQUISITEWired USB Control disabledREADYWebcam ready to startStatus is either OFF (0) or IDLE (1)High Power PreviewStatus: 2Low Power PreviewStatus: 3Connect USB to cameraStopExitStartStopExitPreviewStopExitStartPreviewStartPreview - -

    Webcam Commands

    -

    -Note: For USB connections, prior to issuing webcam commands, Wired USB Control should be disabled. -For details about how to send this and webcam commands, see Commands Quick Reference. -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CommandConnectionsDescription
    Webcam: StartUSB, WIFI*Enters webcam mode, uses default resolution and last-used fov, starts high-res stream to the IP address of caller
    Webcam: Start (with args)USB, WIFI*Enters webcam mode, uses specified res/fov/protocol/port, starts streaming to the IP address of caller
    Webcam: PreviewUSB, WIFI*Enters webcam mode, sets stream resolution and bitrate, starts low-res stream to the IP address of caller.
    Can set Webcam Digital Lenses and Digital Zoom levels while streaming
    Webcam: StopUSB, WIFI*Stops the webcam stream
    Webcam: ExitUSB, WIFI*Stops the webcam stream and exits webcam mode
    Webcam: StatusUSB, WIFIReturns the current state of the webcam endpoint, including status and error codes (see tables below)
    Webcam: VersionUSB, WIFIProvides version information about webcam implementation in JSON format
    -

    * Indicates that connection is supported in HERO12 Black v01.10.00 and newer versions/models

    - -

    Status Codes

    - - - - - - - - - - - - - - - - - - - - - - - -
    StatusCode
    OFF0
    IDLE1
    HIGH_POWER_PREVIEW2
    LOW_POWER_PREVIEW3
    - -

    Error Codes

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    StatusCode
    NONE0
    SET_PRESET1
    SET_WINDOW_SIZE2
    EXEC_STREAM3
    SHUTTER4
    COM_TIMEOUT5
    INVALID_PARAM6
    UNAVAILABLE7
    EXIT8
    - -

    Webcam Capabilities

    - -

    -Webcam supports setting resolution and field of view. -Changing other settings while in IDLE state such as Hypersmooth may succeed but are not officially supported. -

    - -

    -There is a known issue on some cameras in which the webcam status will be wrongly reported as IDLE instead of OFF after a new USB connection. -The best workaround for this is to call Webcam: Start followed by the Webcam: Stop after connecting USB in order to attain the true IDLE state. -

    - -

    Default Parameter Values

    - - - - - - - - - - - - - - - - - - - -
    ParameterDefault Value
    res12 (1080p)
    fovLast-used or 0 (Wide) if FOV not previously set
    protocolโ€œTSโ€
    - -

    Webcam Capabilities

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CameraResolutionFOV
    HERO12 Black720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    HERO11 Black720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    HERO10 Black480p (id: 4)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    HERO9 Black480p (id: 4)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    720p (id: 7)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    1080p (id: 12)Wide (id: 0), Narrow (id: 2), Superview (id: 3), Linear (id: 4)
    - -

    Supported Protocols

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CameraProtocolDefault PortSupports User-Defined Port?
    HERO12 BlackTS8554โœ”
    RTSP554โŒ
    HERO11 BlackTS8554โœ”
    HERO10 BlackTS8554โŒ
    HERO9 BlackTS8554โŒ
    - -

    Webcam Stabilization

    - -

    -Should the client require stabilization, the Hypersmooth setting can be used while in the state: READY (Status: OFF). -This setting can only be set while webcam is disabled, which requires either sending the Webcam: Exit command or reseating the USB-C connection to the camera. -

    - -

    -Note: The Low Hypersmooth option provides lower/lighter stabilization when used in Webcam mode vs other camera modes. -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CameraVersionSupported Hypersmooth Options
    HERO12 Blackv01.10.00+Off (id: 0), Low (id: 1), Auto Boost (id: 4)
    HERO11 Black Miniv01.10.00+Off (id: 0), Low (id: 1), Boost (id: 3), Auto Boost (id: 4)
    HERO11 Blackv01.10.00+Off (id: 0), Low (id: 1), Boost (id: 3), Auto Boost (id: 4)
    HERO10 Blackv01.10.00+Off (id: 0), High (id: 2), Boost (id: 3), Standard (id: 100)
    HERO9 Blackv01.70.00+Off (id: 0), Low (id: 1), High (id: 2), Boost (id: 3)
    - -

    Camera On the Home Network (COHN)

    -

    -Some cameras support Camera On the Home Network (COHN). -This capability allows the client to perform command and control with the camera indirectly through an access point such as a router at home. -For security purposes, all communications are performed over HTTPS. -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CameraSupported
    HERO12 Blackโœ”
    HERO11 Black MiniโŒ
    HERO11 BlackโŒ
    HERO10 BlackโŒ
    HERO9 BlackโŒ
    - -

    Provisioning COHN

    -

    -In order to use the COHN capability, the camera must first be provisioned for COHN. -For instructions on how to do this, see Open GoPro BLE spec. -

    - -

    Send Messages via HTTPS

    -

    -Once the camera is provisioned, the client can issue -commands -and set settings -via HTTPS using the COHN certificate and Basic authorization (username/password) credentials obtained during provisioning or subsequently by querying for COHN status. -

    - -

    HTTPS Headers

    - -

    -All HTTPS messages must contain Basic access authentication headers, using the username and password from the COHN status obtained during or after provisioning. -

    - -

    COHN Commands

    - -

    Command

    - - - - - - - - - - - - - - - - - - -
    CommandResponse FormatDescription
    /GoProRootCA.crtTextGet COHN cert
    /gopro/cohn/statusJSONGet current COHN status
    - -

    Get COHN Cert

    -

    -The /GoProRootCA.crt endpoint provides a way to obtain the COHN cert via HTTP(S). -The response content is in plain text. For example: -

    - -
    -----BEGIN CERTIFICATE-----
    -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ------END CERTIFICATE-----
    -
    - -

    Get COHN Status

    -

    -The /gopro/cohn/status endpoint provides a way to get the current status of COHN. -The status's format is NotifyCOHNStatus (a Google Procol Buffer v2 message) converted into JSON. -

    - -

    -Example: -

    -
    {
    - "status": "COHN_PROVISIONED",
    - "state": "COHN_STATE_NetworkConnected",
    - "username": "gopro",
    - "password": "xxxxxxxxxxxx",
    - "ipaddress": "xxx.xxx.xxx.xxx",
    - "enabled": true
    -}
    -
    - -

    Limitations

    - -

    HERO12 Black

    -
      -
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • -
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference -
    • -
    -

    HERO11 Black Mini

    -
      -
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • -
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference -
    • -
    -

    HERO11 Black

    -
      -
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • -
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference -
    • -
    -

    HERO10 Black

    -
      -
    • The camera will reject requests to change settings while encoding; for example, if Hindsight feature is active, the user cannot change settings
    • -
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference -
    • -
    -

    HERO9 Black

    -
      -
    • The HTTP server is not available while the camera is encoding, which means shutter controls are not supported over WiFi. This limitation can be overcome by using Bluetooth Low Energy for command and control and HTTP/REST for querying media content such as media list, media info, preview stream, etc.
    • -
    • USB command and control is not supported on HERO9 Black.
    • -
    • HTTP command arguments must be given in the order outlined in Commands Quick Reference -
    • -
    - -

    General

    - -
      -
    • Unless changed by the user, GoPro cameras will automatically power off after some time (e.g. 5min, 15min, 30min). The Auto Power Down watchdog timer can be reset by sending periodic keep-alive messages to the camera. It is recommended to send a keep-alive at least once every 120 seconds.
    • -
    • In general, querying the value for a setting that is not associated with the current preset/core mode results in an undefined value. For example, the user should not try to query the current Photo Digital Lenses (FOV) value while in Standard preset (Video mode).
    • -
    - - -
    - -
    - - - - - - - -
    - - - - -
    - - -
    - - - -
    - -
    - - -
    -
    -
    - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - + + + Open GoPro HTTP specs + + + + +

    + This page has been moved. If you are not redirected within 3 seconds, click + here to go to the HubSpot homepage. +

    + diff --git a/index.html b/index.html index 0dc37f84..17a4bfef 100644 --- a/index.html +++ b/index.html @@ -140,7 +140,7 @@ Tutorials
  • - Demos + Demos
  • FAQ @@ -252,7 +252,7 @@

    Docs

    BLE Specs โ†’
    - HTTP Spec โ†’ + HTTP Spec โ†’ @@ -331,7 +331,7 @@

    WiFi

    WiFi needs to be switched on by a BLE command. Besides command & control, Wi-Fi also allows for video streaming and media manipulation. With the exception of live-streaming, the camera always acts as an Wi-Fi access point that other devices need to connect to. For more information, see the -Wifi Specification

    +Wifi Specification

    USB

    diff --git a/protos.html b/protos.html index cb919e3e..03c77adb 100644 --- a/protos.html +++ b/protos.html @@ -1,3697 +1,16 @@ - + - - -Protocol Documentation : Open GoPro - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + Redirectingโ€ฆ + + + + - - - - - - - - -
    -
    -
    - -
    -
    -
    - - -
    - - - - - - - - - - - - - -
    - - - - - -
    - - - - - -
    - -
    -

    Protocol Documentation -

    - - - -
    - - -
    - - - -

    This page provides documentation for all of the protobuf message fields.

    - -

    Protobuf Files

    - - - -

    - -

    cohn.proto

    - -

    - -

    NotifyCOHNStatus

    -

    Current COHN status triggered by a RequestGetCOHNStatus

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    statusEnumCOHNStatusoptionalCurrent COHN status
    stateEnumCOHNNetworkStateoptionalCurrent COHN network state
    usernamestringoptionalUsername used for http basic auth header
    passwordstringoptionalPassword used for http basic auth header
    ipaddressstringoptionalCameraโ€™s IP address on the local network
    enabledbooloptionalIs COHN currently enabled
    ssidstringoptionalCurrently connected SSID
    macaddressstringoptionalMAC address of the wifi adapter
    - -

    - -

    RequestCOHNCert

    -

    Get the COHN certificate.

    - -

    Returns a @ref ResponseCOHNCert

    - -

    - -

    RequestClearCOHNCert

    -

    Clear the COHN certificate.

    - -

    Returns a @ref ResponseGeneric with the status of the clear

    - -

    - -

    RequestCreateCOHNCert

    -

    Create the COHN certificate.

    - -

    Returns a @ref ResponseGeneric with the status of the creation

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    overridebooloptionalOverride current provisioning and create new cert
    - -

    - -

    RequestGetCOHNStatus

    -

    Get the current COHN status.

    - -

    This always returns a @ref NotifyCOHNStatus

    - -

    Additionally, asynchronous updates can also be registerd to return more @ref NotifyCOHNStatus when a value -changes.

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    register_cohn_statusbooloptional1 to register, 0 to unregister
    - -

    - -

    RequestSetCOHNSetting

    -

    Enable and disable COHN if provisioned

    - -

    Returns a @ref ResponseGeneric

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    cohn_activebooloptional1 to enable, 0 to disable
    - -

    - -

    ResponseCOHNCert

    -

    COHN Certificate response triggered by RequestCOHNCert

    - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    resultEnumResultGenericoptionalWas request successful?
    certstringoptionalRoot CA cert (ASCII text)
    - -

    - -

    - -

    EnumCOHNNetworkState

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    COHN_STATE_Init0ย 
    COHN_STATE_Error1ย 
    COHN_STATE_Exit2ย 
    COHN_STATE_Idle5ย 
    COHN_STATE_NetworkConnected27ย 
    COHN_STATE_NetworkDisconnected28ย 
    COHN_STATE_ConnectingToNetwork29ย 
    COHN_STATE_Invalid30ย 
    - -

    - -

    EnumCOHNStatus

    - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    COHN_UNPROVISIONED0ย 
    COHN_PROVISIONED1ย 
    - -

    - -

    - -

    - -

    - -

    live_streaming.proto

    - -

    - -

    NotifyLiveStreamStatus

    -

    Live Stream status

    - -

    Sent either:

    -
      -
    • as a syncrhonous response to initial @ref RequestGetLiveStreamStatus
    • -
    • as asynchronous notifications registered for via @ref RequestGetLiveStreamStatus
    • -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    live_stream_statusEnumLiveStreamStatusoptionalLive stream status
    live_stream_errorEnumLiveStreamErroroptionalLive stream error
    live_stream_encodebooloptionalIs live stream encoding?
    live_stream_bitrateint32optionalLive stream bitrate (Kbps)
    live_stream_window_size_supported_arrayEnumWindowSizerepeatedList of supported resolutions returned when live stream is registered or requested
    - -
      -
    1. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      register โ€“> camera 2. register response (with capabilities) โ€“> mobile 3. async notifications (without capabilities) โ€“> mobileย ย ย ย 
      ย live_stream_encode_supportedbooloptionalDoes the camera support encoding while live streaming?
      ย live_stream_max_lens_unsupportedbooloptionalIs the Max Lens feature NOT supported?
      ย live_stream_minimum_stream_bitrateint32optionalCamera-defined minimum bitrate (static) (Kbps)
      ย live_stream_maximum_stream_bitrateint32optionalCamera-defined maximum bitrate (static) (Kbps)
      ย live_stream_lens_supportedbooloptionalDoes camera support setting lens for live streaming?
      ย live_stream_lens_supported_arrayEnumLensrepeatedArray of supported lenses for live streaming
      -
    2. -
    - -

    - -

    RequestGetLiveStreamStatus

    -

    Get the current livestream status (and optionally register for future status changes)

    - -

    Both current status and future status changes are sent via @ref NotifyLiveStreamStatus

    - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    register_live_stream_statusEnumRegisterLiveStreamStatusrepeatedArray of live stream statuses to be notified about
    unregister_live_stream_statusEnumRegisterLiveStreamStatusrepeatedArray of live stream statuses to stop being notified about
    - -

    - -

    RequestSetLiveStreamMode

    -

    Configure lives streaming

    - -

    The current livestream status can be queried via @ref RequestGetLiveStreamStatus

    - -

    TODO What is the response?

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    urlstringoptionalRTMP(S) URL used for live stream
    encodebooloptionalSave media to sdcard while streaming?
    window_sizeEnumWindowSizeoptionalLive stream resolution
    certbytesoptionalCertificate for servers that require it
    minimum_bitrateint32optionalMinimum desired bitrate (may or may not be honored)
    maximum_bitrateint32optionalMaximum desired bitrate (may or may not be honored)
    starting_bitrateint32optionalStarting bitrate
    lensEnumLensoptionalLens to use for live stream (see NotifyLiveStreamStatus.live_stream_lens_supported)
    - -

    - -

    - -

    EnumLens

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    LENS_WIDE0ย 
    LENS_LINEAR4ย 
    LENS_SUPERVIEW3ย 
    - -

    - -

    EnumLiveStreamError

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    LIVE_STREAM_ERROR_NONE0No error (success)
    LIVE_STREAM_ERROR_NETWORK1General network error during the stream
    LIVE_STREAM_ERROR_CREATESTREAM2Startup error: bad URL or valid with live stream server
    LIVE_STREAM_ERROR_OUTOFMEMORY3Not enough memory on camera to complete task
    LIVE_STREAM_ERROR_INPUTSTREAM4Failed to get stream from low level camera system
    LIVE_STREAM_ERROR_INTERNET5No internet access detected on startup of streamer
    LIVE_STREAM_ERROR_OSNETWORK6Error occured in linux networking stack. usually means the server closed the connection
    LIVE_STREAM_ERROR_SELECTEDNETWORKTIMEOUT7Timed out attemping to connect to the wifi network when attemping live stream
    LIVE_STREAM_ERROR_SSL_HANDSHAKE8SSL handshake failed (commonly caused due to incorrect time / time zone)
    LIVE_STREAM_ERROR_CAMERA_BLOCKED9Low level camera system rejected attempt to start live stream
    LIVE_STREAM_ERROR_UNKNOWN10Unknown
    LIVE_STREAM_ERROR_SD_CARD_FULL40Can not perform livestream because sd card is full
    LIVE_STREAM_ERROR_SD_CARD_REMOVED41Livestream stopped because sd card was removed
    - -

    - -

    EnumLiveStreamStatus

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    LIVE_STREAM_STATE_IDLE0Initial status. Livestream has not yet been configured
    LIVE_STREAM_STATE_CONFIG1Livestream is being configured
    LIVE_STREAM_STATE_READY2Livestream has finished configuration and is ready to start streaming
    LIVE_STREAM_STATE_STREAMING3Livestream is actively streaming
    LIVE_STREAM_STATE_COMPLETE_STAY_ON4Live stream is exiting. No errors occured.
    LIVE_STREAM_STATE_FAILED_STAY_ON5Live stream is exiting. An error occurred.
    LIVE_STREAM_STATE_RECONNECTING6An error occurred during livestream and stream is attempting to reconnect.
    - -

    - -

    EnumRegisterLiveStreamStatus

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    REGISTER_LIVE_STREAM_STATUS_STATUS1ย 
    REGISTER_LIVE_STREAM_STATUS_ERROR2ย 
    REGISTER_LIVE_STREAM_STATUS_MODE3ย 
    REGISTER_LIVE_STREAM_STATUS_BITRATE4ย 
    - -

    - -

    EnumWindowSize

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    WINDOW_SIZE_4804ย 
    WINDOW_SIZE_7207ย 
    WINDOW_SIZE_108012ย 
    - -

    - -

    - -

    - -

    - -

    network_management.proto

    - -

    - -

    NotifProvisioningState

    -

    Provision state notification

    - -

    TODO refernce where this is triggered

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    provisioning_stateEnumProvisioningrequiredProvisioning / connection state
    - -

    - -

    NotifStartScanning

    -

    Scanning state notification

    - -

    Triggered via @ref RequestStartScan

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    scanning_stateEnumScanningrequiredScanning state
    scan_idint32optionalID associated with scan results (included if scan was successful)
    total_entriesint32optionalNumber of APs found during scan (included if scan was successful)
    total_configured_ssidint32requiredTotal count of cameraโ€™s provisioned SSIDs
    - -

    - -

    RequestConnect

    -

    Connect to (but do not authenticate with) an Access Point

    - -

    This is intended to be used to connect to a previously-connected Access Point

    - -

    Response: @ref ResponseConnect

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    ssidstringrequiredAP SSID
    - -

    - -

    RequestConnectNew

    -

    Connect to and authenticate with an Access Point

    - -

    This is only intended to be used if the AP is not previously provisioned.

    - -

    Response: @ref ResponseConnectNew sent immediately

    - -

    Notification: @ref NotifProvisioningState sent periodically as provisioning state changes

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    ssidstringrequiredAP SSID
    passwordstringrequiredAP password
    static_ipbytesoptionalStatic IP address
    gatewaybytesoptionalGateway IP address
    subnetbytesoptionalSubnet mask
    dns_primarybytesoptionalPrimary DNS
    dns_secondarybytesoptionalSecondary DNS
    - -

    - -

    RequestGetApEntries

    -

    Get a list of Access Points found during a @ref RequestStartScan

    - -

    Response: @ref ResponseGetApEntries

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    start_indexint32requiredUsed for paging. 0 <= start_index < @ref ResponseGetApEntries .total_entries
    max_entriesint32requiredUsed for paging. Value must be < @ref ResponseGetApEntries .total_entries
    scan_idint32requiredID corresponding to a set of scan results (i.e. @ref ResponseGetApEntries .scan_id)
    - -

    - -

    RequestReleaseNetwork

    -

    Request to disconnect from current AP network

    - -

    Response: @ref ResponseGeneric

    - -

    - -

    RequestStartScan

    -

    Start scanning for Access Points

    - -

    @note Serialization of this object is zero bytes.

    - -

    Response: @ref ResponseStartScanning are sent immediately after the camera receives this command

    - -

    Notifications: @ref NotifStartScanning are sent periodically as scanning state changes. Use to detect scan complete.

    - -

    - -

    ResponseConnect

    -

    The status of an attempt to connect to an Access Point

    - -

    Sent as the initial response to @ref RequestConnect

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    resultEnumResultGenericrequiredGeneric pass/fail/error info
    provisioning_stateEnumProvisioningrequiredProvisioning/connection state
    timeout_secondsint32requiredNetwork connection timeout (seconds)
    - -

    - -

    ResponseConnectNew

    -

    The status of an attempt to connect to an Access Point

    - -

    Sent as the initial response to @ref RequestConnectNew

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    resultEnumResultGenericrequiredStatus of Connect New request
    provisioning_stateEnumProvisioningrequiredCurrent provisioning state of the network
    timeout_secondsint32requirednumber of seconds camera will wait before declaring a network connection attempt failed.
    - -

    - -

    ResponseGetApEntries

    -

    A list of scan entries describing a scanned Access Point

    - -

    This is sent in response to a @ref RequestGetApEntries

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    resultEnumResultGenericrequiredGeneric pass/fail/error info
    scan_idint32requiredID associated with this batch of results
    entriesResponseGetApEntries.ScanEntryrepeatedArray containing details about discovered APs
    - -

    - -

    ResponseGetApEntries.ScanEntry

    -

    The individual Scan Entry model

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    ssidstringrequiredAP SSID
    signal_strength_barsint32requiredSignal strength (3 bars: >-70 dBm; 2 bars: >-85 dBm; 1 bar: <=-85 dBm)
    signal_frequency_mhzint32requiredSignal frequency (MHz)
    scan_entry_flagsint32requiredBitmasked value from @ref EnumScanEntryFlags
    - -

    - -

    ResponseStartScanning

    -

    The current scanning state.

    - -

    This is the initial response to a @ref RequestStartScan

    - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    resultEnumResultGenericrequiredGeneric pass/fail/error info
    scanning_stateEnumScanningrequiredScanning state
    - -

    - -

    - -

    EnumProvisioning

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    PROVISIONING_UNKNOWN0ย 
    PROVISIONING_NEVER_STARTED1ย 
    PROVISIONING_STARTED2ย 
    PROVISIONING_ABORTED_BY_SYSTEM3ย 
    PROVISIONING_CANCELLED_BY_USER4ย 
    PROVISIONING_SUCCESS_NEW_AP5ย 
    PROVISIONING_SUCCESS_OLD_AP6ย 
    PROVISIONING_ERROR_FAILED_TO_ASSOCIATE7ย 
    PROVISIONING_ERROR_PASSWORD_AUTH8ย 
    PROVISIONING_ERROR_EULA_BLOCKING9ย 
    PROVISIONING_ERROR_NO_INTERNET10ย 
    PROVISIONING_ERROR_UNSUPPORTED_TYPE11ย 
    - -

    - -

    EnumScanEntryFlags

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    SCAN_FLAG_OPEN0This network does not require authentication
    SCAN_FLAG_AUTHENTICATED1This network requires authentication
    SCAN_FLAG_CONFIGURED2This network has been previously provisioned
    SCAN_FLAG_BEST_SSID4ย 
    SCAN_FLAG_ASSOCIATED8camera is connected to this AP
    SCAN_FLAG_UNSUPPORTED_TYPE16ย 
    - -

    - -

    EnumScanning

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    SCANNING_UNKNOWN0ย 
    SCANNING_NEVER_STARTED1ย 
    SCANNING_STARTED2ย 
    SCANNING_ABORTED_BY_SYSTEM3ย 
    SCANNING_CANCELLED_BY_USER4ย 
    SCANNING_SUCCESS5ย 
    - -

    - -

    - -

    - -

    - -

    preset_status.proto

    - -

    - -

    NotifyPresetStatus

    -

    Current Preset status

    - -

    Sent either:

    -
      -
    • synchronously via initial response to @ref RequestGetPresetStatus
    • -
    • asynchronously when Preset change if registered in @rev RequestGetPresetStatus
    • -
    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    preset_group_arrayPresetGrouprepeatedArray of currently available Preset Groups
    - -

    - -

    Preset

    -

    An individual preset.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    idint32optionalPreset ID
    modeEnumFlatModeoptionalPreset flatmode ID
    title_idEnumPresetTitleoptionalPreset Title ID
    title_numberint32optionalPreset Title Number (e.g. 1/2/3 in Custom1, Custom2, Custom3)
    user_definedbooloptionalIs the Preset custom/user-defined?
    iconEnumPresetIconoptionalPreset Icon ID
    setting_arrayPresetSettingrepeatedArray of settings associated with this Preset
    is_modifiedbooloptionalHas Preset been modified from factory defaults? (False for user-defined Presets)
    is_fixedbooloptionalIs this Preset mutable?
    custom_namestringoptionalCustom string name given to this preset via @ref RequestCustomPresetUpdate
    - -

    - -

    PresetGroup

    -

    Preset Group meta information and contained Presets

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    idEnumPresetGroupoptionalPreset Group ID
    preset_arrayPresetrepeatedArray of Presets contained in this Preset Group
    can_add_presetbooloptionalIs there room in the group to add additional Presets?
    iconEnumPresetGroupIconoptionalThe icon to display for this preset group
    - -

    - -

    PresetSetting

    -

    Setting representation that comprises a @ref Preset

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    idint32optionalSetting ID
    valueint32optionalSetting value
    is_captionbooloptionalDoes this setting appear on the Preset โ€œpillโ€ in the camera UI?
    - -

    - -

    - -

    EnumFlatMode

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    FLAT_MODE_UNKNOWN-1ย 
    FLAT_MODE_PLAYBACK4ย 
    FLAT_MODE_SETUP5ย 
    FLAT_MODE_VIDEO12ย 
    FLAT_MODE_TIME_LAPSE_VIDEO13ย 
    FLAT_MODE_LOOPING15ย 
    FLAT_MODE_PHOTO_SINGLE16ย 
    FLAT_MODE_PHOTO17ย 
    FLAT_MODE_PHOTO_NIGHT18ย 
    FLAT_MODE_PHOTO_BURST19ย 
    FLAT_MODE_TIME_LAPSE_PHOTO20ย 
    FLAT_MODE_NIGHT_LAPSE_PHOTO21ย 
    FLAT_MODE_BROADCAST_RECORD22ย 
    FLAT_MODE_BROADCAST_BROADCAST23ย 
    FLAT_MODE_TIME_WARP_VIDEO24ย 
    FLAT_MODE_LIVE_BURST25ย 
    FLAT_MODE_NIGHT_LAPSE_VIDEO26ย 
    FLAT_MODE_SLOMO27ย 
    FLAT_MODE_IDLE28ย 
    FLAT_MODE_VIDEO_STAR_TRAIL29ย 
    FLAT_MODE_VIDEO_LIGHT_PAINTING30ย 
    FLAT_MODE_VIDEO_LIGHT_TRAIL31ย 
    - -

    - -

    EnumPresetGroup

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    PRESET_GROUP_ID_VIDEO1000ย 
    PRESET_GROUP_ID_PHOTO1001ย 
    PRESET_GROUP_ID_TIMELAPSE1002ย 
    PRESET_GROUP_ID_VIDEO_DUAL_LENS1003ย 
    PRESET_GROUP_ID_PHOTO_DUAL_LENS1004ย 
    PRESET_GROUP_ID_TIMELAPSE_DUAL_LENS1005ย 
    PRESET_GROUP_ID_SPECIAL1006ย 
    - -

    - -

    EnumPresetGroupIcon

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    PRESET_GROUP_VIDEO_ICON_ID0ย 
    PRESET_GROUP_PHOTO_ICON_ID1ย 
    PRESET_GROUP_TIMELAPSE_ICON_ID2ย 
    PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID3ย 
    PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID4ย 
    PRESET_GROUP_MAX_VIDEO_ICON_ID5ย 
    PRESET_GROUP_MAX_PHOTO_ICON_ID6ย 
    PRESET_GROUP_MAX_TIMELAPSE_ICON_ID7ย 
    - -

    - -

    EnumPresetIcon

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    PRESET_ICON_VIDEO0ย 
    PRESET_ICON_ACTIVITY1ย 
    PRESET_ICON_CINEMATIC2ย 
    PRESET_ICON_PHOTO3ย 
    PRESET_ICON_LIVE_BURST4ย 
    PRESET_ICON_BURST5ย 
    PRESET_ICON_PHOTO_NIGHT6ย 
    PRESET_ICON_TIMEWARP7ย 
    PRESET_ICON_TIMELAPSE8ย 
    PRESET_ICON_NIGHTLAPSE9ย 
    PRESET_ICON_SNAIL10ย 
    PRESET_ICON_VIDEO_211ย 
    PRESET_ICON_360_VIDEO12ย 
    PRESET_ICON_PHOTO_213ย 
    PRESET_ICON_PANORAMA14ย 
    PRESET_ICON_BURST_215ย 
    PRESET_ICON_TIMEWARP_216ย 
    PRESET_ICON_TIMELAPSE_217ย 
    PRESET_ICON_CUSTOM18ย 
    PRESET_ICON_AIR19ย 
    PRESET_ICON_BIKE20ย 
    PRESET_ICON_EPIC21ย 
    PRESET_ICON_INDOOR22ย 
    PRESET_ICON_MOTOR23ย 
    PRESET_ICON_MOUNTED24ย 
    PRESET_ICON_OUTDOOR25ย 
    PRESET_ICON_POV26ย 
    PRESET_ICON_SELFIE27ย 
    PRESET_ICON_SKATE28ย 
    PRESET_ICON_SNOW29ย 
    PRESET_ICON_TRAIL30ย 
    PRESET_ICON_TRAVEL31ย 
    PRESET_ICON_WATER32ย 
    PRESET_ICON_LOOPING33ย 
    PRESET_ICON_STARS34New custom icon (34 - 43)added for HERO 12
    PRESET_ICON_ACTION35ย 
    PRESET_ICON_FOLLOW_CAM36ย 
    PRESET_ICON_SURF37ย 
    PRESET_ICON_CITY38ย 
    PRESET_ICON_SHAKY39ย 
    PRESET_ICON_CHESTY40ย 
    PRESET_ICON_HELMET41ย 
    PRESET_ICON_BITE42ย 
    PRESET_ICON_MTB43ย 
    PRESET_ICON_MAX_VIDEO55Reserved 44 - 50 for Custom presets. Add icons below for new presets starting from 51
    PRESET_ICON_MAX_PHOTO56ย 
    PRESET_ICON_MAX_TIMEWARP57ย 
    PRESET_ICON_BASIC58ย 
    PRESET_ICON_ULTRA_SLO_MO59ย 
    PRESET_ICON_STANDARD_ENDURANCE60ย 
    PRESET_ICON_ACTIVITY_ENDURANCE61ย 
    PRESET_ICON_CINEMATIC_ENDURANCE62ย 
    PRESET_ICON_SLOMO_ENDURANCE63ย 
    PRESET_ICON_STATIONARY_164ย 
    PRESET_ICON_STATIONARY_265ย 
    PRESET_ICON_STATIONARY_366ย 
    PRESET_ICON_STATIONARY_467ย 
    PRESET_ICON_SIMPLE_SUPER_PHOTO70ย 
    PRESET_ICON_SIMPLE_NIGHT_PHOTO71ย 
    PRESET_ICON_HIGHEST_QUALITY_VIDEO73ย 
    PRESET_ICON_STANDARD_QUALITY_VIDEO74ย 
    PRESET_ICON_BASIC_QUALITY_VIDEO75ย 
    PRESET_ICON_STAR_TRAIL76ย 
    PRESET_ICON_LIGHT_PAINTING77ย 
    PRESET_ICON_LIGHT_TRAIL78ย 
    PRESET_ICON_FULL_FRAME79ย 
    PRESET_ICON_EASY_MAX_VIDEO80ย 
    PRESET_ICON_EASY_MAX_PHOTO81ย 
    PRESET_ICON_EASY_MAX_TIMEWARP82ย 
    PRESET_ICON_EASY_MAX_STAR_TRAIL83ย 
    PRESET_ICON_EASY_MAX_LIGHT_PAINTING84ย 
    PRESET_ICON_EASY_MAX_LIGHT_TRAIL85ย 
    PRESET_ICON_MAX_STAR_TRAIL89ย 
    PRESET_ICON_MAX_LIGHT_PAINTING90ย 
    PRESET_ICON_MAX_LIGHT_TRAIL91ย 
    PRESET_ICON_TIMELAPSE_PHOTO1000ย 
    PRESET_ICON_NIGHTLAPSE_PHOTO1001ย 
    - -

    - -

    EnumPresetTitle

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    PRESET_TITLE_ACTIVITY0ย 
    PRESET_TITLE_STANDARD1ย 
    PRESET_TITLE_CINEMATIC2ย 
    PRESET_TITLE_PHOTO3ย 
    PRESET_TITLE_LIVE_BURST4ย 
    PRESET_TITLE_BURST5ย 
    PRESET_TITLE_NIGHT6ย 
    PRESET_TITLE_TIME_WARP7ย 
    PRESET_TITLE_TIME_LAPSE8ย 
    PRESET_TITLE_NIGHT_LAPSE9ย 
    PRESET_TITLE_VIDEO10ย 
    PRESET_TITLE_SLOMO11ย 
    PRESET_TITLE_360_VIDEO12ย 
    PRESET_TITLE_PHOTO_213ย 
    PRESET_TITLE_PANORAMA14ย 
    PRESET_TITLE_360_PHOTO15ย 
    PRESET_TITLE_TIME_WARP_216ย 
    PRESET_TITLE_360_TIME_WARP17ย 
    PRESET_TITLE_CUSTOM18ย 
    PRESET_TITLE_AIR19ย 
    PRESET_TITLE_BIKE20ย 
    PRESET_TITLE_EPIC21ย 
    PRESET_TITLE_INDOOR22ย 
    PRESET_TITLE_MOTOR23ย 
    PRESET_TITLE_MOUNTED24ย 
    PRESET_TITLE_OUTDOOR25ย 
    PRESET_TITLE_POV26ย 
    PRESET_TITLE_SELFIE27ย 
    PRESET_TITLE_SKATE28ย 
    PRESET_TITLE_SNOW29ย 
    PRESET_TITLE_TRAIL30ย 
    PRESET_TITLE_TRAVEL31ย 
    PRESET_TITLE_WATER32ย 
    PRESET_TITLE_LOOPING33ย 
    PRESET_TITLE_STARS34New custom names (34 - 43)added for HERO 12
    PRESET_TITLE_ACTION35ย 
    PRESET_TITLE_FOLLOW_CAM36ย 
    PRESET_TITLE_SURF37ย 
    PRESET_TITLE_CITY38ย 
    PRESET_TITLE_SHAKY39ย 
    PRESET_TITLE_CHESTY40ย 
    PRESET_TITLE_HELMET41ย 
    PRESET_TITLE_BITE42ย 
    PRESET_TITLE_MTB43ย 
    PRESET_TITLE_360_TIMELAPSE51Reserved 44 - 50 for custom presets.
    PRESET_TITLE_360_NIGHT_LAPSE52ย 
    PRESET_TITLE_360_NIGHT_PHOTO53ย 
    PRESET_TITLE_PANO_TIME_LAPSE54ย 
    PRESET_TITLE_MAX_VIDEO55ย 
    PRESET_TITLE_MAX_PHOTO56ย 
    PRESET_TITLE_MAX_TIMEWARP57ย 
    PRESET_TITLE_BASIC58ย 
    PRESET_TITLE_ULTRA_SLO_MO59ย 
    PRESET_TITLE_STANDARD_ENDURANCE60ย 
    PRESET_TITLE_ACTIVITY_ENDURANCE61ย 
    PRESET_TITLE_CINEMATIC_ENDURANCE62ย 
    PRESET_TITLE_SLOMO_ENDURANCE63ย 
    PRESET_TITLE_STATIONARY_164ย 
    PRESET_TITLE_STATIONARY_265ย 
    PRESET_TITLE_STATIONARY_366ย 
    PRESET_TITLE_STATIONARY_467ย 
    PRESET_TITLE_SIMPLE_VIDEO68ย 
    PRESET_TITLE_SIMPLE_TIME_WARP69ย 
    PRESET_TITLE_SIMPLE_SUPER_PHOTO70ย 
    PRESET_TITLE_SIMPLE_NIGHT_PHOTO71ย 
    PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE72ย 
    PRESET_TITLE_HIGHEST_QUALITY73ย 
    PRESET_TITLE_EXTENDED_BATTERY74ย 
    PRESET_TITLE_LONGEST_BATTERY75ย 
    PRESET_TITLE_STAR_TRAIL76ย 
    PRESET_TITLE_LIGHT_PAINTING77ย 
    PRESET_TITLE_LIGHT_TRAIL78ย 
    PRESET_TITLE_FULL_FRAME79ย 
    PRESET_TITLE_MAX_LENS_VIDEO80ย 
    PRESET_TITLE_MAX_LENS_TIMEWARP81ย 
    PRESET_TITLE_STANDARD_QUALITY_VIDEO82ย 
    PRESET_TITLE_BASIC_QUALITY_VIDEO83ย 
    PRESET_TITLE_EASY_MAX_VIDEO84ย 
    PRESET_TITLE_EASY_MAX_PHOTO85ย 
    PRESET_TITLE_EASY_MAX_TIMEWARP86ย 
    PRESET_TITLE_EASY_MAX_STAR_TRAIL87ย 
    PRESET_TITLE_EASY_MAX_LIGHT_PAINTING88ย 
    PRESET_TITLE_EASY_MAX_LIGHT_TRAIL89ย 
    PRESET_TITLE_MAX_STAR_TRAIL90ย 
    PRESET_TITLE_MAX_LIGHT_PAINTING91ย 
    PRESET_TITLE_MAX_LIGHT_TRAIL92ย 
    PRESET_TITLE_HIGHEST_QUALITY_VIDEO93ย 
    PRESET_TITLE_USER_DEFINED_CUSTOM_NAME94ย 
    - -

    - -

    - -

    - -

    - -

    request_get_preset_status.proto

    - -

    - -

    RequestGetPresetStatus

    -

    Get preset status (and optionally register to be notified when it changes)

    - -

    Response: @ref NotifyPresetStatus sent immediately

    - -

    Notification: @ref NotifyPresetStatus sent periodically as preset status changes, if registered.

    - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    register_preset_statusEnumRegisterPresetStatusrepeatedArray of Preset statuses to be notified about
    unregister_preset_statusEnumRegisterPresetStatusrepeatedArray of Preset statuses to stop being notified about
    - -

    - -

    - -

    EnumRegisterPresetStatus

    - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    REGISTER_PRESET_STATUS_PRESET1Send notification when properties of a preset change
    REGISTER_PRESET_STATUS_PRESET_GROUP_ARRAY2Send notification when properties of a preset group change
    - -

    - -

    - -

    - -

    - -

    response_generic.proto

    - -

    - -

    ResponseGeneric

    -

    Generic Response used across most response / notification messages

    - -

    @ref EnumResultGeneric

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    resultEnumResultGenericrequiredGeneric pass/fail/error info
    - -

    - -

    - -

    EnumResultGeneric

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    RESULT_UNKNOWN0ย 
    RESULT_SUCCESS1ย 
    RESULT_ILL_FORMED2ย 
    RESULT_NOT_SUPPORTED3ย 
    RESULT_ARGUMENT_OUT_OF_BOUNDS4ย 
    RESULT_ARGUMENT_INVALID5ย 
    - -

    - -

    - -

    - -

    - -

    set_camera_control_status.proto

    - -

    - -

    RequestSetCameraControlStatus

    -

    Set Camera Control Status (as part of Global Behaviors feature)

    - -

    Response: @ref ResponseGeneric

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    camera_control_statusEnumCameraControlStatusrequiredDeclare who is taking control of the camera
    - -

    - -

    - -

    EnumCameraControlStatus

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    CAMERA_IDLE0ย 
    CAMERA_CONTROL1Can only be set by camera, not by app or third party
    CAMERA_EXTERNAL_CONTROL2ย 
    - -

    - -

    - -

    - -

    - -

    turbo_transfer.proto

    - -

    - -

    RequestSetTurboActive

    -

    Enable/disable display of โ€œTransferring Mediaโ€ UI

    - -

    Response: @ref ResponseGeneric

    - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    activeboolrequiredEnable or disable Turbo Transfer feature
    - -

    - -

    - -

    - -

    - -

    Scalar Value Types

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    .proto TypeNotesC++JavaPythonGoC#PHPRuby
    - doubleย doubledoublefloatfloat64doublefloatFloat
    - floatย floatfloatfloatfloat32floatfloatFloat
    - int32Uses variable-length encoding. Inefficient for encoding negative numbers โ€“ if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
    - int64Uses variable-length encoding. Inefficient for encoding negative numbers โ€“ if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
    - uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
    - uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
    - sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
    - sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
    - fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
    - fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
    - sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
    - sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
    - boolย boolbooleanbooleanboolboolbooleanTrueClass/FalseClass
    - stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
    - bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)
    - - -
    - -
    - - - - - - - -
    - - - - -
    - - -
    - - - -
    - -
    - - -
    -
    -
    - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - + +

    Redirectingโ€ฆ

    + Click here if you are not redirected. + diff --git a/protos/open_gopro.html b/protos/open_gopro.html new file mode 100644 index 00000000..a9d3559d --- /dev/null +++ b/protos/open_gopro.html @@ -0,0 +1,3266 @@ + + + + + + +open_gopro Protobuf Documentation : Open GoPro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + +
    + + + + + + + + + + + + + +
    + + + + + +
    + + + + + +
    + +
    +

    open_gopro Protobuf Documentation +

    + + +

    + + + + + + + + + + + + 21 minute read + + + +

    + + +
    + + +
    + + + +

    EnumCOHNNetworkState

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    COHN_STATE_Init0ย 
    COHN_STATE_Error1ย 
    COHN_STATE_Exit2ย 
    COHN_STATE_Idle5ย 
    COHN_STATE_NetworkConnected27ย 
    COHN_STATE_NetworkDisconnected28ย 
    COHN_STATE_ConnectingToNetwork29ย 
    COHN_STATE_Invalid30ย 
    + +

    EnumCOHNStatus

    + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    COHN_UNPROVISIONED0ย 
    COHN_PROVISIONED1ย 
    + +

    EnumCameraControlStatus

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    CAMERA_IDLE0ย 
    CAMERA_CONTROL1Can only be set by camera, not by app or third party
    CAMERA_EXTERNAL_CONTROL2ย 
    + +

    EnumFlatMode

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    FLAT_MODE_UNKNOWN-1ย 
    FLAT_MODE_PLAYBACK4ย 
    FLAT_MODE_SETUP5ย 
    FLAT_MODE_VIDEO12ย 
    FLAT_MODE_TIME_LAPSE_VIDEO13ย 
    FLAT_MODE_LOOPING15ย 
    FLAT_MODE_PHOTO_SINGLE16ย 
    FLAT_MODE_PHOTO17ย 
    FLAT_MODE_PHOTO_NIGHT18ย 
    FLAT_MODE_PHOTO_BURST19ย 
    FLAT_MODE_TIME_LAPSE_PHOTO20ย 
    FLAT_MODE_NIGHT_LAPSE_PHOTO21ย 
    FLAT_MODE_BROADCAST_RECORD22ย 
    FLAT_MODE_BROADCAST_BROADCAST23ย 
    FLAT_MODE_TIME_WARP_VIDEO24ย 
    FLAT_MODE_LIVE_BURST25ย 
    FLAT_MODE_NIGHT_LAPSE_VIDEO26ย 
    FLAT_MODE_SLOMO27ย 
    FLAT_MODE_IDLE28ย 
    FLAT_MODE_VIDEO_STAR_TRAIL29ย 
    FLAT_MODE_VIDEO_LIGHT_PAINTING30ย 
    FLAT_MODE_VIDEO_LIGHT_TRAIL31ย 
    + +

    EnumLens

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    LENS_WIDE0ย 
    LENS_LINEAR4ย 
    LENS_SUPERVIEW3ย 
    + +

    EnumLiveStreamError

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    LIVE_STREAM_ERROR_NONE0No error (success)
    LIVE_STREAM_ERROR_NETWORK1General network error during the stream
    LIVE_STREAM_ERROR_CREATESTREAM2Startup error: bad URL or valid with live stream server
    LIVE_STREAM_ERROR_OUTOFMEMORY3Not enough memory on camera to complete task
    LIVE_STREAM_ERROR_INPUTSTREAM4Failed to get stream from low level camera system
    LIVE_STREAM_ERROR_INTERNET5No internet access detected on startup of streamer
    LIVE_STREAM_ERROR_OSNETWORK6Error occured in linux networking stack. usually means the server closed the connection
    LIVE_STREAM_ERROR_SELECTEDNETWORKTIMEOUT7Timed out attemping to connect to the wifi network when attemping live stream
    LIVE_STREAM_ERROR_SSL_HANDSHAKE8SSL handshake failed (commonly caused due to incorrect time / time zone)
    LIVE_STREAM_ERROR_CAMERA_BLOCKED9Low level camera system rejected attempt to start live stream
    LIVE_STREAM_ERROR_UNKNOWN10Unknown
    LIVE_STREAM_ERROR_SD_CARD_FULL40Can not perform livestream because sd card is full
    LIVE_STREAM_ERROR_SD_CARD_REMOVED41Livestream stopped because sd card was removed
    + +

    EnumLiveStreamStatus

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    LIVE_STREAM_STATE_IDLE0Initial status. Livestream has not yet been configured
    LIVE_STREAM_STATE_CONFIG1Livestream is being configured
    LIVE_STREAM_STATE_READY2Livestream has finished configuration and is ready to start streaming
    LIVE_STREAM_STATE_STREAMING3Livestream is actively streaming
    LIVE_STREAM_STATE_COMPLETE_STAY_ON4Live stream is exiting. No errors occured.
    LIVE_STREAM_STATE_FAILED_STAY_ON5Live stream is exiting. An error occurred.
    LIVE_STREAM_STATE_RECONNECTING6An error occurred during livestream and stream is attempting to reconnect.
    + +

    EnumPresetGroup

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    PRESET_GROUP_ID_VIDEO1000ย 
    PRESET_GROUP_ID_PHOTO1001ย 
    PRESET_GROUP_ID_TIMELAPSE1002ย 
    + +

    EnumPresetGroupIcon

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    PRESET_GROUP_VIDEO_ICON_ID0ย 
    PRESET_GROUP_PHOTO_ICON_ID1ย 
    PRESET_GROUP_TIMELAPSE_ICON_ID2ย 
    PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID3ย 
    PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID4ย 
    PRESET_GROUP_MAX_VIDEO_ICON_ID5ย 
    PRESET_GROUP_MAX_PHOTO_ICON_ID6ย 
    PRESET_GROUP_MAX_TIMELAPSE_ICON_ID7ย 
    + +

    EnumPresetIcon

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    PRESET_ICON_VIDEO0ย 
    PRESET_ICON_ACTIVITY1ย 
    PRESET_ICON_CINEMATIC2ย 
    PRESET_ICON_PHOTO3ย 
    PRESET_ICON_LIVE_BURST4ย 
    PRESET_ICON_BURST5ย 
    PRESET_ICON_PHOTO_NIGHT6ย 
    PRESET_ICON_TIMEWARP7ย 
    PRESET_ICON_TIMELAPSE8ย 
    PRESET_ICON_NIGHTLAPSE9ย 
    PRESET_ICON_SNAIL10ย 
    PRESET_ICON_VIDEO_211ย 
    PRESET_ICON_PHOTO_213ย 
    PRESET_ICON_PANORAMA14ย 
    PRESET_ICON_BURST_215ย 
    PRESET_ICON_TIMEWARP_216ย 
    PRESET_ICON_TIMELAPSE_217ย 
    PRESET_ICON_CUSTOM18ย 
    PRESET_ICON_AIR19ย 
    PRESET_ICON_BIKE20ย 
    PRESET_ICON_EPIC21ย 
    PRESET_ICON_INDOOR22ย 
    PRESET_ICON_MOTOR23ย 
    PRESET_ICON_MOUNTED24ย 
    PRESET_ICON_OUTDOOR25ย 
    PRESET_ICON_POV26ย 
    PRESET_ICON_SELFIE27ย 
    PRESET_ICON_SKATE28ย 
    PRESET_ICON_SNOW29ย 
    PRESET_ICON_TRAIL30ย 
    PRESET_ICON_TRAVEL31ย 
    PRESET_ICON_WATER32ย 
    PRESET_ICON_LOOPING33ย 
    PRESET_ICON_BASIC58ย 
    PRESET_ICON_ULTRA_SLO_MO59ย 
    PRESET_ICON_STANDARD_ENDURANCE60ย 
    PRESET_ICON_ACTIVITY_ENDURANCE61ย 
    PRESET_ICON_CINEMATIC_ENDURANCE62ย 
    PRESET_ICON_SLOMO_ENDURANCE63ย 
    PRESET_ICON_STATIONARY_164ย 
    PRESET_ICON_STATIONARY_265ย 
    PRESET_ICON_STATIONARY_366ย 
    PRESET_ICON_STATIONARY_467ย 
    PRESET_ICON_SIMPLE_SUPER_PHOTO70ย 
    PRESET_ICON_SIMPLE_NIGHT_PHOTO71ย 
    PRESET_ICON_HIGHEST_QUALITY_VIDEO73ย 
    PRESET_ICON_STANDARD_QUALITY_VIDEO74ย 
    PRESET_ICON_BASIC_QUALITY_VIDEO75ย 
    PRESET_ICON_STAR_TRAIL76ย 
    PRESET_ICON_LIGHT_PAINTING77ย 
    PRESET_ICON_LIGHT_TRAIL78ย 
    PRESET_ICON_FULL_FRAME79ย 
    PRESET_ICON_TIMELAPSE_PHOTO1000ย 
    PRESET_ICON_NIGHTLAPSE_PHOTO1001ย 
    + +

    EnumPresetTitle

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    PRESET_TITLE_ACTIVITY0ย 
    PRESET_TITLE_STANDARD1ย 
    PRESET_TITLE_CINEMATIC2ย 
    PRESET_TITLE_PHOTO3ย 
    PRESET_TITLE_LIVE_BURST4ย 
    PRESET_TITLE_BURST5ย 
    PRESET_TITLE_NIGHT6ย 
    PRESET_TITLE_TIME_WARP7ย 
    PRESET_TITLE_TIME_LAPSE8ย 
    PRESET_TITLE_NIGHT_LAPSE9ย 
    PRESET_TITLE_VIDEO10ย 
    PRESET_TITLE_SLOMO11ย 
    PRESET_TITLE_PHOTO_213ย 
    PRESET_TITLE_PANORAMA14ย 
    PRESET_TITLE_TIME_WARP_216ย 
    PRESET_TITLE_CUSTOM18ย 
    PRESET_TITLE_AIR19ย 
    PRESET_TITLE_BIKE20ย 
    PRESET_TITLE_EPIC21ย 
    PRESET_TITLE_INDOOR22ย 
    PRESET_TITLE_MOTOR23ย 
    PRESET_TITLE_MOUNTED24ย 
    PRESET_TITLE_OUTDOOR25ย 
    PRESET_TITLE_POV26ย 
    PRESET_TITLE_SELFIE27ย 
    PRESET_TITLE_SKATE28ย 
    PRESET_TITLE_SNOW29ย 
    PRESET_TITLE_TRAIL30ย 
    PRESET_TITLE_TRAVEL31ย 
    PRESET_TITLE_WATER32ย 
    PRESET_TITLE_LOOPING33ย 
    PRESET_TITLE_BASIC58ย 
    PRESET_TITLE_ULTRA_SLO_MO59ย 
    PRESET_TITLE_STANDARD_ENDURANCE60ย 
    PRESET_TITLE_ACTIVITY_ENDURANCE61ย 
    PRESET_TITLE_CINEMATIC_ENDURANCE62ย 
    PRESET_TITLE_SLOMO_ENDURANCE63ย 
    PRESET_TITLE_STATIONARY_164ย 
    PRESET_TITLE_STATIONARY_265ย 
    PRESET_TITLE_STATIONARY_366ย 
    PRESET_TITLE_STATIONARY_467ย 
    PRESET_TITLE_SIMPLE_VIDEO68ย 
    PRESET_TITLE_SIMPLE_TIME_WARP69ย 
    PRESET_TITLE_SIMPLE_SUPER_PHOTO70ย 
    PRESET_TITLE_SIMPLE_NIGHT_PHOTO71ย 
    PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE72ย 
    PRESET_TITLE_HIGHEST_QUALITY73ย 
    PRESET_TITLE_EXTENDED_BATTERY74ย 
    PRESET_TITLE_LONGEST_BATTERY75ย 
    PRESET_TITLE_STAR_TRAIL76ย 
    PRESET_TITLE_LIGHT_PAINTING77ย 
    PRESET_TITLE_LIGHT_TRAIL78ย 
    PRESET_TITLE_FULL_FRAME79ย 
    PRESET_TITLE_STANDARD_QUALITY_VIDEO82ย 
    PRESET_TITLE_BASIC_QUALITY_VIDEO83ย 
    PRESET_TITLE_HIGHEST_QUALITY_VIDEO93ย 
    PRESET_TITLE_USER_DEFINED_CUSTOM_NAME94ย 
    + +

    EnumProvisioning

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    PROVISIONING_UNKNOWN0ย 
    PROVISIONING_NEVER_STARTED1ย 
    PROVISIONING_STARTED2ย 
    PROVISIONING_ABORTED_BY_SYSTEM3ย 
    PROVISIONING_CANCELLED_BY_USER4ย 
    PROVISIONING_SUCCESS_NEW_AP5ย 
    PROVISIONING_SUCCESS_OLD_AP6ย 
    PROVISIONING_ERROR_FAILED_TO_ASSOCIATE7ย 
    PROVISIONING_ERROR_PASSWORD_AUTH8ย 
    PROVISIONING_ERROR_EULA_BLOCKING9ย 
    PROVISIONING_ERROR_NO_INTERNET10ย 
    PROVISIONING_ERROR_UNSUPPORTED_TYPE11ย 
    + +

    EnumRegisterLiveStreamStatus

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    REGISTER_LIVE_STREAM_STATUS_STATUS1ย 
    REGISTER_LIVE_STREAM_STATUS_ERROR2ย 
    REGISTER_LIVE_STREAM_STATUS_MODE3ย 
    REGISTER_LIVE_STREAM_STATUS_BITRATE4ย 
    + +

    EnumRegisterPresetStatus

    + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    REGISTER_PRESET_STATUS_PRESET1Send notification when properties of a preset change
    REGISTER_PRESET_STATUS_PRESET_GROUP_ARRAY2Send notification when properties of a preset group change
    + +

    EnumResultGeneric

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    RESULT_UNKNOWN0ย 
    RESULT_SUCCESS1ย 
    RESULT_ILL_FORMED2ย 
    RESULT_NOT_SUPPORTED3ย 
    RESULT_ARGUMENT_OUT_OF_BOUNDS4ย 
    RESULT_ARGUMENT_INVALID5ย 
    RESULT_RESOURCE_NOT_AVAILABLE6ย 
    + +

    EnumScanEntryFlags

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    SCAN_FLAG_OPEN0x00This network does not require authentication
    SCAN_FLAG_AUTHENTICATED0x01This network requires authentication
    SCAN_FLAG_CONFIGURED0x02This network has been previously provisioned
    SCAN_FLAG_BEST_SSID0x04ย 
    SCAN_FLAG_ASSOCIATED0x08camera is connected to this AP
    SCAN_FLAG_UNSUPPORTED_TYPE0x10ย 
    + +

    EnumScanning

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    SCANNING_UNKNOWN0ย 
    SCANNING_NEVER_STARTED1ย 
    SCANNING_STARTED2ย 
    SCANNING_ABORTED_BY_SYSTEM3ย 
    SCANNING_CANCELLED_BY_USER4ย 
    SCANNING_SUCCESS5ย 
    + +

    EnumWindowSize

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameValueSummary
    WINDOW_SIZE_4804ย 
    WINDOW_SIZE_7207ย 
    WINDOW_SIZE_108012ย 
    + +

    Media

    + +

    A reusable model to represent a media file

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    folderoptionalstring1Directory that the media is contained in
    fileoptionalstring2Filename of media
    + +

    NotifProvisioningState

    + +

    Provision state notification

    + +

    TODO refernce where this is triggered

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    provisioning_staterequiredEnumProvisioning1Provisioning / connection state
    + +

    NotifStartScanning

    + +

    Scanning state notification

    + +

    Triggered via RequestStartScan

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    scanning_staterequiredEnumScanning1Scanning state
    scan_idoptionalint322ID associated with scan results (included if scan was successful)
    total_entriesoptionalint323Number of APs found during scan (included if scan was successful)
    total_configured_ssidrequiredint324Total count of cameraโ€™s provisioned SSIDs
    + +

    NotifyCOHNStatus

    + +

    Current COHN status triggered by a RequestGetCOHNStatus

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    statusoptionalEnumCOHNStatus1Current COHN status
    stateoptionalEnumCOHNNetworkState2Current COHN network state
    usernameoptionalstring3Username used for http basic auth header
    passwordoptionalstring4Password used for http basic auth header
    ipaddressoptionalstring5Cameraโ€™s IP address on the local network
    enabledoptionalbool6Is COHN currently enabled
    ssidoptionalstring7Currently connected SSID
    macaddressoptionalstring8MAC address of the wifi adapter
    + +

    NotifyLiveStreamStatus

    + +

    Live Stream status

    + +

    Sent either:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    live_stream_statusoptionalEnumLiveStreamStatus1Live stream status
    live_stream_erroroptionalEnumLiveStreamError2Live stream error
    live_stream_encodeoptionalbool3Is live stream encoding?
    live_stream_bitrateoptionalint324Live stream bitrate (Kbps)
    live_stream_window_size_supported_arrayrepeatedEnumWindowSize5Set of currently supported resolutions
    live_stream_encode_supportedoptionalbool6Does the camera support encoding while live streaming?
    live_stream_max_lens_unsupportedoptionalbool7Is the Max Lens feature NOT supported?
    live_stream_minimum_stream_bitrateoptionalint328Camera-defined minimum bitrate (static) (Kbps)
    live_stream_maximum_stream_bitrateoptionalint329Camera-defined maximum bitrate (static) (Kbps)
    live_stream_lens_supportedoptionalbool10Does camera support setting lens for live streaming?
    live_stream_lens_supported_arrayrepeatedEnumLens11Set of currently supported FOV options
    + +

    NotifyPresetStatus

    + +

    Current Preset status

    + +

    Sent either:

    +
      +
    • synchronously via initial response to RequestGetPresetStatus +
    • +
    • asynchronously when Preset change if registered in @rev RequestGetPresetStatus
    • +
    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    preset_group_arrayrepeatedPresetGroup1Array of currently available Preset Groups
    + +

    Preset

    + +

    An individual preset.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    idoptionalint321Preset ID
    modeoptionalEnumFlatMode2Preset flatmode ID
    title_idoptionalEnumPresetTitle3Preset Title ID
    title_numberoptionalint324Preset Title Number (e.g. 1/2/3 in Custom1, Custom2, Custom3)
    user_definedoptionalbool5Is the Preset custom/user-defined?
    iconoptionalEnumPresetIcon6Preset Icon ID
    setting_arrayrepeatedPresetSetting7Array of settings associated with this Preset
    is_modifiedoptionalbool8Has Preset been modified from factory defaults? (False for user-defined Presets)
    is_fixedoptionalbool9Is this Preset mutable?
    custom_nameoptionalstring10Custom string name given to this preset via RequestCustomPresetUpdate +
    + +

    PresetGroup

    + +

    Preset Group meta information and contained Presets

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    idoptionalEnumPresetGroup1Preset Group ID
    preset_arrayrepeatedPreset2Array of Presets contained in this Preset Group
    can_add_presetoptionalbool3Is there room in the group to add additional Presets?
    iconoptionalEnumPresetGroupIcon4The icon to display for this preset group
    + +

    PresetSetting

    + +

    Setting representation that comprises a Preset

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    idoptionalint321Setting ID
    valueoptionalint322Setting value
    is_captionoptionalbool3Does this setting appear on the Preset โ€œpillโ€ in the camera UI?
    + +

    RequestCOHNCert

    + +

    Get the COHN certificate.

    + +

    Returns a ResponseCOHNCert

    + +

    RequestClearCOHNCert

    + +

    Clear the COHN certificate.

    + +

    Returns a ResponseGeneric with the status of the clear

    + +

    RequestConnect

    + +

    Connect to (but do not authenticate with) an Access Point

    + +

    This is intended to be used to connect to a previously-connected Access Point

    + +

    Response: ResponseConnect

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    ssidrequiredstring1AP SSID
    + +

    RequestConnectNew

    + +

    Connect to and authenticate with an Access Point

    + +

    This is only intended to be used if the AP is not previously provisioned.

    + +

    Response: ResponseConnectNew sent immediately

    + +

    Notification: NotifProvisioningState sent periodically as provisioning state changes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    ssidrequiredstring1AP SSID
    passwordrequiredstring2AP password
    static_ipoptionalbytes3Static IP address
    gatewayoptionalbytes4Gateway IP address
    subnetoptionalbytes5Subnet mask
    dns_primaryoptionalbytes6Primary DNS
    dns_secondaryoptionalbytes7Secondary DNS
    + +

    RequestCreateCOHNCert

    + +

    Create the COHN certificate.

    + +

    Returns a ResponseGeneric with the status of the creation

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    overrideoptionalbool1Override current provisioning and create new cert
    + +

    RequestCustomPresetUpdate

    + +

    Request to update the active custom preset

    + +

    This only operates on the currently active Preset and will fail if the current + Preset is not custom.

    + +

    The use cases are:

    + +
      +
    1. Update the Custom Preset Icon +
        +
      • +icon_id is always optional and can always be passed
      • +
      +
    2. +
    + +

    and / or

    + +
      +
    1. Update the Custom Preset Title to aโ€ฆ +
        +
      • +Factory Preset Title: Set title_id to a non-94 value
      • +
      • +Custom Preset Name: Set title_id to 94 and specify a custom_name +
      • +
      +
    2. +
    + +

    Returns a ResponseGeneric with the status of the preset update request.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    title_idoptionalEnumPresetTitle1Preset Title ID The range of acceptable custom title IDโ€™s can be found in the initial NotifyPresetStatus response to RequestGetPresetStatus +
    custom_nameoptionalstring2utf-8 encoded target custom preset name
    icon_idoptionalEnumPresetIcon3Preset Icon ID The range of acceptable custom icon IDโ€™s can be found in the initial NotifyPresetStatus response to RequestGetPresetStatus +
    + +

    RequestGetApEntries

    + +

    Get a list of Access Points found during a RequestStartScan

    + +

    Response: ResponseGetApEntries

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    start_indexrequiredint321Used for paging. 0 <= start_index < ResponseGetApEntries .total_entries
    max_entriesrequiredint322Used for paging. Value must be < ResponseGetApEntries .total_entries
    scan_idrequiredint323ID corresponding to a set of scan results (i.e. ResponseGetApEntries .scan_id)
    + +

    RequestGetCOHNStatus

    + +

    Get the current COHN status.

    + +

    This always returns a NotifyCOHNStatus

    + +

    Additionally, asynchronous updates can also be registerd to return more NotifyCOHNStatus when a value + changes.

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    register_cohn_statusoptionalbool11 to register, 0 to unregister
    + +

    RequestGetLastCapturedMedia

    + +

    Get the last captured media filename

    + +

    Returns a ResponseLastCapturedMedia

    + +

    RequestGetLiveStreamStatus

    + +

    Get the current livestream status (and optionally register for future status changes)

    + +

    Both current status and future status changes are sent via NotifyLiveStreamStatus

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    register_live_stream_statusrepeatedEnumRegisterLiveStreamStatus1Array of live stream statuses to be notified about
    unregister_live_stream_statusrepeatedEnumRegisterLiveStreamStatus2Array of live stream statuses to stop being notified about
    + +

    RequestGetPresetStatus

    + +

    Get preset status (and optionally register to be notified when it changes)

    + +

    Response: NotifyPresetStatus sent immediately

    + +

    Notification: NotifyPresetStatus sent periodically as preset status changes, if registered.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    register_preset_statusrepeatedEnumRegisterPresetStatus1Array of Preset statuses to be notified about
    unregister_preset_statusrepeatedEnumRegisterPresetStatus2Array of Preset statuses to stop being notified about
    + +

    RequestReleaseNetwork

    + +

    Request to disconnect from current AP network

    + +

    Response: ResponseGeneric

    + +

    RequestSetCOHNSetting

    + +

    Enable and disable COHN if provisioned

    + +

    Returns a ResponseGeneric

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    cohn_activeoptionalbool11 to enable, 0 to disable
    + +

    RequestSetCameraControlStatus

    + +

    Set Camera Control Status (as part of Global Behaviors feature)

    + +

    Response: ResponseGeneric

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    camera_control_statusrequiredEnumCameraControlStatus1Declare who is taking control of the camera
    + +

    RequestSetLiveStreamMode

    + +

    Configure lives streaming

    + +

    The current livestream status can be queried via RequestGetLiveStreamStatus

    + +

    Response: ResponseGeneric

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    urloptionalstring1RTMP(S) URL used for live stream
    encodeoptionalbool2Save media to sdcard while streaming?
    window_sizeoptionalEnumWindowSize3Resolution to use for live stream The set of supported lenses is only available from the live_stream_window_size_supported_array in NotifyLiveStreamStatus)
    certoptionalbytes6Certificate for servers that require it
    minimum_bitrateoptionalint327Minimum desired bitrate (may or may not be honored)
    maximum_bitrateoptionalint328Maximum desired bitrate (may or may not be honored)
    starting_bitrateoptionalint329Starting bitrate
    lensoptionalEnumLens10Lens to use for live stream The set of supported lenses is only available from the live_stream_lens_supported_array in NotifyLiveStreamStatus)
    + +

    RequestSetTurboActive

    + +

    Enable/disable display of โ€œTransferring Mediaโ€ UI

    + +

    Response: ResponseGeneric

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    activerequiredbool1Enable or disable Turbo Transfer feature
    + +

    RequestStartScan

    + +

    Start scanning for Access Points

    + +
    +

    Serialization of this object is zero bytes.

    +
    + +

    Response: ResponseStartScanning are sent immediately after the camera receives this command

    + +

    Notifications: NotifStartScanning are sent periodically as scanning state changes. Use to detect scan complete.

    + +

    ResponseCOHNCert

    + +

    COHN Certificate response triggered by RequestCOHNCert

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultoptionalEnumResultGeneric1Was request successful?
    certoptionalstring2Root CA cert (ASCII text)
    + +

    ResponseConnect

    + +

    The status of an attempt to connect to an Access Point

    + +

    Sent as the initial response to RequestConnect

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultrequiredEnumResultGeneric1Generic pass/fail/error info
    provisioning_staterequiredEnumProvisioning2Provisioning/connection state
    timeout_secondsrequiredint323Network connection timeout (seconds)
    + +

    ResponseConnectNew

    + +

    The status of an attempt to connect to an Access Point

    + +

    Sent as the initial response to RequestConnectNew

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultrequiredEnumResultGeneric1Status of Connect New request
    provisioning_staterequiredEnumProvisioning2Current provisioning state of the network
    timeout_secondsrequiredint323number of seconds camera will wait before declaring a network connection attempt failed.
    + +

    ResponseGeneric

    + +

    Generic Response used across most response / notification messages

    + +

    EnumResultGeneric

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultrequiredEnumResultGeneric1Generic pass/fail/error info
    + +

    ResponseGetApEntries

    + +

    A list of scan entries describing a scanned Access Point

    + +

    This is sent in response to a RequestGetApEntries

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultrequiredEnumResultGeneric1Generic pass/fail/error info
    scan_idrequiredint322ID associated with this batch of results
    entriesrepeatedScanEntry3Array containing details about discovered APs
    + +

    ResponseLastCapturedMedia

    + +

    Message sent in response to a RequestGetLastCapturedMedia

    + +

    This contains the complete path of the last captured media. Depending on the type of media captured, it will return:

    + +
      +
    • Single photo / video: The single media path
    • +
    • Any grouped media: The path to the first captured media in the group
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultoptionalEnumResultGeneric1Was the request successful?
    mediaoptionalMedia2Last captured media if result is RESULT_SUCCESS. Invalid if result is RESULT_RESOURCE_NOT_AVAILBLE.
    + +

    ResponseStartScanning

    + +

    The current scanning state.

    + +

    This is the initial response to a RequestStartScan

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    resultrequiredEnumResultGeneric1Generic pass/fail/error info
    scanning_staterequiredEnumScanning2Scanning state
    + +

    ScanEntry

    + +

    The individual Scan Entry model

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypespecValue TypeValueSummary
    ssidrequiredstring1AP SSID
    signal_strength_barsrequiredint322Signal strength (3 bars: >-70 dBm; 2 bars: >-85 dBm; 1 bar: <=-85 dBm)
    signal_frequency_mhzrequiredint324Signal frequency (MHz)
    scan_entry_flagsrequiredint325Bitmasked value from EnumScanEntryFlags +
    + + +
    + +
    + + + + + + + +
    + + + + +
    + + +
    + + + +
    + +
    + + +
    +
    +
    + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/protos/open_gopro.md b/protos/open_gopro.md new file mode 100644 index 00000000..b0c24046 --- /dev/null +++ b/protos/open_gopro.md @@ -0,0 +1,839 @@ +# open_gopro Protobuf Documentation + + +## EnumCOHNNetworkState + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| COHN_STATE_Init | 0 | | +| COHN_STATE_Error | 1 | | +| COHN_STATE_Exit | 2 | | +| COHN_STATE_Idle | 5 | | +| COHN_STATE_NetworkConnected | 27 | | +| COHN_STATE_NetworkDisconnected | 28 | | +| COHN_STATE_ConnectingToNetwork | 29 | | +| COHN_STATE_Invalid | 30 | | + +## EnumCOHNStatus + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| COHN_UNPROVISIONED | 0 | | +| COHN_PROVISIONED | 1 | | + +## EnumCameraControlStatus + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| CAMERA_IDLE | 0 | | +| CAMERA_CONTROL | 1 | Can only be set by camera, not by app or third party | +| CAMERA_EXTERNAL_CONTROL | 2 | | + +## EnumFlatMode + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| FLAT_MODE_UNKNOWN | -1 | | +| FLAT_MODE_PLAYBACK | 4 | | +| FLAT_MODE_SETUP | 5 | | +| FLAT_MODE_VIDEO | 12 | | +| FLAT_MODE_TIME_LAPSE_VIDEO | 13 | | +| FLAT_MODE_LOOPING | 15 | | +| FLAT_MODE_PHOTO_SINGLE | 16 | | +| FLAT_MODE_PHOTO | 17 | | +| FLAT_MODE_PHOTO_NIGHT | 18 | | +| FLAT_MODE_PHOTO_BURST | 19 | | +| FLAT_MODE_TIME_LAPSE_PHOTO | 20 | | +| FLAT_MODE_NIGHT_LAPSE_PHOTO | 21 | | +| FLAT_MODE_BROADCAST_RECORD | 22 | | +| FLAT_MODE_BROADCAST_BROADCAST | 23 | | +| FLAT_MODE_TIME_WARP_VIDEO | 24 | | +| FLAT_MODE_LIVE_BURST | 25 | | +| FLAT_MODE_NIGHT_LAPSE_VIDEO | 26 | | +| FLAT_MODE_SLOMO | 27 | | +| FLAT_MODE_IDLE | 28 | | +| FLAT_MODE_VIDEO_STAR_TRAIL | 29 | | +| FLAT_MODE_VIDEO_LIGHT_PAINTING | 30 | | +| FLAT_MODE_VIDEO_LIGHT_TRAIL | 31 | | + +## EnumLens + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| LENS_WIDE | 0 | | +| LENS_LINEAR | 4 | | +| LENS_SUPERVIEW | 3 | | + +## EnumLiveStreamError + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| LIVE_STREAM_ERROR_NONE | 0 | No error (success) | +| LIVE_STREAM_ERROR_NETWORK | 1 | General network error during the stream | +| LIVE_STREAM_ERROR_CREATESTREAM | 2 | Startup error: bad URL or valid with live stream server | +| LIVE_STREAM_ERROR_OUTOFMEMORY | 3 | Not enough memory on camera to complete task | +| LIVE_STREAM_ERROR_INPUTSTREAM | 4 | Failed to get stream from low level camera system | +| LIVE_STREAM_ERROR_INTERNET | 5 | No internet access detected on startup of streamer | +| LIVE_STREAM_ERROR_OSNETWORK | 6 | Error occured in linux networking stack. usually means the server closed the connection | +| LIVE_STREAM_ERROR_SELECTEDNETWORKTIMEOUT | 7 | Timed out attemping to connect to the wifi network when attemping live stream | +| LIVE_STREAM_ERROR_SSL_HANDSHAKE | 8 | SSL handshake failed (commonly caused due to incorrect time / time zone) | +| LIVE_STREAM_ERROR_CAMERA_BLOCKED | 9 | Low level camera system rejected attempt to start live stream | +| LIVE_STREAM_ERROR_UNKNOWN | 10 | Unknown | +| LIVE_STREAM_ERROR_SD_CARD_FULL | 40 | Can not perform livestream because sd card is full | +| LIVE_STREAM_ERROR_SD_CARD_REMOVED | 41 | Livestream stopped because sd card was removed | + +## EnumLiveStreamStatus + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| LIVE_STREAM_STATE_IDLE | 0 | Initial status. Livestream has not yet been configured | +| LIVE_STREAM_STATE_CONFIG | 1 | Livestream is being configured | +| LIVE_STREAM_STATE_READY | 2 | Livestream has finished configuration and is ready to start streaming | +| LIVE_STREAM_STATE_STREAMING | 3 | Livestream is actively streaming | +| LIVE_STREAM_STATE_COMPLETE_STAY_ON | 4 | Live stream is exiting. No errors occured. | +| LIVE_STREAM_STATE_FAILED_STAY_ON | 5 | Live stream is exiting. An error occurred. | +| LIVE_STREAM_STATE_RECONNECTING | 6 | An error occurred during livestream and stream is attempting to reconnect. | + +## EnumPresetGroup + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| PRESET_GROUP_ID_VIDEO | 1000 | | +| PRESET_GROUP_ID_PHOTO | 1001 | | +| PRESET_GROUP_ID_TIMELAPSE | 1002 | | + +## EnumPresetGroupIcon + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| PRESET_GROUP_VIDEO_ICON_ID | 0 | | +| PRESET_GROUP_PHOTO_ICON_ID | 1 | | +| PRESET_GROUP_TIMELAPSE_ICON_ID | 2 | | +| PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID | 3 | | +| PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID | 4 | | +| PRESET_GROUP_MAX_VIDEO_ICON_ID | 5 | | +| PRESET_GROUP_MAX_PHOTO_ICON_ID | 6 | | +| PRESET_GROUP_MAX_TIMELAPSE_ICON_ID | 7 | | + +## EnumPresetIcon + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| PRESET_ICON_VIDEO | 0 | | +| PRESET_ICON_ACTIVITY | 1 | | +| PRESET_ICON_CINEMATIC | 2 | | +| PRESET_ICON_PHOTO | 3 | | +| PRESET_ICON_LIVE_BURST | 4 | | +| PRESET_ICON_BURST | 5 | | +| PRESET_ICON_PHOTO_NIGHT | 6 | | +| PRESET_ICON_TIMEWARP | 7 | | +| PRESET_ICON_TIMELAPSE | 8 | | +| PRESET_ICON_NIGHTLAPSE | 9 | | +| PRESET_ICON_SNAIL | 10 | | +| PRESET_ICON_VIDEO_2 | 11 | | +| PRESET_ICON_PHOTO_2 | 13 | | +| PRESET_ICON_PANORAMA | 14 | | +| PRESET_ICON_BURST_2 | 15 | | +| PRESET_ICON_TIMEWARP_2 | 16 | | +| PRESET_ICON_TIMELAPSE_2 | 17 | | +| PRESET_ICON_CUSTOM | 18 | | +| PRESET_ICON_AIR | 19 | | +| PRESET_ICON_BIKE | 20 | | +| PRESET_ICON_EPIC | 21 | | +| PRESET_ICON_INDOOR | 22 | | +| PRESET_ICON_MOTOR | 23 | | +| PRESET_ICON_MOUNTED | 24 | | +| PRESET_ICON_OUTDOOR | 25 | | +| PRESET_ICON_POV | 26 | | +| PRESET_ICON_SELFIE | 27 | | +| PRESET_ICON_SKATE | 28 | | +| PRESET_ICON_SNOW | 29 | | +| PRESET_ICON_TRAIL | 30 | | +| PRESET_ICON_TRAVEL | 31 | | +| PRESET_ICON_WATER | 32 | | +| PRESET_ICON_LOOPING | 33 | | +| PRESET_ICON_BASIC | 58 | | +| PRESET_ICON_ULTRA_SLO_MO | 59 | | +| PRESET_ICON_STANDARD_ENDURANCE | 60 | | +| PRESET_ICON_ACTIVITY_ENDURANCE | 61 | | +| PRESET_ICON_CINEMATIC_ENDURANCE | 62 | | +| PRESET_ICON_SLOMO_ENDURANCE | 63 | | +| PRESET_ICON_STATIONARY_1 | 64 | | +| PRESET_ICON_STATIONARY_2 | 65 | | +| PRESET_ICON_STATIONARY_3 | 66 | | +| PRESET_ICON_STATIONARY_4 | 67 | | +| PRESET_ICON_SIMPLE_SUPER_PHOTO | 70 | | +| PRESET_ICON_SIMPLE_NIGHT_PHOTO | 71 | | +| PRESET_ICON_HIGHEST_QUALITY_VIDEO | 73 | | +| PRESET_ICON_STANDARD_QUALITY_VIDEO | 74 | | +| PRESET_ICON_BASIC_QUALITY_VIDEO | 75 | | +| PRESET_ICON_STAR_TRAIL | 76 | | +| PRESET_ICON_LIGHT_PAINTING | 77 | | +| PRESET_ICON_LIGHT_TRAIL | 78 | | +| PRESET_ICON_FULL_FRAME | 79 | | +| PRESET_ICON_TIMELAPSE_PHOTO | 1000 | | +| PRESET_ICON_NIGHTLAPSE_PHOTO | 1001 | | + +## EnumPresetTitle + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| PRESET_TITLE_ACTIVITY | 0 | | +| PRESET_TITLE_STANDARD | 1 | | +| PRESET_TITLE_CINEMATIC | 2 | | +| PRESET_TITLE_PHOTO | 3 | | +| PRESET_TITLE_LIVE_BURST | 4 | | +| PRESET_TITLE_BURST | 5 | | +| PRESET_TITLE_NIGHT | 6 | | +| PRESET_TITLE_TIME_WARP | 7 | | +| PRESET_TITLE_TIME_LAPSE | 8 | | +| PRESET_TITLE_NIGHT_LAPSE | 9 | | +| PRESET_TITLE_VIDEO | 10 | | +| PRESET_TITLE_SLOMO | 11 | | +| PRESET_TITLE_PHOTO_2 | 13 | | +| PRESET_TITLE_PANORAMA | 14 | | +| PRESET_TITLE_TIME_WARP_2 | 16 | | +| PRESET_TITLE_CUSTOM | 18 | | +| PRESET_TITLE_AIR | 19 | | +| PRESET_TITLE_BIKE | 20 | | +| PRESET_TITLE_EPIC | 21 | | +| PRESET_TITLE_INDOOR | 22 | | +| PRESET_TITLE_MOTOR | 23 | | +| PRESET_TITLE_MOUNTED | 24 | | +| PRESET_TITLE_OUTDOOR | 25 | | +| PRESET_TITLE_POV | 26 | | +| PRESET_TITLE_SELFIE | 27 | | +| PRESET_TITLE_SKATE | 28 | | +| PRESET_TITLE_SNOW | 29 | | +| PRESET_TITLE_TRAIL | 30 | | +| PRESET_TITLE_TRAVEL | 31 | | +| PRESET_TITLE_WATER | 32 | | +| PRESET_TITLE_LOOPING | 33 | | +| PRESET_TITLE_BASIC | 58 | | +| PRESET_TITLE_ULTRA_SLO_MO | 59 | | +| PRESET_TITLE_STANDARD_ENDURANCE | 60 | | +| PRESET_TITLE_ACTIVITY_ENDURANCE | 61 | | +| PRESET_TITLE_CINEMATIC_ENDURANCE | 62 | | +| PRESET_TITLE_SLOMO_ENDURANCE | 63 | | +| PRESET_TITLE_STATIONARY_1 | 64 | | +| PRESET_TITLE_STATIONARY_2 | 65 | | +| PRESET_TITLE_STATIONARY_3 | 66 | | +| PRESET_TITLE_STATIONARY_4 | 67 | | +| PRESET_TITLE_SIMPLE_VIDEO | 68 | | +| PRESET_TITLE_SIMPLE_TIME_WARP | 69 | | +| PRESET_TITLE_SIMPLE_SUPER_PHOTO | 70 | | +| PRESET_TITLE_SIMPLE_NIGHT_PHOTO | 71 | | +| PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE | 72 | | +| PRESET_TITLE_HIGHEST_QUALITY | 73 | | +| PRESET_TITLE_EXTENDED_BATTERY | 74 | | +| PRESET_TITLE_LONGEST_BATTERY | 75 | | +| PRESET_TITLE_STAR_TRAIL | 76 | | +| PRESET_TITLE_LIGHT_PAINTING | 77 | | +| PRESET_TITLE_LIGHT_TRAIL | 78 | | +| PRESET_TITLE_FULL_FRAME | 79 | | +| PRESET_TITLE_STANDARD_QUALITY_VIDEO | 82 | | +| PRESET_TITLE_BASIC_QUALITY_VIDEO | 83 | | +| PRESET_TITLE_HIGHEST_QUALITY_VIDEO | 93 | | +| PRESET_TITLE_USER_DEFINED_CUSTOM_NAME | 94 | | + +## EnumProvisioning + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| PROVISIONING_UNKNOWN | 0 | | +| PROVISIONING_NEVER_STARTED | 1 | | +| PROVISIONING_STARTED | 2 | | +| PROVISIONING_ABORTED_BY_SYSTEM | 3 | | +| PROVISIONING_CANCELLED_BY_USER | 4 | | +| PROVISIONING_SUCCESS_NEW_AP | 5 | | +| PROVISIONING_SUCCESS_OLD_AP | 6 | | +| PROVISIONING_ERROR_FAILED_TO_ASSOCIATE | 7 | | +| PROVISIONING_ERROR_PASSWORD_AUTH | 8 | | +| PROVISIONING_ERROR_EULA_BLOCKING | 9 | | +| PROVISIONING_ERROR_NO_INTERNET | 10 | | +| PROVISIONING_ERROR_UNSUPPORTED_TYPE | 11 | | + +## EnumRegisterLiveStreamStatus + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| REGISTER_LIVE_STREAM_STATUS_STATUS | 1 | | +| REGISTER_LIVE_STREAM_STATUS_ERROR | 2 | | +| REGISTER_LIVE_STREAM_STATUS_MODE | 3 | | +| REGISTER_LIVE_STREAM_STATUS_BITRATE | 4 | | + +## EnumRegisterPresetStatus + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| REGISTER_PRESET_STATUS_PRESET | 1 | Send notification when properties of a preset change | +| REGISTER_PRESET_STATUS_PRESET_GROUP_ARRAY | 2 | Send notification when properties of a preset group change | + +## EnumResultGeneric + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| RESULT_UNKNOWN | 0 | | +| RESULT_SUCCESS | 1 | | +| RESULT_ILL_FORMED | 2 | | +| RESULT_NOT_SUPPORTED | 3 | | +| RESULT_ARGUMENT_OUT_OF_BOUNDS | 4 | | +| RESULT_ARGUMENT_INVALID | 5 | | +| RESULT_RESOURCE_NOT_AVAILABLE | 6 | | + +## EnumScanEntryFlags + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| SCAN_FLAG_OPEN | 0x00 | This network does not require authentication | +| SCAN_FLAG_AUTHENTICATED | 0x01 | This network requires authentication | +| SCAN_FLAG_CONFIGURED | 0x02 | This network has been previously provisioned | +| SCAN_FLAG_BEST_SSID | 0x04 | | +| SCAN_FLAG_ASSOCIATED | 0x08 | camera is connected to this AP | +| SCAN_FLAG_UNSUPPORTED_TYPE | 0x10 | | + +## EnumScanning + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| SCANNING_UNKNOWN | 0 | | +| SCANNING_NEVER_STARTED | 1 | | +| SCANNING_STARTED | 2 | | +| SCANNING_ABORTED_BY_SYSTEM | 3 | | +| SCANNING_CANCELLED_BY_USER | 4 | | +| SCANNING_SUCCESS | 5 | | + +## EnumWindowSize + + + + +| Name | Value | Summary | +| ---- | ----- | ------- | +| WINDOW_SIZE_480 | 4 | | +| WINDOW_SIZE_720 | 7 | | +| WINDOW_SIZE_1080 | 12 | | + +## Media + +A reusable model to represent a media file + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| folder | optional | string | 1 | Directory that the media is contained in | +| file | optional | string | 2 | Filename of media | + +## NotifProvisioningState + +Provision state notification + + TODO refernce where this is triggered + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| provisioning_state | required | [EnumProvisioning]({% link protos/open_gopro.md %}#enumprovisioning) | 1 | Provisioning / connection state | + +## NotifStartScanning + +Scanning state notification + + Triggered via [RequestStartScan]( {% link protos/open_gopro.md %}#requeststartscan ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| scanning_state | required | [EnumScanning]({% link protos/open_gopro.md %}#enumscanning) | 1 | Scanning state | +| scan_id | optional | int32 | 2 | ID associated with scan results (included if scan was successful) | +| total_entries | optional | int32 | 3 | Number of APs found during scan (included if scan was successful) | +| total_configured_ssid | required | int32 | 4 | Total count of camera's provisioned SSIDs | + +## NotifyCOHNStatus + +Current COHN status triggered by a RequestGetCOHNStatus + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| status | optional | [EnumCOHNStatus]({% link protos/open_gopro.md %}#enumcohnstatus) | 1 | Current COHN status | +| state | optional | [EnumCOHNNetworkState]({% link protos/open_gopro.md %}#enumcohnnetworkstate) | 2 | Current COHN network state | +| username | optional | string | 3 | Username used for http basic auth header | +| password | optional | string | 4 | Password used for http basic auth header | +| ipaddress | optional | string | 5 | Camera's IP address on the local network | +| enabled | optional | bool | 6 | Is COHN currently enabled | +| ssid | optional | string | 7 | Currently connected SSID | +| macaddress | optional | string | 8 | MAC address of the wifi adapter | + +## NotifyLiveStreamStatus + +Live Stream status + + Sent either: + - as a syncrhonous response to initial [RequestGetLiveStreamStatus]( {% link protos/open_gopro.md %}#requestgetlivestreamstatus ) + - as asynchronous notifications registered for via [RequestGetLiveStreamStatus]( {% link protos/open_gopro.md %}#requestgetlivestreamstatus ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| live_stream_status | optional | [EnumLiveStreamStatus]({% link protos/open_gopro.md %}#enumlivestreamstatus) | 1 | Live stream status | +| live_stream_error | optional | [EnumLiveStreamError]({% link protos/open_gopro.md %}#enumlivestreamerror) | 2 | Live stream error | +| live_stream_encode | optional | bool | 3 | Is live stream encoding? | +| live_stream_bitrate | optional | int32 | 4 | Live stream bitrate (Kbps) | +| live_stream_window_size_supported_array | repeated | [EnumWindowSize]({% link protos/open_gopro.md %}#enumwindowsize) | 5 | Set of currently supported resolutions | +| live_stream_encode_supported | optional | bool | 6 | Does the camera support encoding while live streaming? | +| live_stream_max_lens_unsupported | optional | bool | 7 | Is the Max Lens feature NOT supported? | +| live_stream_minimum_stream_bitrate | optional | int32 | 8 | Camera-defined minimum bitrate (static) (Kbps) | +| live_stream_maximum_stream_bitrate | optional | int32 | 9 | Camera-defined maximum bitrate (static) (Kbps) | +| live_stream_lens_supported | optional | bool | 10 | Does camera support setting lens for live streaming? | +| live_stream_lens_supported_array | repeated | [EnumLens]({% link protos/open_gopro.md %}#enumlens) | 11 | Set of currently supported FOV options | + +## NotifyPresetStatus + +Current Preset status + + Sent either: + - synchronously via initial response to [RequestGetPresetStatus]( {% link protos/open_gopro.md %}#requestgetpresetstatus ) + - asynchronously when Preset change if registered in @rev RequestGetPresetStatus + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| preset_group_array | repeated | [PresetGroup]({% link protos/open_gopro.md %}#presetgroup) | 1 | Array of currently available Preset Groups | + +## Preset + +An individual preset. + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| id | optional | int32 | 1 | Preset ID | +| mode | optional | [EnumFlatMode]({% link protos/open_gopro.md %}#enumflatmode) | 2 | Preset flatmode ID | +| title_id | optional | [EnumPresetTitle]({% link protos/open_gopro.md %}#enumpresettitle) | 3 | Preset Title ID | +| title_number | optional | int32 | 4 | Preset Title Number (e.g. 1/2/3 in Custom1, Custom2, Custom3) | +| user_defined | optional | bool | 5 | Is the Preset custom/user-defined? | +| icon | optional | [EnumPresetIcon]({% link protos/open_gopro.md %}#enumpreseticon) | 6 | Preset Icon ID | +| setting_array | repeated | [PresetSetting]({% link protos/open_gopro.md %}#presetsetting) | 7 | Array of settings associated with this Preset | +| is_modified | optional | bool | 8 | Has Preset been modified from factory defaults? (False for user-defined Presets) | +| is_fixed | optional | bool | 9 | Is this Preset mutable? | +| custom_name | optional | string | 10 | Custom string name given to this preset via [RequestCustomPresetUpdate]( {% link protos/open_gopro.md %}#requestcustompresetupdate ) | + +## PresetGroup + +Preset Group meta information and contained Presets + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| id | optional | [EnumPresetGroup]({% link protos/open_gopro.md %}#enumpresetgroup) | 1 | Preset Group ID | +| preset_array | repeated | [Preset]({% link protos/open_gopro.md %}#preset) | 2 | Array of Presets contained in this Preset Group | +| can_add_preset | optional | bool | 3 | Is there room in the group to add additional Presets? | +| icon | optional | [EnumPresetGroupIcon]({% link protos/open_gopro.md %}#enumpresetgroupicon) | 4 | The icon to display for this preset group | + +## PresetSetting + +Setting representation that comprises a [Preset]( {% link protos/open_gopro.md %}#preset ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| id | optional | int32 | 1 | Setting ID | +| value | optional | int32 | 2 | Setting value | +| is_caption | optional | bool | 3 | Does this setting appear on the Preset "pill" in the camera UI? | + +## RequestCOHNCert + +Get the COHN certificate. + + Returns a [ResponseCOHNCert]( {% link protos/open_gopro.md %}#responsecohncert ) + + +## RequestClearCOHNCert + +Clear the COHN certificate. + + Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) with the status of the clear + + +## RequestConnect + +Connect to (but do not authenticate with) an Access Point + + This is intended to be used to connect to a previously-connected Access Point + + Response: [ResponseConnect]( {% link protos/open_gopro.md %}#responseconnect ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| ssid | required | string | 1 | AP SSID | + +## RequestConnectNew + +Connect to and authenticate with an Access Point + + This is only intended to be used if the AP is not previously provisioned. + + Response: [ResponseConnectNew]( {% link protos/open_gopro.md %}#responseconnectnew ) sent immediately + + Notification: [NotifProvisioningState]( {% link protos/open_gopro.md %}#notifprovisioningstate ) sent periodically as provisioning state changes + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| ssid | required | string | 1 | AP SSID | +| password | required | string | 2 | AP password | +| static_ip | optional | bytes | 3 | Static IP address | +| gateway | optional | bytes | 4 | Gateway IP address | +| subnet | optional | bytes | 5 | Subnet mask | +| dns_primary | optional | bytes | 6 | Primary DNS | +| dns_secondary | optional | bytes | 7 | Secondary DNS | + +## RequestCreateCOHNCert + +Create the COHN certificate. + + Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) with the status of the creation + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| override | optional | bool | 1 | Override current provisioning and create new cert | + +## RequestCustomPresetUpdate + +Request to update the active custom preset + + This only operates on the currently active Preset and will fail if the current + Preset is not custom. + + The use cases are: + + 1. Update the Custom Preset Icon + - `icon_id` is always optional and can always be passed + + and / or + + 2. Update the Custom Preset Title to a... + - **Factory Preset Title**: Set `title_id` to a non-94 value + - **Custom Preset Name**: Set `title_id` to 94 and specify a `custom_name` + + Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) with the status of the preset update request. + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| title_id | optional | [EnumPresetTitle]({% link protos/open_gopro.md %}#enumpresettitle) | 1 | Preset Title ID The range of acceptable custom title ID's can be found in the initial [NotifyPresetStatus]( {% link protos/open_gopro.md %}#notifypresetstatus ) response to [RequestGetPresetStatus]( {% link protos/open_gopro.md %}#requestgetpresetstatus ) | +| custom_name | optional | string | 2 | utf-8 encoded target custom preset name | +| icon_id | optional | [EnumPresetIcon]({% link protos/open_gopro.md %}#enumpreseticon) | 3 | Preset Icon ID The range of acceptable custom icon ID's can be found in the initial [NotifyPresetStatus]( {% link protos/open_gopro.md %}#notifypresetstatus ) response to [RequestGetPresetStatus]( {% link protos/open_gopro.md %}#requestgetpresetstatus ) | + +## RequestGetApEntries + +Get a list of Access Points found during a [RequestStartScan]( {% link protos/open_gopro.md %}#requeststartscan ) + + Response: [ResponseGetApEntries]( {% link protos/open_gopro.md %}#responsegetapentries ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| start_index | required | int32 | 1 | Used for paging. 0 <= start_index < [ResponseGetApEntries]( {% link protos/open_gopro.md %}#responsegetapentries ) .total_entries | +| max_entries | required | int32 | 2 | Used for paging. Value must be < [ResponseGetApEntries]( {% link protos/open_gopro.md %}#responsegetapentries ) .total_entries | +| scan_id | required | int32 | 3 | ID corresponding to a set of scan results (i.e. [ResponseGetApEntries]( {% link protos/open_gopro.md %}#responsegetapentries ) .scan_id) | + +## RequestGetCOHNStatus + +Get the current COHN status. + + This always returns a [NotifyCOHNStatus]( {% link protos/open_gopro.md %}#notifycohnstatus ) + + Additionally, asynchronous updates can also be registerd to return more [NotifyCOHNStatus]( {% link protos/open_gopro.md %}#notifycohnstatus ) when a value + changes. + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| register_cohn_status | optional | bool | 1 | 1 to register, 0 to unregister | + +## RequestGetLastCapturedMedia + +Get the last captured media filename + + Returns a [ResponseLastCapturedMedia]( {% link protos/open_gopro.md %}#responselastcapturedmedia ) + + +## RequestGetLiveStreamStatus + +Get the current livestream status (and optionally register for future status changes) + + Both current status and future status changes are sent via [NotifyLiveStreamStatus]( {% link protos/open_gopro.md %}#notifylivestreamstatus ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| register_live_stream_status | repeated | [EnumRegisterLiveStreamStatus]({% link protos/open_gopro.md %}#enumregisterlivestreamstatus) | 1 | Array of live stream statuses to be notified about | +| unregister_live_stream_status | repeated | [EnumRegisterLiveStreamStatus]({% link protos/open_gopro.md %}#enumregisterlivestreamstatus) | 2 | Array of live stream statuses to stop being notified about | + +## RequestGetPresetStatus + +Get preset status (and optionally register to be notified when it changes) + + Response: [NotifyPresetStatus]( {% link protos/open_gopro.md %}#notifypresetstatus ) sent immediately + + Notification: [NotifyPresetStatus]( {% link protos/open_gopro.md %}#notifypresetstatus ) sent periodically as preset status changes, if registered. + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| register_preset_status | repeated | [EnumRegisterPresetStatus]({% link protos/open_gopro.md %}#enumregisterpresetstatus) | 1 | Array of Preset statuses to be notified about | +| unregister_preset_status | repeated | [EnumRegisterPresetStatus]({% link protos/open_gopro.md %}#enumregisterpresetstatus) | 2 | Array of Preset statuses to stop being notified about | + +## RequestReleaseNetwork + +Request to disconnect from current AP network + + Response: [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) + + +## RequestSetCOHNSetting + +Enable and disable COHN if provisioned + + Returns a [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| cohn_active | optional | bool | 1 | 1 to enable, 0 to disable | + +## RequestSetCameraControlStatus + +Set Camera Control Status (as part of Global Behaviors feature) + + Response: [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| camera_control_status | required | [EnumCameraControlStatus]({% link protos/open_gopro.md %}#enumcameracontrolstatus) | 1 | Declare who is taking control of the camera | + +## RequestSetLiveStreamMode + +Configure lives streaming + + The current livestream status can be queried via [RequestGetLiveStreamStatus]( {% link protos/open_gopro.md %}#requestgetlivestreamstatus ) + + Response: [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| url | optional | string | 1 | RTMP(S) URL used for live stream | +| encode | optional | bool | 2 | Save media to sdcard while streaming? | +| window_size | optional | [EnumWindowSize]({% link protos/open_gopro.md %}#enumwindowsize) | 3 | Resolution to use for live stream The set of supported lenses is only available from the `live_stream_window_size_supported_array` in [NotifyLiveStreamStatus]( {% link protos/open_gopro.md %}#notifylivestreamstatus )) | +| cert | optional | bytes | 6 | Certificate for servers that require it | +| minimum_bitrate | optional | int32 | 7 | Minimum desired bitrate (may or may not be honored) | +| maximum_bitrate | optional | int32 | 8 | Maximum desired bitrate (may or may not be honored) | +| starting_bitrate | optional | int32 | 9 | Starting bitrate | +| lens | optional | [EnumLens]({% link protos/open_gopro.md %}#enumlens) | 10 | Lens to use for live stream The set of supported lenses is only available from the `live_stream_lens_supported_array` in [NotifyLiveStreamStatus]( {% link protos/open_gopro.md %}#notifylivestreamstatus )) | + +## RequestSetTurboActive + +Enable/disable display of "Transferring Media" UI + + Response: [ResponseGeneric]( {% link protos/open_gopro.md %}#responsegeneric ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| active | required | bool | 1 | Enable or disable Turbo Transfer feature | + +## RequestStartScan + +Start scanning for Access Points + + > Serialization of this object is zero bytes. + + Response: [ResponseStartScanning]( {% link protos/open_gopro.md %}#responsestartscanning ) are sent immediately after the camera receives this command + + Notifications: [NotifStartScanning]( {% link protos/open_gopro.md %}#notifstartscanning ) are sent periodically as scanning state changes. Use to detect scan complete. + + +## ResponseCOHNCert + +COHN Certificate response triggered by RequestCOHNCert + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | optional | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Was request successful? | +| cert | optional | string | 2 | Root CA cert (ASCII text) | + +## ResponseConnect + +The status of an attempt to connect to an Access Point + + Sent as the initial response to [RequestConnect]( {% link protos/open_gopro.md %}#requestconnect ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Generic pass/fail/error info | +| provisioning_state | required | [EnumProvisioning]({% link protos/open_gopro.md %}#enumprovisioning) | 2 | Provisioning/connection state | +| timeout_seconds | required | int32 | 3 | Network connection timeout (seconds) | + +## ResponseConnectNew + +The status of an attempt to connect to an Access Point + + Sent as the initial response to [RequestConnectNew]( {% link protos/open_gopro.md %}#requestconnectnew ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Status of Connect New request | +| provisioning_state | required | [EnumProvisioning]({% link protos/open_gopro.md %}#enumprovisioning) | 2 | Current provisioning state of the network | +| timeout_seconds | required | int32 | 3 | number of seconds camera will wait before declaring a network connection attempt failed. | + +## ResponseGeneric + +Generic Response used across most response / notification messages + + [EnumResultGeneric]( {% link protos/open_gopro.md %}#enumresultgeneric ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Generic pass/fail/error info | + +## ResponseGetApEntries + +A list of scan entries describing a scanned Access Point + + This is sent in response to a [RequestGetApEntries]( {% link protos/open_gopro.md %}#requestgetapentries ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Generic pass/fail/error info | +| scan_id | required | int32 | 2 | ID associated with this batch of results | +| entries | repeated | [ScanEntry]({% link protos/open_gopro.md %}#scanentry) | 3 | Array containing details about discovered APs | + +## ResponseLastCapturedMedia + +Message sent in response to a [RequestGetLastCapturedMedia]( {% link protos/open_gopro.md %}#requestgetlastcapturedmedia ) + + This contains the complete path of the last captured media. Depending on the type of media captured, it will return: + + - Single photo / video: The single media path + - Any grouped media: The path to the first captured media in the group + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | optional | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Was the request successful? | +| media | optional | [Media]({% link protos/open_gopro.md %}#media) | 2 | Last captured media if result is RESULT_SUCCESS. Invalid if result is RESULT_RESOURCE_NOT_AVAILBLE. | + +## ResponseStartScanning + +The current scanning state. + + This is the initial response to a [RequestStartScan]( {% link protos/open_gopro.md %}#requeststartscan ) + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| result | required | [EnumResultGeneric]({% link protos/open_gopro.md %}#enumresultgeneric) | 1 | Generic pass/fail/error info | +| scanning_state | required | [EnumScanning]({% link protos/open_gopro.md %}#enumscanning) | 2 | Scanning state | + +## ScanEntry + +The individual Scan Entry model + + + +| Field | Typespec | Value Type | Value | Summary | +| ----- | -------- | ---------- | ----- | ------- | +| ssid | required | string | 1 | AP SSID | +| signal_strength_bars | required | int32 | 2 | Signal strength (3 bars: >-70 dBm; 2 bars: >-85 dBm; 1 bar: <=-85 dBm) | +| signal_frequency_mhz | required | int32 | 4 | Signal frequency (MHz) | +| scan_entry_flags | required | int32 | 5 | Bitmasked value from [EnumScanEntryFlags]( {% link protos/open_gopro.md %}#enumscanentryflags ) | diff --git a/redirects.json b/redirects.json index a539c75e..81d98ef4 100644 --- a/redirects.json +++ b/redirects.json @@ -1 +1 @@ -{"/ble":"https://gopro.github.io/OpenGoPro/ble_2_0","/swift":"https://gopro.github.io/OpenGoPro/demos","/python":"https://gopro.github.io/OpenGoPro/demos","/csharp":"https://gopro.github.io/OpenGoPro/demos","/c_c++":"https://gopro.github.io/OpenGoPro/demos","/ionic":"https://gopro.github.io/OpenGoPro/demos","/bash":"https://gopro.github.io/OpenGoPro/demos","/http":"https://gopro.github.io/OpenGoPro/http_2_0"} \ No newline at end of file +{"/ble":"https://gopro.github.io/OpenGoPro/ble_2_0","/protos":"https://gopro.github.io/OpenGoPro/protos/open_gopro.html"} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 88b4dcd4..f1392d8c 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,64 +1,32 @@ -https://gopro.github.io/OpenGoPro/demos/bash/ota_update -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/c_c++/GoProC_C++Demo -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/c_c++/GoProStreamDemo -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/csharp/GoProCSharpSample -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/csharp/webcam -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/python/multi_webcam -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/python/sdk_wireless_camera_control -2023-12-11T15:38:12-08:00 - - -https://gopro.github.io/OpenGoPro/demos/swift/EnableWiFiDemo -2023-12-11T15:38:12-08:00 - - https://gopro.github.io/OpenGoPro/tutorials/connect-ble -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/tutorials/send-ble-commands -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/tutorials/parse-ble-responses -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/tutorials/ble-queries -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/tutorials/connect-wifi -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/tutorials/send-wifi-commands -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/tutorials/camera-media-list -2023-12-11T15:38:12-08:00 +2023-12-21T16:22:03-08:00 https://gopro.github.io/OpenGoPro/ble_2_0 @@ -67,21 +35,29 @@ https://gopro.github.io/OpenGoPro/contribution.html -https://gopro.github.io/OpenGoPro/demos +https://gopro.github.io/OpenGoPro/faq -https://gopro.github.io/OpenGoPro/faq +https://gopro.github.io/OpenGoPro/http-legacy -https://gopro.github.io/OpenGoPro/http_2_0 +https://gopro.github.io/OpenGoPro/swagger https://gopro.github.io/OpenGoPro/ -https://gopro.github.io/OpenGoPro/protos +https://gopro.github.io/OpenGoPro/tutorials/ -https://gopro.github.io/OpenGoPro/tutorials/ +https://gopro.github.io/OpenGoPro/protos/open_gopro.html + + +https://gopro.github.io/OpenGoPro/http.html +2023-12-21T16:21:37-08:00 + + +https://gopro.github.io/OpenGoPro/http_2_0.html +2023-12-21T16:21:37-08:00 diff --git a/specs/.enums.yml b/specs/.enums.yml new file mode 100644 index 00000000..00dcb5ea --- /dev/null +++ b/specs/.enums.yml @@ -0,0 +1,391 @@ +# .enums.yml/Open GoPro, Version 2.0 (C) Copyright 2021 GoPro, Inc. (http://gopro.com/OpenGoPro). +# This copyright was auto-generated on Thu Dec 21 23:28:45 UTC 2023 + + +######################################################################################################################## +# This file is automatically generated. Do not modify manually. + +# Last generated at 2023-12-22 00:09:35.243055 +######################################################################################################################## + +EnumCOHNNetworkState: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | COHN_STATE_Init | | + | 1 | COHN_STATE_Error | | + | 2 | COHN_STATE_Exit | | + | 5 | COHN_STATE_Idle | | + | 27 | COHN_STATE_NetworkConnected | | + | 28 | COHN_STATE_NetworkDisconnected | | + | 29 | COHN_STATE_ConnectingToNetwork | | + | 30 | COHN_STATE_Invalid | | + enum: [0, 1, 2, 5, 27, 28, 29, 30] + +EnumCOHNStatus: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | COHN_UNPROVISIONED | | + | 1 | COHN_PROVISIONED | | + enum: [0, 1] + +EnumCameraControlStatus: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | CAMERA_IDLE | | + | 1 | CAMERA_CONTROL | Can only be set by camera, not by app or third party | + | 2 | CAMERA_EXTERNAL_CONTROL | | + enum: [0, 1, 2] + +EnumFlatMode: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | -1 | FLAT_MODE_UNKNOWN | | + | 4 | FLAT_MODE_PLAYBACK | | + | 5 | FLAT_MODE_SETUP | | + | 12 | FLAT_MODE_VIDEO | | + | 13 | FLAT_MODE_TIME_LAPSE_VIDEO | | + | 15 | FLAT_MODE_LOOPING | | + | 16 | FLAT_MODE_PHOTO_SINGLE | | + | 17 | FLAT_MODE_PHOTO | | + | 18 | FLAT_MODE_PHOTO_NIGHT | | + | 19 | FLAT_MODE_PHOTO_BURST | | + | 20 | FLAT_MODE_TIME_LAPSE_PHOTO | | + | 21 | FLAT_MODE_NIGHT_LAPSE_PHOTO | | + | 22 | FLAT_MODE_BROADCAST_RECORD | | + | 23 | FLAT_MODE_BROADCAST_BROADCAST | | + | 24 | FLAT_MODE_TIME_WARP_VIDEO | | + | 25 | FLAT_MODE_LIVE_BURST | | + | 26 | FLAT_MODE_NIGHT_LAPSE_VIDEO | | + | 27 | FLAT_MODE_SLOMO | | + | 28 | FLAT_MODE_IDLE | | + | 29 | FLAT_MODE_VIDEO_STAR_TRAIL | | + | 30 | FLAT_MODE_VIDEO_LIGHT_PAINTING | | + | 31 | FLAT_MODE_VIDEO_LIGHT_TRAIL | | + enum: [-1, 4, 5, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31] + +EnumLens: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | LENS_WIDE | | + | 4 | LENS_LINEAR | | + | 3 | LENS_SUPERVIEW | | + enum: [0, 4, 3] + +EnumLiveStreamError: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | LIVE_STREAM_ERROR_NONE | No error (success) | + | 1 | LIVE_STREAM_ERROR_NETWORK | General network error during the stream | + | 2 | LIVE_STREAM_ERROR_CREATESTREAM | Startup error: bad URL or valid with live stream server | + | 3 | LIVE_STREAM_ERROR_OUTOFMEMORY | Not enough memory on camera to complete task | + | 4 | LIVE_STREAM_ERROR_INPUTSTREAM | Failed to get stream from low level camera system | + | 5 | LIVE_STREAM_ERROR_INTERNET | No internet access detected on startup of streamer | + | 6 | LIVE_STREAM_ERROR_OSNETWORK | Error occured in linux networking stack. usually means the server closed the connection | + | 7 | LIVE_STREAM_ERROR_SELECTEDNETWORKTIMEOUT | Timed out attemping to connect to the wifi network when attemping live stream | + | 8 | LIVE_STREAM_ERROR_SSL_HANDSHAKE | SSL handshake failed (commonly caused due to incorrect time / time zone) | + | 9 | LIVE_STREAM_ERROR_CAMERA_BLOCKED | Low level camera system rejected attempt to start live stream | + | 10 | LIVE_STREAM_ERROR_UNKNOWN | Unknown | + | 40 | LIVE_STREAM_ERROR_SD_CARD_FULL | Can not perform livestream because sd card is full | + | 41 | LIVE_STREAM_ERROR_SD_CARD_REMOVED | Livestream stopped because sd card was removed | + enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 40, 41] + +EnumLiveStreamStatus: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | LIVE_STREAM_STATE_IDLE | Initial status. Livestream has not yet been configured | + | 1 | LIVE_STREAM_STATE_CONFIG | Livestream is being configured | + | 2 | LIVE_STREAM_STATE_READY | Livestream has finished configuration and is ready to start streaming | + | 3 | LIVE_STREAM_STATE_STREAMING | Livestream is actively streaming | + | 4 | LIVE_STREAM_STATE_COMPLETE_STAY_ON | Live stream is exiting. No errors occured. | + | 5 | LIVE_STREAM_STATE_FAILED_STAY_ON | Live stream is exiting. An error occurred. | + | 6 | LIVE_STREAM_STATE_RECONNECTING | An error occurred during livestream and stream is attempting to reconnect. | + enum: [0, 1, 2, 3, 4, 5, 6] + +EnumPresetGroup: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 1000 | PRESET_GROUP_ID_VIDEO | | + | 1001 | PRESET_GROUP_ID_PHOTO | | + | 1002 | PRESET_GROUP_ID_TIMELAPSE | | + enum: [1000, 1001, 1002] + +EnumPresetGroupIcon: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | PRESET_GROUP_VIDEO_ICON_ID | | + | 1 | PRESET_GROUP_PHOTO_ICON_ID | | + | 2 | PRESET_GROUP_TIMELAPSE_ICON_ID | | + | 3 | PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID | | + | 4 | PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID | | + | 5 | PRESET_GROUP_MAX_VIDEO_ICON_ID | | + | 6 | PRESET_GROUP_MAX_PHOTO_ICON_ID | | + | 7 | PRESET_GROUP_MAX_TIMELAPSE_ICON_ID | | + enum: [0, 1, 2, 3, 4, 5, 6, 7] + +EnumPresetIcon: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | PRESET_ICON_VIDEO | | + | 1 | PRESET_ICON_ACTIVITY | | + | 2 | PRESET_ICON_CINEMATIC | | + | 3 | PRESET_ICON_PHOTO | | + | 4 | PRESET_ICON_LIVE_BURST | | + | 5 | PRESET_ICON_BURST | | + | 6 | PRESET_ICON_PHOTO_NIGHT | | + | 7 | PRESET_ICON_TIMEWARP | | + | 8 | PRESET_ICON_TIMELAPSE | | + | 9 | PRESET_ICON_NIGHTLAPSE | | + | 10 | PRESET_ICON_SNAIL | | + | 11 | PRESET_ICON_VIDEO_2 | | + | 13 | PRESET_ICON_PHOTO_2 | | + | 14 | PRESET_ICON_PANORAMA | | + | 15 | PRESET_ICON_BURST_2 | | + | 16 | PRESET_ICON_TIMEWARP_2 | | + | 17 | PRESET_ICON_TIMELAPSE_2 | | + | 18 | PRESET_ICON_CUSTOM | | + | 19 | PRESET_ICON_AIR | | + | 20 | PRESET_ICON_BIKE | | + | 21 | PRESET_ICON_EPIC | | + | 22 | PRESET_ICON_INDOOR | | + | 23 | PRESET_ICON_MOTOR | | + | 24 | PRESET_ICON_MOUNTED | | + | 25 | PRESET_ICON_OUTDOOR | | + | 26 | PRESET_ICON_POV | | + | 27 | PRESET_ICON_SELFIE | | + | 28 | PRESET_ICON_SKATE | | + | 29 | PRESET_ICON_SNOW | | + | 30 | PRESET_ICON_TRAIL | | + | 31 | PRESET_ICON_TRAVEL | | + | 32 | PRESET_ICON_WATER | | + | 33 | PRESET_ICON_LOOPING | | + | 58 | PRESET_ICON_BASIC | | + | 59 | PRESET_ICON_ULTRA_SLO_MO | | + | 60 | PRESET_ICON_STANDARD_ENDURANCE | | + | 61 | PRESET_ICON_ACTIVITY_ENDURANCE | | + | 62 | PRESET_ICON_CINEMATIC_ENDURANCE | | + | 63 | PRESET_ICON_SLOMO_ENDURANCE | | + | 64 | PRESET_ICON_STATIONARY_1 | | + | 65 | PRESET_ICON_STATIONARY_2 | | + | 66 | PRESET_ICON_STATIONARY_3 | | + | 67 | PRESET_ICON_STATIONARY_4 | | + | 70 | PRESET_ICON_SIMPLE_SUPER_PHOTO | | + | 71 | PRESET_ICON_SIMPLE_NIGHT_PHOTO | | + | 73 | PRESET_ICON_HIGHEST_QUALITY_VIDEO | | + | 74 | PRESET_ICON_STANDARD_QUALITY_VIDEO | | + | 75 | PRESET_ICON_BASIC_QUALITY_VIDEO | | + | 76 | PRESET_ICON_STAR_TRAIL | | + | 77 | PRESET_ICON_LIGHT_PAINTING | | + | 78 | PRESET_ICON_LIGHT_TRAIL | | + | 79 | PRESET_ICON_FULL_FRAME | | + | 1000 | PRESET_ICON_TIMELAPSE_PHOTO | | + | 1001 | PRESET_ICON_NIGHTLAPSE_PHOTO | | + enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 73, 74, 75, 76, 77, 78, 79, 1000, 1001] + +EnumPresetTitle: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | PRESET_TITLE_ACTIVITY | | + | 1 | PRESET_TITLE_STANDARD | | + | 2 | PRESET_TITLE_CINEMATIC | | + | 3 | PRESET_TITLE_PHOTO | | + | 4 | PRESET_TITLE_LIVE_BURST | | + | 5 | PRESET_TITLE_BURST | | + | 6 | PRESET_TITLE_NIGHT | | + | 7 | PRESET_TITLE_TIME_WARP | | + | 8 | PRESET_TITLE_TIME_LAPSE | | + | 9 | PRESET_TITLE_NIGHT_LAPSE | | + | 10 | PRESET_TITLE_VIDEO | | + | 11 | PRESET_TITLE_SLOMO | | + | 13 | PRESET_TITLE_PHOTO_2 | | + | 14 | PRESET_TITLE_PANORAMA | | + | 16 | PRESET_TITLE_TIME_WARP_2 | | + | 18 | PRESET_TITLE_CUSTOM | | + | 19 | PRESET_TITLE_AIR | | + | 20 | PRESET_TITLE_BIKE | | + | 21 | PRESET_TITLE_EPIC | | + | 22 | PRESET_TITLE_INDOOR | | + | 23 | PRESET_TITLE_MOTOR | | + | 24 | PRESET_TITLE_MOUNTED | | + | 25 | PRESET_TITLE_OUTDOOR | | + | 26 | PRESET_TITLE_POV | | + | 27 | PRESET_TITLE_SELFIE | | + | 28 | PRESET_TITLE_SKATE | | + | 29 | PRESET_TITLE_SNOW | | + | 30 | PRESET_TITLE_TRAIL | | + | 31 | PRESET_TITLE_TRAVEL | | + | 32 | PRESET_TITLE_WATER | | + | 33 | PRESET_TITLE_LOOPING | | + | 58 | PRESET_TITLE_BASIC | | + | 59 | PRESET_TITLE_ULTRA_SLO_MO | | + | 60 | PRESET_TITLE_STANDARD_ENDURANCE | | + | 61 | PRESET_TITLE_ACTIVITY_ENDURANCE | | + | 62 | PRESET_TITLE_CINEMATIC_ENDURANCE | | + | 63 | PRESET_TITLE_SLOMO_ENDURANCE | | + | 64 | PRESET_TITLE_STATIONARY_1 | | + | 65 | PRESET_TITLE_STATIONARY_2 | | + | 66 | PRESET_TITLE_STATIONARY_3 | | + | 67 | PRESET_TITLE_STATIONARY_4 | | + | 68 | PRESET_TITLE_SIMPLE_VIDEO | | + | 69 | PRESET_TITLE_SIMPLE_TIME_WARP | | + | 70 | PRESET_TITLE_SIMPLE_SUPER_PHOTO | | + | 71 | PRESET_TITLE_SIMPLE_NIGHT_PHOTO | | + | 72 | PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE | | + | 73 | PRESET_TITLE_HIGHEST_QUALITY | | + | 74 | PRESET_TITLE_EXTENDED_BATTERY | | + | 75 | PRESET_TITLE_LONGEST_BATTERY | | + | 76 | PRESET_TITLE_STAR_TRAIL | | + | 77 | PRESET_TITLE_LIGHT_PAINTING | | + | 78 | PRESET_TITLE_LIGHT_TRAIL | | + | 79 | PRESET_TITLE_FULL_FRAME | | + | 82 | PRESET_TITLE_STANDARD_QUALITY_VIDEO | | + | 83 | PRESET_TITLE_BASIC_QUALITY_VIDEO | | + | 93 | PRESET_TITLE_HIGHEST_QUALITY_VIDEO | | + | 94 | PRESET_TITLE_USER_DEFINED_CUSTOM_NAME | | + enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 82, 83, 93, 94] + +EnumProvisioning: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | PROVISIONING_UNKNOWN | | + | 1 | PROVISIONING_NEVER_STARTED | | + | 2 | PROVISIONING_STARTED | | + | 3 | PROVISIONING_ABORTED_BY_SYSTEM | | + | 4 | PROVISIONING_CANCELLED_BY_USER | | + | 5 | PROVISIONING_SUCCESS_NEW_AP | | + | 6 | PROVISIONING_SUCCESS_OLD_AP | | + | 7 | PROVISIONING_ERROR_FAILED_TO_ASSOCIATE | | + | 8 | PROVISIONING_ERROR_PASSWORD_AUTH | | + | 9 | PROVISIONING_ERROR_EULA_BLOCKING | | + | 10 | PROVISIONING_ERROR_NO_INTERNET | | + | 11 | PROVISIONING_ERROR_UNSUPPORTED_TYPE | | + enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] + +EnumRegisterLiveStreamStatus: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 1 | REGISTER_LIVE_STREAM_STATUS_STATUS | | + | 2 | REGISTER_LIVE_STREAM_STATUS_ERROR | | + | 3 | REGISTER_LIVE_STREAM_STATUS_MODE | | + | 4 | REGISTER_LIVE_STREAM_STATUS_BITRATE | | + enum: [1, 2, 3, 4] + +EnumRegisterPresetStatus: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 1 | REGISTER_PRESET_STATUS_PRESET | Send notification when properties of a preset change | + | 2 | REGISTER_PRESET_STATUS_PRESET_GROUP_ARRAY | Send notification when properties of a preset group change | + enum: [1, 2] + +EnumResultGeneric: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | RESULT_UNKNOWN | | + | 1 | RESULT_SUCCESS | | + | 2 | RESULT_ILL_FORMED | | + | 3 | RESULT_NOT_SUPPORTED | | + | 4 | RESULT_ARGUMENT_OUT_OF_BOUNDS | | + | 5 | RESULT_ARGUMENT_INVALID | | + | 6 | RESULT_RESOURCE_NOT_AVAILABLE | | + enum: [0, 1, 2, 3, 4, 5, 6] + +EnumScanEntryFlags: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0x00 | SCAN_FLAG_OPEN | This network does not require authentication | + | 0x01 | SCAN_FLAG_AUTHENTICATED | This network requires authentication | + | 0x02 | SCAN_FLAG_CONFIGURED | This network has been previously provisioned | + | 0x04 | SCAN_FLAG_BEST_SSID | | + | 0x08 | SCAN_FLAG_ASSOCIATED | camera is connected to this AP | + | 0x10 | SCAN_FLAG_UNSUPPORTED_TYPE | | + enum: [0x00, 0x01, 0x02, 0x04, 0x08, 0x10] + +EnumScanning: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 0 | SCANNING_UNKNOWN | | + | 1 | SCANNING_NEVER_STARTED | | + | 2 | SCANNING_STARTED | | + | 3 | SCANNING_ABORTED_BY_SYSTEM | | + | 4 | SCANNING_CANCELLED_BY_USER | | + | 5 | SCANNING_SUCCESS | | + enum: [0, 1, 2, 3, 4, 5] + +EnumWindowSize: + type: integer + description: | + + + | ID | Name | Summary | + | -- | ---- | ------- | + | 4 | WINDOW_SIZE_480 | | + | 7 | WINDOW_SIZE_720 | | + | 12 | WINDOW_SIZE_1080 | | + enum: [4, 7, 12] diff --git a/specs/.openapi.yml b/specs/.openapi.yml new file mode 100644 index 00000000..38a8ca40 --- /dev/null +++ b/specs/.openapi.yml @@ -0,0 +1,3986 @@ +# .openapi.yml/Open GoPro, Version 2.0 (C) Copyright 2021 GoPro, Inc. (http://gopro.com/OpenGoPro). +# This copyright was auto-generated on Thu Dec 21 23:28:45 UTC 2023 + + +######################################################################################################################## +# This file is automatically generated. Do not modify manually. + +# Last generated at 2023-12-22 00:09:35.307572 +######################################################################################################################## +components: + responses: + 200Empty: + content: + application/json: + schema: + type: object + description: Request was successfully received by the camera + GenericEmpty: + content: + application/json: + schema: + type: object + description: This should be overwritten when it is referenced. + State: + content: + application/json: + schema: + $ref: '#/components/schemas/State' + description: Success. Lists of settings and statuses + schemas: + GroupedMediaListItem: + description: "A grouped (i.e. burst, lapse, etc.) media item\n\nNote that each property actually comes as a string but + is specified here using its functional value.\n" + properties: + b: + description: ID of first member in the group + example: 1 + type: integer + cre: + description: Creation time in seconds since epoch + example: 1696600109 + type: integer + g: + description: Group Identifier + example: 1 + type: integer + glrv: + description: Low resolution video size + example: 817767 + type: integer + id: + description: Media list session identifier + type: string + l: + description: ID of last member in the group + example: 6 + type: integer + ls: + description: Low resolution file size. -1 if there is no LRV file + example: -1 + type: integer + m: + description: File ID's that are missing or deleted + example: + - 1 + - 2 + items: + type: integer + type: array + mod: + description: Time file was last modified in seconds since epoch + example: 1696600109 + type: integer + n: + description: Media filename + example: G0010011.MP4 + type: string + s: + description: Number of files in the group + example: 5 + type: integer + t: + description: Group Type (b -> burst, c -> continuous shot, n -> night lapse, t -> time lapse) + enum: + - b + - c + - n + - t + type: string + required: + - n + - cre + - mod + - g + - s + - b + - l + - m + - t + type: object + x-tags: + - Models + MediaList: + description: list of media file systems + properties: + id: + description: media list identifier + example: '1554375628411872255' + type: string + media: + items: + properties: + d: + description: directory that the media files reside in + example: 100GOPRO + type: string + fs: + description: list of files + items: + anyOf: + - $ref: '#/components/schemas/SingleMediaListItem' + - $ref: '#/components/schemas/GroupedMediaListItem' + type: array + required: + - d + - fs + type: object + type: array + required: + - id + - media + type: object + x-tags: + - Models + OtaStatus: + description: "OTA Status\n\n| ID | Status | Description |\n| -- | ------ | ----------- |\n| 0 | OK | No errors occurred + |\n| 1 | Unknown Request | Server did not recognize the request |\n| 2 | Bad Params | Parameter values not recognized + |\n| 3 | SHA1 Send Mismatch | SHA1 for chunk did not match SHA1 of previous chunk(s) |\n| 4 | SHA1 Calculated Mismatch + | Calculated SHA1 did not match user-specified SHA1 |\n| 5 | HTTP Boundary Error | HTTP Post was malformed |\n| 6 + | HTTP Post Error | Unexpected HTTP / Post Content Type |\n| 7 | Server Busy | HTTP server is busy |\n| 8 | Offset + Mismatch | Attempt to upload chunk with offset that did not align with previous chunk |\n| 9 | Bad Post Data | Server + failed to parse POST data |\n| 10 | File Incomplete | Tried to start update before server finished validating .zip + file |\n| 11 | Update in progress | Firmware update is in progress |\n| 12 | Insufficient Space | Insufficient space + on the sdcard to hold decompressed update file |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + type: integer + PhotoMetadata: + description: "Metadata for a photo media file\n\nNote that each property actually comes as a string but is specified + here using its functional value.\n" + properties: + cre: + description: Creation time in seconds since epoch + example: 1692992748 + type: integer + ct: + description: "Media content type\n\n| ID | Mode |\n| -- | ---- |\n| Video | 0 |\n| Looping | 1 |\n| Chaptered Video + | 2 |\n| Time Lapse | 3 |\n| Single Photo | 4 |\n| Burst Photo | 5 |\n| Time Lapse Photo | 6 |\n| Night Lapse + Photo | 8 |\n| Night Photo | 9 |\n| Continuous Photo | 10 |\n| Raw Photo | 11 |\n| Live Burst | 12 |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 8 + - 9 + - 10 + - 11 + - 12 + type: integer + eis: + description: 1 if stabilized, 0 otherwise + enum: + - 0 + - 1 + type: integer + fov: + description: Field of View + type: string + gumi: + description: Globally Unique Media ID + example: '12345678998765443211234567899875' + type: string + h: + description: Height of media in pixels + example: 1080 + type: integer + hc: + description: Number of hilights in media + maximum: 99 + minimum: 0 + type: integer + hdr: + description: 1 if photo taken with high dynamic range, 0 otherwise + enum: + - 0 + - 1 + type: integer + lc: + description: Lens configuration ==> 0 for front, 1 for rear + enum: + - 0 + - 1 + type: integer + mos: + description: List of offload states + example: + - app + - pc + items: + enum: + - app + - pc + - other + type: string + type: array + mp: + description: 1 if metadata is present, 0 otherwise + enum: + - 0 + - 1 + type: integer + prjn: + description: "Lens projection\n\n| ID | Mode |\n| -- | ---- |\n| EAC | 0 |\n| ERP | 1 |\n| EAC, split horizontally + in the middle for 2 output | 2 |\n| ERP, cropped for panorama | 3 |\n| Bypass stitch algorithm, side by side circles + | 4 |\n| Stitch is disabled, stitch algorithm is enabled for offline stitch | 5 |\n| Stitch is disabled| 6 |\n + | Bypass stitch algorithm for EAC split | 7 |\n| Hemisheric | 8 |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + type: integer + raw: + description: 1 if photo has raw version, 0 otherwise + enum: + - 0 + - 1 + type: integer + rot: + description: Deprecated + type: string + s: + description: File size in bytes + example: 1234567890 + type: integer + tr: + description: 1 if file is transcoded, 0 otherwise + enum: + - 0 + - 1 + type: integer + us: + description: Has the file been uploaded? 0 if no, 1 if yes + enum: + - 0 + - 1 + type: integer + w: + description: Width of media in pixels + example: 1920 + type: integer + wdr: + description: 1 if photo taken with wide dynamic range, 0 otherwise + enum: + - 0 + - 1 + type: integer + required: + - ct + - cre + - s + - gumi + - h + - w + - hc + - eis + - mp + - rot + - tr + - us + type: object + x-tags: + - Models + Preset: + description: "A logical wrapper around a specific camera mode, title, icon, and a set of settings that enhance different\n + styles of capturing media.\n" + properties: + icon: + $ref: .enums.yml#/EnumPresetIcon + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | PRESET_ICON_VIDEO | |\n| 1 | PRESET_ICON_ACTIVITY + | |\n| 2 | PRESET_ICON_CINEMATIC | |\n| 3 | PRESET_ICON_PHOTO | |\n| 4 | PRESET_ICON_LIVE_BURST | |\n| 5 | + PRESET_ICON_BURST | |\n| 6 | PRESET_ICON_PHOTO_NIGHT | |\n| 7 | PRESET_ICON_TIMEWARP | |\n| 8 | PRESET_ICON_TIMELAPSE + | |\n| 9 | PRESET_ICON_NIGHTLAPSE | |\n| 10 | PRESET_ICON_SNAIL | |\n| 11 | PRESET_ICON_VIDEO_2 | |\n| 13 + | PRESET_ICON_PHOTO_2 | |\n| 14 | PRESET_ICON_PANORAMA | |\n| 15 | PRESET_ICON_BURST_2 | |\n| 16 | PRESET_ICON_TIMEWARP_2 + | |\n| 17 | PRESET_ICON_TIMELAPSE_2 | |\n| 18 | PRESET_ICON_CUSTOM | |\n| 19 | PRESET_ICON_AIR | |\n| 20 | + PRESET_ICON_BIKE | |\n| 21 | PRESET_ICON_EPIC | |\n| 22 | PRESET_ICON_INDOOR | |\n| 23 | PRESET_ICON_MOTOR + | |\n| 24 | PRESET_ICON_MOUNTED | |\n| 25 | PRESET_ICON_OUTDOOR | |\n| 26 | PRESET_ICON_POV | |\n| 27 | PRESET_ICON_SELFIE + | |\n| 28 | PRESET_ICON_SKATE | |\n| 29 | PRESET_ICON_SNOW | |\n| 30 | PRESET_ICON_TRAIL | |\n| 31 | PRESET_ICON_TRAVEL + | |\n| 32 | PRESET_ICON_WATER | |\n| 33 | PRESET_ICON_LOOPING | |\n| 58 | PRESET_ICON_BASIC | |\n| 59 | PRESET_ICON_ULTRA_SLO_MO + | |\n| 60 | PRESET_ICON_STANDARD_ENDURANCE | |\n| 61 | PRESET_ICON_ACTIVITY_ENDURANCE | |\n| 62 | PRESET_ICON_CINEMATIC_ENDURANCE + | |\n| 63 | PRESET_ICON_SLOMO_ENDURANCE | |\n| 64 | PRESET_ICON_STATIONARY_1 | |\n| 65 | PRESET_ICON_STATIONARY_2 + | |\n| 66 | PRESET_ICON_STATIONARY_3 | |\n| 67 | PRESET_ICON_STATIONARY_4 | |\n| 70 | PRESET_ICON_SIMPLE_SUPER_PHOTO + | |\n| 71 | PRESET_ICON_SIMPLE_NIGHT_PHOTO | |\n| 73 | PRESET_ICON_HIGHEST_QUALITY_VIDEO | |\n| 74 | PRESET_ICON_STANDARD_QUALITY_VIDEO + | |\n| 75 | PRESET_ICON_BASIC_QUALITY_VIDEO | |\n| 76 | PRESET_ICON_STAR_TRAIL | |\n| 77 | PRESET_ICON_LIGHT_PAINTING + | |\n| 78 | PRESET_ICON_LIGHT_TRAIL | |\n| 79 | PRESET_ICON_FULL_FRAME | |\n| 1000 | PRESET_ICON_TIMELAPSE_PHOTO + | |\n| 1001 | PRESET_ICON_NIGHTLAPSE_PHOTO | |" + id: + description: Unique preset identifier + format: int32 + type: integer + is_fixed: + description: Is this preset mutable? + type: boolean + is_modified: + description: Has the preset been modified from the factory defaults? + type: boolean + mode: + $ref: .enums.yml#/EnumFlatMode + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| -1 | FLAT_MODE_UNKNOWN | |\n| 4 | FLAT_MODE_PLAYBACK + | |\n| 5 | FLAT_MODE_SETUP | |\n| 12 | FLAT_MODE_VIDEO | |\n| 13 | FLAT_MODE_TIME_LAPSE_VIDEO | |\n| 15 | + FLAT_MODE_LOOPING | |\n| 16 | FLAT_MODE_PHOTO_SINGLE | |\n| 17 | FLAT_MODE_PHOTO | |\n| 18 | FLAT_MODE_PHOTO_NIGHT + | |\n| 19 | FLAT_MODE_PHOTO_BURST | |\n| 20 | FLAT_MODE_TIME_LAPSE_PHOTO | |\n| 21 | FLAT_MODE_NIGHT_LAPSE_PHOTO + | |\n| 22 | FLAT_MODE_BROADCAST_RECORD | |\n| 23 | FLAT_MODE_BROADCAST_BROADCAST | |\n| 24 | FLAT_MODE_TIME_WARP_VIDEO + | |\n| 25 | FLAT_MODE_LIVE_BURST | |\n| 26 | FLAT_MODE_NIGHT_LAPSE_VIDEO | |\n| 27 | FLAT_MODE_SLOMO | |\n + | 28 | FLAT_MODE_IDLE | |\n| 29 | FLAT_MODE_VIDEO_STAR_TRAIL | |\n| 30 | FLAT_MODE_VIDEO_LIGHT_PAINTING | |\n + | 31 | FLAT_MODE_VIDEO_LIGHT_TRAIL | |" + setting_array: + items: + $ref: '#/components/schemas/PresetSetting' + type: array + title_id: + $ref: .enums.yml#/EnumPresetTitle + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | PRESET_TITLE_ACTIVITY | |\n| 1 | PRESET_TITLE_STANDARD + | |\n| 2 | PRESET_TITLE_CINEMATIC | |\n| 3 | PRESET_TITLE_PHOTO | |\n| 4 | PRESET_TITLE_LIVE_BURST | |\n| + 5 | PRESET_TITLE_BURST | |\n| 6 | PRESET_TITLE_NIGHT | |\n| 7 | PRESET_TITLE_TIME_WARP | |\n| 8 | PRESET_TITLE_TIME_LAPSE + | |\n| 9 | PRESET_TITLE_NIGHT_LAPSE | |\n| 10 | PRESET_TITLE_VIDEO | |\n| 11 | PRESET_TITLE_SLOMO | |\n| 13 + | PRESET_TITLE_PHOTO_2 | |\n| 14 | PRESET_TITLE_PANORAMA | |\n| 16 | PRESET_TITLE_TIME_WARP_2 | |\n| 18 | PRESET_TITLE_CUSTOM + | |\n| 19 | PRESET_TITLE_AIR | |\n| 20 | PRESET_TITLE_BIKE | |\n| 21 | PRESET_TITLE_EPIC | |\n| 22 | PRESET_TITLE_INDOOR + | |\n| 23 | PRESET_TITLE_MOTOR | |\n| 24 | PRESET_TITLE_MOUNTED | |\n| 25 | PRESET_TITLE_OUTDOOR | |\n| 26 + | PRESET_TITLE_POV | |\n| 27 | PRESET_TITLE_SELFIE | |\n| 28 | PRESET_TITLE_SKATE | |\n| 29 | PRESET_TITLE_SNOW + | |\n| 30 | PRESET_TITLE_TRAIL | |\n| 31 | PRESET_TITLE_TRAVEL | |\n| 32 | PRESET_TITLE_WATER | |\n| 33 | + PRESET_TITLE_LOOPING | |\n| 58 | PRESET_TITLE_BASIC | |\n| 59 | PRESET_TITLE_ULTRA_SLO_MO | |\n| 60 | PRESET_TITLE_STANDARD_ENDURANCE + | |\n| 61 | PRESET_TITLE_ACTIVITY_ENDURANCE | |\n| 62 | PRESET_TITLE_CINEMATIC_ENDURANCE | |\n| 63 | PRESET_TITLE_SLOMO_ENDURANCE + | |\n| 64 | PRESET_TITLE_STATIONARY_1 | |\n| 65 | PRESET_TITLE_STATIONARY_2 | |\n| 66 | PRESET_TITLE_STATIONARY_3 + | |\n| 67 | PRESET_TITLE_STATIONARY_4 | |\n| 68 | PRESET_TITLE_SIMPLE_VIDEO | |\n| 69 | PRESET_TITLE_SIMPLE_TIME_WARP + | |\n| 70 | PRESET_TITLE_SIMPLE_SUPER_PHOTO | |\n| 71 | PRESET_TITLE_SIMPLE_NIGHT_PHOTO | |\n| 72 | PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE + | |\n| 73 | PRESET_TITLE_HIGHEST_QUALITY | |\n| 74 | PRESET_TITLE_EXTENDED_BATTERY | |\n| 75 | PRESET_TITLE_LONGEST_BATTERY + | |\n| 76 | PRESET_TITLE_STAR_TRAIL | |\n| 77 | PRESET_TITLE_LIGHT_PAINTING | |\n| 78 | PRESET_TITLE_LIGHT_TRAIL + | |\n| 79 | PRESET_TITLE_FULL_FRAME | |\n| 82 | PRESET_TITLE_STANDARD_QUALITY_VIDEO | |\n| 83 | PRESET_TITLE_BASIC_QUALITY_VIDEO + | |\n| 93 | PRESET_TITLE_HIGHEST_QUALITY_VIDEO | |\n| 94 | PRESET_TITLE_USER_DEFINED_CUSTOM_NAME | |" + title_number: + description: Preset title number + format: int32 + type: integer + user_defined: + description: Is this preset user defined? + type: boolean + type: object + x-tags: + - Models + PresetGroup: + description: A collection of Presets + properties: + can_add_preset: + description: Is there room in the group to add additional Presets? + type: boolean + icon: + $ref: .enums.yml#/EnumPresetGroupIcon + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | PRESET_GROUP_VIDEO_ICON_ID | |\n| 1 | PRESET_GROUP_PHOTO_ICON_ID + | |\n| 2 | PRESET_GROUP_TIMELAPSE_ICON_ID | |\n| 3 | PRESET_GROUP_LONG_BAT_VIDEO_ICON_ID | |\n| 4 | PRESET_GROUP_ENDURANCE_VIDEO_ICON_ID + | |\n| 5 | PRESET_GROUP_MAX_VIDEO_ICON_ID | |\n| 6 | PRESET_GROUP_MAX_PHOTO_ICON_ID | |\n| 7 | PRESET_GROUP_MAX_TIMELAPSE_ICON_ID + | |" + id: + $ref: .enums.yml#/EnumPresetGroup + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 1000 | PRESET_GROUP_ID_VIDEO | |\n| 1001 | PRESET_GROUP_ID_PHOTO + | |\n| 1002 | PRESET_GROUP_ID_TIMELAPSE | |" + preset_array: + description: Array of Presets contained in this Preset Group + items: + $ref: '#/components/schemas/Preset' + type: array + type: object + x-tags: + - Models + PresetSetting: + description: An individual preset setting that forms the preset's setting array + properties: + id: + description: Setting identifier + format: int32 + type: integer + is_caption: + description: Does this setting appear on the Preset "pill" in the camera UI? + type: boolean + value: + description: Setting value + format: int32 + type: integer + type: object + x-tags: + - Models + SingleMediaListItem: + description: "A single (non-grouped) media item\n\nNote that each property actually comes as a string but is specified + here using its functional value.\n" + properties: + cre: + description: Creation time in seconds since epoch + example: 1696600109 + type: integer + glrv: + description: Low resolution video size + example: 817767 + type: integer + ls: + description: Low resolution file size. -1 if there is no LRV file + example: -1 + type: integer + mod: + description: Time file was last modified in seconds since epoch + example: 1696600109 + type: integer + n: + description: Media filename + example: GOPR0001.JPG + type: string + s: + description: Size of media in bytes + example: 2806303 + type: integer + required: + - n + - cre + - mod + - s + type: object + x-tags: + - Models + State: + description: All settings and statuses + properties: + settings: + description: All currently known setting values indexed by setting ID + properties: + 2: + description: "**Video Resolution**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 1 | Video Resolution 4K | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n + | 4 | Video Resolution 2 7K | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n + | 6 | Video Resolution 2 7K 4By3 | HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 7 | Video + Resolution 1440 | HERO9 Black |\n| 9 | Video Resolution 1080 | HERO12 Black, HERO11 Black Mini, HERO11 Black, + HERO10 Black, HERO9 Black |\n| 18 | Video Resolution 4K 4By3 | HERO12 Black, HERO11 Black Mini, HERO11 Black, + HERO10 Black, HERO9 Black |\n| 24 | Video Resolution 5K | HERO9 Black |\n| 25 | Video Resolution 5K 4By3 | + HERO10 Black |\n| 26 | Video Resolution 5 3K 8By7 | HERO11 Black Mini, HERO11 Black |\n| 27 | Video Resolution + 5 3K 4By3 | HERO11 Black Mini, HERO11 Black |\n| 28 | Video Resolution 4K 8By7 | HERO11 Black Mini, HERO11 + Black |\n| 100 | Video Resolution 5 3K | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black |\n| + 107 | Video Resolution 5 3K 8By7 V2 | HERO12 Black |\n| 108 | Video Resolution 4K 8By7 V2 | HERO12 Black |\n + | 109 | Video Resolution 4K 9By16 V2 | HERO12 Black |\n| 110 | Video Resolution 1080 9By16 V2 | HERO12 Black + |\n| 111 | Video Resolution 2 7K 4By3 V2 | HERO12 Black |\n" + enum: + - 1 + - 4 + - 6 + - 7 + - 9 + - 18 + - 24 + - 25 + - 26 + - 27 + - 28 + - 100 + - 107 + - 108 + - 109 + - 110 + - 111 + type: integer + 3: + description: "**Video Fps**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n + - HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 0 | Video Fps 240 | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 1 | + Video Fps 120 | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 2 | Video Fps + 100 | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 5 | Video Fps 60 | HERO12 + Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 6 | Video Fps 50 | HERO12 Black, HERO11 + Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 8 | Video Fps 30 | HERO12 Black, HERO11 Black Mini, + HERO11 Black, HERO10 Black, HERO9 Black |\n| 9 | Video Fps 25 | HERO12 Black, HERO11 Black Mini, HERO11 Black, + HERO10 Black, HERO9 Black |\n| 10 | Video Fps 24 | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, + HERO9 Black |\n| 13 | Video Fps 200 | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black + |\n" + enum: + - 0 + - 1 + - 2 + - 5 + - 6 + - 8 + - 9 + - 10 + - 13 + type: integer + 43: + description: "**Broadcast Fov**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n + - HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 0 | Broadcast Fov Wide | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n + | 2 | Broadcast Fov Narrow | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n + | 3 | Broadcast Fov Superview | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n + | 4 | Broadcast Fov Linear | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n" + enum: + - 0 + - 2 + - 3 + - 4 + type: integer + 59: + description: "**Setup Auto Power Down**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 0 | Setup Auto Power Down Never | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 + Black |\n| 1 | Setup Auto Power Down 1 Min | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n| 4 | Setup + Auto Power Down 5 Min | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 6 | + Setup Auto Power Down 15 Min | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 7 | Setup Auto Power + Down 30 Min | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 11 | Setup Auto Power Down 8 Seconds + | HERO11 Black Mini |\n| 12 | Setup Auto Power Down 30 Seconds | HERO11 Black Mini |\n" + enum: + - 0 + - 1 + - 4 + - 6 + - 7 + - 11 + - 12 + type: integer + 108: + description: "**Video Aspect Ratio**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Video Aspect Ratio 4By3 | HERO12 Black |\n| 1 | + Video Aspect Ratio 16By9 | HERO12 Black |\n| 3 | Video Aspect Ratio 8By7 | HERO12 Black |\n| 4 | Video Aspect + Ratio 9By16 | HERO12 Black |\n" + enum: + - 0 + - 1 + - 3 + - 4 + type: integer + 121: + description: "**Video Digital Lenses**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 0 | Video Digital Lenses Wide | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black + |\n| 2 | Video Digital Lenses Narrow | HERO10 Black, HERO9 Black |\n| 3 | Video Digital Lenses Superview | + HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 4 | Video Digital Lenses Linear + | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 7 | Video Digital Lenses Max + Superview | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black |\n| 8 | Video Digital + Lenses Linear Plus Horizon Leveling | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black + |\n| 9 | Video Digital Lenses Hyperview | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n| 10 | Video Digital + Lenses Linear Plus Horizon Lock | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n| 11 | Video Digital Lenses + Max Hyperview | HERO12 Black |\n" + enum: + - 0 + - 2 + - 3 + - 4 + - 7 + - 8 + - 9 + - 10 + - 11 + type: integer + 122: + description: "**Photo Digital Lenses**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 19 + | Photo Digital Lenses Narrow | HERO10 Black, HERO9 Black |\n| 100 | Photo Digital Lenses Max Superview | + HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 101 | Photo Digital Lenses Wide | HERO12 Black, + HERO11 Black, HERO10 Black, HERO9 Black |\n| 102 | Photo Digital Lenses Linear | HERO12 Black, HERO11 Black, + HERO10 Black, HERO9 Black |\n" + enum: + - 19 + - 100 + - 101 + - 102 + type: integer + 123: + description: "**Multi Shot Digital Lenses**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 + Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 19 | Multi Shot Digital Lenses Narrow | HERO10 Black, HERO9 Black |\n| 100 | Multi Shot Digital Lenses + Max Superview | HERO10 Black |\n| 101 | Multi Shot Digital Lenses Wide | HERO12 Black, HERO11 Black, HERO10 + Black, HERO9 Black |\n| 102 | Multi Shot Digital Lenses Linear | HERO12 Black, HERO11 Black, HERO10 Black, + HERO9 Black |\n" + enum: + - 19 + - 100 + - 101 + - 102 + type: integer + 128: + description: "**General Format**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 13 + | General Format Time Lapse Video | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 20 | General + Format Time Lapse Photo | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 21 | General Format Night + Lapse Photo | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 26 | General Format Night Lapse Video + | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n" + enum: + - 13 + - 20 + - 21 + - 26 + type: integer + 134: + description: "**Setup Anti Flicker**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 2 | Setup Anti Flicker 60 Hz | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black + |\n| 3 | Setup Anti Flicker 50 Hz | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black + |\n" + enum: + - 2 + - 3 + type: integer + 135: + description: "**Video Hypersmooth**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 0 | Video Hypersmooth Off | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO10 Black, HERO9 Black + |\n| 1 | Video Hypersmooth On | HERO12 Black, HERO11 Black Mini, HERO11 Black, HERO9 Black |\n| 2 | Video + Hypersmooth High | HERO10 Black, HERO9 Black |\n| 3 | Video Hypersmooth Boost | HERO11 Black Mini, HERO11 + Black, HERO10 Black, HERO9 Black |\n| 4 | Video Hypersmooth Auto Boost | HERO12 Black, HERO11 Black Mini, + HERO11 Black |\n| 100 | Video Hypersmooth Standard | HERO10 Black |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 100 + type: integer + 150: + description: "**Video Horizon Levelling**\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n\n| Value | Meaning |\ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Video Horizon Levelling Off | HERO11 + Black |\n| 2 | Video Horizon Levelling Locked | HERO11 Black |\n" + enum: + - 0 + - 2 + type: integer + 151: + description: "**Photo Horizon Levelling**\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n\n| Value | Meaning |\ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Photo Horizon Levelling Off | HERO11 + Black |\n| 2 | Photo Horizon Levelling Locked | HERO11 Black |\n" + enum: + - 0 + - 2 + type: integer + 162: + description: "**Mods Max Lens Enable**\n\nSupported Cameras:\n\n\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n + \n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Mods Max Lens + Enable Off | HERO11 Black, HERO10 Black, HERO9 Black |\n| 1 | Mods Max Lens Enable On | HERO11 Black, HERO10 + Black, HERO9 Black |\n" + enum: + - 0 + - 1 + type: integer + 167: + description: "**Video Hindsight Length**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 + Black\n- HERO9 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- + |\n| 2 | Video Hindsight Length 15 Seconds | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 3 + | Video Hindsight Length 30 Seconds | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n| 4 | Video + Hindsight Length Off | HERO12 Black, HERO11 Black, HERO10 Black, HERO9 Black |\n" + enum: + - 2 + - 3 + - 4 + type: integer + 171: + description: "**Photo Single Interval**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | \ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Photo Single Interval Off | HERO12 + Black |\n| 2 | Photo Single Interval 0 5 Seconds | HERO12 Black |\n| 3 | Photo Single Interval 1 Second | + HERO12 Black |\n| 4 | Photo Single Interval 2 Seconds | HERO12 Black |\n| 5 | Photo Single Interval 5 Seconds + | HERO12 Black |\n| 6 | Photo Single Interval 10 Seconds | HERO12 Black |\n| 7 | Photo Single Interval 30 + Seconds | HERO12 Black |\n| 8 | Photo Single Interval 60 Seconds | HERO12 Black |\n| 9 | Photo Single Interval + 120 Seconds | HERO12 Black |\n| 10 | Photo Single Interval 3 Seconds | HERO12 Black |\n" + enum: + - 0 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + 172: + description: "**Photo Interval Duration**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning |\ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Photo Interval Duration Off | HERO12 + Black |\n| 1 | Photo Interval Duration 15 Seconds | HERO12 Black |\n| 2 | Photo Interval Duration 30 Seconds + | HERO12 Black |\n| 3 | Photo Interval Duration 1 Minute | HERO12 Black |\n| 4 | Photo Interval Duration 5 + Minutes | HERO12 Black |\n| 5 | Photo Interval Duration 15 Minutes | HERO12 Black |\n| 6 | Photo Interval + Duration 30 Minutes | HERO12 Black |\n| 7 | Photo Interval Duration 1 Hour | HERO12 Black |\n| 8 | Photo Interval + Duration 2 Hours | HERO12 Black |\n| 9 | Photo Interval Duration 3 Hours | HERO12 Black |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + type: integer + 173: + description: "**System Power Profile**\n\nSupported Cameras:\n\n\n- HERO10 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | System Power Profile Maximum Video Performance + | HERO10 Black |\n| 1 | System Power Profile Extended Battery | HERO10 Black |\n| 2 | System Power Profile + Tripod Stationary Video | HERO10 Black |\n" + enum: + - 0 + - 1 + - 2 + type: integer + 175: + description: "**Setup Camera Ux Mode**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n\n\n| Value + | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Setup Camera Ux Mode Easy + | HERO12 Black, HERO11 Black |\n| 1 | Setup Camera Ux Mode Pro | HERO12 Black, HERO11 Black |\n" + enum: + - 0 + - 1 + type: integer + 176: + description: "**Video Easy Mode Speed**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n\n\n| Value + | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Video Easy Mode Speed 8X + Ultra Slo Mo | HERO11 Black |\n| 1 | Video Easy Mode Speed 4X Super Slo Mo | HERO11 Black |\n| 2 | Video Easy + Mode Speed 2X Slo Mo | HERO11 Black |\n| 3 | Video Easy Mode Speed 1X Speed Low Light | HERO11 Black |\n| + 4 | Video Easy Mode Speed Eb 4X Super Slo Mo | HERO11 Black |\n| 5 | Video Easy Mode Speed Eb 2X Slo Mo | + HERO11 Black |\n| 6 | Video Easy Mode Speed Eb 1X Speed Low Light | HERO11 Black |\n| 7 | Video Easy Mode + Speed 8X Ultra Slo Mo 50Hz | HERO11 Black |\n| 8 | Video Easy Mode Speed 4X Super Slo Mo 50Hz | HERO11 Black + |\n| 9 | Video Easy Mode Speed 2X Slo Mo 50Hz | HERO11 Black |\n| 10 | Video Easy Mode Speed 1X Speed Low + Light 50Hz | HERO11 Black |\n| 11 | Video Easy Mode Speed Eb 4X Super Slo Mo 50Hz | HERO11 Black |\n| 12 | + Video Easy Mode Speed Eb 2X Slo Mo 50Hz | HERO11 Black |\n| 13 | Video Easy Mode Speed Eb 1X Speed Low Light + 50Hz | HERO11 Black |\n| 14 | Video Easy Mode Speed Eb 8X Ultra Slo Mo | HERO11 Black |\n| 15 | Video Easy + Mode Speed Eb 8X Ultra Slo Mo 50Hz | HERO11 Black |\n| 16 | Video Easy Mode Speed Lb 8X Ultra Slo Mo | HERO11 + Black |\n| 17 | Video Easy Mode Speed Lb 4X Super Slo Mo | HERO11 Black |\n| 18 | Video Easy Mode Speed Lb + 2X Slo Mo | HERO11 Black |\n| 19 | Video Easy Mode Speed Lb 1X Speed Low Light | HERO11 Black |\n| 20 | Video + Easy Mode Speed Lb 8X Ultra Slo Mo 50Hz | HERO11 Black |\n| 21 | Video Easy Mode Speed Lb 4X Super Slo Mo + 50Hz | HERO11 Black |\n| 22 | Video Easy Mode Speed Lb 2X Slo Mo 50Hz | HERO11 Black |\n| 23 | Video Easy + Mode Speed Lb 1X Speed Low Light 50Hz | HERO11 Black |\n| 24 | Video Easy Mode Speed 2X Slo Mo 4K | HERO11 + Black |\n| 25 | Video Easy Mode Speed 4X Super Slo Mo 2 7K | HERO11 Black |\n| 26 | Video Easy Mode Speed + 2X Slo Mo 4K 50Hz | HERO11 Black |\n| 27 | Video Easy Mode Speed 4X Super Slo Mo 2 7K 50Hz | HERO11 Black + |\n| 100 | Video Easy Mode Speed 8X Ultra Slo Mo V2 | HERO12 Black |\n| 101 | Video Easy Mode Speed 4X Super + Slo Mo V2 | HERO12 Black |\n| 102 | Video Easy Mode Speed 2X Slo Mo V2 | HERO12 Black |\n| 103 | Video Easy + Mode Speed 1X Speed Low Light V2 | HERO12 Black |\n| 104 | Video Easy Mode Speed 8X Ultra Slo Mo 50Hz V2 | + HERO12 Black |\n| 105 | Video Easy Mode Speed 4X Super Slo Mo 50Hz V2 | HERO12 Black |\n| 106 | Video Easy + Mode Speed 2X Slo Mo 50Hz V2 | HERO12 Black |\n| 107 | Video Easy Mode Speed 1X Speed Low Light 50Hz V2 | + HERO12 Black |\n| 108 | Video Easy Mode Speed Lb 8X Ultra Slo Mo V2 | HERO12 Black |\n| 109 | Video Easy Mode + Speed Lb 4X Super Slo Mo V2 | HERO12 Black |\n| 110 | Video Easy Mode Speed Lb 2X Slo Mo V2 | HERO12 Black + |\n| 111 | Video Easy Mode Speed Lb 1X Speed Low Light V2 | HERO12 Black |\n| 112 | Video Easy Mode Speed + Lb 8X Ultra Slo Mo 50Hz V2 | HERO12 Black |\n| 113 | Video Easy Mode Speed Lb 4X Super Slo Mo 50Hz V2 | HERO12 + Black |\n| 114 | Video Easy Mode Speed Lb 2X Slo Mo 50Hz V2 | HERO12 Black |\n| 115 | Video Easy Mode Speed + Lb 1X Speed Low Light 50Hz V2 | HERO12 Black |\n| 116 | Video Easy Mode Speed 2X Slo Mo 4K V2 | HERO12 Black + |\n| 117 | Video Easy Mode Speed 2X Slo Mo 4K 50Hz V2 | HERO12 Black |\n| 118 | Video Easy Mode Speed Mobile + 1X Speed Low Light V2 | HERO12 Black |\n| 119 | Video Easy Mode Speed Mobile 1X Speed Low Light 50Hz V2 | + HERO12 Black |\n| 120 | Video Easy Mode Speed Mobile 2X Slo Mo V2 | HERO12 Black |\n| 121 | Video Easy Mode + Speed Mobile 2X Slo Mo 50Hz V2 | HERO12 Black |\n| 122 | Video Easy Mode Speed Universal 1X Speed Low Light + V2 | HERO12 Black |\n| 123 | Video Easy Mode Speed Universal 1X Speed Low Light 50Hz V2 | HERO12 Black |\n + | 124 | Video Easy Mode Speed Universal 2X Slo Mo V2 | HERO12 Black |\n| 125 | Video Easy Mode Speed Universal + 2X Slo Mo 50Hz V2 | HERO12 Black |\n| 126 | Video Easy Mode Speed 1X Speed Low Light 4K V2 | HERO12 Black + |\n| 127 | Video Easy Mode Speed 1X Speed Low Light 4K 50Hz V2 | HERO12 Black |\n| 128 | Video Easy Mode Speed + 1X Speed Low Light 2 7K V2 | HERO12 Black |\n| 129 | Video Easy Mode Speed 1X Speed Low Light 2 7K 50Hz V2 + | HERO12 Black |\n| 130 | Video Easy Mode Speed 2X Slo Mo 2 7K V2 | HERO12 Black |\n| 131 | Video Easy Mode + Speed 2X Slo Mo 2 7K 50Hz V2 | HERO12 Black |\n| 132 | Video Easy Mode Speed Mobile Lb 2X Slo Mo V2 | HERO12 + Black |\n| 133 | Video Easy Mode Speed Mobile Lb 2X Slo Mo 50Hz V2 | HERO12 Black |\n| 134 | Video Easy Mode + Speed Mobile Lb 1X Speed Low Light V2 | HERO12 Black |\n| 135 | Video Easy Mode Speed Mobile Lb 1X Speed Low + Light 50Hz V2 | HERO12 Black |\n| 136 | Video Easy Mode Speed Universal 1X Speed Low Light 4K V2 | HERO12 + Black |\n| 137 | Video Easy Mode Speed Universal 1X Speed Low Light 4K 50Hz V2 | HERO12 Black |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 20 + - 21 + - 22 + - 23 + - 24 + - 25 + - 26 + - 27 + - 100 + - 101 + - 102 + - 103 + - 104 + - 105 + - 106 + - 107 + - 108 + - 109 + - 110 + - 111 + - 112 + - 113 + - 114 + - 115 + - 116 + - 117 + - 118 + - 119 + - 120 + - 121 + - 122 + - 123 + - 124 + - 125 + - 126 + - 127 + - 128 + - 129 + - 130 + - 131 + - 132 + - 133 + - 134 + - 135 + - 136 + - 137 + type: integer + 177: + description: "**Photo Easy Mode Night Photo**\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n\n| Value | Meaning + | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Photo Easy Mode Night Photo Off | + HERO11 Black |\n| 1 | Photo Easy Mode Night Photo On | HERO11 Black |\n" + enum: + - 0 + - 1 + type: integer + 178: + description: "**Wireless Wireless Band**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Wireless + Wireless Band 2 4 Ghz | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n| 1 | Wireless Wireless Band 5 Ghz + | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n" + enum: + - 0 + - 1 + type: integer + 179: + description: "**Multi Shot Trail Length**\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- + HERO11 Black\n\n\n| Value | Meaning | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 1 + | Multi Shot Trail Length Short | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n| 2 | Multi Shot Trail + Length Long | HERO12 Black, HERO11 Black Mini, HERO11 Black |\n| 3 | Multi Shot Trail Length Max | HERO12 + Black, HERO11 Black Mini, HERO11 Black |\n" + enum: + - 1 + - 2 + - 3 + type: integer + 180: + description: "**System Video Mode**\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | System Video Mode Highest Quality | HERO11 Black + |\n| 101 | System Video Mode Extended Battery Green | HERO11 Black |\n| 102 | System Video Mode Longest Battery + Green | HERO11 Black |\n" + enum: + - 0 + - 101 + - 102 + type: integer + 182: + description: "**System Video Bit Rate**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | \ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | System Video Bit Rate Standard | HERO12 + Black |\n| 1 | System Video Bit Rate High | HERO12 Black |\n" + enum: + - 0 + - 1 + type: integer + 183: + description: "**System Video Bit Depth**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning |\ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | System Video Bit Depth 8Bit | HERO12 + Black |\n| 2 | System Video Bit Depth 10Bit | HERO12 Black |\n" + enum: + - 0 + - 2 + type: integer + 184: + description: "**Video Profile**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Video Profile Standard | HERO12 Black |\n| 1 | + Video Profile Hdr | HERO12 Black |\n| 2 | Video Profile 10 Bit Log | HERO12 Black |\n" + enum: + - 0 + - 1 + - 2 + type: integer + 186: + description: "**Video Easy Presets**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Video Easy Presets Highest Quality | HERO12 Black + |\n| 1 | Video Easy Presets Standard Quality | HERO12 Black |\n| 2 | Video Easy Presets Basic Quality | HERO12 + Black |\n" + enum: + - 0 + - 1 + - 2 + type: integer + 187: + description: "**Multi Shot Easy Presets**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning |\ + \ Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Multi Shot Easy Presets Lapse Mode + Time Warp | HERO12 Black |\n| 1 | Multi Shot Easy Presets Lapse Mode Star Trails | HERO12 Black |\n| 2 | Multi + Shot Easy Presets Lapse Mode Light Painting | HERO12 Black |\n| 3 | Multi Shot Easy Presets Lapse Mode Vehicle + Lights | HERO12 Black |\n| 4 | Multi Shot Easy Presets Max Lapse Mode Time Warp | HERO12 Black |\n| 5 | Multi + Shot Easy Presets Max Lapse Mode Star Trails | HERO12 Black |\n| 6 | Multi Shot Easy Presets Max Lapse Mode + Light Painting | HERO12 Black |\n| 7 | Multi Shot Easy Presets Max Lapse Mode Vehicle Lights | HERO12 Black + |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + type: integer + 189: + description: "**System Addon Lens Active**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning + | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | System Addon Lens Active None | HERO12 + Black |\n| 1 | System Addon Lens Active Max Lens 1 0 | HERO12 Black |\n| 2 | System Addon Lens Active Max + Lens 2 0 | HERO12 Black |\n" + enum: + - 0 + - 1 + - 2 + type: integer + 190: + description: "**System Addon Lens Status**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning + | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | System Addon Lens Status Off | HERO12 + Black |\n| 1 | System Addon Lens Status On | HERO12 Black |\n" + enum: + - 0 + - 1 + type: integer + 191: + description: "**Photo Easy Presets**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Photo Easy Presets Super Photo | HERO12 Black |\n + | 1 | Photo Easy Presets Night Photo | HERO12 Black |\n" + enum: + - 0 + - 1 + type: integer + 192: + description: "**Multi Shot Nlv Aspect Ratio**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning + | Supported Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Multi Shot Nlv Aspect Ratio 4By3 | + HERO12 Black |\n| 1 | Multi Shot Nlv Aspect Ratio 16By9 | HERO12 Black |\n| 3 | Multi Shot Nlv Aspect Ratio + 8By7 | HERO12 Black |\n" + enum: + - 0 + - 1 + - 3 + type: integer + 193: + description: "**Video Easy Framing**\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n| Value | Meaning | Supported + Cameras |\n| ----- | ------- | ----------------- |\n| 0 | Video Easy Framing Widescreen | HERO12 Black |\n + | 1 | Video Easy Framing Vertical | HERO12 Black |\n| 2 | Video Easy Framing Full Frame | HERO12 Black |\n" + enum: + - 0 + - 1 + - 2 + type: integer + type: object + status: + description: All currently known status values indexed by status ID + properties: + 1: + description: "**Is the system's internal battery present?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 2: + description: "**Rough approximation of internal battery level in bars**\n\n\n| Value | Meaning |\n| ----- | + ------- |\n| 0 | Zero |\n| 1 | One |\n| 2 | Two |\n| 3 | Three |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + type: integer + 6: + description: "**Is the system currently overheating?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 8: + description: "**Is the camera busy?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- + HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 9: + description: "**Is Quick Capture feature enabled?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 10: + description: "**Is the system encoding right now?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 11: + description: "**Is LCD lock active?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- + HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 13: + description: "**When encoding video, this is the duration (seconds) of the video so far; 0 otherwise**\n\n\n + \nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 17: + description: "**Are Wireless Connections enabled?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 19: + description: "**The pairing state of the camera**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Never + Started |\n| 1 | Started |\n| 2 | Aborted |\n| 3 | Cancelled |\n| 4 | Completed |\n\n\nSupported Cameras:\n + \n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + type: integer + 20: + description: "**The last type of pairing that the camera was engaged in**\n\n\n| Value | Meaning |\n| ----- + | ------- |\n| 0 | Not Pairing |\n| 1 | Pairing App |\n| 2 | Pairing Remote Control |\n| 3 | Pairing Bluetooth + Device |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + type: integer + 21: + description: "**Time (milliseconds) since boot of last successful pairing complete action**\n\n\n\nSupported + Cameras:\n\n\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 22: + description: "**State of current scan for WiFi Access Points. Appears to only change for CAH-related scans**\n + \n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Never started |\n| 1 | Started |\n| 2 | Aborted |\n| 3 + | Canceled |\n| 4 | Completed |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + type: integer + 23: + description: "**The time, in milliseconds since boot that the WiFi Access Point scan completed**\n\n\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 24: + description: "**WiFi AP provisioning state**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Never started + |\n| 1 | Started |\n| 2 | Aborted |\n| 3 | Canceled |\n| 4 | Completed |\n\n\nSupported Cameras:\n\n\n- HERO12 + Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + type: integer + 26: + description: "**Wireless remote control version**\n\n\n\nSupported Cameras:\n\n\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 27: + description: "**Is a wireless remote control connected?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 28: + description: "**Wireless Pairing State. Each bit contains state information (see WirelessPairingStateFlags)**\n + \n\n\nSupported Cameras:\n\n\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 29: + description: "**Provisioned WIFI AP SSID. On BLE connection, value is big-endian byte-encoded int**\n\n\n\n + Supported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: string + 30: + description: "**Camera's WIFI SSID. On BLE connection, value is big-endian byte-encoded int**\n\n\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: string + 31: + description: "**The number of wireless devices connected to the camera**\n\n\n\nSupported Cameras:\n\n\n- HERO12 + Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 32: + description: "**Is Preview Stream enabled?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 33: + description: "**Primary Storage Status**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| -1 | Unknown |\n| + 0 | OK |\n| 1 | SD Card Full |\n| 2 | SD Card Removed |\n| 3 | SD Card Format Error |\n| 4 | SD Card Busy + |\n| 8 | SD Card Swapped |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n + - HERO10 Black\n- HERO9 Black" + enum: + - -1 + - 0 + - 1 + - 2 + - 3 + - 4 + - 8 + type: integer + 34: + description: "**How many photos can be taken before sdcard is full**\n\n\n\nSupported Cameras:\n\n\n- HERO12 + Black\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 35: + description: "**How many minutes of video can be captured with current settings before sdcard is full**\n\n\n + \nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 38: + description: "**Total number of photos on sdcard**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 39: + description: "**Total number of videos on sdcard**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 41: + description: "**The current status of Over The Air (OTA) update**\n\n\n| Value | Meaning |\n| ----- | ------- + |\n| 0 | Idle |\n| 1 | Downloading |\n| 2 | Verifying |\n| 3 | Download Failed |\n| 4 | Verify Failed |\n + | 5 | Ready |\n| 6 | GoPro App: Downloading |\n| 7 | GoPro App: Verifying |\n| 8 | GoPro App: Download Failed + |\n| 9 | GoPro App: Verify Failed |\n| 10 | GoPro App: Ready |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + 42: + description: "**Is there a pending request to cancel a firmware update download?**\n\n\n\nSupported Cameras:\n + \n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 45: + description: "**Is locate camera feature active?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 49: + description: "**The current timelapse interval countdown value (e.g. 5...4...3...2...1...)**\n\n\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 54: + description: "**Remaining space on the sdcard in Kilobytes**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 55: + description: "**Is preview stream supported in current recording/mode/secondary-stream?**\n\n\n\nSupported Cameras:\n + \n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 56: + description: "**WiFi signal strength in bars**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 58: + description: "**The number of hilights in encoding video (set to 0 when encoding stops)**\n\n\n\nSupported Cameras:\n + \n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 59: + description: "**Time since boot (msec) of most recent hilight in encoding video (set to 0 when encoding stops)**\n + \n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 + Black" + type: integer + 60: + description: "**The min time between camera status updates (msec). Do not poll for status more often than this**\n + \n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 + Black" + type: integer + 64: + description: "**How many min of Timelapse video can be captured with current settings before sdcard is full**\n + \n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 + Black" + type: integer + 65: + description: "**Liveview Exposure Select Mode**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Disabled + |\n| 1 | Auto |\n| 2 | ISO Lock |\n| 3 | Hemisphere |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + type: integer + 66: + description: "**Liveview Exposure Select: y-coordinate (percent)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + maximum: 100 + minimum: 0 + type: integer + 67: + description: "**Liveview Exposure Select: y-coordinate (percent)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + maximum: 100 + minimum: 0 + type: integer + 68: + description: "**Does the camera currently have a GPS lock?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 69: + description: "**Is the camera in AP Mode?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 70: + description: "**Internal battery level (percent)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + maximum: 100 + minimum: 0 + type: integer + 74: + description: "**Microphone Accesstory (Garter) status**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | + Garter not connected |\n| 1 | Garter connected |\n| 2 | Garter connected and microphone plugged into Garter + |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 + Black" + enum: + - 0 + - 1 + - 2 + type: integer + 75: + description: "**Digital Zoom level (percent)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + maximum: 100 + minimum: 0 + type: integer + 76: + description: "**Wireless Band**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | 2.4 GHz |\n| 1 | 5 GHz + |\n| 2 | Max |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 + Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + type: integer + 77: + description: "**Is Digital Zoom feature available?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 78: + description: "**Are current video settings mobile friendly? (related to video compression and frame rate)**\n + \n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 + Black" + enum: + - 0 + - 1 + type: integer + 79: + description: "**Is the camera currently in First Time Use (FTU) UI flow?**\n\n\n\nSupported Cameras:\n\n\n- + HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 81: + description: "**Is 5GHz wireless band available?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 82: + description: "**Is the system ready to accept commands?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 83: + description: "**Is the internal battery charged sufficiently to start Over The Air (OTA) update?**\n\n\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 85: + description: "**Is the camera getting too cold to continue recording?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 + Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 86: + description: "**The rotational orientation of the camera**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| + 0 | 0 degrees (upright) |\n| 1 | 180 degrees (upside down) |\n| 2 | 90 degrees (laying on right side) |\n + | 3 | 270 degrees (laying on left side) |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + type: integer + 88: + description: "**Is this camera capable of zooming while encoding (static value based on model, not settings)**\n + \n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 + Black" + enum: + - 0 + - 1 + type: integer + 89: + description: "**Current flatmode ID**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- + HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 93: + description: "**Current Video Preset (ID)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 94: + description: "**Current Photo Preset (ID)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n + - HERO10 Black\n- HERO9 Black" + type: integer + 95: + description: "**Current Timelapse Preset (ID)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 96: + description: "**Current Preset Group (ID) (corresponds to ui_mode_groups in settings.json)**\n\n\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 97: + description: "**Current Preset (ID)**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- + HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 98: + description: "**Preset Modified Status, which contains an event ID and a preset (group) ID**\n\n\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 99: + description: "**How many Live Bursts can be captured before sdcard is full**\n\n\n\nSupported Cameras:\n\n\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + type: integer + 100: + description: "**Total number of Live Bursts on sdcard**\n\n\n\nSupported Cameras:\n\n\n- HERO11 Black\n- HERO10 + Black\n- HERO9 Black" + type: integer + 101: + description: "**Is Capture Delay currently active (i.e. counting down)?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 + Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 102: + description: "**Borg State**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Borg microphone removed |\n + | 2 | Borg microphone only |\n| 3 | Borg microphone with external microphone |\n\n\nSupported Cameras:\n\n + \n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 2 + - 3 + type: integer + 103: + description: "**Time Warp Speed**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | 15x |\n| 1 | 30x |\n + | 2 | 60x |\n| 3 | 150x |\n| 4 | 300x |\n| 5 | 900x |\n| 6 | 1800x |\n| 7 | 2x |\n| 8 | 5x |\n| 9 | 10x |\n + | 10 | Auto |\n| 11 | 1x (realtime) |\n| 12 | 1/2x (slow-motion) |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + type: integer + 104: + description: "**Is the system's Linux core active?**\n\n\n\nSupported Cameras:\n\n\n- HERO10 Black\n- HERO9 + Black" + enum: + - 0 + - 1 + type: integer + 105: + description: "**Camera lens type (reflects changes to setting 162 or setting 189)**\n\n\n| Value | Meaning |\n + | ----- | ------- |\n| 0 | Default |\n| 1 | Max Lens |\n| 2 | Max Lens 2.0 |\n\n\nSupported Cameras:\n\n\n + - HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + type: integer + 106: + description: "**Is Video Hindsight Capture Active?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 107: + description: "**Scheduled Capture Preset ID**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n + - HERO10 Black\n- HERO9 Black" + type: integer + 108: + description: "**Is Scheduled Capture set?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n + - HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 110: + description: "**Media Mode Status (bitmasked)**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | 000 = Headroom: + 0, HDMI: 0, Media Mod Connected: False |\n| 1 | 001 = Headroom: 0, HDMI: 0, Media Mod Connected: True |\n + | 2 | 010 = Headroom: 0, HDMI: 1, Media Mod Connected: False |\n| 3 | 011 = Headroom: 0, HDMI: 1, Media Mod + Connected: True |\n| 4 | 100 = Headroom: 1, HDMI: 0, Media Mod Connected: False |\n| 5 | 101 = Headroom: 1, + HDMI: 0, Media Mod Connected: True |\n| 6 | 110 = Headroom: 1, HDMI: 1, Media Mod Connected: False |\n| 7 + | 111 = Headroom: 1, HDMI: 1, Media Mod Connected: True |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + type: integer + 111: + description: "**Does sdcard meet specified minimum write speed?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black" + enum: + - 0 + - 1 + type: integer + 112: + description: "**Number of sdcard write speed errors since device booted**\n\n\n\nSupported Cameras:\n\n\n- HERO12 + Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black" + type: integer + 113: + description: "**Is Turbo Transfer active?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black" + enum: + - 0 + - 1 + type: integer + 114: + description: "**Camera control status ID**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Camera Idle: + No one is attempting to change camera settings |\n| 1 | Camera Control: Camera is in a menu or changing settings. + To intervene, app must request control |\n| 2 | Camera External Control: An outside entity (app) has control + and is in a menu or modifying settings |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black" + enum: + - 0 + - 1 + - 2 + type: integer + 115: + description: "**Is the camera connected to a PC via USB?**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- + HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black" + enum: + - 0 + - 1 + type: integer + 116: + description: "**Camera control over USB state**\n\n\n| Value | Meaning |\n| ----- | ------- |\n| 0 | Disabled + |\n| 1 | Enabled |\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 + Black" + enum: + - 0 + - 1 + type: integer + 117: + description: "**Total SD card capacity in Kilobytes**\n\n\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 + Black Mini\n- HERO11 Black" + type: integer + type: object + type: object + x-tags: + - Models + VideoMetadata: + description: "Metadata for a video media file\n\nNote that each property actually comes as a string but is specified + here using its functional value.\n" + properties: + ao: + description: Audio option + enum: + - auto + - wind + - stereo + - off + example: auto + type: string + avc_profile: + description: Advanced Video Code Profile + example: 0 + maximum: 255 + minimum: 0 + type: integer + cl: + description: 1 if clipped, 0 otherwise + enum: + - 0 + - 1 + type: integer + cre: + description: Creation time in seconds since epoch + example: 1692992748 + type: integer + ct: + description: "Media content type\n\n| ID | Mode |\n| -- | ---- |\n| Video | 0 |\n| Looping | 1 |\n| Chaptered Video + | 2 |\n| Time Lapse | 3 |\n| Single Photo | 4 |\n| Burst Photo | 5 |\n| Time Lapse Photo | 6 |\n| Night Lapse + Photo | 8 |\n| Night Photo | 9 |\n| Continuous Photo | 10 |\n| Raw Photo | 11 |\n| Live Burst | 12 |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 8 + - 9 + - 10 + - 11 + - 12 + type: integer + dur: + description: Video duration in seconds + example: 42 + type: integer + eis: + description: 1 if stabilized, 0 otherwise + enum: + - 0 + - 1 + type: integer + fov: + description: Field of View + type: string + fps: + description: Video frame rate numerator + example: 1001 + type: integer + fps_denom: + description: Video frame rate denominator + example: 30000 + type: integer + gumi: + description: Globally Unique Media ID + example: '12345678998765443211234567899875' + type: string + h: + description: Height of media in pixels + example: 1080 + type: integer + hc: + description: Number of hilights in media + maximum: 99 + minimum: 0 + type: integer + hi: + description: List of hilights in ms offset from start of video + example: + - 1500 + - 4700 + items: + type: integer + type: array + lc: + description: Lens configuration ==> 0 for front, 1 for rear + enum: + - 0 + - 1 + type: integer + ls: + description: Low Resolution Video file size in bytes. -1 if there is no LRV file + maximum: 1234567890 + minimum: -1 + type: integer + mos: + description: List of offload states + example: + - app + - pc + items: + enum: + - app + - pc + - other + type: string + type: array + mp: + description: 1 if metadata is present, 0 otherwise + enum: + - 0 + - 1 + type: integer + prjn: + description: "Lens projection\n\n| ID | Mode |\n| -- | ---- |\n| EAC | 0 |\n| ERP | 1 |\n| EAC, split horizontally + in the middle for 2 output | 2 |\n| ERP, cropped for panorama | 3 |\n| Bypass stitch algorithm, side by side circles + | 4 |\n| Stitch is disabled, stitch algorithm is enabled for offline stitch | 5 |\n| Stitch is disabled| 6 |\n + | Bypass stitch algorithm for EAC split | 7 |\n| Hemisheric | 8 |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + type: integer + profile: + description: Advanced Video Codec Level + maximum: 255 + minimum: 0 + type: integer + progr: + description: Is video progressive? 1 if progressive, 0 if interlaced + enum: + - 0 + - 1 + type: integer + pta: + description: 1 if protune audio is present, 0 otherwise + enum: + - 0 + - 1 + type: integer + rot: + description: Deprecated + type: string + s: + description: File size in bytes + example: 1234567890 + type: integer + subsample: + description: 1 if subsampled from other video, 0 otherwise + enum: + - 0 + - 1 + type: integer + tr: + description: 1 if file is transcoded, 0 otherwise + enum: + - 0 + - 1 + type: integer + us: + description: Has the file been uploaded? 0 if no, 1 if yes + enum: + - 0 + - 1 + type: integer + w: + description: Width of media in pixels + example: 1920 + type: integer + required: + - ct + - cre + - s + - gumi + - h + - w + - hc + - eis + - mp + - rot + - tr + - us + - ao + - profile + - avc_profile + - cl + - dur + - fps + - fps_denom + - ls + - pta + - subsample + type: object + x-tags: + - Models +info: + contact: + url: https://github.com/gopro/OpenGoPro/issues + description: + $ref: ./snippets/info.md + summary: The GoPro API allows developers to create apps and utilities that interact with and control a GoPro camera. + title: OpenGoPro HTTP API + version: '2.0' +openapi: 3.1.0 +paths: + /GoProRootCA.crt: + post: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_GET_HOME_NETWORK_CERT + responses: + '200': + content: + text/plain: + example: "-----BEGIN CERTIFICATE-----\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n-----END CERTIFICATE----\n" + schema: + type: string + description: SSL COHN Certificate + summary: Get COHN Certificate + tags: + - COHN + x-gopro: + - external + /gopro/camera/analytics/set_client_info: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_SET_ANALYTICS + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Set Client as Third Party + tags: + - Analytics + x-gopro: + - external + /gopro/camera/control/set_ui_controller: + get: + description: "This command is used to tell the camera that a client (i.e. External Control) wishes to claim control + of the camera.\nThis causes the camera to immediately exit any contextual menus and return to the idle screen. Any + interaction with the\ncamera's physical buttons will cause the camera to reclaim control and update control status + accordingly. If the user\nreturns the camera UI to the idle screen, the camera updates control status to Idle.\n\n + Note:\n\n- The entity currently claiming control of the camera is advertised in camera status 114\n- Information about + whether the camera is in a contextual menu or not is advertised in camera status 63.\n\nSee the below diagram for + a state diagram of Camera Control:\n\n![global behaviors state diagram](/assets/images/openapi/global_behaviors.png)\n + \n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\n + Supported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_SET_CAMERA_CONTROL_STATUS + parameters: + - description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | CAMERA_IDLE | |\n| 1 | CAMERA_CONTROL | Can + only be set by camera, not by app or third party |\n| 2 | CAMERA_EXTERNAL_CONTROL | |" + example: 0 + in: query + name: p + schema: + $ref: .enums.yml#/EnumCameraControlStatus + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Set Camera Control Status + tags: + - Control + x-gopro: + - external + /gopro/camera/control/wired_usb: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + \n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_SET_WIRED_USB_CONTROL + parameters: + - description: If 1, enable wired usb control; If 0, disable usb control + in: query + name: p + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Enable Wired camera control over USB + tags: + - Control + x-gopro: + - external + /gopro/camera/digital_zoom: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_DIGITAL_ZOOM_SET + parameters: + - description: Zoom Level (0-100) + example: 50 + in: query + name: percent + schema: + maximum: 100 + minimum: 0 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Set Digital Zoom + tags: + - Control + x-gopro: + - external + /gopro/camera/get_date_time: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_GET_DATE_TIME + responses: + '200': + content: + application/json: + schema: + properties: + date: + description: current date in format YYYY_MM_DD + example: '2023_12_31' + type: string + dst: + description: Is daylight savings time active? + enum: + - 0 + - 1 + type: integer + time: + description: current time in format HH_MM_SS + example: '11_05_45' + type: string + tzone: + description: Timezone offset in minutes + example: -480 + type: integer + required: + - date + - time + type: object + description: Success. Current date/time. + summary: Get Date / Time + tags: + - Query + x-gopro: + - external + /gopro/camera/info: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_CAMERA_INFO + responses: + '200': + content: + application/json: + schema: + properties: + info: + properties: + ap_mac_addr: + description: Camera's Access Point MAC address + example: 065747046ceb + type: string + ap_ssid: + description: Camera's ACcess Point SSID name + example: GP24645504 + type: string + firmware_version: + description: Camera Firmware version + example: H23.01.01.10.00 + format: version + type: string + model_name: + description: Camera Model Name + example: Hero12 Black + type: string + model_number: + description: Camera Model integer (as string) + example: '62' + type: string + serial_number: + description: Camera serial number + example: C3501324645504 + type: string + type: object + type: object + description: Hardware Info Response + summary: Get Hardware Info + tags: + - Query + x-gopro: + - external + /gopro/camera/keep_alive: + get: + description: "In order to maximize battery life, GoPro cameras automatically go to sleep after some time.\nThis logic + is handled by a combination of the **Auto Power Down** setting which most (but not all) cameras support\nand a **Keep + Alive** message that the user can regularly send to the camera.\n\nThe camera will automatically go to sleep if both + timers reach zero.\n\nThe Auto Power Down timer is reset when the user taps the LCD screen, presses a button on the + camera,\nprogrammatically (un)sets the shutter, sets a setting, or loads a Preset.\n\nThe Keep Alive timer is reset + when the user sends a keep alive message.\n\nThe best practice to prevent the camera from inadvertently going to sleep + is to start sending Keep Alive messages\nevery **3.0** seconds after a connection is established.\n\n\n---\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported + Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_KEEP_ALIVE + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Keep Alive + tags: + - Control + x-gopro: + - external + /gopro/camera/presets/get: + get: + description: "Get the currently available Preset Groups and Presets, the set of which\n[depends](#tag/Presets/Presets) + on the current camera settings.\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_PRESETS_GET + responses: + '200': + content: + application/json: + schema: + properties: + presetGroupArray: + description: Array of Preset Groups + items: + $ref: '#/components/schemas/PresetGroup' + type: array + type: object + description: Currently available presets organized into preset groups + summary: Get Available Presets + tags: + - Presets + x-gopro: + - external + /gopro/camera/presets/load: + get: + description: "Preset ID's are not constant and must be retrieved via [Get Preset Status](#operation/OGP_PRESETS_GET)\n + \n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n + \n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_PRESET_LOAD + parameters: + - description: Preset to load + example: 0 + in: query + name: id + schema: + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Load Preset by ID + tags: + - Presets + x-gopro: + - external + /gopro/camera/presets/set_group: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_PRESET_SET_GROUP + parameters: + - description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 1000 | PRESET_GROUP_ID_VIDEO | |\n| 1001 | PRESET_GROUP_ID_PHOTO + | |\n| 1002 | PRESET_GROUP_ID_TIMELAPSE | |" + in: query + name: id + schema: + $ref: .enums.yml#/EnumPresetGroup + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Load Preset Group by ID + tags: + - Presets + x-gopro: + - external + /gopro/camera/presets/update_custom: + put: + description: "This only operates on the currently active Preset and will fail if the current\nPreset is not custom.\n + \nThe use cases are:\n\n1. Update the Custom Preset Icon\n\n - `icon_id` is always optional and can always be passed\n + \nand / or\n\n2. Update the Custom Preset Title to a...\n\n - **Factory Preset Title**: Set `title_id` to a non-94 + value\n - **Custom Preset Name**: Set `title_id` to 94 and specify a `custom_name`\n\n\n---\n\nSupported Cameras:\n + \n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_CUSTOM_PRESET_UPDATE + requestBody: + content: + application/json: + schema: + properties: + custom_name: + description: "utf-8 encoded target custom preset name which obeys the following:\n\n- must be between 1 + and 16 characters (inclusive)\n- No special characters outside of the following languages: English, French,\n\ + \ Italian, German, Spanish, Portuguese, Swedish, Russian\n" + type: string + icon_id: + $ref: .enums.yml#/EnumPresetIcon + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | PRESET_ICON_VIDEO | |\n| 1 | PRESET_ICON_ACTIVITY + | |\n| 2 | PRESET_ICON_CINEMATIC | |\n| 3 | PRESET_ICON_PHOTO | |\n| 4 | PRESET_ICON_LIVE_BURST | \ + \ |\n| 5 | PRESET_ICON_BURST | |\n| 6 | PRESET_ICON_PHOTO_NIGHT | |\n| 7 | PRESET_ICON_TIMEWARP | |\n + | 8 | PRESET_ICON_TIMELAPSE | |\n| 9 | PRESET_ICON_NIGHTLAPSE | |\n| 10 | PRESET_ICON_SNAIL | |\n| + 11 | PRESET_ICON_VIDEO_2 | |\n| 13 | PRESET_ICON_PHOTO_2 | |\n| 14 | PRESET_ICON_PANORAMA | |\n| 15 + | PRESET_ICON_BURST_2 | |\n| 16 | PRESET_ICON_TIMEWARP_2 | |\n| 17 | PRESET_ICON_TIMELAPSE_2 | |\n + | 18 | PRESET_ICON_CUSTOM | |\n| 19 | PRESET_ICON_AIR | |\n| 20 | PRESET_ICON_BIKE | |\n| 21 | PRESET_ICON_EPIC + | |\n| 22 | PRESET_ICON_INDOOR | |\n| 23 | PRESET_ICON_MOTOR | |\n| 24 | PRESET_ICON_MOUNTED | |\n + | 25 | PRESET_ICON_OUTDOOR | |\n| 26 | PRESET_ICON_POV | |\n| 27 | PRESET_ICON_SELFIE | |\n| 28 | PRESET_ICON_SKATE + | |\n| 29 | PRESET_ICON_SNOW | |\n| 30 | PRESET_ICON_TRAIL | |\n| 31 | PRESET_ICON_TRAVEL | |\n| 32 + | PRESET_ICON_WATER | |\n| 33 | PRESET_ICON_LOOPING | |\n| 58 | PRESET_ICON_BASIC | |\n| 59 | PRESET_ICON_ULTRA_SLO_MO + | |\n| 60 | PRESET_ICON_STANDARD_ENDURANCE | |\n| 61 | PRESET_ICON_ACTIVITY_ENDURANCE | |\n| 62 | PRESET_ICON_CINEMATIC_ENDURANCE + | |\n| 63 | PRESET_ICON_SLOMO_ENDURANCE | |\n| 64 | PRESET_ICON_STATIONARY_1 | |\n| 65 | PRESET_ICON_STATIONARY_2 + | |\n| 66 | PRESET_ICON_STATIONARY_3 | |\n| 67 | PRESET_ICON_STATIONARY_4 | |\n| 70 | PRESET_ICON_SIMPLE_SUPER_PHOTO + | |\n| 71 | PRESET_ICON_SIMPLE_NIGHT_PHOTO | |\n| 73 | PRESET_ICON_HIGHEST_QUALITY_VIDEO | |\n| 74 + | PRESET_ICON_STANDARD_QUALITY_VIDEO | |\n| 75 | PRESET_ICON_BASIC_QUALITY_VIDEO | |\n| 76 | PRESET_ICON_STAR_TRAIL + | |\n| 77 | PRESET_ICON_LIGHT_PAINTING | |\n| 78 | PRESET_ICON_LIGHT_TRAIL | |\n| 79 | PRESET_ICON_FULL_FRAME + | |\n| 1000 | PRESET_ICON_TIMELAPSE_PHOTO | |\n| 1001 | PRESET_ICON_NIGHTLAPSE_PHOTO | |" + title_id: + $ref: .enums.yml#/EnumPresetTitle + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | PRESET_TITLE_ACTIVITY | |\n| 1 | + PRESET_TITLE_STANDARD | |\n| 2 | PRESET_TITLE_CINEMATIC | |\n| 3 | PRESET_TITLE_PHOTO | |\n| 4 | PRESET_TITLE_LIVE_BURST + | |\n| 5 | PRESET_TITLE_BURST | |\n| 6 | PRESET_TITLE_NIGHT | |\n| 7 | PRESET_TITLE_TIME_WARP | |\n + | 8 | PRESET_TITLE_TIME_LAPSE | |\n| 9 | PRESET_TITLE_NIGHT_LAPSE | |\n| 10 | PRESET_TITLE_VIDEO | \ + \ |\n| 11 | PRESET_TITLE_SLOMO | |\n| 13 | PRESET_TITLE_PHOTO_2 | |\n| 14 | PRESET_TITLE_PANORAMA |\ + \ |\n| 16 | PRESET_TITLE_TIME_WARP_2 | |\n| 18 | PRESET_TITLE_CUSTOM | |\n| 19 | PRESET_TITLE_AIR |\ + \ |\n| 20 | PRESET_TITLE_BIKE | |\n| 21 | PRESET_TITLE_EPIC | |\n| 22 | PRESET_TITLE_INDOOR | |\n + | 23 | PRESET_TITLE_MOTOR | |\n| 24 | PRESET_TITLE_MOUNTED | |\n| 25 | PRESET_TITLE_OUTDOOR | |\n| + 26 | PRESET_TITLE_POV | |\n| 27 | PRESET_TITLE_SELFIE | |\n| 28 | PRESET_TITLE_SKATE | |\n| 29 | PRESET_TITLE_SNOW + | |\n| 30 | PRESET_TITLE_TRAIL | |\n| 31 | PRESET_TITLE_TRAVEL | |\n| 32 | PRESET_TITLE_WATER | |\n + | 33 | PRESET_TITLE_LOOPING | |\n| 58 | PRESET_TITLE_BASIC | |\n| 59 | PRESET_TITLE_ULTRA_SLO_MO | \ + \ |\n| 60 | PRESET_TITLE_STANDARD_ENDURANCE | |\n| 61 | PRESET_TITLE_ACTIVITY_ENDURANCE | |\n| 62 | + PRESET_TITLE_CINEMATIC_ENDURANCE | |\n| 63 | PRESET_TITLE_SLOMO_ENDURANCE | |\n| 64 | PRESET_TITLE_STATIONARY_1 + | |\n| 65 | PRESET_TITLE_STATIONARY_2 | |\n| 66 | PRESET_TITLE_STATIONARY_3 | |\n| 67 | PRESET_TITLE_STATIONARY_4 + | |\n| 68 | PRESET_TITLE_SIMPLE_VIDEO | |\n| 69 | PRESET_TITLE_SIMPLE_TIME_WARP | |\n| 70 | PRESET_TITLE_SIMPLE_SUPER_PHOTO + | |\n| 71 | PRESET_TITLE_SIMPLE_NIGHT_PHOTO | |\n| 72 | PRESET_TITLE_SIMPLE_VIDEO_ENDURANCE | |\n| + 73 | PRESET_TITLE_HIGHEST_QUALITY | |\n| 74 | PRESET_TITLE_EXTENDED_BATTERY | |\n| 75 | PRESET_TITLE_LONGEST_BATTERY + | |\n| 76 | PRESET_TITLE_STAR_TRAIL | |\n| 77 | PRESET_TITLE_LIGHT_PAINTING | |\n| 78 | PRESET_TITLE_LIGHT_TRAIL + | |\n| 79 | PRESET_TITLE_FULL_FRAME | |\n| 82 | PRESET_TITLE_STANDARD_QUALITY_VIDEO | |\n| 83 | PRESET_TITLE_BASIC_QUALITY_VIDEO + | |\n| 93 | PRESET_TITLE_HIGHEST_QUALITY_VIDEO | |\n| 94 | PRESET_TITLE_USER_DEFINED_CUSTOM_NAME | \ + \ |" + type: object + required: true + responses: + '200': + $ref: '#/components/responses/200Empty' + '400': + $ref: '#/components/responses/GenericEmpty' + description: Attempted to update custom preset but the currently active preset is not custom. + summary: Update Custom Preset + tags: + - Presets + x-gopro: + - external + /gopro/camera/set_date_time: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_SET_DATE_AND_TIME_DST_ID + parameters: + - description: current date in format YYYY_MM_DD + example: '2023_12_31' + in: query + name: date + schema: + type: string + - description: current time in format HH_MM_SS in 24 hour format + example: '21_12_13' + in: query + name: time + schema: + type: string + - description: "Timezone offset in minutes. See [here](https://en.wikipedia.org/wiki/List_of_UTC_offsets) for a\nlisting + of all UTC offsets.\n\nNot supported on:\n- Hero 10 Black\n- Hero 9 Black\n" + example: -480 + in: query + name: tzone + schema: + type: integer + - description: "Is daylight savings time active?\n\nNot supported on:\n- Hero 10 Black\n- Hero 9 Black\n" + in: query + name: dst + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Set Date / Time + tags: + - Control + x-gopro: + - external + /gopro/camera/setting/108/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::108 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Aspect Ratio 4By3 | HERO12 Black\n + | 1 | Video Aspect Ratio 16By9 | HERO12 Black\n| 3 | Video Aspect Ratio 8By7 | HERO12 Black\n| 4 | Video Aspect + Ratio 9By16 | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 3 + - 4 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Aspect Ratio (108) + tags: + - settings + /gopro/camera/setting/121/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::121 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Digital Lenses Wide | HERO11 Black + Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 2 | Video Digital Lenses Narrow | HERO9 Black, HERO10 + Black\n| 3 | Video Digital Lenses Superview | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 + Black\n| 4 | Video Digital Lenses Linear | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n + | 7 | Video Digital Lenses Max Superview | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n + | 8 | Video Digital Lenses Linear Plus Horizon Leveling | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, + HERO11 Black\n| 9 | Video Digital Lenses Hyperview | HERO11 Black Mini, HERO12 Black, HERO11 Black\n| 10 | Video + Digital Lenses Linear Plus Horizon Lock | HERO11 Black Mini, HERO12 Black, HERO11 Black\n| 11 | Video Digital Lenses + Max Hyperview | HERO12 Black" + example: 7 + in: path + name: option + required: true + schema: + enum: + - 0 + - 2 + - 3 + - 4 + - 7 + - 8 + - 9 + - 10 + - 11 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Digital Lenses (121) + tags: + - settings + /gopro/camera/setting/122/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::122 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 19 | Photo Digital Lenses Narrow | HERO9 Black, + HERO10 Black\n| 100 | Photo Digital Lenses Max Superview | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n + | 101 | Photo Digital Lenses Wide | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 102 | Photo Digital + Lenses Linear | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black" + example: 100 + in: path + name: option + required: true + schema: + enum: + - 19 + - 100 + - 101 + - 102 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Photo Digital Lenses (122) + tags: + - settings + /gopro/camera/setting/123/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::123 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 19 | Multi Shot Digital Lenses Narrow | HERO9 + Black, HERO10 Black\n| 100 | Multi Shot Digital Lenses Max Superview | HERO10 Black\n| 101 | Multi Shot Digital + Lenses Wide | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 102 | Multi Shot Digital Lenses Linear | + HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black" + example: 101 + in: path + name: option + required: true + schema: + enum: + - 19 + - 100 + - 101 + - 102 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Multi Shot Digital Lenses (123) + tags: + - settings + /gopro/camera/setting/128/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::128 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 13 | General Format Time Lapse Video | HERO9 + Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 20 | General Format Time Lapse Photo | HERO9 Black, HERO10 Black, + HERO12 Black, HERO11 Black\n| 21 | General Format Night Lapse Photo | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 + Black\n| 26 | General Format Night Lapse Video | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black" + example: 13 + in: path + name: option + required: true + schema: + enum: + - 13 + - 20 + - 21 + - 26 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: General Format (128) + tags: + - settings + /gopro/camera/setting/134/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::134 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 2 | Setup Anti Flicker 60 Hz | HERO11 Black + Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 3 | Setup Anti Flicker 50 Hz | HERO11 Black Mini, + HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black" + example: 2 + in: path + name: option + required: true + schema: + enum: + - 2 + - 3 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Setup Anti Flicker (134) + tags: + - settings + /gopro/camera/setting/135/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::135 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Hypersmooth Off | HERO11 Black Mini, + HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 1 | Video Hypersmooth On | HERO11 Black Mini, HERO9 Black, + HERO12 Black, HERO11 Black\n| 2 | Video Hypersmooth High | HERO9 Black, HERO10 Black\n| 3 | Video Hypersmooth Boost + | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO11 Black\n| 4 | Video Hypersmooth Auto Boost | HERO11 Black + Mini, HERO12 Black, HERO11 Black\n| 100 | Video Hypersmooth Standard | HERO10 Black" + example: 3 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 100 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Hypersmooth (135) + tags: + - settings + /gopro/camera/setting/150/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::150 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Horizon Levelling Off | HERO11 Black\n + | 2 | Video Horizon Levelling Locked | HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Horizon Levelling (150) + tags: + - settings + /gopro/camera/setting/151/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::151 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Photo Horizon Levelling Off | HERO11 Black\n + | 2 | Photo Horizon Levelling Locked | HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Photo Horizon Levelling (151) + tags: + - settings + /gopro/camera/setting/162/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::162 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Mods Max Lens Enable Off | HERO9 Black, + HERO10 Black, HERO11 Black\n| 1 | Mods Max Lens Enable On | HERO9 Black, HERO10 Black, HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Mods Max Lens Enable (162) + tags: + - settings + /gopro/camera/setting/167/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::167 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 2 | Video Hindsight Length 15 Seconds | HERO9 + Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 3 | Video Hindsight Length 30 Seconds | HERO9 Black, HERO10 Black, + HERO12 Black, HERO11 Black\n| 4 | Video Hindsight Length Off | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black" + example: 2 + in: path + name: option + required: true + schema: + enum: + - 2 + - 3 + - 4 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Hindsight Length (167) + tags: + - settings + /gopro/camera/setting/171/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::171 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Photo Single Interval Off | HERO12 Black\n + | 2 | Photo Single Interval 0 5 Seconds | HERO12 Black\n| 3 | Photo Single Interval 1 Second | HERO12 Black\n| 4 + | Photo Single Interval 2 Seconds | HERO12 Black\n| 5 | Photo Single Interval 5 Seconds | HERO12 Black\n| 6 | Photo + Single Interval 10 Seconds | HERO12 Black\n| 7 | Photo Single Interval 30 Seconds | HERO12 Black\n| 8 | Photo Single + Interval 60 Seconds | HERO12 Black\n| 9 | Photo Single Interval 120 Seconds | HERO12 Black\n| 10 | Photo Single + Interval 3 Seconds | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Photo Single Interval (171) + tags: + - settings + /gopro/camera/setting/172/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::172 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Photo Interval Duration Off | HERO12 Black\n + | 1 | Photo Interval Duration 15 Seconds | HERO12 Black\n| 2 | Photo Interval Duration 30 Seconds | HERO12 Black\n + | 3 | Photo Interval Duration 1 Minute | HERO12 Black\n| 4 | Photo Interval Duration 5 Minutes | HERO12 Black\n + | 5 | Photo Interval Duration 15 Minutes | HERO12 Black\n| 6 | Photo Interval Duration 30 Minutes | HERO12 Black\n + | 7 | Photo Interval Duration 1 Hour | HERO12 Black\n| 8 | Photo Interval Duration 2 Hours | HERO12 Black\n| 9 | + Photo Interval Duration 3 Hours | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Photo Interval Duration (172) + tags: + - settings + /gopro/camera/setting/173/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO10 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::173 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | System Power Profile Maximum Video Performance + | HERO10 Black\n| 1 | System Power Profile Extended Battery | HERO10 Black\n| 2 | System Power Profile Tripod Stationary + Video | HERO10 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: System Power Profile (173) + tags: + - settings + /gopro/camera/setting/175/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::175 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Setup Camera Ux Mode Easy | HERO12 Black, + HERO11 Black\n| 1 | Setup Camera Ux Mode Pro | HERO12 Black, HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Setup Camera Ux Mode (175) + tags: + - settings + /gopro/camera/setting/176/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::176 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Easy Mode Speed 8X Ultra Slo Mo + | HERO11 Black\n| 1 | Video Easy Mode Speed 4X Super Slo Mo | HERO11 Black\n| 2 | Video Easy Mode Speed 2X Slo Mo + | HERO11 Black\n| 3 | Video Easy Mode Speed 1X Speed Low Light | HERO11 Black\n| 4 | Video Easy Mode Speed Eb 4X + Super Slo Mo | HERO11 Black\n| 5 | Video Easy Mode Speed Eb 2X Slo Mo | HERO11 Black\n| 6 | Video Easy Mode Speed + Eb 1X Speed Low Light | HERO11 Black\n| 7 | Video Easy Mode Speed 8X Ultra Slo Mo 50Hz | HERO11 Black\n| 8 | Video + Easy Mode Speed 4X Super Slo Mo 50Hz | HERO11 Black\n| 9 | Video Easy Mode Speed 2X Slo Mo 50Hz | HERO11 Black\n + | 10 | Video Easy Mode Speed 1X Speed Low Light 50Hz | HERO11 Black\n| 11 | Video Easy Mode Speed Eb 4X Super Slo + Mo 50Hz | HERO11 Black\n| 12 | Video Easy Mode Speed Eb 2X Slo Mo 50Hz | HERO11 Black\n| 13 | Video Easy Mode Speed + Eb 1X Speed Low Light 50Hz | HERO11 Black\n| 14 | Video Easy Mode Speed Eb 8X Ultra Slo Mo | HERO11 Black\n| 15 + | Video Easy Mode Speed Eb 8X Ultra Slo Mo 50Hz | HERO11 Black\n| 16 | Video Easy Mode Speed Lb 8X Ultra Slo Mo + | HERO11 Black\n| 17 | Video Easy Mode Speed Lb 4X Super Slo Mo | HERO11 Black\n| 18 | Video Easy Mode Speed Lb + 2X Slo Mo | HERO11 Black\n| 19 | Video Easy Mode Speed Lb 1X Speed Low Light | HERO11 Black\n| 20 | Video Easy Mode + Speed Lb 8X Ultra Slo Mo 50Hz | HERO11 Black\n| 21 | Video Easy Mode Speed Lb 4X Super Slo Mo 50Hz | HERO11 Black\n + | 22 | Video Easy Mode Speed Lb 2X Slo Mo 50Hz | HERO11 Black\n| 23 | Video Easy Mode Speed Lb 1X Speed Low Light + 50Hz | HERO11 Black\n| 24 | Video Easy Mode Speed 2X Slo Mo 4K | HERO11 Black\n| 25 | Video Easy Mode Speed 4X Super + Slo Mo 2 7K | HERO11 Black\n| 26 | Video Easy Mode Speed 2X Slo Mo 4K 50Hz | HERO11 Black\n| 27 | Video Easy Mode + Speed 4X Super Slo Mo 2 7K 50Hz | HERO11 Black\n| 100 | Video Easy Mode Speed 8X Ultra Slo Mo V2 | HERO12 Black\n + | 101 | Video Easy Mode Speed 4X Super Slo Mo V2 | HERO12 Black\n| 102 | Video Easy Mode Speed 2X Slo Mo V2 | HERO12 + Black\n| 103 | Video Easy Mode Speed 1X Speed Low Light V2 | HERO12 Black\n| 104 | Video Easy Mode Speed 8X Ultra + Slo Mo 50Hz V2 | HERO12 Black\n| 105 | Video Easy Mode Speed 4X Super Slo Mo 50Hz V2 | HERO12 Black\n| 106 | Video + Easy Mode Speed 2X Slo Mo 50Hz V2 | HERO12 Black\n| 107 | Video Easy Mode Speed 1X Speed Low Light 50Hz V2 | HERO12 + Black\n| 108 | Video Easy Mode Speed Lb 8X Ultra Slo Mo V2 | HERO12 Black\n| 109 | Video Easy Mode Speed Lb 4X Super + Slo Mo V2 | HERO12 Black\n| 110 | Video Easy Mode Speed Lb 2X Slo Mo V2 | HERO12 Black\n| 111 | Video Easy Mode + Speed Lb 1X Speed Low Light V2 | HERO12 Black\n| 112 | Video Easy Mode Speed Lb 8X Ultra Slo Mo 50Hz V2 | HERO12 + Black\n| 113 | Video Easy Mode Speed Lb 4X Super Slo Mo 50Hz V2 | HERO12 Black\n| 114 | Video Easy Mode Speed Lb + 2X Slo Mo 50Hz V2 | HERO12 Black\n| 115 | Video Easy Mode Speed Lb 1X Speed Low Light 50Hz V2 | HERO12 Black\n| + 116 | Video Easy Mode Speed 2X Slo Mo 4K V2 | HERO12 Black\n| 117 | Video Easy Mode Speed 2X Slo Mo 4K 50Hz V2 | + HERO12 Black\n| 118 | Video Easy Mode Speed Mobile 1X Speed Low Light V2 | HERO12 Black\n| 119 | Video Easy Mode + Speed Mobile 1X Speed Low Light 50Hz V2 | HERO12 Black\n| 120 | Video Easy Mode Speed Mobile 2X Slo Mo V2 | HERO12 + Black\n| 121 | Video Easy Mode Speed Mobile 2X Slo Mo 50Hz V2 | HERO12 Black\n| 122 | Video Easy Mode Speed Universal + 1X Speed Low Light V2 | HERO12 Black\n| 123 | Video Easy Mode Speed Universal 1X Speed Low Light 50Hz V2 | HERO12 + Black\n| 124 | Video Easy Mode Speed Universal 2X Slo Mo V2 | HERO12 Black\n| 125 | Video Easy Mode Speed Universal + 2X Slo Mo 50Hz V2 | HERO12 Black\n| 126 | Video Easy Mode Speed 1X Speed Low Light 4K V2 | HERO12 Black\n| 127 | + Video Easy Mode Speed 1X Speed Low Light 4K 50Hz V2 | HERO12 Black\n| 128 | Video Easy Mode Speed 1X Speed Low Light + 2 7K V2 | HERO12 Black\n| 129 | Video Easy Mode Speed 1X Speed Low Light 2 7K 50Hz V2 | HERO12 Black\n| 130 | Video + Easy Mode Speed 2X Slo Mo 2 7K V2 | HERO12 Black\n| 131 | Video Easy Mode Speed 2X Slo Mo 2 7K 50Hz V2 | HERO12 + Black\n| 132 | Video Easy Mode Speed Mobile Lb 2X Slo Mo V2 | HERO12 Black\n| 133 | Video Easy Mode Speed Mobile + Lb 2X Slo Mo 50Hz V2 | HERO12 Black\n| 134 | Video Easy Mode Speed Mobile Lb 1X Speed Low Light V2 | HERO12 Black\n + | 135 | Video Easy Mode Speed Mobile Lb 1X Speed Low Light 50Hz V2 | HERO12 Black\n| 136 | Video Easy Mode Speed + Universal 1X Speed Low Light 4K V2 | HERO12 Black\n| 137 | Video Easy Mode Speed Universal 1X Speed Low Light 4K + 50Hz V2 | HERO12 Black" + example: 103 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 20 + - 21 + - 22 + - 23 + - 24 + - 25 + - 26 + - 27 + - 100 + - 101 + - 102 + - 103 + - 104 + - 105 + - 106 + - 107 + - 108 + - 109 + - 110 + - 111 + - 112 + - 113 + - 114 + - 115 + - 116 + - 117 + - 118 + - 119 + - 120 + - 121 + - 122 + - 123 + - 124 + - 125 + - 126 + - 127 + - 128 + - 129 + - 130 + - 131 + - 132 + - 133 + - 134 + - 135 + - 136 + - 137 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Easy Mode Speed (176) + tags: + - settings + /gopro/camera/setting/177/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::177 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Photo Easy Mode Night Photo Off | HERO11 + Black\n| 1 | Photo Easy Mode Night Photo On | HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Photo Easy Mode Night Photo (177) + tags: + - settings + /gopro/camera/setting/178/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::178 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Wireless Wireless Band 2 4 Ghz | HERO11 + Black Mini, HERO12 Black, HERO11 Black\n| 1 | Wireless Wireless Band 5 Ghz | HERO11 Black Mini, HERO12 Black, HERO11 + Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Wireless Wireless Band (178) + tags: + - settings + /gopro/camera/setting/179/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::179 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 1 | Multi Shot Trail Length Short | HERO11 + Black Mini, HERO12 Black, HERO11 Black\n| 2 | Multi Shot Trail Length Long | HERO11 Black Mini, HERO12 Black, HERO11 + Black\n| 3 | Multi Shot Trail Length Max | HERO11 Black Mini, HERO12 Black, HERO11 Black" + example: 3 + in: path + name: option + required: true + schema: + enum: + - 1 + - 2 + - 3 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Multi Shot Trail Length (179) + tags: + - settings + /gopro/camera/setting/180/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO11 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::180 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | System Video Mode Highest Quality | HERO11 + Black\n| 101 | System Video Mode Extended Battery Green | HERO11 Black\n| 102 | System Video Mode Longest Battery + Green | HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 101 + - 102 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: System Video Mode (180) + tags: + - settings + /gopro/camera/setting/182/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::182 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | System Video Bit Rate Standard | HERO12 + Black\n| 1 | System Video Bit Rate High | HERO12 Black" + example: 1 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: System Video Bit Rate (182) + tags: + - settings + /gopro/camera/setting/183/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::183 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | System Video Bit Depth 8Bit | HERO12 Black\n + | 2 | System Video Bit Depth 10Bit | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: System Video Bit Depth (183) + tags: + - settings + /gopro/camera/setting/184/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::184 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Profile Standard | HERO12 Black\n + | 1 | Video Profile Hdr | HERO12 Black\n| 2 | Video Profile 10 Bit Log | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Profile (184) + tags: + - settings + /gopro/camera/setting/186/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::186 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Easy Presets Highest Quality | HERO12 + Black\n| 1 | Video Easy Presets Standard Quality | HERO12 Black\n| 2 | Video Easy Presets Basic Quality | HERO12 + Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Easy Presets (186) + tags: + - settings + /gopro/camera/setting/187/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::187 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Multi Shot Easy Presets Lapse Mode Time + Warp | HERO12 Black\n| 1 | Multi Shot Easy Presets Lapse Mode Star Trails | HERO12 Black\n| 2 | Multi Shot Easy + Presets Lapse Mode Light Painting | HERO12 Black\n| 3 | Multi Shot Easy Presets Lapse Mode Vehicle Lights | HERO12 + Black\n| 4 | Multi Shot Easy Presets Max Lapse Mode Time Warp | HERO12 Black\n| 5 | Multi Shot Easy Presets Max + Lapse Mode Star Trails | HERO12 Black\n| 6 | Multi Shot Easy Presets Max Lapse Mode Light Painting | HERO12 Black\n + | 7 | Multi Shot Easy Presets Max Lapse Mode Vehicle Lights | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Multi Shot Easy Presets (187) + tags: + - settings + /gopro/camera/setting/189/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::189 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | System Addon Lens Active None | HERO12 + Black\n| 1 | System Addon Lens Active Max Lens 1 0 | HERO12 Black\n| 2 | System Addon Lens Active Max Lens 2 0 | + HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: System Addon Lens Active (189) + tags: + - settings + /gopro/camera/setting/190/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::190 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | System Addon Lens Status Off | HERO12 + Black\n| 1 | System Addon Lens Status On | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: System Addon Lens Status (190) + tags: + - settings + /gopro/camera/setting/191/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::191 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Photo Easy Presets Super Photo | HERO12 + Black\n| 1 | Photo Easy Presets Night Photo | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Photo Easy Presets (191) + tags: + - settings + /gopro/camera/setting/192/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::192 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Multi Shot Nlv Aspect Ratio 4By3 | HERO12 + Black\n| 1 | Multi Shot Nlv Aspect Ratio 16By9 | HERO12 Black\n| 3 | Multi Shot Nlv Aspect Ratio 8By7 | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 3 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Multi Shot Nlv Aspect Ratio (192) + tags: + - settings + /gopro/camera/setting/193/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::193 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Easy Framing Widescreen | HERO12 + Black\n| 1 | Video Easy Framing Vertical | HERO12 Black\n| 2 | Video Easy Framing Full Frame | HERO12 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Easy Framing (193) + tags: + - settings + /gopro/camera/setting/2/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::2 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 1 | Video Resolution 4K | HERO11 Black Mini, + HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 4 | Video Resolution 2 7K | HERO11 Black Mini, HERO9 Black, + HERO10 Black, HERO12 Black, HERO11 Black\n| 6 | Video Resolution 2 7K 4By3 | HERO11 Black Mini, HERO9 Black, HERO10 + Black, HERO11 Black\n| 7 | Video Resolution 1440 | HERO9 Black\n| 9 | Video Resolution 1080 | HERO11 Black Mini, + HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 18 | Video Resolution 4K 4By3 | HERO11 Black Mini, HERO9 + Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 24 | Video Resolution 5K | HERO9 Black\n| 25 | Video Resolution + 5K 4By3 | HERO10 Black\n| 26 | Video Resolution 5 3K 8By7 | HERO11 Black Mini, HERO11 Black\n| 27 | Video Resolution + 5 3K 4By3 | HERO11 Black Mini, HERO11 Black\n| 28 | Video Resolution 4K 8By7 | HERO11 Black Mini, HERO11 Black\n + | 100 | Video Resolution 5 3K | HERO11 Black Mini, HERO10 Black, HERO12 Black, HERO11 Black\n| 107 | Video Resolution + 5 3K 8By7 V2 | HERO12 Black\n| 108 | Video Resolution 4K 8By7 V2 | HERO12 Black\n| 109 | Video Resolution 4K 9By16 + V2 | HERO12 Black\n| 110 | Video Resolution 1080 9By16 V2 | HERO12 Black\n| 111 | Video Resolution 2 7K 4By3 V2 + | HERO12 Black" + example: 24 + in: path + name: option + required: true + schema: + enum: + - 1 + - 4 + - 6 + - 7 + - 9 + - 18 + - 24 + - 25 + - 26 + - 27 + - 28 + - 100 + - 107 + - 108 + - 109 + - 110 + - 111 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Resolution (2) + tags: + - settings + /gopro/camera/setting/3/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::3 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Video Fps 240 | HERO11 Black Mini, HERO9 + Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 1 | Video Fps 120 | HERO11 Black Mini, HERO9 Black, HERO10 Black, + HERO12 Black, HERO11 Black\n| 2 | Video Fps 100 | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 + Black\n| 5 | Video Fps 60 | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 6 | Video + Fps 50 | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 8 | Video Fps 30 | HERO11 Black + Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 9 | Video Fps 25 | HERO11 Black Mini, HERO9 Black, + HERO10 Black, HERO12 Black, HERO11 Black\n| 10 | Video Fps 24 | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 + Black, HERO11 Black\n| 13 | Video Fps 200 | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black" + example: 0 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 2 + - 5 + - 6 + - 8 + - 9 + - 10 + - 13 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Video Fps (3) + tags: + - settings + /gopro/camera/setting/43/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::43 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Broadcast Fov Wide | HERO11 Black Mini, + HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 2 | Broadcast Fov Narrow | HERO11 Black Mini, HERO9 Black, + HERO10 Black, HERO12 Black, HERO11 Black\n| 3 | Broadcast Fov Superview | HERO11 Black Mini, HERO9 Black, HERO10 + Black, HERO12 Black, HERO11 Black\n| 4 | Broadcast Fov Linear | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 + Black, HERO11 Black" + example: 3 + in: path + name: option + required: true + schema: + enum: + - 0 + - 2 + - 3 + - 4 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Broadcast Fov (43) + tags: + - settings + /gopro/camera/setting/59/{option}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n" + operationId: GPCAMERA_CHANGE_SETTING::59 + parameters: + - description: "| ID | Meaning | Cameras |\n| -- | ------- | ------- |\n| 0 | Setup Auto Power Down Never | HERO11 Black + Mini, HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 1 | Setup Auto Power Down 1 Min | HERO11 Black Mini, + HERO12 Black, HERO11 Black\n| 4 | Setup Auto Power Down 5 Min | HERO11 Black Mini, HERO9 Black, HERO10 Black, HERO12 + Black, HERO11 Black\n| 6 | Setup Auto Power Down 15 Min | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n + | 7 | Setup Auto Power Down 30 Min | HERO9 Black, HERO10 Black, HERO12 Black, HERO11 Black\n| 11 | Setup Auto Power + Down 8 Seconds | HERO11 Black Mini\n| 12 | Setup Auto Power Down 30 Seconds | HERO11 Black Mini" + example: 4 + in: path + name: option + required: true + schema: + enum: + - 0 + - 1 + - 4 + - 6 + - 7 + - 11 + - 12 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Setup Auto Power Down (59) + tags: + - settings + /gopro/camera/shutter/{mode}: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + \n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_SHUTTER + parameters: + - description: Start / stop encoding. + in: path + name: mode + schema: + enum: + - start + - stop + type: string + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Set Shutter + tags: + - Control + x-gopro: + - external + /gopro/camera/state: + get: + description: "Get all camera settings and statuses.\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_GET_STATE + responses: + '200': + $ref: '#/components/responses/State' + summary: Get Camera State + tags: + - Query + x-gopro: + - external + /gopro/camera/stream/start: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_PREVIEW_STREAM_START + parameters: + - description: "Port to use for Preview Stream. Defaults to 8554 if not set\n\nNot supported on:\n - Hero 11 Black + Mini\n - Hero 11 Black\n - Hero 10 Black\n - Hero 9 Black\n" + example: 8556 + in: query + name: port + schema: + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Start the Preview Stream + tags: + - Preview Stream + x-gopro: + - external + /gopro/camera/stream/stop: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_PREVIEW_STREAM_STOP + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Stop the Preview Stream + tags: + - Preview Stream + x-gopro: + - external + /gopro/cohn/cert/clear: + post: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_CLEAR_HOME_NETWORK_CERT + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Delete COHN Certificates + tags: + - COHN + x-gopro: + - external + /gopro/cohn/cert/create: + post: + description: "This creates the Camera On the Home Network SSL/TLS certs certs.\nThe created certificate(s) can be obtained + via [Get COHN Certificate](#operation/GPCAMERA_GET_HOME_NETWORK_CERT) and\nused for SSL/TLS communications\n\n\n---\n + \nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_CREATE_HOME_NETWORK_CERT + requestBody: + content: + application/json: + schema: + properties: + override: + description: If 1, replace existing Root CA cert with a newly-generated one. + enum: + - 0 + - 1 + type: integer + type: object + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Create the COHN Certificates + tags: + - COHN + x-gopro: + - external + /gopro/cohn/setting: + post: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_SET_HOME_NETWORK_SETTING + requestBody: + content: + application/json: + schema: + properties: + cohn_active: + description: "1 to enable, 0 to disable\n\nWhen `cohn_active` == 1, STA Mode connection will be dropped + and camera will not\nautomatically re-connect for COHN.\n" + enum: + - 0 + - 1 + type: integer + type: object + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Configure COHN Settings + tags: + - COHN + x-gopro: + - external + /gopro/cohn/status: + post: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_GET_HOME_NETWORK_STATUS + responses: + '200': + content: + application/json: + schema: + properties: + enabled: + description: Is COHN currently enabled? + enum: + - 0 + - 1 + type: integer + ipaddress: + description: Camera's IP address on the local network + example: 123.45.67.890 + type: string + macaddress: + description: MAC address of the wifi adapter + type: string + password: + description: Password used for http basic auth header + type: string + ssid: + description: Currently connected SSID + type: string + state: + $ref: .enums.yml#/EnumCOHNNetworkState + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | COHN_STATE_Init | |\n| 1 | COHN_STATE_Error + | |\n| 2 | COHN_STATE_Exit | |\n| 5 | COHN_STATE_Idle | |\n| 27 | COHN_STATE_NetworkConnected | \ + \ |\n| 28 | COHN_STATE_NetworkDisconnected | |\n| 29 | COHN_STATE_ConnectingToNetwork | |\n| 30 | + COHN_STATE_Invalid | |" + status: + $ref: .enums.yml#/EnumCOHNStatus + description: "| ID | Name | Summary |\n| -- | ---- | ------- |\n| 0 | COHN_UNPROVISIONED | |\n| 1 | COHN_PROVISIONED + | |" + username: + description: Username used for http basic auth header + type: string + type: object + description: Current COHN Status + summary: Get COHN Status + tags: + - COHN + x-gopro: + - external + /gopro/media/gpmf: + get: + description: "None\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_MEDIA_GPMF + parameters: + - description: media file name + example: 100GOPRO/GOPR0002.JPG + in: query + name: path + schema: + type: string + responses: + '200': + content: + application/octet-stream: + schema: + format: binary + type: string + description: "Binary GPMF data\n\nSee the [GPMF documentation](https://gopro.github.io/gpmf-parser/) for more information + on how\nto handle this data.\n" + summary: Get Media File GPMF + tags: + - Media + x-gopro: + - external + /gopro/media/hilight/file: + get: + description: "Add a hilight / tag to an existing photo or media file.\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- + WIFI\n" + operationId: OGP_ADD_HILIGHT + parameters: + - description: The path to a file on the camera to HiLight + example: 100GOPRO/GOPR0002.MP4 + in: query + name: path + required: true + schema: + type: string + - description: The offset from the beginning of a video file, in milliseconds + example: 1 + in: query + name: ms + schema: + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Hilight a Media File + tags: + - Hilights + x-gopro: + - external + /gopro/media/hilight/moment: + get: + description: "Add hilight at current time while recording video\n\nThis can only be used during recording.\n\n\n---\n + \nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\nSupported + Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_TAG_MOMENT + responses: + '200': + $ref: '#/components/responses/200Empty' + '500': + $ref: '#/components/responses/GenericEmpty' + description: Camera is not currently recording + summary: Hilight While Recording + tags: + - Hilights + x-gopro: + - external + /gopro/media/hilight/remove: + get: + description: "Remove an existing hilight from a photo or video file.\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- + WIFI\n" + operationId: OGP_REMOVE_HILIGHT + parameters: + - description: The path to a file on the camera to remove a HiLight from + example: 100GOPRO/GOPR0002.MP4 + in: query + name: path + required: true + schema: + type: string + - description: The offset from the beginning of a video file, in milliseconds + example: 1 + in: query + name: ms + schema: + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + '500': + $ref: '#/components/responses/GenericEmpty' + description: Requested hilight does not exist + summary: Remove Hilight + tags: + - Hilights + x-gopro: + - external + /gopro/media/info: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_MEDIA_INFO + parameters: + - description: media file name + example: 100GOPRO/GOPR0002.JPG + in: query + name: path + schema: + type: string + responses: + '200': + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/VideoMetadata' + - $ref: '#/components/schemas/PhotoMetadata' + type: object + description: Photo or Video Metadata + summary: Get Media File Info + tags: + - Media + x-gopro: + - external + /gopro/media/last_captured: + get: + description: "This will return the complete path of the last captured media. Depending on the type of media captured, + it will return:\n\n- single photo / video: The single media path\n- any grouped media: The path to the first captured + media in the group\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n + - USB\n" + operationId: OGP_GET_LAST_MEDIA + responses: + '200': + content: + application/json: + schema: + properties: + file: + description: Filename of media + example: GOPR0002.JPG + type: string + folder: + description: Directory that the media is contained in + example: 100GOPRO + type: string + type: object + description: Successful last captured media response + '204': + content: + application/json: + schema: + type: object + description: There is no last captured media for the camera to report + summary: Get Last Captured Media + tags: + - Media + - Query + x-gopro: + - external + /gopro/media/list: + get: + description: "To minimize the size of the JSON transmitted by the camera, grouped media items such as Burst Photos,\n + Time Lapse Photos, Night Lapse Photos, etc are represented with a single item in the media list with additional keys\n + that allow the user to extrapolate individual filenames for each member of the group.\n\nFilenames for group media + items have the form \"GXXXYYYY.ZZZ\"\nwhere XXX is the group ID, YYY is the group member ID and ZZZ is the file extension.\n + \nFor example, take the media list below, which contains a Time Lapse Photo group media item:\n\n```json\n{\n \"\ + id\": \"2530266050123724003\",\n \"media\": [\n {\n \"d\": \"100GOPRO\",\n \"fs\" + : [\n {\n \"b\": \"8\",\n \"cre\": \"1613669353\",\n \ + \ \"g\": \"1\",\n \"l\": \"396\",\n \"m\": [\"75\", \"139\"],\n \ + \ \"mod\": \"1613669353\",\n \"n\": \"G0010008.JPG\",\n \"\ + s\": \"773977407\",\n \"t\": \"t\"\n }\n ]\n }\n ]\n}\n```\n + \nThe first filename in the group is `G0010008.JP` (key: `n`).\n\nThe ID of the first group member in this case is + `008` (key: `b`).\n\nThe ID of the last group member in this case is `396` (key: `l`).\n\nThe IDs of deleted members + in this case are `75` and `139` (key: `m`)\n\nGiven this information, the user can extrapolate that the group currently + contains\n\n```\nG0010008.JPG, G0010009.JPG, G0010010.JPG,\n...,\nG0010074.JPG, G0010076.JPG,\n...,\nG0010138.JPG, + G0010140.JPG,\n...,\nG0010394.JPG, G0010395.JPG. G0010396.JPG\n```\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n + - HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- + WIFI\n" + operationId: OGP_MEDIA_LIST + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MediaList' + description: Structured media list response + summary: Get Media List + tags: + - Media + x-gopro: + - external + /gopro/media/screennail: + get: + description: "A screennail is a low-res preview image that is higher resolution than a thumbnail.\n\n---\n\nSupported + Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported + Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_MEDIA_SCREENNAIL + parameters: + - description: media file name + example: 100GOPRO/GOPR0002.JPG + in: query + name: path + schema: + type: string + responses: + '200': + content: + application/octet-stream: + schema: + format: binary + type: string + description: Screennail image data + summary: Get Media File Screennail + tags: + - Media + x-gopro: + - external + /gopro/media/telemetry: + get: + description: "Get Media File Telemetry track data\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n + - HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_MEDIA_TELEMETRY + parameters: + - description: media file name + example: 100GOPRO/GOPR0002.JPG + in: query + name: path + schema: + type: string + responses: + '200': + content: + application/octet-stream: + schema: + format: binary + type: string + description: "Binary telemetry data\n\nSee the [GPMF documentation](https://gopro.github.io/gpmf-parser/) for more + information on how\nto handle this data.\n" + summary: Get Media File Telemetry + tags: + - Media + x-gopro: + - external + /gopro/media/thumbnail: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_MEDIA_THUMBNAIL + parameters: + - description: media file name + example: 100GOPRO/GOPR0002.JPG + in: query + name: path + schema: + type: string + responses: + '200': + content: + application/octet-stream: + schema: + format: binary + type: string + description: Thumbnail image data + summary: Get Media File Thumbnail + tags: + - Media + x-gopro: + - external + /gopro/media/turbo_transfer: + get: + description: "Some cameras support Turbo Transfer mode, which allows media to be downloaded over WiFi more rapidly.\n + \nThis special mode should only be used during media offload.\n\nIt is recommended that the user check for and, if + necessary, disable Turbo Transfer on connection.\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black + Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_TURBO_MODE_ENABLE + parameters: + - description: 0 to disable, 1 to enable + in: query + name: p + schema: + enum: + - 0 + - 1 + type: integer + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Configure Turbo Transfer + tags: + - Control + x-gopro: + - external + /gopro/version: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n + - HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- WIFI\n- USB\n" + operationId: GPCAMERA_OPENGOPRO_VERSION + responses: + '200': + content: + application/json: + schema: + properties: + version: + description: Open GoPro version + example: '2.0' + format: version + type: string + type: object + description: GoPro Version. + summary: Get Open GoPro Version + tags: + - Query + x-gopro: + - external + /gopro/webcam/exit: + get: + description: "Not supported on **WiFi** for:\n - Hero 11 Black Mini\n - Hero 11 Black\n - Hero 10 Black\n \ + \ - Hero 9 Black\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\n + Supported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_WEBCAM_EXIT + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Exit Webcam Mode + tags: + - Webcam + x-gopro: + - external + /gopro/webcam/preview: + get: + description: "Not supported on **WiFi** for:\n - Hero 11 Black Mini\n - Hero 11 Black\n - Hero 10 Black\n \ + \ - Hero 9 Black\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\n + Supported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_WEBCAM_PREVIEW + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Enter Webcam Preview + tags: + - Webcam + x-gopro: + - external + /gopro/webcam/start: + get: + description: "Not supported on **WiFi** for:\n - Hero 11 Black Mini\n - Hero 11 Black\n - Hero 10 Black\n \ + \ - Hero 9 Black\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\n + Supported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_WEBCAM_START + parameters: + - description: + $ref: ./snippets/webcam_res.md + in: query + name: res + schema: + type: integer + - description: + $ref: ./snippets/webcam_fov.md + in: query + name: fov + schema: + type: integer + - description: "Port to use for Webcam Stream. Defaults to 8554 if not set\n\nNot supported on:\n - Hero 11 Black Mini\n\ + \ - Hero 10 Black\n - Hero 9 Black\n" + example: 8556 + in: query + name: port + schema: + type: integer + - description: "Streaming protocol to use.\n\nNot supported on:\n - Hero 11 Black Mini\n - Hero 11 Black\n - Hero + 10 Black\n - Hero 9 Black\n" + in: query + name: protocol + schema: + enum: + - RTSP + - TS + type: string + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Start Webcam + tags: + - Webcam + x-gopro: + - external + /gopro/webcam/status: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\nSupported + Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_WEBCAM_STATUS + responses: + '200': + content: + application/json: + schema: + properties: + error: + description: "Current webcam error (if status was not successful)\n\n| Code | Status |\n| ---- | ------ + |\n| 0 | None |\n| 1 | Set Preset |\n| 2 | Set Window Size |\n| 3 | Exec Stream |\n| 4 | Shutter |\n + | 5 | Com timeout |\n| 6 | Invalid param |\n| 7 | Unavailable |\n| 8 | Exit |\n" + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + type: integer + status: + description: "Current webcam status\n\n| Code | Status |\n| ---- | ------ |\n| 0 | Off |\n| 1 | Idle + |\n| 2 | High Power Preview |\n| 3 | Low Power Preview |\n" + enum: + - 0 + - 1 + - 2 + - 3 + type: integer + type: object + description: Current webcam status and error + summary: Get Webcam Status + tags: + - Webcam + x-gopro: + - external + /gopro/webcam/stop: + get: + description: "Not supported on **WiFi** for:\n - Hero 11 Black Mini\n - Hero 11 Black\n - Hero 10 Black\n \ + \ - Hero 9 Black\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\n + Supported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_WEBCAM_STOP + responses: + '200': + $ref: '#/components/responses/200Empty' + summary: Stop Webcam + tags: + - Webcam + x-gopro: + - external + /gopro/webcam/version: + get: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black\n- HERO10 Black\n\n\n---\n\nSupported + Protocols:\n\n\n- USB\n- WIFI\n" + operationId: OGP_WEBCAM_VERSION + responses: + '200': + content: + application/json: + schema: + properties: + max_lens_support: + description: Does the webcam support Max Lens Mod? + type: boolean + usb_3_1_compatible: + description: Is the webcam USB 3.1 compatible? + type: boolean + version: + description: Current webcam version + type: integer + type: object + description: Current webcam version and metadata + summary: Get Webcam Version + tags: + - Webcam + x-gopro: + - external + /gp/gpSoftUpdate: + post: + description: "Perform Resumable OTA Update\n\nTo send a portion of the OTA image as per the requestBody specification, + do not use the `request` parameter.\n\n\n---\n\nSupported Cameras:\n\n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 + Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: GPCAMERA_FIRMWARE_UPDATE_V2 + parameters: + - description: "Optional request parameter to control / query OTA functionality.\n\n| Parameter | Behavior |\n| --------- + | -------- |\n| delete | Delete any old / cached OTA data |\n| showui | Display the update OSD on the camera UI + |\n| start | Start updating firmware with received OTA image |\n| progress | Get the current firmware update progress + |\n| cancelled | show canceled/failed ui on the camera |\n" + in: query + name: request + schema: + enum: + - delete + - showui + - start + - progress + - cancelled + type: string + requestBody: + content: + multipart/form-data: + schema: + properties: + file: + description: Binary file + format: binary + type: string + offset: + description: Offset (in bytes) into the file data to start reading from + type: integer + sha1: + description: SHA of the complete firmware upload zip file + type: string + type: object + description: OTA image chunk used when executed with no `request` parameter + responses: + '200': + content: + application/json: + schema: + properties: + bytes_complete: + type: integer + complete: + type: boolean + message: + type: string + sha1: + type: string + status: + $ref: '#/components/schemas/OtaStatus' + type: object + description: Current OTA progress + summary: Resumable OTA Update + tags: + - OTA + x-gopro: + - external + /gp/gpUpdate: + post: + description: "\n\n---\n\nSupported Cameras:\n\n\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n + \n\n---\n\nSupported Protocols:\n\n\n- USB\n- WIFI\n" + operationId: GPCAMERA_FWUPDATE_DOWNLOAD_FILE + requestBody: + content: + multipart/form-data: + schema: + properties: + DirectToSD: + description: Always set to 1 + type: integer + file: + description: Binary file + format: binary + type: string + sha1: + description: SHA of the complete firmware upload zip file + type: string + update: + description: Always set to 1 + type: integer + type: object + responses: + '200': + content: + application/json: + schema: + properties: + status: + $ref: '#/components/schemas/OtaStatus' + type: object + description: Current OTA progress + summary: Simple OTA Update + tags: + - OTA + x-gopro: + - external + /videos/DCIM/{directory}/{filename}: + get: + description: "Note that this is the same endpoint for all media (photos, video, etc.).\n\n\n---\n\nSupported Cameras:\n + \n\n- HERO12 Black\n- HERO11 Black Mini\n- HERO11 Black\n- HERO10 Black\n- HERO9 Black\n\n\n---\n\nSupported Protocols:\n + \n\n- USB\n- WIFI\n" + operationId: OGP_DOWNLOAD_MEDIA + parameters: + - description: Case sensitive directory that media resides in + example: 100GOPRO + in: path + name: directory + required: true + schema: + type: string + - description: Case sensitive media filename + examples: + photo: + summary: Sample photo file + value: GOPR0001.JPG + video: + summary: Sample video file + value: GH010397.MP4 + in: path + name: filename + required: true + schema: + type: string + summary: Download a Media File + tags: + - Media + x-gopro: + - external +servers: +- description: default camera + url: http://10.5.5.9:8080 +tags: +- description: Command and control of the camera + name: Control +- description: Get information about the camera + name: Query +- description: + $ref: ./snippets/media.md + name: Media +- description: + $ref: ./snippets/webcam.md + name: Webcam +- description: + $ref: ./snippets/preview_stream.md + name: Preview Stream +- description: + $ref: ./snippets/ota.md + name: OTA +- description: + $ref: ./snippets/cohn.md + name: COHN +- description: Query / Configure Analytics + name: Analytics +- description: + $ref: ./snippets/presets.md + name: Presets +- description: + $ref: ./snippets/settings.md + name: settings +- description: + $ref: ./snippets/hilights.md + name: Hilights +- description: Common data models used across operations + name: Models diff --git a/specs/capabilities.json b/specs/capabilities.json index bad466a2..7afba704 100644 --- a/specs/capabilities.json +++ b/specs/capabilities.json @@ -1,5 +1,3721 @@ { "HERO12 Black": { + "v02.00.00": { + "states": [ + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "30", + "option_id": 8 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "60", + "option_id": 5 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "120", + "option_id": 1 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "1080", + "option_id": 9 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "240", + "option_id": 0 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "2.7K", + "option_id": 4 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "2.7K", + "option_id": 4 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "2.7K", + "option_id": 4 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "2.7K", + "option_id": 4 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "200", + "option_id": 13 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "2.7K", + "option_id": 4 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "240", + "option_id": 0 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "30", + "option_id": 8 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "60", + "option_id": 5 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "100", + "option_id": 2 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "4K", + "option_id": 1 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "120", + "option_id": 1 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Superview", + "option_id": 3 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Linear", + "option_id": 4 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "24", + "option_id": 10 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "HyperView", + "option_id": 9 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "25", + "option_id": 9 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "30", + "option_id": 8 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Low", + "option_id": 1 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Auto Boost", + "option_id": 4 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "50", + "option_id": 6 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "60Hz", + "option_id": 2 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ], + [ + { + "setting_name": "Resolution", + "setting_id": 2, + "option_name": "5.3K", + "option_id": 100 + }, + { + "setting_name": "Frames Per Second", + "setting_id": 3, + "option_name": "60", + "option_id": 5 + }, + { + "setting_name": "Video Digital Lenses", + "setting_id": 121, + "option_name": "Wide", + "option_id": 0 + }, + { + "setting_name": "Anti-Flicker", + "setting_id": 134, + "option_name": "50Hz", + "option_id": 3 + }, + { + "setting_name": "Hypersmooth", + "setting_id": 135, + "option_name": "Off", + "option_id": 0 + } + ] + ] + }, "v01.30.00": { "states": [ [ diff --git a/specs/capabilities.xlsx b/specs/capabilities.xlsx index d0950a1c..be49192d 100644 --- a/specs/capabilities.xlsx +++ b/specs/capabilities.xlsx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:946c4a5d3d1809cfe5371f634747d111840e20a628c2cca2a45751a6fc9772b3 -size 108929 +oid sha256:546ce0b1b877b16510b6b97983b00d245ad12628ade7615a1ebe28bd5bbb8416 +size 111890 diff --git a/swagger.html b/swagger.html new file mode 100644 index 00000000..88897f10 --- /dev/null +++ b/swagger.html @@ -0,0 +1,301 @@ + + + + + + +Open GoPro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + + Internal BOSS API + + +
    + + + + + + +
    +
    +
    +
    + +
    + + +
    +
    +
    + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/tutorials/ble-queries.html b/tutorials/ble-queries.html index 869b8b37..cf6d8065 100644 --- a/tutorials/ble-queries.html +++ b/tutorials/ble-queries.html @@ -34,7 +34,7 @@ - + @@ -142,7 +142,7 @@ Tutorials
  • - Demos + Demos
  • FAQ @@ -410,7 +410,7 @@

    GoPro

    - +
    @@ -500,7 +500,7 @@

    Requirements

    Just Show me the Demo(s)!!

    -
      +
      • python @@ -511,7 +511,7 @@

        Just Show me the Demo(s)!!

      -
        +
        • Each of the scripts for this tutorial can be found in the Tutorial 2 @@ -634,7 +634,7 @@

          Setup

          characteristic. Throughout this tutorial, the query information that we will be reading is the Resolution Setting (ID 0x02).

          -
            + -
              +
              • Therefore, we have slightly changed the notification handler to update a global resolution variable as it @@ -773,7 +773,7 @@

                Individual Query Poll

                First we send the query command:

                -
                  +
                  • python @@ -784,7 +784,7 @@

                    Individual Query Poll

                  -
                    +
                    • The sample code can be found in in ble_query_poll_resolution_value.py. @@ -814,7 +814,7 @@

                      Individual Query Poll

                      When the response is received in / from the notification handler, we update the global resolution variable:

                      -
                        +
                        • python @@ -825,7 +825,7 @@

                          Individual Query Poll

                        -
                          +
                          • def notification_handler(characteristic: BleakGATTCharacteristic, data: bytes) -> None:
                            @@ -878,7 +878,7 @@ 

                            Individual Query Poll

                            has changed:

                            -
                              +
                              • python @@ -889,7 +889,7 @@

                                Individual Query Poll

                              -
                                +
                                • INFO:root:Changing the resolution to Resolution.RES_2_7K...
                                  @@ -945,7 +945,7 @@ 

                                  Multiple Simultaneous Query Polls

                                  The query command now includes 3 settings: Resolution, FPS, and FOV.

                                  -
                                    +
                                    • python @@ -956,7 +956,7 @@

                                      Multiple Simultaneous Query Polls

                                    -
                                      +
                                      • RESOLUTION_ID = 2
                                        @@ -981,7 +981,7 @@ 

                                        Multiple Simultaneous Query Polls

                                        We are also parsing the response to get all 3 values:

                                        -
                                          +
                                          • python @@ -992,7 +992,7 @@

                                            Multiple Simultaneous Query Polls

                                          -
                                            +
                                            • def notification_handler(characteristic: BleakGATTCharacteristic, data: bytes) -> None:
                                              @@ -1024,7 +1024,7 @@ 

                                              Multiple Simultaneous Query Polls

                                              They are then printed to the log which will look like the following:

                                              -
                                                +
                                                • python @@ -1035,7 +1035,7 @@

                                                  Multiple Simultaneous Query Polls

                                                -
                                                  +
                                                  • INFO:root:Received response at handle=62: b'0b:12:00:02:01:07:03:01:01:79:01:00'
                                                    @@ -1085,10 +1085,10 @@ 

                                                    Query All

                                                    Quiz time! ๐Ÿ“š โœ๏ธ

                                                    -
                                                    +
                                                    -
                                                    How can we poll the encoding status and the resolution setting using one command?
                                                    -
                                                    +
                                                    How can we poll the encoding status and the resolution setting using one command?
                                                    +

                                                    @@ -1101,10 +1101,10 @@

                                                    Query All

                                                    - -