Register institution members (batch support)
<h5>Interface introduction</h5>
<p>-This interface can register a user's neukol client account, bind this account to the current institution, and support batch registration.</p>
<h5>Interface information</h5>
<table>
<thead>
<tr>
<th style="text-align: left;"></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">URL</td>
<td style="text-align: left;"><a href="https://neukol.axzt.net/edu_openapi/user_school/register">https://neukol.axzt.net/edu_openapi/user_school/register</a></td>
</tr>
<tr>
<td style="text-align: left;">HTTP Request Methods</td>
<td style="text-align: left;">POST</td>
</tr>
<tr>
<td style="text-align: left;">Coding format</td>
<td style="text-align: left;">UTF-8</td>
</tr>
</tbody>
</table>
<h5>Request header</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">Field name</th>
<th style="text-align: left;">Type</th>
<th style="text-align: left;">Required</th>
<th style="text-align: left;">Description</th>
<th style="text-align: left;">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">no</td>
<td style="text-align: left;">no</td>
<td style="text-align: left;">no</td>
<td style="text-align: left;">no</td>
<td style="text-align: left;">no</td>
</tr>
</tbody>
</table>
<h5>Form parameter</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">Field name</th>
<th style="text-align: left;">Type</th>
<th style="text-align: left;">Required</th>
<th style="text-align: left;">Description</th>
<th style="text-align: left;">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">Institution ID</td>
<td style="text-align: left;">5f1140092302bd0ac2dbc7c4</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">Fixed 32-bit all lowercase characters, institution authentication security key,sign=MD5(params+SECRET),Among them, params represents the concatenated string of all parameters in the request body except sign in lexicographic order(like: “key1=value1key2=value2”)</td>
<td style="text-align: left;">c09636a3a529a386fdaa389228e36fac</td>
</tr>
<tr>
<td style="text-align: left;">timestamp</td>
<td style="text-align: left;">Long</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">Unix Epoch timestamp within 20 minutes of current calling interface, unit: milliseconds</td>
<td style="text-align: left;">1600140360000</td>
</tr>
<tr>
<td style="text-align: left;">userJson</td>
<td style="text-align: left;">List<Object></td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">User information is passed in the JSON string format of the collection, and the maximum number of batch operations is 10</td>
</tr>
<tr>
<td style="text-align: left;"> └phone</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">User phone number</td>
<td style="text-align: left;">t24141</td>
</tr>
<tr>
<td style="text-align: left;"> └code</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">The country code corresponding to the user's mobile phone number. If it is not uploaded, it defaults to 86</td>
<td style="text-align: left;">86</td>
</tr>
<tr>
<td style="text-align: left;"> └role</td>
<td style="text-align: left;">Integer</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">User roles: 1-teacher, 2-Student</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;"> └name</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">The user name is the identification given to the user by the institution. It can be repeated by different users and has nothing to do with the user nickname of neukol client</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;"> └auth</td>
<td style="text-align: left;">Object</td>
<td style="text-align: left;">True</td>
<td style="text-align: left;">User's right to start classes immediately (start classes quickly and reserve classrooms) on neukol client</td>
</tr>
<tr>
<td style="text-align: left;">  └open</td>
<td style="text-align: left;">Integer</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">0 - no neukol client permission to start classes; 1 - have the right to start classes on neukol client; Default - 0</td>
<td style="text-align: left;">0</td>
</tr>
<tr>
<td style="text-align: left;">  └resolutionType</td>
<td style="text-align: left;">String[]</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">The user can select the definition at the beginning of the course. By default, all definitions are optional;</td>
<td style="text-align: left;">["RESOLUTION_480P","RESOLUTION_720P","RESOLUTION_1080P"]</td>
</tr>
<tr>
<td style="text-align: left;">  └cloudRecord</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">Cloud recording mode (can't coexist with local recording, only one can be enabled) resolution<em> 720p (force cloud recording at 720p), allow</em> RESOLUTION<em> 720p (the teacher is allowed to record in the cloud at 720p, which requires the teacher to manually click to start recording), No</em> Record (cloud recording is not allowed). Currently, all cloud recordings are recorded at 720p; Default no_ RECORD;</td>
<td style="text-align: left;">NO_RECORD</td>
</tr>
<tr>
<td style="text-align: left;">  └playback</td>
<td style="text-align: left;">Integer</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">Teachers and teaching assistants have the permission to view playback on the client, 0-off, 1-on; Default - 0</td>
<td style="text-align: left;">0</td>
</tr>
<tr>
<td style="text-align: left;">  └stuPlayback</td>
<td style="text-align: left;">Integer</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">Students have the right to view playback on the client, 0-off, 1-on; Default - 0</td>
<td style="text-align: left;">0</td>
</tr>
<tr>
<td style="text-align: left;">  └picMonitor</td>
<td style="text-align: left;">Integer</td>
<td style="text-align: left;">False</td>
<td style="text-align: left;">Whether to start picture class supervision (only for classes opened by teachers on neukol client, such as fast class or reserved class), 0-off, 1-on; Default - 0</td>
<td style="text-align: left;">0</td>
</tr>
</tbody>
</table>
<h5>Response parameter explanation</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">Parameter name</th>
<th style="text-align: left;">Type</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">responseHeader</td>
<td style="text-align: left;">Object</td>
<td>Response header information</td>
</tr>
<tr>
<td style="text-align: left;"> └status</td>
<td style="text-align: left;">int</td>
<td>HTTP corresponding status code</td>
<td>200</td>
</tr>
<tr>
<td style="text-align: left;"> └msg</td>
<td style="text-align: left;">String</td>
<td>Error message</td>
<td>OK</td>
</tr>
<tr>
<td style="text-align: left;">response</td>
<td style="text-align: left;">Object</td>
<td>Result information</td>
</tr>
<tr>
<td style="text-align: left;"> └successCount</td>
<td style="text-align: left;">Integer</td>
<td>Number of successful records</td>
<td>0</td>
</tr>
<tr>
<td style="text-align: left;"> └failCount</td>
<td style="text-align: left;">Integer</td>
<td>Number of failed records</td>
<td>1</td>
</tr>
<tr>
<td style="text-align: left;"> └errorDetails</td>
<td style="text-align: left;">List<Object></td>
<td>Error details</td>
</tr>
<tr>
<td style="text-align: left;">  └phone</td>
<td style="text-align: left;">String</td>
<td>User phone number</td>
<td>13951766666</td>
</tr>
<tr>
<td style="text-align: left;">  └code</td>
<td style="text-align: left;">String</td>
<td>Country code corresponding to the user's mobile phone number</td>
<td>86</td>
</tr>
<tr>
<td style="text-align: left;">  └role</td>
<td style="text-align: left;">Integer</td>
<td>Role</td>
<td>1</td>
</tr>
<tr>
<td style="text-align: left;">  └errorMsg</td>
<td style="text-align: left;">String</td>
<td>error message</td>
</tr>
<tr>
<td style="text-align: left;">  └errorCode</td>
<td style="text-align: left;">Integer</td>
<td>Server error code</td>
</tr>
</tbody>
</table>
<h5>Request example</h5>
<pre><code>POST /edu_openapi/user_school/register HTTP/1.1
Host: neukol.axzt.net
Content-Type: application/x-www-form-urlencoded
Cookie: JSESSIONID=E111C89EEC9A5A4448FCC61927768DAC
Content-Length: 867
timestamp=1631522399054&sid=5f4df4846acce059dc7cc8ba&sign=66c0732e3453466c25fec87d7b649b56&userJson=[{"phone":"13951761234","code":"86","role":1,"name":"cz_teacher_1","auth":{"open":0,"resolutionType":["RESOLUTION_480P","RESOLUTION_720P","RESOLUTION_1080P"],"cloudRecord":"NO_RECORD"}},{"phone":"13951761234","code":"86","role":2,"name":"cz_student_1","auth":{"open":0,"resolutionType":["RESOLUTION_480P","RESOLUTION_720P","RESOLUTION_1080P"],"cloudRecord":"NO_RECORD"}},{"phone":"13951762345","role":1,"name":"cz_teacher_2"},{"phone":"13951762345","role":2,"name":"cz_student_2"}]</code></pre>
<h5>Response example</h5>
<pre><code>{
"responseHeader": {
"status": 200,
"msg": "OK"
},
"response": {
"errorDetails": [
{
"phone": "13951766666",
"code": "86",
"role": 1,
"errorMsg": "The user has been added to this institution",
"errorCode": 11002
}
],
"successCount": 0,
"failCount": 1
}
}</code></pre>
<h5>Error code</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">Error code</th>
<th>Explanation</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">321</td>
<td>Parameter format error</td>
</tr>
<tr>
<td style="text-align: left;">2000</td>
<td>sign certification failed</td>
</tr>
<tr>
<td style="text-align: left;">2001</td>
<td>Request timeout</td>
</tr>
<tr>
<td style="text-align: left;">2002</td>
<td>Institution does not open an open interface</td>
</tr>
<tr>
<td style="text-align: left;">2010</td>
<td>Institution is inexistent</td>
</tr>
<tr>
<td style="text-align: left;">500</td>
<td>unknown exception on the server</td>
</tr>
</tbody>
</table>