Overview
The public API is used for accessing public data related to courses, curricula, organisations and locations.
Endpoints
Export admission targets
GET /api/admission-targets/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point. With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be consecutive. With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
sinceOrdinal optional |
Long (int64) |
789 |
|
sinceTime optional |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
|
limit required |
The maximum amount of results to return |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultAdmissionTarget[ExportResultAdmissionTarget] |
Import admission targets
POST /api/admission-targets/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
AdmissionTarget required |
List (AdmissionTarget) |
Export assessment items
GET /api/assessment-items/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return assessment items modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return assessment items modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of assessment items to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultAssessmentItem[ExportResultAssessmentItem] |
Samples
GET /api/assessment-items/v1/export?since=32754&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1102
{
"greatestOrdinal" : 32756,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.e",
"createdOn" : "2025-04-15T12:10:47.083428",
"lastModifiedBy" : "spectre.e",
"lastModifiedOn" : "2025-04-15T12:10:47.083443",
"modificationOrdinal" : 32756
},
"documentState" : "DRAFT",
"id" : "otm-77b1b42b-833a-4304-b510-39ab0a5b91b5",
"universityOrgIds" : [ "the-spectre" ],
"credits" : {
"min" : 1,
"max" : 1
},
"name" : null,
"nameSpecifier" : null,
"gradeScaleId" : null,
"possibleAttainmentLanguages" : [ ],
"assessmentItemType" : null,
"contentDescription" : null,
"studyFormat" : null,
"grading" : null,
"learningMaterial" : null,
"literature" : [ ],
"studyField" : null,
"subject" : null,
"snapshotDateTime" : null,
"responsibilityInfos" : [ ],
"organisations" : [ ],
"primaryCourseUnitGroupId" : "otm-7a285d12-3503-4610-adf4-da73c7c1d3cc",
"cooperationNetworkDetails" : null,
"rdiCreditsEnabled" : "DISABLED"
} ]
}
Get assessment item
GET /api/assessment-items/v1/{assessmentItemId}
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
AssessmentItem[AssessmentItem] |
Samples
GET /api/assessment-items/v1/otm-5e5e9852-3304-48e0-8d8f-a2dc5c393163 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 960
{
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.e",
"createdOn" : "2025-04-15T12:10:47.299076",
"lastModifiedBy" : "spectre.e",
"lastModifiedOn" : "2025-04-15T12:10:47.29909",
"modificationOrdinal" : 32883
},
"documentState" : "DRAFT",
"id" : "otm-5e5e9852-3304-48e0-8d8f-a2dc5c393163",
"universityOrgIds" : [ "the-spectre" ],
"credits" : {
"min" : 1,
"max" : 1
},
"name" : null,
"nameSpecifier" : null,
"gradeScaleId" : null,
"possibleAttainmentLanguages" : [ ],
"assessmentItemType" : null,
"contentDescription" : null,
"studyFormat" : null,
"grading" : null,
"learningMaterial" : null,
"literature" : [ ],
"studyField" : null,
"subject" : null,
"snapshotDateTime" : null,
"responsibilityInfos" : [ ],
"organisations" : [ ],
"primaryCourseUnitGroupId" : "otm-f4a5dc10-4fa1-4956-b27b-a374e0a28583",
"cooperationNetworkDetails" : null,
"rdiCreditsEnabled" : "DISABLED"
}
Import assessment items
POST /api/assessment-items/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
AssessmentItem required |
List (AssessmentItem) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/assessment-items/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 1005
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-4d440cb7-0c94-4dae-b959-16e6152a5b01",
"universityOrgIds" : [ "the-spectre" ],
"credits" : {
"min" : 10,
"max" : 10
},
"name" : {
"fi" : "AssessmentItem 2025-04-15T12:10:47.422436766"
},
"nameSpecifier" : {
"fi" : "spec"
},
"gradeScaleId" : "hy-0-5",
"possibleAttainmentLanguages" : [ ],
"assessmentItemType" : "urn:code:assessment-item-type:exam",
"contentDescription" : null,
"studyFormat" : null,
"grading" : null,
"learningMaterial" : null,
"literature" : [ ],
"studyField" : null,
"subject" : null,
"snapshotDateTime" : null,
"responsibilityInfos" : [ ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"primaryCourseUnitGroupId" : "otm-fixture-cu-id",
"cooperationNetworkDetails" : null,
"rdiCreditsEnabled" : "DISABLED"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Stream assessment items
GET /api/assessment-items/v1/stream
Entities can be exported as a stream in modification order, and the stream can be left open to listen for changes. Duplicates are possible if entities are modified several times.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return assessment items modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return assessment items modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
follow optional |
If true, keeps the connection open and streams updates as they occur. |
Boolean |
true |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[[object]] |
Export buildings
GET /api/buildings/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return buildings modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return buildings modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of buildings to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultBuilding[ExportResultBuilding] |
Samples
GET /api/buildings/v1/export?since=33596&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 756
{
"greatestOrdinal" : 33599,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:10:49.31824",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:10:49.318273",
"modificationOrdinal" : 33599
},
"documentState" : "ACTIVE",
"id" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Viikki",
"fi" : "Viikki"
},
"address" : {
"countryUrn" : "urn:code:country:246",
"isUserEditable" : true,
"streetAddress" : "Viikinkari 9",
"postalCode" : "00790",
"city" : "Helsinki",
"type" : "FinnishAddress"
}
} ]
}
Get building
GET /api/buildings/v1/{buildingId}
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Building[Building] |
Samples
GET /api/buildings/v1/otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74 HTTP/1.1
Accept: application/json
Authorization: Bearer eyJraWQiOiJ0ZXN0LjEiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzUxMiJ9.eyJzdWIiOiJhcnNrYSIsInNjb3BlIjoiYWRtaW4gdXNlciIsImlzcyI6InNpcyIsInVuaXZlcnNpdHlPcmdJZHMiOiJoeS11bml2ZXJzaXR5LXJvb3QtaWQiLCJwZXJzb25pZCI6Im90bS1hZG1pbi1pZC0xIiwiZXhwIjoxNzQ0NzA4NDI5LCJ1c2VyaW5mbyI6e319.AKdgDWpbLBSid0f5yq6MVDgNwRm3Hrcw8D9ogTtb8chufn0ygS0ap5qLbODQxxwDJ_Nr6cR0v5JI3hEtpUOn1H2LAfWC87dJBzkKAQ2-2x_PDe3cn_3-k4YxgpfLJJlHmHWbchxBhARRB8GRQQFqcwqPXSca3EYnWqLjMnPoU0vZByAo
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 636
{
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:10:49.486878",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:10:49.486891",
"modificationOrdinal" : 33682
},
"documentState" : "ACTIVE",
"id" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Viikki",
"fi" : "Viikki"
},
"address" : {
"countryUrn" : "urn:code:country:246",
"isUserEditable" : true,
"streetAddress" : "Viikinkari 9",
"postalCode" : "00790",
"city" : "Helsinki",
"type" : "FinnishAddress"
}
}
Import buildings
POST /api/buildings/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
Building required |
List (Building) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/buildings/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 1211
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Viikki",
"fi" : "Viikki"
},
"address" : {
"countryUrn" : "urn:code:country:246",
"isUserEditable" : true,
"streetAddress" : "Viikinkari 9",
"postalCode" : "00790",
"city" : "Helsinki",
"type" : "FinnishAddress"
}
}, {
"metadata" : null,
"id" : "otm-155b685f-2a5e-401a-90c5-167d35101764",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Porthania",
"fi" : "Porthania"
},
"address" : {
"countryUrn" : "urn:code:country:246",
"isUserEditable" : true,
"streetAddress" : "Yliopistonkatu 3",
"postalCode" : "00100",
"city" : "Helsinki",
"type" : "FinnishAddress"
}
}, {
"metadata" : null,
"id" : "otm-5029f514-b78c-4135-a354-9866fa472016",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Chemicum",
"fi" : "Chemicum"
},
"address" : {
"countryUrn" : "urn:code:country:246",
"isUserEditable" : true,
"streetAddress" : "Gustaf Hällströmin katu 2a",
"postalCode" : "00560",
"city" : "Helsinki",
"type" : "FinnishAddress"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export codebooks
GET /api/codebooks/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return codebooks modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return codebooks modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of codebooks to return. May return less, either because there are not enough change items, or because of internal limits. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCodeBook[ExportResultCodeBook] |
Samples
GET /api/codebooks/v1/export?sinceTime=2025-04-15T12%3A09%3A50.988599633&limit=5&universityFilter=ALL_UNIVERSITIES HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 610
{
"greatestOrdinal" : 34396,
"hasMore" : false,
"entities" : [ {
"urn" : "urn:code:test",
"codeBookType" : "COMMON",
"name" : {
"fi" : "Dummy name"
},
"classificationScopeUrns" : [ ],
"universityOrgIds" : [ "the-spectre" ],
"codeVisibility" : "ALWAYS_VISIBLE",
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:10:50.978476",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:10:50.978499",
"modificationOrdinal" : 34396
},
"documentState" : "ACTIVE",
"codes" : [ ]
} ]
}
Export university code usages
GET /api/codes/usage/v1/export
Export the information about which university has which code in use. The result includes all the usages for all the codebooks. Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return code university usages modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return code university usages modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of code university usages to return. May return less, either because there are not enough change items, or because of internal limits. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCodeUniversityUsage[ExportResultCodeUniversityUsage] |
Samples
GET /api/codes/usage/v1/export?since=0&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 593
{
"greatestOrdinal" : 34480,
"hasMore" : false,
"entities" : [ {
"codesInUse" : [ "urn:code:test:foo" ],
"documentState" : "ACTIVE",
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-course-unit-admin-user",
"createdOn" : "2025-04-15T12:10:51.200005",
"lastModifiedBy" : "spectre-course-unit-admin-user",
"lastModifiedOn" : "2025-04-15T12:10:51.200023",
"modificationOrdinal" : 34480
},
"universityOrgId" : "the-spectre",
"codeBookSettings" : {
"codeBookSpecificSettings" : [ ]
},
"id" : "the-spectre"
} ]
}
Import codebooks
POST /api/codebooks/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CodeBook required |
List (CodeBook) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/codebooks/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 896
Host: localhost:8080
[ {
"type" : "Code",
"name" : {
"fi" : "Nimi"
},
"shortName" : {
"fi" : "Nimi"
},
"urn" : "urn:code:test:c7438518:def6:4f11:9a65:548d2ed28546",
"parentUrn" : null,
"isLeafNode" : true,
"universitySpecifier" : null,
"deprecated" : null,
"exceptionalVirtaValue" : null
}, {
"type" : "Code",
"name" : {
"fi" : "Nimi"
},
"shortName" : {
"fi" : "Nimi"
},
"urn" : "urn:code:test:e7bf1641:ecc3:420d:b506:d65e898ca83b",
"parentUrn" : null,
"isLeafNode" : true,
"universitySpecifier" : null,
"deprecated" : null,
"exceptionalVirtaValue" : null
}, {
"type" : "Code",
"name" : {
"fi" : "Nimi"
},
"shortName" : {
"fi" : "Nimi"
},
"urn" : "urn:code:test:734c2276:6a2a:40c8:81d0:0e41ce33be75",
"parentUrn" : null,
"isLeafNode" : true,
"universitySpecifier" : null,
"deprecated" : null,
"exceptionalVirtaValue" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import code university usages
POST /api/codes/usage/v1/import
Import the codes used for university
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CodeUniversityUsage required |
List (CodeUniversityUsage) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/codes/usage/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 197
Host: localhost:8080
[ {
"codesInUse" : [ "urn:code:test:foo" ],
"metadata" : null,
"universityOrgId" : "the-spectre",
"codeBookSettings" : {
"codeBookSpecificSettings" : [ ]
},
"id" : "the-spectre"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export co-operation networks
GET /api/cooperation-networks/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return cooperation networks modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return cooperation networks modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of cooperation networks to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCooperationNetwork[ExportResultCooperationNetwork] |
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CooperationNetwork required |
List (CooperationNetwork) |
Export co-operation network settings
GET /api/cooperation-network-settings/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return cooperation network settings modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return cooperation network settings modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of cooperation network settings to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCooperationNetworkSettings[ExportResultCooperationNetworkSettings] |
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CooperationNetworkSettings required |
List (CooperationNetworkSettings) |
Delete course units
POST /api/course-units/v1/batch-delete
Delete a batch of course units by id or groupId
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
DeleteBatch required |
DeleteBatch (DeleteBatch) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/course-units/v1/batch-delete HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 81
Host: localhost:8080
{
"ids" : [ "otm-50410ef7-3803-4e84-82a7-eb4384ec8876" ],
"groupIds" : null
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export course units
GET /api/course-units/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return course units modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return course units modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of course units to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCourseUnit[ExportResultCourseUnit] |
Samples
GET /api/course-units/v1/export?since=42157&limit=5&universityFilter=ALL_UNIVERSITIES HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 5383
{
"greatestOrdinal" : 42203,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.e",
"createdOn" : "2025-04-15T12:11:06.334562",
"lastModifiedBy" : "spectre.e",
"lastModifiedOn" : "2025-04-15T12:11:06.334578",
"modificationOrdinal" : 42202
},
"documentState" : "ACTIVE",
"id" : "otm-5c343b8b-09fe-4e8a-932c-571fb2fc56ef",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-5c343b8b-09fe-4e8a-932c-571fb2fc56ef",
"approvalState" : "urn:code:approval-state-type:not-ready",
"credits" : {
"min" : 0,
"max" : 100
},
"completionMethods" : [ ],
"assessmentItemOrder" : null,
"substitutions" : [ ],
"name" : {
"fi" : "Opintojakso, jonka koodi on Koodi-xyzzynen-otm-5c343b8b-09fe-4e8a-932c-571fb2fc56ef"
},
"code" : "Koodi-xyzzynen-otm-5c343b8b-09fe-4e8a-932c-571fb2fc56ef",
"abbreviation" : null,
"validityPeriod" : {
"startDate" : "1970-01-04"
},
"gradeScaleId" : "hy-0-5",
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"content" : null,
"additional" : null,
"learningMaterial" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Raamattu",
"localId" : "ad7adbe4-f144-4b43-bb95-b8178822c458"
}, {
"type" : "LiteratureReference",
"url" : "http://www.example.com",
"localId" : "ed94f275-2447-4b08-a3d2-7398f08ccaac"
} ],
"searchTags" : [ "kala", "meemi" ],
"categoryTags" : [ ],
"recommendedFormalPrerequisites" : [ ],
"compulsoryFormalPrerequisites" : [ ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"studyLevel" : "urn:code:study-level:basic-studies",
"courseUnitType" : "urn:code:course-unit-type:regular",
"subject" : null,
"cefrLevel" : null,
"responsibilityInfos" : [ {
"text" : {
"fi" : "Jaska"
},
"personId" : null,
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"possibleAttainmentLanguages" : [ "urn:code:language:fi" ],
"equivalentCoursesInfo" : {
"fi" : "*Ruhahaa*"
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"customCodeUrns" : null,
"inclusionApplicationInstruction" : null,
"cooperationNetworkDetails" : null,
"s2r2Classification" : null,
"rdiCreditsEnabled" : "DISABLED"
}, {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.e",
"createdOn" : "2025-04-15T12:11:06.334643",
"lastModifiedBy" : "spectre.e",
"lastModifiedOn" : "2025-04-15T12:11:06.334656",
"modificationOrdinal" : 42203
},
"documentState" : "ACTIVE",
"id" : "otm-fa26d21d-ce8f-4798-bdec-bb706c1b751c",
"universityOrgIds" : [ "the-quantum" ],
"groupId" : "otm-fa26d21d-ce8f-4798-bdec-bb706c1b751c",
"approvalState" : "urn:code:approval-state-type:not-ready",
"credits" : {
"min" : 0,
"max" : 100
},
"completionMethods" : [ ],
"assessmentItemOrder" : null,
"substitutions" : [ ],
"name" : {
"fi" : "Opintojakso, jonka koodi on Koodi-xyzzynen-otm-fa26d21d-ce8f-4798-bdec-bb706c1b751c"
},
"code" : "Koodi-xyzzynen-otm-fa26d21d-ce8f-4798-bdec-bb706c1b751c",
"abbreviation" : null,
"validityPeriod" : {
"startDate" : "1970-01-04"
},
"gradeScaleId" : "hy-0-5",
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"content" : null,
"additional" : null,
"learningMaterial" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Raamattu",
"localId" : "97cf2008-7ff2-4aa4-9e92-5e35082fbaea"
}, {
"type" : "LiteratureReference",
"url" : "http://www.example.com",
"localId" : "ae4a7085-8381-4a89-b1be-5affd0cbe19e"
} ],
"searchTags" : [ "kala", "meemi" ],
"categoryTags" : [ ],
"recommendedFormalPrerequisites" : [ ],
"compulsoryFormalPrerequisites" : [ ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"studyLevel" : "urn:code:study-level:basic-studies",
"courseUnitType" : "urn:code:course-unit-type:regular",
"subject" : null,
"cefrLevel" : null,
"responsibilityInfos" : [ {
"text" : {
"fi" : "Jaska"
},
"personId" : null,
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"possibleAttainmentLanguages" : [ "urn:code:language:fi" ],
"equivalentCoursesInfo" : {
"fi" : "*Ruhahaa*"
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"customCodeUrns" : null,
"inclusionApplicationInstruction" : null,
"cooperationNetworkDetails" : null,
"s2r2Classification" : null,
"rdiCreditsEnabled" : "DISABLED"
} ]
}
Find course unit versions by group id and curriculum period id
GET /api/course-units/v1/by-group-id
NOTE! This is not an exact and deterministic search. It returns a single version representing each group id. By default ACTIVE course units are preferred over DRAFT course units and DELETED versions are the last resort, unless document states are limited using the documentStates parameter or preferByState parameter. Order of the course units is not guaranteed. Curriculum period id is not mandatory. When curriculum id is not given or the given curriculum does not contain all versions, search will use active and valid curricula starting from current proceeding to the future and then into the past in order to find versions.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
groupId required |
List of group ids whose course unit versions we are interested in. |
List ([String]) |
|
universityId required |
University whose course units are preferred. |
String |
otm-123456 |
curriculumPeriodId optional |
Curriculum period id. Return versions which belong to this curriculum period. |
String |
otm-123456 |
documentStates optional |
Return Course units only in given Document states. |
List ([String]) |
|
preferByState optional |
Prefer course units by state in the order ACTIVE, DRAFT, DELETED. |
Boolean |
true |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[CourseUnit] |
Get course units
GET /api/course-units/v1
They are fetched by their groupId. Documents in DRAFT and ACTIVE states are fetched.
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[CourseUnit] |
Get course unit
GET /api/course-units/v1/{courseUnitId}
Course unit is fetched by its id. The document state of the course unit does not affect the operation, i.e. even DELETED course units can be exported, they just have \"documentState\": \"DELETED\".
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
CourseUnit[CourseUnit] |
Import course units
POST /api/course-units/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CourseUnit required |
List (CourseUnit) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/course-units/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 2247
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-7f2a0a44-505d-4c49-906d-4b15d0200173",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-7f2a0a44-505d-4c49-906d-4b15d0200173",
"approvalState" : "urn:code:approval-state-type:not-ready",
"credits" : {
"min" : 0,
"max" : 100
},
"completionMethods" : [ ],
"assessmentItemOrder" : null,
"substitutions" : [ ],
"name" : {
"fi" : "Opintojakso, jonka koodi on Koodi-xyzzynen-otm-7f2a0a44-505d-4c49-906d-4b15d0200173"
},
"code" : "Koodi-xyzzynen-otm-7f2a0a44-505d-4c49-906d-4b15d0200173",
"abbreviation" : null,
"validityPeriod" : {
"startDate" : "1970-01-04"
},
"gradeScaleId" : "hy-0-5",
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"content" : null,
"additional" : null,
"learningMaterial" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Raamattu",
"localId" : "e04c18db-239e-4e24-bfb4-787cc460d423"
}, {
"type" : "LiteratureReference",
"url" : "http://www.example.com",
"localId" : "a9185c47-ac1a-47ed-b68a-9cdb49f0c81c"
} ],
"searchTags" : [ "kala", "meemi" ],
"categoryTags" : [ ],
"recommendedFormalPrerequisites" : [ ],
"compulsoryFormalPrerequisites" : [ ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"studyLevel" : "urn:code:study-level:basic-studies",
"courseUnitType" : "urn:code:course-unit-type:regular",
"subject" : null,
"cefrLevel" : null,
"responsibilityInfos" : [ {
"text" : {
"fi" : "Jaska"
},
"personId" : null,
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"possibleAttainmentLanguages" : [ "urn:code:language:fi" ],
"equivalentCoursesInfo" : {
"fi" : "*Ruhahaa*"
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"customCodeUrns" : null,
"inclusionApplicationInstruction" : null,
"cooperationNetworkDetails" : null,
"s2r2Classification" : null,
"rdiCreditsEnabled" : "DISABLED"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import legacy course units
POST /api/course-units/v1/import/legacy
Import with a lenient legacy validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CourseUnit required |
List (CourseUnit) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/course-units/v1/import/legacy HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 2211
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-99a682ba-d700-43cd-88b3-ae868d59d9ac",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-99a682ba-d700-43cd-88b3-ae868d59d9ac",
"approvalState" : "urn:code:approval-state-type:not-ready",
"credits" : null,
"completionMethods" : [ ],
"assessmentItemOrder" : null,
"substitutions" : [ ],
"name" : {
"fi" : "Opintojakso, jonka koodi on Koodi-xyzzynen-otm-99a682ba-d700-43cd-88b3-ae868d59d9ac"
},
"code" : "Koodi-xyzzynen-otm-99a682ba-d700-43cd-88b3-ae868d59d9ac",
"abbreviation" : null,
"validityPeriod" : {
"startDate" : "1970-01-04"
},
"gradeScaleId" : null,
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"content" : null,
"additional" : null,
"learningMaterial" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Raamattu",
"localId" : "dee280e5-5757-4339-940f-50959a5d7d77"
}, {
"type" : "LiteratureReference",
"url" : "http://www.example.com",
"localId" : "bc333533-26e7-4288-9adb-47acc3acb75f"
} ],
"searchTags" : [ "kala", "meemi" ],
"categoryTags" : [ ],
"recommendedFormalPrerequisites" : [ ],
"compulsoryFormalPrerequisites" : [ ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"studyLevel" : "urn:code:study-level:basic-studies",
"courseUnitType" : "urn:code:course-unit-type:regular",
"subject" : null,
"cefrLevel" : null,
"responsibilityInfos" : [ {
"text" : {
"fi" : "Jaska"
},
"personId" : null,
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"possibleAttainmentLanguages" : [ "urn:code:language:fi" ],
"equivalentCoursesInfo" : {
"fi" : "*Ruhahaa*"
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"customCodeUrns" : null,
"inclusionApplicationInstruction" : null,
"cooperationNetworkDetails" : null,
"s2r2Classification" : null,
"rdiCreditsEnabled" : "DISABLED"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import course unit prerequisites
POST /api/prerequisites/v1/import
Only updates existing course units recommendedFormalPrerequisites and compulsoryFormalPrerequisites.
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CourseUnit required |
List (CourseUnit) |
Patch course units
PATCH /api/course-units/v1/import
Patch imports with strict validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
PATCH /api/course-units/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 100
Host: localhost:8080
[ {
"id" : "otm-a80d8a6f-8bf0-4e44-81ab-cd9b9aa8446a",
"name" : {
"fi" : "Uusi nimi"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Patch legacy course units
PATCH /api/course-units/v1/import/legacy
Patch imports with lenient legacy validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Stream course units
GET /api/course-units/v1/stream
Entities can be exported as a stream in modification order, and the stream can be left open to listen for changes. Duplicates are possible if entities are modified several times.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return messages modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return messages modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
follow optional |
If true, keeps the connection open and streams updates as they occur. |
Boolean |
true |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[[object]] |
Export course unit realisations
GET /api/course-unit-realisations/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point. With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive. With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return course unit realisations modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return course unit realisations modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of course unit realisations to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCourseUnitRealisation[ExportResultCourseUnitRealisation] |
Samples
GET /api/course-unit-realisations/v1/export?since=52724&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 3658
{
"greatestOrdinal" : 52725,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-course-unit-admin-user",
"createdOn" : "2025-04-15T12:11:30.621705",
"lastModifiedBy" : "spectre-course-unit-admin-user",
"lastModifiedOn" : "2025-04-15T12:11:30.621705",
"modificationOrdinal" : 52725
},
"documentState" : "DRAFT",
"id" : "otm-a3176dc8-762f-4fd2-b2f7-d15da5e561ad",
"universityOrgIds" : [ "the-spectre" ],
"flowState" : "PUBLISHED",
"massExamSessionId" : null,
"massExamSessionName" : null,
"name" : {
"fi" : "Tentti"
},
"nameSpecifier" : {
"fi" : "Biologian perusteiden tentti"
},
"assessmentItemIds" : [ "otm-ai-1", "otm-ai-2" ],
"tweetText" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Romantic life of African Elephants",
"localId" : "8b14eda2-7d9d-4075-acda-1d1e5a2ed2a0"
} ],
"learningMaterial" : null,
"learningEnvironmentDescription" : null,
"learningEnvironments" : [ ],
"studyFormat" : null,
"additionalInfo" : null,
"publishDate" : "2025-02-15",
"activityPeriod" : {
"startDate" : "2025-02-15",
"endDate" : "2025-12-15"
},
"teachingLanguageUrn" : "urn:code:language:fi",
"courseUnitRealisationTypeUrn" : "urn:code:course-unit-realisation-type:independent-work-essay",
"studyGroupSets" : [ {
"localId" : "sgs-Virkkaus",
"name" : {
"en" : "Virkkaus",
"fi" : "Virkkaus"
},
"studySubGroups" : [ {
"metadata" : null,
"id" : "otm-44aee8b5-ba1d-4503-bfec-1e384c304cab",
"name" : {
"fi" : "Group_1_AVirkkaus"
},
"studyEventIds" : [ "study-event-1" ],
"teacherIds" : [ "otm-teacher-id-3" ],
"cancelled" : false,
"size" : null,
"externalId" : null
}, {
"metadata" : null,
"id" : "otm-0ed175ff-8862-4c43-aed4-41e3b426ecdc",
"name" : {
"fi" : "Group_1_BVirkkaus"
},
"studyEventIds" : [ "study-event-1" ],
"teacherIds" : [ "otm-teacher-id-3" ],
"cancelled" : false,
"size" : null,
"externalId" : null
} ],
"subGroupRange" : {
"min" : 0,
"max" : 1
}
} ],
"responsibilityInfos" : [ {
"text" : {
"fi" : "text"
},
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:course-unit-realisation-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "otm-org-5",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"enrolmentPeriod" : {
"startDateTime" : "2025-02-08T00:00:00",
"endDateTime" : "2025-02-14T00:00:00"
},
"lateEnrolmentEnd" : "2025-05-15T00:00:00",
"enrolmentAdditionalCancellationEnd" : "2025-03-15T00:00:00",
"externalEnrolmentLink" : {
"url" : {
"en" : "http://www.english-example.com",
"fi" : "http://www.example.com/fi/"
},
"label" : {
"en" : "Display in English",
"fi" : "Display suomeksi"
}
},
"usesExternalEnrolment" : true,
"customCodeUrns" : null,
"continuousEnrolment" : false,
"externalStructureLink" : null,
"usesExternalStructure" : false,
"confirmedStudySubGroupModificationAllowed" : false,
"confirmedStudySubGroupModificationEnd" : null,
"cooperationNetworkDetails" : null
} ]
}
Get course unit realisation
GET /api/course-unit-realisations/v1/{courseUnitRealisationId}
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
CourseUnitRealisation[CourseUnitRealisation] |
Samples
GET /api/course-unit-realisations/v1/otm-afebca8b-7619-4aa3-87dd-230346f77b41 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 3383
{
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-course-unit-realisation-admin-user",
"createdOn" : "2025-04-15T12:11:31.087264",
"lastModifiedBy" : "spectre-course-unit-realisation-admin-user",
"lastModifiedOn" : "2025-04-15T12:11:31.087264",
"modificationOrdinal" : 52961
},
"documentState" : "DRAFT",
"id" : "otm-afebca8b-7619-4aa3-87dd-230346f77b41",
"universityOrgIds" : [ "the-spectre" ],
"flowState" : "PUBLISHED",
"massExamSessionId" : null,
"massExamSessionName" : null,
"name" : {
"fi" : "Tentti"
},
"nameSpecifier" : {
"fi" : "Biologian perusteiden tentti"
},
"assessmentItemIds" : [ "otm-ai-1", "otm-ai-2" ],
"tweetText" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Romantic life of African Elephants",
"localId" : "df676508-6fe7-4297-a38e-ffa88533627e"
} ],
"learningMaterial" : null,
"learningEnvironmentDescription" : null,
"learningEnvironments" : [ ],
"studyFormat" : null,
"additionalInfo" : null,
"publishDate" : "2025-02-15",
"activityPeriod" : {
"startDate" : "2025-02-15",
"endDate" : "2025-12-15"
},
"teachingLanguageUrn" : "urn:code:language:fi",
"courseUnitRealisationTypeUrn" : "urn:code:course-unit-realisation-type:independent-work-essay",
"studyGroupSets" : [ {
"localId" : "sgs-Virkkaus",
"name" : {
"en" : "Virkkaus",
"fi" : "Virkkaus"
},
"studySubGroups" : [ {
"metadata" : null,
"id" : "otm-88112817-3e9c-430e-8293-1f36b0efaa08",
"name" : {
"fi" : "Group_1_AVirkkaus"
},
"studyEventIds" : [ "study-event-1" ],
"teacherIds" : [ "otm-teacher-id-3" ],
"cancelled" : false,
"size" : null,
"externalId" : null
}, {
"metadata" : null,
"id" : "otm-190b2feb-ab63-44d4-a40c-5cfe451cddcc",
"name" : {
"fi" : "Group_1_BVirkkaus"
},
"studyEventIds" : [ "study-event-1" ],
"teacherIds" : [ "otm-teacher-id-3" ],
"cancelled" : false,
"size" : null,
"externalId" : null
} ],
"subGroupRange" : {
"min" : 0,
"max" : 1
}
} ],
"responsibilityInfos" : [ {
"text" : {
"fi" : "text"
},
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:course-unit-realisation-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "otm-org-5",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"enrolmentPeriod" : {
"startDateTime" : "2025-02-08T00:00:00",
"endDateTime" : "2025-02-14T00:00:00"
},
"lateEnrolmentEnd" : "2025-05-15T00:00:00",
"enrolmentAdditionalCancellationEnd" : "2025-03-15T00:00:00",
"externalEnrolmentLink" : {
"url" : {
"en" : "http://www.english-example.com",
"fi" : "http://www.example.com/fi/"
},
"label" : {
"en" : "Display in English",
"fi" : "Display suomeksi"
}
},
"usesExternalEnrolment" : true,
"customCodeUrns" : null,
"continuousEnrolment" : false,
"externalStructureLink" : null,
"usesExternalStructure" : false,
"confirmedStudySubGroupModificationAllowed" : false,
"confirmedStudySubGroupModificationEnd" : null,
"cooperationNetworkDetails" : null
}
Import course unit realisations
POST /api/course-unit-realisations/v1/import
Imports with strict validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CourseUnitRealisation required |
List (CourseUnitRealisation) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/course-unit-realisations/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 1468
Host: localhost:8080
[ {
"metadata" : {
"revision" : null,
"createdBy" : null,
"createdOn" : null,
"lastModifiedBy" : null,
"lastModifiedOn" : null,
"modificationOrdinal" : null
},
"documentState" : "DRAFT",
"id" : "otm-7b215364-394a-490c-9a1a-d67e476b8ee2",
"universityOrgIds" : [ "the-spectre" ],
"flowState" : "NOT_READY",
"massExamSessionId" : null,
"massExamSessionName" : null,
"name" : {
"fi" : "Tentti"
},
"nameSpecifier" : null,
"assessmentItemIds" : [ ],
"tweetText" : null,
"literature" : [ ],
"learningMaterial" : null,
"learningEnvironmentDescription" : null,
"learningEnvironments" : [ ],
"studyFormat" : null,
"additionalInfo" : null,
"publishDate" : null,
"activityPeriod" : {
"startDate" : "2025-02-15",
"endDate" : "2025-12-15"
},
"teachingLanguageUrn" : null,
"courseUnitRealisationTypeUrn" : "urn:code:course-unit-realisation-type:independent-work-essay",
"studyGroupSets" : [ ],
"responsibilityInfos" : [ ],
"organisations" : [ ],
"enrolmentPeriod" : null,
"lateEnrolmentEnd" : null,
"enrolmentAdditionalCancellationEnd" : null,
"externalEnrolmentLink" : null,
"usesExternalEnrolment" : false,
"customCodeUrns" : null,
"continuousEnrolment" : false,
"externalStructureLink" : null,
"usesExternalStructure" : false,
"confirmedStudySubGroupModificationAllowed" : false,
"confirmedStudySubGroupModificationEnd" : null,
"cooperationNetworkDetails" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import legacy course unit realisations
POST /api/course-unit-realisations/v1/import/legacy
Import with a lenient legacy validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CourseUnitRealisation required |
List (CourseUnitRealisation) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/course-unit-realisations/v1/import/legacy HTTP/1.1
Content-Type: application/json
Content-Length: 3195
Host: localhost:8080
[ {
"metadata" : {
"revision" : null,
"createdBy" : null,
"createdOn" : null,
"lastModifiedBy" : null,
"lastModifiedOn" : null,
"modificationOrdinal" : null
},
"id" : "lega-cy-cur",
"universityOrgIds" : [ "the-spectre" ],
"flowState" : "PUBLISHED",
"massExamSessionId" : null,
"massExamSessionName" : null,
"name" : {
"fi" : "Tentti"
},
"nameSpecifier" : {
"fi" : "Biologian perusteiden tentti"
},
"assessmentItemIds" : [ "otm-ai-1", "otm-ai-2" ],
"tweetText" : null,
"literature" : [ {
"type" : "LiteratureName",
"name" : "Romantic life of African Elephants",
"localId" : "87af1075-d0e3-4fc7-8577-e2f0a717a80c"
} ],
"learningMaterial" : null,
"learningEnvironmentDescription" : null,
"learningEnvironments" : [ ],
"studyFormat" : null,
"additionalInfo" : null,
"publishDate" : null,
"activityPeriod" : {
"startDate" : "2025-02-15",
"endDate" : "2025-12-15"
},
"teachingLanguageUrn" : "urn:code:language:fi",
"courseUnitRealisationTypeUrn" : "urn:code:course-unit-realisation-type:independent-work-essay",
"studyGroupSets" : [ {
"localId" : "sgs-Virkkaus",
"name" : {
"en" : "Virkkaus",
"fi" : "Virkkaus"
},
"studySubGroups" : [ {
"metadata" : null,
"id" : "otm-2cc41d31-2cd3-4fd0-82ab-b774d3867994",
"name" : {
"fi" : "Group_1_AVirkkaus"
},
"studyEventIds" : [ "study-event-1" ],
"teacherIds" : [ "otm-teacher-id-3" ],
"cancelled" : false,
"size" : null,
"externalId" : null
}, {
"metadata" : null,
"id" : "otm-ad75eabf-e002-4c3d-b6aa-7e79556039c3",
"name" : {
"fi" : "Group_1_BVirkkaus"
},
"studyEventIds" : [ "study-event-1" ],
"teacherIds" : [ "otm-teacher-id-3" ],
"cancelled" : false,
"size" : null,
"externalId" : null
} ],
"subGroupRange" : {
"min" : 0,
"max" : 1
}
} ],
"responsibilityInfos" : [ {
"text" : {
"fi" : "text"
},
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:course-unit-realisation-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "otm-org-5",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"enrolmentPeriod" : {
"startDateTime" : "2025-02-08T00:00:00",
"endDateTime" : "2025-02-14T00:00:00"
},
"lateEnrolmentEnd" : "2025-05-15T00:00:00",
"enrolmentAdditionalCancellationEnd" : "2025-03-15T00:00:00",
"externalEnrolmentLink" : {
"url" : {
"en" : "http://www.english-example.com",
"fi" : "http://www.example.com/fi/"
},
"label" : {
"en" : "Display in English",
"fi" : "Display suomeksi"
}
},
"usesExternalEnrolment" : true,
"customCodeUrns" : null,
"continuousEnrolment" : false,
"externalStructureLink" : null,
"usesExternalStructure" : false,
"confirmedStudySubGroupModificationAllowed" : false,
"confirmedStudySubGroupModificationEnd" : null,
"cooperationNetworkDetails" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Patch course unit realisations
PATCH /api/course-unit-realisations/v1/import
Patch imports with strict validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
PATCH /api/course-unit-realisations/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 66
Host: localhost:8080
[ {
"id" : "ok-cur",
"name" : {
"fi" : "Uusi nimi"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Patch legacy course unit realisations
PATCH /api/course-unit-realisations/v1/import/legacy
Patch imports with lenient legacy validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Stream course unit realisations
GET /api/course-unit-realisations/v1/stream
Entities can be exported as a stream in modification order, and the stream can be left open to listen for changes. Duplicates are possible if entities are modified several times.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return entities modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return entities modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
follow optional |
If true, keeps the connection open and streams updates as they occur. |
Boolean |
true |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[[object]] |
Export curriculum periods
GET /api/curriculum-periods/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return curriculum periods modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return curriculum periods modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of curriculum periods to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultCurriculumPeriod[ExportResultCurriculumPeriod] |
Samples
GET /api/curriculum-periods/v1/export?since=54263&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 674
{
"greatestOrdinal" : 54265,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:11:34.13851",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:11:34.138536",
"modificationOrdinal" : 54265
},
"documentState" : "ACTIVE",
"id" : "otm-007d3e9a-0d79-4f60-a270-a62d4e221bc2",
"universityOrgId" : "the-spectre",
"name" : {
"fi" : "Opetussuunnitelmakausi 2015-2016"
},
"abbreviation" : {
"fi" : "2015-2016"
},
"activePeriod" : {
"startDate" : "2015-08-01",
"endDate" : "2016-08-01"
}
} ]
}
Import curriculum periods
POST /api/curriculum-periods/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
CurriculumPeriod required |
List (CurriculumPeriod) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/curriculum-periods/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 6892
Authorization: Basic aHkuaTp0ZXN0MTIz
Host: localhost:8080
[ {
"metadata" : null,
"id" : "hy-test-curriculum-period-1900-2008",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 1900-2008 (108v)"
},
"abbreviation" : {
"fi" : "1900-2008"
},
"activePeriod" : {
"startDate" : "1900-08-01",
"endDate" : "2008-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2008-2009",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2008-2009 (1v)"
},
"abbreviation" : {
"fi" : "2008-2009"
},
"activePeriod" : {
"startDate" : "2008-08-01",
"endDate" : "2009-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2009-2010",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2009-2010 (1v)"
},
"abbreviation" : {
"fi" : "2009-2010"
},
"activePeriod" : {
"startDate" : "2009-08-01",
"endDate" : "2010-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2010-2011",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2010-2011 (1v)"
},
"abbreviation" : {
"fi" : "2010-2011"
},
"activePeriod" : {
"startDate" : "2010-08-01",
"endDate" : "2011-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2011-2012",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2011-2012 (1v)"
},
"abbreviation" : {
"fi" : "2011-2012"
},
"activePeriod" : {
"startDate" : "2011-08-01",
"endDate" : "2012-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2012-2015",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2012-2015 (3v)"
},
"abbreviation" : {
"fi" : "2012-2015"
},
"activePeriod" : {
"startDate" : "2012-08-01",
"endDate" : "2015-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2015-2016",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2015-2016 (1v)"
},
"abbreviation" : {
"fi" : "2015-2016"
},
"activePeriod" : {
"startDate" : "2015-08-01",
"endDate" : "2016-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2016-2017",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2016-2017 (1v)"
},
"abbreviation" : {
"fi" : "2016-2017"
},
"activePeriod" : {
"startDate" : "2016-08-01",
"endDate" : "2017-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2017-2018",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2017-2018 (1v)"
},
"abbreviation" : {
"fi" : "2017-2018"
},
"activePeriod" : {
"startDate" : "2017-08-01",
"endDate" : "2018-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2018-2019",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2018-2019 (1v)"
},
"abbreviation" : {
"fi" : "2018-2019"
},
"activePeriod" : {
"startDate" : "2018-08-01",
"endDate" : "2019-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2019-2020",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2019-2020 (1v)"
},
"abbreviation" : {
"fi" : "2019-2020"
},
"activePeriod" : {
"startDate" : "2019-08-01",
"endDate" : "2020-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2020-2021",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2020-2021 (1v)"
},
"abbreviation" : {
"fi" : "2020-2021"
},
"activePeriod" : {
"startDate" : "2020-08-01",
"endDate" : "2021-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2021-2022",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2021-2022 (1v)"
},
"abbreviation" : {
"fi" : "2021-2022"
},
"activePeriod" : {
"startDate" : "2021-08-01",
"endDate" : "2022-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2022-2023",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2022-2023 (1v)"
},
"abbreviation" : {
"fi" : "2022-2023"
},
"activePeriod" : {
"startDate" : "2022-08-01",
"endDate" : "2023-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2023-2024",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2023-2024 (1v)"
},
"abbreviation" : {
"fi" : "2023-2024"
},
"activePeriod" : {
"startDate" : "2023-08-01",
"endDate" : "2024-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2024-2025",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2024-2025 (1v)"
},
"abbreviation" : {
"fi" : "2024-2025"
},
"activePeriod" : {
"startDate" : "2024-08-01",
"endDate" : "2025-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2025-2026",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2025-2026 (1v)"
},
"abbreviation" : {
"fi" : "2025-2026"
},
"activePeriod" : {
"startDate" : "2025-08-01",
"endDate" : "2026-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2026-2027",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2026-2027 (1v)"
},
"abbreviation" : {
"fi" : "2026-2027"
},
"activePeriod" : {
"startDate" : "2026-08-01",
"endDate" : "2027-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2027-2028",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2027-2028 (1v)"
},
"abbreviation" : {
"fi" : "2027-2028"
},
"activePeriod" : {
"startDate" : "2027-08-01",
"endDate" : "2028-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2028-2029",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2028-2029 (1v)"
},
"abbreviation" : {
"fi" : "2028-2029"
},
"activePeriod" : {
"startDate" : "2028-08-01",
"endDate" : "2029-08-01"
}
}, {
"metadata" : null,
"id" : "hy-test-curriculum-period-2029-2030",
"universityOrgId" : "hy-university-root-id",
"name" : {
"fi" : "HY opetussuunnitelmakausi 2029-2030 (1v)"
},
"abbreviation" : {
"fi" : "2029-2030"
},
"activePeriod" : {
"startDate" : "2029-08-01",
"endDate" : "2030-08-01"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export questionnaires
GET /api/degree-programme-attainment-application-questionnaires/v1/export
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return questionnaires modified after (exclusive comparison) this modification ordinal (increasing value within KORI). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return questionnaires modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of questionnaires to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultDegreeProgrammeAttainmentApplicationQuestionnaire[ExportResultDegreeProgrammeAttainmentApplicationQuestionnaire] |
Import questionnaires
POST /api/degree-programme-attainment-application-questionnaires/v1/import
Parameters
Export disclosure authorization categories
GET /api/disclosure-categories/v1/export
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return disclosure authorization categories modified after (exclusive comparison) this modification ordinal (increasing value within Ori). Alternate parameter with sinceTime. |
Long (int64) |
789 |
sinceTime optional |
Return disclosure authorization categories modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of disclosure authorization categories to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultDisclosureAuthorizationCategory[ExportResultDisclosureAuthorizationCategory] |
Import disclosure authorization categories
POST /api/disclosure-categories/v1/import
Export educations
GET /api/educations/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return study educations modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return study educations modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of study educations to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultEducation[ExportResultEducation] |
Samples
GET /api/educations/v1/export?since=60108&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 3044
{
"greatestOrdinal" : 60109,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-edu-admin-user",
"createdOn" : "2025-04-15T12:11:49.543468",
"lastModifiedBy" : "spectre-edu-admin-user",
"lastModifiedOn" : "2025-04-15T12:11:49.543484",
"modificationOrdinal" : 60109
},
"documentState" : "DRAFT",
"id" : "otm-d5afefb9-2f6a-4858-8037-33fb457f7036",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-d5afefb9-2f6a-4858-8037-33fb457f7036",
"name" : {
"fi" : "Nimi educationille xyzzy"
},
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-04"
},
"code" : "Lyhenne educationille plaa",
"educationType" : "urn:code:education-type:degree-education:masters-degree",
"specialisationStudiesClassificationUrn" : null,
"studyFields" : [ "urn:code:study-field:2002-2" ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"attainmentLanguages" : [ "urn:code:language:fi" ],
"educationLocationUrn" : "urn:code:municipality:491",
"outcomes" : null,
"responsibilityInfos" : [ {
"text" : null,
"personId" : "test-person",
"roleUrn" : "urn:code:education-responsibility-info-type:academic-responsibility",
"validityPeriod" : { }
} ],
"structure" : {
"phase1" : {
"name" : {
"fi" : "Alempi tutkinto"
},
"options" : [ {
"localId" : "53714e51-aec8-41d4-8f3e-5c0f9f22193b",
"moduleGroupId" : "test-dp-1",
"childOptions" : [ ],
"acceptanceType" : "AUTOMATIC",
"childNaming" : "urn:code:education-option-naming-type:specialisation",
"degreeTitleUrn" : null,
"educationClassificationUrn" : null
} ]
},
"phase2" : null,
"learningOpportunities" : [ {
"localId" : "6fe84256-450e-431e-922b-6aed7704d2b7",
"name" : {
"fi" : "Kouluttautumismahdollisuus 1"
},
"allowedPaths" : [ {
"educationPhase1GroupId" : "test-dp-1"
} ],
"admissionTargetIds" : [ ],
"phase1EducationClassificationUrn" : "urn:code:education-classification:koulutus_655404",
"phase2EducationClassificationUrn" : null
} ]
},
"defaultStudyRightExpirationRulesUrn" : "urn:code:study-right-expiration-rules:eternal",
"defaultDecreeOnUniversityDegreesUrn" : "urn:code:decree-on-university-degrees:decree-2005",
"studyRightExtensionInstructions" : null,
"studySelectionRequirement" : "UNRESTRICTED",
"fundingSourceEducationUrn" : null,
"isMultiformEducation" : false,
"type" : "Education",
"rule" : {
"type" : "ModuleRule",
"localId" : "6f3360f6-c704-4124-9580-0461a5b5b5f6",
"moduleGroupId" : "test-dp-1"
}
} ]
}
Get educations
GET /api/educations/v1
Educations are fetched by their groupId. Documents in DRAFT and ACTIVE states are fetched.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
groupId required |
Set ([String]) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[Education] |
Get education
GET /api/educations/v1/{educationId}
Education is fetched by its id. The document state of the education does not affect the operation, i.e. even DELETED educations can be exported, they just have \"documentState\": \"DELETED\".
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Education[Education] |
Samples
GET /api/educations/v1/otm-teol-maisteri HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: public,max-age=0,s-maxage=25200
xkey: otm-teol-maisteri
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: DENY
Content-Length: 2738
{
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-edu-admin-user",
"createdOn" : "2025-04-15T12:11:48.562494",
"lastModifiedBy" : "spectre-edu-admin-user",
"lastModifiedOn" : "2025-04-15T12:11:48.562506",
"modificationOrdinal" : 59543
},
"documentState" : "DRAFT",
"id" : "otm-teol-maisteri",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-teol-maisteri",
"name" : {
"fi" : "Teologian Maisteri"
},
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-03"
},
"code" : "CODE--85966551",
"educationType" : "urn:code:education-type:degree-education:masters-degree",
"specialisationStudiesClassificationUrn" : null,
"studyFields" : [ "urn:code:study-field:2002-0" ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1.0,
"validityPeriod" : { }
} ],
"attainmentLanguages" : [ "urn:code:language:fi" ],
"educationLocationUrn" : null,
"outcomes" : null,
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-harri",
"roleUrn" : "urn:code:education-responsibility-info-type:academic-responsibility",
"validityPeriod" : { }
} ],
"structure" : {
"phase1" : {
"name" : {
"fi" : "Dummy code"
},
"options" : [ {
"localId" : "edu-option-84",
"moduleGroupId" : "otm-testi-dp-TeM",
"childOptions" : [ ],
"acceptanceType" : "AUTOMATIC",
"childNaming" : "urn:code:education-option-naming-type:specialisation",
"degreeTitleUrn" : null,
"educationClassificationUrn" : null
} ]
},
"phase2" : null,
"learningOpportunities" : [ {
"localId" : "26da1d13-a195-4141-971c-3a4704b6daca",
"name" : {
"fi" : "Learning opportunity one two three"
},
"allowedPaths" : [ {
"educationPhase1GroupId" : "otm-testi-dp-TeM"
} ],
"admissionTargetIds" : [ ],
"phase1EducationClassificationUrn" : "urn:code:education-classification:koulutus_623112",
"phase2EducationClassificationUrn" : null
} ]
},
"defaultStudyRightExpirationRulesUrn" : "urn:code:study-right-expiration-rules:no-automatic-calculation",
"defaultDecreeOnUniversityDegreesUrn" : "urn:code:decree-on-university-degrees:decree-2005",
"studyRightExtensionInstructions" : null,
"studySelectionRequirement" : "UNRESTRICTED",
"fundingSourceEducationUrn" : null,
"isMultiformEducation" : false,
"type" : "Education",
"rule" : {
"type" : "ModuleRule",
"localId" : "683083b5-db8b-4a9d-93a4-9e508fbed9e3",
"moduleGroupId" : "otm-testi-dp-TeM"
}
}
Import educations
POST /api/educations/v1/import
Import with strict validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
Education required |
List (Education) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/educations/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 2489
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-be721a71-f3a8-4464-b93a-6e4d1604af2a",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-be721a71-f3a8-4464-b93a-6e4d1604af2a",
"name" : {
"fi" : "TEol FM"
},
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-03"
},
"code" : "CODE--268555236",
"educationType" : "urn:code:education-type:degree-education:masters-degree",
"specialisationStudiesClassificationUrn" : null,
"studyFields" : [ "urn:code:study-field:2002-0" ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1.0,
"validityPeriod" : { }
} ],
"attainmentLanguages" : [ "urn:code:language:fi" ],
"educationLocationUrn" : null,
"outcomes" : null,
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-harri",
"roleUrn" : "urn:code:education-responsibility-info-type:academic-responsibility",
"validityPeriod" : { }
} ],
"structure" : {
"phase1" : {
"name" : {
"fi" : "Alempi tutkinto"
},
"options" : [ {
"localId" : "edu-option-124",
"moduleGroupId" : "otm-testi-dp-TeM",
"childOptions" : [ ],
"acceptanceType" : "AUTOMATIC",
"childNaming" : "urn:code:education-option-naming-type:specialisation",
"degreeTitleUrn" : null,
"educationClassificationUrn" : null
} ]
},
"phase2" : null,
"learningOpportunities" : [ {
"localId" : "68441a9a-0faa-4fcb-b526-1366988affd2",
"name" : {
"fi" : "Learning opportunity one two three"
},
"allowedPaths" : [ {
"educationPhase1GroupId" : "otm-testi-dp-TeM"
} ],
"admissionTargetIds" : [ ],
"phase1EducationClassificationUrn" : "urn:code:education-classification:koulutus_623112",
"phase2EducationClassificationUrn" : null
} ]
},
"defaultStudyRightExpirationRulesUrn" : "urn:code:study-right-expiration-rules:no-automatic-calculation",
"defaultDecreeOnUniversityDegreesUrn" : "urn:code:decree-on-university-degrees:decree-2005",
"studyRightExtensionInstructions" : null,
"studySelectionRequirement" : "UNRESTRICTED",
"fundingSourceEducationUrn" : null,
"isMultiformEducation" : false,
"type" : "Education",
"rule" : {
"type" : "ModuleRule",
"localId" : "edu-rule--491753624",
"moduleGroupId" : "otm-testi-dp-TeM"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import legacy educations
POST /api/educations/v1/import/legacy
Imports with a lenient legacy validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
Education required |
List (Education) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/educations/v1/import/legacy HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 2089
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-65cdad7d-f842-4e1a-bd08-64105048ee98",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-65cdad7d-f842-4e1a-bd08-64105048ee98",
"name" : {
"fi" : "TEol FM"
},
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-03"
},
"code" : "CODE--61080030",
"educationType" : "urn:code:education-type:degree-education:masters-degree",
"specialisationStudiesClassificationUrn" : null,
"studyFields" : null,
"organisations" : null,
"attainmentLanguages" : [ "urn:code:language:fi" ],
"educationLocationUrn" : null,
"outcomes" : null,
"responsibilityInfos" : [ ],
"structure" : {
"phase1" : {
"name" : {
"fi" : "Alempi tutkinto"
},
"options" : [ {
"localId" : "edu-option-127",
"moduleGroupId" : "otm-testi-dp-TeM",
"childOptions" : [ ],
"acceptanceType" : "AUTOMATIC",
"childNaming" : "urn:code:education-option-naming-type:specialisation",
"degreeTitleUrn" : null,
"educationClassificationUrn" : null
} ]
},
"phase2" : null,
"learningOpportunities" : [ {
"localId" : "f3a6a521-abb7-4d9e-916f-b1f57deef8ed",
"name" : {
"fi" : "Learning opportunity one two three"
},
"allowedPaths" : [ {
"educationPhase1GroupId" : "otm-testi-dp-TeM"
} ],
"admissionTargetIds" : [ ],
"phase1EducationClassificationUrn" : "urn:code:education-classification:koulutus_623112",
"phase2EducationClassificationUrn" : null
} ]
},
"defaultStudyRightExpirationRulesUrn" : "urn:code:study-right-expiration-rules:no-automatic-calculation",
"defaultDecreeOnUniversityDegreesUrn" : "urn:code:decree-on-university-degrees:decree-2005",
"studyRightExtensionInstructions" : null,
"studySelectionRequirement" : "UNRESTRICTED",
"fundingSourceEducationUrn" : null,
"isMultiformEducation" : false,
"type" : "Education",
"rule" : {
"type" : "ModuleRule",
"localId" : "edu-rule-786198860",
"moduleGroupId" : "otm-testi-dp-TeM"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Patch learning opportunity of education
PATCH /api/educations/{educationId}/learning-opportunities/{localId}
Parameters
Path Parameters
Name |
Description |
Schema |
Example |
educationId required |
String |
otm-123456 |
|
localId required |
String |
otm-123456 |
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
body required |
Object ([object]) |
Object |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Education[Education] |
Samples
PATCH /api/educations/otm-9172333c-2600-47c6-a09c-0314d1e610e7/learning-opportunities/a3cb225f-a00a-45d4-ac9c-42c9953bba89 HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 259
Host: localhost:8080
{
"phase1EducationClassificationUrn" : "urn:code:education-classification:koulutus_823112",
"phase2EducationClassificationUrn" : "urn:code:education-classification:koulutus_823112",
"admissionTargetIds" : [ "otm-96264031-5626-4e1e-adca-a1882daab301" ]
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 2839
{
"metadata" : {
"revision" : 2,
"createdBy" : "spectre.i",
"createdOn" : "2025-04-15T12:11:48.020538",
"lastModifiedBy" : "spectre.i",
"lastModifiedOn" : "2025-04-15T12:11:48.033813",
"modificationOrdinal" : 59242
},
"documentState" : "ACTIVE",
"id" : "otm-9172333c-2600-47c6-a09c-0314d1e610e7",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-9172333c-2600-47c6-a09c-0314d1e610e7",
"name" : {
"fi" : "TEol FM"
},
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-03"
},
"code" : "CODE--517965328",
"educationType" : "urn:code:education-type:degree-education:masters-degree",
"specialisationStudiesClassificationUrn" : null,
"studyFields" : [ "urn:code:study-field:2002-0" ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1.0,
"validityPeriod" : { }
} ],
"attainmentLanguages" : [ "urn:code:language:fi" ],
"educationLocationUrn" : null,
"outcomes" : null,
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-harri",
"roleUrn" : "urn:code:education-responsibility-info-type:academic-responsibility",
"validityPeriod" : { }
} ],
"structure" : {
"phase1" : {
"name" : {
"fi" : "Dummy code"
},
"options" : [ {
"localId" : "edu-option-77",
"moduleGroupId" : "otm-testi-dp-TeM",
"childOptions" : [ ],
"acceptanceType" : "AUTOMATIC",
"childNaming" : "urn:code:education-option-naming-type:specialisation",
"degreeTitleUrn" : null,
"educationClassificationUrn" : null
} ]
},
"phase2" : null,
"learningOpportunities" : [ {
"localId" : "a3cb225f-a00a-45d4-ac9c-42c9953bba89",
"name" : {
"fi" : "Learning opportunity one two three"
},
"allowedPaths" : [ {
"educationPhase1GroupId" : "otm-testi-dp-TeM"
} ],
"admissionTargetIds" : [ "otm-96264031-5626-4e1e-adca-a1882daab301" ],
"phase1EducationClassificationUrn" : "urn:code:education-classification:koulutus_823112",
"phase2EducationClassificationUrn" : "urn:code:education-classification:koulutus_823112"
} ]
},
"defaultStudyRightExpirationRulesUrn" : "urn:code:study-right-expiration-rules:no-automatic-calculation",
"defaultDecreeOnUniversityDegreesUrn" : "urn:code:decree-on-university-degrees:decree-2005",
"studyRightExtensionInstructions" : null,
"studySelectionRequirement" : "UNRESTRICTED",
"fundingSourceEducationUrn" : null,
"isMultiformEducation" : false,
"type" : "Education",
"rule" : {
"type" : "ModuleRule",
"localId" : "8115abcf-1963-4fb8-947d-049caa0c1007",
"moduleGroupId" : "otm-testi-dp-TeM"
}
}
Export enrolment questionnaires
GET /api/enrolment-questionnaires/v1/export
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return enrolment questionnaires modified after (exclusive comparison) this modification ordinal (increasing value within KORI). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return enrolment questionnaires modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of enrolment questionnaires to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultEnrolmentQuestionnaire[ExportResultEnrolmentQuestionnaire] |
Import enrolment questionnaires
POST /api/enrolment-questionnaires/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
EnrolmentQuestionnaire required |
List (EnrolmentQuestionnaire) |
Import grade scales
POST /api/grade-scales/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
GradeScale required |
List (GradeScale) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/grade-scales/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 32849
Host: localhost:8080
[ {
"metadata" : null,
"id" : "hy-0-5",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "fail",
"fi" : "hylätty",
"sv" : "underkänd"
},
"abbreviation" : {
"en" : "0",
"fi" : "0",
"sv" : "0"
},
"numericCorrespondence" : 0.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "passable",
"fi" : "välttävä",
"sv" : "försvarlig"
},
"abbreviation" : {
"en" : "1",
"fi" : "1",
"sv" : "1"
},
"numericCorrespondence" : 1.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "satisfactory",
"fi" : "tyydyttävä",
"sv" : "nöjaktig"
},
"abbreviation" : {
"en" : "2",
"fi" : "2",
"sv" : "2"
},
"numericCorrespondence" : 2.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "good",
"fi" : "hyvä",
"sv" : "god"
},
"abbreviation" : {
"en" : "3",
"fi" : "3",
"sv" : "3"
},
"numericCorrespondence" : 3.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "very good",
"fi" : "kiitettävä",
"sv" : "berömlig"
},
"abbreviation" : {
"en" : "4",
"fi" : "4",
"sv" : "4"
},
"numericCorrespondence" : 4.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "utmärkt",
"fi" : "erinomainen",
"sv" : "excellent"
},
"abbreviation" : {
"en" : "5",
"fi" : "5",
"sv" : "5"
},
"numericCorrespondence" : 5.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Yleinen asteikko, 0-5"
},
"abbreviation" : {
"en" : "0-5",
"fi" : "0-5",
"sv" : "0-5"
}
}, {
"metadata" : null,
"id" : "jyu-0-5",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "fail",
"fi" : "hylätty",
"sv" : "underkänd"
},
"abbreviation" : {
"en" : "0",
"fi" : "0",
"sv" : "0"
},
"numericCorrespondence" : 0.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "passable",
"fi" : "välttävä",
"sv" : "försvarlig"
},
"abbreviation" : {
"en" : "1",
"fi" : "1",
"sv" : "1"
},
"numericCorrespondence" : 1.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "satisfactory",
"fi" : "tyydyttävä",
"sv" : "nöjaktig"
},
"abbreviation" : {
"en" : "2",
"fi" : "2",
"sv" : "2"
},
"numericCorrespondence" : 2.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "good",
"fi" : "hyvä",
"sv" : "god"
},
"abbreviation" : {
"en" : "3",
"fi" : "3",
"sv" : "3"
},
"numericCorrespondence" : 3.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "very good",
"fi" : "kiitettävä",
"sv" : "berömlig"
},
"abbreviation" : {
"en" : "4",
"fi" : "4",
"sv" : "4"
},
"numericCorrespondence" : 4.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "utmärkt",
"fi" : "erinomainen",
"sv" : "excellent"
},
"abbreviation" : {
"en" : "5",
"fi" : "5",
"sv" : "5"
},
"numericCorrespondence" : 5.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Yleinen asteikko, 0-5"
},
"abbreviation" : {
"en" : "0-5",
"fi" : "0-5",
"sv" : "0-5"
}
}, {
"metadata" : null,
"id" : "aalto-hyl-5",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Fail",
"fi" : "Hylätty",
"sv" : "Underkänd"
},
"abbreviation" : {
"en" : "Hyl.",
"fi" : "Hyl.",
"sv" : "Hyl."
},
"numericCorrespondence" : 0.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "passable",
"fi" : "välttävä",
"sv" : "försvarlig"
},
"abbreviation" : {
"en" : "1",
"fi" : "1",
"sv" : "1"
},
"numericCorrespondence" : 1.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "satisfactory",
"fi" : "tyydyttävä",
"sv" : "nöjaktig"
},
"abbreviation" : {
"en" : "2",
"fi" : "2",
"sv" : "2"
},
"numericCorrespondence" : 2.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "good",
"fi" : "hyvä",
"sv" : "god"
},
"abbreviation" : {
"en" : "3",
"fi" : "3",
"sv" : "3"
},
"numericCorrespondence" : 3.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "very good",
"fi" : "kiitettävä",
"sv" : "berömlig"
},
"abbreviation" : {
"en" : "4",
"fi" : "4",
"sv" : "4"
},
"numericCorrespondence" : 4.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "utmärkt",
"fi" : "erinomainen",
"sv" : "excellent"
},
"abbreviation" : {
"en" : "5",
"fi" : "5",
"sv" : "5"
},
"numericCorrespondence" : 5.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Yleinen asteikko, Hylätty-5"
},
"abbreviation" : {
"en" : "Hyl-5",
"fi" : "Hyl-5",
"sv" : "Hyl-5"
}
}, {
"metadata" : null,
"id" : "tay-hyl-5",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Fail",
"fi" : "Hylätty",
"sv" : "Underkänd"
},
"abbreviation" : {
"en" : "Hyl.",
"fi" : "Hyl.",
"sv" : "Hyl."
},
"numericCorrespondence" : 0.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "passable",
"fi" : "välttävä",
"sv" : "försvarlig"
},
"abbreviation" : {
"en" : "1",
"fi" : "1",
"sv" : "1"
},
"numericCorrespondence" : 1.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "satisfactory",
"fi" : "tyydyttävä",
"sv" : "nöjaktig"
},
"abbreviation" : {
"en" : "2",
"fi" : "2",
"sv" : "2"
},
"numericCorrespondence" : 2.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "good",
"fi" : "hyvä",
"sv" : "god"
},
"abbreviation" : {
"en" : "3",
"fi" : "3",
"sv" : "3"
},
"numericCorrespondence" : 3.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "very good",
"fi" : "kiitettävä",
"sv" : "berömlig"
},
"abbreviation" : {
"en" : "4",
"fi" : "4",
"sv" : "4"
},
"numericCorrespondence" : 4.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "utmärkt",
"fi" : "erinomainen",
"sv" : "excellent"
},
"abbreviation" : {
"en" : "5",
"fi" : "5",
"sv" : "5"
},
"numericCorrespondence" : 5.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Yleinen asteikko, Hylätty-5"
},
"abbreviation" : {
"en" : "Hyl-5",
"fi" : "Hyl-5",
"sv" : "Hyl-5"
}
}, {
"metadata" : null,
"id" : "hy-hyl-hyv",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "U"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty -asteikko"
},
"abbreviation" : {
"en" : "Hyl-Hyv",
"fi" : "Hyl-Hyv",
"sv" : "Hyl-Hyv"
}
}, {
"metadata" : null,
"id" : "tay-hyl-hyv",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "U"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty -asteikko"
},
"abbreviation" : {
"en" : "Hyl-Hyv",
"fi" : "Hyl-Hyv",
"sv" : "Hyl-Hyv"
}
}, {
"metadata" : null,
"id" : "jyu-hyl-hyv",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "U"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty -asteikko"
},
"abbreviation" : {
"en" : "Hyl-Hyv",
"fi" : "Hyl-Hyv",
"sv" : "Hyl-Hyv"
}
}, {
"metadata" : null,
"id" : "aalto-hyl-hyv",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "U"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty -asteikko"
},
"abbreviation" : {
"en" : "Hyl-Hyv",
"fi" : "Hyl-Hyv",
"sv" : "Hyl-Hyv"
}
}, {
"metadata" : null,
"id" : "hy-hyl-kh",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "U"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Med beröm godkänd",
"fi" : "Kiittäen hyväksytty",
"sv" : "Pass with Distinction"
},
"abbreviation" : {
"en" : "PasD",
"fi" : "KH",
"sv" : "MBG"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty-Kiittäen hyväksytty"
},
"abbreviation" : {
"en" : "Hyl-KH",
"fi" : "Hyl-KH",
"sv" : "Hyl-KH"
}
}, {
"metadata" : null,
"id" : "jyu-hyl-kh",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "U"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Med beröm godkänd",
"fi" : "Kiittäen hyväksytty",
"sv" : "Pass with Distinction"
},
"abbreviation" : {
"en" : "PasD",
"fi" : "KH",
"sv" : "MBG"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty-Kiittäen hyväksytty"
},
"abbreviation" : {
"en" : "Hyl-KH",
"fi" : "Hyl-KH",
"sv" : "Hyl-KH"
}
}, {
"metadata" : null,
"id" : "aalto-hyl-kh",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "0"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Godkänd",
"fi" : "Hyväksytty",
"sv" : "Pass"
},
"abbreviation" : {
"en" : "Pass",
"fi" : "Hyv.",
"sv" : "G"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Med beröm godkänd",
"fi" : "Kiittäen hyväksytty",
"sv" : "Pass with Distinction"
},
"abbreviation" : {
"en" : "PasD",
"fi" : "KH",
"sv" : "MBG"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Hylätty-Hyväksytty-Kiittäen hyväksytty"
},
"abbreviation" : {
"en" : "Hyl-KH",
"fi" : "Hyl-KH",
"sv" : "Hyl-KH"
}
}, {
"metadata" : null,
"id" : "aalto-toinen-kotim",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "0"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Nöjaktiga insikter",
"fi" : "Tyydyttävät tiedot",
"sv" : "Satisfactory"
},
"abbreviation" : {
"en" : "SAT",
"fi" : "TT",
"sv" : "NI"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Goda insikter",
"fi" : "Hyvät tiedot",
"sv" : "Good"
},
"abbreviation" : {
"en" : "G",
"fi" : "HT",
"sv" : "GI"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Toisen kotimaisen kielen arvosana-asteikko"
},
"abbreviation" : {
"en" : "Toinen kotimainen",
"fi" : "Toinen kotimainen",
"sv" : "Toinen kotimainen"
}
}, {
"metadata" : null,
"id" : "hy-toinen-kotim",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "0"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Nöjaktiga insikter",
"fi" : "Tyydyttävät tiedot",
"sv" : "Satisfactory"
},
"abbreviation" : {
"en" : "SAT",
"fi" : "TT",
"sv" : "NI"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Goda insikter",
"fi" : "Hyvät tiedot",
"sv" : "Good"
},
"abbreviation" : {
"en" : "G",
"fi" : "HT",
"sv" : "GI"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Toisen kotimaisen kielen arvosana-asteikko"
},
"abbreviation" : {
"en" : "Toinen kotimainen",
"fi" : "Toinen kotimainen",
"sv" : "Toinen kotimainen"
}
}, {
"metadata" : null,
"id" : "jyu-toinen-kotim",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "0"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Nöjaktiga insikter",
"fi" : "Tyydyttävät tiedot",
"sv" : "Satisfactory"
},
"abbreviation" : {
"en" : "SAT",
"fi" : "TT",
"sv" : "NI"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Goda insikter",
"fi" : "Hyvät tiedot",
"sv" : "Good"
},
"abbreviation" : {
"en" : "G",
"fi" : "HT",
"sv" : "GI"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Toisen kotimaisen kielen arvosana-asteikko"
},
"abbreviation" : {
"en" : "Toinen kotimainen",
"fi" : "Toinen kotimainen",
"sv" : "Toinen kotimainen"
}
}, {
"metadata" : null,
"id" : "tay-toinen-kotim",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Underkänd",
"fi" : "Hylätty",
"sv" : "Fail"
},
"abbreviation" : {
"en" : "Fail",
"fi" : "Hyl.",
"sv" : "0"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Nöjaktiga insikter",
"fi" : "Tyydyttävät tiedot",
"sv" : "Satisfactory"
},
"abbreviation" : {
"en" : "SAT",
"fi" : "TT",
"sv" : "NI"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Goda insikter",
"fi" : "Hyvät tiedot",
"sv" : "Good"
},
"abbreviation" : {
"en" : "G",
"fi" : "HT",
"sv" : "GI"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Toisen kotimaisen kielen arvosana-asteikko"
},
"abbreviation" : {
"en" : "Toinen kotimainen",
"fi" : "Toinen kotimainen",
"sv" : "Toinen kotimainen"
}
}, {
"metadata" : null,
"id" : "hy-7-portainen",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Improbatur",
"fi" : "Improbatur",
"sv" : "Improbatur"
},
"abbreviation" : {
"en" : "I",
"fi" : "I",
"sv" : "I"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Approbatur",
"fi" : "Approbatur",
"sv" : "Approbatur"
},
"abbreviation" : {
"en" : "A",
"fi" : "A",
"sv" : "A"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Lubenter Approbatur",
"fi" : "Lubenter approbatur",
"sv" : "Lubenter approbatur"
},
"abbreviation" : {
"en" : "LA",
"fi" : "LA",
"sv" : "LA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Non Sine Laude Approbatur",
"fi" : "Non sine laude approbatur",
"sv" : "Non sine laude approbatur"
},
"abbreviation" : {
"en" : "NSLA",
"fi" : "NSLA",
"sv" : "NSLA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Cum Laude Approbatur",
"fi" : "Cum laude approbatur",
"sv" : "Cum laude approbatur"
},
"abbreviation" : {
"en" : "CL",
"fi" : "CL",
"sv" : "CL"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Magna Cum Laude Approbatur",
"fi" : "Magna cum laude approbatur",
"sv" : "Magna cum laude approbatur"
},
"abbreviation" : {
"en" : "MCLA",
"fi" : "MCLA",
"sv" : "MCLA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Eximia Cum Laude Approbatur",
"fi" : "Eximia cum laude approbatur",
"sv" : "Eximia cum laude approbatur"
},
"abbreviation" : {
"en" : "ECLA",
"fi" : "ECLA",
"sv" : "ECLA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Laudatur",
"fi" : "Laudatur",
"sv" : "Laudatur"
},
"abbreviation" : {
"en" : "L",
"fi" : "L",
"sv" : "L"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"en" : "7-portainen asteikko",
"fi" : "7-portainen asteikko",
"sv" : "7-portainen asteikko"
},
"abbreviation" : {
"en" : "7-portainen",
"fi" : "7-portainen",
"sv" : "7-portainen"
}
}, {
"metadata" : null,
"id" : "tay-7-portainen",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Improbatur",
"fi" : "Improbatur",
"sv" : "Improbatur"
},
"abbreviation" : {
"en" : "I",
"fi" : "I",
"sv" : "I"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Approbatur",
"fi" : "Approbatur",
"sv" : "Approbatur"
},
"abbreviation" : {
"en" : "A",
"fi" : "A",
"sv" : "A"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Lubenter Approbatur",
"fi" : "Lubenter approbatur",
"sv" : "Lubenter approbatur"
},
"abbreviation" : {
"en" : "LA",
"fi" : "LA",
"sv" : "LA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Non Sine Laude Approbatur",
"fi" : "Non sine laude approbatur",
"sv" : "Non sine laude approbatur"
},
"abbreviation" : {
"en" : "NSLA",
"fi" : "NSLA",
"sv" : "NSLA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Cum Laude Approbatur",
"fi" : "Cum laude approbatur",
"sv" : "Cum laude approbatur"
},
"abbreviation" : {
"en" : "CL",
"fi" : "CL",
"sv" : "CL"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Magna Cum Laude Approbatur",
"fi" : "Magna cum laude approbatur",
"sv" : "Magna cum laude approbatur"
},
"abbreviation" : {
"en" : "MCLA",
"fi" : "MCLA",
"sv" : "MCLA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Eximia Cum Laude Approbatur",
"fi" : "Eximia cum laude approbatur",
"sv" : "Eximia cum laude approbatur"
},
"abbreviation" : {
"en" : "ECLA",
"fi" : "ECLA",
"sv" : "ECLA"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Laudatur",
"fi" : "Laudatur",
"sv" : "Laudatur"
},
"abbreviation" : {
"en" : "L",
"fi" : "L",
"sv" : "L"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"en" : "7-portainen asteikko",
"fi" : "7-portainen asteikko",
"sv" : "7-portainen asteikko"
},
"abbreviation" : {
"en" : "7-portainen",
"fi" : "7-portainen",
"sv" : "7-portainen"
}
}, {
"metadata" : null,
"id" : "aalto-maisteri",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"fi" : "Hylätty"
},
"abbreviation" : {
"fi" : "HYL"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"fi" : "Hyväksytty"
},
"abbreviation" : {
"fi" : "HYV"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"fi" : "Oivallisesti"
},
"abbreviation" : {
"fi" : "OIV"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Maisteritutkinnon asteikko"
},
"abbreviation" : {
"fi" : "Maisteritutkinnon asteikko"
}
}, {
"metadata" : null,
"id" : "aalto-kandi",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"fi" : "Hylätty"
},
"abbreviation" : {
"fi" : "HYL"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"fi" : "Hyväksytty"
},
"abbreviation" : {
"fi" : "HYV"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"fi" : "Erinomaisesti"
},
"abbreviation" : {
"fi" : "ER"
},
"numericCorrespondence" : null
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"fi" : "Kandidaatintutkinnon asteikko"
},
"abbreviation" : {
"fi" : "Kandidaatintutkinnon asteikko"
}
}, {
"metadata" : null,
"id" : "otm-test-numeric",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "0",
"fi" : "0"
},
"abbreviation" : {
"en" : "0",
"fi" : "0"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "1",
"fi" : "1"
},
"abbreviation" : {
"en" : "1",
"fi" : "1"
},
"numericCorrespondence" : 1.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "2",
"fi" : "2"
},
"abbreviation" : {
"en" : "2",
"fi" : "2"
},
"numericCorrespondence" : 2.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "3",
"fi" : "3"
},
"abbreviation" : {
"en" : "3",
"fi" : "3"
},
"numericCorrespondence" : 3.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "4",
"fi" : "4"
},
"abbreviation" : {
"en" : "4",
"fi" : "4"
},
"numericCorrespondence" : 4.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "5",
"fi" : "5"
},
"abbreviation" : {
"en" : "5",
"fi" : "5"
},
"numericCorrespondence" : 5.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"en" : "Numeric grade scale 1-5",
"fi" : "Numeerinen arviointiasteikko 1-5"
},
"abbreviation" : {
"en" : "1-5",
"fi" : "1-5"
}
}, {
"metadata" : null,
"id" : "otm-test-latin",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Improbatur",
"fi" : "Improbatur"
},
"abbreviation" : {
"en" : "I",
"fi" : "I"
},
"numericCorrespondence" : null
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Approbatur",
"fi" : "Approbatur"
},
"abbreviation" : {
"en" : "A",
"fi" : "A"
},
"numericCorrespondence" : 1.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Lubenter Approbatur",
"fi" : "Lubenter approbatur"
},
"abbreviation" : {
"en" : "LA",
"fi" : "LA"
},
"numericCorrespondence" : 1.667
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Non Sine Laude Approbatur",
"fi" : "Non sine laude approbatur"
},
"abbreviation" : {
"en" : "NSLA",
"fi" : "NSLA"
},
"numericCorrespondence" : 2.333
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Cum Laude Approbatur",
"fi" : "Cum laude approbatur"
},
"abbreviation" : {
"en" : "CL",
"fi" : "CL"
},
"numericCorrespondence" : 3.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Magna Cum Laude Approbatur",
"fi" : "Magna cum laude approbatur"
},
"abbreviation" : {
"en" : "MCLA",
"fi" : "MCLA"
},
"numericCorrespondence" : 3.667
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Eximia Cum Laude Approbatur",
"fi" : "Eximia cum laude approbatur"
},
"abbreviation" : {
"en" : "ECLA",
"fi" : "ECLA"
},
"numericCorrespondence" : 4.333
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Laudatur",
"fi" : "Laudatur"
},
"abbreviation" : {
"en" : "L",
"fi" : "L"
},
"numericCorrespondence" : 5.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"en" : "Latin grade scale",
"fi" : "Latinankielinen arviointiasteikko"
},
"abbreviation" : {
"en" : "lat",
"fi" : "lat"
}
}, {
"metadata" : null,
"id" : "otm-test-two-tier",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "Improbatur",
"fi" : "Hylätty"
},
"abbreviation" : {
"en" : "fail",
"fi" : "fail"
},
"numericCorrespondence" : 0.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "Passed",
"fi" : "Hyväksytty"
},
"abbreviation" : {
"en" : "ok",
"fi" : "ok"
},
"numericCorrespondence" : 1.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"en" : "two-tier grade scale",
"fi" : "2-portainen arviointiasteikko"
},
"abbreviation" : {
"en" : "2tier",
"fi" : "2tier"
}
}, {
"metadata" : null,
"id" : "otm-4-10",
"grades" : [ {
"localId" : 0,
"passed" : false,
"name" : {
"en" : "4",
"fi" : "4"
},
"abbreviation" : {
"en" : "4",
"fi" : "4"
},
"numericCorrespondence" : 4.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "5",
"fi" : "5"
},
"abbreviation" : {
"en" : "5",
"fi" : "5"
},
"numericCorrespondence" : 5.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "6",
"fi" : "6"
},
"abbreviation" : {
"en" : "6",
"fi" : "6"
},
"numericCorrespondence" : 6.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "7",
"fi" : "7"
},
"abbreviation" : {
"en" : "7",
"fi" : "7"
},
"numericCorrespondence" : 7.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "8",
"fi" : "8"
},
"abbreviation" : {
"en" : "8",
"fi" : "8"
},
"numericCorrespondence" : 8.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "9",
"fi" : "9"
},
"abbreviation" : {
"en" : "9",
"fi" : "9"
},
"numericCorrespondence" : 9.0
}, {
"localId" : 0,
"passed" : true,
"name" : {
"en" : "10",
"fi" : "10"
},
"abbreviation" : {
"en" : "10",
"fi" : "10"
},
"numericCorrespondence" : 10.0
} ],
"validityPeriod" : {
"startDate" : "1900-01-01"
},
"additionalInfo" : null,
"helpText" : null,
"name" : {
"en" : "4-10 grade scale",
"fi" : "4-10 Asteikko"
},
"abbreviation" : {
"en" : "4-10",
"fi" : "4-10"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export international contractual degree agreements
GET /api/international-contractual-degree-agreements/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return international contractual degree agreements modified after (exclusive comparison) this modification ordinal (increasing value within Ori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return international contractual degree agreements modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of international contractual degree agreements to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultInternationalContractualDegreeAgreement[ExportResultInternationalContractualDegreeAgreement] |
Import international contractual degree agreements
POST /api/international-contractual-degree-agreements/v1/import
Parameters
Export locations
GET /api/locations/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return locations modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return locations modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of locations to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultLocation[ExportResultLocation] |
Samples
GET /api/locations/v1/export?since=61518&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 698
{
"greatestOrdinal" : 61522,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:11:51.930715",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:11:51.930746",
"modificationOrdinal" : 61522
},
"documentState" : "ACTIVE",
"id" : "otm-04a61308-a415-428f-81ec-44509ef0f9a3",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"fi" : "Location 2025-04-15T12:11:51.930312180",
"sv" : "Location 2025-04-15T12:11:51.930312180"
},
"capacity" : 15,
"buildingId" : "otm-260f02a7-f574-42a5-a7a0-e3447ade2d25",
"building" : null
} ]
}
Get location
GET /api/locations/v1/{locationId}
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Location[Location] |
Samples
GET /api/locations/v1/otm-ed567b6b-92ac-4267-9bb7-1f8b1877abba HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1243
{
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:11:52.075314",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:11:52.075343",
"modificationOrdinal" : 61611
},
"documentState" : "ACTIVE",
"id" : "otm-ed567b6b-92ac-4267-9bb7-1f8b1877abba",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Computer room",
"fi" : "ATK-huone",
"sv" : "ADB-rum"
},
"capacity" : 15,
"buildingId" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
"building" : {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.i",
"createdOn" : "2025-04-15T12:11:52.073798",
"lastModifiedBy" : "spectre.i",
"lastModifiedOn" : "2025-04-15T12:11:52.073827",
"modificationOrdinal" : 61608
},
"documentState" : "ACTIVE",
"id" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Viikki",
"fi" : "Viikki"
},
"address" : {
"countryUrn" : "urn:code:country:246",
"isUserEditable" : true,
"streetAddress" : "Viikinkari 9",
"postalCode" : "00790",
"city" : "Helsinki",
"type" : "FinnishAddress"
}
}
}
Import locations
POST /api/locations/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
Location required |
List (Location) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/locations/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 1245
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-ed567b6b-92ac-4267-9bb7-1f8b1877abba",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Computer room",
"fi" : "ATK-huone",
"sv" : "ADB-rum"
},
"capacity" : 15,
"buildingId" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
"building" : null
}, {
"metadata" : null,
"id" : "otm-82577521-22a8-4a42-b54a-96e549af2e21",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Class 10a",
"fi" : "Luokka 10a",
"sv" : "Klass 10a"
},
"capacity" : 15,
"buildingId" : "otm-155b685f-2a5e-401a-90c5-167d35101764",
"building" : null
}, {
"metadata" : null,
"id" : "otm-987d362f-cdfe-4b90-95bc-f47cbb309ed9",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Auditorium",
"fi" : "Auditorio",
"sv" : "Auditorium"
},
"capacity" : 15,
"buildingId" : "otm-5029f514-b78c-4135-a354-9866fa472016",
"building" : null
}, {
"metadata" : null,
"id" : "otm-987d362f-cdfe-4b90-88bc-f47cbb309eff",
"universityOrgIds" : [ "the-spectre" ],
"name" : {
"en" : "Class 5a",
"fi" : "Luokka 5a",
"sv" : "Klass 5a"
},
"capacity" : 15,
"buildingId" : "otm-5029f514-b78c-4135-a354-9866fa472016",
"building" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export mass exam sessions
GET /api/mass-exam-sessions/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point. With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be consecutive. With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return mass exam sessions modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return mass exam sessions modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of mass exam sessions to return. May return less, either because there are not enough items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultMassExamSession[ExportResultMassExamSession] |
Import mass exam sessions
POST /api/mass-exam-sessions/v1/import
Import active mass exam sessions with strict validation.
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
MassExamSession required |
List (MassExamSession) |
Delete modules
POST /api/modules/v1/batch-delete
Delete a batch of modules by id or groupId.
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
DeleteBatch required |
DeleteBatch (DeleteBatch) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/modules/v1/batch-delete HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 125
Host: localhost:8080
{
"ids" : [ "otm-b87b3050-47ab-429f-8d84-affdcec649a4", "otm-db37c7a2-ce02-4334-b92a-6d2b9c08e034" ],
"groupIds" : null
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export modules
GET /api/modules/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return study modules modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return study modules modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of study modules to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultModule[ExportResultModule] |
Samples
GET /api/modules/v1/export?since=0&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 2462
{
"greatestOrdinal" : 67152,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-study-module-admin-user",
"createdOn" : "2025-04-15T12:11:59.699007",
"lastModifiedBy" : "spectre-study-module-admin-user",
"lastModifiedOn" : "2025-04-15T12:11:59.699042",
"modificationOrdinal" : 67152
},
"documentState" : "DRAFT",
"id" : "otm-a7d2648e-0b6a-41c5-9cad-3f80a096ee27",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-a7d2648e-0b6a-41c5-9cad-3f80a096ee27",
"name" : {
"fi" : "Module that has ID otm-a7d2648e-0b6a-41c5-9cad-3f80a096ee27"
},
"moduleContentApprovalRequired" : false,
"code" : "code-xyzzy-otm-a7d2648e-0b6a-41c5-9cad-3f80a096ee27",
"targetCredits" : {
"min" : 0,
"max" : 10
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"approvalState" : "urn:code:approval-state-type:not-ready",
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-04"
},
"contentDescription" : null,
"additionalInfo" : {
"fi" : "lisätietoa"
},
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"inclusionApplicationInstruction" : null,
"printName" : null,
"abbreviation" : null,
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"substitutions" : null,
"searchTags" : [ ],
"studyLevel" : "urn:code:study-level:intermediate-studies",
"possibleAttainmentLanguages" : [ "urn:code:official-language:fi" ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"graded" : true,
"gradeScaleId" : "hy-0-5",
"customCodeUrns" : null,
"contentFilter" : null,
"studyRightSelectionType" : "urn:code:study-right-selection-type:none",
"minorStudyRightAcceptanceType" : null,
"minorStudyRightApplicationInstructions" : null,
"type" : "StudyModule",
"rule" : {
"type" : "AnyCourseUnitRule",
"localId" : "a2cdbb14-fc58-4b09-9dd0-84cdddfed70d"
}
} ]
}
Find module versions by group id and curriculum period id
GET /api/modules/v1/by-group-id
NOTE! This is not an exact and deterministic search. It returns a single version representing each group id. ACTIVE modules are preferred over DRAFT modules and DELETED versions are the last resort, unless document states are limited using the documentStates parameter. Order of the modules is not guaranteed. Curriculum period id is not mandatory. When curriculum id is not given or the given curriculum does not contain all versions, search will use active and valid curricula starting from current proceeding to the future and then into the past in order to find versions.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
groupId required |
List of group ids whose module versions we are interested in. |
List ([String]) |
|
universityId required |
University whose modules are preferred. |
String |
otm-123456 |
curriculumPeriodId optional |
Curriculum period id. Return versions which belong to this curriculum period. |
String |
otm-123456 |
documentStates optional |
Return modules only in given Document states. |
List ([String]) |
|
preferByState optional |
Prefer modules by state in the order ACTIVE, DRAFT, DELETED. |
Boolean |
true |
Get modules
GET /api/modules/v1
Modules are fetched by their groupId. Modules of all types (DegreeProgramme, StudyModule, GroupingModule) in DRAFT and ACTIVE states are fetched.
Get module
GET /api/modules/v1/{moduleId}
Get is keyed by its module id. This information is public, and the operation succeeds even with no authentication. Modules of all types (DegreeProgramme, StudyModule, GroupingModule) can be fetched, and the document state of the module does not affect the operation, i.e. even DELETED modules can be exported, they just have \"documentState\": \"DELETED\". Public export operations are allowed to get new fields without updating the version tag, but changes to existing fields are considered breaking changes and thus cause a new export endpoint with a new version tag to be introduced.
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
importModules_request_inner[[importModules_request_inner]] |
Samples
GET /api/modules/v1/otm-cf871f6e-895b-405c-bfac-11a8d0997d04 HTTP/1.1
Content-Type: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Cache-Control: public,max-age=0,s-maxage=25200
xkey: otm-cf871f6e-895b-405c-bfac-11a8d0997d04
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: DENY
Content-Length: 2216
{
"metadata" : {
"revision" : 1,
"createdBy" : "spectre-admin",
"createdOn" : "2025-04-15T12:11:59.067456",
"lastModifiedBy" : "spectre-admin",
"lastModifiedOn" : "2025-04-15T12:11:59.067487",
"modificationOrdinal" : 66756
},
"documentState" : "DRAFT",
"id" : "otm-cf871f6e-895b-405c-bfac-11a8d0997d04",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-cf871f6e-895b-405c-bfac-11a8d0997d04",
"name" : {
"fi" : "Module that has ID otm-cf871f6e-895b-405c-bfac-11a8d0997d04"
},
"moduleContentApprovalRequired" : true,
"code" : "code-xyzzy-otm-cf871f6e-895b-405c-bfac-11a8d0997d04",
"targetCredits" : {
"min" : 0,
"max" : 10
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"approvalState" : "urn:code:approval-state-type:not-ready",
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-04"
},
"contentDescription" : null,
"additionalInfo" : {
"fi" : "lisätietoa"
},
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"inclusionApplicationInstruction" : null,
"printName" : null,
"abbreviation" : null,
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"substitutions" : null,
"searchTags" : [ ],
"studyLevel" : "urn:code:study-level:intermediate-studies",
"possibleAttainmentLanguages" : [ "urn:code:official-language:fi" ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"graded" : true,
"gradeScaleId" : "hy-0-5",
"customCodeUrns" : null,
"contentFilter" : null,
"studyRightSelectionType" : "urn:code:study-right-selection-type:none",
"minorStudyRightAcceptanceType" : null,
"minorStudyRightApplicationInstructions" : null,
"type" : "StudyModule",
"rule" : {
"type" : "AnyCourseUnitRule",
"localId" : "2144a65a-8928-4834-8198-e5b679f708aa"
}
}
Import legacy modules
POST /api/modules/v1/import/legacy
Import with a lenient legacy validation
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/modules/v1/import/legacy HTTP/1.1
Content-Type: application/json
Content-Length: 3796
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-75889963-47c6-421c-848d-2638f597beeb",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-75889963-47c6-421c-848d-2638f597beeb",
"name" : {
"fi" : "Module that has ID otm-75889963-47c6-421c-848d-2638f597beeb"
},
"moduleContentApprovalRequired" : false,
"code" : null,
"targetCredits" : {
"min" : 0,
"max" : 10
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"approvalState" : "urn:code:approval-state-type:not-ready",
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-04"
},
"contentDescription" : null,
"additionalInfo" : {
"fi" : "lisätietoa"
},
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"inclusionApplicationInstruction" : null,
"printName" : null,
"tweetText" : null,
"degreeProgramTypeUrn" : "urn:code:degree-program-type:bachelors-degree",
"degreeTitleUrns" : [ "urn:code:degree-title:tutkintonimikekk_012" ],
"degreeLanguageUrns" : [ "urn:code:official-language:fi" ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"educationClassificationUrns" : [ "urn:code:education-classification:koulutus_361252" ],
"educationLocationUrns" : [ ],
"gradeScaleId" : "hy-0-5",
"customCodeUrns" : null,
"learningOutcomes" : null,
"tuitionFee" : null,
"type" : "DegreeProgramme",
"rule" : {
"type" : "AnyCourseUnitRule",
"localId" : "b85f09f2-2f32-4862-80a5-3d0844562ed2"
}
}, {
"metadata" : null,
"id" : "otm-14d8b602-9b93-4b58-a48d-06595195d7d7",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-14d8b602-9b93-4b58-a48d-06595195d7d7",
"name" : {
"fi" : "Module that has ID otm-14d8b602-9b93-4b58-a48d-06595195d7d7"
},
"moduleContentApprovalRequired" : false,
"code" : "code-xyzzy-otm-14d8b602-9b93-4b58-a48d-06595195d7d7",
"targetCredits" : {
"min" : 0,
"max" : 10
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"approvalState" : "urn:code:approval-state-type:not-ready",
"validityPeriod" : {
"startDate" : "1970-01-01",
"endDate" : "2071-12-04"
},
"contentDescription" : null,
"additionalInfo" : {
"fi" : "lisätietoa"
},
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"inclusionApplicationInstruction" : null,
"printName" : null,
"abbreviation" : null,
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"substitutions" : null,
"searchTags" : [ ],
"studyLevel" : "urn:code:study-level:intermediate-studies",
"possibleAttainmentLanguages" : [ "urn:code:official-language:fi" ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"graded" : true,
"gradeScaleId" : "hy-0-5",
"customCodeUrns" : null,
"contentFilter" : null,
"studyRightSelectionType" : "urn:code:study-right-selection-type:none",
"minorStudyRightAcceptanceType" : null,
"minorStudyRightApplicationInstructions" : null,
"type" : "StudyModule",
"rule" : {
"type" : "AnyCourseUnitRule",
"localId" : "d1ac8b5b-5896-477a-94f2-7e47d4fe2f26"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import modules
POST /api/modules/v1/import
Import with strict validation
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/modules/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 3845
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-4db6a26b-dcdd-4ac8-a0f0-8f0dd0d4894c",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-4db6a26b-dcdd-4ac8-a0f0-8f0dd0d4894c",
"name" : {
"fi" : "Module that has ID otm-4db6a26b-dcdd-4ac8-a0f0-8f0dd0d4894c"
},
"moduleContentApprovalRequired" : false,
"code" : "code-xyzzy-otm-4db6a26b-dcdd-4ac8-a0f0-8f0dd0d4894c",
"targetCredits" : {
"min" : 0,
"max" : 10
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"approvalState" : "urn:code:approval-state-type:not-ready",
"validityPeriod" : {
"startDate" : "2015-12-24",
"endDate" : "2015-12-25"
},
"contentDescription" : null,
"additionalInfo" : {
"fi" : "lisätietoa"
},
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"inclusionApplicationInstruction" : null,
"printName" : null,
"tweetText" : null,
"degreeProgramTypeUrn" : "urn:code:degree-program-type:bachelors-degree",
"degreeTitleUrns" : [ "urn:code:degree-title:tutkintonimikekk_012" ],
"degreeLanguageUrns" : [ "urn:code:official-language:fi" ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"educationClassificationUrns" : [ "urn:code:education-classification:koulutus_361252" ],
"educationLocationUrns" : [ ],
"gradeScaleId" : "hy-0-5",
"customCodeUrns" : null,
"learningOutcomes" : null,
"tuitionFee" : null,
"type" : "DegreeProgramme",
"rule" : {
"type" : "AnyCourseUnitRule",
"localId" : "264d7cc7-2755-43f7-b63f-1348ab7ddfa7"
}
}, {
"metadata" : null,
"id" : "otm-92e9371a-b427-48e3-b18b-cb189f7aa5d1",
"universityOrgIds" : [ "the-spectre" ],
"groupId" : "otm-92e9371a-b427-48e3-b18b-cb189f7aa5d1",
"name" : {
"fi" : "Module that has ID otm-92e9371a-b427-48e3-b18b-cb189f7aa5d1"
},
"moduleContentApprovalRequired" : false,
"code" : "code-xyzzy-otm-92e9371a-b427-48e3-b18b-cb189f7aa5d1",
"targetCredits" : {
"min" : 0,
"max" : 10
},
"curriculumPeriodIds" : [ "otm-test-curriculum-period-2015-2016" ],
"approvalState" : "urn:code:approval-state-type:not-ready",
"validityPeriod" : {
"startDate" : "2015-12-24",
"endDate" : "2015-12-25"
},
"contentDescription" : null,
"additionalInfo" : {
"fi" : "lisätietoa"
},
"responsibilityInfos" : [ {
"text" : null,
"personId" : "otm-test-user-96",
"roleUrn" : "urn:code:module-responsibility-info-type:responsible-teacher",
"validityPeriod" : { }
} ],
"organisations" : [ {
"organisationId" : "the-spectre",
"educationalInstitutionUrn" : null,
"roleUrn" : "urn:code:organisation-role:responsible-organisation",
"share" : 1,
"validityPeriod" : { }
} ],
"inclusionApplicationInstruction" : null,
"printName" : null,
"abbreviation" : null,
"tweetText" : null,
"outcomes" : null,
"prerequisites" : null,
"substitutions" : null,
"searchTags" : [ ],
"studyLevel" : "urn:code:study-level:intermediate-studies",
"possibleAttainmentLanguages" : [ "urn:code:official-language:fi" ],
"studyFields" : [ "urn:code:study-field:2002-0" ],
"graded" : true,
"gradeScaleId" : "hy-0-5",
"customCodeUrns" : null,
"contentFilter" : null,
"studyRightSelectionType" : "urn:code:study-right-selection-type:none",
"minorStudyRightAcceptanceType" : null,
"minorStudyRightApplicationInstructions" : null,
"type" : "StudyModule",
"rule" : {
"type" : "AnyCourseUnitRule",
"localId" : "4c8dc143-c68c-489d-b85c-83443918ee9e"
}
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Patch legacy modules
PATCH /api/modules/v1/import/legacy
Patch import with lenient legacy validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Patch modules
PATCH /api/modules/v1/import
Patch import with strict validation
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Export open university product codes
GET /api/open-university-product-codes/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point. With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be consecutive. With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
sinceOrdinal optional |
Long (int64) |
789 |
|
sinceTime optional |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
|
limit required |
The maximum amount of results to return |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultOpenUniversityProductCode[ExportResultOpenUniversityProductCode] |
Import open university product codes
POST /api/open-university-product-codes/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
OpenUniversityProductCode required |
List (OpenUniversityProductCode) |
Export open university products
GET /api/open-university-products/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return products modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return products modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of products to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultOpenUniversityProduct[ExportResultOpenUniversityProduct] |
Import open university products
POST /api/open-university-products/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
OpenUniversityProduct required |
List (OpenUniversityProduct) |
Patch open university products
PATCH /api/open-university-products/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PatchEntity required |
List (PatchEntity) |
Stream open university products
GET /api/open-university-products/v1/stream
Entities can be exported as a stream in modification order, and the stream can be left open to listen for changes. Duplicates are possible if entities are modified several times.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return messages modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return messages modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
follow optional |
If true, keeps the connection open and streams updates as they occur. |
Boolean |
true |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[[object]] |
Export organisations
GET /api/organisations/v2/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return organisations modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return organisations modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of organisations to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultOrganisation[ExportResultOrganisation] |
Samples
GET /api/organisations/v2/export?since=0&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 881
{
"greatestOrdinal" : 67668,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.e",
"createdOn" : "2025-04-15T12:12:01.085186",
"lastModifiedBy" : "spectre.e",
"lastModifiedOn" : "2025-04-15T12:12:01.085228",
"modificationOrdinal" : 67668
},
"documentState" : "DRAFT",
"id" : "otm-6ed93512-181d-47a7-9ad6-47f9aba57702",
"snapshotDateTime" : "2024-10-15T12:12:01.081633",
"universityOrgId" : "the-spectre",
"parentId" : "the-spectre",
"predecessorIds" : [ ],
"code" : "org-code-2",
"name" : {
"en" : "name abc-en",
"fi" : "name abc",
"sv" : "name abc-sv"
},
"abbreviation" : null,
"status" : "ACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345",
"cooperationNetworkIdentifiers" : null
} ]
}
Import organisations
POST /api/organisations/v2/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
Organisation required |
List (Organisation) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/organisations/v2/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1867
Host: localhost:8080
[ {
"metadata" : null,
"documentState" : "ACTIVE",
"id" : "otm-96a210c7-f1eb-47cb-9773-bdcd8ed8db1c",
"snapshotDateTime" : "2026-04-15T12:12:00.245046",
"universityOrgId" : "hy-university-root-id",
"parentId" : "otm-e3d450a6-419b-4f53-90bc-682811b58c46",
"predecessorIds" : [ "otm-3b46cc93-2a2a-4348-a709-3d8b2cc50cdc", "otm-4fefd0a2-aacd-43d0-961b-8220033cc016" ],
"code" : "AO",
"name" : {
"en" : "A ja O yhdistetty uudestaan-en",
"fi" : "A ja O yhdistetty uudestaan",
"sv" : "A ja O yhdistetty uudestaan-sv"
},
"abbreviation" : null,
"status" : "ACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345",
"cooperationNetworkIdentifiers" : null
}, {
"metadata" : null,
"documentState" : "ACTIVE",
"id" : "otm-4fefd0a2-aacd-43d0-961b-8220033cc016",
"snapshotDateTime" : "2026-04-15T12:12:00.245046",
"universityOrgId" : "hy-university-root-id",
"parentId" : "otm-e3d450a6-419b-4f53-90bc-682811b58c46",
"predecessorIds" : [ ],
"code" : "A",
"name" : {
"en" : "A mergetty-en",
"fi" : "A mergetty",
"sv" : "A mergetty-sv"
},
"abbreviation" : null,
"status" : "INACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345",
"cooperationNetworkIdentifiers" : null
}, {
"metadata" : null,
"documentState" : "ACTIVE",
"id" : "otm-3b46cc93-2a2a-4348-a709-3d8b2cc50cdc",
"snapshotDateTime" : "2026-04-15T12:12:00.245046",
"universityOrgId" : "hy-university-root-id",
"parentId" : "otm-e3d450a6-419b-4f53-90bc-682811b58c46",
"predecessorIds" : [ ],
"code" : "O",
"name" : {
"en" : "O mergetty-en",
"fi" : "O mergetty",
"sv" : "O mergetty-sv"
},
"abbreviation" : null,
"status" : "INACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345",
"cooperationNetworkIdentifiers" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Import organisations v1
POST /api/organisations/v1/import
This is V1 interface with snapshot
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
OrganisationV1 required |
List (OrganisationV1) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/organisations/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 1635
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Host: localhost:8080
[ {
"metadata" : null,
"documentState" : "ACTIVE",
"id" : "the-spectre",
"snapshot" : {
"universityOrgId" : "the-spectre",
"parentId" : null,
"predecessorIds" : [ ],
"code" : "org-code-1",
"name" : {
"en" : "Became valid 15 days ago-en",
"fi" : "Became valid 15 days ago",
"sv" : "Became valid 15 days ago-sv"
},
"abbreviation" : null,
"status" : "ACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345"
},
"snapshotDateTime" : "2025-03-31T12:12:00.778637"
}, {
"metadata" : null,
"documentState" : "ACTIVE",
"id" : "otm-99d79194-beba-43ba-b82c-6a7d5d0473f7",
"snapshot" : {
"universityOrgId" : "the-spectre",
"parentId" : "the-spectre",
"predecessorIds" : [ ],
"code" : "org-code-2",
"name" : {
"en" : "name abc-en",
"fi" : "name abc",
"sv" : "name abc-sv"
},
"abbreviation" : null,
"status" : "ACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345"
},
"snapshotDateTime" : "2024-10-15T12:12:00.778631"
}, {
"metadata" : null,
"documentState" : "ACTIVE",
"id" : "otm-abe35e7e-4dcf-45b9-a7e6-1c4b0ff81ab7",
"snapshot" : {
"universityOrgId" : "the-spectre",
"parentId" : "the-spectre",
"predecessorIds" : [ ],
"code" : "org-code-3",
"name" : {
"en" : "name 123-en",
"fi" : "name 123",
"sv" : "name 123-sv"
},
"abbreviation" : null,
"status" : "ACTIVE",
"educationalInstitutionUrn" : "urn:code:educational-institution:42:12345"
},
"snapshotDateTime" : "2024-10-15T12:12:00.778631"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Create or update list of organisation settings (internal)
POST /api/organisation-settings/for-university/{universityOrgId}
Create or update list of organisation settings for university. Because of the dynamic nature of the OrganisationSettings object, please do the update by fetching and modifying the current settings
Parameters
Path Parameters
Name |
Description |
Schema |
Example |
universityOrgId required |
University organisation id |
String |
otm-123456 |
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
OrganisationSettings required |
List (OrganisationSettings) |
Create or update list of organisation settings
POST /api/organisation-settings/v1/for-university/{universityOrgId}
Create or update list of organisation settings for university. Because of the dynamic nature of the OrganisationSettings object, please do the update by fetching and modifying the current settings
Parameters
Path Parameters
Name |
Description |
Schema |
Example |
universityOrgId required |
University organisation id |
String |
otm-123456 |
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
OrganisationSettings required |
List (OrganisationSettings) |
Fetch list of organisation settings (internal)
GET /api/organisation-settings/for-university/{universityOrgId}
Fetch list of organisation settings by university organisation id
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[OrganisationSettings] |
Fetch list of organisation settings
GET /api/organisation-settings/v1/for-university/{universityOrgId}
Fetch list of organisation settings by university organisation id
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[OrganisationSettings] |
Export payment categories
GET /api/payment-categories/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point. With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be consecutive. With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
sinceOrdinal optional |
Long (int64) |
789 |
|
sinceTime optional |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
|
limit required |
The maximum amount of results to return |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultPaymentCategory[ExportResultPaymentCategory] |
Import payment categories
POST /api/payment-categories/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PaymentCategory required |
List (PaymentCategory) |
Export persons
GET /api/persons/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return public persons modified after (exclusive comparison) this modification ordinal (increasing value within Ori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return public persons modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of public persons to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultPublicPerson[ExportResultPublicPerson] |
Samples
GET /api/persons/v1/export?since=67752&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic aHkuZTp0ZXN0MTIz
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 664
{
"greatestOrdinal" : 67753,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:12:02.071962",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:12:02.071997",
"modificationOrdinal" : 67753
},
"documentState" : "ACTIVE",
"id" : "otm-75ceba89-8aa2-4a0d-a0c9-cfd76868fcdb",
"universityOrgIds" : [ "hy-university-root-id" ],
"titles" : [ {
"en" : "Dean",
"fi" : "Dekaani",
"sv" : "Dekanus"
} ],
"firstName" : "Mikko",
"lastName" : "Mallikas",
"emailAddress" : "mikko@mallikas.fi"
} ]
}
Get person
GET /api/persons/v1/{personId}
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
PublicPerson[PublicPerson] |
Samples
GET /api/persons/v1/otm-8b728f90-9800-4d53-ae76-f930edb11c8c HTTP/1.1
Accept: application/json
Authorization: Bearer eyJraWQiOiJ0ZXN0LjEiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzUxMiJ9.eyJzdWIiOiJhcnNrYSIsInNjb3BlIjoiYWRtaW4gdXNlciIsImlzcyI6InNpcyIsInVuaXZlcnNpdHlPcmdJZHMiOiJoeS11bml2ZXJzaXR5LXJvb3QtaWQiLCJwZXJzb25pZCI6Im90bS1hZG1pbi1pZC0xIiwiZXhwIjoxNzQ0NzA4NTAxLCJ1c2VyaW5mbyI6e319.ALoYGQ5BOaKch9RluAGarqchkc46f1m6CXxC7W7Nx4lu3HKVZH5IwzLb9N5VKHNWfVK9fU28rTiBPmyTS19D57lDANaO0GtqqoL-T0ivkWL5U_D7qsmt2iuuK08vGS43o0yZtSLl3X284JN4ex01PIKs0z8B3OptaRwrawGqZVgJdiIA
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 550
{
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:12:01.829077",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:12:01.829115",
"modificationOrdinal" : 67707
},
"documentState" : "ACTIVE",
"id" : "otm-8b728f90-9800-4d53-ae76-f930edb11c8c",
"universityOrgIds" : [ "hy-university-root-id" ],
"titles" : [ {
"en" : "Dean",
"fi" : "Dekaani",
"sv" : "Dekanus"
} ],
"firstName" : "Uusi",
"lastName" : "Ihminen",
"emailAddress" : "sposti@fake.osoite"
}
Import persons
POST /api/persons/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
PublicPerson required |
List (PublicPerson) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/persons/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic aHkuaTp0ZXN0MTIz
Content-Length: 957
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-c78e6a8e-f523-4c78-83d0-4e7049921ade",
"universityOrgIds" : [ "hy-university-root-id" ],
"titles" : [ ],
"firstName" : "Uusi",
"lastName" : "Ihminen",
"emailAddress" : "sposti@ss.fi"
}, {
"metadata" : null,
"id" : "otm-176f1675-ea05-4627-98df-1a65270c9a02",
"universityOrgIds" : [ "hy-university-root-id" ],
"titles" : [ ],
"firstName" : "Matti",
"lastName" : "Matala",
"emailAddress" : "mm@pp.fi"
}, {
"metadata" : null,
"id" : "otm-b2daed9e-a41a-4baf-b5f4-ad737ed404fe",
"universityOrgIds" : [ "hy-university-root-id" ],
"titles" : [ {
"fi" : "Suurmestari"
} ],
"firstName" : "Pertti",
"lastName" : "Peltola",
"emailAddress" : "pp@pp.fi"
}, {
"metadata" : null,
"id" : "otm-da95dae3-f066-45a9-8786-6d85d6afc15c",
"universityOrgIds" : [ "hy-university-root-id" ],
"titles" : [ ],
"firstName" : "Pertti",
"lastName" : "Palola",
"emailAddress" : "pap@pp.fi"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export Qualifications
GET /api/qualifications/v1/export
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultQualification[ExportResultQualification] |
Import Qualifications
POST /api/qualifications/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
Qualification required |
List (Qualification) |
Export study events
GET /api/study-events/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return study events modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return study events modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of study events to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultStudyEvent[ExportResultStudyEvent] |
Samples
GET /api/study-events/v1/export?since=68300&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 869
{
"greatestOrdinal" : 68301,
"hasMore" : false,
"entities" : [ {
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:12:02.951743",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:12:02.951778",
"modificationOrdinal" : 68301
},
"documentState" : "ACTIVE",
"id" : "otm-0f5804ee-7189-4c11-a8a4-a5fcf8049133",
"universityOrgIds" : [ "the-spectre" ],
"primaryCourseUnitRealisationId" : null,
"name" : {
"fi" : "StudyEvent 2025-04-15T12:12:02.951450722"
},
"locationIds" : [ "test-lokaatio-id-001" ],
"recursEvery" : "WEEKLY",
"startTime" : "2025-02-22T10:00:00",
"duration" : "PT2H",
"recursUntil" : "2025-05-03",
"exceptions" : [ "2025-04-26" ],
"cancellations" : [ ],
"overrides" : [ ],
"events" : null
} ]
}
Get study event
GET /api/study-events/v1/{studyEventId}
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
StudyEvent[StudyEvent] |
Samples
GET /api/study-events/v1/otm-51680c54-b447-4436-b138-284f67b06573 HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 3382
{
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:12:02.429513",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:12:02.429546",
"modificationOrdinal" : 67967
},
"documentState" : "ACTIVE",
"id" : "otm-51680c54-b447-4436-b138-284f67b06573",
"universityOrgIds" : [ "the-spectre" ],
"primaryCourseUnitRealisationId" : null,
"name" : {
"fi" : "StudyEvent 2025-04-15T12:12:02.429171215"
},
"locationIds" : [ ],
"recursEvery" : "WEEKLY",
"startTime" : "2025-02-22T10:00:00",
"duration" : "PT2H",
"recursUntil" : "2025-05-03",
"exceptions" : [ "2025-04-26" ],
"cancellations" : [ ],
"overrides" : [ ],
"events" : [ {
"start" : "2025-02-22T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-02-22T12:00:00"
}, {
"start" : "2025-03-01T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-03-01T12:00:00"
}, {
"start" : "2025-03-08T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-03-08T12:00:00"
}, {
"start" : "2025-03-15T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-03-15T12:00:00"
}, {
"start" : "2025-03-22T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-03-22T12:00:00"
}, {
"start" : "2025-03-29T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-03-29T12:00:00"
}, {
"start" : "2025-04-05T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-04-05T12:00:00"
}, {
"start" : "2025-04-12T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-04-12T12:00:00"
}, {
"start" : "2025-04-19T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-04-19T12:00:00"
}, {
"start" : "2025-04-26T10:00:00",
"duration" : "PT2H",
"excluded" : true,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-04-26T12:00:00"
}, {
"start" : "2025-05-03T10:00:00",
"duration" : "PT2H",
"excluded" : false,
"cancelled" : false,
"irregularLocationIds" : null,
"irregularTeacherIds" : null,
"notice" : null,
"end" : "2025-05-03T12:00:00"
} ]
}
Import study events
POST /api/study-events/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
StudyEvent required |
List (StudyEvent) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/study-events/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 1008
Host: localhost:8080
[ {
"metadata" : null,
"id" : "otm-696d40f3-8061-4dc9-9272-7b4452277ca0",
"universityOrgIds" : [ "the-spectre" ],
"primaryCourseUnitRealisationId" : null,
"name" : {
"fi" : "StudyEvent 2025-04-15T12:12:02.493729605"
},
"locationIds" : [ "test-lokaatio-id-001" ],
"recursEvery" : "WEEKLY",
"startTime" : "2025-02-22T10:00:00",
"duration" : "PT2H",
"recursUntil" : "2025-05-03",
"exceptions" : [ "2025-04-26" ],
"cancellations" : [ ],
"overrides" : [ ],
"events" : null
}, {
"metadata" : null,
"id" : "otm-c817e0fa-e317-40fa-a706-acde78a573f5",
"universityOrgIds" : [ "the-spectre" ],
"primaryCourseUnitRealisationId" : null,
"name" : {
"fi" : "StudyEvent 2025-04-15T12:12:02.493751636"
},
"locationIds" : [ "test-lokaatio-id-001" ],
"recursEvery" : "WEEKLY",
"startTime" : "2025-02-22T10:00:00",
"duration" : "PT2H",
"recursUntil" : "2025-05-03",
"exceptions" : [ "2025-04-26" ],
"cancellations" : [ ],
"overrides" : [ ],
"events" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Stream study events
GET /api/study-events/v1/stream
Entities can be exported as a stream in modification order, and the stream can be left open to listen for changes. Duplicates are possible if entities are modified several times.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return entities modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return entities modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
follow optional |
If true, keeps the connection open and streams updates as they occur. |
Boolean |
true |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[[object]] |
Export study year templates
GET /api/study-year-templates/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return study year templates modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return study year templates modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of study year templates to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultStudyYearTemplate[ExportResultStudyYearTemplate] |
Samples
GET /api/study-year-templates/v1/export?since=0&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 556
{
"greatestOrdinal" : 70062,
"hasMore" : false,
"entities" : [ {
"id" : "otm-ee2eddc0-661d-4cdb-a0f3-49fb7d50d31f",
"valid" : {
"startDate" : "2017-01-01",
"endDate" : "2020-01-01"
},
"org" : "the-spectre",
"studyTerms" : null,
"metadata" : {
"revision" : 1,
"createdBy" : "arska",
"createdOn" : "2025-04-15T12:12:05.853021",
"lastModifiedBy" : "arska",
"lastModifiedOn" : "2025-04-15T12:12:05.853063",
"modificationOrdinal" : 70062
},
"documentState" : "ACTIVE"
} ]
}
Export study years
GET /api/study-years/v1
Returns a list of study years matching the given request parameters: organisation id, start year and number of years. May return less than the requested amount of StudyYears if requested years are not known to the system (too far in the past).
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
organisationId required |
University organisation id of the university which uses and owns these templates. |
String |
otm-123456 |
firstYear required |
Return study years from this year onward until number of years has passed. |
Integer (int32) |
56 |
numberOfYears required |
How many years to calculate from the first year on. Should be a positive integer value. |
Integer (int32) |
56 |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
List[StudyYear] |
Import study year templates
POST /api/study-year-templates/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
StudyYearTemplate required |
List (StudyYearTemplate) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/study-year-templates/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 7970
Authorization: Basic aHkuaTp0ZXN0MTIz
Host: localhost:8080
[ {
"id" : "hy-1900",
"valid" : {
"startDate" : "1900-08-01",
"endDate" : "2008-08-01"
},
"org" : "hy-university-root-id",
"studyTerms" : [ {
"valid" : {
"startDate" : "1900-08-01",
"endDate" : "1901-01-01"
},
"name" : {
"en" : "autumn",
"fi" : "syksy",
"sv" : "hösten"
},
"studyPeriods" : [ {
"defaultValid" : {
"startDate" : "1900-08-01",
"endDate" : "1901-01-01"
},
"overrideValidities" : [ ],
"name" : {
"fi" : "S"
},
"size" : 1,
"visibleByDefault" : true,
"includedInTargetCreditsCalculation" : true
} ]
}, {
"valid" : {
"startDate" : "1901-01-01",
"endDate" : "1901-08-01"
},
"name" : {
"en" : "spring",
"fi" : "kevät",
"sv" : "våren"
},
"studyPeriods" : [ {
"defaultValid" : {
"startDate" : "1901-01-01",
"endDate" : "1901-08-01"
},
"overrideValidities" : [ ],
"name" : {
"fi" : "K"
},
"size" : 1,
"visibleByDefault" : true,
"includedInTargetCreditsCalculation" : true
} ]
} ],
"metadata" : null
}, {
"id" : "hy-2008",
"valid" : {
"startDate" : "2008-08-01",
"endDate" : "2030-08-01"
},
"org" : "hy-university-root-id",
"studyTerms" : [ {
"valid" : {
"startDate" : "2008-08-01",
"endDate" : "2009-01-01"
},
"name" : {
"en" : "autumn",
"fi" : "syksy",
"sv" : "hösten"
},
"studyPeriods" : [ {
"defaultValid" : {
"startDate" : "2008-08-01",
"endDate" : "2008-09-01"
},
"overrideValidities" : [ {
"startDate" : "2008-08-01",
"endDate" : "2008-09-01"
}, {
"startDate" : "2009-08-01",
"endDate" : "2009-09-07"
}, {
"startDate" : "2010-08-01",
"endDate" : "2010-09-06"
}, {
"startDate" : "2011-08-01",
"endDate" : "2011-09-05"
}, {
"startDate" : "2012-08-01",
"endDate" : "2012-09-03"
}, {
"startDate" : "2013-08-01",
"endDate" : "2013-09-02"
}, {
"startDate" : "2014-08-01",
"endDate" : "2014-09-01"
}, {
"startDate" : "2015-08-01",
"endDate" : "2015-08-31"
}, {
"startDate" : "2016-08-01",
"endDate" : "2016-09-05"
} ],
"name" : {
"en" : "summer",
"fi" : "kesä",
"sv" : "sommaren"
},
"size" : 1,
"visibleByDefault" : false,
"includedInTargetCreditsCalculation" : false
}, {
"defaultValid" : {
"startDate" : "2008-09-01",
"endDate" : "2008-11-01"
},
"overrideValidities" : [ {
"startDate" : "2008-09-01",
"endDate" : "2008-10-27"
}, {
"startDate" : "2009-09-07",
"endDate" : "2009-11-02"
}, {
"startDate" : "2010-09-06",
"endDate" : "2010-11-01"
}, {
"startDate" : "2011-09-05",
"endDate" : "2011-10-31"
}, {
"startDate" : "2012-09-03",
"endDate" : "2012-10-29"
}, {
"startDate" : "2013-09-02",
"endDate" : "2013-10-28"
}, {
"startDate" : "2014-09-01",
"endDate" : "2014-10-27"
}, {
"startDate" : "2015-08-31",
"endDate" : "2015-10-26"
}, {
"startDate" : "2016-09-05",
"endDate" : "2016-10-31"
} ],
"name" : {
"fi" : "I"
},
"size" : 2,
"visibleByDefault" : true,
"includedInTargetCreditsCalculation" : true
}, {
"defaultValid" : {
"startDate" : "2008-11-01",
"endDate" : "2009-01-01"
},
"overrideValidities" : [ {
"startDate" : "2008-10-27",
"endDate" : "2009-01-01"
}, {
"startDate" : "2009-11-02",
"endDate" : "2010-01-01"
}, {
"startDate" : "2010-11-01",
"endDate" : "2011-01-01"
}, {
"startDate" : "2011-10-31",
"endDate" : "2012-01-01"
}, {
"startDate" : "2012-10-29",
"endDate" : "2013-01-01"
}, {
"startDate" : "2013-10-28",
"endDate" : "2014-01-01"
}, {
"startDate" : "2014-10-27",
"endDate" : "2015-01-01"
}, {
"startDate" : "2015-10-26",
"endDate" : "2016-01-01"
}, {
"startDate" : "2016-10-31",
"endDate" : "2017-01-01"
} ],
"name" : {
"fi" : "II"
},
"size" : 2,
"visibleByDefault" : true,
"includedInTargetCreditsCalculation" : true
} ]
}, {
"valid" : {
"startDate" : "2009-01-01",
"endDate" : "2009-08-01"
},
"name" : {
"en" : "spring",
"fi" : "kevät",
"sv" : "våren"
},
"studyPeriods" : [ {
"defaultValid" : {
"startDate" : "2009-01-01",
"endDate" : "2009-03-01"
},
"overrideValidities" : [ {
"startDate" : "2009-01-01",
"endDate" : "2009-03-09"
}, {
"startDate" : "2010-01-01",
"endDate" : "2010-03-15"
}, {
"startDate" : "2011-01-01",
"endDate" : "2011-03-14"
}, {
"startDate" : "2012-01-01",
"endDate" : "2012-03-12"
}, {
"startDate" : "2013-01-01",
"endDate" : "2013-03-11"
}, {
"startDate" : "2014-01-01",
"endDate" : "2014-03-10"
}, {
"startDate" : "2015-01-01",
"endDate" : "2015-03-09"
}, {
"startDate" : "2016-01-01",
"endDate" : "2016-03-14"
}, {
"startDate" : "2017-01-01",
"endDate" : "2017-03-13"
} ],
"name" : {
"fi" : "III"
},
"size" : 2,
"visibleByDefault" : true,
"includedInTargetCreditsCalculation" : true
}, {
"defaultValid" : {
"startDate" : "2009-03-01",
"endDate" : "2009-05-15"
},
"overrideValidities" : [ {
"startDate" : "2009-03-09",
"endDate" : "2009-05-18"
}, {
"startDate" : "2010-03-15",
"endDate" : "2010-05-24"
}, {
"startDate" : "2011-03-14",
"endDate" : "2011-05-23"
}, {
"startDate" : "2012-03-12",
"endDate" : "2012-05-21"
}, {
"startDate" : "2013-03-11",
"endDate" : "2013-05-20"
}, {
"startDate" : "2014-03-10",
"endDate" : "2014-05-19"
}, {
"startDate" : "2015-03-09",
"endDate" : "2015-05-11"
}, {
"startDate" : "2016-03-14",
"endDate" : "2016-05-16"
}, {
"startDate" : "2017-03-13",
"endDate" : "2017-05-15"
} ],
"name" : {
"fi" : "IV"
},
"size" : 2,
"visibleByDefault" : true,
"includedInTargetCreditsCalculation" : true
}, {
"defaultValid" : {
"startDate" : "2009-05-15",
"endDate" : "2009-08-01"
},
"overrideValidities" : [ {
"startDate" : "2009-05-18",
"endDate" : "2009-08-01"
}, {
"startDate" : "2010-05-24",
"endDate" : "2010-08-01"
}, {
"startDate" : "2011-05-23",
"endDate" : "2011-08-01"
}, {
"startDate" : "2012-05-21",
"endDate" : "2012-08-01"
}, {
"startDate" : "2013-05-20",
"endDate" : "2013-08-01"
}, {
"startDate" : "2014-05-19",
"endDate" : "2014-08-01"
}, {
"startDate" : "2015-05-11",
"endDate" : "2015-08-01"
}, {
"startDate" : "2016-05-16",
"endDate" : "2016-08-01"
}, {
"startDate" : "2017-05-15",
"endDate" : "2017-08-01"
} ],
"name" : {
"en" : "summer",
"fi" : "kesä",
"sv" : "sommaren"
},
"size" : 1,
"visibleByDefault" : false,
"includedInTargetCreditsCalculation" : false
} ]
} ],
"metadata" : null
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export term registration requirements
GET /api/term-registration-requirements/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point. With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be consecutive. With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
sinceOrdinal optional |
Long (int64) |
789 |
|
sinceTime optional |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
|
limit required |
The maximum amount of results to return |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultTermRegistrationRequirements[ExportResultTermRegistrationRequirements] |
Samples
GET /api/term-registration-requirements/v1/export?sinceOrdinal=0&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 585
{
"greatestOrdinal" : 70152,
"hasMore" : false,
"entities" : [ {
"requirements" : [ {
"educationTypeUrn" : "urn:code:education-type:test",
"studentUnionMembershipFeeRequirement" : "POSSIBLE"
} ],
"documentState" : "ACTIVE",
"metadata" : {
"revision" : 1,
"createdBy" : "spectre.e",
"createdOn" : "2025-04-15T12:12:06.265631",
"lastModifiedBy" : "spectre.e",
"lastModifiedOn" : "2025-04-15T12:12:06.265679",
"modificationOrdinal" : 70152
},
"universityOrgId" : "the-spectre",
"id" : "the-spectre"
} ]
}
Import term registration requirements
POST /api/term-registration-requirements/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
TermRegistrationRequirements required |
List (TermRegistrationRequirements) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
Samples
POST /api/term-registration-requirements/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 261
Host: localhost:8080
[ {
"requirements" : [ {
"educationTypeUrn" : "urn:code:education-type:test",
"studentUnionMembershipFeeRequirement" : "POSSIBLE"
} ],
"documentState" : "ACTIVE",
"metadata" : null,
"universityOrgId" : "the-spectre",
"id" : "the-spectre"
} ]
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Export timing templates
GET /api/timing-templates/v1/export
Entities can be exported in modification order based on one of two separate ways of specifying the starting point.With the 'since' parameter (recommended): an integer key (modification ordinal), which is different for every modification of the entity table. The ordinals are guaranteed to increase for each modification, but not guaranteed to be concecutive.With the 'sinceTime' parameter: an ISO-8601 timestamp. SinceTime is only supported for the case when the modification ordinal is not known by the exporter. In actual practice, if efficient export of all data is desired, the greatest modification ordinal from the previous export must be remembered and used as the since parameter for the next export. Both the since and sinceTime parameters are exclusive: if in one export you get the modification ordinals 3, 4 and 5, the next query should be export?since=5 and then you get the ordinals 6, 7, 8, etc.
Parameters
Query Parameters
Name | Description | Schema | Example |
---|---|---|---|
since optional |
Return TimingTemplate modified after (exclusive comparison) this modification ordinal (increasing value within Kori). Alternate parameter with sinceTime. This is the recommended option. |
Long (int64) |
789 |
sinceTime optional |
Return TimingTemplates modified after (exclusive comparison) this ISO-8601 time. Alternate parameter with since. This is the not recommended but sometimes necessary option. |
Date (date-time) |
2013-10-20T19:20:30+01:00 |
limit required |
Maximum number of TimingTemplates to return. May return less, either because there are not enough change items, or because of internal limits. If limit is higher than 10 000, returns only 10 000 items. |
Integer (int32) |
56 |
universityFilter optional |
Filter entities based on universityOrgIds |
String |
universityFilter_example |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
ExportResultTimingTemplate[ExportResultTimingTemplate] |
Import timing templates
POST /api/timing-templates/v1/import
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
TimingTemplate required |
List (TimingTemplate) |
Save university settings
POST /api/university-settings/v1
Because of the dynamic nature of the UniversitySettings object, please do the update by fetching and modifying the current settings
Parameters
Body Parameter
Name | Description | Schema | Example |
---|---|---|---|
UniversitySettings required |
UniversitySettings (UniversitySettings) |
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
UniversitySettings[UniversitySettings] |
Samples
POST /api/university-settings/v1 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1159
Host: localhost:8080
{
"universityOrgId" : "the-spectre",
"messageSenderName" : null,
"openUniversitySettings" : null,
"defaultMunicipalityUrn" : "urn:code:municipality:405",
"universityType" : "UNIVERSITY",
"moduleToggles" : null,
"featureToggles" : null,
"feedbackLink" : "{ \"title\": { \"fi\": \"Anna palautetta\", \"en\": \"Give feedback\", \"sv\": \"Ge feedback\" }, \"url\": \"https://elomake.helsinki.fi/lomakkeet/50752/lomake.html\"}",
"universityNaviContentUrl" : "{ \"fi\": \"/student/universityNaviSample.html\", \"en\": \"/student/universityNaviSample.html\", \"sv\": \"/student/universityNaviSample.html\"}",
"registryDescriptionUrl" : "http://www.example.com",
"helpUrls" : "{ \"default\": \"https://www.example.com\", \"student\": \"https://www.example.com\", \"staff\": \"https://www.example.com\", \"teacher\": \"https://www.example.com\", \"tutor\": \"https://www.example.com\", \"admin\": \"https://www.example.com\"}",
"helpDeskLink" : "{ \"title\": { \"fi\": \"Helpdesk\", \"en\": \"Helpdesk\", \"sv\": \"Helpdesk\" }, \"url\": \"https://www.example.com\"}"
}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1159
{
"universityOrgId" : "the-spectre",
"messageSenderName" : null,
"openUniversitySettings" : null,
"defaultMunicipalityUrn" : "urn:code:municipality:405",
"universityType" : "UNIVERSITY",
"moduleToggles" : null,
"featureToggles" : null,
"feedbackLink" : "{ \"title\": { \"fi\": \"Anna palautetta\", \"en\": \"Give feedback\", \"sv\": \"Ge feedback\" }, \"url\": \"https://elomake.helsinki.fi/lomakkeet/50752/lomake.html\"}",
"universityNaviContentUrl" : "{ \"fi\": \"/student/universityNaviSample.html\", \"en\": \"/student/universityNaviSample.html\", \"sv\": \"/student/universityNaviSample.html\"}",
"registryDescriptionUrl" : "http://www.example.com",
"helpUrls" : "{ \"default\": \"https://www.example.com\", \"student\": \"https://www.example.com\", \"staff\": \"https://www.example.com\", \"teacher\": \"https://www.example.com\", \"tutor\": \"https://www.example.com\", \"admin\": \"https://www.example.com\"}",
"helpDeskLink" : "{ \"title\": { \"fi\": \"Helpdesk\", \"en\": \"Helpdesk\", \"sv\": \"Helpdesk\" }, \"url\": \"https://www.example.com\"}"
}
Get university settings
GET /api/university-settings/v1/{universityOrgId}
Fetch by university organisation id
Responses
Code | Message | Datatype |
---|---|---|
403 |
Authorization failed, access forbidden |
|
400 |
Bad request |
|
401 |
Authentication required |
|
422 |
Validation failed |
|
200 |
OK |
UniversitySettings[UniversitySettings] |
Samples
GET /api/university-settings/v1/the-spectre HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1159
{
"universityOrgId" : "the-spectre",
"messageSenderName" : null,
"openUniversitySettings" : null,
"defaultMunicipalityUrn" : "urn:code:municipality:405",
"universityType" : "UNIVERSITY",
"moduleToggles" : null,
"featureToggles" : null,
"feedbackLink" : "{ \"title\": { \"fi\": \"Anna palautetta\", \"en\": \"Give feedback\", \"sv\": \"Ge feedback\" }, \"url\": \"https://elomake.helsinki.fi/lomakkeet/50752/lomake.html\"}",
"universityNaviContentUrl" : "{ \"fi\": \"/student/universityNaviSample.html\", \"en\": \"/student/universityNaviSample.html\", \"sv\": \"/student/universityNaviSample.html\"}",
"registryDescriptionUrl" : "http://www.example.com",
"helpUrls" : "{ \"default\": \"https://www.example.com\", \"student\": \"https://www.example.com\", \"staff\": \"https://www.example.com\", \"teacher\": \"https://www.example.com\", \"tutor\": \"https://www.example.com\", \"admin\": \"https://www.example.com\"}",
"helpDeskLink" : "{ \"title\": { \"fi\": \"Helpdesk\", \"en\": \"Helpdesk\", \"sv\": \"Helpdesk\" }, \"url\": \"https://www.example.com\"}"
}
Models
AbstractPersonRule
Abstract supertype of person rules used as either requirement rules, that must all evaluate to true for a person's enrolment to be accepted, or ordering rules that are used to determine order of precedence for enrolments, in which they are selected and allocated into study sub groups.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
Address
Represents addresses for physical locations
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
countryUrn required |
Country, as a reference to code book country. |
UrnCode(namespace = urn:code:country, onlySyntax = false) |
urn:code:country:* |
|
isUserEditable optional |
Set to false to prevent address from being edited in the user interface. |
null |
||
type required |
Address type, either GenericAddress or FinnishAttainment |
null |
AdmissionTarget
Admission target indicates what studies a new student is admitted to.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
code required |
Code that identifies this admission target in OILI documents (Hakukohdekoodi). Persisted value is never null. |
NotNull |
null |
|
description optional |
Description of the admission target |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
studyRightConfirmationType optional |
Indicates whether study right can be confirmed automatically or does it require manual confirmation |
[String] enum AUTOMATIC, MANUAL, |
null |
AnyCourseUnitRule
Accepts any course rule selection. TODO: in the future will be extended with tag-based limitations
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
AnyModuleRule
Accepts any module selection. TODO: will be extended to support tag-based limitation
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
AssessmentItem
Represents an abstract, re-occurring exam, lecture course, etc. that the student can pass and get graded for. CourseUnitRealisations are concrete implementations of these.
UniversityOrganisations(organisationsProperty = organisationIds, universitiesProperty = universityOrgIds)
ValidAssessmentItemSnapshot(sameValueProperties = [Ljava.lang.String;@427994bc)
ValidCooperationNetworkExternalIdReference
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
credits required |
Range of credits that can be attained from this |
NotNull [Active] |
null |
|
name required |
Typically matches the assessment item type name. |
NotNull [Draft, Active, Deleted, Legacy] |
null |
|
nameSpecifier optional |
Typically matches the course unit name, not shown in UI if the context is clear |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
gradeScaleId required |
Id of grade scale to be used |
NotNull [Draft, Active, Deleted, Legacy] |
otm-123456 |
|
possibleAttainmentLanguages optional |
Defines the attainment languages possible for attainments of this assessment item |
UrnCode(namespace = urn:code:language, onlySyntax = false) |
Set of [string] |
null |
assessmentItemType required |
Type of assessment (exam, lecture course, etc) |
NotNull [Draft, Active, Deleted, Legacy] |
urn:code:assessment-item-type:* |
|
contentDescription optional |
A free-form text describing the assessment item. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
studyFormat optional |
What kind of work items study consists of. Optionally also how time is divided between the parts. This is meant to be clarified at the course unit realisation level. In the future this field should be replaced with something structured in order to manage the study calendar. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
grading optional |
Eg. final exam 70%, attendance 30%. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
learningMaterial optional |
Freeform version of learning material used, if structured "literature" cannot be used |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
literature optional |
Structured version of learning material used |
Size(max = 200, min = 0) |
null |
|
studyField optional |
"koulutusala" |
UrnCode(namespace = urn:code:study-field, onlySyntax = false) |
urn:code:study-field:* |
|
subject optional |
"oppiaine/koulutusohjelma" |
UrnCode(namespace = urn:code:subject, onlySyntax = false) |
urn:code:subject:* |
|
snapshotDateTime optional |
Start of validity for the snapshot. End of validity is defined by the snapshotDateTime of a possible later snapshot. Defaults to null i.e. valid from the beginning of time |
[Date] date-time |
null |
|
responsibilityInfos optional |
Persons and roles responsible for this in various ways and fractions |
Size(max = 200, min = 0) |
null |
|
organisations required |
Organisations responsible for this in various ways and fractions |
NotEmpty |
Set of OrganisationRoleShare |
null |
primaryCourseUnitGroupId required |
GroupId of Primary CourseUnit |
NotNull |
otm-123456 |
|
cooperationNetworkDetails optional |
Describes details of RIPA Co-operation networks this entity might be part of |
null |
||
rdiCreditsEnabled required |
Defines whether RDI credits are enabled for this assessment item |
NotNull |
[String] enum ENABLED, DISABLED, |
null |
AttainedCreditRangeRule
Evaluates to true if student has attained credits in plan for the degree programme with selected type and education selected in the rule
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
||
educationIds required |
Optional restriction for educations that are taken into account when calculating credits. If empty, then active study rights for all educations are taken into account. |
Set of [string] |
null |
|
degreeProgramTypeUrn optional |
Supported values available here |
urn:code:degree-program-type:* |
||
creditRange required |
null |
AttainedCreditRangeRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationIds optional |
Optional restriction for educations that are taken into account when calculating credits. If empty, then active study rights for all educations are taken into account. |
Set of [string] |
null |
|
degreeProgramTypeUrn optional |
Supported values available here |
urn:code:degree-program-type:* |
||
creditRange optional |
null |
Building
A building in which Locations of StudyEvents can be
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
name required |
Name |
NotNull |
null |
|
address required |
NotNull |
null |
BuildingAddress
NotNull
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
countryUrn required |
Country, as a reference to code book country. |
UrnCode(namespace = urn:code:country, onlySyntax = false) |
urn:code:country:* |
|
isUserEditable optional |
Set to false to prevent address from being edited in the user interface. |
null |
||
type required |
Address type, either GenericAddress or FinnishAttainment |
null |
||
streetAddress optional |
Street address part of the address |
null |
||
postalCode optional |
Postal code of the address |
null |
||
city optional |
City of the address |
null |
||
address optional |
The whole address excluding the country |
null |
Code
Represents single code within codebook
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
name required |
Localized name of the code value |
NotNull |
null |
|
shortName optional |
Localized short name of the code value, typically one character long |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
urn required |
Uniform Resource Name for the code, used when referring to this code |
NotNull |
null |
|
parentUrn optional |
In case of a hierarchical code book, the uniform Resource Name for the parent code, used when referring to this code. Deprecated. Use hierarchical URN values. |
UrnCode(namespace = , onlySyntax = true) |
null |
|
isLeafNode optional |
True, if the code is a leaf node in a hierarchical code book, or a code in a non hierarchical code book. Deprecated. Use hierarchical URN values. |
null |
||
universitySpecifier optional |
In case of a codebook has multiple urn code-names with same value, this will identify urns to be uni specific e.g: 'HY, 'JY''. Atm used when selecting code in 'codeSelectEditor.component' |
[String] enum HY, JYU, LUT, TUNI, AALTO, ARC, SHH, |
null |
|
deprecated optional |
If the code value has been deprecated this is set to true. Should be null otherwise. Deprecated values can exist in code selections, but they can not be selected again. |
null |
||
exceptionalVirtaValue optional |
Exceptional code value for VIRTA reporting |
null |
||
type required |
null |
CodeBook
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
urn required |
Uniform resource name for this code book. Persisted value is never null. |
NotNull |
null |
|
codeBookType optional |
Codebook type. Persisted value is never null. |
[String] enum COMMON, CUSTOM, |
null |
|
name required |
Localized name for the code book |
NotNull |
null |
|
classificationScopeUrns optional |
Scopes where this classification should be used |
Size(max = 20, min = 0) |
Set of [string] |
null |
universityOrgIds required |
Id of the university that owns this codebook. |
Set of [string] |
null |
|
codeVisibility optional |
Determines whether codes are always visible or can be hidden by admins |
[String] enum ALWAYS_VISIBLE, HIDING_CODES_ALLOWED, |
null |
|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED. Persisted value is never null. |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
codes required |
Codes included in this codebook. |
List of [CodeBook_codes_inner] |
null |
CodeBookCodesInner
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
name required |
Localized name of the code value |
NotNull |
null |
|
shortName optional |
Localized short name of the code value, typically one character long |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
urn required |
Uniform Resource Name for the code, used when referring to this code |
NotNull |
null |
|
parentUrn optional |
In case of a hierarchical code book, the uniform Resource Name for the parent code, used when referring to this code. Deprecated. Use hierarchical URN values. |
UrnCode(namespace = , onlySyntax = true) |
null |
|
isLeafNode optional |
True, if the code is a leaf node in a hierarchical code book, or a code in a non hierarchical code book. Deprecated. Use hierarchical URN values. |
null |
||
universitySpecifier optional |
In case of a codebook has multiple urn code-names with same value, this will identify urns to be uni specific e.g: 'HY, 'JY''. Atm used when selecting code in 'codeSelectEditor.component' |
[String] enum HY, JYU, LUT, TUNI, AALTO, ARC, SHH, |
null |
|
deprecated optional |
If the code value has been deprecated this is set to true. Should be null otherwise. Deprecated values can exist in code selections, but they can not be selected again. |
null |
||
exceptionalVirtaValue optional |
Exceptional code value for VIRTA reporting |
null |
||
type required |
null |
|||
credits optional |
The credits associated with this competency code. |
[Integer] int32 |
null |
|
numeric optional |
The ISO 3166 numeric code associated with this country code. |
null |
||
alpha2 optional |
The ISO 3166 alpha2 code |
null |
CodeBookSettings
Represents settings set by a university for code books
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
codeBookSpecificSettings optional |
Settings for individual code books |
List of CodeBookSpecificSettings |
null |
CodeBookSpecificSettings
Represents settings set by a university for a single code book
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
urn optional |
Uniform resource name for this code book |
UrnCode(namespace = , onlySyntax = true) |
null |
|
hideUnselectedCodes optional |
Boolean for storing the value of the checkbox for hiding codes in the UI |
null |
CodeUniversityUsage
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
codesInUse required |
Codes used in this university |
UrnCode(namespace = , onlySyntax = true) |
Set of [string] |
null |
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED. Persisted value is never null. |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
universityOrgId required |
Organisation id. Persisted value is never null. |
OrganisationId |
otm-123456 |
|
codeBookSettings optional |
null |
|||
id optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
CollaborationInstitution
Institution an organisation collaborates with, especially intended for open university activity.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationalInstitutionUrn required |
Code for a national institution. Also contains special codes for 'foreign higher education institution' and 'other foreign educational institution'. |
UrnCode(namespace = urn:code:educational-institution, onlySyntax = false) |
urn:code:educational-institution:* |
|
internationalInstitutionUrn optional |
Foreign institution code when one of the special 'foreign institution' codes is used in educationalInstitution. |
UrnCode(namespace = urn:code:international-institution, onlySyntax = false) |
urn:code:international-institution:* |
CompetencyCode
Represents single competency code within codebook
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
name required |
Localized name of the code value |
NotNull |
null |
|
shortName optional |
Localized short name of the code value, typically one character long |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
urn required |
Uniform Resource Name for the code, used when referring to this code |
NotNull |
null |
|
parentUrn optional |
In case of a hierarchical code book, the uniform Resource Name for the parent code, used when referring to this code. Deprecated. Use hierarchical URN values. |
UrnCode(namespace = , onlySyntax = true) |
null |
|
isLeafNode optional |
True, if the code is a leaf node in a hierarchical code book, or a code in a non hierarchical code book. Deprecated. Use hierarchical URN values. |
null |
||
universitySpecifier optional |
In case of a codebook has multiple urn code-names with same value, this will identify urns to be uni specific e.g: 'HY, 'JY''. Atm used when selecting code in 'codeSelectEditor.component' |
[String] enum HY, JYU, LUT, TUNI, AALTO, ARC, SHH, |
null |
|
deprecated optional |
If the code value has been deprecated this is set to true. Should be null otherwise. Deprecated values can exist in code selections, but they can not be selected again. |
null |
||
exceptionalVirtaValue optional |
Exceptional code value for VIRTA reporting |
null |
||
type required |
null |
|||
credits optional |
The credits associated with this competency code. |
[Integer] int32 |
null |
CompetencyCodeAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
credits optional |
The credits associated with this competency code. |
[Integer] int32 |
null |
CompletionMethod
A way to attain a course unit, based on attainments of assessment items
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Id, unique only locally (within a single course unit) |
NotNull |
otm-123456 |
|
description optional |
Free text description |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
studyType required |
Type of studies. Default value is DEGREE_STUDIES |
NotNull |
[String] enum DEGREE_STUDIES, OPEN_UNIVERSITY_STUDIES, SEPARATE_STUDIES, |
null |
assessmentItemOptionalityDescription optional |
Description for choosing optional assessment items |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
automaticEvaluation optional |
Is the system allowed to automatically evaluate the course unit based on the attainments of the assessment items when the criteria defined by the 'require' field are met. Defaults to false, meaning manual evaluation is required. |
null |
||
require optional |
A range indicating how many assessment item attainments constitute a valid course unit attainment via this completion method. |
null |
||
typeOfRequire required |
Assessment items selection requirement for student. Default: ALL_SELECTED_REQUIRED |
NotNull [Active] |
[String] enum OPTIONAL_WITH_REQUIRE_RANGE, OPTIONAL_WITH_DESCRIPTION, ALL_SELECTED_REQUIRED, |
null |
assessmentItemIds required |
The set of ids of assessment items whose attainments can be used to constitute a course unit attainment via this completion method |
Size(max = 200, min = 0) |
List of [string] |
null |
repeats optional |
List of completion method repeat information, each of which has a validity period (of study years) and a list of study period locators. |
ContainsNoNulls |
List of CompletionMethodRepeat |
null |
evaluationCriteria optional |
Evaluation criteria |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
prerequisites optional |
Informal prerequisites for participating the teaching included in the completion method |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
CompletionMethodRepeat
Description of one (of possibly many simultaneously existing) repeat mechanisms for a completion method
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
studyYearRange required |
Study year range in which this repeat mechanism is valid. Study year is indicated as integer which is the calendar year of the start of the study year. Start is inclusive and end is exclusive. |
NotNull |
null |
|
yearInterval optional |
Optional year repeat information, for the case where the possibility does not repeat every year.If given, number of years between repeats. The first year in which it occurs is studyYearRange.start. |
Min(value = 1) |
[Integer] int32 |
null |
repeatPossibility required |
A single repeat possibility, which is a list of study period templates in which the repeat occurs |
StudyPeriodTemplateId |
List of [string] |
null |
CompositeRule
Contains one or more child rules, out of which a specified (range of) number must match
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
|||
rules required |
Child rules. For legacy and draft, empty list is alowed |
List of Rule |
null |
|
require optional |
null |
|||
description optional |
null |
|||
allMandatory optional |
null |
CompositeRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
rules optional |
Child rules. For legacy and draft, empty list is alowed |
List of Rule |
null |
|
require optional |
null |
|||
description optional |
null |
|||
allMandatory optional |
null |
CompulsoryFormalPrerequisitesRule
Evaluates to true if student has valid attainments for compulsory formal prerequisites for the course unit selected in the enrolment
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
ContentFilter
Content filters for module
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
studyRightSelectionType optional |
Indicates whether related module contains only modules with specific study right selection type |
[String] enum urn:code:study-right-selection-type:minor-study-right, urn:code:study-right-selection-type:open-university-course-unit, urn:code:study-right-selection-type:separate-studies-module, urn:code:study-right-selection-type:separate-studies-course-unit, urn:code:study-right-selection-type:none, |
null |
CooperationNetwork
RIPA co-operation network for universities. This data is fetched from external RIPA system and should not be edited in SISU.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
networkId optional |
External (RIPA) id of the co-operation network. Persisted value is never null. |
null |
||
name optional |
Name of the co-operation network |
null |
||
abbreviation optional |
Abbreviation of the co-operation network |
null |
||
validityPeriod optional |
Validity of co-operation network |
null |
||
organisations optional |
Describes organisations that are part of this co-operation network |
null |
CooperationNetworkDetails
Co-operation network details for entities that are created or targeted through RIPA to cooperation network universities
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
direction required |
Co-operation network direction. Is this INBOUND or OUTBOUND from SISU perspective. INBOUND entities can not be edited in SISU. |
NotNull |
[String] enum INBOUND, OUTBOUND, NONE, |
null |
networks optional |
Co-operation networks this entity is part of |
Set of CooperationNetworkShare |
null |
|
externalId required |
External (RIPA) identifier of the entity. |
NotNull |
null |
|
outboundStatus optional |
Status on processing an OUTBOUND entity to other university |
[String] enum NOT_VALID, FORWARDED, RECORDED, REJECTED, |
null |
|
outboundStatusTime optional |
Time OUTBOUND status changed |
[Date] date-time |
null |
|
outboundStatusMessage optional |
Status message further describing processing of OUTBOUND entity to other university |
null |
CooperationNetworkIdentifiers
Co-operation network identifiers for organisations that are related to RIPA
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
direction required |
Co-operation network direction. Is this INBOUND or OUTBOUND from SISU perspective. INBOUND entities can not be edited in SISU. |
NotNull |
[String] enum INBOUND, OUTBOUND, NONE, |
null |
organisationTkCode required |
External (RIPA) reference to organisation TK code. This should always match the last part of educational institution urn but that is not always true, so TK code is also stored here |
NotNull |
null |
CooperationNetworkOrganisation
Describes organisation of a RIPA co-operation network. This data is fetched from external RIPA system and should not be edited in SISU.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
organisationTkCode required |
External (RIPA) reference to organisation TK code. |
NotNull |
null |
|
roleUrn required |
Describes role of the organisation in network. Either coordinating or responsible. |
NotNull |
urn:code:cooperation-network-organisation-role:* |
|
validityPeriod optional |
Organisation validity in network. Always valid if value not given. Persisted value is never null. |
null |
CooperationNetworkSettings
RIPA co-operation network settings for a university.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Organisation id. Persisted value is never null. |
OrganisationId |
otm-123456 |
|
cooperationNetworkId required |
Cooperation Network Id. Persisted value is never null. |
CooperationNetworkId |
otm-123456 |
|
homeUniversitySettings optional |
Settings for home university |
null |
||
hostUniversitySettings optional |
Settings for host university |
null |
CooperationNetworkShare
References cooperation network with validity period. Studies, course units or course unit realisations may be shared through a cooperation network with universities belonging to the network
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
cooperationNetworkId optional |
Id of the cooperation network |
otm-123456 |
||
validityPeriod optional |
Validity period; enrolment is only valid when share is valid |
null |
CountryCode
Represents a single country code within a codebook.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
name required |
Localized name of the code value |
NotNull |
null |
|
shortName optional |
Localized short name of the code value, typically one character long |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
urn required |
Uniform Resource Name for the code, used when referring to this code |
NotNull |
null |
|
parentUrn optional |
In case of a hierarchical code book, the uniform Resource Name for the parent code, used when referring to this code. Deprecated. Use hierarchical URN values. |
UrnCode(namespace = , onlySyntax = true) |
null |
|
isLeafNode optional |
True, if the code is a leaf node in a hierarchical code book, or a code in a non hierarchical code book. Deprecated. Use hierarchical URN values. |
null |
||
universitySpecifier optional |
In case of a codebook has multiple urn code-names with same value, this will identify urns to be uni specific e.g: 'HY, 'JY''. Atm used when selecting code in 'codeSelectEditor.component' |
[String] enum HY, JYU, LUT, TUNI, AALTO, ARC, SHH, |
null |
|
deprecated optional |
If the code value has been deprecated this is set to true. Should be null otherwise. Deprecated values can exist in code selections, but they can not be selected again. |
null |
||
exceptionalVirtaValue optional |
Exceptional code value for VIRTA reporting |
null |
||
type required |
null |
|||
numeric optional |
The ISO 3166 numeric code associated with this country code. |
null |
||
alpha2 optional |
The ISO 3166 alpha2 code |
null |
CountryCodeAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
numeric optional |
The ISO 3166 numeric code associated with this country code. |
null |
||
alpha2 optional |
The ISO 3166 alpha2 code |
null |
CourseUnit
A course unit (opintojakso) is the lowest level learning target in a degree structure. An example would be 'Introduction to Biology I'. It can possibly be completed in several different ways. See completion method.
UniversityOrganisations(organisationsProperty = organisationIds, universitiesProperty = universityOrgIds)
ValidEntityWithCurriculumPeriodsValidity [Active]
ValidCourseUnitVersion [Active, Draft]
ValidCourseUnitCode
ValidApprovalState
ValidCourseUnitAssessmentItems [Active]
ValidCourseUnitCredits [Active]
ValidEntityWithCurriculumPeriods
ValidCourseUnitSubstitutions
ValidCooperationNetworkExternalIdReference
ValidCourseUnitWithOpenUniversityCompletionMethod [Active, Draft]
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this course unit belongs to. Different versions of the same course unit belongto the same group and have a different id. Persisted value is never null. |
NotNull |
otm-123456 |
|
approvalState optional |
Approval state. Persisted value is never null. |
NotNull |
[String] enum urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, urn:code:approval-state-type:not-approved, urn:code:approval-state-type:approved, |
null |
credits required |
Range of possible credits attainable |
NotNull [Active, External] |
null |
|
completionMethods optional |
The possible completion methods of this course unit. (missing if under construction) |
ContainsNoNulls |
List of CompletionMethod |
null |
assessmentItemOrder optional |
Order for completion methods assessment items. |
AssessmentItemId |
Set of [string] |
null |
substitutions optional |
Alternative ways of reaching the goals of this course unit. |
ContainsNoNulls |
Set of [set] |
null |
name required |
Name |
NotNull |
null |
|
code required |
This code is shown to the user in the user interface. Code is shown in the transcript. Course units with same codes must have the same group id. |
NotEmpty [Active] |
null |
|
abbreviation optional |
This is shown to the user in the user interface, but is not used internally as an identifier. |
Size(max = 100, min = 1) |
null |
|
validityPeriod required |
Used for filtering search results. Course units can not be attained out of their validity period. Persisted value is never null. |
NotNull [Active] |
null |
|
gradeScaleId required |
Id of the grade scale used for grading the course unit. |
NotNull [Active] |
otm-123456 |
|
tweetText optional |
A free-form short text advertising the course unit, which should give the student an idea on what sets this course apart from other similar courses. This text should not be longer than a tweet, i.e. 160 characters. |
LocalizedStringSize(maxSize = 160, minSize = 1) |
null |
|
outcomes optional |
A free-form text, the learning outcomes from the completion of this course unit. |
LocalizedStringSize(maxSize = 65000, minSize = 1) |
null |
|
prerequisites optional |
A free-form text, the practical pre-requisite knowledge needed to participate on this course unit. |
LocalizedStringSize(maxSize = 65000, minSize = 1) |
null |
|
content optional |
A free-form text describing the content of the course |
LocalizedStringSize(maxSize = 65000, minSize = 1) |
null |
|
additional optional |
Additional information about this course unit. |
LocalizedStringSize(maxSize = 65000, minSize = 1) |
null |
|
learningMaterial optional |
Freeform version of learning material used, if structured "literature" cannot be used |
LocalizedStringSize(maxSize = 65000, minSize = 1) |
null |
|
literature optional |
Structured version of learning material used |
ContainsNoNulls |
null |
|
searchTags optional |
Tags for use in user searches |
ContainsNoNulls |
Set of [string] |
null |
categoryTags optional |
Structural tags selected from a configurable set |
UrnCode(namespace = urn:code:category-tag, onlySyntax = false) |
Set of [string] |
null |
recommendedFormalPrerequisites optional |
List of Prerequisite groups which are recommended formal prerequisites. |
ContainsNoNulls |
List of PrerequisiteGroup |
null |
compulsoryFormalPrerequisites optional |
List of Prerequisite groups which are compulsory formal prerequisites. |
ContainsNoNulls |
List of PrerequisiteGroup |
null |
studyFields required |
Study field is for classification. There may be several. "koulutusala" |
NotEmpty [Active] |
Set of [string] |
null |
studyLevel required |
Level of study "opintojakson taso" |
UrnCode(namespace = urn:code:study-level, onlySyntax = false) |
urn:code:study-level:* |
|
courseUnitType required |
Type of course unit "opinnon tyyppi" |
UrnCode(namespace = urn:code:course-unit-type, onlySyntax = false) |
urn:code:course-unit-type:* |
|
subject optional |
"oppiaine/koulutusohjelma" |
UrnCode(namespace = urn:code:subject, onlySyntax = false) |
urn:code:subject:* |
|
cefrLevel optional |
CEFR level of language studies |
UrnCode(namespace = urn:code:cefr-level, onlySyntax = false) |
urn:code:cefr-level:* |
|
responsibilityInfos required |
Persons and roles responsible for this in various ways and fractions |
null |
||
organisations required |
Organisations responsible for this in various ways and fractions. Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
NotEmpty [Active] |
Set of OrganisationRoleShare |
null |
possibleAttainmentLanguages required |
Defines the attainment languages possible for attainments of this course unit |
UrnCode(namespace = urn:code:language, onlySyntax = false) |
Set of [string] |
null |
equivalentCoursesInfo optional |
Verbal description of equivalent course units, in case substituting course units cannot be formally defined. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
curriculumPeriodIds required |
Curriculum periods to which this course unit belongs. |
NotEmpty [Legacy, Active, Draft, Deleted] |
List of [string] |
null |
customCodeUrns optional |
Values for university-specific custom code books |
Size(max = 200, min = 0) |
Map of [array] |
null |
inclusionApplicationInstruction optional |
A free-form guide text shown to students on prior learning application page." |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
cooperationNetworkDetails optional |
Describes details of RIPA Co-operation networks this entity might be part of |
null |
||
s2r2Classification optional |
Defines if classification is either S2 (Finnish as foreign language) or R2 (Swedish as foreign language) |
UrnCode(namespace = urn:code:s2r2-classification, onlySyntax = false) |
urn:code:s2r2-classification:* |
|
rdiCreditsEnabled required |
Defines whether RDI credits are enabled for this course unit. |
NotNull |
[String] enum ENABLED, DISABLED, |
null |
CourseUnitCountRule
Accepts a selection (recursively downwards) of a number of course units, which falls inside a range.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
|||
rule required |
null |
|||
count required |
null |
CourseUnitCountRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
rule optional |
null |
|||
count optional |
null |
CourseUnitInPrimaryPlanRule
Evaluates to true if student has the course unit selected in the enrolment in a primary plan
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
CourseUnitLiteratureInner
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Needed only for internal reasons. Needs to be unique within the enclosing object. Or just leave out and we'll generate a localId for you. |
NotNull |
otm-123456 |
|
type required |
null |
|||
name required |
The name |
null |
||
url required |
The url |
null |
CourseUnitPrerequisite
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type required |
Message type |
null |
||
courseUnitGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
CourseUnitPrerequisiteAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
courseUnitGroupId optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
CourseUnitRealisation
A CourseUnitRealisation is a concrete implementation of an assessment item. An example would be 'Biologian perusteet syksyllä 2014'. It may belong to more than one AssessmentItem, because sometimes one lecture series (CUR) can fulfill more than one
ValidCourseUnitRealisationActivityPeriod [Draft, Legacy, Active]
ValidCourseUnitRealisationEnrolmentPeriod
ValidLearningEnvironments
ValidCourseUnitRealisationAndMassExamSession
ValidConfirmedStudySubGroupModificationTime
UniversityOrganisations(organisationsProperty = organisationIds, universitiesProperty = universityOrgIds)
ValidFlowState
ValidTeachingLanguage [Active]
ValidCooperationNetworkExternalIdReference
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
flowState optional |
See docs of FlowState. Persisted value is never null. |
NotNull [Active, External] |
[String] enum NOT_READY, PUBLISHED, CANCELLED, ARCHIVED, |
null |
massExamSessionId optional |
The id of the mass exam session this realisation is a part of. |
otm-123456 |
||
massExamSessionName optional |
The name of the mass exam session this realisation is a part of. |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
name required |
Name of the realisation |
NotNull |
null |
|
nameSpecifier required |
Typically matches the course unit and assessment item name, not shown in UI if the context is clear |
NotNull [Active] |
null |
|
assessmentItemIds required |
Ids of all assessment items this realisation is a realisation of |
NotEmpty [Active] |
Set of [string] |
null |
tweetText optional |
A free-form short text advertising the course unit realisation, which should give the student an idea on what sets this course unit realisation apart from other similar course unit realisations. This text should not be longer than a tweet, i.e. 160 characters. |
LocalizedStringSize(maxSize = 160, minSize = 1) |
null |
|
literature optional |
Structured version of learning material used |
Size(max = 200, min = 0) |
null |
|
learningMaterial optional |
A free-form description of learning material used, if structured "literature" cannot be used |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
learningEnvironmentDescription optional |
Description of the learning environment |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
learningEnvironments optional |
Links to electronic learning environments. |
Size(max = 20, min = 0) |
List of LearningEnvironmentUrl |
null |
studyFormat optional |
What kind of work items study consists of. Optionally also how time is divided between the parts. In the future this field should be replaced with something structured in order to manage the study calendar. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
additionalInfo optional |
Fallback field for information which does not fit elsewhere. "lisätiedot" |
LocalizedStringSize(maxSize = 65000, minSize = 1) |
null |
|
publishDate required |
Publish date |
NotNull [Active] |
[date] date |
null |
activityPeriod required |
Date range when this course unit realisation is active, during which all the work to be assessed should finished. Study event dates must be inside this range. Must be a date range with both the start and end set. Persisted value is never null. |
NotNull [Active, External] |
null |
|
teachingLanguageUrn optional |
Language in which the realisation is taught, required if courseUnitRealisationTypeUrn is not in (…:exam-electronic, …:exam-online …:exam-exam, …:exam-midterm, …:exam-final |
UrnCode(namespace = urn:code:language, onlySyntax = false) |
urn:code:language:* |
|
courseUnitRealisationTypeUrn required |
Course unit realisation type "toteutuksen tyyppi", more specific than assessment item type |
NotNull [Active] |
urn:code:course-unit-realisation-type:* |
|
studyGroupSets required |
Study group sets. When enrolling to a course unit realisation, user must choose one or more study sub groups as specified in the study group sets. Validations are defined in ValidatableStudyGroupSets.class |
List of StudyGroupSet |
null |
|
responsibilityInfos required |
Persons and roles responsible for this in various ways |
Size(max = 200, min = 0) |
Set of PersonWithCourseUnitRealisationResponsibilityInfoType |
null |
organisations required |
Organisations responsible for this in various ways and fractions. Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
NotEmpty [Active] |
Set of OrganisationRoleShare |
null |
enrolmentPeriod optional |
Date time range for enrolment. Enrolling to a course unit realisation, and cancellation of the enrolment is possible during this date and time. If this is not defined, it is not possible to enrol to this course unit realisation. |
null |
||
lateEnrolmentEnd optional |
Date and time after the primary enrolment when student may do late enrolment. If non-null, enrolling to a course unit realisation is open again after enrolment calculation results have been confirmed until this date and time. |
[Date] date-time |
null |
|
enrolmentAdditionalCancellationEnd optional |
Additional cancellation date and time. In any case student may cancel enrolment during the enrolment period. Additionally, if this value is non-null, student may cancel their enrolment after calculation results have been confirmed until this date and time |
[Date] date-time |
null |
|
externalEnrolmentLink optional |
Localized link to external system that is handling enrolments for SISU |
null |
||
usesExternalEnrolment optional |
Flag indicating if enrolments are handled in an external system. |
null |
||
customCodeUrns optional |
Values for university-specific custom code books |
Size(max = 200, min = 0) |
Map of [array] |
null |
continuousEnrolment optional |
Enables continuous enrolment when set to true |
null |
||
externalStructureLink optional |
Localized link to external system that is handling structure for SISU |
null |
||
usesExternalStructure optional |
Flag indicating if structure is handled in an external system. |
null |
||
confirmedStudySubGroupModificationAllowed optional |
Flag indicating if study subgroup modifications are allowed |
null |
||
confirmedStudySubGroupModificationEnd optional |
Date when confirmed study subgroup modification time ends |
[Date] date-time |
null |
|
cooperationNetworkDetails optional |
Describes details of RIPA Co-operation networks this entity might be part of |
null |
CourseUnitRule
Accepts a selection of a course unit within the given group.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
|||
courseUnitGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
CourseUnitSubstitution
A single substituting course unit and its credit share in substitution.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
courseUnitGroupId required |
Id of the substituting course unit group |
NotNull |
otm-123456 |
|
credits optional |
How many credits from the substituting course units are used. If null, all credits are used. |
Min(value = 1) |
null |
CourseUnitTiming
The selections where a certain course unit (group) is placed on the time line.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
plannedPeriods required |
A set of periods a course unit (group) is planned to. |
Set of [string] |
null |
|
courseUnitGroupId required |
The group id of the course units. |
CourseUnitGroupId |
otm-123456 |
CreditRange
Range of acceptable credit values. Leaving max unspecified indicates an upwards unbound range.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
min required |
minimum acceptable value |
NotNull |
null |
|
max optional |
maximum acceptable value |
null |
CreditsRule
Accepts a selection (recursively downwards) whose sum of credits is within the range given.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
|||
rule required |
null |
|||
credits required |
null |
CreditsRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
rule optional |
null |
|||
credits optional |
null |
CurriculumPeriod
A curriculum period (opetussuunnitelmakausi) is a period during which the studies (Degree Programmes, Study Modules, and Course Units) are planned by the personnel.
Any given CurriculumPeriod's validity range must be contained in its entirety in the validity range of a single StudyYearTemplate belonging to the same university as the CurriculumPeriod. A generated StudyYear, on the other hand, must be contained in a single CurriculumPeriod. (Which means that a CurriculumPeriod can be a single StudyYear, an entire StudyYearTemplate, or anything in between.)
ValidCurriculumPeriod
LocalizedFieldLangs(allLangsField = name, subsetLangsField = abbreviation) [Active]
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
name required |
Long display name. Could contain for instance 'Aalto opetussuunnitelmakausi 2013-2014 (1v)'. Persisted value is never null. |
NotNull |
null |
|
abbreviation required |
Abbreviation is used when displaying the non-unique names of related objects, such as course units. Commonly the academic years during which it is active, such as '2015-2016'. Persisted value is never null. |
NotNull |
null |
|
activePeriod required |
The dates when this curriculum period is active. |
NotNull |
null |
DegreeProgramme
Degree programme
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this module belongs to. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name |
NotNull |
null |
|
moduleContentApprovalRequired optional |
Flag for setting this module as always requiring Module Content Approval. If required, Module Content Approval can be applied when the contents of the Module is set by the rules. Student can also apply for Module Content Approval when the contents is not by the rules using Free edit mode. |
null |
||
code required |
This code is shown to the user in the user interface. Possibly shown in the transcript. Modules with same codes must have the same group id. |
null |
||
curriculumPeriodIds required |
IDs of the curriculum periods to which this study module or degree programme belongs to. |
List of [string] |
null |
|
type required |
One of Education, DegreeProgramme, StudyModule, or GroupingModule |
null |
||
rule required |
null |
|||
targetCredits required |
null |
|||
approvalState required |
Approval State describes the state of the approval process for the object. Note that approval state has no effect on visibility; DocumentState dictates whether the document is published and visible to public e.g. students. |
[String] enum urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, urn:code:approval-state-type:not-approved, urn:code:approval-state-type:approved, |
null |
|
validityPeriod required |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
contentDescription optional |
null |
|||
additionalInfo optional |
null |
|||
responsibilityInfos required |
Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot") |
null |
||
organisations required |
Organisations in some relation to this module ("vastuuorganisaatiot"). Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
Set of OrganisationRoleShare |
null |
|
inclusionApplicationInstruction optional |
null |
|||
printName optional |
null |
|||
tweetText optional |
null |
|||
degreeProgramTypeUrn required |
Supported values available here |
urn:code:degree-program-type:* |
||
degreeTitleUrns required |
Degree titles. |
Set of [string] |
null |
|
degreeLanguageUrns required |
In which languages the degree programme is possible to attain. |
Set of [string] |
null |
|
studyFields optional |
Study field is for classification. There may be several. "koulutusala" |
Set of [string] |
null |
|
educationClassificationUrns required |
Education classifications ("koulutusluokitus") are used for classification |
Set of [string] |
null |
|
educationLocationUrns required |
Municipalities where the education takes place |
Set of [string] |
null |
|
gradeScaleId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
customCodeUrns optional |
Values for university-specific custom code books |
Map of [array] |
null |
|
learningOutcomes optional |
null |
|||
tuitionFee optional |
The yearly tuition fee that must be paid by students with a tuition fee obligation |
null |
DegreeProgrammeAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
code optional |
This code is shown to the user in the user interface. Possibly shown in the transcript. Modules with same codes must have the same group id. |
null |
||
targetCredits optional |
null |
|||
curriculumPeriodIds optional |
IDs of the curriculum periods to which this study module or degree programme belongs to. |
List of [string] |
null |
|
approvalState optional |
Approval State describes the state of the approval process for the object. Note that approval state has no effect on visibility; DocumentState dictates whether the document is published and visible to public e.g. students. |
[String] enum urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, urn:code:approval-state-type:not-approved, urn:code:approval-state-type:approved, |
null |
|
validityPeriod optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
contentDescription optional |
null |
|||
additionalInfo optional |
null |
|||
responsibilityInfos optional |
Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot") |
null |
||
organisations optional |
Organisations in some relation to this module ("vastuuorganisaatiot"). Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
Set of OrganisationRoleShare |
null |
|
inclusionApplicationInstruction optional |
null |
|||
printName optional |
null |
|||
tweetText optional |
null |
|||
degreeProgramTypeUrn optional |
Supported values available here |
urn:code:degree-program-type:* |
||
degreeTitleUrns optional |
Degree titles. |
Set of [string] |
null |
|
degreeLanguageUrns optional |
In which languages the degree programme is possible to attain. |
Set of [string] |
null |
|
studyFields optional |
Study field is for classification. There may be several. "koulutusala" |
Set of [string] |
null |
|
educationClassificationUrns optional |
Education classifications ("koulutusluokitus") are used for classification |
Set of [string] |
null |
|
educationLocationUrns optional |
Municipalities where the education takes place |
Set of [string] |
null |
|
gradeScaleId optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
customCodeUrns optional |
Values for university-specific custom code books |
Map of [array] |
null |
|
learningOutcomes optional |
null |
|||
tuitionFee optional |
The yearly tuition fee that must be paid by students with a tuition fee obligation |
null |
DegreeProgrammeAttainmentApplicationQuestion
DegreeProgrammeAttainmentApplicationQuestionnaire represents questions for degree programme.One degree programme may have only one questionnaire.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Question id |
NotNull |
otm-123456 |
|
question required |
Question for student |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
guidance optional |
More detailed description about the question |
LocalizedStringSize(maxSize = 1024, minSize = 0) |
null |
|
required optional |
Is it required to answer this question |
null |
||
state required |
Is the question shown to student or is it archived |
NotNull |
[String] enum ACTIVE, ARCHIVED, |
null |
position optional |
The position of the question |
[Integer] int32 |
null |
DegreeProgrammeAttainmentApplicationQuestionnaire
DegreeProgrammeAttainmentApplicationQuestionnaire represents questions for degree programme attainment application.One degree programme may have only one questionnaire.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
degreeProgrammeId required |
Degree programme id. Persisted value is never null. |
DegreeProgrammeId |
otm-123456 |
|
questions optional |
Questions to be asked during creation of degree programme attainment application. |
ContainsNoNulls |
null |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
DeleteBatch
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
ids optional |
Set of [string] |
null |
||
groupIds optional |
Set of [string] |
null |
DisclosureAuthorizationCategory
Disclosure of personal information to third parties. Defines the textual content of the target which personal data is handed over to. Persons must accept the disclosure of personal information. If no authorization exists for certain category, it is not permitted to hand over personal data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
description required |
Description of the authorization category |
NotNull |
null |
|
creationDate required |
Creation time of this authorization category |
NotNull |
[Date] date-time |
null |
archivalDate optional |
Archival date of this authorization category |
[Date] date-time |
null |
Education
Education is the top level object in the study structure design. Education rule must not refer to degree programmes of types that conflict to the education structure rules inferred from the education type.
LocalizedFieldLangs(allLangsField = name, subsetLangsField = outcomes)
ValidEducationCode
ValidEducation
ValidEducationStructureEducationClassificationUrns [Active]
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this module belongs to. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name |
NotNull |
null |
|
validityPeriod required |
Used for filtering search results. Educations can not be attained out of their validity period. Persisted value is never null. |
NotNull |
null |
|
code required |
This code is shown to the user in the user interface. Educations with same code must have the same group id. |
NotNull [Active] |
null |
|
educationType required |
Education type defines the education structure rule set used for validating the child degree programme types. |
NotNull |
urn:code:education-type:* |
|
specialisationStudiesClassificationUrn optional |
If the education type is specialisation studies, this field defines a more specific type for the education (and is mandatory). Otherwise this field is not used. |
UrnCode(namespace = urn:code:specialisation-studies-classification, onlySyntax = false) |
urn:code:specialisation-studies-classification:* |
|
studyFields required |
Study field is for classification. There may be several "koulutusala" |
NotEmpty [Active] |
Set of [string] |
null |
organisations required |
Organisations in some relation to this module "vastuuorganisaatiot". Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
NotEmpty [Draft, Active] |
Set of OrganisationRoleShare |
null |
attainmentLanguages optional |
Languages in which it is possible to attain studies contained in this education |
Size(max = 20, min = 0) |
Set of [string] |
null |
educationLocationUrn optional |
Municipality where this education is available |
UrnCode(namespace = urn:code:municipality, onlySyntax = false) |
urn:code:municipality:* |
|
outcomes optional |
A free-form text, the learning outcomes from the completion of this education. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
responsibilityInfos required |
Persons or roles in a responsibility relation to this module "vastuuopettaja" & "yhteydenotot" |
Size(max = 200, min = 0) |
null |
|
structure required |
Structure |
NotNull |
null |
|
defaultStudyRightExpirationRulesUrn required |
Default expiration rules for this education |
NotNull |
urn:code:study-right-expiration-rules:* |
|
defaultDecreeOnUniversityDegreesUrn required |
The decree on university degrees ("tutkintoasetus") to set by default for study rights created with this education. |
NotNull |
urn:code:decree-on-university-degrees:* |
|
studyRightExtensionInstructions optional |
A free-form text, additional information for the study right extension application |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
studySelectionRequirement required |
Indicates study selection requirements, that separate handling for degree & non-degree students. |
NotNull |
[String] enum UNRESTRICTED, SELECTION_REQUIRED, ENROLMENT_RIGHT_REQUIRED, |
null |
fundingSourceEducationUrn optional |
Source of funding for the education |
UrnCode(namespace = urn:code:funding-source-education, onlySyntax = false) |
urn:code:funding-source-education:* |
|
isMultiformEducation optional |
null |
|||
type required |
One of Education, DegreeProgramme, StudyModule, or GroupingModule |
null |
||
rule optional |
null |
EducationChildOption
Child level option on an education phase, under some top level option.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Id unique within education |
NotNull |
otm-123456 |
|
moduleGroupId required |
Study module which gets selected here. |
AttainableModuleGroupId |
otm-123456 |
|
acceptanceType required |
Is the selection accepted by someone (default) or automatic after the student makes it. |
NotNull [Active] |
[String] enum AUTOMATIC, ACCEPTED_BY_TEACHER, |
null |
degreeTitleUrn optional |
Degree title forced by this selection. May be null, if no degree title forcing happens at this selection |
UrnCode(namespace = urn:code:degree-title, onlySyntax = false) |
urn:code:degree-title:* |
|
educationClassificationUrn optional |
EducationClassificationUrn forced by this selection. |
UrnCode(namespace = urn:code:education-classification, onlySyntax = false) |
urn:code:education-classification:* |
EducationOption
Top level option on an education phase, typically defining the degree programmes in an education.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Id unique within education |
NotNull |
otm-123456 |
|
moduleGroupId required |
Degree programme or module which gets selected here |
AttainableModuleGroupId |
otm-123456 |
|
childOptions required |
List of child selections rooted here. Can be empty but not null. |
List of EducationChildOption |
null |
|
acceptanceType required |
Is the selection accepted by someone or automatic (default) after the student makes it. |
NotNull [Active] |
[String] enum AUTOMATIC, ACCEPTED_BY_TEACHER, |
null |
childNaming required |
Controls where the name of selected option will be copied. |
NotNull [Active] |
urn:code:education-option-naming-type:* |
|
degreeTitleUrn optional |
Degree title forced by this selection. May be null, if no degree title forcing happens at this selection |
UrnCode(namespace = urn:code:degree-title, onlySyntax = false) |
urn:code:degree-title:* |
|
educationClassificationUrn optional |
EducationClassificationUrn forced by this selection. It may be overridden by selected educationChildOption. |
UrnCode(namespace = urn:code:education-classification, onlySyntax = false) |
urn:code:education-classification:* |
EducationPhase
A phase of education, for example bachelors in an bachelors+masters education. These are represented as axes in the user interface for editing educations.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
name required |
For example 'Alempi tutkinto' or 'Ylempi tutkinto' |
NotNull |
null |
|
options required |
Top level options in a phase, typically containing the allowed degree programmes |
NotNull |
List of EducationOption |
null |
EducationRule
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
|||
rules required |
Child rules. For legacy and draft, empty list is alowed |
List of Rule |
null |
|
require optional |
null |
|||
description optional |
null |
|||
allMandatory optional |
null |
|||
rule required |
null |
|||
count required |
null |
|||
courseUnitGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
credits required |
null |
|||
moduleGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
EducationRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationGroupIds optional |
Required educations |
Set of [string] |
null |
EducationStructure
Saving should not be enabled unless all defined axes have at least one top-level item.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
phase1 required |
Always in use, 'kandi' for 'kandi+maisteri' |
NotNull |
null |
|
phase2 optional |
Only in use for 'kandi+maisteri', when this is 'maisteri' |
null |
||
learningOpportunities required |
List of learning opportunities |
List of LearningOpportunity |
null |
EducationTypeRule
Evaluates to true if student has required educations.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
||
educationTypeUrns required |
Required education types |
Set of [string] |
null |
EducationTypeRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationTypeUrns optional |
Required education types |
Set of [string] |
null |
EducationTypeTermRegistrationRequirements
Defines term registration requirements for an education type
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationTypeUrn required |
Which education type these requirements are for |
UrnCode(namespace = urn:code:education-type, onlySyntax = false) |
urn:code:education-type:* |
|
studentUnionMembershipFeeRequirement required |
Defines if student union membership fee payment is mandatory, possible or not allowed |
NotNull |
[String] enum MANDATORY, POSSIBLE, NOT_ALLOWED, |
null |
EnrolmentForCourseUnitRealisationRule
Evaluates to true if student is enrolled to any of course unit realisations that are selected in the rule.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
||
courseUnitRealisationIds required |
Enrolment with state ENROLLED and reference to any of these course unit realisations allow student to pass this rule |
Set of [string] |
null |
EnrolmentForCourseUnitRealisationRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
courseUnitRealisationIds optional |
Enrolment with state ENROLLED and reference to any of these course unit realisations allow student to pass this rule |
Set of [string] |
null |
EnrolmentQuestion
An EnrolmentQuestion is a single question as a part of an EnrolmentQuestionnaire.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Unique ID within an EnrolmentQuestionnaire. |
NotNull |
otm-123456 |
|
required optional |
If true, answering this question is required for enrolling. |
null |
||
questionType optional |
Type of the question. |
[String] enum LANGUAGE_SELECT, FREE_TEXT, |
null |
|
question optional |
Description of the question to be answered. |
LocalizedStringSize(maxSize = 1024, minSize = 0) |
null |
|
selections optional |
Possible selection choices for the question. Used for multiple choice questions. |
List of EnrolmentQuestionSelect |
null |
EnrolmentQuestionSelect
An EnrolmentQuestionSelect represents one selection choice for an EnrolmentQuestion.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
value required |
Selection choice's value to be stored. |
NotNull |
null |
|
option required |
Localized description of the option that is shown as part of the question. |
NotNull |
null |
EnrolmentQuestionnaire
EnrolmentQuestionnaire represents questions for course unit realisation.One course unit realisation may have only one questionnaire.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
courseUnitRealisationId optional |
Course unit realisation ID. Persisted value is never null. |
otm-123456 |
||
enrolmentQuestions optional |
Questions to be asked for enrolment. |
List of EnrolmentQuestion |
null |
Event
Conveys the start time and duration of a single event in a recurring series
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
start optional |
When this event starts. |
[Date] date-time |
null |
|
duration optional |
A string representation of this duration using ISO-8601 seconds based representation. |
null |
||
excluded optional |
Whether this event instance is excluded from the series by the exceptions field of the StudyEvent. Excluded are NOT visible to end users. |
null |
||
cancelled optional |
Whether this event instance is cancelled. Cancelled events are visible to user with CANCELLED status. |
null |
||
irregularLocationIds optional |
Location(s) in which the event exceptionally takes place. If there are no changes, this field should be null. Empty Set may be interpreted as 'undecided locations' |
List of [string] |
null |
|
irregularTeacherIds optional |
Teacher(s) who are responsible for realization of this Event instance |
List of [string] |
null |
|
notice optional |
Is there something else to be noticed about this Event instance. |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
|
end optional |
[Date] date-time |
null |
EventOverride
Conveys information about exceptional teacher or location info or some other extra info about an Event. Override info persists even if Event instance is marked as an exception or cancelled.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
eventDate required |
Which event instance is affected. Cannot be null. If eventDate does not match any Event instance's date, the override is ignored and not written in database. |
NotNull |
[date] date |
null |
irregularLocationIds optional |
Location(s) in which the event exceptionally takes place. If there are no changes, this field should be null. Empty Set may be interpreted as 'undecided locations' |
List of [string] |
null |
|
irregularTeacherIds optional |
Teacher(s) who are responsible for realization of this Event instance |
List of [string] |
null |
|
notice optional |
Is there something else to be noticed about this Event instance. |
LocalizedStringSize(maxSize = 1024, minSize = 1) |
null |
ExportResultAdmissionTarget
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of AdmissionTarget |
null |
ExportResultAssessmentItem
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of AssessmentItem |
null |
ExportResultBuilding
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of Building |
null |
ExportResultCodeBook
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CodeBook |
null |
ExportResultCodeUniversityUsage
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CodeUniversityUsage |
null |
ExportResultCooperationNetwork
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CooperationNetwork |
null |
ExportResultCooperationNetworkSettings
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CooperationNetworkSettings |
null |
ExportResultCourseUnit
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CourseUnit |
null |
ExportResultCourseUnitRealisation
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CourseUnitRealisation |
null |
ExportResultCurriculumPeriod
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of CurriculumPeriod |
null |
ExportResultDegreeProgrammeAttainmentApplicationQuestionnaire
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
null |
ExportResultDisclosureAuthorizationCategory
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of DisclosureAuthorizationCategory |
null |
ExportResultEducation
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of Education |
null |
ExportResultEnrolmentQuestionnaire
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of EnrolmentQuestionnaire |
null |
ExportResultInternationalContractualDegreeAgreement
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
null |
ExportResultLocation
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of Location |
null |
ExportResultMassExamSession
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of MassExamSession |
null |
ExportResultModule
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of [importModules_request_inner] |
null |
ExportResultOpenUniversityProduct
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of OpenUniversityProduct |
null |
ExportResultOpenUniversityProductCode
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of OpenUniversityProductCode |
null |
ExportResultOrganisation
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of Organisation |
null |
ExportResultPaymentCategory
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of PaymentCategory |
null |
ExportResultPublicPerson
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of PublicPerson |
null |
ExportResultQualification
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of Qualification |
null |
ExportResultStudyEvent
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of StudyEvent |
null |
ExportResultStudyYearTemplate
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of StudyYearTemplate |
null |
ExportResultTermRegistrationRequirements
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of TermRegistrationRequirements |
null |
ExportResultTimingTemplate
Container for results of export api calls. Specifies a continuation key for next similar api call with 'greatestOrdinal', and 'hasMore' tells if there are, at this time, any continuation data to be had. The field 'entities' contains the actual data.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
greatestOrdinal optional |
The modification ordinal number of the last modification whose corresponding entity data is included in this result. |
[Long] int64 |
null |
|
hasMore optional |
Is there more data to be had? |
null |
||
entities optional |
The actual data. |
List of TimingTemplate |
null |
FeatureToggles
Feature toggles
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
studyRightExtensionFeeEnabled optional |
Toggles study right extension fee functionality |
false |
FinnishAddress
Represents addresses for physical locations in Finland
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
countryUrn required |
Country, as a reference to code book country. |
UrnCode(namespace = urn:code:country, onlySyntax = false) |
urn:code:country:* |
|
isUserEditable optional |
Set to false to prevent address from being edited in the user interface. |
null |
||
type required |
Address type, either GenericAddress or FinnishAttainment |
null |
||
streetAddress optional |
Street address part of the address |
null |
||
postalCode optional |
Postal code of the address |
null |
||
city optional |
City of the address |
null |
FinnishAddressAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
streetAddress optional |
Street address part of the address |
null |
||
postalCode optional |
Postal code of the address |
null |
||
city optional |
City of the address |
null |
FrontendFeatureToggles
Switches to hide certain features from frontends. All other switches default to true but openUniversityFeaturesEnabledForStudent defaults to false because the functionality is still work in progress.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
priorLearningInclusionApplicationEnabled optional |
Prior learning inclusion request in structure of studies visible |
true |
||
customCourseCreditApplicationEnabled optional |
Custom course unit request in structure of studies visible |
true |
||
freeEditModeEnabled optional |
Free edit mode enabled in structure of studies |
true |
||
creditTransferEnabled optional |
Credit transfer visible in course unit details |
true |
||
moduleAttainmentApplicationEnabled optional |
Study module attainment application visible in module details |
true |
||
studentDetailsEditEnabled optional |
Student details edit enabled for student frontend |
true |
||
degreeProgrammeAttainmentApplicationEnabled optional |
Degree programme attainment application visible in structure of studies (ie. allow student to request graduation) |
true |
||
educationOptionsConfirmable optional |
Confirm button visible in the plan study right modal (ie. allow student to confirm education options) |
true |
||
minorSelectionsConfirmable optional |
Confirm button visible in the minor selection modal (ie. allow student to confirm study right minor selections) |
true |
||
studentTranscriptPrintable optional |
Transcript printable for the student (in their own details). Default value when not available: true |
true |
||
studyRightExtensionApplicationEnabled optional |
Study right extension application enabled in study right details and banner |
true |
||
studentClassifiedInfoToggleable optional |
Students are able to toggle personal details as classified |
true |
||
publishedCourseUnitRealisationEditEnabled optional |
Published course unit realisations are editable |
true |
||
courseUnitRealisationCreationEnabled optional |
New course unit realisations are allowed to be created |
true |
||
openUniversityFeaturesEnabledForStudent optional |
Open university features are available in student UI |
true |
||
crossStudyFeaturesEnabledForStudent optional |
Cross study features available for students |
true |
||
completionMethods2TabEnabled optional |
Completion methods 2.0 tab enabled |
true |
||
digitalDegreeCertificatePreferred optional |
Degree certificate won't be delivered physically. Delivery method options are hidden in degree programme attainment application |
true |
||
internshipCustomAttainmentApplicationEnabled optional |
Internship custom attainment application enabled in add study draft modal (e.g. university of applied sciences will use this |
true |
||
newPlanTabEnabled optional |
New plan tab visible in the top navigation bar |
true |
||
emrexIntegrationEnabled optional |
Emrex integration enabled |
true |
||
gradeRaiseAttemptEnabled optional |
Grade raise attempt visible for students. Default value when not available: false |
true |
||
mandatoryGraduationSurveyEnabled optional |
Graduation survey with manual confirmation. Default value when not available: false |
true |
GenericAddress
Represents addresses for physical locations with unstructured notation
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
countryUrn required |
Country, as a reference to code book country. |
UrnCode(namespace = urn:code:country, onlySyntax = false) |
urn:code:country:* |
|
isUserEditable optional |
Set to false to prevent address from being edited in the user interface. |
null |
||
type required |
Address type, either GenericAddress or FinnishAttainment |
null |
||
address optional |
The whole address excluding the country |
null |
GenericAddressAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
address optional |
The whole address excluding the country |
null |
Grade
A single grade
LocalizedFieldLangs(allLangsField = name, subsetLangsField = abbreviation) [Active]
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
passed optional |
Is this a passing grade, defaults to false |
null |
||
name required |
Name |
NotNull |
null |
|
abbreviation required |
Abbreviation, should be pretty short |
NotNull |
null |
|
numericCorrespondence required |
A numeric correspondence to the 1-5 grade scale |
NotNull |
[Float] float |
null |
GradeScale
Grade scale composed of grades. Can be shared between different universities.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
grades required |
List of grades of which this grade scale is composed |
NotEmpty |
List of Grade |
null |
validityPeriod required |
The dates when this GradeSclase is valid. |
NotNull |
null |
|
additionalInfo optional |
Additional text to include in opintorekisteriote |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
helpText optional |
Additional help text to include in the grading tool |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
name required |
Name |
NotNull |
null |
|
abbreviation required |
Abbreviation |
NotNull |
null |
GroupingModule
Module representing a grouping module
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this module belongs to. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name |
NotNull |
null |
|
moduleContentApprovalRequired optional |
Flag for setting this module as always requiring Module Content Approval. If required, Module Content Approval can be applied when the contents of the Module is set by the rules. Student can also apply for Module Content Approval when the contents is not by the rules using Free edit mode. |
null |
||
code optional |
null |
|||
curriculumPeriodIds optional |
List of [string] |
null |
||
type required |
One of Education, DegreeProgramme, StudyModule, or GroupingModule |
null |
||
rule required |
null |
|||
contentFilter optional |
null |
HelpUrls
Customizable help URLs for different frontends.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
admin optional |
Help URL for Admin frontend |
|||
staff optional |
Help URL for Staff frontend |
|||
tutor optional |
Help URL for Tutor frontend |
|||
student optional |
Help URL for Student frontend |
|||
teacher optional |
Help URL for Teacher frontend |
|||
default optional |
Default help URL for frontends |
HomeUniversitySettings
Cooperation network settings specific to home university
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
targetGroups optional |
List of queries (joined by OR) to target study rights that are eligible for cooperation network right. |
ContainsNoNulls |
List of StudyRightQuery |
null |
description optional |
Description text for the cooperation network |
LocalizedStringSize(maxSize = 1024, minSize = 0) |
null |
HostUniversitySettings
Cooperation network settings specific to host university
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
studyRightEducationId optional |
Education in which to create study right to. |
otm-123456 |
||
studyRightLearningOpportunityId optional |
Learning opportunity to which to create study right to. |
otm-123456 |
||
studyRightOrganisationId optional |
Owner organisation for study right created. |
otm-123456 |
||
studyRightCourseUnitSelectionValidityTerms required |
Study right's course unit validity period extended by number of terms. |
Min(value = 2) |
[Integer] int32 |
null |
ImportModulesRequestInner
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this module belongs to. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name |
NotNull |
null |
|
moduleContentApprovalRequired optional |
Flag for setting this module as always requiring Module Content Approval. If required, Module Content Approval can be applied when the contents of the Module is set by the rules. Student can also apply for Module Content Approval when the contents is not by the rules using Free edit mode. |
null |
||
code required |
This code is shown to the user in the user interface. Possibly shown in the transcript. Modules with same codes must have the same group id. |
null |
||
curriculumPeriodIds required |
IDs of the curriculum periods to which this study module or degree programme belongs to. |
List of [string] |
null |
|
type required |
One of Education, DegreeProgramme, StudyModule, or GroupingModule |
null |
||
rule required |
null |
|||
targetCredits required |
null |
|||
approvalState required |
Approval State describes the state of the approval process for the object. Note that approval state has no effect on visibility; DocumentState dictates whether the document is published and visible to public e.g. students. |
[String] enum urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, urn:code:approval-state-type:not-approved, urn:code:approval-state-type:approved, |
null |
|
validityPeriod required |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
contentDescription optional |
null |
|||
additionalInfo optional |
null |
|||
responsibilityInfos required |
Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot") |
null |
||
organisations required |
Organisations in some relation to this module ("vastuuorganisaatiot"). Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
Set of OrganisationRoleShare |
null |
|
inclusionApplicationInstruction optional |
null |
|||
printName optional |
null |
|||
tweetText optional |
null |
|||
degreeProgramTypeUrn required |
Supported values available here |
urn:code:degree-program-type:* |
||
degreeTitleUrns required |
Degree titles. |
Set of [string] |
null |
|
degreeLanguageUrns required |
In which languages the degree programme is possible to attain. |
Set of [string] |
null |
|
studyFields required |
Study field is for classification. There may be several. "koulutusala" |
Set of [string] |
null |
|
educationClassificationUrns required |
Education classifications ("koulutusluokitus") are used for classification |
Set of [string] |
null |
|
educationLocationUrns required |
Municipalities where the education takes place |
Set of [string] |
null |
|
gradeScaleId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
customCodeUrns optional |
Values for university-specific custom code books |
Map of [array] |
null |
|
learningOutcomes optional |
null |
|||
tuitionFee optional |
The yearly tuition fee that must be paid by students with a tuition fee obligation |
null |
||
contentFilter optional |
null |
|||
abbreviation optional |
Shown in the UI. May contain encoded information eg. on the study module organisation. |
null |
||
outcomes optional |
null |
|||
prerequisites optional |
null |
|||
substitutions optional |
null |
|||
searchTags optional |
Search tags are for searching. |
Set of [string] |
null |
|
studyLevel required |
Supported values available here |
urn:code:study-level:* |
||
possibleAttainmentLanguages required |
Defines the attainment languages possible for attainments of this study module |
Set of [string] |
null |
|
graded required |
Indicates whether this study module is a graded module |
null |
||
studyRightSelectionType required |
Study right selection type |
[String] enum urn:code:study-right-selection-type:minor-study-right, urn:code:study-right-selection-type:open-university-course-unit, urn:code:study-right-selection-type:separate-studies-module, urn:code:study-right-selection-type:separate-studies-course-unit, urn:code:study-right-selection-type:none, |
null |
|
minorStudyRightAcceptanceType optional |
Study right acceptance type |
[String] enum urn:code:study-right-acceptance-type:accepted-by-teacher, urn:code:study-right-acceptance-type:automatic, |
null |
|
minorStudyRightApplicationInstructions optional |
null |
IntRange
Acceptable range of integers
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
min required |
minimum acceptable value |
NotNull |
[Integer] int32 |
null |
max optional |
maximum acceptable value |
[Integer] int32 |
null |
InternationalContractualDegreeAgreement
Represents international contractual degree agreement.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
type required |
Type of the agreement. Persisted value is never null. |
NotNull |
[String] enum JOINT, DOUBLE, |
null |
name required |
Name of the agreement |
NotNull |
null |
|
defaultInternationalInstitutionUrns required |
Default foreign universities for the agreement |
UrnCode(namespace = urn:code:international-institution, onlySyntax = false) |
Set of [string] |
null |
diplomaDescriptionBegin required |
Description to be printed to the beginning of diploma. |
NotNull |
null |
|
diplomaDescriptionEnd required |
Description to be printed to the end of diploma. |
NotNull |
null |
|
diplomaSupplementAdministeringInstitutions optional |
Description to be printed to the part 2.4 of diploma. |
Size(max = 8000, min = 1) |
null |
LearningEnvironmentUrl
A URL with name
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
primary optional |
Defines whether this URL is a primary learning environment |
null |
||
language required |
Language |
Size(max = 2147483647, min = 2) |
null |
|
name optional |
Link name, used as a display text for the url. |
Size(max = 255, min = 0) |
null |
|
url required |
LearningEnvironmentUrl address |
NotNull |
null |
LearningOpportunity
A LearningOpportunity hierarchy specifies the additional selection rules in a single Education's Module hierarchy that are not part of the Modules rules. These additional selection rules are defined in the staff's/teacher's Education structure tool. Because a Module can be part of several Educations, this flexibility is required to be able to have different rules in different Educations for the same Module.
Additionally, the LearningOpportunity makes possible to limit/imply the selection in place B in the structure to be the same/dependent on a selection in place A.
The LearningOpportunity also makes it possible for the selections to influence naming of a major subject, study specialisation and/or the degree name.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Id, unique only locally (within an Education) |
NotNull |
otm-123456 |
|
name required |
Name for learning opportunity. |
NotNull |
null |
|
allowedPaths required |
Lists of allowed selection paths through the education options. |
NotNull |
List of LearningOpportunitySelectionPath |
null |
admissionTargetIds optional |
Admission target ids that maps to this learning opportunity |
AdmissionTargetId |
List of [string] |
null |
phase1EducationClassificationUrn optional |
EducationClassificationUrn for phase 1 of education. |
UrnCode(namespace = urn:code:education-classification, onlySyntax = false) |
urn:code:education-classification:* |
|
phase2EducationClassificationUrn optional |
EducationClassificationUrn for phase 2 of education. |
UrnCode(namespace = urn:code:education-classification, onlySyntax = false) |
urn:code:education-classification:* |
LearningOpportunitySelectionPath
One possible selection path in education structure.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationPhase1GroupId optional |
Selected phase 1 option, typically defining the degree programme (alempi tutkinto-ohjelma / kandidaattiohjelma) |
otm-123456 |
||
educationPhase1ChildGroupId optional |
Selected phase 1 child option, typically defining e.g. the major subject (pääaine) |
otm-123456 |
||
educationPhase2GroupId optional |
Selected phase 2 option, typically defining the degree programme (alempi tutkinto-ohjelma / maisteriohjelma) |
otm-123456 |
||
educationPhase2ChildGroupId optional |
Selected phase 2 child option, typically defining e.g. the specialisation (suuntautumisvaihtoehto) |
otm-123456 |
Link
Link in the university settings
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
url optional |
URL for the link |
|||
title optional |
null |
Literature
Structural representation of a literature requirement
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Needed only for internal reasons. Needs to be unique within the enclosing object. Or just leave out and we'll generate a localId for you. |
NotNull |
otm-123456 |
|
type required |
null |
LiteratureName
A reference to required literature by name
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Needed only for internal reasons. Needs to be unique within the enclosing object. Or just leave out and we'll generate a localId for you. |
NotNull |
otm-123456 |
|
type required |
null |
|||
name required |
The name |
null |
LiteratureReference
A reference to required literature by reference to library system
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Needed only for internal reasons. Needs to be unique within the enclosing object. Or just leave out and we'll generate a localId for you. |
NotNull |
otm-123456 |
|
type required |
null |
|||
url required |
The url |
null |
LocalDateRange
Date interval as a semi-open interval, start inclusive, end exclusive. If both start date and end date are null, range covers any possible date.
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
startDate optional |
Start date, inclusive. If null, there is no explicit start date, and is same as MIN |
[date] date |
null |
|
endDate optional |
End date, exclusive. If null, the range is never-ending i.e. is same as MAX |
[date] date |
null |
LocalDateTimeRange
Date time interval as a semi-open interval, start inclusive, end exclusive. If both start date time and end date time are null, range covers any possible dates and times.
FieldsOrdered(allowEqual = false, greaterField = endDateTime, lesserField = startDateTime)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
startDateTime optional |
Start date time, inclusive. If null, there is no explicit start date time, and is same as MIN |
[Date] date-time |
null |
|
endDateTime optional |
End date time, exclusive. If null, the range is never-ending i.e. is same as MAX |
[Date] date-time |
null |
LocalizedLink
Localized link to an outside system
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
url optional |
Localized URL |
null |
||
label optional |
Localized display text for the URL |
null |
LocalizedMarkupString
A map <langCode, value> of HTML formatted strings containing localized versions of a text: {"fi": "Päivää", "en": "Hello"}. Only limited set of HTML formatting tags are allowed: <ol>, <li>, <ul>, <h5>, <h6>, <br>, <p>, <sup>, <sub>, <b>, <i>, <u>, and <a href='…'>, <a href='…' target='_blank'>. <strong> is converted to <b>, and <em> is converted to <i>. <h1>, <h2>, <h3> and <h4> are converted to <h5>. <span style='text-decoration: underline'> is converted to <u>
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
fi optional |
Finnish version |
<b>Finnish</b> version |
||
sv optional |
Swedish version |
<b>Swedish</b> version |
||
en optional |
English version |
<b>English</b> version |
LocalizedString
A map <langCode, value> of plain strings containing localized versions of a text
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
fi optional |
Finnish version |
Finnish version |
||
sv optional |
Swedish version |
Swedish version |
||
en optional |
English version |
English version |
LocalizedUrl
A map <langCode, URL> containing localized versions of a URL
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
fi optional |
Finnish version |
|||
sv optional |
Swedish version |
|||
en optional |
English version |
Location
Location, for example a classroom, in which StudyEvents can be held
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
name required |
Name (with respect to the building) |
NotNull |
null |
|
capacity optional |
Optional capacity to hold people |
[Integer] int32 |
null |
|
buildingId required |
Id of building in which this location is. Persisted value is never null. |
NotNull |
otm-123456 |
|
building optional |
null |
MassExamSession
A session where a varying amount of exams are offered, and students can enrol to one or more of those exams. The exams (instances of CourseUnitRealisation) contained in a MassExamSession will inherit most of their information from the MassExamSession.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
name required |
The name of the session. |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
startTime required |
Start date and time for the session (and all exams included in it). |
NotNull |
[Date] date-time |
null |
duration required |
The duration of the session as an ISO-8601 duration string. Some of the exams in the session might have a shorter duration (but not longer). |
NotNull |
null |
|
organisations required |
Organisations responsible for this in various ways and fractions. |
Size(max = 200, min = 0) |
Set of OrganisationRoleShare |
null |
responsibilityInfos required |
Persons and roles responsible for this in various ways and fractions |
Size(max = 200, min = 0) |
Set of PersonWithCourseUnitRealisationResponsibilityInfoType |
null |
publishedOn required |
When the mass exam session was published. |
NotNull [Active] |
[Date] date-time |
null |
publishedById required |
Who published the mass exam session. |
NotNull [Active] |
otm-123456 |
|
locationIds optional |
The default locations where the exams will be held. Individual exams can override this. |
Size(max = 200, min = 0) |
Set of [string] |
null |
enrolmentPeriod required |
The enrolment period for all exams in the mass exam session. |
null |
||
enrolmentAdditionalCancellationEnd optional |
The deadline for cancelling an enrolment for any of the exams in the mass exam session. |
[Date] date-time |
null |
|
enrolmentRequirements optional |
Default mandatory requirements that need to be met in order to enrol for any of the exams. Individual exams can override this. |
null |
||
manualConfirmation required |
Default setting for whether the exam enrolments need to be confirmed manually. Individual exams can override this. |
NotNull |
null |
MassExamSessionEnrolmentRequirementsInner
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
||
educationIds required |
Optional restriction for educations that are taken into account when calculating credits. If empty, then active study rights for all educations are taken into account. |
Set of [string] |
null |
|
degreeProgramTypeUrn optional |
Supported values available here |
urn:code:degree-program-type:* |
||
creditRange required |
null |
|||
educationGroupIds required |
Required educations |
Set of [string] |
null |
|
educationTypeUrns required |
Required education types |
Set of [string] |
null |
|
courseUnitRealisationIds required |
Enrolment with state ENROLLED and reference to any of these course unit realisations allow student to pass this rule |
Set of [string] |
null |
|
personGroupIds required |
Ids of all person groups where student must be a member to pass this rule |
List of [string] |
null |
Module
Abstract supertype of DegreeProgrammes, StudyModules, and GroupingModules. Child Modules and CourseUnits are linked through Rules.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this module belongs to. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name |
NotNull |
null |
|
moduleContentApprovalRequired optional |
Flag for setting this module as always requiring Module Content Approval. If required, Module Content Approval can be applied when the contents of the Module is set by the rules. Student can also apply for Module Content Approval when the contents is not by the rules using Free edit mode. |
null |
||
code optional |
null |
|||
curriculumPeriodIds optional |
List of [string] |
null |
||
type required |
One of Education, DegreeProgramme, StudyModule, or GroupingModule |
null |
||
rule required |
null |
ModulePrerequisite
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type required |
Message type |
null |
||
moduleGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
ModulePrerequisiteAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
moduleGroupId optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
ModuleRule
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
|||
rules required |
Child rules. For legacy and draft, empty list is alowed |
List of Rule |
null |
|
require optional |
null |
|||
description optional |
null |
|||
allMandatory optional |
null |
|||
rule required |
null |
|||
count required |
null |
|||
courseUnitGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
credits required |
null |
|||
moduleGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
ModuleTiming
Specifies one module and the periods involved with it. The course units belonging to a certain module can be bound to these periods.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
plannedPeriods required |
A set of periods a course unit (group) is planned to. |
Set of [string] |
null |
|
moduleGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
ModuleToggles
Switches to disable/enable modules, certain module specific frontend features.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
electronicSignatureModuleEnabled optional |
Electronic signature module enabled or not. Default value when not available: false |
false |
NotAlreadyEnrolledToAssessmentItemRule
Evaluates to true if student is enrolled to another course unit realisation (with overlapping activity period) for the same assessment item.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
OpenUniversityProduct
A Product that can be bought from Open University web store
LocalizedFieldLangs(allLangsField = name, subsetLangsField = description)
ValidFlowState
ValidEntityWithEnrolmentConstraints(completionMethodType = [Lfi.helsinki.otm.common.model.StudyType;@2889c5b9) [Active, Draft]
ValidTeachingOfferedDuringSalesPeriod [Active]
ValidSalesPeriodBeforeValidityEndDate [Active]
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
name required |
The name of the product. |
NotNull |
null |
|
description optional |
The description of the product. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
price required |
Total price, incl VAT |
NotNull |
null |
|
credits required |
Total credits that can be attained by completing the completion method |
NotNull |
null |
|
publishedOn optional |
Moment on which this product was published |
[Date] date-time |
null |
|
cancelledOn optional |
Moment on which this product was cancelled |
[Date] date-time |
null |
|
salesPeriod required |
Period of time during which the product may be purchased |
NotNull [Active] |
null |
|
validityPeriod required |
Period of time during which the courseUnit may be attained by the StudyRight that is created. |
NotNull [Active] |
null |
|
educationId required |
Id of the Education to which the StudyRight (to be created) will be attached. Persisted value is never null. |
NotNull |
otm-123456 |
|
organisationId required |
Id of the Organisation that owns this product. Persisted value is never null. |
NotNull |
otm-123456 |
|
courseUnitId required |
Id of the CourseUnit that may be attained by the StudyRight that is created. Persisted value is never null. |
NotNull |
otm-123456 |
|
completionMethodId required |
Id of the referenced CourseUnit's CompletionMethod, that must be used for the attainment. Persisted value is never null. |
NotNull |
otm-123456 |
|
enrolmentConstraints required |
Any constraints that must be applied when student tries to enroll a realisation. |
NotEmpty |
List of ProductEnrolmentConstraint |
null |
flowState required |
State of the open university product, not ready |
published |
cancelled |
archived. Persisted value is never null. |
NotNull |
[String] enum NOT_READY, PUBLISHED, CANCELLED, ARCHIVED, |
null |
productCodeId required |
Id of the open university product code |
NotNull [Active] |
otm-123456 |
codeUrns required |
Values for university-specific custom code books |
|
Size(max = 200, min = 0) |
Set of [string] |
null |
collaborationInstitution optional |
Collaboration institution for the product |
OpenUniversityProductCode
Open university product code is used for accounting and payment systems
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
code required |
Code as a string. Persisted value is never null. |
NotNull |
null |
|
description optional |
Localized description of the product code. |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
paymentSystem required |
The payment system to which this code relates. |
NotNull |
[String] enum CEEPOS, PAYTRAIL, UNDEFINED, |
null |
OpenUniversitySettings
Settings related to Open University
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
defaultPricePerCredit optional |
Price in EUR per credit. Used to calculate default prices. If not defined, all prices are defined manually. |
null |
||
defaultVatPercent required |
Not in use yet: VAT percent to use. |
NotNull |
null |
|
cartReservationMinutes required |
The amount of time to reserve items in the cart before purchase. |
NotNull |
[Integer] int32 |
null |
cartActivationCodeValidityPeriod required |
NotNull |
null |
||
privacyPolicyUrl optional |
URL to university privacy policy |
null |
||
termsOfDeliveryUrl optional |
URL to university terms of delivery |
null |
||
termsOfPurchaseUrl optional |
URL to university terms of purchase |
null |
||
termsOfOrderUrl optional |
URL to university terms of order |
null |
||
termsOfUseUrl optional |
URL to university terms of use |
null |
||
customerServiceUrl optional |
URL for contacting the (open university) customer service / help desk / other, shown e.g. when a user encounters an unexpected error while attempting to purchase a seat for a course unit. This is an alternative to 'customerServiceEmail'; if both are defined, only the email address is shown. |
null |
||
customerServiceEmail optional |
Email address of the (open university) customer service / help desk / other, shown e.g. when a user encounters an unexpected error while attempting to purchase a seat for a course unit. This is an alternative to 'customerServiceUrl'; if both are defined, only the email address is shown. |
Email(flags = [Ljakarta.validation.constraints.Pattern$Flag;@5804d37b, regexp = .*) |
null |
OpenUniversitySettingsCartActivationCodeValidityPeriod
The amount of time the activation code for a purchased cart stays valid. If the purchase has not been activated after the specified time runs out, it will expire.
NotNull
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
years optional |
[Integer] int32 |
null |
||
months optional |
[Integer] int32 |
null |
||
days optional |
[Integer] int32 |
null |
||
zero optional |
null |
|||
negative optional |
null |
|||
units optional |
List of [OpenUniversitySettings_cartActivationCodeValidityPeriod_units_inner] |
null |
||
chronology optional |
[OpenUniversitySettings_cartActivationCodeValidityPeriod_chronology] |
null |
OpenUniversitySettingsCartActivationCodeValidityPeriodChronology
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
id optional |
null |
|||
calendarType optional |
null |
OpenUniversitySettingsCartActivationCodeValidityPeriodUnitsInner
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
durationEstimated optional |
null |
|||
duration optional |
The formats accepted are based on the ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours |
null |
||
timeBased optional |
null |
|||
dateBased optional |
null |
Organisation
Single organisational entity with information about the parent organisation and predecessors. Note that information in the entity may change with time allowing for multiple snapshots with different snapshotDateTime.
LocalizedFieldLangs(allLangsField = name, subsetLangsField = abbreviation) [Active]
OrganisationCode
ConsistentOrganisation
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
snapshotDateTime required |
Start of validity for the snapshot. End of validity is defined by the snapshotDateTime of a possible later snapshot. Null defaults to -infinity i.e valid from the beginning of time. |
[Date] date-time |
null |
|
universityOrgId required |
Id of the university this organisation is part of. If not set, the system tries to set this to either the root organisation of this organisation or the university ID found in the authentication details of the importing account. Persisted value is never null. |
NotNull |
otm-123456 |
|
parentId optional |
Id of the parent organisation. |
otm-123456 |
||
predecessorIds required |
Previous entity instances of this organisation |
Size(max = 20, min = 0) |
Set of [string] |
null |
code required |
University's internal code for this organisation |
NotNull |
null |
|
name required |
Localized name of the organisation. Persisted value is never null. |
NotNull |
null |
|
abbreviation optional |
Localized abbreviated name of the organisation |
LocalizedStringSize(maxSize = 100, minSize = 1) |
null |
|
status required |
Activity status. Persisted value is never null. |
NotNull |
[String] enum ACTIVE, INACTIVE, |
null |
educationalInstitutionUrn optional |
Identifier of the educational institution. The code value is required at virta data. |
UrnCode(namespace = urn:code:educational-institution, onlySyntax = false) |
urn:code:educational-institution:* |
|
cooperationNetworkIdentifiers optional |
Contains identifiers of organisations that are related to RIPA co-operation networks. |
CooperationNetworkIdentifiersDirection(value = [Lfi.helsinki.otm.common.model.ripa.CooperationNetworkDirection;@3396ed5b) |
null |
OrganisationRoleShare
Describes a given organisation is in a given role with a possible fractional share, if the role is shared
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
organisationId optional |
Id of the organisation |
otm-123456 |
||
educationalInstitutionUrn optional |
Identifier of the educational institution |
UrnCode(namespace = urn:code:educational-institution, onlySyntax = false) |
urn:code:educational-institution:* |
|
roleUrn required |
The role URN |
NotNull |
urn:code:organisation-role:* |
|
share required |
The share, greater than zero and at most one. The shares of one role must sum to one. |
NotNull |
null |
|
validityPeriod optional |
Validity period for organisation share, by default share is always valid. |
null |
OrganisationSettings
Custom settings for a organisation
UniversityOrganisations(organisationsProperty = organisationId, universitiesProperty = universityOrgId)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
universityOrgId required |
The root organisation of the organisation these settings belong to |
NotNull |
otm-123456 |
|
organisationId required |
The organisation these settings belong to |
NotNull |
otm-123456 |
OrganisationSnapshotV1
A snapshot of organisation's properties in time.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
universityOrgId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
parentId optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
predecessorIds required |
Previous entity instances of this organisation |
Set of [string] |
null |
|
code required |
University's internal code for this organisation |
null |
||
name required |
null |
|||
abbreviation optional |
null |
|||
status required |
State of an organisation in the organisation hierarchy |
[String] enum ACTIVE, INACTIVE, |
null |
|
educationalInstitutionUrn optional |
Represents Uniform Resource Names for educational institutions. Supported values available here |
urn:code:educational-institution:* |
OrganisationV1
Single organisational entity with information about the parent organisation and predecessors. Model class for V1 import interface, obsoleted by V2
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
DocumentState determines whether a document is visible to public, students or staff. |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
snapshot required |
null |
|||
snapshotDateTime required |
Start of validity for the snapshot. End of validity is defined by the snapshotDateTime of a possible later snapshot. |
[Date] date-time |
null |
PatchEntity
A single patched entity must include the 'id' parameter to identify which entity to apply the patch to, and any other fields to be changed.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
id required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
PaymentCategory
PaymentCategory indicates the type of a payment made by student.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
code required |
Code that identifies this payment category in OILI documents. Persisted value is never null. |
NotNull |
null |
|
description optional |
Description of the payment category |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
isStudentUnionMembershipFee optional |
Indicates, whether payments of this category are student union membership fees |
null |
||
isHealthCareFee optional |
Indicates, whether payments of this category are health care fees (YTHS-maksu) |
null |
PersonGroupMembershipRule
Evaluates to true if student is a member of any specified person group
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
||
personGroupIds required |
Ids of all person groups where student must be a member to pass this rule |
List of [string] |
null |
PersonGroupMembershipRuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
personGroupIds optional |
Ids of all person groups where student must be a member to pass this rule |
List of [string] |
null |
PersonWithCourseUnitRealisationResponsibilityInfoType
Describes a given person or textual personified role that has a given responsibility
SomeFieldsNotNull(fields = [Ljava.lang.String;@4d6f58b, maxNull = 1, minNull = 0)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
text optional |
Textual personal role if the actual person cannot be referenced |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
personId optional |
Id of the actual person, if available |
otm-123456 |
||
roleUrn required |
What role the person has |
NotNull |
[String] enum urn:code:course-unit-realisation-responsibility-info-type:responsible-teacher, urn:code:course-unit-realisation-responsibility-info-type:teacher, urn:code:course-unit-realisation-responsibility-info-type:administrative-person, urn:code:course-unit-realisation-responsibility-info-type:contact-info, |
null |
validity optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
validityPeriod optional |
The time period when responsibility is valid. If omitted, responsibility is always valid |
null |
PersonWithEducationResponsibilityInfoType
Describes a given person or textual personified role that has a given responsibility
SomeFieldsNotNull(fields = [Ljava.lang.String;@62145ca5, maxNull = 1, minNull = 0)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
text optional |
Textual personal role if the actual person cannot be referenced |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
personId optional |
Id of the actual person, if available |
otm-123456 |
||
roleUrn required |
What role the person has |
NotNull |
[String] enum urn:code:education-responsibility-info-type:academic-responsibility, urn:code:education-responsibility-info-type:administrative-person, urn:code:education-responsibility-info-type:contact-info, |
null |
validity optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
validityPeriod optional |
The time period when responsibility is valid. If omitted, responsibility is always valid |
null |
PersonWithModuleResponsibilityInfoType
Describes a given person or textual personified role that has a given responsibility
SomeFieldsNotNull(fields = [Ljava.lang.String;@1cf5c497, maxNull = 1, minNull = 0)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
text optional |
Textual personal role if the actual person cannot be referenced |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
personId optional |
Id of the actual person, if available |
otm-123456 |
||
roleUrn required |
What role the person has |
NotNull |
[String] enum urn:code:module-responsibility-info-type:responsible-teacher, urn:code:module-responsibility-info-type:administrative-person, urn:code:module-responsibility-info-type:contact-info, |
null |
validity optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
validityPeriod optional |
The time period when responsibility is valid. If omitted, responsibility is always valid |
null |
Prerequisite
A single prerequisite for a course unit. Prerequisite can be either another course unit, a study module or a degree programme.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type required |
Message type |
null |
PrerequisiteGroup
Prerequisite group forms a group of Prerequisites of which are all compulsory / recommended for one prerequisite group. Prerequisite groups are optional to each other. Prerequisite groups must be imported after modules and course units as it enforces existence validation on course units and modules.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
prerequisites optional |
List of prerequisites which are all compulsory for this prerequisite group to be valid. |
null |
PrerequisiteGroupPrerequisitesInner
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type required |
Message type |
null |
||
courseUnitGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
moduleGroupId required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
ProductEnrolmentConstraint
Describes the constraints the product has on into which CourseUnitRealisations a student who purchases the product may enroll to.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
assessmentItemId required |
Id of the AssessmentItem these constraints involve |
NotNull |
otm-123456 |
|
maxNumberOfEnrolments optional |
Maximum number of CourseUnitRealisations the student may enroll to get the AssessmentItemAttainment. If not defined, a student may enrol to as many realisations they want during the validityPeriod of the purchased product |
Min(value = 0) |
[Integer] int32 |
null |
allowedCourseUnitRealisationIds optional |
All CourseUnitRealisations the student may enroll. If empty, student cannot enroll. If null, student may enroll to any CourseUnitRealisation of this AssessmentItem during the validityPeriod |
Set of [string] |
null |
|
overrideEnrolmentPeriodForCURIds required |
Ids of course unit realisations that have their enrolment periods overridden by product sales period when being selected 'available during sales period' in the open university product creation wizard. |
Set of [string] |
null |
PublicPerson
The public subset of personal information for displaying responsible persons of course units, educations and such.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
titles optional |
Titles for this person, for example 'dean' |
List of LocalizedString |
null |
|
firstName optional |
First name |
Size(max = 255, min = 1) |
null |
|
lastName optional |
Last name |
Size(max = 255, min = 1) |
null |
|
emailAddress optional |
Email address, if known |
Email(flags = [Ljakarta.validation.constraints.Pattern$Flag;@188d0e67, regexp = .*) |
null |
Qualification
Qualification related to a degree programme
ValidQualificationState
ValidRequirementCollectionsWhenPublished
QualificationIncludeCompetencies
ValidQualification
ValidQualificationType
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
type required |
Level of formality. Persisted value is never null. |
NotNull |
[String] enum FORMAL, CUSTOM, COMPETENCY, |
null |
name required |
Name of the qualification in question |
NotNull |
null |
|
printName optional |
Name to be printed on qualification certificate |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
code required |
Textual code |
NotNull |
null |
|
qualificationUrn optional |
Link to formal coding |
UrnCode(namespace = urn:code:qualification, onlySyntax = false) |
null |
|
competencyUrn optional |
Competency urn for this qualification |
UrnCode(namespace = urn:code:competency, onlySyntax = false) |
urn:code:competency:* |
|
requirementCollections optional |
Requirements ("suoritusvaatimukset") for the qualification in question |
Set of RequirementCollection |
null |
|
includeCompetencies optional |
Indicates if competencies can be presented when this qualification is attained |
null |
||
diplomaAppendix optional |
Formal description of qualification to be printed as a diploma appendix |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
instructions optional |
Instructions for checking whether to grant qualification |
LocalizedStringSize(maxSize = 8000, minSize = 1) |
null |
|
state required |
State of the qualification. Persisted value is never null. |
NotNull |
[String] enum NOT_READY, PUBLISHED, ARCHIVED, |
null |
publishedOn optional |
The timestamp the qualification was published on |
[date] date |
null |
|
customQualificationTypeUrn optional |
Link to custom qualification |
UrnCode(namespace = urn:code:custom-qualification-type, onlySyntax = false) |
urn:code:custom-qualification-type:* |
|
studyFieldUrn required |
Study field |
UrnCode(namespace = urn:code:study-field, onlySyntax = false) |
urn:code:study-field:* |
RecommendedFormalPrerequisitesRule
Evaluates to true if student has valid attainments for recommended formal prerequisites for the course unit selected in the enrolment
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
RequirementCollection
Requirements ("suoritusvaatimukset") for the qualification in question
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
parent required |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
degreeProgrammeGroupIds optional |
Set of [string] |
null |
||
studyModuleGroupIds optional |
Set of [string] |
null |
||
courseUnitGroupIds optional |
Set of [string] |
null |
||
description optional |
null |
|||
state required |
RequirementCollections have state based on whether they are published or archived.Only certain combinations of DocumentState and QualificationState are allowed (see API below and validator).RequirementCollections require their own state, as they can be archived separately from their parent Qualification. |
[String] enum PUBLISHED, ARCHIVED, |
null |
|
attainmentMethod required |
[String] enum AUTOMATIC, MANUAL, |
null |
||
educationTypeUrn optional |
A hierarchical code set. Supported values are the leaf nodes in the file available here |
urn:code:education-type:* |
||
name optional |
null |
Rule
Abstract base class of the classes comprising the rule language for describing possible children of modules.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId optional |
Unique identifier within some local context. Context must be defined in use site api documentation. Allowable values are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. |
otm-123456 |
||
type required |
null |
StudyEvent
Study event containing a series of event occurrences and locationIds for the events
FieldsNotNullWhenConditionTrue(condition = recursEvery != NEVER, fields = [Ljava.lang.String;@2b44ca50)
ValidStudyEvent
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
primaryCourseUnitRealisationId optional |
Primary course unit realisation determines access permissions for study event; permissions for course unit realisation implies permissions for study event. If no course unit realisation is set, all university staff with STAFF permission are allowed to edit the study event. |
otm-123456 |
||
name optional |
Name for the study event series if sharing between realisations is desired |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
locationIds optional |
Location(s) in which the event series occurs. An exam can take place in several halls at the same time. |
Size(max = 20, min = 0) |
Set of [string] |
null |
recursEvery required |
How often the event recurs. Persisted value is never null. |
NotNull |
[String] enum NEVER, DAILY, WEEKLY, EVERY_SECOND_WEEK, MONTHLY, |
null |
startTime required |
When the event occurs for the first time. Persisted value is never null. |
NotNull |
[Date] date-time |
null |
duration required |
How long a single event is (using ISO-8601 seconds based representation). Persisted value is never null. |
NotNull |
null |
|
recursUntil optional |
Recurs until this date (this date included). Mandatory for recurring events. |
[date] date |
null |
|
exceptions optional |
Possible exception dates when there are no planned events, for example holidays. Each date must be on the same day as one of the event instances. Event on exception dates are not visible to user. Defaults to an empty list. |
Size(max = 200, min = 0) |
List of [date] date |
null |
cancellations optional |
Cancelled events. Each date must be on the same day as one of the event instances. Cancelled events are visible to user with CANCELLED status. Defaults to an empty list. |
Size(max = 200, min = 0) |
List of [date] date |
null |
overrides optional |
Contains information about Event instances in which there are changes in teacherIds or locationIds or something else noteworthy. Must be on the same date as one of the event instances. If event instance is also in exceptions or cancellations, overrides are ignored. Defaults to an empty list. |
Size(max = 200, min = 0) |
List of EventOverride |
null |
events optional |
This field will be ignored if included in an import or a save, and is not included in export. The system populates Event instances of StudyEvents if requested. Events excluded by the exceptions field are included but marked as excluded. |
Set of Event |
null |
StudyGroupSet
A StudyGroupSet groups a set of StudySubGroups of which the student typically chooses one group when enrolling, but may be required to choose several. StudySubGroup selections are stored in Enrolment. Different type of teaching (lectures, exams, lab groups) of a course unit realisation is reflected by StudyGroupSets. Each course unit realisation has at least one sub group set. Eg. study unit instance 'CS101, spring 2015' may have two groups sets: "exam" and "lectures" of which "exam" has just one sub group and "lectures" has two sub groups A and B of which A has lectures on Mondays and B has lectures on Fridays. If different types of teaching are GRADED SEPARATELY, they are modeled as different ASSESSMENT ITEMS. If they are graded together, they are modeled as STUDY GROUP SETS.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
localId required |
Id, unique only locally, within the course unit realisation |
NotNull |
otm-123456 |
|
name required |
Name, unique only locally |
NotNull |
null |
|
studySubGroups required |
Study sub groups, a number of which the student has to select when enrolling |
NotNull |
List of StudySubGroup |
null |
subGroupRange required |
Range of possibilities, how many study sub groups the student can and must select. |
NotNull |
null |
StudyModule
A study module, which is not a degree programme or an education. Or a grouping module.
FieldsNotNullWhenConditionTrue(condition = graded, fields = [Ljava.lang.String;@6b754ae9) [Active]
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgIds required |
Ids of the home/owner universities for the object. Affects search results, visibility and access rights. If omitted during import, the system automatically sets this to a value corresponding to the university ID of the integration account used in the import. If set during import, must contain the id of the university ID of the integration account. Note: Support for multiple values in this field is deprecated; only a single value is allowed. |
NotEmpty |
Set of [string] |
null |
groupId required |
Id of the group this module belongs to. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name |
NotNull |
null |
|
moduleContentApprovalRequired optional |
Flag for setting this module as always requiring Module Content Approval. If required, Module Content Approval can be applied when the contents of the Module is set by the rules. Student can also apply for Module Content Approval when the contents is not by the rules using Free edit mode. |
null |
||
code required |
This code is shown to the user in the user interface. Possibly shown in the transcript. Modules with same codes must have the same group id. |
null |
||
curriculumPeriodIds required |
IDs of the curriculum periods to which this study module or degree programme belongs to. |
List of [string] |
null |
|
type required |
One of Education, DegreeProgramme, StudyModule, or GroupingModule |
null |
||
rule required |
null |
|||
targetCredits required |
null |
|||
approvalState required |
Approval State describes the state of the approval process for the object. Note that approval state has no effect on visibility; DocumentState dictates whether the document is published and visible to public e.g. students. |
[String] enum urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, urn:code:approval-state-type:not-approved, urn:code:approval-state-type:approved, |
null |
|
validityPeriod required |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
contentDescription optional |
null |
|||
additionalInfo optional |
null |
|||
responsibilityInfos required |
Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot") |
null |
||
organisations required |
Organisations in some relation to this module ("vastuuorganisaatiot"). Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
Set of OrganisationRoleShare |
null |
|
inclusionApplicationInstruction optional |
null |
|||
printName optional |
null |
|||
abbreviation optional |
Shown in the UI. May contain encoded information eg. on the study module organisation. |
null |
||
tweetText optional |
null |
|||
outcomes optional |
null |
|||
prerequisites optional |
null |
|||
substitutions optional |
null |
|||
searchTags optional |
Search tags are for searching. |
Set of [string] |
null |
|
studyLevel required |
Supported values available here |
urn:code:study-level:* |
||
possibleAttainmentLanguages required |
Defines the attainment languages possible for attainments of this study module |
Set of [string] |
null |
|
studyFields required |
Study field is for classification. There may be several. "koulutusala" |
Set of [string] |
null |
|
graded required |
Indicates whether this study module is a graded module |
null |
||
gradeScaleId optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
customCodeUrns optional |
Values for university-specific custom code books |
Map of [array] |
null |
|
contentFilter optional |
null |
|||
studyRightSelectionType required |
Study right selection type |
[String] enum urn:code:study-right-selection-type:minor-study-right, urn:code:study-right-selection-type:open-university-course-unit, urn:code:study-right-selection-type:separate-studies-module, urn:code:study-right-selection-type:separate-studies-course-unit, urn:code:study-right-selection-type:none, |
null |
|
minorStudyRightAcceptanceType optional |
Study right acceptance type |
[String] enum urn:code:study-right-acceptance-type:accepted-by-teacher, urn:code:study-right-acceptance-type:automatic, |
null |
|
minorStudyRightApplicationInstructions optional |
null |
StudyModuleAllOf
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
code optional |
This code is shown to the user in the user interface. Possibly shown in the transcript. Modules with same codes must have the same group id. |
null |
||
targetCredits optional |
null |
|||
curriculumPeriodIds optional |
IDs of the curriculum periods to which this study module or degree programme belongs to. |
List of [string] |
null |
|
approvalState optional |
Approval State describes the state of the approval process for the object. Note that approval state has no effect on visibility; DocumentState dictates whether the document is published and visible to public e.g. students. |
[String] enum urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, urn:code:approval-state-type:not-approved, urn:code:approval-state-type:approved, |
null |
|
validityPeriod optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
contentDescription optional |
null |
|||
additionalInfo optional |
null |
|||
responsibilityInfos optional |
Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot") |
null |
||
organisations optional |
Organisations in some relation to this module ("vastuuorganisaatiot"). Each organisation must be one of the home/root universities (universityOrgIds) or a descendant of one. |
Set of OrganisationRoleShare |
null |
|
inclusionApplicationInstruction optional |
null |
|||
printName optional |
null |
|||
abbreviation optional |
Shown in the UI. May contain encoded information eg. on the study module organisation. |
null |
||
tweetText optional |
null |
|||
outcomes optional |
null |
|||
prerequisites optional |
null |
|||
substitutions optional |
null |
|||
searchTags optional |
Search tags are for searching. |
Set of [string] |
null |
|
studyLevel optional |
Supported values available here |
urn:code:study-level:* |
||
possibleAttainmentLanguages optional |
Defines the attainment languages possible for attainments of this study module |
Set of [string] |
null |
|
studyFields optional |
Study field is for classification. There may be several. "koulutusala" |
Set of [string] |
null |
|
graded optional |
Indicates whether this study module is a graded module |
null |
||
gradeScaleId optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
customCodeUrns optional |
Values for university-specific custom code books |
Map of [array] |
null |
|
contentFilter optional |
null |
|||
studyRightSelectionType optional |
Study right selection type |
[String] enum urn:code:study-right-selection-type:minor-study-right, urn:code:study-right-selection-type:open-university-course-unit, urn:code:study-right-selection-type:separate-studies-module, urn:code:study-right-selection-type:separate-studies-course-unit, urn:code:study-right-selection-type:none, |
null |
|
minorStudyRightAcceptanceType optional |
Study right acceptance type |
[String] enum urn:code:study-right-acceptance-type:accepted-by-teacher, urn:code:study-right-acceptance-type:automatic, |
null |
|
minorStudyRightApplicationInstructions optional |
null |
StudyPeriod
Existing in the context of a StudyTerm, represents a study period (except thatno gaps are allowed between). Generated from StudyPeriodTemplates.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
locator optional |
null |
|||
valid optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
name optional |
null |
|||
size optional |
[Integer] int32 |
null |
||
visibleByDefault optional |
null |
|||
includedInTargetCreditsCalculation optional |
null |
|||
startDate optional |
[date] date |
null |
StudyPeriodTemplate
Template for generating StudyPeriod objects for StudyTerms generated from the StudyTermTemplate which contains this StudyPeriodTemplate
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
defaultValid required |
Range of time when the first generated StudyPeriod is valid (unless overridden by overrideValidities), additional ones are generated by adding whole years |
NotNull |
null |
|
overrideValidities optional |
When generating a StudyPeriod object for year N, search this list for a date range in year N (there must not be more than one). If one is found, use that range as the value of valid in the StudyPeriod. Otherwise add a whole number of years to StudyPeriodTemplate.defaultValid to get into the year N, and use that |
ContainsNoNulls |
List of LocalDateRange |
null |
name required |
Name of the study periods generated. |
NotNull |
null |
|
size required |
Relative size of this period's column in the timing tool in frontend-student |
NotNull |
[Integer] int32 |
null |
visibleByDefault optional |
Is this period visible by default in the timing tool. Defaults to false |
null |
||
includedInTargetCreditsCalculation optional |
Is this period included in the target credits calculation in the timing tool. Defaults to false. |
null |
StudyRightQuery
Defines conditions to query study rights.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
educationIds optional |
Query by education ID reference. |
Size(max = 200, min = 0) |
Set of [string] |
null |
educationGroupIds optional |
Query by group ID of education referenced by the study right. |
Size(max = 200, min = 0) |
Set of [string] |
null |
educationTypes optional |
Query by type of education referenced by the study right. |
Size(max = 200, min = 0) |
Set of [string] |
null |
learningOpportunityIds optional |
Query by learning opportunity ID reference. |
Size(max = 200, min = 0) |
Set of [string] |
null |
phase1OptionGroupIds optional |
Query by phase 1 education option group ID reference in accepted selection path. |
Size(max = 200, min = 0) |
Set of [string] |
null |
phase1OptionChildGroupIds optional |
Query by phase 1 education child option group ID reference in accepted selection path. |
Size(max = 200, min = 0) |
Set of [string] |
null |
phase1EducationClassificationUrns optional |
Query by phase 1 education classification urn. |
Size(max = 200, min = 0) |
Set of [string] |
null |
phase2OptionGroupIds optional |
Query by phase 2 education option group ID reference in accepted selection path. |
Size(max = 200, min = 0) |
Set of [string] |
null |
phase2OptionChildGroupIds optional |
Query by phase 2 education child option group ID reference in accepted selection path. |
Size(max = 200, min = 0) |
Set of [string] |
null |
phase2EducationClassificationUrns optional |
Query by phase 2 education classification urn. |
Size(max = 200, min = 0) |
Set of [string] |
null |
activePhase optional |
Query by active phase (1 = not yet graduated from first phase, 2 = graduated from first phase and not yet graduated from second phase). |
[String] enum PHASE1, PHASE2, |
null |
|
organisationIds optional |
Query by organisation ID reference. |
Size(max = 200, min = 0) |
Set of [string] |
null |
parentOrganisationIds optional |
Query by parent organisation ID of the organisation referenced by study right. |
Size(max = 200, min = 0) |
Set of [string] |
null |
StudySubGroup
See the docs of StudyGroupSet for more info.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
name required |
Name, unique only locally |
NotNull |
null |
|
studyEventIds required |
IDs of study event series(es) which generate the actual events of this study sub group. The dates of the study events must fall within the course unit realisation activity period. This is validated when CourseUnitRealisation is updated, but not validated when StudyEvent is updated. Persisted value is never null. |
Size(max = 200, min = 0) |
Set of [string] |
null |
teacherIds optional |
TODO should be structural, similar to responsibility info. Is name even correct? |
Size(max = 200, min = 0) |
Set of [string] |
null |
cancelled optional |
Is StudySubGroup cancelled. False by default. |
null |
||
size optional |
Size of the StudySubGroup |
[Integer] int32 |
null |
|
externalId optional |
External id which is used to reference the StudySubGroup in RIPA |
null |
StudyTerm
Existing in the context of a StudyYear, represents an academic study term, such as Spring 2015. Generated from a StudyTermTemplate.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
valid optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
name optional |
null |
|||
studyPeriods optional |
List of StudyPeriod |
null |
StudyTermTemplate
Template for generating StudyTerm objects for StudyYears generated from the StudyYearTemplate which contains this StudyTermTemplate.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
valid required |
Range of time when the first generated StudyTerm is valid, additional ones are generated by adding whole years |
NotNull |
null |
|
name required |
Name of the terms generated |
NotNull |
null |
|
studyPeriods required |
Templates for generating the StudyPeriods which are children of the StudyTerm generated |
NotEmpty |
List of StudyPeriodTemplate |
null |
StudyYear
Represents an academic study year. Generated from a StudyYearTemplate.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
valid optional |
FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate) |
null |
||
org optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
||
studyTerms optional |
An ordered list of study terms in this study year. |
List of StudyTerm |
null |
|
name optional |
null |
|||
startYear optional |
[Integer] int32 |
null |
StudyYearRange
Range of study years. Study years are represented as the number of the calendar year in which they start. The start year is mandatory, the end year is optional. If the end year is not given, the range never ends.
FieldsOrdered(allowEqual = false, greaterField = end, lesserField = start)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
start required |
Start year of range. |
NotNull |
[Integer] int32 |
null |
end optional |
End year of range or null. |
[Integer] int32 |
null |
StudyYearTemplate
The template for generating StudyYears. A template has a validity range of some years. For example, a template can be valid in [1.8.2014, 1.8.2017), which means that it will generate the StudyYears [1.8.2014, 1.8.2015), [1.8.2015, 1.8.2016), and [1.8.2016, 1.8.2017). The end date can be null, in which case the template will generate an unbounded number of StudyYears into the future. Because of this, the method for asking for StudyYears has an end date, so that infinite lists are not returned.
If the endDate is not the same day and month as the startDate, then the last generated year will not be exactly one year long. It will always be between 6 and 18 months. This is needed for the possible case that the StudyYear start will be changed from 1.8. at some time in the future.
Any given CurriculumPeriod's validity range must be contained in its entirety in a single StudyYearTemplate's validity range. A generated StudyYear, on the other hand, must be contained in a single CurriculumPeriod. (Which means that a CurriculumPeriod can be a single StudyYear, an entire StudyYearTemplate, or anything in between.)
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
valid required |
Range of time when this template is valid. Persisted value is never null. |
NotNull |
null |
|
org required |
Which university uses and owns this template |
NotNull |
otm-123456 |
|
studyTerms required |
Templates for generating the terms which are children of the year generated |
NotEmpty |
List of StudyTermTemplate |
null |
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
TermRegistrationRequirements
Defines term registration requirements for a university
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
requirements required |
Education type related term registration requirements; if an education type is not listed here, it doesn't require term registration |
NotNull |
null |
|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
universityOrgId required |
Which university uses and owns these requirements; same as the document ID. Persisted value is never null. |
NotNull |
otm-123456 |
|
id optional |
Unique identifier within source system. Prefixed with a source system specific prefix, guaranteeing uniqueness also locally. Allowable prefix values are 1 to 5 characters (a-z, A-Z) long. Allowable postfixes are 1 to 58 characters (a-z, A-Z, 0-9, dash (-) or underscore (_)) long. The separator is a dash (-). |
otm-123456 |
TimingTemplate
A module timing template. This model contains a suggestions on how to complete a degree programme / another module. A timing template contains a list of periods it is involved with and information on how course units are <u>suggested</u> to be placed on the time line.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
documentState optional |
State of this object: DRAFT, ACTIVE or DELETED |
[String] enum DRAFT, ACTIVE, DELETED, |
null |
|
id optional |
Unique identifier for this object. Persisted value is never null. |
NotNull |
otm-123456 |
|
universityOrgId required |
Ids of the university for the object. Automatically resolved based on account details. |
NotNull |
otm-123456 |
|
moduleId required |
The id of the module this timing template refers to. Persisted value is never null. |
NotNull |
otm-123456 |
|
studyYear required |
The first year this timing model applies to. The first year is supposed to be within the range of the curriculum period this model is attached to. Persisted value is never null. |
NotNull |
[Integer] int32 |
null |
name required |
The name informing about the purpose of this timing model. Persisted value is never null. |
NotNull |
null |
|
moduleTimings required |
A list of modules and the periods assigned for them in the timing model. |
NotNull |
List of ModuleTiming |
null |
courseUnitTimings required |
A list of course units that have timings planned. |
NotNull |
List of CourseUnitTiming |
null |
UniversitySettings
University specific settings for SISU.
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
universityOrgId required |
The university these settings belong to. Persisted value is never null. |
NotNull |
otm-123456 |
|
registryDescriptionUrl optional |
URL to registry privacy policy |
|||
universityNaviContentUrl optional |
null |
|||
bachelorsGraduateSurveyUrl optional |
null |
|||
amkGraduateSurveyUrl optional |
null |
|||
alumniAssociationUrl optional |
null |
|||
alumniAssociationDescription optional |
null |
|||
alumniAssociationInfoText optional |
null |
|||
moduleContentApplicationDescriptionText optional |
null |
|||
moduleContentApplicationDescriptionUrl optional |
null |
|||
inclusionApplicationDecisionCorrectionInstructionText optional |
null |
|||
helpdeskLink optional |
null |
|||
feedbackLink optional |
null |
|||
helpUrls optional |
null |
|||
frontendFeatureToggles optional |
null |
|||
messageSenderName optional |
Localized sender name for all messages sent automatically by the system. Used when the message sending was not initiated by any end user. |
LocalizedStringSize(maxSize = 255, minSize = 1) |
null |
|
openUniversitySettings optional |
Settings for Open University functions |
null |
||
defaultMunicipalityUrn optional |
The fallback education location for a StudyRight's phase, in case it is not defined in Education nor DegreeProgramme of a StudyRight |
NotNull |
urn:code:municipality:* |
|
moduleToggles optional |
Toggles to hide features from frontend related to modules. Note that these do not disable backend functionality! |
null |
||
featureToggles optional |
Feature toggles |
null |
ValidStudyRightRule
Valid study right rule evaluates to true if student has any study right that is valid during the activity period of the course unit realisation to be enrolled to
Field Name | Description | Validation | Schema | Example |
---|---|---|---|---|
type optional |
Person rule type |
null |
Validations
AssessmentItemId
OtmId or set of OtmIds which must refer to AssessmentItems of any state, which need not necessarily exist at the present time.
AtLeastOneResponsibilityCourseTeacher
At least one responsibility teacher required in responsibilityInfos.
AttainableModuleGroupId
OtmId or set of OtmIds which must refer by groupId to Modules (StudyModule, DegreeProgramme) of any state. Grouping modules are omitted as they are not attainable, but non-graded study modules are included
ConsistentOrganisation
Check that the organisation status as a 'root organisation' may not change for consecutive snapshots.
CooperationNetworkId
OtmId or set of OtmIds which must refer by groupId to CourseUnits of any state.
CooperationNetworkIdentifiersDirection
Validates that co-operation network direction has any of the given values
CourseUnitRealisationId
OtmId or set of OtmIds which must refer to non-DELETED CourseUnitRealisations.
FieldsOrdered
Check that lesserField compares before (or equal to, if explicitly allowed) greaterField. If either value is null, the validation passes.
LocalizedFieldLangs
Check than any languages mentioned in subsetLangsField exist in allLangsField. Both fields are of type Localized<?>.
MinMoney
The property must be a Money instance whose value is greater or equal than the specified minimum.
NonOverlappingCourseUnitRealisationResponsibilityInfos
Validates that validity periods of given responsibility infos (grouped by person id and role) do not overlap
NonOverlappingModuleResponsibilityInfos
Validates that validity periods of given responsibility infos (grouped by person id and role) do not overlap
OpenUniversityProductCodeId
OtmId or set of OtmIds which must refer to existing open university product codes.
OrganisationCode
Check that the code is unique within this university. Versions of same organisation (same id, different snapshotDateTime) can of course have same code.
UniversityOrganisations
Checks that all organisations in OtmId collection named by organisationsProperty are descendants (or possibly the same as one) of one of the root organisations in OtmId collection named by universitiesProperty
UrnCode
Structurally correct UrnCode of form urn:code:<codebook>:<value> where the validity of codebook and value is checked against known data.
ValidApprovalState
EntityWithApprovalState (CourseUnit, DegreeProgramme, StudyModule, or GroupingModule) gets checked that the approvalState and documentState are a legal combination. For documentState DRAFT the allowed approvalStates are urn:code:approval-state-type:not-ready, urn:code:approval-state-type:ready-for-approval, and urn:code:approval-state-type:not-approved. For documentState ACTIVE the allowed approvalState is urn:code:approval-state-type:approved. For documentState DELETED any approvalState is valid.
ValidAssessmentItemSnapshot
Check that values in fields named by sameValueProperties are the same in all existing snapshots of this AssessmentItem.
ValidCollaborationInstitution
Validates that collaboration institution specifies either a national institution or an international institution by using the special educationalInstitution codes for foreign institutions
ValidCompletionMethodRepeat
Validates that the study year template containing the mentioned study periods in the repeat is the same for all study periods, and that the validity period of this study year template contains the entire validity period of the repeat.
ValidConfirmedStudySubGroupModificationTime
Check that confirmedStudySubGroupModificationEnd time must be after enrolmentPeriodbut before activityPeriod ends.
ValidCooperationNetworkExternalIdReference
Validates the integrity of the referenced id and cooperation network’s details external id
ValidCourseUnitCode
Checks that within the universities listed in universityRootIds, code is partially unique so that two CourseUnits can have the same code only if they also have the same groupId.
ValidCourseUnitCredits
For each completionMethod, check that the sum of credits.max over assessmentItems is greater than or equal to courseUnit.credits.min, and that sum of credits.min over assessmentItems is less than or equal to courseUnits.credits.max.
ValidCourseUnitRealisationActivityPeriod
Check that activityPeriod does not conflict with enrolmentPeriod or enrolmentAdditionalCancellationEnd. Enrolment must end before activityPeriod. Also, enrolmentAdditionalCancellationEnd must end before activityPeriod ends.
ValidCourseUnitRealisationAndMassExamSession
Check that CourseUnitRealisation matches MassExamSession enrolmentPeriod, name and study events.
ValidCourseUnitRealisationEnrolmentPeriod
Check that enrolmentPeriod for CourseUnitRealisation is valid. Late enrolment periodmust not be before enrolment period, and lateEnrolmentEnd is not allowed with continuous enrolment.
ValidCourseUnitVersion
Check that for any CurriculumPeriod, at most one CourseUnit having the same groupId and that curriculumPeriodId exists.
ValidCourseUnitWithOpenUniversityCompletionMethod
Validates that courseUnit’s open university completion methods match with those in OpenUniversityProducts
ValidCurriculumPeriod
StudyYearTemplate start and end must coincide with start/end of a CurriculumPeriod. CurriculumPeriod start and end must coincide with start/end of a StudyYear.
ValidEducation
Checks that the combination of educationType and specialisationStudiesClassificationUrn is valid.
ValidEducationCode
Checks that within the universities listed in universityRootIds, code is partially unique so that two Educations can have the same code only if they also have the same groupId.
ValidEducationStructure
Checks that education structure is valid, options and child options and learning opportunities do not conflict.
ValidEducationStructureEducationClassificationUrns
Checks that education structure has all obligatory educationClassificationUrns, depending on existence of phase 2
ValidEntityWithCurriculumPeriodsValidity
For each CurriculumPeriod referred to by curriculumPeriodIds, check that CourseUnit.validityPeriod and CurriculumPeriod.activePeriod have at least one day of overlap.
ValidEntityWithEnrolmentConstraints
Validates that all allowed teaching defined in the enrolment constraints is organized (at least partly) during the validity period of the entity, and that the completion method and assessment item references are valid in the context of the referenced course unit.
ValidFlowState
Check that flowState and documentState of the validated entity are a valid combination. DocumentState of DELETED must have flowState NOT_READY. DocumentState of DRAFT can have flowStates NOT_READY or ARCHIVED. DocumentState of ACTIVE can have flowStates PUBLISHED, CANCELLED, or ARCHIVED.
ValidLearningEnvironments
Check that CourseUnitRealisation does not have too many primary learning environments for each language.
ValidMassExamSession
Validates that the enrolment-related dates are in the proper order in relation to each other and to the date when the session is held.
ValidOpenUniversityProductCode
Checks that open university product code is unique within a university.
ValidProductEnrolmentConstraint
Validates that the teaching offered during the sales period is a subset of all allowed teaching.
ValidQualificationState
Check that the qualification state and documentState of a Qualification are a valid combination.
ValidRequirementCollectionsWhenPublished
A published qualification must have valid requirement collections
ValidSalesPeriodBeforeValidityEndDate
Validates that the sales period is before validityPeriod end date
ValidSetOfOrganisationRoleShare
For each moment in time, from minus infinity to plus infinity, the sum of shares for all mentioned roles must be exactly 1.