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

Responses

Table 1. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultAdmissionTarget[ExportResultAdmissionTarget]

Produces
  • application/json

Samples

Import admission targets

POST /api/admission-targets/v1/import

Parameters

Body Parameter
Name Description Schema Example

AdmissionTarget required

List (AdmissionTarget)

Responses

Table 2. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 3. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultAssessmentItem[ExportResultAssessmentItem]

Produces
  • application/json

Samples

GET /api/assessment-items/v1/export?since=29269&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" : 29271,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre.e",
      "createdOn" : "2024-04-10T08:40:14.068875",
      "lastModifiedBy" : "spectre.e",
      "lastModifiedOn" : "2024-04-10T08:40:14.068894",
      "modificationOrdinal" : 29271
    },
    "documentState" : "DRAFT",
    "id" : "otm-f8a38ab0-ed90-412b-92a2-ea84db7adddb",
    "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-f457bf4c-2370-4d63-ae0a-7fdc72121527",
    "cooperationNetworkDetails" : null,
    "rdiCreditsEnabled" : "DISABLED"
  } ]
}

Get assessment item

GET /api/assessment-items/v1/{assessmentItemId}

Parameters

Path Parameters

Name

Description

Schema

Example

assessmentItemId required

String

otm-123456

Responses

Table 4. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

AssessmentItem[AssessmentItem]

Produces
  • application/json

Samples

GET /api/assessment-items/v1/otm-e77486c9-0587-44b2-9db2-e80a0f6cb81b 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: 961

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "spectre.e",
    "createdOn" : "2024-04-10T08:40:14.230765",
    "lastModifiedBy" : "spectre.e",
    "lastModifiedOn" : "2024-04-10T08:40:14.230777",
    "modificationOrdinal" : 29398
  },
  "documentState" : "DRAFT",
  "id" : "otm-e77486c9-0587-44b2-9db2-e80a0f6cb81b",
  "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-37e1bcf7-257f-4167-98f8-f9f813be8153",
  "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

Table 5. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-f9ac47bb-2b31-4d29-8e7e-a5d2be4273e2",
  "universityOrgIds" : [ "the-spectre" ],
  "credits" : {
    "min" : 10,
    "max" : 10
  },
  "name" : {
    "fi" : "AssessmentItem 2024-04-10T08:40:14.310473200"
  },
  "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

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

Responses

Table 6. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultBuilding[ExportResultBuilding]

Produces
  • application/json

Samples

GET /api/buildings/v1/export?since=29839&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" : 29842,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2024-04-10T08:40:15.14531",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2024-04-10T08:40:15.145325",
      "modificationOrdinal" : 29842
    },
    "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}

Parameters

Path Parameters

Name

Description

Schema

Example

buildingId required

String

otm-123456

Responses

Table 7. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Building[Building]

Produces
  • application/json

Samples

GET /api/buildings/v1/otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74 HTTP/1.1
Accept: application/json
Authorization: Bearer eyJraWQiOiJ0ZXN0LjEiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzUxMiJ9.eyJzdWIiOiJhcnNrYSIsInNjb3BlIjoiYWRtaW4gdXNlciIsImlzcyI6InNpcyIsInVuaXZlcnNpdHlPcmdJZHMiOiJoeS11bml2ZXJzaXR5LXJvb3QtaWQiLCJwZXJzb25pZCI6Im90bS1hZG1pbi1pZC0xIiwiZXhwIjoxNzEyNzI3Nzk1LCJ1c2VyaW5mbyI6e319.AZhP9MBSDnKFNcqDSFfMzHcqJADbYGiAMhK2_huF1kHhSxdyveQ8_gX3t_veRGslmz0fhTDa0c5j4JBrg-boXOi6AUrfpy5zM6ckb9lCt3kXiRpJARCKFzlG6zdIMwC5nVOfC7zm7T7fD21jbU0cUQ6oT76vajPNUJjgj3FrZaRIS9f6
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" : "2024-04-10T08:40:15.285537",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2024-04-10T08:40:15.285552",
    "modificationOrdinal" : 29925
  },
  "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

Table 8. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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

Responses

Table 9. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCodeBook[ExportResultCodeBook]

Produces
  • application/json

Samples

GET /api/codebooks/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: 660

{
  "greatestOrdinal" : 30556,
  "hasMore" : false,
  "entities" : [ {
    "urn" : "urn:code:test",
    "codeBookType" : "COMMON",
    "name" : {
      "fi" : "Dummy name"
    },
    "classificationScopeUrns" : [ ],
    "universityOrgIds" : [ "the-spectre" ],
    "codeVisibility" : "ALWAYS_VISIBLE",
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2024-04-10T08:40:16.505722",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2024-04-10T08:40:16.505737",
      "modificationOrdinal" : 30556
    },
    "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

Responses

Table 10. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCodeUniversityUsage[ExportResultCodeUniversityUsage]

Produces
  • application/json

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" : 30681,
  "hasMore" : false,
  "entities" : [ {
    "codesInUse" : [ "urn:code:test:foo" ],
    "documentState" : "ACTIVE",
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2024-04-10T08:40:16.774729",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2024-04-10T08:40:16.774746",
      "modificationOrdinal" : 30681
    },
    "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

Table 11. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

POST /api/codebooks/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 794
Host: localhost:8080

[ {
  "type" : "Code",
  "name" : {
    "fi" : "Nimi"
  },
  "shortName" : {
    "fi" : "Nimi"
  },
  "urn" : "urn:code:test:de1888d9:7826:4f50:a009:540dcc44c5ee",
  "parentUrn" : null,
  "isLeafNode" : true,
  "universitySpecifier" : null,
  "deprecated" : null
}, {
  "type" : "Code",
  "name" : {
    "fi" : "Nimi"
  },
  "shortName" : {
    "fi" : "Nimi"
  },
  "urn" : "urn:code:test:d7766b74:6737:4a78:bdac:0fc7a9179d9b",
  "parentUrn" : null,
  "isLeafNode" : true,
  "universitySpecifier" : null,
  "deprecated" : null
}, {
  "type" : "Code",
  "name" : {
    "fi" : "Nimi"
  },
  "shortName" : {
    "fi" : "Nimi"
  },
  "urn" : "urn:code:test:a87973bf:6328:4ac7:a6f5:e1b202323565",
  "parentUrn" : null,
  "isLeafNode" : true,
  "universitySpecifier" : null,
  "deprecated" : 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

Table 12. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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

Table 13. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCooperationNetwork[ExportResultCooperationNetwork]

Produces
  • application/json

Samples

===

POST /api/cooperation-networks/v1/import

Import cooperation networks

Parameters

Body Parameter
Name Description Schema Example

CooperationNetwork required

List (CooperationNetwork)

Responses

Table 14. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 15. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCooperationNetworkSettings[ExportResultCooperationNetworkSettings]

Produces
  • application/json

Samples

===

POST /api/cooperation-network-settings/v1/import

Import cooperation network settings

Parameters

Body Parameter
Name Description Schema Example

CooperationNetworkSettings required

List (CooperationNetworkSettings)

Responses

Table 16. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Table 17. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-8c486755-7746-4cc5-add2-5ac3ca4a36fa" ],
  "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

Responses

Table 18. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCourseUnit[ExportResultCourseUnit]

Produces
  • application/json

Samples

GET /api/course-units/v1/export?since=38269&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: 2768

{
  "greatestOrdinal" : 38314,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2024-04-10T08:40:33.435561",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2024-04-10T08:40:33.435581",
      "modificationOrdinal" : 38314
    },
    "documentState" : "DRAFT",
    "id" : "otm-0fa1f88f-7239-4d19-b91b-1a4182348b2f",
    "universityOrgIds" : [ "the-spectre" ],
    "groupId" : "otm-0fa1f88f-7239-4d19-b91b-1a4182348b2f",
    "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-0fa1f88f-7239-4d19-b91b-1a4182348b2f"
    },
    "code" : "Koodi-xyzzynen-otm-0fa1f88f-7239-4d19-b91b-1a4182348b2f",
    "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" : "324f3c72-ef14-4628-bb78-c4a275dd8cb9"
    }, {
      "type" : "LiteratureReference",
      "url" : "http://www.example.com",
      "localId" : "225902c5-1ea2-4e10-89a0-ac4502c4b355"
    } ],
    "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

Table 19. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[CourseUnit]

Produces
  • application/json

Samples

Get course units

GET /api/course-units/v1

They are fetched by their groupId. Documents in DRAFT and ACTIVE states are fetched.

Parameters

Query Parameters
Name Description Schema Example

groupId required

String

otm-123456

Responses

Table 20. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[CourseUnit]

Produces
  • application/json

Samples

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\".

Parameters

Path Parameters

Name

Description

Schema

Example

courseUnitId required

String

otm-123456

Responses

Table 21. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

CourseUnit[CourseUnit]

Produces
  • application/json

Samples

Import course units

POST /api/course-units/v1/import

Parameters

Body Parameter
Name Description Schema Example

CourseUnit required

List (CourseUnit)

Responses

Table 22. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-b5a0d091-8720-4162-88db-6d6e68183837",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-b5a0d091-8720-4162-88db-6d6e68183837",
  "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-b5a0d091-8720-4162-88db-6d6e68183837"
  },
  "code" : "Koodi-xyzzynen-otm-b5a0d091-8720-4162-88db-6d6e68183837",
  "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" : "a26db30d-bdde-4f6b-b905-1949be3d2cc2"
  }, {
    "type" : "LiteratureReference",
    "url" : "http://www.example.com",
    "localId" : "1af6b1cc-7835-4d57-8f25-d4e5363946b8"
  } ],
  "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

Table 23. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-2f41c90b-b43c-4571-8510-913977cedb0d",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-2f41c90b-b43c-4571-8510-913977cedb0d",
  "approvalState" : "urn:code:approval-state-type:not-ready",
  "credits" : null,
  "completionMethods" : [ ],
  "assessmentItemOrder" : null,
  "substitutions" : [ ],
  "name" : {
    "fi" : "Opintojakso, jonka koodi on Koodi-xyzzynen-otm-2f41c90b-b43c-4571-8510-913977cedb0d"
  },
  "code" : "Koodi-xyzzynen-otm-2f41c90b-b43c-4571-8510-913977cedb0d",
  "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" : "bc10c0de-bfba-471f-ac14-1f882c35f486"
  }, {
    "type" : "LiteratureReference",
    "url" : "http://www.example.com",
    "localId" : "2e7a66fd-5919-48ec-b700-11bcd2996ab2"
  } ],
  "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)

Responses

Table 24. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Table 25. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-379be824-e64f-4a22-940e-c8a5ea998da4",
  "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)

Responses

Table 26. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Return modified messages after modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option.

Boolean

true

Responses

Table 27. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[[object]]

Produces
  • /

Samples

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

Responses

Table 28. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCourseUnitRealisation[ExportResultCourseUnitRealisation]

Produces
  • application/json

Samples

GET /api/course-unit-realisations/v1/export?since=48537&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" : 48538,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2024-04-10T08:40:50.369439",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2024-04-10T08:40:50.369439",
      "modificationOrdinal" : 48538
    },
    "documentState" : "DRAFT",
    "id" : "otm-3289a70e-510f-4e89-bd1f-2d62e06a3367",
    "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" : "b7e79b14-2f29-49ab-89e9-1d03f1818109"
    } ],
    "learningMaterial" : null,
    "learningEnvironmentDescription" : null,
    "learningEnvironments" : [ ],
    "studyFormat" : null,
    "additionalInfo" : null,
    "publishDate" : "2024-02-10",
    "activityPeriod" : {
      "startDate" : "2024-02-10",
      "endDate" : "2024-12-10"
    },
    "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-1a518f43-7fe1-495a-915c-65c2f982af2a",
        "name" : {
          "fi" : "Group_1_AVirkkaus"
        },
        "studyEventIds" : [ "study-event-1" ],
        "teacherIds" : [ "otm-teacher-id-3" ],
        "cancelled" : false,
        "size" : null,
        "externalId" : null
      }, {
        "metadata" : null,
        "id" : "otm-eb30b966-3ceb-4ce0-a976-7ed6251f6454",
        "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" : "2024-02-03T00:00:00",
      "endDateTime" : "2024-02-09T00:00:00"
    },
    "lateEnrolmentEnd" : "2024-05-10T00:00:00",
    "enrolmentAdditionalCancellationEnd" : "2024-03-10T00: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}

Parameters

Path Parameters

Name

Description

Schema

Example

courseUnitRealisationId required

String

otm-123456

Responses

Table 29. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

CourseUnitRealisation[CourseUnitRealisation]

Produces
  • application/json

Samples

GET /api/course-unit-realisations/v1/otm-21d857fa-2816-425f-966e-3fb74b2bd207 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" : "2024-04-10T08:40:50.739165",
    "lastModifiedBy" : "spectre-course-unit-realisation-admin-user",
    "lastModifiedOn" : "2024-04-10T08:40:50.739165",
    "modificationOrdinal" : 48774
  },
  "documentState" : "DRAFT",
  "id" : "otm-21d857fa-2816-425f-966e-3fb74b2bd207",
  "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" : "c59d6e74-cd44-451b-ac3d-020d0e64b393"
  } ],
  "learningMaterial" : null,
  "learningEnvironmentDescription" : null,
  "learningEnvironments" : [ ],
  "studyFormat" : null,
  "additionalInfo" : null,
  "publishDate" : "2024-02-10",
  "activityPeriod" : {
    "startDate" : "2024-02-10",
    "endDate" : "2024-12-10"
  },
  "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-7c1c1f67-ea2c-45d5-b5c5-a6b0121d5ee5",
      "name" : {
        "fi" : "Group_1_AVirkkaus"
      },
      "studyEventIds" : [ "study-event-1" ],
      "teacherIds" : [ "otm-teacher-id-3" ],
      "cancelled" : false,
      "size" : null,
      "externalId" : null
    }, {
      "metadata" : null,
      "id" : "otm-030cf1b5-f2ea-4a01-900f-07e507910584",
      "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" : "2024-02-03T00:00:00",
    "endDateTime" : "2024-02-09T00:00:00"
  },
  "lateEnrolmentEnd" : "2024-05-10T00:00:00",
  "enrolmentAdditionalCancellationEnd" : "2024-03-10T00: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

Table 30. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-0bdb7955-8085-4e65-9ac1-9d043e029885",
  "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" : "2024-02-10",
    "endDate" : "2024-12-10"
  },
  "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

Table 31. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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" : "67e4ede8-2681-4bf2-ba3e-c5df480e1b56"
  } ],
  "learningMaterial" : null,
  "learningEnvironmentDescription" : null,
  "learningEnvironments" : [ ],
  "studyFormat" : null,
  "additionalInfo" : null,
  "publishDate" : null,
  "activityPeriod" : {
    "startDate" : "2024-02-10",
    "endDate" : "2024-12-10"
  },
  "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-98e75136-7938-450b-96f0-4fbbf4e5bcf3",
      "name" : {
        "fi" : "Group_1_AVirkkaus"
      },
      "studyEventIds" : [ "study-event-1" ],
      "teacherIds" : [ "otm-teacher-id-3" ],
      "cancelled" : false,
      "size" : null,
      "externalId" : null
    }, {
      "metadata" : null,
      "id" : "otm-4e72a412-81cc-4fab-b514-1471a6fe7e44",
      "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" : "2024-02-03T00:00:00",
    "endDateTime" : "2024-02-09T00:00:00"
  },
  "lateEnrolmentEnd" : "2024-05-10T00:00:00",
  "enrolmentAdditionalCancellationEnd" : "2024-03-10T00: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

Table 32. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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)

Responses

Table 33. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Return entities modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option.

Boolean

true

Responses

Table 34. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[[object]]

Produces
  • /

Samples

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

Responses

Table 35. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultCurriculumPeriod[ExportResultCurriculumPeriod]

Produces
  • application/json

Samples

GET /api/curriculum-periods/v1/export?since=50076&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: 675

{
  "greatestOrdinal" : 50078,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2024-04-10T08:40:53.267322",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2024-04-10T08:40:53.267348",
      "modificationOrdinal" : 50078
    },
    "documentState" : "ACTIVE",
    "id" : "otm-5ae3236e-54c0-403a-98d0-31394d445f4b",
    "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

Table 36. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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

Responses

Table 37. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultDegreeProgrammeAttainmentApplicationQuestionnaire[ExportResultDegreeProgrammeAttainmentApplicationQuestionnaire]

Produces
  • application/json

Samples

Import questionnaires

POST /api/degree-programme-attainment-application-questionnaires/v1/import

Parameters

Body Parameter
Name Description Schema Example

DegreeProgrammeAttainmentApplicationQuestionnaire required

List (DegreeProgrammeAttainmentApplicationQuestionnaire)

Responses

Table 38. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 39. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultDisclosureAuthorizationCategory[ExportResultDisclosureAuthorizationCategory]

Produces
  • application/json

Samples

Import disclosure authorization categories

POST /api/disclosure-categories/v1/import

Parameters

Body Parameter
Name Description Schema Example

DisclosureAuthorizationCategory required

List (DisclosureAuthorizationCategory)

Responses

Table 40. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 41. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultEducation[ExportResultEducation]

Produces
  • application/json

Samples

GET /api/educations/v1/export?since=53780&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" : 53781,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-edu-admin-user",
      "createdOn" : "2024-04-10T08:41:06.928012",
      "lastModifiedBy" : "spectre-edu-admin-user",
      "lastModifiedOn" : "2024-04-10T08:41:06.928027",
      "modificationOrdinal" : 53781
    },
    "documentState" : "DRAFT",
    "id" : "otm-add0934b-cc35-4817-8d55-9fddca2e7c5d",
    "universityOrgIds" : [ "the-spectre" ],
    "groupId" : "otm-add0934b-cc35-4817-8d55-9fddca2e7c5d",
    "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" : "45f58c9e-8ddf-495c-9444-d29f85d6639d",
          "moduleGroupId" : "test-dp-1",
          "childOptions" : [ ],
          "acceptanceType" : "AUTOMATIC",
          "childNaming" : "urn:code:education-option-naming-type:specialisation",
          "degreeTitleUrn" : null,
          "educationClassificationUrn" : null
        } ]
      },
      "phase2" : null,
      "learningOpportunities" : [ {
        "localId" : "7d16d58a-0b81-47c1-ba60-9663c1668373",
        "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" : "f11d0919-5e3b-4324-8269-7f94e268b822",
      "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

Table 42. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[Education]

Produces
  • application/json

Samples

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\".

Parameters

Path Parameters

Name

Description

Schema

Example

educationId required

String

otm-123456

Responses

Table 43. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Education[Education]

Produces
  • application/json

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: 2729

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "spectre-edu-admin-user",
    "createdOn" : "2024-04-10T08:41:05.455278",
    "lastModifiedBy" : "spectre-edu-admin-user",
    "lastModifiedOn" : "2024-04-10T08:41:05.455298",
    "modificationOrdinal" : 53307
  },
  "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-1572672608",
  "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" : "localId-121240778413203640",
      "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" : "38c20476-f944-4e8b-81b0-9ce197ce6d22",
    "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

Table 44. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

POST /api/educations/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 2479
Host: localhost:8080

[ {
  "metadata" : null,
  "id" : "otm-60636730-5e8c-416c-a287-49de300b5bfe",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-60636730-5e8c-416c-a287-49de300b5bfe",
  "name" : {
    "fi" : "TEol FM"
  },
  "validityPeriod" : {
    "startDate" : "1970-01-01",
    "endDate" : "2071-12-03"
  },
  "code" : "CODE--282842404",
  "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-121",
        "moduleGroupId" : "otm-testi-dp-TeM",
        "childOptions" : [ ],
        "acceptanceType" : "AUTOMATIC",
        "childNaming" : "urn:code:education-option-naming-type:specialisation",
        "degreeTitleUrn" : null,
        "educationClassificationUrn" : null
      } ]
    },
    "phase2" : null,
    "learningOpportunities" : [ {
      "localId" : "localId-121240778413203640",
      "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-1580532380",
    "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

Table 45. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

POST /api/educations/v1/import/legacy HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 2081
Host: localhost:8080

[ {
  "metadata" : null,
  "id" : "otm-cd30c6bb-831f-49f5-8caa-848708c25643",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-cd30c6bb-831f-49f5-8caa-848708c25643",
  "name" : {
    "fi" : "TEol FM"
  },
  "validityPeriod" : {
    "startDate" : "1970-01-01",
    "endDate" : "2071-12-03"
  },
  "code" : "CODE--1290370921",
  "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-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" : "localId-121240778413203640",
      "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-259673237",
    "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

Table 46. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Education[Education]

Produces
  • /

Samples

PATCH /api/educations/otm-eb6b8510-1eaf-43e9-9c9a-d15cfee7a418/learning-opportunities/localId-121240778413203640 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-c977104a-999f-44ec-9d4a-14b793fbecbb" ]
}
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: 2828

{
  "metadata" : {
    "revision" : 2,
    "createdBy" : "spectre.i",
    "createdOn" : "2024-04-10T08:41:04.685358",
    "lastModifiedBy" : "spectre.i",
    "lastModifiedOn" : "2024-04-10T08:41:04.697135",
    "modificationOrdinal" : 53006
  },
  "documentState" : "ACTIVE",
  "id" : "otm-eb6b8510-1eaf-43e9-9c9a-d15cfee7a418",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-eb6b8510-1eaf-43e9-9c9a-d15cfee7a418",
  "name" : {
    "fi" : "TEol FM"
  },
  "validityPeriod" : {
    "startDate" : "1970-01-01",
    "endDate" : "2071-12-03"
  },
  "code" : "CODE-862015736",
  "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" : "localId-121240778413203640",
      "name" : {
        "fi" : "Learning opportunity one two three"
      },
      "allowedPaths" : [ {
        "educationPhase1GroupId" : "otm-testi-dp-TeM"
      } ],
      "admissionTargetIds" : [ "otm-c977104a-999f-44ec-9d4a-14b793fbecbb" ],
      "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" : "b1756d23-062f-4e1b-b688-425e349d76ce",
    "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

Responses

Table 47. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultEnrolmentQuestionnaire[ExportResultEnrolmentQuestionnaire]

Produces
  • application/json

Samples

Import enrolment questionnaires

POST /api/enrolment-questionnaires/v1/import

Parameters

Body Parameter
Name Description Schema Example

EnrolmentQuestionnaire required

List (EnrolmentQuestionnaire)

Responses

Table 48. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

Import grade scales

POST /api/grade-scales/v1/import

Parameters

Body Parameter
Name Description Schema Example

GradeScale required

List (GradeScale)

Responses

Table 49. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

POST /api/grade-scales/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 32855
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" : "UG"
    },
    "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" : "UG"
    },
    "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" : "UG"
    },
    "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" : "UG"
    },
    "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" : "UG"
    },
    "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" : "UG"
    },
    "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

Responses

Table 50. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultInternationalContractualDegreeAgreement[ExportResultInternationalContractualDegreeAgreement]

Produces
  • application/json

Samples

Import international contractual degree agreements

POST /api/international-contractual-degree-agreements/v1/import

Parameters

Body Parameter
Name Description Schema Example

InternationalContractualDegreeAgreement required

List (InternationalContractualDegreeAgreement)

Responses

Table 51. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 52. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultLocation[ExportResultLocation]

Produces
  • application/json

Samples

GET /api/locations/v1/export?since=55190&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" : 55194,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2024-04-10T08:41:11.008357",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2024-04-10T08:41:11.008386",
      "modificationOrdinal" : 55194
    },
    "documentState" : "ACTIVE",
    "id" : "otm-27e83f10-0221-48e8-886a-37a7bc39af22",
    "universityOrgIds" : [ "the-spectre" ],
    "name" : {
      "fi" : "Location 2024-04-10T08:41:11.007505212",
      "sv" : "Location 2024-04-10T08:41:11.007505212"
    },
    "capacity" : 15,
    "buildingId" : "otm-54002d2d-e717-485d-b354-7a15cb80f54a",
    "building" : null
  } ]
}

Get location

GET /api/locations/v1/{locationId}

Parameters

Path Parameters

Name

Description

Schema

Example

locationId required

String

otm-123456

Responses

Table 53. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Location[Location]

Produces
  • application/json

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: 1242

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "arska",
    "createdOn" : "2024-04-10T08:41:11.28036",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2024-04-10T08:41:11.280401",
    "modificationOrdinal" : 55283
  },
  "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" : "2024-04-10T08:41:11.277203",
      "lastModifiedBy" : "spectre.i",
      "lastModifiedOn" : "2024-04-10T08:41:11.277245",
      "modificationOrdinal" : 55280
    },
    "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

Table 54. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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

Responses

Table 55. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultMassExamSession[ExportResultMassExamSession]

Produces
  • application/json

Samples

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)

Responses

Table 56. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Table 57. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-78f0fdb7-5df4-454e-92f2-d289b78d0a75", "otm-e5a7f8e1-f404-483c-b3f0-6ecc4f0fbe52" ],
  "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

Responses

Table 58. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultModule[ExportResultModule]

Produces
  • application/json

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: 2459

{
  "greatestOrdinal" : 60824,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-study-module-admin-user",
      "createdOn" : "2024-04-10T08:41:22.668965",
      "lastModifiedBy" : "spectre-study-module-admin-user",
      "lastModifiedOn" : "2024-04-10T08:41:22.669",
      "modificationOrdinal" : 60824
    },
    "documentState" : "DRAFT",
    "id" : "otm-ccbbfbbe-fceb-4343-8ec0-62465bf05a34",
    "universityOrgIds" : [ "the-spectre" ],
    "groupId" : "otm-ccbbfbbe-fceb-4343-8ec0-62465bf05a34",
    "name" : {
      "fi" : "Module that has ID otm-ccbbfbbe-fceb-4343-8ec0-62465bf05a34"
    },
    "moduleContentApprovalRequired" : false,
    "code" : "code-xyzzy-otm-ccbbfbbe-fceb-4343-8ec0-62465bf05a34",
    "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" : "8372f1c9-6e68-4508-8d25-1665f54019b3"
    }
  } ]
}

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

Responses

Table 59. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[[importModules_request_inner]]

Produces
  • application/json

Samples

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.

Parameters

Query Parameters
Name Description Schema Example

groupId required

String

otm-123456

Responses

Table 60. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[[importModules_request_inner]]

Produces
  • application/json

Samples

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.

Parameters

Path Parameters

Name

Description

Schema

Example

moduleId required

String

otm-123456

Responses

Table 61. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

importModules_request_inner[[importModules_request_inner]]

Produces
  • application/json

Samples

GET /api/modules/v1/otm-7985cf47-d2b6-414d-be9a-d4d641e9c2bf 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-7985cf47-d2b6-414d-be9a-d4d641e9c2bf
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" : "2024-04-10T08:41:21.699053",
    "lastModifiedBy" : "spectre-admin",
    "lastModifiedOn" : "2024-04-10T08:41:21.699083",
    "modificationOrdinal" : 60428
  },
  "documentState" : "DRAFT",
  "id" : "otm-7985cf47-d2b6-414d-be9a-d4d641e9c2bf",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-7985cf47-d2b6-414d-be9a-d4d641e9c2bf",
  "name" : {
    "fi" : "Module that has ID otm-7985cf47-d2b6-414d-be9a-d4d641e9c2bf"
  },
  "moduleContentApprovalRequired" : true,
  "code" : "code-xyzzy-otm-7985cf47-d2b6-414d-be9a-d4d641e9c2bf",
  "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" : "0aa112e9-5ba0-4304-a8b2-e68b1620794e"
  }
}

Import legacy modules

POST /api/modules/v1/import/legacy

Import with a lenient legacy validation

Parameters

Body Parameter
Name Description Schema Example

importModules_request_inner required

List ([importModules_request_inner])

Responses

Table 62. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-ec9a96d1-52b3-42fb-afd5-4065aa6b78d8",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-ec9a96d1-52b3-42fb-afd5-4065aa6b78d8",
  "name" : {
    "fi" : "Module that has ID otm-ec9a96d1-52b3-42fb-afd5-4065aa6b78d8"
  },
  "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" : "4a627ad6-7cfe-4e68-8bef-5197e4e5f0a1"
  }
}, {
  "metadata" : null,
  "id" : "otm-d07e2bc3-6e86-4cda-aa64-6a8874615e04",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-d07e2bc3-6e86-4cda-aa64-6a8874615e04",
  "name" : {
    "fi" : "Module that has ID otm-d07e2bc3-6e86-4cda-aa64-6a8874615e04"
  },
  "moduleContentApprovalRequired" : false,
  "code" : "code-xyzzy-otm-d07e2bc3-6e86-4cda-aa64-6a8874615e04",
  "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" : "439e588b-ab19-4f09-ac21-65c41412a9ff"
  }
} ]
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

Parameters

Body Parameter
Name Description Schema Example

importModules_request_inner required

List ([importModules_request_inner])

Responses

Table 63. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-4ab482f3-00f5-4692-af9b-554d6490e569",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-4ab482f3-00f5-4692-af9b-554d6490e569",
  "name" : {
    "fi" : "Module that has ID otm-4ab482f3-00f5-4692-af9b-554d6490e569"
  },
  "moduleContentApprovalRequired" : false,
  "code" : "code-xyzzy-otm-4ab482f3-00f5-4692-af9b-554d6490e569",
  "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" : "ea09455b-bc62-4abf-bb41-fd7eba03fa2a"
  }
}, {
  "metadata" : null,
  "id" : "otm-2f46e3e9-0346-47ef-9081-9134f3528b68",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-2f46e3e9-0346-47ef-9081-9134f3528b68",
  "name" : {
    "fi" : "Module that has ID otm-2f46e3e9-0346-47ef-9081-9134f3528b68"
  },
  "moduleContentApprovalRequired" : false,
  "code" : "code-xyzzy-otm-2f46e3e9-0346-47ef-9081-9134f3528b68",
  "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" : "51190e38-859a-496e-ac1f-5f2abb819241"
  }
} ]
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)

Responses

Table 64. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

Patch modules

PATCH /api/modules/v1/import

Patch import with strict validation

Parameters

Body Parameter
Name Description Schema Example

PatchEntity required

List (PatchEntity)

Responses

Table 65. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 66. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultOpenUniversityProductCode[ExportResultOpenUniversityProductCode]

Produces
  • application/json

Samples

Import open university product codes

POST /api/open-university-product-codes/v1/import

Parameters

Body Parameter
Name Description Schema Example

OpenUniversityProductCode required

List (OpenUniversityProductCode)

Responses

Table 67. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 68. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultOpenUniversityProduct[ExportResultOpenUniversityProduct]

Produces
  • application/json

Samples

Import open university products

POST /api/open-university-products/v1/import

Parameters

Body Parameter
Name Description Schema Example

OpenUniversityProduct required

List (OpenUniversityProduct)

Responses

Table 69. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Return modified messages after modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option.

Boolean

true

Responses

Table 70. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[[object]]

Produces
  • /

Samples

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

Responses

Table 71. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultOrganisation[ExportResultOrganisation]

Produces
  • application/json

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" : 61340,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre.e",
      "createdOn" : "2024-04-10T08:41:24.777959",
      "lastModifiedBy" : "spectre.e",
      "lastModifiedOn" : "2024-04-10T08:41:24.778001",
      "modificationOrdinal" : 61340
    },
    "documentState" : "DRAFT",
    "id" : "otm-2983ed7c-d16b-40c7-8697-1cdad13e0a49",
    "snapshotDateTime" : "2023-10-10T08:41:24.772192",
    "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

Table 72. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-df0c13ec-c311-4569-ae70-6ede8b40fd35",
  "snapshotDateTime" : "2025-04-10T08:41:23.522007",
  "universityOrgId" : "hy-university-root-id",
  "parentId" : "otm-9eb67e4f-4b75-42bf-90e8-97427a12f092",
  "predecessorIds" : [ "otm-21424bf5-aa7f-4b23-9a3f-937a55f01ab9", "otm-f57494b6-a5fe-4d5f-bd63-d8ad729b7d6a" ],
  "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-21424bf5-aa7f-4b23-9a3f-937a55f01ab9",
  "snapshotDateTime" : "2025-04-10T08:41:23.522007",
  "universityOrgId" : "hy-university-root-id",
  "parentId" : "otm-9eb67e4f-4b75-42bf-90e8-97427a12f092",
  "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-f57494b6-a5fe-4d5f-bd63-d8ad729b7d6a",
  "snapshotDateTime" : "2025-04-10T08:41:23.522007",
  "universityOrgId" : "hy-university-root-id",
  "parentId" : "otm-9eb67e4f-4b75-42bf-90e8-97427a12f092",
  "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

Table 73. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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" : "2024-03-26T08:41:24.358758"
}, {
  "metadata" : null,
  "documentState" : "ACTIVE",
  "id" : "otm-f4deb279-43ef-41cc-9ec8-9844c6215c93",
  "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" : "2023-10-10T08:41:24.358747"
}, {
  "metadata" : null,
  "documentState" : "ACTIVE",
  "id" : "otm-ef38e634-350a-406a-9dc4-602190b570ec",
  "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" : "2023-10-10T08:41:24.358747"
} ]
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)

Responses

Table 74. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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)

Responses

Table 75. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

Fetch list of organisation settings (internal)

GET /api/organisation-settings/for-university/{universityOrgId}

Fetch list of organisation settings by university organisation id

Parameters

Path Parameters

Name

Description

Schema

Example

universityOrgId required

University organisation id

String

otm-123456

Responses

Table 76. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[OrganisationSettings]

Produces
  • application/json

Samples

Fetch list of organisation settings

GET /api/organisation-settings/v1/for-university/{universityOrgId}

Fetch list of organisation settings by university organisation id

Parameters

Path Parameters

Name

Description

Schema

Example

universityOrgId required

University organisation id

String

otm-123456

Responses

Table 77. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[OrganisationSettings]

Produces
  • application/json

Samples

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

Responses

Table 78. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultPaymentCategory[ExportResultPaymentCategory]

Produces
  • application/json

Samples

Import payment categories

POST /api/payment-categories/v1/import

Parameters

Body Parameter
Name Description Schema Example

PaymentCategory required

List (PaymentCategory)

Responses

Table 79. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 80. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultPublicPerson[ExportResultPublicPerson]

Produces
  • application/json

Samples

GET /api/persons/v1/export?since=61424&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" : 61425,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2024-04-10T08:41:26.339126",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2024-04-10T08:41:26.339176",
      "modificationOrdinal" : 61425
    },
    "documentState" : "ACTIVE",
    "id" : "otm-1bc55ec8-8726-4b9a-9853-7d8f75a8700d",
    "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}

Parameters

Path Parameters

Name

Description

Schema

Example

personId required

String

otm-123456

Responses

Table 81. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

PublicPerson[PublicPerson]

Produces
  • application/json

Samples

GET /api/persons/v1/otm-ef95690e-c4fb-4271-8f09-3b57830af9fb HTTP/1.1
Accept: application/json
Authorization: Bearer eyJraWQiOiJ0ZXN0LjEiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzUxMiJ9.eyJzdWIiOiJhcnNrYSIsInNjb3BlIjoiYWRtaW4gdXNlciIsImlzcyI6InNpcyIsInVuaXZlcnNpdHlPcmdJZHMiOiJoeS11bml2ZXJzaXR5LXJvb3QtaWQiLCJwZXJzb25pZCI6Im90bS1hZG1pbi1pZC0xIiwiZXhwIjoxNzEyNzI3ODY1LCJ1c2VyaW5mbyI6e319.ASLGiQzcpwCFSDK5Bzr2RxBPbKxhNe8LSi7Dh0WSJfM7H7owYgW2jDLsVsrUY1ACkVlHqeE0MNJxu2zCNbP18UGRAGJ2AVNABr1Q69bfcd1n4gKDjwqAG4da5Lh31osGsasGOQozD48Q63VfGLwkodBNzEx0_L4UgczbaMWJZsrZrfyf
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" : "2024-04-10T08:41:25.893924",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2024-04-10T08:41:25.893959",
    "modificationOrdinal" : 61379
  },
  "documentState" : "ACTIVE",
  "id" : "otm-ef95690e-c4fb-4271-8f09-3b57830af9fb",
  "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

Table 82. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-01d1128b-629f-4213-bc47-fe03520da32b",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "titles" : [ ],
  "firstName" : "Uusi",
  "lastName" : "Ihminen",
  "emailAddress" : "sposti@ss.fi"
}, {
  "metadata" : null,
  "id" : "otm-126924e2-b98c-408d-a67b-d7a2b5a684b7",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "titles" : [ ],
  "firstName" : "Matti",
  "lastName" : "Matala",
  "emailAddress" : "mm@pp.fi"
}, {
  "metadata" : null,
  "id" : "otm-ee5a8e7e-98ec-4924-ac25-603791712080",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "titles" : [ {
    "fi" : "Suurmestari"
  } ],
  "firstName" : "Pertti",
  "lastName" : "Peltola",
  "emailAddress" : "pp@pp.fi"
}, {
  "metadata" : null,
  "id" : "otm-884a7b02-b4ca-45f3-a8c8-dcdc40287d42",
  "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

Parameters

Query Parameters
Name Description Schema Example

since optional

Exclusive

Long (int64)

789

sinceTime optional

Exclusive

Date (date-time)

2013-10-20T19:20:30+01:00

limit required

Integer (int32)

56

Responses

Table 83. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultQualification[ExportResultQualification]

Produces
  • application/json

Samples

Import Qualifications

POST /api/qualifications/v1/import

Parameters

Body Parameter
Name Description Schema Example

Qualification required

List (Qualification)

Responses

Table 84. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Responses

Table 85. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultStudyEvent[ExportResultStudyEvent]

Produces
  • application/json

Samples

GET /api/study-events/v1/export?since=61972&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" : 61973,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2024-04-10T08:41:28.318276",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2024-04-10T08:41:28.318328",
      "modificationOrdinal" : 61973
    },
    "documentState" : "ACTIVE",
    "id" : "otm-f00f3d0c-7850-4dfe-a2a2-f52a901b6700",
    "universityOrgIds" : [ "the-spectre" ],
    "primaryCourseUnitRealisationId" : null,
    "name" : {
      "fi" : "StudyEvent 2024-04-10T08:41:28.317420738"
    },
    "locationIds" : [ "test-lokaatio-id-001" ],
    "recursEvery" : "WEEKLY",
    "startTime" : "2024-02-17T10:00:00",
    "duration" : "PT2H",
    "recursUntil" : "2024-04-27",
    "exceptions" : [ "2024-04-20" ],
    "cancellations" : [ ],
    "overrides" : [ ],
    "events" : null
  } ]
}

Get study event

GET /api/study-events/v1/{studyEventId}

Parameters

Path Parameters

Name

Description

Schema

Example

studyEventId required

String

otm-123456

Responses

Table 86. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

StudyEvent[StudyEvent]

Produces
  • application/json

Samples

GET /api/study-events/v1/otm-a6cf80ab-8858-46ef-9a16-00032baa707f 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" : "2024-04-10T08:41:27.286052",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2024-04-10T08:41:27.286117",
    "modificationOrdinal" : 61639
  },
  "documentState" : "ACTIVE",
  "id" : "otm-a6cf80ab-8858-46ef-9a16-00032baa707f",
  "universityOrgIds" : [ "the-spectre" ],
  "primaryCourseUnitRealisationId" : null,
  "name" : {
    "fi" : "StudyEvent 2024-04-10T08:41:27.285012550"
  },
  "locationIds" : [ ],
  "recursEvery" : "WEEKLY",
  "startTime" : "2024-02-17T10:00:00",
  "duration" : "PT2H",
  "recursUntil" : "2024-04-27",
  "exceptions" : [ "2024-04-20" ],
  "cancellations" : [ ],
  "overrides" : [ ],
  "events" : [ {
    "start" : "2024-02-17T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-02-17T12:00:00"
  }, {
    "start" : "2024-02-24T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-02-24T12:00:00"
  }, {
    "start" : "2024-03-02T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-03-02T12:00:00"
  }, {
    "start" : "2024-03-09T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-03-09T12:00:00"
  }, {
    "start" : "2024-03-16T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-03-16T12:00:00"
  }, {
    "start" : "2024-03-23T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-03-23T12:00:00"
  }, {
    "start" : "2024-03-30T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-03-30T12:00:00"
  }, {
    "start" : "2024-04-06T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-04-06T12:00:00"
  }, {
    "start" : "2024-04-13T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-04-13T12:00:00"
  }, {
    "start" : "2024-04-20T10:00:00",
    "duration" : "PT2H",
    "excluded" : true,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-04-20T12:00:00"
  }, {
    "start" : "2024-04-27T10:00:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2024-04-27T12:00:00"
  } ]
}

Import study events

POST /api/study-events/v1/import

Parameters

Body Parameter
Name Description Schema Example

StudyEvent required

List (StudyEvent)

Responses

Table 87. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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-a62154fd-6976-44b2-9352-894def152a22",
  "universityOrgIds" : [ "the-spectre" ],
  "primaryCourseUnitRealisationId" : null,
  "name" : {
    "fi" : "StudyEvent 2024-04-10T08:41:27.451576820"
  },
  "locationIds" : [ "test-lokaatio-id-001" ],
  "recursEvery" : "WEEKLY",
  "startTime" : "2024-02-17T10:00:00",
  "duration" : "PT2H",
  "recursUntil" : "2024-04-27",
  "exceptions" : [ "2024-04-20" ],
  "cancellations" : [ ],
  "overrides" : [ ],
  "events" : null
}, {
  "metadata" : null,
  "id" : "otm-df420bd9-cd43-4d20-a5c0-b73981319231",
  "universityOrgIds" : [ "the-spectre" ],
  "primaryCourseUnitRealisationId" : null,
  "name" : {
    "fi" : "StudyEvent 2024-04-10T08:41:27.451609933"
  },
  "locationIds" : [ "test-lokaatio-id-001" ],
  "recursEvery" : "WEEKLY",
  "startTime" : "2024-02-17T10:00:00",
  "duration" : "PT2H",
  "recursUntil" : "2024-04-27",
  "exceptions" : [ "2024-04-20" ],
  "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

Return entities modified after (exclusive comparison) this modification ordinal Alternate parameter with sinceTime. This is the recommended option.

Boolean

true

Responses

Table 88. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[[object]]

Produces
  • /

Samples

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

Responses

Table 89. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultStudyYearTemplate[ExportResultStudyYearTemplate]

Produces
  • application/json

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" : 63734,
  "hasMore" : false,
  "entities" : [ {
    "id" : "otm-23e5e549-8cb3-4514-aa5f-888891598b79",
    "valid" : {
      "startDate" : "2017-01-01",
      "endDate" : "2020-01-01"
    },
    "org" : "the-spectre",
    "studyTerms" : null,
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2024-04-10T08:41:33.961727",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2024-04-10T08:41:33.961792",
      "modificationOrdinal" : 63734
    },
    "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

Table 90. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

List[StudyYear]

Produces
  • application/json

Samples

Import study year templates

POST /api/study-year-templates/v1/import

Parameters

Body Parameter
Name Description Schema Example

StudyYearTemplate required

List (StudyYearTemplate)

Responses

Table 91. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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

Responses

Table 92. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultTermRegistrationRequirements[ExportResultTermRegistrationRequirements]

Produces
  • application/json

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: 584

{
  "greatestOrdinal" : 63824,
  "hasMore" : false,
  "entities" : [ {
    "requirements" : [ {
      "educationTypeUrn" : "urn:code:education-type:test",
      "studentUnionMembershipFeeRequirement" : "POSSIBLE"
    } ],
    "documentState" : "ACTIVE",
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre.e",
      "createdOn" : "2024-04-10T08:41:34.61105",
      "lastModifiedBy" : "spectre.e",
      "lastModifiedOn" : "2024-04-10T08:41:34.611116",
      "modificationOrdinal" : 63824
    },
    "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

Table 93. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

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

Responses

Table 94. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

ExportResultTimingTemplate[ExportResultTimingTemplate]

Produces
  • application/json

Samples

Import timing templates

POST /api/timing-templates/v1/import

Parameters

Body Parameter
Name Description Schema Example

TimingTemplate required

List (TimingTemplate)

Responses

Table 95. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

Samples

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

Table 96. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

UniversitySettings[UniversitySettings]

Produces
  • application/json

Samples

POST /api/university-settings/v1 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1106
Host: localhost:8080

{
  "universityOrgId" : "the-spectre",
  "messageSenderName" : null,
  "openUniversitySettings" : null,
  "defaultMunicipalityUrn" : "urn:code:municipality:405",
  "universityType" : "UNIVERSITY",
  "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: 1106

{
  "universityOrgId" : "the-spectre",
  "messageSenderName" : null,
  "openUniversitySettings" : null,
  "defaultMunicipalityUrn" : "urn:code:municipality:405",
  "universityType" : "UNIVERSITY",
  "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

Parameters

Path Parameters

Name

Description

Schema

Example

universityOrgId required

University organisation id

String

otm-123456

Responses

Table 97. http response codes
Code Message Datatype

400

Bad request

422

Validation failed

403

Authorization failed, access forbidden

401

Authentication required

200

OK

UniversitySettings[UniversitySettings]

Produces
  • application/json

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: 1106

{
  "universityOrgId" : "the-spectre",
  "messageSenderName" : null,
  "openUniversitySettings" : null,
  "defaultMunicipalityUrn" : "urn:code:municipality:405",
  "universityType" : "UNIVERSITY",
  "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

[String]

null

Address

Represents addresses for physical locations

Field Name Description Validation Schema Example

countryUrn required

Represents Uniform Resource Names for country names. Supported values available here

UrnCode(namespace = urn:code:country, onlySyntax = false)
NotNull

[String]

urn:code:country:*

isUserEditable optional

Set to false to prevent address from being edited in the user interface.

[Boolean]

null

type required

Address type, either GenericAddress or FinnishAttainment

[String]

null

AdmissionTarget

Admission target indicates what studies a new student is admitted to.

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 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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

code required

Code that identifies this admission target in OILI documents (Hakukohdekoodi)

NotNull

[String]

null

description optional

LocalizedString

null

studyRightConfirmationType optional

Indicates whether study right confirmation for admission target can be made 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.

[String]

otm-123456

type required

[String]

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.

[String]

otm-123456

type required

[String]

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.

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

credits required

CreditRange

null

name required

LocalizedString

null

nameSpecifier optional

LocalizedString

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 (-).

NotNull [Draft, Active, Deleted, Legacy]
GradeScaleId

[String]

otm-123456

possibleAttainmentLanguages optional

Defines the attainment languages possible for attainments of this assessment item

UrnCode(namespace = urn:code:language, onlySyntax = false)
ContainsNoNulls

Set of [string]

null

assessmentItemType required

Supported values available here

NotNull [Draft, Active, Deleted, Legacy]
UrnCode(namespace = urn:code:assessment-item-type, onlySyntax = false)

[String]

urn:code:assessment-item-type:*

contentDescription optional

LocalizedMarkupString

null

studyFormat optional

LocalizedMarkupString

null

grading optional

LocalizedString

null

learningMaterial optional

LocalizedMarkupString

null

literature optional

Structured version of learning material used

Size(max = 200, min = 0)
ContainsNoNulls

Set of [CourseUnit_literature_inner]

null

studyField optional

Supported values available here

UrnCode(namespace = urn:code:study-field, onlySyntax = false)

[String]

urn:code:study-field:*

subject optional

Supported values available here

UrnCode(namespace = urn:code:subject, onlySyntax = false)

[String]

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)
ContainsNoNulls

Set of PersonWithModuleResponsibilityInfoType

null

organisations required

Organisations responsible for this in various ways and fractions

NotEmpty
Size(max = 200, min = 0)
ValidSetOfOrganisationRoleShare
ContainsNoNulls

Set of OrganisationRoleShare

null

primaryCourseUnitGroupId 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 (-).

NotNull
CourseUnitGroupId

[String]

otm-123456

cooperationNetworkDetails optional

CooperationNetworkDetails

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

[String]

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

[String]

urn:code:degree-program-type:*

creditRange required

CreditRange

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

[String]

urn:code:degree-program-type:*

creditRange optional

CreditRange

null

Building

A building in which Locations of StudyEvents can be

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

name required

LocalizedString

null

address required

NotNull

[Building_address]

null

BuildingAddress

NotNull

Field Name Description Validation Schema Example

countryUrn required

Represents Uniform Resource Names for country names. Supported values available here

UrnCode(namespace = urn:code:country, onlySyntax = false)
NotNull

[String]

urn:code:country:*

isUserEditable optional

Set to false to prevent address from being edited in the user interface.

[Boolean]

null

type required

Address type, either GenericAddress or FinnishAttainment

[String]

null

streetAddress optional

Street address part of the address

[String]

null

postalCode optional

Postal code of the address

[String]

null

city optional

City of the address

[String]

null

address optional

The whole address excluding the country

[String]

null

Code

Represents single code within codebook

Field Name Description Validation Schema Example

name required

LocalizedString

null

shortName optional

LocalizedString

null

urn required

Uniform Resource Name for the code, used when referring to this code

NotNull
UrnCode(namespace = , onlySyntax = true)

[String]

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)

[String]

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.

[Boolean]

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.

[Boolean]

null

type required

[String]

null

CodeBook

Field Name Description Validation Schema Example

urn required

Uniform resource name for this code book

NotNull
UrnCode(namespace = , onlySyntax = true)

[String]

null

codeBookType optional

Code books use CodeBookState to separate custom codebooks from common codebooks.

[String] enum COMMON, CUSTOM,

null

name required

LocalizedString

null

classificationScopeUrns optional

Scopes where this classification should be used

Size(max = 20, min = 0)
UrnCode(namespace = urn:code:classification-scope, onlySyntax = false)
ContainsNoNulls

Set of [string]

null

universityOrgIds required

Id of the university that owns this codebook.

OrganisationId
ContainsNoNulls

Set of [string]

null

codeVisibility optional

Code visibility setting: are all always shown or can unused be hidden

[String] enum ALWAYS_VISIBLE, HIDING_CODES_ALLOWED,

null

documentState optional

DocumentState determines whether a document is visible to public, students or staff.

[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

LocalizedString

null

shortName optional

LocalizedString

null

urn required

Uniform Resource Name for the code, used when referring to this code

NotNull
UrnCode(namespace = , onlySyntax = true)

[String]

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)

[String]

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.

[Boolean]

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.

[Boolean]

null

type required

[String]

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.

[String]

null

alpha2 optional

The ISO 3166 alpha2 code

[String]

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)

[String]

null

hideUnselectedCodes optional

Boolean for storing the value of the checkbox for hiding codes in the UI

[Boolean]

null

CodeUniversityUsage

Field Name Description Validation Schema Example

codesInUse required

Codes used in this university

UrnCode(namespace = , onlySyntax = true)
ContainsNoNulls

Set of [string]

null

documentState optional

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

OrganisationId
NotNull

[String]

otm-123456

codeBookSettings optional

CodeBookSettings

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 (-).

[String]

otm-123456

CollaborationInstitution

Institution an organisation collaborates with, especially intended for open university activity.

Field Name Description Validation Schema Example

educationalInstitutionUrn required

Represents Uniform Resource Names for educational institutions. Supported values available here

UrnCode(namespace = urn:code:educational-institution, onlySyntax = false)
NotNull

[String]

urn:code:educational-institution:*

internationalInstitutionUrn optional

Represents Uniform Resource Names for international institutions. Supported values available here

UrnCode(namespace = urn:code:international-institution, onlySyntax = false)

[String]

urn:code:international-institution:*

CompetencyCode

Represents single competency code within codebook

Field Name Description Validation Schema Example

name required

LocalizedString

null

shortName optional

LocalizedString

null

urn required

Uniform Resource Name for the code, used when referring to this code

NotNull
UrnCode(namespace = , onlySyntax = true)

[String]

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)

[String]

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.

[Boolean]

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.

[Boolean]

null

type required

[String]

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

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.

NotNull

[String]

otm-123456

description optional

LocalizedMarkupString

null

studyType required

Type of studies, ie Degree Studies vs Open University Studies

NotNull

[String] enum DEGREE_STUDIES, OPEN_UNIVERSITY_STUDIES, SEPARATE_STUDIES,

null

assessmentItemOptionalityDescription optional

LocalizedMarkupString

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.

[Boolean]

null

require optional

IntRange

null

typeOfRequire required

Possible value for CompletionMethod assessmentItem requireType

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)
NotEmpty [Active]
AssessmentItemId
ContainsNoNulls

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
Size(max = 20, min = 0)

List of CompletionMethodRepeat

null

evaluationCriteria optional

LocalizedString

null

prerequisites optional

LocalizedString

null

CompletionMethodRepeat

Description of one (of possibly many simultaneously existing) repeat mechanisms for a completion method

Field Name Description Validation Schema Example

studyYearRange required

FieldsOrdered(allowEqual = false, greaterField = end, lesserField = start)

StudyYearRange

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
NotEmpty
Size(max = 20, min = 0)
ContainsNoNulls

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.

[String]

otm-123456

type required

[String]

null

rules required

Child rules. For legacy and draft, empty list is alowed

List of Rule

null

require optional

IntRange

null

description optional

LocalizedMarkupString

null

allMandatory optional

[Boolean]

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

IntRange

null

description optional

LocalizedMarkupString

null

allMandatory optional

[Boolean]

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

[String]

null

ContentFilter

Content filters for module

Field Name Description Validation Schema Example

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

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

otm-123456

networkId optional

External (RIPA) id of the co-operation network

[String]

null

name optional

LocalizedString

null

abbreviation optional

Abbreviation of the co-operation network

[String]

null

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDateTime, lesserField = startDateTime)

LocalDateTimeRange

null

organisations optional

Describes organisations that are part of this co-operation network

ContainsNoNulls

Set of CooperationNetworkOrganisation

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

Cooperation network direction seen from SISU

NotNull

[String] enum INBOUND, OUTBOUND, NONE,

null

cooperationNetworkShares optional

Set of CooperationNetworkShare

null

externalId required

External (RIPA) identifier of the entity.

NotNull

[String]

null

networks required

Co-operation networks this entity is part of

ContainsNoNulls
NotEmpty

Set of CooperationNetworkShare

null

outboundStatus optional

Co-operation network status for entities that are sent through RIPA to a cooperation network host 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

[String]

null

CooperationNetworkIdentifiers

Co-operation network identifiers for organisations that are related to RIPA

Field Name Description Validation Schema Example

direction required

Cooperation network direction seen from 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

[String]

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

[String]

null

roleUrn required

Supported values available here

NotNull

[String]

urn:code:cooperation-network-organisation-role:*

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDateTime, lesserField = startDateTime)

LocalDateTimeRange

null

CooperationNetworkSettings

RIPA co-operation network settings for a university.

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 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 (-).

NotNull

[String]

otm-123456

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 (-).

OrganisationId
NotNull

[String]

otm-123456

cooperationNetworkId 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 (-).

CooperationNetworkId
NotNull

[String]

otm-123456

homeUniversitySettings optional

HomeUniversitySettings

null

hostUniversitySettings optional

HostUniversitySettings

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

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 (-).

CooperationNetworkId

[String]

otm-123456

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

CountryCode

Represents a single country code within a codebook.

Field Name Description Validation Schema Example

name required

LocalizedString

null

shortName optional

LocalizedString

null

urn required

Uniform Resource Name for the code, used when referring to this code

NotNull
UrnCode(namespace = , onlySyntax = true)

[String]

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)

[String]

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.

[Boolean]

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.

[Boolean]

null

type required

[String]

null

numeric optional

The ISO 3166 numeric code associated with this country code.

[String]

null

alpha2 optional

The ISO 3166 alpha2 code

[String]

null

CountryCodeAllOf

Field Name Description Validation Schema Example

numeric optional

The ISO 3166 numeric code associated with this country code.

[String]

null

alpha2 optional

The ISO 3166 alpha2 code

[String]

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.

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

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.

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

CreditRange

null

completionMethods optional

The possible completion methods of this course unit. (missing if under construction)

ContainsNoNulls
Size(max = 200, min = 0)

List of CompletionMethod

null

assessmentItemOrder optional

Order for completion methods assessment items.

AssessmentItemId
ContainsNoNulls
Size(max = 4000, min = 0)

Set of [string]

null

substitutions optional

Alternative ways of reaching the goals of this course unit.

ContainsNoNulls
Size(max = 200, min = 0)

Set of [set]

null

name required

LocalizedString

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]
Size(max = 100, min = 1)
ValidSanitized

[String]

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)
ValidSanitized

[String]

null

validityPeriod required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

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 (-).

NotNull [Active]
GradeScaleId

[String]

otm-123456

tweetText optional

LocalizedString

null

outcomes optional

LocalizedMarkupString

null

prerequisites optional

LocalizedMarkupString

null

content optional

LocalizedMarkupString

null

additional optional

LocalizedMarkupString

null

learningMaterial optional

LocalizedMarkupString

null

literature optional

Structured version of learning material used

ContainsNoNulls
Size(max = 200, min = 0)

Set of [CourseUnit_literature_inner]

null

searchTags optional

Tags for use in user searches

ContainsNoNulls
Size(max = 200, min = 0)

Set of [string]

null

categoryTags optional

Structural tags selected from a configurable set

UrnCode(namespace = urn:code:category-tag, onlySyntax = false)
ContainsNoNulls
Size(max = 200, min = 0)

Set of [string]

null

recommendedFormalPrerequisites optional

List of Prerequisite groups which are recommended formal prerequisites.

ContainsNoNulls
Size(max = 200, min = 0)

List of PrerequisiteGroup

null

compulsoryFormalPrerequisites optional

List of Prerequisite groups which are compulsory formal prerequisites.

ContainsNoNulls
Size(max = 200, min = 0)

List of PrerequisiteGroup

null

studyFields required

Study field is for classification. There may be several. "koulutusala"

NotEmpty [Active]
Size(max = 20, min = 0)
UrnCode(namespace = urn:code:study-field, onlySyntax = false)
ContainsNoNulls

Set of [string]

null

studyLevel required

Supported values available here

UrnCode(namespace = urn:code:study-level, onlySyntax = false)
NotNull [Active]

[String]

urn:code:study-level:*

courseUnitType required

Supported values available here

UrnCode(namespace = urn:code:course-unit-type, onlySyntax = false)
NotNull [Active]

[String]

urn:code:course-unit-type:*

subject optional

Supported values available here

UrnCode(namespace = urn:code:subject, onlySyntax = false)

[String]

urn:code:subject:*

cefrLevel optional

Supported values available here

UrnCode(namespace = urn:code:cefr-level, onlySyntax = false)

[String]

urn:code:cefr-level:*

responsibilityInfos required

Persons and roles responsible for this in various ways and fractions

NotEmpty [Active]
Size(max = 200, min = 0)
ContainsNoNulls
AtLeastOneResponsibilityTeacher [Active]

Set of PersonWithModuleResponsibilityInfoType

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]
Size(max = 200, min = 0)
ValidSetOfOrganisationRoleShare [Active, Draft]
ContainsNoNulls

Set of OrganisationRoleShare

null

possibleAttainmentLanguages required

Defines the attainment languages possible for attainments of this course unit

UrnCode(namespace = urn:code:language, onlySyntax = false)
ContainsNoNulls
NotEmpty [Active]
Size(max = 200, min = 0)

Set of [string]

null

equivalentCoursesInfo optional

LocalizedMarkupString

null

curriculumPeriodIds required

Curriculum periods to which this course unit belongs.

NotEmpty [Legacy, Active, Draft, Deleted]
Size(max = 200, min = 0)
CurriculumPeriodId
ContainsNoNulls

List of [string]

null

customCodeUrns optional

Values for university-specific custom code books

Size(max = 200, min = 0)

Map of [array]

null

inclusionApplicationInstruction optional

LocalizedMarkupString

null

cooperationNetworkDetails optional

CooperationNetworkDetails

null

s2r2Classification optional

Supported values available here

UrnCode(namespace = urn:code:s2r2-classification, onlySyntax = false)

[String]

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.

[String]

otm-123456

type required

[String]

null

rule required

Rule

null

count required

IntRange

null

CourseUnitCountRuleAllOf

Field Name Description Validation Schema Example

rule optional

Rule

null

count optional

IntRange

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

[String]

null

CourseUnitLiteratureInner

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.

NotNull

[String]

otm-123456

type required

[String]

null

name required

The name

[String]

null

url required

The url

[String]

null

CourseUnitPrerequisite

Field Name Description Validation Schema Example

type required

Message type

[String]

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 (-).

[String]

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 (-).

[String]

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

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

flowState required

Course unit realisation uses FlowState (also open university products use both flowState and documentState), because CURs do not have an approval process but still require a state to indicate whether they are being defined, are ready, or cancelled. Only certain FlowState/DocumentState combinations are allowed, but that is not enforced. FlowState together with DocumentState, activityPeriod and publishDate affect how CURs can be fetched by ID or searched by staff and students. I would write a description about that here if I knew how it really worked.

NotNull [Active, External]

[String] enum NOT_READY, PUBLISHED, CANCELLED, ARCHIVED,

null

massExamSessionId 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 (-).

MassExamSessionId

[String]

otm-123456

massExamSessionName optional

LocalizedString

null

name required

LocalizedString

null

nameSpecifier required

LocalizedString

null

assessmentItemIds required

Ids of all assessment items this realisation is a realisation of

NotEmpty [Active]
AssessmentItemId
Size(max = 200, min = 0)
ContainsNoNulls

Set of [string]

null

tweetText optional

LocalizedString

null

literature optional

Structured version of learning material used

Size(max = 200, min = 0)
ContainsNoNulls

Set of [CourseUnit_literature_inner]

null

learningMaterial optional

LocalizedMarkupString

null

learningEnvironmentDescription optional

LocalizedString

null

learningEnvironments optional

Links to electronic learning environments.

Size(max = 20, min = 0)
ContainsNoNulls

List of LearningEnvironmentUrl

null

studyFormat optional

LocalizedMarkupString

null

additionalInfo optional

LocalizedMarkupString

null

publishDate required

Publish date

NotNull [Active]

[date] date

null

activityPeriod required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

teachingLanguageUrn optional

Represents Uniform Resource Names for languages. Supported values available here

UrnCode(namespace = urn:code:language, onlySyntax = false)

[String]

urn:code:language:*

courseUnitRealisationTypeUrn required

Represents Uniform Resource Names for course unit realisation types. Supported values available here

NotNull [Active]
UrnCode(namespace = urn:code:course-unit-realisation-type, onlySyntax = false)

[String]

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)
ContainsNoNulls
AtLeastOneResponsibilityCourseTeacher [Active]

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]
ValidSetOfOrganisationRoleShare [Active]
Size(max = 200, min = 0)
ContainsNoNulls

Set of OrganisationRoleShare

null

enrolmentPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDateTime, lesserField = startDateTime)

LocalDateTimeRange

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

LocalizedLink

null

usesExternalEnrolment optional

Flag indicating if enrolments are handled in an external system.

[Boolean]

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

[Boolean]

null

externalStructureLink optional

LocalizedLink

null

usesExternalStructure optional

Flag indicating if structure is handled in an external system.

[Boolean]

null

confirmedStudySubGroupModificationAllowed optional

Flag indicating if study subgroup modifications are allowed

[Boolean]

null

confirmedStudySubGroupModificationEnd optional

Date when confirmed study subgroup modification time ends

[Date] date-time

null

cooperationNetworkDetails optional

CooperationNetworkDetails

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.

[String]

otm-123456

type required

[String]

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 (-).

[String]

otm-123456

CourseUnitSubstitution

A single substituting course unit and its credit share in substitution.

Field Name Description Validation Schema Example

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 (-).

NotNull
CourseUnitGroupId

[String]

otm-123456

credits optional

How many credits from the substituting course units are used. If null, all credits are used.

Min(value = 1)

[BigDecimal]

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

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 (-).

CourseUnitGroupId
NotNull

[String]

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
Min(value = 0)

[BigDecimal]

null

max optional

maximum acceptable value

[BigDecimal]

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.

[String]

otm-123456

type required

[String]

null

rule required

Rule

null

credits required

CreditRange

null

CreditsRuleAllOf

Field Name Description Validation Schema Example

rule optional

Rule

null

credits optional

CreditRange

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.)

LocalizedFieldLangs(allLangsField = name, subsetLangsField = abbreviation) [Active]

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 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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

name required

LocalizedString

null

abbreviation required

LocalizedString

null

activePeriod required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

DegreeProgramme

Degree programme

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

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.

[Boolean]

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.

[String]

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

[String]

null

rule required

[Module_rule]

null

targetCredits required

CreditRange

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)

LocalDateRange

null

contentDescription optional

LocalizedMarkupString

null

additionalInfo optional

LocalizedMarkupString

null

responsibilityInfos required

Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot")

Set of PersonWithModuleResponsibilityInfoType

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

LocalizedMarkupString

null

printName optional

LocalizedString

null

tweetText optional

LocalizedString

null

degreeProgramTypeUrn required

Supported values available here

[String]

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 (-).

[String]

otm-123456

customCodeUrns optional

Values for university-specific custom code books

Map of [array]

null

learningOutcomes optional

LocalizedMarkupString

null

tuitionFee optional

The yearly tuition fee that must be paid by students with a tuition fee obligation

[BigDecimal]

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.

[String]

null

targetCredits optional

CreditRange

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)

LocalDateRange

null

contentDescription optional

LocalizedMarkupString

null

additionalInfo optional

LocalizedMarkupString

null

responsibilityInfos optional

Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot")

Set of PersonWithModuleResponsibilityInfoType

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

LocalizedMarkupString

null

printName optional

LocalizedString

null

tweetText optional

LocalizedString

null

degreeProgramTypeUrn optional

Supported values available here

[String]

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 (-).

[String]

otm-123456

customCodeUrns optional

Values for university-specific custom code books

Map of [array]

null

learningOutcomes optional

LocalizedMarkupString

null

tuitionFee optional

The yearly tuition fee that must be paid by students with a tuition fee obligation

[BigDecimal]

null

DegreeProgrammeAttainmentApplicationQuestion

DegreeProgrammeAttainmentApplicationQuestionnaire represents questions for degree programme.One degree programme may have only one questionnaire.

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.

NotNull

[String]

otm-123456

question required

LocalizedString

null

guidance optional

LocalizedMarkupString

null

required optional

Is it required to answer this question

[Boolean]

null

state required

State of the question. ACTIVE questions are shown to students while ARCHIVED are not.

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

degreeProgrammeId 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 (-).

DegreeProgrammeId
NotNull

[String]

otm-123456

questions optional

Questions to be asked during creation of degree programme attainment application.

ContainsNoNulls
Size(max = 200, min = 0)
UniqueBy(sameValueProperties = [Ljava.lang.String;@4f3c451)

Set of DegreeProgrammeAttainmentApplicationQuestion

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

description required

LocalizedString

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.

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

null

validityPeriod required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

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]
Size(max = 100, min = 1)
ValidSanitized

[String]

null

educationType required

A hierarchical code set. Supported values are the leaf nodes in the file available here

NotNull
UrnCode(namespace = urn:code:education-type, onlySyntax = false)
LeafCodeUrn

[String]

urn:code:education-type:*

specialisationStudiesClassificationUrn optional

Supported values available here

UrnCode(namespace = urn:code:specialisation-studies-classification, onlySyntax = false)

[String]

urn:code:specialisation-studies-classification:*

studyFields required

Study field is for classification. There may be several "koulutusala"

NotEmpty [Active]
Size(max = 20, min = 0)
UrnCode(namespace = urn:code:study-field, onlySyntax = false)
ContainsNoNulls

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]
Size(max = 200, min = 0)
ValidSetOfOrganisationRoleShare [Draft, Active]
ContainsNoNulls

Set of OrganisationRoleShare

null

attainmentLanguages optional

Languages in which it is possible to attain studies contained in this education

Size(max = 20, min = 0)
UrnCode(namespace = urn:code:language, onlySyntax = false)
ContainsNoNulls

Set of [string]

null

educationLocationUrn optional

Represents Uniform Resource Names for municipalities of Finland. Supported values available here

UrnCode(namespace = urn:code:municipality, onlySyntax = false)

[String]

urn:code:municipality:*

outcomes optional

LocalizedMarkupString

null

responsibilityInfos required

Persons or roles in a responsibility relation to this module "vastuuopettaja" & "yhteydenotot"

Size(max = 200, min = 0)
NotEmpty [Active]
ContainsNoNulls

Set of PersonWithEducationResponsibilityInfoType

null

structure required

ValidEducationStructure

EducationStructure

null

defaultStudyRightExpirationRulesUrn required

Possible values for expiration rule (rajauslaki) of a study right. Supported values available here

NotNull
UrnCode(namespace = urn:code:study-right-expiration-rules, onlySyntax = false)

[String]

urn:code:study-right-expiration-rules:*

defaultDecreeOnUniversityDegreesUrn required

Possible values for the version of the decree on university degrees (tutkintoasetus) that a study right follows. Supported values available here

NotNull
UrnCode(namespace = urn:code:decree-on-university-degrees, onlySyntax = false)

[String]

urn:code:decree-on-university-degrees:*

studyRightExtensionInstructions optional

LocalizedString

null

studySelectionRequirement required

Study selection requirement provides information on person's enrolment rules.

NotNull

[String] enum UNRESTRICTED, SELECTION_REQUIRED, ENROLMENT_RIGHT_REQUIRED,

null

fundingSourceEducationUrn optional

Universal Resource Name for source of education funding (Virta). Supported values available here

UrnCode(namespace = urn:code:funding-source-education, onlySyntax = false)

[String]

urn:code:funding-source-education:*

isMultiformEducation optional

[Boolean]

null

type required

One of Education, DegreeProgramme, StudyModule, or GroupingModule

[String]

null

rule optional

[Education_rule]

null

EducationChildOption

Child level option on an education phase, under some top level option.

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.

NotNull

[String]

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 (-).

AttainableModuleGroupId
NotNull

[String]

otm-123456

acceptanceType required

Is the selection of an option accepted by someone or automatic.

NotNull [Active]

[String] enum AUTOMATIC, ACCEPTED_BY_TEACHER,

null

degreeTitleUrn optional

Supported values available here

UrnCode(namespace = urn:code:degree-title, onlySyntax = false)

[String]

urn:code:degree-title:*

educationClassificationUrn optional

Supported values available here

UrnCode(namespace = urn:code:education-classification, onlySyntax = false)

[String]

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

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.

NotNull

[String]

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 (-).

AttainableModuleGroupId
NotNull

[String]

otm-123456

childOptions required

List of child selections rooted here. Can be empty but not null.

NotNull
ContainsNoNulls

List of EducationChildOption

null

acceptanceType required

Is the selection of an option accepted by someone or automatic.

NotNull [Active]

[String] enum AUTOMATIC, ACCEPTED_BY_TEACHER,

null

childNaming required

Supported values available here

NotNull [Active]
UrnCode(namespace = urn:code:education-option-naming-type, onlySyntax = false)

[String]

urn:code:education-option-naming-type:*

degreeTitleUrn optional

Supported values available here

UrnCode(namespace = urn:code:degree-title, onlySyntax = false)

[String]

urn:code:degree-title:*

educationClassificationUrn optional

Supported values available here

UrnCode(namespace = urn:code:education-classification, onlySyntax = false)

[String]

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

LocalizedString

null

options required

Top level options in a phase, typically containing the allowed degree programmes

NotNull
NotEmpty [Active]

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.

[String]

otm-123456

type required

[String]

null

rules required

Child rules. For legacy and draft, empty list is alowed

List of Rule

null

require optional

IntRange

null

description optional

LocalizedMarkupString

null

allMandatory optional

[Boolean]

null

rule required

Rule

null

count required

IntRange

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 (-).

[String]

otm-123456

credits required

CreditRange

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 (-).

[String]

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

EducationPhase

null

phase2 optional

EducationPhase

null

learningOpportunities required

List of learning opportunities

NotNull
ContainsNoNulls

List of LearningOpportunity

null

EducationTypeRule

Evaluates to true if student has required educations.

Field Name Description Validation Schema Example

type optional

Person rule type

[String]

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

A hierarchical code set. Supported values are the leaf nodes in the file available here

UrnCode(namespace = urn:code:education-type, onlySyntax = false)
LeafCodeUrn
NotNull

[String]

urn:code:education-type:*

studentUnionMembershipFeeRequirement required

Requirement for student union membership fee payment: 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

[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

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 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.

NotNull

[String]

otm-123456

required optional

If true, answering this question is required for enrolling.

[Boolean]

null

questionType optional

Type of a question. Used for EnrolmentQuestions.

[String] enum LANGUAGE_SELECT, FREE_TEXT,

null

question optional

LocalizedString

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

[String]

null

option required

LocalizedString

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

courseUnitRealisationId 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 (-).

CourseUnitRealisationId

[String]

otm-123456

enrolmentQuestions optional

Questions to be asked for enrolment.

ContainsNoNulls

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

The formats accepted are based on the ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours

[String]

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.

[Boolean]

null

cancelled optional

Whether this event instance is cancelled. Cancelled events are visible to user with CANCELLED status.

[Boolean]

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

LocalizedString

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'

LocationId
ContainsNoNulls

List of [string]

null

irregularTeacherIds optional

Teacher(s) who are responsible for realization of this Event instance

PublicPersonId
ContainsNoNulls

List of [string]

null

notice optional

LocalizedString

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

null

entities optional

The actual data.

List of DegreeProgrammeAttainmentApplicationQuestionnaire

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

null

entities optional

The actual data.

List of InternationalContractualDegreeAgreement

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

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?

[Boolean]

null

entities optional

The actual data.

List of TimingTemplate

null

FinnishAddress

Represents addresses for physical locations in Finland

Field Name Description Validation Schema Example

countryUrn required

Represents Uniform Resource Names for country names. Supported values available here

UrnCode(namespace = urn:code:country, onlySyntax = false)
NotNull

[String]

urn:code:country:*

isUserEditable optional

Set to false to prevent address from being edited in the user interface.

[Boolean]

null

type required

Address type, either GenericAddress or FinnishAttainment

[String]

null

streetAddress optional

Street address part of the address

[String]

null

postalCode optional

Postal code of the address

[String]

null

city optional

City of the address

[String]

null

FinnishAddressAllOf

Field Name Description Validation Schema Example

streetAddress optional

Street address part of the address

[String]

null

postalCode optional

Postal code of the address

[String]

null

city optional

City of the address

[String]

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

[Boolean]

true

customCourseCreditApplicationEnabled optional

Custom course unit request in structure of studies visible

[Boolean]

true

freeEditModeEnabled optional

Free edit mode enabled in structure of studies

[Boolean]

true

creditTransferEnabled optional

Credit transfer visible in course unit details

[Boolean]

true

moduleAttainmentApplicationEnabled optional

Study module attainment application visible in module details

[Boolean]

true

studentDetailsEditEnabled optional

Student details edit enabled for student frontend

[Boolean]

true

degreeProgrammeAttainmentApplicationEnabled optional

Degree programme attainment application visible in structure of studies (ie. allow student to request graduation)

[Boolean]

true

educationOptionsConfirmable optional

Confirm button visible in the plan study right modal (ie. allow student to confirm education options)

[Boolean]

true

minorSelectionsConfirmable optional

Confirm button visible in the minor selection modal (ie. allow student to confirm study right minor selections)

[Boolean]

true

studentTranscriptPrintable optional

Transcript printable for the student (in their own details

[Boolean]

true

studyRightExtensionApplicationEnabled optional

Study right extension application enabled in study right details and banner

[Boolean]

true

studentClassifiedInfoToggleable optional

Students are able to toggle personal details as classified

[Boolean]

true

publishedCourseUnitRealisationEditEnabled optional

Published course unit realisations are editable

[Boolean]

true

courseUnitRealisationCreationEnabled optional

New course unit realisations are allowed to be created

[Boolean]

true

openUniversityFeaturesEnabledForStudent optional

Open university features are available in student UI

[Boolean]

true

crossStudyFeaturesEnabledForStudent optional

Cross study features available for students

[Boolean]

true

completionMethods2TabEnabled optional

Completion methods 2.0 tab enabled

[Boolean]

true

digitalDegreeCertificatePreferred optional

Degree certificate won't be delivered physically. Delivery method options are hidden in degree programme attainment application

[Boolean]

true

internshipCustomAttainmentApplicationEnabled optional

Internship custom attainment application enabled in add study draft modal (e.g. university of applied sciences will use this

[Boolean]

true

newPlanTabEnabled optional

New plan tab visible in the top navigation bar

[Boolean]

true

GenericAddress

Represents addresses for physical locations with unstructured notation

Field Name Description Validation Schema Example

countryUrn required

Represents Uniform Resource Names for country names. Supported values available here

UrnCode(namespace = urn:code:country, onlySyntax = false)
NotNull

[String]

urn:code:country:*

isUserEditable optional

Set to false to prevent address from being edited in the user interface.

[Boolean]

null

type required

Address type, either GenericAddress or FinnishAttainment

[String]

null

address optional

The whole address excluding the country

[String]

null

GenericAddressAllOf

Field Name Description Validation Schema Example

address optional

The whole address excluding the country

[String]

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

[Boolean]

null

name required

LocalizedString

null

abbreviation required

LocalizedString

null

numericCorrespondence required

A numeric correspondence to the 1-5 grade scale

NotNull
Min(value = 1)
Max(value = 5)

[Float] float

null

GradeScale

Grade scale composed of grades. Can be shared between different universities.

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 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 (-).

NotNull

[String]

otm-123456

grades required

List of grades of which this grade scale is composed

NotEmpty
Size(max = 200, min = 0)
ContainsNoNulls

List of Grade

null

validityPeriod required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

additionalInfo optional

LocalizedString

null

helpText optional

LocalizedString

null

name required

LocalizedString

null

abbreviation required

LocalizedString

null

GroupingModule

Module representing a grouping module

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

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.

[Boolean]

null

code optional

[String]

null

curriculumPeriodIds optional

List of [string]

null

type required

One of Education, DegreeProgramme, StudyModule, or GroupingModule

[String]

null

rule required

[Module_rule]

null

contentFilter optional

ContentFilter

null

GroupingModuleAllOf

Field Name Description Validation Schema Example

contentFilter optional

ContentFilter

null

HelpUrls

Customizable help URLs for different frontends.

Field Name Description Validation Schema Example

admin optional

Help URL for Admin frontend

[String]

https://www.example.com

staff optional

Help URL for Staff frontend

[String]

https://www.example.com

tutor optional

Help URL for Tutor frontend

[String]

https://www.example.com

student optional

Help URL for Student frontend

[String]

https://www.example.com

teacher optional

Help URL for Teacher frontend

[String]

https://www.example.com

default optional

Default help URL for frontends

[String]

https://www.example.com

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
Size(max = 200, min = 0)

List of StudyRightQuery

null

description optional

LocalizedString

null

HostUniversitySettings

Cooperation network settings specific to host university

Field Name Description Validation Schema Example

studyRightEducationId 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 (-).

EducationId

[String]

otm-123456

studyRightLearningOpportunityId 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.

[String]

otm-123456

studyRightOrganisationId 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 (-).

OrganisationId

[String]

otm-123456

studyRightCourseUnitSelectionValidityTerms required

Study right's course unit validity period extended by number of terms.

Min(value = 2)
NotNull

[Integer] int32

null

ImportModulesRequestInner

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

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.

[Boolean]

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.

[String]

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

[String]

null

rule required

[Module_rule]

null

targetCredits required

CreditRange

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)

LocalDateRange

null

contentDescription optional

LocalizedMarkupString

null

additionalInfo optional

LocalizedMarkupString

null

responsibilityInfos required

Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot")

Set of PersonWithModuleResponsibilityInfoType

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

LocalizedMarkupString

null

printName optional

LocalizedString

null

tweetText optional

LocalizedString

null

degreeProgramTypeUrn required

Supported values available here

[String]

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 (-).

[String]

otm-123456

customCodeUrns optional

Values for university-specific custom code books

Map of [array]

null

learningOutcomes optional

LocalizedMarkupString

null

tuitionFee optional

The yearly tuition fee that must be paid by students with a tuition fee obligation

[BigDecimal]

null

contentFilter optional

ContentFilter

null

abbreviation optional

Shown in the UI. May contain encoded information eg. on the study module organisation.

[String]

null

outcomes optional

LocalizedMarkupString

null

prerequisites optional

LocalizedMarkupString

null

substitutions optional

LocalizedMarkupString

null

searchTags optional

Search tags are for searching.

Set of [string]

null

studyLevel required

Supported values available here

[String]

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

[Boolean]

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

LocalizedMarkupString

null

IntRange

Acceptable range of integers

Field Name Description Validation Schema Example

min required

minimum acceptable value

NotNull
Min(value = 0)

[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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

type required

Type of international contractual degree agreement.

NotNull

[String] enum JOINT, DOUBLE,

null

name required

LocalizedString

null

defaultInternationalInstitutionUrns required

Default foreign universities for the agreement

UrnCode(namespace = urn:code:international-institution, onlySyntax = false)
ContainsNoNulls
NotEmpty

Set of [string]

null

diplomaDescriptionBegin required

LocalizedString

null

diplomaDescriptionEnd required

LocalizedString

null

diplomaSupplementAdministeringInstitutions optional

Description to be printed to the part 2.4 of diploma.

Size(max = 8000, min = 1)

[String]

null

LearningEnvironmentUrl

A URL with name

Field Name Description Validation Schema Example

primary optional

Defines whether this URL is a primary learning environment

[Boolean]

null

language required

Language

Size(max = 2147483647, min = 2)
NotNull

[String]

null

name optional

Link name, used as a display text for the url.

Size(max = 255, min = 0)

[String]

null

url required

LearningEnvironmentUrl address

NotNull
Size(max = 1024, min = 1)

[String]

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

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.

NotNull

[String]

otm-123456

name required

LocalizedString

null

allowedPaths required

Lists of allowed selection paths through the education options.

NotNull
ContainsNoNulls
NotEmpty [Active]

List of LearningOpportunitySelectionPath

null

admissionTargetIds optional

Admission target ids that maps to this learning opportunity

AdmissionTargetId
Size(max = 200, min = 0)

List of [string]

null

phase1EducationClassificationUrn optional

Supported values available here

UrnCode(namespace = urn:code:education-classification, onlySyntax = false)

[String]

urn:code:education-classification:*

phase2EducationClassificationUrn optional

Supported values available here

UrnCode(namespace = urn:code:education-classification, onlySyntax = false)

[String]

urn:code:education-classification:*

LearningOpportunitySelectionPath

One possible selection path in education structure.

Field Name Description Validation Schema Example

educationPhase1GroupId 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 (-).

[String]

otm-123456

educationPhase1ChildGroupId 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 (-).

[String]

otm-123456

educationPhase2GroupId 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 (-).

[String]

otm-123456

educationPhase2ChildGroupId 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 (-).

[String]

otm-123456

Link in the university settings

Literature

Structural representation of a literature requirement

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.

NotNull

[String]

otm-123456

type required

[String]

null

LiteratureName

A reference to required literature by name

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.

NotNull

[String]

otm-123456

type required

[String]

null

name required

The name

[String]

null

LiteratureNameAllOf

Field Name Description Validation Schema Example

name optional

The name

[String]

null

LiteratureReference

A reference to required literature by reference to library system

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.

NotNull

[String]

otm-123456

type required

[String]

null

url required

The url

[String]

null

LiteratureReferenceAllOf

Field Name Description Validation Schema Example

url optional

The url

[String]

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

Localized link to an outside system

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

[String]

<b>Finnish</b> version

sv optional

Swedish version

[String]

<b>Swedish</b> version

en optional

English version

[String]

<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

[String]

Finnish version

sv optional

Swedish version

[String]

Swedish version

en optional

English version

[String]

English version

LocalizedUrl

A map <langCode, URL> containing localized versions of a URL

Field Name Description Validation Schema Example

fi optional

Finnish version

[String]

http://www.example.com/fi/

sv optional

Swedish version

[String]

http://www.example.com/sv/

en optional

English version

[String]

http://www.example.com/en/

Location

Location, for example a classroom, in which StudyEvents can be held

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

name required

LocalizedString

null

capacity optional

Optional capacity to hold people

[Integer] int32

null

buildingId 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 (-).

NotNull
BuildingId

[String]

otm-123456

building optional

Building

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

name required

LocalizedString

null

startTime required

Start date and time for the session (and all exams included in it).

NotNull

[Date] date-time

null

duration required

The formats accepted are based on the ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours

NotNull
DurationMin(days = 0, hours = 0, inclusive = false, millis = 0, minutes = 0, nanos = 0, seconds = 0)

[String]

null

organisations required

Organisations responsible for this in various ways and fractions.

Size(max = 200, min = 0)
ContainsNoNulls
NotEmpty [Active]
ValidSetOfOrganisationRoleShare [Active]

Set of OrganisationRoleShare

null

responsibilityInfos required

Persons and roles responsible for this in various ways and fractions

Size(max = 200, min = 0)
ContainsNoNulls

Set of PersonWithCourseUnitRealisationResponsibilityInfoType

null

publishedOn required

When the mass exam session was published.

NotNull [Active]

[Date] date-time

null

publishedById 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 (-).

NotNull [Active]
PublicPersonId

[String]

otm-123456

locationIds optional

The default locations where the exams will be held. Individual exams can override this.

Size(max = 200, min = 0)
ContainsNoNulls
LocationId

Set of [string]

null

enrolmentPeriod required

FieldsOrdered(allowEqual = false, greaterField = endDateTime, lesserField = startDateTime)

LocalDateTimeRange

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.

ContainsNoNulls

Set of [MassExamSession_enrolmentRequirements_inner]

null

manualConfirmation required

Default setting for whether the exam enrolments need to be confirmed manually. Individual exams can override this.

NotNull

[Boolean]

null

MassExamSessionEnrolmentRequirementsInner

Field Name Description Validation Schema Example

type optional

Person rule type

[String]

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

[String]

urn:code:degree-program-type:*

creditRange required

CreditRange

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

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.

[Boolean]

null

code optional

[String]

null

curriculumPeriodIds optional

List of [string]

null

type required

One of Education, DegreeProgramme, StudyModule, or GroupingModule

[String]

null

rule required

[Module_rule]

null

ModulePrerequisite

Field Name Description Validation Schema Example

type required

Message type

[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 (-).

[String]

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 (-).

[String]

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.

[String]

otm-123456

type required

[String]

null

rules required

Child rules. For legacy and draft, empty list is alowed

List of Rule

null

require optional

IntRange

null

description optional

LocalizedMarkupString

null

allMandatory optional

[Boolean]

null

rule required

Rule

null

count required

IntRange

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 (-).

[String]

otm-123456

credits required

CreditRange

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 (-).

[String]

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 (-).

[String]

otm-123456

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

[String]

null

OpenUniversityProduct

A Product that can be bought from Open University web store

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

name required

LocalizedString

null

description optional

LocalizedMarkupString

null

price required

The string format is '$currencyCode $amount' where there may be zero to many spaces between the two parts. The currency code must be a valid three letter currency. The amount must match the regular expression [+-]?[.]?[0-9]. The spaces and numbers must be ASCII characters

NotNull
MinMoney(value = 0.0)

[String]

null

credits required

Total credits that can be attained by completing the completion method

NotNull
Min(value = 0)

[BigDecimal]

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

FieldsOrdered(allowEqual = false, greaterField = endDateTime, lesserField = startDateTime)

LocalDateTimeRange

null

validityPeriod required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

educationId 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 (-).

NotNull
EducationId

[String]

otm-123456

organisationId 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 (-).

NotNull
OrganisationId

[String]

otm-123456

courseUnitId 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 (-).

NotNull
CourseUnitId

[String]

otm-123456

completionMethodId 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.

NotNull

[String]

otm-123456

enrolmentConstraints required

Any constraints that must be applied when student tries to enroll a realisation.

NotEmpty
ContainsNoNulls

List of ProductEnrolmentConstraint

null

flowState required

Course unit realisation uses FlowState (also open university products use both flowState and documentState), because CURs do not have an approval process but still require a state to indicate whether they are being defined, are ready, or cancelled. Only certain FlowState/DocumentState combinations are allowed, but that is not enforced. FlowState together with DocumentState, activityPeriod and publishDate affect how CURs can be fetched by ID or searched by staff and students. I would write a description about that here if I knew how it really worked.

NotNull

[String] enum NOT_READY, PUBLISHED, CANCELLED, ARCHIVED,

null

productCodeId 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 (-).

NotNull [Active]
OpenUniversityProductCodeId

[String]

otm-123456

codeUrns required

Values for university-specific custom code books

Size(max = 200, min = 0)
NotNull
UrnCode(namespace = , onlySyntax = false)

Set of [string]

null

collaborationInstitution optional

ValidCollaborationInstitution

CollaborationInstitution

null

OpenUniversityProductCode

Open university product code is used for accounting and payment systems

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 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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

code required

Code as a string.

NotNull
Size(max = 100, min = 1)

[String]

null

description optional

LocalizedString

null

paymentSystem required

Payment system that handles open university purchases.

NotNull

[String] enum CEEPOS, PAYTRAIL, UNDEFINED,

null

OpenUniversitySettings

Settings related to Open University

Field Name Description Validation Schema Example

defaultPricePerCredit optional

The string format is '$currencyCode $amount' where there may be zero to many spaces between the two parts. The currency code must be a valid three letter currency. The amount must match the regular expression [+-]?[.]?[0-9]. The spaces and numbers must be ASCII characters

[String]

null

defaultVatPercent required

Not in use yet: VAT percent to use.

NotNull
Min(value = 0)
Max(value = 100)

[BigDecimal]

null

cartReservationMinutes required

The amount of time to reserve items in the cart before purchase.

NotNull
Min(value = 1)

[Integer] int32

null

cartActivationCodeValidityPeriod required

NotNull

[OpenUniversitySettings_cartActivationCodeValidityPeriod]

null

privacyPolicyUrl optional

LocalizedUrl

null

termsOfDeliveryUrl optional

LocalizedUrl

null

termsOfPurchaseUrl optional

LocalizedUrl

null

termsOfOrderUrl optional

LocalizedUrl

null

termsOfUseUrl optional

LocalizedUrl

null

customerServiceUrl optional

LocalizedUrl

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;@7e9e69a0, regexp = .*)

[String]

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

[Boolean]

null

negative optional

[Boolean]

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

[String]

null

calendarType optional

[String]

null

OpenUniversitySettingsCartActivationCodeValidityPeriodUnitsInner

Field Name Description Validation Schema Example

durationEstimated optional

[Boolean]

null

duration optional

The formats accepted are based on the ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours

[String]

null

timeBased optional

[Boolean]

null

dateBased optional

[Boolean]

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.

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 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 (-).

NotNull

[String]

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

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 (-).

NotNull

[String]

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 (-).

OrganisationId

[String]

otm-123456

predecessorIds required

Previous entity instances of this organisation

Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

code required

University's internal code for this organisation

NotNull
Size(max = 100, min = 1)
ValidSanitized

[String]

null

name required

LocalizedString

null

abbreviation optional

LocalizedString

null

status required

State of an organisation in the organisation hierarchy

NotNull

[String] enum ACTIVE, INACTIVE,

null

educationalInstitutionUrn optional

Represents Uniform Resource Names for educational institutions. Supported values available here

UrnCode(namespace = urn:code:educational-institution, onlySyntax = false)

[String]

urn:code:educational-institution:*

cooperationNetworkIdentifiers optional

CooperationNetworkIdentifiers

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

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 (-).

OrganisationId

[String]

otm-123456

educationalInstitutionUrn optional

Represents Uniform Resource Names for educational institutions. Supported values available here

UrnCode(namespace = urn:code:educational-institution, onlySyntax = false)

[String]

urn:code:educational-institution:*

roleUrn required

Represents Uniform Resource Names for roles of organisations in learning opportunities. Supported values available here

NotNull
UrnCode(namespace = urn:code:organisation-role, onlySyntax = false)

[String]

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
DecimalMin(inclusive = true, value = 0)
DecimalMax(inclusive = true, value = 1)

[BigDecimal]

null

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

OrganisationSettings

Custom settings for a organisation

UniversityOrganisations(organisationsProperty = organisationId, universitiesProperty = universityOrgId)

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 (-).

NotNull
OrganisationId

[String]

otm-123456

organisationId 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 (-).

NotNull
OrganisationId

[String]

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 (-).

[String]

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 (-).

[String]

otm-123456

predecessorIds required

Previous entity instances of this organisation

Set of [string]

null

code required

University's internal code for this organisation

[String]

null

name required

LocalizedString

null

abbreviation optional

LocalizedString

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

[String]

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 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 (-).

[String]

otm-123456

snapshot required

OrganisationSnapshotV1

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 (-).

[String]

otm-123456

PaymentCategory

PaymentCategory indicates the type of a payment made by student.

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 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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

code required

Code that identifies this payment category in OILI documents

NotNull

[String]

null

description optional

LocalizedString

null

isStudentUnionMembershipFee optional

Indicates, whether payments of this category are student union membership fees

[Boolean]

null

isHealthCareFee optional

Indicates, whether payments of this category are health care fees (YTHS-maksu)

[Boolean]

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

[String]

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;@35aadd62, maxNull = 1, minNull = 0)

Field Name Description Validation Schema Example

text optional

LocalizedString

null

personId 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 (-).

PublicPersonId

[String]

otm-123456

roleUrn required

Person role related to a course unit realisation

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)

LocalDateRange

null

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

PersonWithEducationResponsibilityInfoType

Describes a given person or textual personified role that has a given responsibility

SomeFieldsNotNull(fields = [Ljava.lang.String;@5e7a4dff, maxNull = 1, minNull = 0)

Field Name Description Validation Schema Example

text optional

LocalizedString

null

personId 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 (-).

PublicPersonId

[String]

otm-123456

roleUrn required

Person role related to educations

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)

LocalDateRange

null

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

PersonWithModuleResponsibilityInfoType

Describes a given person or textual personified role that has a given responsibility

SomeFieldsNotNull(fields = [Ljava.lang.String;@53a4ecf9, maxNull = 1, minNull = 0)

Field Name Description Validation Schema Example

text optional

LocalizedString

null

personId 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 (-).

PublicPersonId

[String]

otm-123456

roleUrn required

Person role related to study modules

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)

LocalDateRange

null

validityPeriod optional

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

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

[String]

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.

ContainsNoNulls

List of [PrerequisiteGroup_prerequisites_inner]

null

PrerequisiteGroupPrerequisitesInner

Field Name Description Validation Schema Example

type required

Message type

[String]

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 (-).

[String]

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 (-).

[String]

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

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 (-).

NotNull
AssessmentItemId

[String]

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

ContainsNoNulls
CourseUnitRealisationId

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.

CourseUnitRealisationId
ContainsNoNulls
NotNull

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

titles optional

Titles for this person, for example 'dean'

ContainsNoNulls

List of LocalizedString

null

firstName optional

First name

Size(max = 255, min = 1)

[String]

null

lastName optional

Last name

Size(max = 255, min = 1)

[String]

null

emailAddress optional

Email address, if known

Email(flags = [Ljakarta.validation.constraints.Pattern$Flag;@764c6653, regexp = .*)

[String]

null

Qualification

Qualification related to a degree programme

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 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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

type required

Level of formality

NotNull

[String] enum FORMAL, CUSTOM, COMPETENCY,

null

name required

LocalizedString

null

code required

Textual code

NotNull
Size(max = 100, min = 0)
ValidSanitized

[String]

null

qualificationUrn optional

Link to formal coding

UrnCode(namespace = urn:code:qualification, onlySyntax = false)

[String]

null

competencyUrn optional

Supported values available here

UrnCode(namespace = urn:code:competency, onlySyntax = false)

[String]

urn:code:competency:*

requirementCollections optional

Requirements ("suoritusvaatimukset") for the qualification in question

ContainsNoNulls

Set of RequirementCollection

null

includeCompetencies optional

Indicates if competencies can be presented when this qualification is attained

[Boolean]

null

diplomaAppendix optional

LocalizedString

null

instructions optional

LocalizedString

null

state required

Qualifications have state based on whether they are being drafted (not ready), published or archived.Only certain combinations of DocumentState and QualificationState are allowed (see API below and validator).

NotNull

[String] enum NOT_READY, PUBLISHED, ARCHIVED,

null

publishedOn optional

The timestamp the qualification was published on

[date] date

null

customQualificationTypeUrn optional

Supported values available here

UrnCode(namespace = urn:code:custom-qualification-type, onlySyntax = false)

[String]

urn:code:custom-qualification-type:*

studyFieldUrn required

Supported values available here

UrnCode(namespace = urn:code:study-field, onlySyntax = false)

[String]

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

[String]

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.

[String]

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 (-).

[String]

otm-123456

degreeProgrammeGroupIds optional

Set of [string]

null

studyModuleGroupIds optional

Set of [string]

null

courseUnitGroupIds optional

Set of [string]

null

description optional

LocalizedString

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

[String]

urn:code:education-type:*

name optional

LocalizedString

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.

[String]

otm-123456

type required

[String]

null

StudyEvent

Study event containing a series of event occurrences and locationIds for the events

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

primaryCourseUnitRealisationId 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 (-).

CourseUnitRealisationId

[String]

otm-123456

name optional

LocalizedString

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)
LocationId
ContainsNoNulls

Set of [string]

null

recursEvery required

Allowed intervals for study events

NotNull

[String] enum NEVER, DAILY, WEEKLY, EVERY_SECOND_WEEK, MONTHLY,

null

startTime required

When the event occurs for the first time

NotNull

[Date] date-time

null

duration required

The formats accepted are based on the ISO-8601 duration format PnDTnHnMn.nS with days considered to be exactly 24 hours

NotNull

[String]

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)
ContainsNoNulls

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)
ContainsNoNulls

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)
ContainsNoNulls

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.

ContainsNoNulls

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

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.

NotNull

[String]

otm-123456

name required

LocalizedString

null

studySubGroups required

Study sub groups, a number of which the student has to select when enrolling

NotNull
ContainsNoNulls
Size(max = 200, min = 1)

List of StudySubGroup

null

subGroupRange required

IntRange

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;@19f756c2) [Active]

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 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 (-).

NotNull

[String]

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.

NotEmpty
Size(max = 20, min = 0)
OrganisationId
ContainsNoNulls

Set of [string]

null

groupId 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

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.

[Boolean]

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.

[String]

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

[String]

null

rule required

[Module_rule]

null

targetCredits required

CreditRange

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)

LocalDateRange

null

contentDescription optional

LocalizedMarkupString

null

additionalInfo optional

LocalizedMarkupString

null

responsibilityInfos required

Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot")

Set of PersonWithModuleResponsibilityInfoType

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

LocalizedMarkupString

null

printName optional

LocalizedString

null

abbreviation optional

Shown in the UI. May contain encoded information eg. on the study module organisation.

[String]

null

tweetText optional

LocalizedString

null

outcomes optional

LocalizedMarkupString

null

prerequisites optional

LocalizedMarkupString

null

substitutions optional

LocalizedMarkupString

null

searchTags optional

Search tags are for searching.

Set of [string]

null

studyLevel required

Supported values available here

[String]

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

[Boolean]

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 (-).

[String]

otm-123456

customCodeUrns optional

Values for university-specific custom code books

Map of [array]

null

contentFilter optional

ContentFilter

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

LocalizedMarkupString

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.

[String]

null

targetCredits optional

CreditRange

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)

LocalDateRange

null

contentDescription optional

LocalizedMarkupString

null

additionalInfo optional

LocalizedMarkupString

null

responsibilityInfos optional

Persons or roles in a responsibility relation to this module ("vastuuopettaja" & "yhteydenotot")

Set of PersonWithModuleResponsibilityInfoType

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

LocalizedMarkupString

null

printName optional

LocalizedString

null

abbreviation optional

Shown in the UI. May contain encoded information eg. on the study module organisation.

[String]

null

tweetText optional

LocalizedString

null

outcomes optional

LocalizedMarkupString

null

prerequisites optional

LocalizedMarkupString

null

substitutions optional

LocalizedMarkupString

null

searchTags optional

Search tags are for searching.

Set of [string]

null

studyLevel optional

Supported values available here

[String]

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

[Boolean]

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 (-).

[String]

otm-123456

customCodeUrns optional

Values for university-specific custom code books

Map of [array]

null

contentFilter optional

ContentFilter

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

LocalizedMarkupString

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

[String]

null

valid optional

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

name optional

LocalizedString

null

size optional

[Integer] int32

null

visibleByDefault optional

[Boolean]

null

includedInTargetCreditsCalculation optional

[Boolean]

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

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

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
Size(max = 100, min = 0)

List of LocalDateRange

null

name required

LocalizedString

null

size required

Relative size of this period's column in the timing tool in frontend-student

NotNull
Min(value = 1)
Max(value = 100)

[Integer] int32

null

visibleByDefault optional

Is this period visible by default in the timing tool. Defaults to false

[Boolean]

null

includedInTargetCreditsCalculation optional

Is this period included in the target credits calculation in the timing tool. Defaults to false.

[Boolean]

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)
ContainsNoNulls
EducationId

Set of [string]

null

educationGroupIds optional

Query by group ID of education referenced by the study right.

Size(max = 200, min = 0)
ContainsNoNulls

Set of [string]

null

educationTypes optional

Query by type of education referenced by the study right.

Size(max = 200, min = 0)
ContainsNoNulls
UrnCode(namespace = urn:code:education-type, onlySyntax = false)

Set of [string]

null

learningOpportunityIds optional

Query by learning opportunity ID reference.

Size(max = 200, min = 0)
ContainsNoNulls

Set of [string]

null

phase1OptionGroupIds optional

Query by phase 1 education option group ID reference in accepted selection path.

Size(max = 200, min = 0)
ContainsNoNulls

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)
ContainsNoNulls

Set of [string]

null

phase1EducationClassificationUrns optional

Query by phase 1 education classification urn.

Size(max = 200, min = 0)
ContainsNoNulls
UrnCode(namespace = urn:code:education-classification, onlySyntax = false)

Set of [string]

null

phase2OptionGroupIds optional

Query by phase 2 education option group ID reference in accepted selection path.

Size(max = 200, min = 0)
ContainsNoNulls

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)
ContainsNoNulls

Set of [string]

null

phase2EducationClassificationUrns optional

Query by phase 2 education classification urn.

Size(max = 200, min = 0)
ContainsNoNulls
UrnCode(namespace = urn:code:education-classification, onlySyntax = false)

Set of [string]

null

activePhase optional

The phase of the study right.

[String] enum PHASE1, PHASE2,

null

organisationIds optional

Query by organisation ID reference.

Size(max = 200, min = 0)
ContainsNoNulls
OrganisationId

Set of [string]

null

parentOrganisationIds optional

Query by parent organisation ID of the organisation referenced by study right.

Size(max = 200, min = 0)
ContainsNoNulls
OrganisationId

Set of [string]

null

StudySubGroup

See the docs of StudyGroupSet for more info.

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 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 (-).

NotNull

[String]

otm-123456

name required

LocalizedString

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.

Size(max = 200, min = 0)
StudyEventId
ContainsNoNulls

Set of [string]

null

teacherIds optional

TODO should be structural, similar to responsibility info. is name even correct?

Size(max = 200, min = 0)
PublicPersonId
ContainsNoNulls

Set of [string]

null

cancelled optional

Is StudySubGroup cancelled. False by default.

[Boolean]

null

size optional

Size of the StudySubGroup

[Integer] int32

null

externalId optional

External id which is used to reference the StudySubGroup in RIPA

[String]

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)

LocalDateRange

null

name optional

LocalizedString

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

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

name required

LocalizedString

null

studyPeriods required

Templates for generating the StudyPeriods which are children of the StudyTerm generated

NotEmpty
Size(max = 20, min = 0)
ContainsNoNulls

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)

LocalDateRange

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 (-).

[String]

otm-123456

studyTerms optional

An ordered list of study terms in this study year.

List of StudyTerm

null

name optional

[String]

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 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 (-).

NotNull

[String]

otm-123456

valid required

FieldsOrdered(allowEqual = false, greaterField = endDate, lesserField = startDate)

LocalDateRange

null

org 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 (-).

NotNull
OrganisationId

[String]

otm-123456

studyTerms required

Templates for generating the terms which are children of the year generated

NotEmpty
Size(max = 20, min = 0)
ContainsNoNulls

List of StudyTermTemplate

null

documentState optional

DocumentState determines whether a document is visible to public, students or staff.

[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
ContainsNoNulls

List of EducationTypeTermRegistrationRequirements

null

documentState optional

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull
OrganisationId

[String]

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 (-).

[String]

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

DocumentState determines whether a document is visible to public, students or staff.

[String] enum DRAFT, ACTIVE, DELETED,

null

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 (-).

NotNull

[String]

otm-123456

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 (-).

NotNull
OrganisationId

[String]

otm-123456

moduleId 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 (-).

NotNull

[String]

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.

NotNull
Min(value = 1800)

[Integer] int32

null

name required

LocalizedString

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

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 (-).

NotNull
OrganisationId

[String]

otm-123456

registryDescriptionUrl optional

URL to registry privacy policy

[String]

https://www.example.com/

universityNaviContentUrl optional

LocalizedUrl

null

bachelorsGraduateSurveyUrl optional

LocalizedUrl

null

amkGraduateSurveyUrl optional

LocalizedUrl

null

alumniAssociationUrl optional

LocalizedUrl

null

alumniAssociationDescription optional

LocalizedString

null

alumniAssociationInfoText optional

LocalizedString

null

moduleContentApplicationDescriptionText optional

LocalizedString

null

moduleContentApplicationDescriptionUrl optional

LocalizedUrl

null

inclusionApplicationDecisionCorrectionInstructionText optional

LocalizedMarkupString

null

helpdeskLink optional

Link

null

feedbackLink optional

Link

null

helpUrls optional

HelpUrls

null

frontendFeatureToggles optional

FrontendFeatureToggles

null

messageSenderName optional

LocalizedString

null

openUniversitySettings optional

OpenUniversitySettings

null

defaultMunicipalityUrn optional

Represents Uniform Resource Names for municipalities of Finland. Supported values available here

NotNull

[String]

urn:code:municipality:*

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

[String]

null

ValidTermRegistrationRule

Evaluates to true if student has a valid term registration as ATTENDING during the activity period of the course unit realisation to be enrolled to

Field Name Description Validation Schema Example

type optional

Person rule type

[String]

null

Validations

ActiveOnly

Validates that referenced entity is ACTIVE.

AdmissionTargetId

OtmId or OtmIds which must refer to AdmissionTargets

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.

AtLeastOneResponsibilityTeacher

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

BuildingId

OtmId or set of OtmIds which must refer to an ACTIVE Building.

ConsistentOrganisation

Check that the organisation status as a 'root organisation' may not change for consecutive snapshots.

ContainsNoNulls

Collection may not contain null elements.

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

CourseUnitGroupId

OtmId or set of OtmIds which must refer by groupId to CourseUnits of any state.

CourseUnitId

OtmId or set of OtmIds which must refer to CourseUnits of any state.

CourseUnitRealisationId

OtmId or set of OtmIds which must refer to non-DELETED CourseUnitRealisations.

CurriculumPeriodId

OtmId or set of OtmIds which must refer to ACTIVE CurriculumPeriods.

DegreeProgrammeId

OtmId or set of OtmIds which must refer to DegreeProgrammes of any state.

EducationId

OtmId or set of OtmIds which must refer to non-DELETED Educations.

EndDateRequired

LocalDateRange with non-null endDate.

EndDateTimeRequired

LocalDateTimeRange with non-null endDate.

FieldsNotNullWhenConditionTrue

Conditionally check that a collection of fields are not null.

FieldsOrdered

Check that lesserField compares before (or equal to, if explicitly allowed) greaterField. If either value is null, the validation passes.

GradeScaleId

OtmId or set of OtmIds which must refer to ACTIVE GradeScales.

LeafCodeUrn

CodeUrn which is in a leaf position in its (possible) urn hierarchy.

LocalizedFieldLangs

Check than any languages mentioned in subsetLangsField exist in allLangsField. Both fields are of type Localized<?>.

LocalizedStringSize

Check minimum and maximum size of localized string types.

LocationId

OtmId or set of OtmIds which must refer to ACTIVE Locations.

MassExamSessionId

OtmId or set of OtmIds which must refer to mass exam sessions of any state.

MinMoney

The property must be a Money instance whose value is greater or equal than the specified minimum.

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.

OrganisationId

OtmId or set of OtmIds which must refer to ACTIVE Organisations.

PublicPersonId

OtmId or set of OtmIds which must refer to ACTIVE PublicPersons (persons in Kori).

QualificationIncludeCompetencies

Only formal qualification can include competencies

SomeFieldsNotNull

Count nulls in a collection of fields and validate the number is between bounds.

StartDateRequired

LocalDateRange with non-null startDate.

StartDateTimeRequired

LocalDateTimeRange with non-null startDate.

StudyEventId

OtmId or set of OtmIds which must refer to ACTIVE StudyEvents.

StudyPeriodTemplateId

OtmId or set of OtmIds which must refer to StudyPeriodTemplate.

UniqueBy

Checks that collection is unique by given properties

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.

ValidAdmissionTargetCode

Checks that Admission target code is unique within a university

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

ValidCompletionMethod

Validates CompletionMethod with dynamic validation rules.

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

ValidCooperationNetworkShares

Validates cooperation network shares.

ValidCourseUnitAssessmentItems

Validates that courseUnitAssessmentItem are valid.

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.

ValidCourseUnitSubstitutions

Validates course unit substitutions are valid.

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

ValidEnrolmentQuestion

Validates that FREE_TEXT EnrolmentQuestion has a question

ValidEntityWithCurriculumPeriods

Validates that CurriculumPeriods <→ Entity relations are valid.

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.

ValidEventOverride

Check that there is at least some extra info in EventOverride.

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.

ValidPaymentCategoryCode

Checks that Payment Category code is unique within a university.

ValidProductEnrolmentConstraint

Validates that the teaching offered during the sales period is a subset of all allowed teaching.

ValidPublicPerson

Either firstName or lastName is mandatory

ValidQualification

Check that the qualification is valid

ValidQualificationState

Check that the qualification state and documentState of a Qualification are a valid combination.

ValidQualificationType

Qualification type and custom qualification type can not contradict

ValidRequirementCollectionsWhenPublished

A published qualification must have valid requirement collections

ValidSalesPeriodBeforeValidityEndDate

Validates that the sales period is before validityPeriod end date

ValidSanitized

Check string has no vulnerable XSS fields.

ValidSetOfOrganisationRoleShare

For each moment in time, from minus infinity to plus infinity, the sum of shares for all mentioned roles must be exactly 1.

ValidStudyEvent

Check exceptions and cancellations contains only LocalDates which would otherwise been generated. Check recursUntil is null if recursEvery is NEVER. Check recursUntil is on an event instance LocalDate otherwise.

ValidTeachingLanguage

Teaching language is mandatory for non-exam CourseUnitRealisation

ValidTeachingOfferedDuringSalesPeriod

Validates that the product has teaching available during the sales period (for each assessment item), and the teaching activity period overlaps with the product validity period.