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:


  1. Contact your GoReact representative for pricing information and to request access.
  2. 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.:

    data_api_access_email.png

  3. Follow the instructions provided:
    1. Navigate to the following URL's for US/EU respectively: 
      • https://hdp.goreact.com/hdpui
      • https://hdp.goreact.eu/hdpui
    2. Enter the credentials given in the email
    3. Change the default password to a new password
  4. Access to your data will be via OData.
    1. 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}
    2. You will need to replace the {orgId} with the ID provided in the email.  Remove the curly brackets once your ID is in-place.
    3. 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.

    4. Here are some links to popular visualization tools that describe how to connect and query data from OData:
      1. Tableau
      2. PowerBI
      3. And here is the documentation for querying data provided by Progress DataDirect.

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:

data_access_login.png

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.

rubric_data_csv_example.png

 


 

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:

https://hdp.goreact.com/api/odata4/data_source-8065/rubric_templates/?$filter=created_by eq <user_id>

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


Rubric_Data_Relationship.png

Usage Data Entity Diagram


Usage_Data_Entity_Diagram__1_.png

 


 

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
Was this article helpful?