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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultAssessmentItem[ExportResultAssessmentItem]

Produces
  • application/json

Samples

GET /api/assessment-items/v1/export?since=22628&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1064

{
  "greatestOrdinal" : 22630,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre.e",
      "createdOn" : "2022-11-30T16:34:38.780230",
      "lastModifiedBy" : "spectre.e",
      "lastModifiedOn" : "2022-11-30T16:34:38.780319",
      "modificationOrdinal" : 22630
    },
    "documentState" : "DRAFT",
    "id" : "otm-a14b5466-be1f-4094-85fe-df7e6cfa81a3",
    "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-51479e8a-0816-48af-896b-f62de98bd668",
    "cooperationNetworkDetails" : null
  } ]
}

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

AssessmentItem[AssessmentItem]

Produces
  • application/json

Samples

GET /api/assessment-items/v1/otm-9677ae88-af1b-4b05-8fe0-6a8a7df1590e HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 925

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "spectre.e",
    "createdOn" : "2022-11-30T16:34:39.001883",
    "lastModifiedBy" : "spectre.e",
    "lastModifiedOn" : "2022-11-30T16:34:39.002013",
    "modificationOrdinal" : 22757
  },
  "documentState" : "DRAFT",
  "id" : "otm-9677ae88-af1b-4b05-8fe0-6a8a7df1590e",
  "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-f88e9eae-a1a6-47b4-97c5-813a68baac19",
  "cooperationNetworkDetails" : null
}

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/assessment-items/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 966
Host: localhost:8080

[ {
  "metadata" : null,
  "id" : "otm-c2d5b2ba-d88f-48aa-9151-883c8785557b",
  "universityOrgIds" : [ "the-spectre" ],
  "credits" : {
    "min" : 10,
    "max" : 10
  },
  "name" : {
    "fi" : "AssessmentItem 2022-11-30T16:34:39.109587"
  },
  "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
} ]
HTTP/1.1 200 OK

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultBuilding[ExportResultBuilding]

Produces
  • application/json

Samples

GET /api/buildings/v1/export?since=23198&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 757

{
  "greatestOrdinal" : 23201,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2022-11-30T16:34:40.267068",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2022-11-30T16:34:40.267248",
      "modificationOrdinal" : 23201
    },
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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.eyJzdWIiOiJhcnNrYSIsInNjb3BlIjoiYWRtaW4gdXNlciIsImlzcyI6InNpcyIsInVuaXZlcnNpdHlPcmdJZHMiOiJoeS11bml2ZXJzaXR5LXJvb3QtaWQiLCJwZXJzb25pZCI6Im90bS1hZG1pbi1pZC0xIiwiZXhwIjoxNjY5ODE5MDYwLCJ1c2VyaW5mbyI6e319.AeRpRdqEKCx812qR883g7HeYNdvgg-UcLJMyp-Vrk9Xfokl2CaIAxFnjfwPr-hN-wmmr5KWbbKU5KEdfmVNjeYLcAaEJlDfWTlggjLYwYeA4JqTTBtVt15C1mv25NNeFZsCVuORUk0XFepoO9GT-7OkYuEKrFHTYZWS0EwKg0CHIi7k0
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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" : "2022-11-30T16:34:40.498351",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2022-11-30T16:34:40.498430",
    "modificationOrdinal" : 23284
  },
  "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Viikki",
    "fi" : "Viikki"
  },
  "address" : {
    "countryUrn" : "urn:code:country:246",
    "isUserEditable" : true,
    "streetAddress" : "Viikinkari 9",
    "postalCode" : "00790",
    "city" : "Helsinki",
    "type" : "FinnishAddress"
  }
}, {
  "metadata" : null,
  "id" : "otm-155b685f-2a5e-401a-90c5-167d35101764",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Porthania",
    "fi" : "Porthania"
  },
  "address" : {
    "countryUrn" : "urn:code:country:246",
    "isUserEditable" : true,
    "streetAddress" : "Yliopistonkatu 3",
    "postalCode" : "00100",
    "city" : "Helsinki",
    "type" : "FinnishAddress"
  }
}, {
  "metadata" : null,
  "id" : "otm-5029f514-b78c-4135-a354-9866fa472016",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Chemicum",
    "fi" : "Chemicum"
  },
  "address" : {
    "countryUrn" : "urn:code:country:246",
    "isUserEditable" : true,
    "streetAddress" : "Gustaf Hällströmin katu 2a",
    "postalCode" : "00560",
    "city" : "Helsinki",
    "type" : "FinnishAddress"
  }
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 619

{
  "greatestOrdinal" : 23915,
  "hasMore" : false,
  "entities" : [ {
    "urn" : "urn:code:test",
    "codeBookType" : "COMMON",
    "name" : {
      "fi" : "Dummy name"
    },
    "classificationScopeUrns" : [ ],
    "universityOrgIds" : [ "the-spectre" ],
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2022-11-30T16:34:41.926437",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2022-11-30T16:34:41.926569",
      "modificationOrdinal" : 23915
    },
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 520

{
  "greatestOrdinal" : 24040,
  "hasMore" : false,
  "entities" : [ {
    "codesInUse" : [ "urn:code:test:foo" ],
    "documentState" : "ACTIVE",
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2022-11-30T16:34:42.188698",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2022-11-30T16:34:42.188769",
      "modificationOrdinal" : 24040
    },
    "universityOrgId" : "the-spectre",
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "type" : "Code",
  "name" : {
    "fi" : "Nimi"
  },
  "shortName" : {
    "fi" : "Nimi"
  },
  "urn" : "urn:code:test:05397681:7016:4f49:b5c8:70bee56391f9",
  "parentUrn" : null,
  "isLeafNode" : true,
  "universitySpecifier" : null,
  "deprecated" : null
}, {
  "type" : "Code",
  "name" : {
    "fi" : "Nimi"
  },
  "shortName" : {
    "fi" : "Nimi"
  },
  "urn" : "urn:code:test:9ad6eb29:6650:44c4:94fa:8b9dda9363d8",
  "parentUrn" : null,
  "isLeafNode" : true,
  "universitySpecifier" : null,
  "deprecated" : null
}, {
  "type" : "Code",
  "name" : {
    "fi" : "Nimi"
  },
  "shortName" : {
    "fi" : "Nimi"
  },
  "urn" : "urn:code:test:4c380ee8:338f:476a:9c0e:84c9685015bc",
  "parentUrn" : null,
  "isLeafNode" : true,
  "universitySpecifier" : null,
  "deprecated" : null
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "codesInUse" : [ "urn:code:test:foo" ],
  "metadata" : null,
  "universityOrgId" : "the-spectre",
  "id" : "the-spectre"
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/course-units/v1/batch-delete HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 81
Host: localhost:8080

{
  "ids" : [ "otm-6e97e34c-17f8-443e-94ba-69408413f09b" ],
  "groupIds" : null
}
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultCourseUnit[ExportResultCourseUnit]

Produces
  • application/json

Samples

GET /api/course-units/v1/export?since=30573&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 2730

{
  "greatestOrdinal" : 30615,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2022-11-30T16:35:01.321343",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2022-11-30T16:35:01.321460",
      "modificationOrdinal" : 30615
    },
    "documentState" : "DRAFT",
    "id" : "otm-cec2be60-bbac-486d-a953-3d291b31bb9a",
    "universityOrgIds" : [ "the-spectre" ],
    "groupId" : "otm-cec2be60-bbac-486d-a953-3d291b31bb9a",
    "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-cec2be60-bbac-486d-a953-3d291b31bb9a"
    },
    "code" : "Koodi-xyzzynen-otm-cec2be60-bbac-486d-a953-3d291b31bb9a",
    "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" : "35a4e187-1ca6-4886-8f2c-3f5b61f8578f"
    }, {
      "type" : "LiteratureReference",
      "url" : "http://www.example.com",
      "localId" : "31553492-e169-4d71-983f-962d0dc2b284"
    } ],
    "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
  } ]
}

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-d7d5b3dd-abcd-42cb-8e5d-82fc5acb021e",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-d7d5b3dd-abcd-42cb-8e5d-82fc5acb021e",
  "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-d7d5b3dd-abcd-42cb-8e5d-82fc5acb021e"
  },
  "code" : "Koodi-xyzzynen-otm-d7d5b3dd-abcd-42cb-8e5d-82fc5acb021e",
  "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" : "e6343451-8cc5-4e64-9357-6e333c310c37"
  }, {
    "type" : "LiteratureReference",
    "url" : "http://www.example.com",
    "localId" : "8a8f8a8c-fc60-4764-8747-439796bf4f60"
  } ],
  "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
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-477949d2-4430-4809-9540-2822b53b6730",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-477949d2-4430-4809-9540-2822b53b6730",
  "approvalState" : "urn:code:approval-state-type:not-ready",
  "credits" : null,
  "completionMethods" : [ ],
  "assessmentItemOrder" : null,
  "substitutions" : [ ],
  "name" : {
    "fi" : "Opintojakso, jonka koodi on Koodi-xyzzynen-otm-477949d2-4430-4809-9540-2822b53b6730"
  },
  "code" : "Koodi-xyzzynen-otm-477949d2-4430-4809-9540-2822b53b6730",
  "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" : "23c8cfa5-a7e9-421c-b44f-38bea9fff5a2"
  }, {
    "type" : "LiteratureReference",
    "url" : "http://www.example.com",
    "localId" : "e022516e-01b1-4167-9265-ca392532e8c9"
  } ],
  "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
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

PATCH /api/course-units/v1/import HTTP/1.1
Content-Type: application/json
Authorization: Basic c3BlY3RyZS5pOnRlc3QxMjM=
Content-Length: 100
Host: localhost:8080

[ {
  "id" : "otm-22c7710f-3690-4f36-9ad8-2b85961e5f69",
  "name" : {
    "fi" : "Uusi nimi"
  }
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

FluxServerSentEventCourseUnit[FluxServerSentEventCourseUnit]

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultCourseUnitRealisation[ExportResultCourseUnitRealisation]

Produces
  • application/json

Samples

GET /api/course-unit-realisations/v1/export?since=40029&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3588

{
  "greatestOrdinal" : 40030,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-course-unit-admin-user",
      "createdOn" : "2022-11-30T16:35:22.239533",
      "lastModifiedBy" : "spectre-course-unit-admin-user",
      "lastModifiedOn" : "2022-11-30T16:35:22.239533",
      "modificationOrdinal" : 40030
    },
    "documentState" : "DRAFT",
    "id" : "otm-33da7380-09ae-4327-90c7-89550e152257",
    "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" : "ba74e392-8b44-4743-b604-d38935aa54e2"
    } ],
    "learningMaterial" : null,
    "learningEnvironmentDescription" : null,
    "learningEnvironments" : [ ],
    "studyFormat" : null,
    "additionalInfo" : null,
    "publishDate" : "2022-09-30",
    "activityPeriod" : {
      "startDate" : "2022-09-30",
      "endDate" : "2023-07-30"
    },
    "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-6faa8446-3d16-43c1-8092-e736e2c9dcd5",
        "name" : {
          "fi" : "Group_1_AVirkkaus"
        },
        "studyEventIds" : [ "study-event-1" ],
        "teacherIds" : [ "otm-teacher-id-3" ],
        "cancelled" : false,
        "size" : null
      }, {
        "metadata" : null,
        "id" : "otm-cbb8875b-4abe-4326-9f96-c37d9df4210d",
        "name" : {
          "fi" : "Group_1_BVirkkaus"
        },
        "studyEventIds" : [ "study-event-1" ],
        "teacherIds" : [ "otm-teacher-id-3" ],
        "cancelled" : false,
        "size" : 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" : "2022-09-23T00:00",
      "endDateTime" : "2022-09-29T00:00"
    },
    "lateEnrolmentEnd" : "2022-12-30T00:00",
    "enrolmentAdditionalCancellationEnd" : "2022-10-30T00: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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

CourseUnitRealisation[CourseUnitRealisation]

Produces
  • application/json

Samples

GET /api/course-unit-realisations/v1/otm-dc4d1138-f385-4188-a589-7002591efec7 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3317

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "spectre-course-unit-realisation-admin-user",
    "createdOn" : "2022-11-30T16:35:22.701974",
    "lastModifiedBy" : "spectre-course-unit-realisation-admin-user",
    "lastModifiedOn" : "2022-11-30T16:35:22.701974",
    "modificationOrdinal" : 40266
  },
  "documentState" : "DRAFT",
  "id" : "otm-dc4d1138-f385-4188-a589-7002591efec7",
  "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" : "e9f951cf-f70d-4cf8-9992-8d037651b852"
  } ],
  "learningMaterial" : null,
  "learningEnvironmentDescription" : null,
  "learningEnvironments" : [ ],
  "studyFormat" : null,
  "additionalInfo" : null,
  "publishDate" : "2022-09-30",
  "activityPeriod" : {
    "startDate" : "2022-09-30",
    "endDate" : "2023-07-30"
  },
  "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-44520289-f5d2-4c0a-9346-8c92681eb2ba",
      "name" : {
        "fi" : "Group_1_AVirkkaus"
      },
      "studyEventIds" : [ "study-event-1" ],
      "teacherIds" : [ "otm-teacher-id-3" ],
      "cancelled" : false,
      "size" : null
    }, {
      "metadata" : null,
      "id" : "otm-2f123c38-f9eb-4ef6-96af-66098ea9d794",
      "name" : {
        "fi" : "Group_1_BVirkkaus"
      },
      "studyEventIds" : [ "study-event-1" ],
      "teacherIds" : [ "otm-teacher-id-3" ],
      "cancelled" : false,
      "size" : 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" : "2022-09-23T00:00",
    "endDateTime" : "2022-09-29T00:00"
  },
  "lateEnrolmentEnd" : "2022-12-30T00:00",
  "enrolmentAdditionalCancellationEnd" : "2022-10-30T00: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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/course-unit-realisations/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 1468
Host: localhost:8080

[ {
  "metadata" : {
    "revision" : null,
    "createdBy" : null,
    "createdOn" : null,
    "lastModifiedBy" : null,
    "lastModifiedOn" : null,
    "modificationOrdinal" : null
  },
  "documentState" : "DRAFT",
  "id" : "otm-cc83624f-64f4-4a36-b2eb-7a5de2167f74",
  "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" : "2022-09-30",
    "endDate" : "2023-07-30"
  },
  "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

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/course-unit-realisations/v1/import/legacy HTTP/1.1
Content-Type: application/json
Content-Length: 3129
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" : "66db00d9-2c82-4de8-a661-6cd149564bf0"
  } ],
  "learningMaterial" : null,
  "learningEnvironmentDescription" : null,
  "learningEnvironments" : [ ],
  "studyFormat" : null,
  "additionalInfo" : null,
  "publishDate" : null,
  "activityPeriod" : {
    "startDate" : "2022-09-30",
    "endDate" : "2023-07-30"
  },
  "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-083d686c-e27c-4ba7-8ed9-a89a7ca2a914",
      "name" : {
        "fi" : "Group_1_AVirkkaus"
      },
      "studyEventIds" : [ "study-event-1" ],
      "teacherIds" : [ "otm-teacher-id-3" ],
      "cancelled" : false,
      "size" : null
    }, {
      "metadata" : null,
      "id" : "otm-2d02c298-af2e-444c-9870-efa44f84843e",
      "name" : {
        "fi" : "Group_1_BVirkkaus"
      },
      "studyEventIds" : [ "study-event-1" ],
      "teacherIds" : [ "otm-teacher-id-3" ],
      "cancelled" : false,
      "size" : 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" : "2022-09-23T00:00",
    "endDateTime" : "2022-09-29T00:00"
  },
  "lateEnrolmentEnd" : "2022-12-30T00:00",
  "enrolmentAdditionalCancellationEnd" : "2022-10-30T00: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

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

PATCH /api/course-unit-realisations/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 66
Host: localhost:8080

[ {
  "id" : "ok-cur",
  "name" : {
    "fi" : "Uusi nimi"
  }
} ]
HTTP/1.1 200 OK

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

FluxServerSentEventCourseUnitRealisation[FluxServerSentEventCourseUnitRealisation]

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultCurriculumPeriod[ExportResultCurriculumPeriod]

Produces
  • application/json

Samples

GET /api/curriculum-periods/v1/export?since=41404&limit=5 HTTP/1.1
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 675

{
  "greatestOrdinal" : 41406,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2022-11-30T16:35:25.727413",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2022-11-30T16:35:25.727516",
      "modificationOrdinal" : 41406
    },
    "documentState" : "ACTIVE",
    "id" : "otm-3bf85490-ef65-4db4-b436-e8a53bd4b7eb",
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/curriculum-periods/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 6892
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

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultEducation[ExportResultEducation]

Produces
  • application/json

Samples

GET /api/educations/v1/export?since=44882&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 2968

{
  "greatestOrdinal" : 44883,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-edu-admin-user",
      "createdOn" : "2022-11-30T16:35:37.318159",
      "lastModifiedBy" : "spectre-edu-admin-user",
      "lastModifiedOn" : "2022-11-30T16:35:37.318262",
      "modificationOrdinal" : 44883
    },
    "documentState" : "DRAFT",
    "id" : "otm-2708f5ce-f270-412f-affb-c1f0b2978406",
    "universityOrgIds" : [ "the-spectre" ],
    "groupId" : "otm-2708f5ce-f270-412f-affb-c1f0b2978406",
    "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" : "3b7474e4-61b5-4527-8bec-4f4c09532713",
          "moduleGroupId" : "test-dp-1",
          "childOptions" : [ ],
          "acceptanceType" : "AUTOMATIC",
          "childNaming" : "urn:code:education-option-naming-type:specialisation",
          "degreeTitleUrn" : null,
          "educationClassificationUrn" : null
        } ]
      },
      "phase2" : null,
      "learningOpportunities" : [ {
        "localId" : "ad1faaaf-93ef-404c-8336-00c66ef205dd",
        "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",
    "type" : "Education",
    "rule" : {
      "type" : "ModuleRule",
      "localId" : "511b8e4f-9a86-4d5a-8f1f-9ced729da698",
      "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

String

otm-123456

Responses

Table 42. http response codes
Code Message Datatype

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
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: 1; mode=block
X-Frame-Options: DENY
Content-Length: 2657

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "spectre-edu-admin-user",
    "createdOn" : "2022-11-30T16:35:36.175783",
    "lastModifiedBy" : "spectre-edu-admin-user",
    "lastModifiedOn" : "2022-11-30T16:35:36.175895",
    "modificationOrdinal" : 44409
  },
  "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-2089746414",
  "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" : [ ],
      "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",
  "type" : "Education",
  "rule" : {
    "type" : "ModuleRule",
    "localId" : "af6d7d36-abe4-4e40-b164-c2e59b8aa665",
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-a7d1d9c4-4a95-4b4a-a678-9cce6b25ebae",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-a7d1d9c4-4a95-4b4a-a678-9cce6b25ebae",
  "name" : {
    "fi" : "TEol FM"
  },
  "validityPeriod" : {
    "startDate" : "1970-01-01",
    "endDate" : "2071-12-03"
  },
  "code" : "CODE--1924959471",
  "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-110",
        "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",
  "type" : "Education",
  "rule" : {
    "type" : "ModuleRule",
    "localId" : "edu-rule--1346770413",
    "moduleGroupId" : "otm-testi-dp-TeM"
  }
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-6d673b86-7a80-4548-af26-53b7a5007c54",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-6d673b86-7a80-4548-af26-53b7a5007c54",
  "name" : {
    "fi" : "TEol FM"
  },
  "validityPeriod" : {
    "startDate" : "1970-01-01",
    "endDate" : "2071-12-03"
  },
  "code" : "CODE-3302811",
  "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-113",
        "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",
  "type" : "Education",
  "rule" : {
    "type" : "ModuleRule",
    "localId" : "edu-rule--1255790248",
    "moduleGroupId" : "otm-testi-dp-TeM"
  }
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Patch learning opportunity or 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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Education[Education]

Produces
  • /

Samples

PATCH /api/educations/otm-cfbbaea8-b895-493b-a39c-f9916e1468aa/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-49907d3e-c05d-4ed5-bd7b-7e565ad371f8" ]
}
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 2758

{
  "metadata" : {
    "revision" : 2,
    "createdBy" : "spectre.i",
    "createdOn" : "2022-11-30T16:35:35.760344",
    "lastModifiedBy" : "spectre.i",
    "lastModifiedOn" : "2022-11-30T16:35:35.775117",
    "modificationOrdinal" : 44183
  },
  "documentState" : "ACTIVE",
  "id" : "otm-cfbbaea8-b895-493b-a39c-f9916e1468aa",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-cfbbaea8-b895-493b-a39c-f9916e1468aa",
  "name" : {
    "fi" : "TEol FM"
  },
  "validityPeriod" : {
    "startDate" : "1970-01-01",
    "endDate" : "2071-12-03"
  },
  "code" : "CODE--1224783508",
  "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-72",
        "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-49907d3e-c05d-4ed5-bd7b-7e565ad371f8" ],
      "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",
  "type" : "Education",
  "rule" : {
    "type" : "ModuleRule",
    "localId" : "6341e5aa-3e1f-4531-aa41-d9172ce3bc1f",
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultLocation[ExportResultLocation]

Produces
  • application/json

Samples

GET /api/locations/v1/export?since=46139&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 692

{
  "greatestOrdinal" : 46143,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2022-11-30T16:35:40.358634",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2022-11-30T16:35:40.358830",
      "modificationOrdinal" : 46143
    },
    "documentState" : "ACTIVE",
    "id" : "otm-c0aef876-f4fa-49a1-a717-c299101d5e60",
    "universityOrgIds" : [ "the-spectre" ],
    "name" : {
      "fi" : "Location 2022-11-30T16:35:40.356948",
      "sv" : "Location 2022-11-30T16:35:40.356948"
    },
    "capacity" : 15,
    "buildingId" : "otm-52caa7a4-c5fc-4eab-986d-507799edb3ba",
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1243

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "arska",
    "createdOn" : "2022-11-30T16:35:40.579355",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2022-11-30T16:35:40.579492",
    "modificationOrdinal" : 46232
  },
  "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" : "2022-11-30T16:35:40.575256",
      "lastModifiedBy" : "spectre.i",
      "lastModifiedOn" : "2022-11-30T16:35:40.575553",
      "modificationOrdinal" : 46229
    },
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-ed567b6b-92ac-4267-9bb7-1f8b1877abba",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Computer room",
    "fi" : "ATK-huone",
    "sv" : "ADB-rum"
  },
  "capacity" : 15,
  "buildingId" : "otm-ed567b6b-72ac-4267-9bb7-1f8b1877cb74",
  "building" : null
}, {
  "metadata" : null,
  "id" : "otm-82577521-22a8-4a42-b54a-96e549af2e21",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Class 10a",
    "fi" : "Luokka 10a",
    "sv" : "Klass 10a"
  },
  "capacity" : 15,
  "buildingId" : "otm-155b685f-2a5e-401a-90c5-167d35101764",
  "building" : null
}, {
  "metadata" : null,
  "id" : "otm-987d362f-cdfe-4b90-95bc-f47cbb309ed9",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Auditorium",
    "fi" : "Auditorio",
    "sv" : "Auditorium"
  },
  "capacity" : 15,
  "buildingId" : "otm-5029f514-b78c-4135-a354-9866fa472016",
  "building" : null
}, {
  "metadata" : null,
  "id" : "otm-987d362f-cdfe-4b90-88bc-f47cbb309eff",
  "universityOrgIds" : [ "the-spectre" ],
  "name" : {
    "en" : "Class 5a",
    "fi" : "Luokka 5a",
    "sv" : "Klass 5a"
  },
  "capacity" : 15,
  "buildingId" : "otm-5029f514-b78c-4135-a354-9866fa472016",
  "building" : null
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/modules/v1/batch-delete HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 125
Host: localhost:8080

{
  "ids" : [ "otm-3b19049e-ee90-419f-89d2-f514c7a3f49e", "otm-8b37e057-51ce-4922-a6c4-2e61628a8959" ],
  "groupIds" : null
}
HTTP/1.1 200 OK

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
Content-Length: 2438

{
  "greatestOrdinal" : 51773,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre-study-module-admin-user",
      "createdOn" : "2022-11-30T16:35:51.456756",
      "lastModifiedBy" : "spectre-study-module-admin-user",
      "lastModifiedOn" : "2022-11-30T16:35:51.456876",
      "modificationOrdinal" : 51773
    },
    "documentState" : "DRAFT",
    "id" : "otm-06b60fb8-6528-4230-8fd5-02c7f1e55239",
    "universityOrgIds" : [ "the-spectre" ],
    "groupId" : "otm-06b60fb8-6528-4230-8fd5-02c7f1e55239",
    "name" : {
      "fi" : "Module that has ID otm-06b60fb8-6528-4230-8fd5-02c7f1e55239"
    },
    "moduleContentApprovalRequired" : false,
    "code" : "code-xyzzy-otm-06b60fb8-6528-4230-8fd5-02c7f1e55239",
    "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,
    "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" : "b7d0e013-91f0-41c6-8e68-5217b8ece969"
    }
  } ]
}

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

List[oneOf DegreeProgramme, GroupingModule, StudyModule]

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

List[oneOf DegreeProgramme, GroupingModule, StudyModule]

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

oneOf<DegreeProgramme,GroupingModule,StudyModule>[oneOf DegreeProgramme, GroupingModule, StudyModule]

Produces
  • application/json

Samples

GET /api/modules/v1/otm-8ede512b-684f-419e-aeff-19836fc7822a HTTP/1.1
Content-Type: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Cache-Control: public,max-age=0,s-maxage=25200
xkey: otm-8ede512b-684f-419e-aeff-19836fc7822a
Content-Type: application/json
Content-Length: 2194

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "spectre-admin",
    "createdOn" : "2022-11-30T16:35:50.645146",
    "lastModifiedBy" : "spectre-admin",
    "lastModifiedOn" : "2022-11-30T16:35:50.645245",
    "modificationOrdinal" : 51377
  },
  "documentState" : "DRAFT",
  "id" : "otm-8ede512b-684f-419e-aeff-19836fc7822a",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-8ede512b-684f-419e-aeff-19836fc7822a",
  "name" : {
    "fi" : "Module that has ID otm-8ede512b-684f-419e-aeff-19836fc7822a"
  },
  "moduleContentApprovalRequired" : true,
  "code" : "code-xyzzy-otm-8ede512b-684f-419e-aeff-19836fc7822a",
  "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,
  "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" : "d707be12-d603-4b28-9059-a4401d1e3c63"
  }
}

Import legacy modules

POST /api/modules/v1/import/legacy

Import with a lenient legacy validation

Parameters

Body Parameter
Name Description Schema Example

oneOf DegreeProgramme, GroupingModule, StudyModule* required

List (oneOf DegreeProgramme, GroupingModule, StudyModule)

Responses

Table 62. http response codes
Code Message Datatype

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/modules/v1/import/legacy HTTP/1.1
Content-Type: application/json
Content-Length: 3752
Host: localhost:8080

[ {
  "metadata" : null,
  "id" : "otm-5a82dade-7626-401c-9736-78600325a6f6",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-5a82dade-7626-401c-9736-78600325a6f6",
  "name" : {
    "fi" : "Module that has ID otm-5a82dade-7626-401c-9736-78600325a6f6"
  },
  "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,
  "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" : "b9da085a-7b03-4107-90f4-62ea54212c23"
  }
}, {
  "metadata" : null,
  "id" : "otm-3c5c7a3d-75a1-4bcf-94c7-33afdade3042",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-3c5c7a3d-75a1-4bcf-94c7-33afdade3042",
  "name" : {
    "fi" : "Module that has ID otm-3c5c7a3d-75a1-4bcf-94c7-33afdade3042"
  },
  "moduleContentApprovalRequired" : false,
  "code" : "code-xyzzy-otm-3c5c7a3d-75a1-4bcf-94c7-33afdade3042",
  "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,
  "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" : "43f3faab-3011-40b4-8cef-091bff4a18ba"
  }
} ]
HTTP/1.1 200 OK

Import modules

POST /api/modules/v1/import

Import with strict validation

Parameters

Body Parameter
Name Description Schema Example

oneOf DegreeProgramme, GroupingModule, StudyModule* required

List (oneOf DegreeProgramme, GroupingModule, StudyModule)

Responses

Table 63. http response codes
Code Message Datatype

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/modules/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 3801
Host: localhost:8080

[ {
  "metadata" : null,
  "id" : "otm-e875e747-e29d-47fa-a411-288a59da0023",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-e875e747-e29d-47fa-a411-288a59da0023",
  "name" : {
    "fi" : "Module that has ID otm-e875e747-e29d-47fa-a411-288a59da0023"
  },
  "moduleContentApprovalRequired" : false,
  "code" : "code-xyzzy-otm-e875e747-e29d-47fa-a411-288a59da0023",
  "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,
  "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" : "420e5c92-16d9-478c-9673-8114f6df196e"
  }
}, {
  "metadata" : null,
  "id" : "otm-f9b79e59-3302-471d-89ce-22a10e9442bf",
  "universityOrgIds" : [ "the-spectre" ],
  "groupId" : "otm-f9b79e59-3302-471d-89ce-22a10e9442bf",
  "name" : {
    "fi" : "Module that has ID otm-f9b79e59-3302-471d-89ce-22a10e9442bf"
  },
  "moduleContentApprovalRequired" : false,
  "code" : "code-xyzzy-otm-f9b79e59-3302-471d-89ce-22a10e9442bf",
  "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,
  "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" : "55b8f9e4-3f42-40e1-8de7-b71e0f5f8aed"
  }
} ]
HTTP/1.1 200 OK

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

FluxServerSentEventOpenUniversityProduct[FluxServerSentEventOpenUniversityProduct]

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
Content-Length: 881

{
  "greatestOrdinal" : 52301,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre.e",
      "createdOn" : "2022-11-30T16:35:53.506932",
      "lastModifiedBy" : "spectre.e",
      "lastModifiedOn" : "2022-11-30T16:35:53.507081",
      "modificationOrdinal" : 52301
    },
    "documentState" : "DRAFT",
    "id" : "otm-a1f11861-1143-41d0-af70-4a2576e7a1a7",
    "snapshotDateTime" : "2022-05-30T16:35:53.501348",
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/organisations/v2/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1867
Host: localhost:8080

[ {
  "metadata" : null,
  "documentState" : "ACTIVE",
  "id" : "otm-c6cbc46c-e749-4df8-adff-e7b1ef830e14",
  "snapshotDateTime" : "2023-11-30T16:35:52.438387",
  "universityOrgId" : "hy-university-root-id",
  "parentId" : "otm-0ad42620-9e48-42c3-a3e9-df79311f6cb2",
  "predecessorIds" : [ "otm-58b012d1-61ee-4ea6-83e5-2c5a6f1babcb", "otm-c480de82-b56b-4bb8-8ebb-46f4c8cc7ac8" ],
  "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-58b012d1-61ee-4ea6-83e5-2c5a6f1babcb",
  "snapshotDateTime" : "2023-11-30T16:35:52.438387",
  "universityOrgId" : "hy-university-root-id",
  "parentId" : "otm-0ad42620-9e48-42c3-a3e9-df79311f6cb2",
  "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-c480de82-b56b-4bb8-8ebb-46f4c8cc7ac8",
  "snapshotDateTime" : "2023-11-30T16:35:52.438387",
  "universityOrgId" : "hy-university-root-id",
  "parentId" : "otm-0ad42620-9e48-42c3-a3e9-df79311f6cb2",
  "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

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/organisations/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 1635
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" : "2022-11-15T16:35:53.092505"
}, {
  "metadata" : null,
  "documentState" : "ACTIVE",
  "id" : "otm-c4239e90-dcbd-4731-bb51-f79f1e7b97cc",
  "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" : "2022-05-30T16:35:53.092491"
}, {
  "metadata" : null,
  "documentState" : "ACTIVE",
  "id" : "otm-4a46a55a-3012-46d3-bafd-936f32558dc3",
  "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" : "2022-05-30T16:35:53.092491"
} ]
HTTP/1.1 200 OK

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultPublicPerson[ExportResultPublicPerson]

Produces
  • application/json

Samples

GET /api/persons/v1/export?since=52596&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic aHkuZTp0ZXN0MTIz
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 664

{
  "greatestOrdinal" : 52597,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2022-11-30T16:35:55.663954",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2022-11-30T16:35:55.664222",
      "modificationOrdinal" : 52597
    },
    "documentState" : "ACTIVE",
    "id" : "otm-a331bc05-078c-4d85-9a92-8f2a779c9ecc",
    "universityOrgIds" : [ "hy-university-root-id" ],
    "firstName" : "Mikko",
    "lastName" : "Mallikas",
    "emailAddress" : "mikko@mallikas.fi",
    "titles" : [ {
      "en" : "Dean",
      "fi" : "Dekaani",
      "sv" : "Dekanus"
    } ]
  } ]
}

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

PublicPerson[PublicPerson]

Produces
  • application/json

Samples

GET /api/persons/v1/otm-c54bf3a3-1b18-4ffe-ba7c-68bb7a9f3826 HTTP/1.1
Accept: application/json
Authorization: Bearer eyJraWQiOiJ0ZXN0LjEiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzUxMiJ9.eyJzdWIiOiJhcnNrYSIsInNjb3BlIjoiYWRtaW4gdXNlciIsImlzcyI6InNpcyIsInVuaXZlcnNpdHlPcmdJZHMiOiJoeS11bml2ZXJzaXR5LXJvb3QtaWQiLCJwZXJzb25pZCI6Im90bS1hZG1pbi1pZC0xIiwiZXhwIjoxNjY5ODE5MTM1LCJ1c2VyaW5mbyI6e319.ANJcnUH2LCfmeQrbYHcbtiXuDIqfYc3UC8GhQgCGXK1xjEy1p1zcQYuafeGm9fhCSBbT6hMH2a-RkPun2tcP3j2YAOBdNElPQ-M2PyaTvLLeAKv2wtKc83yEQdaYqIeqEqg0PDY9YLyA6bzSDINqc-Mdh4gewrVVOSgNXgAcjII9hfaP
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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" : "2022-11-30T16:35:55.391834",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2022-11-30T16:35:55.391970",
    "modificationOrdinal" : 52558
  },
  "documentState" : "ACTIVE",
  "id" : "otm-c54bf3a3-1b18-4ffe-ba7c-68bb7a9f3826",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "firstName" : "Uusi",
  "lastName" : "Ihminen",
  "emailAddress" : "sposti@fake.osoite",
  "titles" : [ {
    "en" : "Dean",
    "fi" : "Dekaani",
    "sv" : "Dekanus"
  } ]
}

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/persons/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic aHkuaTp0ZXN0MTIz
Content-Length: 957
Host: localhost:8080

[ {
  "metadata" : null,
  "id" : "otm-99b76cf7-7365-4ea5-ab16-3da9a2c0b13c",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "firstName" : "Uusi",
  "lastName" : "Ihminen",
  "emailAddress" : "sposti@ss.fi",
  "titles" : [ ]
}, {
  "metadata" : null,
  "id" : "otm-0d271fd4-e7c8-46be-a75c-2ba3a6d615d0",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "firstName" : "Matti",
  "lastName" : "Matala",
  "emailAddress" : "mm@pp.fi",
  "titles" : [ ]
}, {
  "metadata" : null,
  "id" : "otm-f6f10fe7-f97b-4cbc-95de-02b7ef2e372c",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "firstName" : "Pertti",
  "lastName" : "Peltola",
  "emailAddress" : "pp@pp.fi",
  "titles" : [ {
    "fi" : "Suurmestari"
  } ]
}, {
  "metadata" : null,
  "id" : "otm-64d4af15-a693-4d15-a964-5296d0fff828",
  "universityOrgIds" : [ "hy-university-root-id" ],
  "firstName" : "Pertti",
  "lastName" : "Palola",
  "emailAddress" : "pap@pp.fi",
  "titles" : [ ]
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

ExportResultStudyEvent[ExportResultStudyEvent]

Produces
  • application/json

Samples

GET /api/study-events/v1/export?since=53144&limit=5 HTTP/1.1
Accept: application/json
Authorization: Basic c3BlY3RyZS5lOnRlc3QxMjM=
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 863

{
  "greatestOrdinal" : 53145,
  "hasMore" : false,
  "entities" : [ {
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2022-11-30T16:35:56.884620",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2022-11-30T16:35:56.884734",
      "modificationOrdinal" : 53145
    },
    "documentState" : "ACTIVE",
    "id" : "otm-99e86be0-cda0-4be9-9b47-4d451731da57",
    "universityOrgIds" : [ "the-spectre" ],
    "primaryCourseUnitRealisationId" : null,
    "name" : {
      "fi" : "StudyEvent 2022-11-30T16:35:56.884186"
    },
    "locationIds" : [ "test-lokaatio-id-001" ],
    "recursEvery" : "WEEKLY",
    "startTime" : "2022-10-07T10:00",
    "duration" : "PT2H",
    "recursUntil" : "2022-12-16",
    "exceptions" : [ "2022-12-09" ],
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

StudyEvent[StudyEvent]

Produces
  • application/json

Samples

GET /api/study-events/v1/otm-4b5fb6b7-d68e-4e89-a4d2-7cffb039e573 HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 3310

{
  "metadata" : {
    "revision" : 1,
    "createdBy" : "arska",
    "createdOn" : "2022-11-30T16:35:56.180243",
    "lastModifiedBy" : "arska",
    "lastModifiedOn" : "2022-11-30T16:35:56.180355",
    "modificationOrdinal" : 52811
  },
  "documentState" : "ACTIVE",
  "id" : "otm-4b5fb6b7-d68e-4e89-a4d2-7cffb039e573",
  "universityOrgIds" : [ "the-spectre" ],
  "primaryCourseUnitRealisationId" : null,
  "name" : {
    "fi" : "StudyEvent 2022-11-30T16:35:56.179872"
  },
  "locationIds" : [ ],
  "recursEvery" : "WEEKLY",
  "startTime" : "2022-10-07T10:00",
  "duration" : "PT2H",
  "recursUntil" : "2022-12-16",
  "exceptions" : [ "2022-12-09" ],
  "cancellations" : [ ],
  "overrides" : [ ],
  "events" : [ {
    "start" : "2022-10-07T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-10-07T12:00"
  }, {
    "start" : "2022-10-14T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-10-14T12:00"
  }, {
    "start" : "2022-10-21T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-10-21T12:00"
  }, {
    "start" : "2022-10-28T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-10-28T12:00"
  }, {
    "start" : "2022-11-04T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-11-04T12:00"
  }, {
    "start" : "2022-11-11T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-11-11T12:00"
  }, {
    "start" : "2022-11-18T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-11-18T12:00"
  }, {
    "start" : "2022-11-25T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-11-25T12:00"
  }, {
    "start" : "2022-12-02T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-12-02T12:00"
  }, {
    "start" : "2022-12-09T10:00",
    "duration" : "PT2H",
    "excluded" : true,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-12-09T12:00"
  }, {
    "start" : "2022-12-16T10:00",
    "duration" : "PT2H",
    "excluded" : false,
    "cancelled" : false,
    "irregularLocationIds" : null,
    "irregularTeacherIds" : null,
    "notice" : null,
    "end" : "2022-12-16T12: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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

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

[ {
  "metadata" : null,
  "id" : "otm-2d03245b-607e-4169-904f-27b562261a9b",
  "universityOrgIds" : [ "the-spectre" ],
  "primaryCourseUnitRealisationId" : null,
  "name" : {
    "fi" : "StudyEvent 2022-11-30T16:35:56.269888"
  },
  "locationIds" : [ "test-lokaatio-id-001" ],
  "recursEvery" : "WEEKLY",
  "startTime" : "2022-10-07T10:00",
  "duration" : "PT2H",
  "recursUntil" : "2022-12-16",
  "exceptions" : [ "2022-12-09" ],
  "cancellations" : [ ],
  "overrides" : [ ],
  "events" : null
}, {
  "metadata" : null,
  "id" : "otm-9f0c7187-e653-43c9-afe1-e5d0e297fe82",
  "universityOrgIds" : [ "the-spectre" ],
  "primaryCourseUnitRealisationId" : null,
  "name" : {
    "fi" : "StudyEvent 2022-11-30T16:35:56.269949"
  },
  "locationIds" : [ "test-lokaatio-id-001" ],
  "recursEvery" : "WEEKLY",
  "startTime" : "2022-10-07T10:00",
  "duration" : "PT2H",
  "recursUntil" : "2022-12-16",
  "exceptions" : [ "2022-12-09" ],
  "cancellations" : [ ],
  "overrides" : [ ],
  "events" : null
} ]
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

FluxServerSentEventStudyEvent[FluxServerSentEventStudyEvent]

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
Content-Length: 556

{
  "greatestOrdinal" : 54906,
  "hasMore" : false,
  "entities" : [ {
    "id" : "otm-3eb5101b-3fe5-4281-8b4f-1e528ccaa426",
    "valid" : {
      "startDate" : "2017-01-01",
      "endDate" : "2020-01-01"
    },
    "org" : "the-spectre",
    "studyTerms" : null,
    "metadata" : {
      "revision" : 1,
      "createdBy" : "arska",
      "createdOn" : "2022-11-30T16:36:00.651944",
      "lastModifiedBy" : "arska",
      "lastModifiedOn" : "2022-11-30T16:36:00.652101",
      "modificationOrdinal" : 54906
    },
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/study-year-templates/v1/import HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 7970
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

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
Content-Length: 585

{
  "greatestOrdinal" : 54996,
  "hasMore" : false,
  "entities" : [ {
    "requirements" : [ {
      "educationTypeUrn" : "urn:code:education-type:test",
      "studentUnionMembershipFeeRequirement" : "POSSIBLE"
    } ],
    "documentState" : "ACTIVE",
    "metadata" : {
      "revision" : 1,
      "createdBy" : "spectre.e",
      "createdOn" : "2022-11-30T16:36:01.831156",
      "lastModifiedBy" : "spectre.e",
      "lastModifiedOn" : "2022-11-30T16:36:01.831332",
      "modificationOrdinal" : 54996
    },
    "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

200

OK

Samples

POST /api/term-registration-requirements/v1/import HTTP/1.1
Content-Type: application/json
Content-Length: 261
Host: localhost:8080

[ {
  "requirements" : [ {
    "educationTypeUrn" : "urn:code:education-type:test",
    "studentUnionMembershipFeeRequirement" : "POSSIBLE"
  } ],
  "documentState" : "ACTIVE",
  "metadata" : null,
  "universityOrgId" : "the-spectre",
  "id" : "the-spectre"
} ]
HTTP/1.1 200 OK

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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: 1089
Host: localhost:8080

{
  "universityOrgId" : "the-spectre",
  "messageSenderName" : null,
  "openUniversitySettings" : null,
  "defaultMunicipalityUrn" : "urn:code:municipality:405",
  "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?local\",    \"en\": \"/student/universityNaviSample.html?local\",    \"sv\": \"/student/universityNaviSample.html?local\"}",
  "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
Content-Type: application/json
Content-Length: 1089

{
  "universityOrgId" : "the-spectre",
  "messageSenderName" : null,
  "openUniversitySettings" : null,
  "defaultMunicipalityUrn" : "urn:code:municipality:405",
  "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?local\",    \"en\": \"/student/universityNaviSample.html?local\",    \"sv\": \"/student/universityNaviSample.html?local\"}",
  "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

403

Authorization failed, access forbidden

401

Authentication required

400

Bad request

422

Validation failed

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
Content-Type: application/json
Content-Length: 1089

{
  "universityOrgId" : "the-spectre",
  "messageSenderName" : null,
  "openUniversitySettings" : null,
  "defaultMunicipalityUrn" : "urn:code:municipality:405",
  "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?local\",    \"en\": \"/student/universityNaviSample.html?local\",    \"sv\": \"/student/universityNaviSample.html?local\"}",
  "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 required

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.

ValidAssessmentItemSnapshot(sameValueProperties = [Ljava.lang.String;@6959afcd)

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 oneOf LiteratureName, LiteratureReference

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

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 required

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

oneOf FinnishAddress, GenericAddress

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,

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

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 oneOf Code, CompetencyCode, CountryCode

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

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

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,

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 required

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 optional

Co-operation networks this entity is part of

ContainsNoNulls

Set of CooperationNetworkShare

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

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

NotNull

[String]

urn:code: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

Cooperation network settings specific to home university

[Object]

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,

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 oneOf LiteratureName, LiteratureReference

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

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 required

Person rule type

[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 oneOf LiteratureName, LiteratureReference

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&#39;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

curriculumPeriodIds required

IDs of the curriculum periods to which this study module or degree programme belongs to.

List of [string]

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

type required

One of Education, DegreeProgramme, StudyModule, or GroupingModule

[String]

null

rule required

oneOf AnyCourseUnitRule, AnyModuleRule, CompositeRule, CourseUnitCountRule, CourseUnitRule, CreditsRule, ModuleRule

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

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

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;@1fa89f2f)

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

type required

One of Education, DegreeProgramme, StudyModule, or GroupingModule

[String]

null

rule optional

oneOf AnyCourseUnitRule, AnyModuleRule, CompositeRule, CourseUnitCountRule, CourseUnitRule, CreditsRule, ModuleRule

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

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 required

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 required

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 required

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 oneOf DegreeProgramme, GroupingModule, StudyModule

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

FluxServerSentEventCourseUnit

Field Name Description Validation Schema Example

prefetch optional

[Integer] int32

null

FluxServerSentEventCourseUnitRealisation

Field Name Description Validation Schema Example

prefetch optional

[Integer] int32

null

FluxServerSentEventOpenUniversityProduct

Field Name Description Validation Schema Example

prefetch optional

[Integer] int32

null

FluxServerSentEventStudyEvent

Field Name Description Validation Schema Example

prefetch optional

[Integer] int32

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

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

curriculumPeriodIds optional

List of [string]

null

code optional

[String]

null

type required

One of Education, DegreeProgramme, StudyModule, or GroupingModule

[String]

null

rule required

oneOf AnyCourseUnitRule, AnyModuleRule, CompositeRule, CourseUnitCountRule, CourseUnitRule, CreditsRule, ModuleRule

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

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

studyRightValidityTerms optional

Study right validity period extended by number of terms.

Min(value = 0)

[Integer] int32

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

InternationalContractualDegreeAgree