package Ġio . github . matrix kt . api Ċ Ċ import Ġio . github . matrix kt . models . Authentication Data Ċ import Ġio . github . matrix kt . utils . Matrix Rpc Ċ import Ġio . github . matrix kt . utils . Rpc Method Ċ import Ġio . github . matrix kt . utils . resource . Resource Ċ import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . Serializable Ċ Ċ /** Ċ Ġ* ĠThis ĠAPI Ġendpoint Ġuses Ġthe Ġ` User - Interactive ĠAuthentication ĠAPI ` _, Ġexcept Ġin Ċ Ġ* Ġthe Ġcases Ġwhere Ġa Ġguest Ġaccount Ġis Ġbeing Ġregistered . Ċ Ġ* Ċ Ġ* ĠRegister Ġfor Ġan Ġaccount Ġon Ġthis Ġhome server . Ċ Ġ* Ċ Ġ* ĠThere Ġare Ġtwo Ġkinds Ġof Ġuser Ġaccount : Ċ Ġ* Ċ Ġ* Ġ- Ġ` user ` Ġaccounts . ĠThese Ġaccounts Ġmay Ġuse Ġthe Ġfull ĠAPI Ġdescribed Ġin Ġthis Ġspecification . Ċ Ġ* Ċ Ġ* Ġ- Ġ` guest ` Ġaccounts . ĠThese Ġaccounts Ġmay Ġhave Ġlimited Ġpermissions Ġand Ġmay Ġnot Ġbe Ġsupported Ġby Ġall Ċ Ġ* Ġservers . Ċ Ġ* Ċ Ġ* ĠIf Ġregistration Ġis Ġsuccessful , Ġthis Ġendpoint Ġwill Ġissue Ġan Ġaccess Ġtoken Ċ Ġ* Ġthe Ġclient Ġcan Ġuse Ġto Ġauthorize Ġitself Ġin Ġsubsequent Ġrequests . Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġclient Ġdoes Ġnot Ġsupply Ġa Ġ`` device _ id ``, Ġthe Ġserver Ġmust Ċ Ġ* Ġauto - generate Ġone . Ċ Ġ* Ċ Ġ* ĠThe Ġserver ĠSHO ULD Ġregister Ġan Ġaccount Ġwith Ġa ĠUser ĠID Ġbased Ġon Ġthe Ċ Ġ* Ġ`` username `` Ġprovided , Ġif Ġany . ĠNote Ġthat Ġthe Ġgrammar Ġof ĠMatrix ĠUser ĠID Ċ Ġ* Ġlocal parts Ġis Ġrestricted , Ġso Ġthe Ġserver ĠMUST Ġeither Ġmap Ġthe Ġprovided Ċ Ġ* Ġ`` username `` Ġonto Ġa Ġ`` user _ id `` Ġin Ġa Ġlogical Ġmanner , Ġor Ġreject Ċ Ġ* Ġ`` username `` \ s Ġwhich Ġdo Ġnot Ġcomp ly Ġto Ġthe Ġgrammar , Ġwith Ċ Ġ* Ġ`` M _ INVALID _ USERNAME ``. Ċ Ġ* Ċ Ġ* ĠMatrix Ġclients ĠMUST ĠNOT Ġassume Ġthat Ġlocal part Ġof Ġthe Ġregistered Ċ Ġ* Ġ`` user _ id `` Ġmatches Ġthe Ġprovided Ġ`` username ``. Ċ Ġ* Ċ Ġ* ĠThe Ġreturned Ġaccess Ġtoken Ġmust Ġbe Ġassociated Ġwith Ġthe Ġ`` device _ id `` Ċ Ġ* Ġsupplied Ġby Ġthe Ġclient Ġor Ġgenerated Ġby Ġthe Ġserver . ĠThe Ġserver Ġmay Ċ Ġ* Ġinvalidate Ġany Ġaccess Ġtoken Ġpreviously Ġassociated Ġwith Ġthat Ġdevice . ĠSee Ċ Ġ* Ġ` Relationship Ġbetween Ġaccess Ġtokens Ġand Ġdevices ` _. Ċ Ġ* Ċ Ġ* ĠWhen Ġregistering Ġa Ġguest Ġaccount , Ġall Ġparameters Ġin Ġthe Ġrequest Ġbody Ċ Ġ* Ġwith Ġthe Ġexception Ġof Ġ`` initial _ device _ display _ name `` ĠMUST ĠBE Ġignored Ċ Ġ* Ġby Ġthe Ġserver . ĠThe Ġserver ĠMUST Ġpick Ġa Ġ`` device _ id `` Ġfor Ġthe Ġaccount Ċ Ġ* Ġregardless Ġof Ġinput . Ċ Ġ* Ċ Ġ* ĠAny Ġuser ĠID Ġreturned Ġby Ġthis ĠAPI Ġmust Ġconform Ġto Ġthe Ġgrammar Ġgiven Ġin Ġthe Ċ Ġ* Ġ` Matrix Ġspecification Ġ< ../ append ices . html # user - identifiers >` _. Ċ Ġ*/ Ċ public Ġclass ĠRegister ( ĊĠĠĠ Ġpublic Ġoverride Ġval Ġurl : ĠUrl , ĊĠĠĠ Ġpublic Ġoverride Ġval Ġbody : ĠBody Ċ ) Ġ: ĠMatrix Rpc < Rpc Method . Post , ĠRegister . Url , ĠRegister . Body , ĠRegister . Response > Ġ{ ĊĠĠĠ Ġ@ Resource ("/ _ matrix / client / r 0 / register ") ĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġpublic Ġclass ĠUrl ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġkind Ġof Ġaccount Ġto Ġregister . ĠDefaults Ġto Ġ`` user ``. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġkind : ĠKind ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġpublic Ġenum Ġclass ĠKind Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" guest ") ĊĠĠĠĠĠĠĠ ĠG UEST , ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" user ") ĊĠĠĠĠĠĠĠ ĠUSER ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġpublic Ġclass ĠBody ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdditional Ġauthentication Ġinformation Ġfor Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġuser - interactive Ġauthentication ĠAPI . ĠNote Ġthat Ġthis ĊĠĠĠĠĠĠĠĠ Ġ* Ġinformation Ġis Ġ* not * Ġused Ġto Ġdefine Ġhow Ġthe Ġregistered Ġuser ĊĠĠĠĠĠĠĠĠ Ġ* Ġshould Ġbe Ġauthenticated , Ġbut Ġis Ġinstead Ġused Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġauthenticate Ġthe Ġ`` register `` Ġcall Ġitself . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġauth : ĠAuthentication Data ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠID Ġof Ġthe Ġclient Ġdevice . ĠIf Ġthis Ġdoes Ġnot Ġcorrespond Ġto Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġknown Ġclient Ġdevice , Ġa Ġnew Ġdevice Ġwill Ġbe Ġcreated . ĠThe Ġserver ĊĠĠĠĠĠĠĠĠ Ġ* Ġwill Ġauto - generate Ġa Ġdevice _ id Ġif Ġthis Ġis Ġnot Ġspecified . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" device _ id ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠdeviceId : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġtrue , Ġan Ġ`` access _ token `` Ġand Ġ`` device _ id `` Ġshould Ġnot Ġbe ĊĠĠĠĠĠĠĠĠ Ġ* Ġreturned Ġfrom Ġthis Ġcall , Ġtherefore Ġprevent ing Ġan Ġautomatic ĊĠĠĠĠĠĠĠĠ Ġ* Ġlogin . ĠDefaults Ġto Ġfalse . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" in hibit _ login ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġin hibit Login : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġdisplay Ġname Ġto Ġassign Ġto Ġthe Ġnewly - created Ġdevice . ĠIgnore d ĊĠĠĠĠĠĠĠĠ Ġ* Ġif Ġ`` device _ id `` Ġcorresponds Ġto Ġa Ġknown Ġdevice . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" initial _ device _ display _ name ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġinitial Device DisplayName : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġdesired Ġpassword Ġfor Ġthe Ġaccount . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġpassword : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġbasis Ġfor Ġthe Ġlocal part Ġof Ġthe Ġdesired ĠMatrix ĠID . ĠIf Ġomitted , ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġhome server ĠMUST Ġgenerate Ġa ĠMatrix ĠID Ġlocal Ġpart . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġusername : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġpublic Ġclass ĠResponse ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġaccess Ġtoken Ġfor Ġthe Ġaccount . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġaccess Ġtoken Ġcan Ġthen Ġbe Ġused Ġto Ġauthorize Ġother Ġrequests . ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġif Ġthe Ġ`` in hibit _ login `` Ġoption Ġis Ġfalse . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" access _ token ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠaccessToken : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠID Ġof Ġthe Ġregistered Ġdevice . ĠWill Ġbe Ġthe Ġsame Ġas Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġcorresponding Ġparameter Ġin Ġthe Ġrequest , Ġif Ġone Ġwas Ġspecified . ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġif Ġthe Ġ`` in hibit _ login `` Ġoption Ġis Ġfalse . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" device _ id ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠdeviceId : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġserver _ name Ġof Ġthe Ġhome server Ġon Ġwhich Ġthe Ġaccount Ġhas ĊĠĠĠĠĠĠĠĠ Ġ* Ġbeen Ġregistered . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ** Deprecated **. ĠClients Ġshould Ġextract Ġthe Ġserver _ name Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ`` user _ id `` Ġ( by Ġsplitting Ġat Ġthe Ġfirst Ġcolon ) Ġif Ġthey Ġrequire ĊĠĠĠĠĠĠĠĠ Ġ* Ġit . ĠNote Ġalso Ġthat Ġ`` home server `` Ġis Ġnot Ġsp elt Ġthis Ġway . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Clients Ġshould Ġextract Ġthe Ġserver _ name Ġfrom Ġ`` user _ id `` ") ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" home _ server ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġhome Server : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġfully - qualified ĠMatrix Ġuser ĠID Ġ( MX ID ) Ġthat Ġhas Ġbeen Ġregistered . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠAny Ġuser ĠID Ġreturned Ġby Ġthis ĠAPI Ġmust Ġconform Ġto Ġthe Ġgrammar Ġgiven Ġin Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` Matrix Ġspecification Ġ< ../ append ices . html # user - identifiers >` _. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Serial Name (" user _ id ") ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠuserId : ĠString ĊĠĠĠ Ġ) Ċ } Ċ