open-education-api / specification

OpenAPI (fka Swagger) specification for the Open Education API.
Other
32 stars 26 forks source link

[Change request]: studyLoad_value in courses and programs #290

Closed Tomeriko96 closed 10 months ago

Tomeriko96 commented 1 year ago

Organization

Vrije Universiteit Amsterdam

Project

No response

Contact Details

t.iwan@vu.nl

Short description

Both the courses and programs endpoint contain the field studyLoad_value. One would expect that the former would be the studyload, in credits, per course in the range of 3 - 30 EC, while the current values seems to represent that of the entire study program.

Version

v5

Usecase

No response

Which institutions support this change?

No response

Proposed solution

Reconsider the field in the courses endpoint to reflect credits that would fit better for courses, i.e. in the range of 3 - 30 credits.

Requests and responses

No response

What is your question for the OOAPI work group?

No response

jelmerderonde commented 12 months ago

@Tomeriko96 can you confirm that you are referring to the examples? Because the studyLoad attribute does not specify a specific range of values in version 5?

Tomeriko96 commented 11 months ago

Hi @jelmerderonde,

Below you can find the code I use in R. The first dataframe contains the data from the courses endpoint, the second from the programs endpoint. Looking at the column names, I would have expected studyloadvalues that would fit with the subject. As in the initial issue, I would have expected the range of values of this variable to be between 3 and 30 ects, for example, in the courses endpoint.

In the current version it seems both endpoints have values starting from 92 ects.


api_response <- httr::GET("https://demo05.test.surfeduhub.nl/courses?pageSize=100")

jsonResponseText <- httr::content(api_response, as = "text", encoding = "UTF-8")

df <- jsonlite::fromJSON(jsonResponseText, flatten = TRUE) %>% 
  as.data.frame(check.names = FALSE) 

tabyl(df$items.studyLoad.value)
 df$items.studyLoad.value n percent
                       92 3   0.075
                      104 2   0.050
                      110 2   0.050
                      112 2   0.050
                      116 3   0.075
                      127 3   0.075
                      128 2   0.050
                      135 6   0.150
                      137 2   0.050
                      138 2   0.050
                      139 1   0.025
                      143 3   0.075
                      150 1   0.025
                      152 1   0.025
                      166 1   0.025
                      167 3   0.075
                      173 2   0.050
                      174 1   0.025

tabyl(df$items.studyLoad.studyLoadUnit)
df$items.studyLoad.studyLoadUnit  n percent
                      contacttime  8   0.200
                             ects 31   0.775
                              sbu  1   0.025

api_response <- httr::GET("https://demo05.test.surfeduhub.nl/programs?pageSize=100")

jsonResponseText <- httr::content(api_response, as = "text", encoding = "UTF-8")

df2 <- jsonlite::fromJSON(jsonResponseText, flatten = TRUE) %>% 
  as.data.frame(check.names = FALSE) 

tabyl(df2$items.studyLoad.value)

 df2$items.studyLoad.value n    percent
                        92 1 0.03333333
                       100 1 0.03333333
                       101 1 0.03333333
                       104 1 0.03333333
                       107 1 0.03333333
                       110 1 0.03333333
                       112 1 0.03333333
                       114 1 0.03333333
                       116 1 0.03333333
                       125 1 0.03333333
                       127 2 0.06666667
                       128 1 0.03333333
                       135 2 0.06666667
                       137 1 0.03333333
                       138 1 0.03333333
                       139 1 0.03333333
                       143 2 0.06666667
                       145 1 0.03333333
                       150 1 0.03333333
                       152 1 0.03333333
                       163 2 0.06666667
                       166 1 0.03333333
                       167 1 0.03333333
                       173 1 0.03333333
                       174 1 0.03333333
                       177 1 0.03333333

tabyl(df2$items.studyLoad.studyLoadUnit)

 df2$items.studyLoad.studyLoadUnit  n    percent
                       contacttime  5 0.16666667
                              ects 22 0.73333333
                               sbu  2 0.06666667
                                sp  1 0.03333333
jelmerderonde commented 10 months ago

@Tomeriko96, my answer here is similar to your other issue: the data you are analyzing is from our demo-data endpoint which is not meant to have 100% realistic data.

Since this issue is not about the specification I'm closing it.