Courses

A course is a product type in EduMS which hosts all information related to the course.

What you can automate

Automate the following actions using Provider API: course creation, updates, and deletion. Customize course details such as description, learning segments, method, costs, invoicing, VAT settings, dates, duration, location, language, study load, participants, target group, prerequisites, subsidies, accreditation, and more. Refer to the Course object model v1 or Course object model v2 for the complete list.

Course object model

The model details can also be found on the POST Course endpoint in the Request body section.

The properties listed of type “enum” can only accept a specific range of enumerated values.

In v2, a new endpoint has been introduced, which provides an alternative course object without any details about start moments. Additionally, deprecated properties have been removed and segment and subsegment information have been removed. Please check the models for the properties returned for each version.

Go to Course object model v1 >

Go to Course object model v2 >

Create course

See below an example of a basic course creation. You can customize it and add more information. For more properties, refer to the Course object model.

{
    "externalId": "123externalId",
    "name": "hbo Bachelor Bedrijfskunde 987",
    "providerId": "8a6eeaf9-0c1f-4426-a06d-110e613b9416",
    "learningMethod": {
        "type": "SelfPlanned",
        "costs": {
            "details":
            [
                {
                "invoiceItems": [
                    {
                        "priceBeforeTax": 200,
                        "vatAmount": 42,
                        "vatCountry": null,
                        "vatPercentage": null,
                        "vatExemptAmount": 211,
                        "vatExemptAmountVAT": 0,
                        "costType": "accommodation"
                    },
                    {
                        "priceBeforeTax": 8490,
                        "vatAmount": 1782.9,
                        "vatCountry": null,
                        "vatPercentage": null,
                        "vatExemptAmount": 9290,
                        "vatExemptAmountVAT": 0,
                        "costType": "lunch"
                    }
                ]
            }
        ]
        },
        "duration": {
            "value": 36.5,
            "unit": "Days"
        }
    }
}

Create custom or in-company course

If you want to create a course of type ‘Custom’ (maatwerk) or ‘Incompany’, you need to specify the accounts for which this course is meant. This is how you do it:

  1. Create a course via POST Course.

  2. Look up the productReference of the course that you have just created.

  3. Look up the accountReference by looking up the id of the account you are interested in via GET Account list.

  4. Using the POST Product target accounts, send the accountReference and the productReference to link them.

Edit course

You can edit a course with a PUT or PATCH request:

  • The PUT request is technically simpler and is used best for updating multiple properties at once. 

  • The PATCH request is more suitable for updating a single property at a time.

PUT request

  1. Retrieve the EduMS ID (guid) for your course.

  2. Add the guid as a parameter “courseId” to the PUT request.

  3. Send your updated course information in the body.

  4. If you get a successful response, your changes will be processed and applied in all indexes. Note: There can be a slight delay here so you might not see an immediate change in the indexes.

PATCH request

Note: Make sure to follow the JsonPatchDocument format, JSON Patch | jsonpatch.com

An example on how to update the course name:

[
  {
    "value": "Updated course name",
    "path": "name",
    "op": "replace"
  }
]

Add SubSegments to courses

Note: You can only add SubSegments to existing Segments within a course.

  1. Perform a GET list for segments (ProviderAPI - Segments List)

  2. Save the segment id

  3. Perform a GET list for subSegments (ProviderAPI - SubSegments List) with your retrieved segment as a filter. For example:

segmentId eq 3716a4d4-3fd9-42ab-b2af-018148b9dbef

4. Save the subSegments name

5. Perform a PUT Course request with the segments and subSegments. An example below:

{
    "id": "c7bbd01e-be37-49d0-9693-1322deb48389",
    "externalId": "sampleExternalId",
    "internalId": null,
    "name": "sample name",
    "shortName": null,
    "edudexProgramUrl": null,
    "status": "New",
    "statusDisplayValue": "Nieuw",
    "source": "Manual",
    "sourceDisplayValue": null,
    "categoryCode": null,
    "categoryCodeDisplayValue": null,
    "domainCode": null,
    "domainCodeDisplayValue": null,
    "domainCodeRijksoverheid": null,
    "domainCodeRijksoverheidDisplayValue": null,
    "educationLevelCode": null,
    "educationLevelCodeDisplayValue": null,
        "segments": [{
                "value": "Communication",
                "subSegments": [{
                        "value": "Comm_CommunicationAndDesign"
                    },
                    {
                        "value": "Comm_CommunicationTraining"
                    }
                ]
            },
            {
                "value": "AutomationAndIT",
                "subSegments": [{
                    "value": "AutomIT_Training"
                }]
            }
        ],
    "providerId": "35f51e37-776f-4a53-96cb-f1d7acaa9b12",
    "learningMethod": {
        "id": "5362a72d-f379-41b4-ae8e-6092b38f29c7",
        "type": "SelfPlanned",
        "typeDisplayValue": "Individueel georganiseerd",
        "format": null,
        "formatDisplayValue": null,
        "language": null,
        "languageMaterial": null,
        "studyLoad": null,
        "contactSessions": null,
        "costs": {
            "id": "c4e98561-0925-48ad-a8d4-36e3ff8d69e5",
            "details": [{
                "id": "54a2acb5-1651-44db-820f-c3a5c9d6ba6e",
                "startDate": "2022-01-05T00:00:00.0000000Z",
                "endDate": null,
                "currencyCode": "Euro",
                "currencyCodeDisplayValue": null,
                "invoiceItems": [{
                        "id": "f30e0b66-5f53-4638-9b89-03081f81869b",
                        "quantity": 1,
                        "priceBeforeTax": 200,
                        "vatAmount": 42,
                        "vatCountry": null,
                        "vatPercentage": null,
                        "vatExemptAmount": 211,
                        "vatExemptAmountVAT": 0,
                        "costType": "Accommodation",
                        "costTypeDisplayValue": "Accommodatie",
                        "isOptional": null
                    },
                    {
                        "id": "7081363a-8d06-425e-9f85-8722b8eaed6a",
                        "quantity": 1,
                        "priceBeforeTax": 8490,
                        "vatAmount": 1782.9,
                        "vatCountry": null,
                        "vatPercentage": null,
                        "vatExemptAmount": 9290,
                        "vatExemptAmountVAT": 0,
                        "costType": "Lunch",
                        "costTypeDisplayValue": "Arrangementen (Lunch)",
                        "isOptional": null
                    }
                ]
            }]
        },
        "duration": {
            "value": "36.5",
            "unit": "Days",
            "unitDisplayValue": "Dagen"
        },
        "planning": null
    },
    "diplomaType": null,
    "diplomaTypeDisplayValue": null,
    "crebo": null,
    "croho": null,
    "content": [],
    "embedded": null,
    "startDate": null,
    "endDate": null,
    "commercialPartner": "BrandOwner",
    "commercialPartnerDisplayValue": null,
    "credit": null,
    "requirements": null,
    "targetSector": [],
    "targetSectorRijksoverheid": [],
    "providerLmsLink": null,
    "competences": [],
    "subsidies": [],
    "competencesRijksoverheid": [],
    "accreditation": null,
    "productType": "Regular",
    "productTypeDisplayValue": "Open aanbod",
    "isProfessionalCourse": false,
    "searchword": [],
    "deleted": false,
    "dateDeleted": null
}

Delete course (soft deletion)

When a course is deleted using the DELETE course endpoint, it undergoes soft deletion. It remains visible in the GET detail and GET list endpoints, with the "deleted" property set to true. The indexes, related assorted products, and webhook notifications are updated accordingly.