GoReact has integrated with Progress DataDirect, a third party API tool that allows our customers to query GoReact using your preferred data-visualization tool. If your organization has the technical resources to query data in REST (OData) formats, authorized users will be able to access our data.
Note
You may wish to forward this guide to your organization's IT team, Director of Information Technology, Data Strategist/Analyst or similar person or team to help implement this API and build your queries.
To gain access to GoReact data:
- Contact your GoReact representative for pricing information and to request access.
- Once your access has been set up, you'll receive an email with instructions. This email will be sent to the user who will be querying the data.:
- Follow the instructions provided:
- Navigate to the following URL's for US/EU respectively:
- https://hdp.goreact.com/hdpui
- https://hdp.goreact.eu/hdpui
- Enter the credentials given in the email
- Change the default password to a new password
- Navigate to the following URL's for US/EU respectively:
- Access to your data will be via OData.
- The base URL to access your data for your specific US/EU stack will be:
- https://hdp.goreact.com/api/odata4/data_source-{orgId}
- https://hdp.goreact.eu/api/odata4/data_source-{orgId}
- https://hdp.goreact.com/api/odata4/data_source-{orgId}
- You will need to replace the {orgId} with the ID provided in the email. Remove the curly brackets once your ID is in-place.
- Add these paths to the end of the base URL above to access each data set. (See the table below for additional information):
- /rubric_templates
- /rubric_sessions
- /rubric_session_elements
- /rubric_elements
- /rubric_element_options
- /users
- /presenters
- /courses
- /assignments
- /sessions
- /comments
- /course_settings
- /media
- /markers
- /marker_sets
For more information on each path, see our Data API Glossary guide.
- Here are some links to popular visualization tools that describe how to connect and query data from OData:
- Tableau
- PowerBI
- And here is the documentation for querying data provided by Progress DataDirect.
- The base URL to access your data for your specific US/EU stack will be:
Parameters
You can append a number of query parameters to each URL to specify the data you're looking for in each category. For a list of and details about those parameters, see the guide from Progress DataDirect here.
You can dig deeper into the meaning of these parameters and others with the documentation here.
Example
Since OData just uses REST API URLs to access the data, you can access it through any tool that can query APIs. Postman, cURL, Tableau, PowerBI, etc. You can even access the data through a web browser. To see this in action, just navigate to the URL in the address bar of your favorite browser, replacing the orgIds with your own, and ensuring that you're pointing to the proper US/EU stack:
-
US: https://hdp.goreact.com/api/odata4/data_source-8065/rubric_templates/
-
EU: https://hdp.goreact.eu/api/odata4/data_source-8065/rubric_templates/
You will be prompted to enter your credentials. If you are accessing this via Postman or some other tool, this will use the Basic authentication header with your base64 encoded username:password.
After the credentials have been verified, the data will be sent to the user via JSON.
Digging Deeper
Now that you have loaded your rubric_templates, you can filter deeper by finding templates only created by a specific user.
Using the documentation above for using parameters, and finding the user_id you want to look for, you can build a query like the following:
This would retrieve a list of just the rubric_templates created by that specified user. At the end of this article, you can find a linked PDF document that shows you all the properties on each entity that you can query and filter using the "$filter" option. You can use other query parameters found in the docs here in the Parameters section.
Rubric Data Entity Diagram
Usage Data Entity Diagram
Querying the Rubric Report/Table of Terms
Rubric Report value | Data API location |
Date/Time Exported | The time the Rubric Report was generated, no location in the Data API for this one. |
Rubric Title | rubric_templates.title |
Rubric Type | if assignments.peer_rubric != null && rubric_sessions.role not in [‘reviewer’, ‘instructor’, ‘admin’, ‘super’]; then rubricType = ‘student’ else rubricType = ‘instructor’ |
Instructor ID | assignments.created_by |
Instructor Last Name | assignments.created_by == users.user_id; Use: users.last_name |
Instructor First Name | assignments.created_by == users.user_id; Use: users.first_name |
Course ID (GoReact) | sessions.course_id |
Course ID (LMS) | sessions.course_id == courses.course_id; Use: courses.external_course_id |
Course Title | sessions.course_id == courses.course_id; Use: courses.name |
Assignment ID (GoReact.com) | sessions.assignment_id |
Assignment ID (LMS) | sessions.assignment_id == assignments.assignment_id; Use: assignments.external_assignment_id |
Assignment Title | assignments.name |
Assessor Last Name | rubric_sessions.created_by == users.user_id; Use: users.last_name |
Assessor First Name | rubric_sessions.created_by == users.user_id; Use: users.first_name |
Presenter Email | sessions.session_id == presenters.session_id; Use: presenters.user_id = users.user_id; users.email |
Presenter ID | sessions.session_id == presenters.session_id; Use: presenters.user_id = users.user_id; |
Presenter Last Name | sessions.session_id == presenters.session_id; Use: presenters.user_id = users.user_id; users.last_name |
Presenter First Name | sessions.session_id == presenters.session_id; Use: presenters.user_id = users.user_id; users.first_name |
Date/Time Assignment Submitted | sessions.posted_at |
“<PointsOnlyTitle>(points)” | rubric_elements.type == ‘points’; Use: rubric_session_elements.value |
“<PointsOnlyTitle>(points possible)” | rubric_elements.type == ‘points’; Use: rubric_elements.points |
“<CheckboxTitle>(points)” | rubric_elements.type == ‘checkbox’; Use: rubric_session_elements.value if rubric_elements.points == null; then use null else use 0 |
“<CheckboxTitle>(points possible)” | rubric_elements.type == ‘checkbox’; Use: rubric_elements.points |
“<NumericScaleTitle>(points)” | rubric_elements.type == ‘numeric’; Use: rubric_session_elements.value |
“<NumericScaleTitle>(points possible)” | rubric_elements.type == ‘numeric’; rubric_session_elements.rubric_element_option_id = rubric_element_options.id Use: the largest value from the options |
“<QualitativeScaleTitle>(<Poor>: <assigned points>, <Fair>: <assigned points>, <Good>: <assigned points>, <Very Good>: <assigned points>, <Excellent>: <assigned points>)” | rubric_elements.type == ‘qualitative’; if rubric_session_elements.rubric_element_option_id != null; rubric_session_elements.rubric_element_option_id = rubric_element_options.id Use: rubric_element_options.label |
“<QualitativeScaleTitle>(points)” | rubric_elements.type == ‘qualitative’; Use: rubric_session_elements.value |
“<QualitativeScaleTitle>(points possible)” | rubric_elements.type == ‘qualitative’; rubric_session_elements.rubric_element_option_id = rubric_element_options.id Use: the largest value from the options |
“<TextResponseTitle>(text)” | rubric_elements.type == ‘text’; Use: rubric_session_elements.value |
Querying the Usage Report/Table of Terms
Usage Report value | Data API location |
Date/Time Exported | The time the Report was generated, no location in the Data API for this one. |
Session Presenter(s) | comments.session_id == presenters.session_id; Use: presenters.user_id = users.user_id; |
Commenter Name | comments.created_by == users.user_id; Use: users.last_name |
Num Comments | comments.session_id == sessions.session_id; |
Num Markers | if comment_resources.resource_type = 'Tag' where comment_id is unique |
Num A/V Comments | if comment_resources.resource_type in ['Media'] where comment_id is unique |
Num Text Comments | If comments.type in[‘text’,’end’]; |
Avg Comment Length | If comments.type in[‘text’,’end’], length(comments.text) |
Tag Used | comments.resource_type == ‘tag’; comments.resource_id == markers.marker_id |