Added SIS CSV page, added sis_csv table to css, changed h2 css to top margin 30px for all documentation

Change-Id: I180b1a83a3545804f84e8d736dcdfd981ce9dd89
Reviewed-on: https://gerrit.instructure.com/6040
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
This commit is contained in:
rob orton 2011-10-07 14:03:23 -06:00 committed by Brian Palmer
parent d51b5d9a73
commit 99faa3aa6d
4 changed files with 549 additions and 1 deletions

View File

@ -35,6 +35,7 @@ h2 {
border-bottom: 1px #aaa solid;
padding: 0 0 3px;
font-size: 1.4em;
margin-top: 30px;
}
#sidebar {
@ -103,6 +104,19 @@ h3 .defined-in {
.method_details h4 {
}
table.sis_csv {
border: 2px solid gray;
border-collapse: collapse;
}
table.sis_csv th, table.sis_csv td {
padding: 4px;
border: 1px inset gray;
border-spacing: 1px;
}
table.sis_csv th {
background-color: #DDD;
}
/* Footer */
#footer {
clear: left;

View File

@ -76,8 +76,9 @@ def generate_assets
end
end
def serialize_static_pages
%w( authentication.md object_ids.md pagination.md oauth.md ).each do |file|
%w( authentication.md object_ids.md pagination.md oauth.md sis_csv.md ).each do |file|
options[:file] = "doc/templates/rest/#{file}"
serialize(file.sub(/\..*$/, '.html'))
options.delete(:file)

View File

@ -3,6 +3,7 @@
<a href="<%= url_for("authentication.html") %>" class="<%= 'current' if options[:object] == 'authentication.html' %>">Authentication</a>
<a href="<%= url_for("oauth.html") %>" class="<%= 'current' if options[:object] == 'oauth.html' %>">OAuth</a>
<a href="<%= url_for("object_ids.html") %>" class="<%= 'current' if options[:object] == 'object_ids.html' %>">SIS IDs</a>
<a href="<%= url_for("sis_csv.html") %>" class="<%= 'current' if options[:object] == 'sis_csv.html' %>">SIS CSV</a>
<a href="<%= url_for("pagination.html") %>" class="<%= 'current' if options[:object] == 'pagination.html' %>">Pagination</a>
<h2>Resources</h2>
<% options[:resources].each_with_index do |(resource, controllers), i| %>

532
doc/templates/rest/sis_csv.md vendored Normal file
View File

@ -0,0 +1,532 @@
SIS Import Format Documentation
===============================
Instructure Canvas can integrate with an institution's Student Information Services (SIS) in
several ways. The simplest way involves providing Canvas with several CSV files describing
users, courses, and enrollments.
These files can be zipped together and uploaded to the Account admin area.
Standard CSV rules apply:
* The first row will be interpreted as a header defining the ordering of your columns. This
header row is mandatory.
* Fields that contain a comma must be surrounded by double-quotes.
* Fields that contain double-quotes must also be surrounded by double-quotes, with the
internal double-quotes doubled. Example: Chevy "The Man" Chase would be included in
the CSV as "Chevy ""The Man"" Chase".
All text should be UTF-8 encoded.
Batch Mode
----------
If the option to do a "full batch update" is selected in the UI, then this SIS upload is considered
to be the new canonical set of data, and data from previous SIS imports that isn't present in
this import will be deleted. This can be useful if the source SIS software doesn't have a way
to send delete records as part of the import. This deletion is scoped to a single term, which
must be specified when uploading the SIS import. Use this option with caution, as it can delete
large data sets without any prompting on the individual records. Currently, this affects courses,
sections and enrollments.
This option will only affect data created via previous SIS imports. Manually created courses, for
example, won't be deleted even if they don't appear in the new SIS import.
users.csv
---------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>user_id</td>
<td>text</td>
<td><em>required</em></td>
<td>A unique identifier used to reference users in the enrollments table.
This identifier must not change for the user, and must be globally unique.</td>
</tr>
<tr>
<td>login_id</td>
<td>text</td>
<td><em>required</em></td>
<td>The name that a user will use to login to Instructure. If you have an
authentication service configured (like LDAP), this will be their username
from the remote system.</td>
</tr>
<tr>
<td>password</td>
<td>text</td>
<td></td>
<td><p>If the account is configured to use LDAP or an SSO protocol then
this isn't needed. Otherwise this is the password that will be used to
login to Canvas along with the 'login_id' above.</p>
<p>If the user already has a password (from previous SIS import or
otherwise) it will <em>not</em> be overwritten</p></td>
</tr>
<tr>
<td>first_name</td>
<td>text</td>
<td></td>
<td>Given name of the user.</td>
</tr>
<tr>
<td>last_name</td>
<td>text</td>
<td></td>
<td>Last name of the user.</td>
</tr>
<tr>
<td>email</td>
<td>text</td>
<td></td>
<td>The email address of the user. This might be the same as login_id, but should
still be provided.</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td><em>active</em></td>
<td>active, deleted</td>
</tr>
</table>
<p>When a student is 'deleted' all of its enrollments will also be deleted and
they won't be able to log in to the school's account. If you still want the
student to be able to log in but just not participate, leave the student
'active' but set the enrollments to 'concluded'.</p>
Sample:
<pre>
user_id,login_id,password,first_name,last_name,email,status
01103,bsmith01,,Bob,Smith,bob.smith@myschool.edu,active
13834,jdoe03,,John,Doe,john.doe@myschool.edu,active
13aa3,psue01,,Peggy,Sue,peggy.sue@myschool.edu,active
</pre>
A column to be added in the future:
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>local_account</td>
<td>boolean</td>
<td>false</td>
<td>If true, and if the account (as found by the login_id) is not found, this user will be sent an invitation
via their email address. They will choose their password when the click the invitation link.</td>
</tr>
</table>
accounts.csv
------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>account_id</td>
<td>text</td>
<td>required</td>
<td>A unique identifier used to reference accounts in the enrollments data.
This identifier must not change for the account, and must be globally unique.</td>
</tr>
<tr>
<td>parent_account_id</td>
<td>text</td>
<td> </td>
<td>The account identifier of the parent account.
If this is blank the parent account will be the root account.</td>
</tr>
<tr>
<td>name</td>
<td>text</td>
<td>required</td>
<td>The name of the account</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>active, deleted</td>
</tr>
</table>
Any account that will have child accounts must be listed in the csv before any child account references it.
Sample:
<pre>
account_id,parent_account_id,name,status
A001,,Humanities,active
A002,A001,English,active
A003,A001,Spanish,active
</pre>
terms.csv
------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>term_id</td>
<td>text</td>
<td>required</td>
<td>A unique identifier used to reference terms in the enrollments data.
This identifier must not change for the account, and must be globally unique.</td>
</tr>
<tr>
<td>name</td>
<td>text</td>
<td>required</td>
<td>The name of the term</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>active, deleted</td>
</tr>
<tr>
<td>start_date</td>
<td>date</td>
<td></td>
<td>The date the term starts. The format should be: YYYY-mm-DD HH:MM:SS</td>
</tr>
<tr>
<td>end_date</td>
<td>date</td>
<td></td>
<td>The date the term ends. The format should be: YYYY-mm-DD HH:MM:SS</td>
</tr>
</table>
Any account that will have child accounts must be listed in the csv before any child account references it.
Sample:
<pre>
term_id,name,status,start_date,end_date
T001,Winter2011,active,,
T002,Spring2011,active,2010-9-03 00:00:00,2010-12-14 00:00:00
T003,Fall2011,active,,
</pre>
courses.csv
------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>course_id</td>
<td>text</td>
<td>required</td>
<td>A unique identifier used to reference courses in the enrollments data.
This identifier must not change for the account, and must be globally unique.</td>
</tr>
<tr>
<td>short_name</td>
<td>text</td>
<td>required</td>
<td>A short name for the course</td>
</tr>
<tr>
<td>long_name</td>
<td>text</td>
<td>required</td>
<td>A long name for the course. (This can be the same as the short name,
but if both are available, it will provide a better user experience to provide both.)</td>
</tr>
<tr>
<td>account_id</td>
<td>text</td>
<td> </td>
<td>The account identifier from accounts.csv, if none is specified the course will be attached to the root account</td>
</tr>
<tr>
<td>term_id</td>
<td>text</td>
<td> </td>
<td>The term identifier from terms.csv, if no term_id is specified the default term for the account will be used</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>active, deleted, completed</td>
</tr>
<tr>
<td>start_date</td>
<td>date</td>
<td></td>
<td>The date the term starts. The format should be: YYYY-mm-DD HH:MM:SS</td>
</tr>
<tr>
<td>end_date</td>
<td>date</td>
<td></td>
<td>The date the term ends. The format should be: YYYY-mm-DD HH:MM:SS</td>
</tr>
</table>
Sample:
<pre>
course_id,short_name,long_name,account_id,term_id,status
E411208,ENG115,English 115: Intro to English,A002,,active
R001104,BIO300,"Biology 300: Rocking it, Bio Style",A004,Fall2011,active
A110035,ART105,"Art 105: ""Art as a Medium""",A001,,active
</pre>
sections.csv
------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>section_id</td>
<td>text</td>
<td>required</td>
<td>A unique identifier used to reference sections in the enrollments data.
This identifier must not change for the account, and must be globally unique.</td>
</tr>
<tr>
<td>course_id</td>
<td>text</td>
<td>required</td>
<td>The course identifier from courses.csv</td>
</tr>
<tr>
<td>name</td>
<td>text</td>
<td>required</td>
<td>The name of the section</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>active, deleted, completed</td>
</tr>
<tr>
<td>start_date</td>
<td>date</td>
<td></td>
<td>The date the term starts. The format should be: YYYY-mm-DD HH:MM:SS</td>
</tr>
<tr>
<td>end_date</td>
<td>date</td>
<td></td>
<td>The date the term ends. The format should be: YYYY-mm-DD HH:MM:SS</td>
</tr>
<tr>
<td>account_id</td>
<td>text</td>
<td> </td>
<td>The account identifier from accounts.csv, if none is specified the course will be attached to the root account</td>
</tr>
</table>
Sample:
<pre>
section_id,course_id,name,status,start_date,end_date
S001,E411208,Section 1,active,,
S002,E411208,Section 2,active,,
S003,R001104,Section 1,active,,
</pre>
enrollments.csv
---------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>course_id</td>
<td>text</td>
<td>required if section_id missing</td>
<td>The course identifier from courses.csv</td>
</tr>
<tr>
<td>user_id</td>
<td>text</td>
<td>required</td>
<td>The User identifier from users.csv</td>
</tr>
<tr>
<td>role</td>
<td>text</td>
<td>required</td>
<td>student, teacher, ta, observer, designer</td>
</tr>
<tr>
<td>section_id</td>
<td>text</td>
<td>required if course_id missing</td>
<td>The section identifier from sections.csv, if none is specified the default section for the course will be used</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>active, deleted, completed</td>
</tr>
<tr>
<td>associated_user_id</td>
<td>text</td>
<td> </td>
<td>For observers, the user identifier from users.csv of a student
in the same course that this observer should be able to see grades for.
Ignored for any role other than observer</td>
</tr>
</table>
When an enrollment is in a 'completed' state the student is limited to read-only access to the course.
Sample:
<pre>
course_id,user_id,role,section_id,status
E411208,01103,student,1B,active
E411208,13834,student,2A,active
E411208,13aa3,teacher,2A,active
</pre>
This new column will be implemented some time in the future:
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>exclusive_section</td>
<td>boolean</td>
<td>false</td>
<td>If true, then any enrollments for
this user in this course NOT in the section specified in section_name will be deleted.</td>
</tr>
</table>
groups.csv
------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>group_id</td>
<td>text</td>
<td>required</td>
<td>A unique identifier used to reference groups in the group_users data.
This identifier must not change for the group, and must be globally unique.</td>
</tr>
<tr>
<td>account_id</td>
<td>text</td>
<td> </td>
<td>The account identifier from accounts.csv, if none is specified the group will be attached to the root account.</td>
</tr>
<tr>
<td>name</td>
<td>text</td>
<td>required</td>
<td>The name of the group.</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>available, closed, completed, deleted</td>
</tr>
</table>
Sample:
<pre>
group_id,account_id,name,status
G411208,A001,Group1,available
G411208,,Group2,available
G411208,,Group3,deleted
</pre>
groups_membership.csv
------------
<table class="sis_csv">
<tr>
<th>Field Name</th>
<th>Data Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td>group_id</td>
<td>text</td>
<td>required</td>
<td>The group identifier from groups.csv</td>
</tr>
<tr>
<td>user_id</td>
<td>text</td>
<td>required</td>
<td>The user identifier from users.csv</td>
</tr>
<tr>
<td>status</td>
<td>enum</td>
<td>active</td>
<td>accepted deleted</td>
</tr>
</table>
Sample:
<pre>
group_id,user_id,status
G411208,U001,accepted
G411208,U002,accepted
G411208,U003,deleted
</pre>