Deze pagina betreft een voorstel voor uitbreiding van de Edubadges API om het aanmaken van badgeclasses te ondersteunen.


Een tweede usecase betreft het aanmaken van badgeclasses via de Edubadges API.
Instellingen willen badgeclasses kunnen aanmaken waarbij de badgeclass metadata aangeleverd wordt vanuit de SIS of vanuit een ander instellingsbronsysteem. 
Uitgangspunt is dat alle benodigde metadata (zie tabel hieronder) wat benodigd is om een badgeclass aan te kunnen maken, door de instelling via de API, wordt aangeleverd. 

Userstory's

  1. Als instellingsgebruiker zou ik graag nieuwe Edubadges badgeclasses willen aanmaken, waarbij de benodigde data via een API wordt aangeleverd.
  2. Ik kan dit zowel per badgeclass als met meerdere badgeclasses tegelijk (bulk) aanmaken.
  3. Wanneer ik deze functie gebruikt heb, dan ontvang ik na het verwerken een overzicht van de status van deze verwerking. Ik zie daarbij wat de ID's en URL's van de aangemaakte badgeclasses zijn en zie eventueel ook welke badgeclasses niet aangemaakt konden worden en waarom. 
  4. Ik kan deze API ook gebruiken om wijzigingen aan badgeclasses aan te brengen, zolang er nog geen Edubadges zijn uitgegeven.

Voorbeeld edubadges badgeclass metadata

Deze tabel geeft aan welke data een Edubadges badgeclass kan bevatten en welke dataelementen verplicht dan wel optioneel zijn.
Als voorbeeld dient de badgeclass op: https://demo.edubadges.nl/public/y9Zv1aFwREargJY47cO8ww

*) Verplicht veld

Voorbeeld data benodigd voor een badgeclass

Metadata veld naam Nederlands/Engels

 Bestaand Table / Field / Type

Voorbeeld data

bc_user_id


bc_user_id: Naam van de instellingsgebruiker die namens de instelling deze actie uitvoert

*) Issuer / Issuer

NB: het publieke issuer-ID zal hier moeten worden opgegeven

issuer_badgeclass / issuer_id
int(11)

issuer_id: 3

-> Dit is het interne issuer-ID. De instelling zal hier het publiek issuer-ID moeten opgeven:
issuer_id: gezBl177SuWhblEmfiSgDw

https://demo.edubadges.nl/public/issuers/gezBl177SuWhblEmfiSgDw

Badgeclass Entity-ID

NB: Dit Badgeclass Entity-ID wordt teruggegeven na het aanmaken van een nieuwe badgeclass, maar kan optioneel worden gebruikt om wijzigingen aan te brengen aan het opgegeven badgeclass-ID

issuer_badgeclass / entity_id
varchar(254)

entity_id: y9Zv1aFwREargJY47cO8ww

*) Edubadge afbeelding / Edubadge image

NB: hoe images via deze API naar het Edubadges platform kunnen worden overgezet moet nader worden onderzocht.

issuer_badgeclass / image
varchar(100)



image: uploads/badges/issuer_badgeclass_edb0a93a-b125-481e-9b74-d61b3179ef83.png
*) Standaard vervaldatum / Default expiration setting

issuer_badgeclass / expiration_period
bigint(20)


Default: nooit (=0)

expiration_period: 0
expiration_period: 315360000000000
(=10 jaar)
expiration_period: 86400000000
(=1 dag)

*) Naam / Name

issuer_badgeclass / name
varchar(255)

name: Edubadges Example Badgeclass - Metadata

*) Beschrijving / Description

NB: Supports MarkDown

issuer_badgeclass / description
longtext 

description: ### Edubadges Example Badgeclass
>
The purpose of this badgeclass is to show an example
of the metadata fields of a badgeclass.

>
*For demonstration purposes only *


 

*) Taal van het onderwijs / Language of instruction

issuer_badgeclassextension / name
varchar(254)

issuer_badgeclassextension / original_json
longtext

 

name: extensions:LanguageExtension

original_json: {
"@context": "https://api-demo.edubadges.nl/extensions/LanguageExtension/context.json",
"type": ["Extension", "extensions:LanguageExtension"],
"Language": "en_EN"
}

Leeruitkomsten / Learning outcomes

NB: Supports MarkDown

 

 


issuer_badgeclassextension / name
varchar(254)


issuer_badgeclassextension / original_json
longtext

 

name: extensions:LearningOutcomeExtension

original_json: {
"@context": "https://api-demo.edubadges.nl/extensions/LearningOutcomeExtension/context.json",
"type": ["Extension", "extensions:LearningOutcomeExtension"],
"LearningOutcome": "The learning outcome of this badgeclass states that the recipient is able to read and interpret ancient sources as well as modern texts, and demonstrates a good overview of the important developments of this time period."
}

*) Criteria / Criteria

Aan welke criteria moet je voldoen om in aanmerking te komen voor deze edubadge?

NB1: Invullen van criteria of van criteria URL is verplicht.

NB2: Supports MarkDown

issuer_badgeclass / criteria_text
longtext

 

criteria_text: This metadata field is used to describe the 
requirements in order to qualify for this edubadge.
> For example:
*To qualify for this edubadge the student needs to
successfully complete the course such-and-so*

Of verstrek een criteria URL

Geef een persistente (blijvende) link naar de criteria of meer informatie

NB: Invullen van criteria of van criteria URL is verplicht.

issuer_badgeclass / criteria_url
varchar(254)

 

criteria_url: 
https://wiki.surfnet.nl/display/Edubadges/Edubadges+Example+BadgeClass

Studielast / Study load

Studiepunten (ECTS)

NB1: Alleen hele en halve punten.

NB2: Een minimum van 0,5 punt is vereist.

NB3: Of Studielast OF Tijd investering - Niet beiden mogelijk

NB4: Voor MBO wordt de Studielast uitgedrukt in SBU: Studiebelastinguren

issuer_badgeclassextension / name
varchar(254)

issuer_badgeclassextension / original_json
longtext

name: extensions:ECTSExtension

original_json: {
"@context": "https://api-demo.edubadges.nl/extensions/ECTSExtension/context.json",
"type": ["Extension", "extensions:ECTSExtension"],
"ECTS": 5
}

Tijd investering / Time investment

in uren

issuer_badgeclassextension / name
varchar(254)

issuer_badgeclassextension / original_json
longtext

name: extensions:TimeInvestmentExtension

original_json: {
"@context": "https://api-demo.edubadges.nl/extensions/TimeInvestmentExtension/context.json",
"type": ["Extension", "extensions:TimeInvestmentExtension"],
"TimeInvestment": 40
}

Toegestane edubadge instellingen /
Award allowed institutions

NB: Alleen voor badgeclasses ZONDER Studielast (ECTS of SBU)

issuer_badgeclass_award_allowed_institutions / badgeclass_id
int(11)

issuer_badgeclass_award_allowed_institutions /institution_id
int(11)

badgeclass_id: 124

institution_id: 5

Opleidingscodes / Programme Identifiers

NB1: De opleidingscode is verplicht als er studiepunten zijn opgegeven.

NB2: Meerdere Opleidingscodes mogelijk

issuer_badgeclassextension / name
varchar(254)

issuer_badgeclassextension / original_json
longtext


name: extensions:EducationProgramIdentifierExtension

original_json: {
"@context": "https://api-demo.edubadges.nl/extensions/EducationProgramIdentifierExtension/context.json", 
"type": ["Extension", "extensions:EducationProgramIdentifierExtension"], 
"EducationProgramIdentifier": 23434534
}

Indicatief EQF niveau / Indicative EQF level

 

issuer_badgeclassextension / name
varchar(254)

issuer_badgeclassextension / original_json
longtext   

name: extensions:EQFExtension

original_json: {
"@context": "https://api-demo.edubadges.nl/extensions/EQFExtension/context.json",
"type": ["Extension", "extensions:EQFExtension"],
"EQF": 7

}


Gerelateerd onderwijskundig raamwerk / 
Related educational framework (Meerdere mogelijk)

Naam / Name

issuer_badgeclassalignment / target_name
longtext

target_name: History

URL / URL

issuer_badgeclassalignment / target_url
varchar(2083)
target_url: https://esco.ec.europa.eu/nl/classification/skills?uri=http://data.europa.eu/esco/skill/ce6a9c03-7d45-4551-b47c-d6af1110f6a0

Omschrijving / Description

issuer_badgeclassalignment / target_description
longtext

target_description: The methods, techniques and guidelines historians follow when researching and describing the past, such as the use of primary sources.

issuer_badgeclassalignment / target_framework
longtext

target_framework: ESCO
     

Code / Code
issuer_badgeclassalignment / target_code
longtext
target_code: ce6a9c03-7d45-4551-b47c-d6af1110f6a0
Badge class opties / Badge class options
Privé badge class / Private badge class

issuer_badgeclass / is_private
tinyint(1)

Boolean:
0 = not private
1 = private

is_private: 0
Uitreiken aan niet gevalideerd account toestaan /
Award to non-validated account allowed

issuer_badgeclass / award_non_validated_name_allowed
tinyint(1) 

Boolean:
0 = award to non-validated account is allowed
1 = award to non-validated account is not allowed

award_non_validated_name_allowed: 0
Badge class ihkv de pilot Microcredentials /
Badge class related to Microcredentials pilot

issuer_badgeclass / is_micro_credentials
tinyint(1)

Boolean:
0 = Badgeclass is not related to Microcredentials pilot
1 = Badgeclass is related to Microcredentials pilot

is_micro_credentials: 0
Archived

issuer_badgeclass / archived
tinyint(1)

Boolean:
0 = Badgeclass is not archived
1 = Badgeclass is archived

archived: 0
Evidence/Narrative opties / Evidence/Narrative options
Bewijs (URL) verplicht bij uitgeven /
Evidence (URL) required when issuing

issuer_badgeclass / evidence_required
tinyint(1)

Boolean:
0 = evidence is not required
1 = evidence is required

evidence_required: 1
Motivatie verplicht bij uitgeven /
Narrative required when issuing

issuer_badgeclass / narrative_required
tinyint(1)

Boolean:
0 = narrative is not required
1 = narrative is required

narrative_required: 1
Motivatie verplicht voor aanvraag /
Motivation required for enrollment

issuer_badgeclass / narrative_student_required
tinyint(1)

Boolean:
0 = Motivation is not required for enrollment
1 = Motivation is required for enrollment

narrative_student_required: 1
Bewijs (URL) verplicht voor aanvraag /
Evidence (URL) required for enrollment

issuer_badgeclass / evidence_student_required
tinyint(1)

Boolean:
0 = Evidence is not required for enrollment
1 = Evidence is required for enrollment

evidence_student_required: 1
Award opties / Award options
Direct-Award niet toegestaan /
Direct-Award disabled

issuer_badgeclass / direct_awarding_disabled
tinyint(1)

Boolean:
0 = Direct-Award is not disabled
1 = Direct-Award is disabled

direct_awarding_disabled: 0
Self-enrollment niet toegestaan /
Self-enrollment  disabled

issuer_badgeclass / self_enrollment_disabled
tinyint(1)

Boolean:
0 = Self-enrollment is not disabled
1 = Self-enrollment is disabled

self_enrollment_disabled: 0


Voorbeeld Response data


Status

200 OK
400 Bad request

200 OK
Badgeclass-IDissuer_badgeclass / id
int(11)
id: 132
Badgeclass Entity-ID

issuer_badgeclass / entity_id
varchar(254)

entity_id: y9Zv1aFwREargJY47cO8ww
Date and Time Created
issuer_badgeclass / created_at
datetime(6) 
created_at: 2024-02-08 14:42:28.494484
Created by UserID
issuer_badgeclass / created_by_id
int(11)
created_by_id: 2
Date and Time Updated
issuer_badgeclass / updated_at
datetime(6)
updated_at: 2024-02-08 14:42:28.866918
 Updated by UserID

issuer_badgeclass / updated_by_id
int(11)

updated_by_id: NULL


Voorbeeld POST /badgeclass/create

Request Body

{
  "bc_user_id": "string", 
  "issuer_id": "string",
  "entity_id": "string",
  "image": "string",
  "expiration_period": "integer",
  "name": "string",
  "description": "string",
   "Language": "string",
   "LearningOutcome": "string",
   "criteria_text": "string",
   "criteria_url": "string",
   "ECTS": "integer",
   "TimeInvestment": "integer",
   "EducationProgramIdentifier": "string",
   "EQF": "integer",
   "badgeclassalignment": [
    {
      "target_name": "string",
      "target_url": "string",
      "target_description": "string",
      "target_framework": "string",
      "target_code": "string"
    }
  ],
  "is_private": "boolean",
  "award_non_validated_name_allowed": "boolean",
  "is_micro_credentials": "boolean",
  "archived": "boolean",
  "evidence_required": "boolean",
  "narrative_required": "boolean",
  "narrative_student_required": "boolean",
  "evidence_student_required": "boolean",
  "direct_awarding_disabled": "boolean",
  "self_enrollment_disabled": "boolean"
}'


cURL Examples

# Example Badgeclass Create

curl --location --request POST 'https://api-demo.edubadges.nl/badgeclass/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJraWQiOiJrZXlfMjAyM18wOF8xNV8wMF8wMF8wMF8wMjIiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJvc2lyaXMuZGVtby5lZHViYWRnZXMubmwiLCJzdWIiOiJvc2lyaXMuZGVtby5lZHViYWRnZXMubmwiLCJuYmYiOjE2OTIwOTY1MTksInNjb3BlIjoiZWR1YmFkZ2VzLm5sXC9zaXMiLCJpc3MiOiJodHRwczpcL1wvY29ubmVjdC50ZXN0LnN1cmZjb25leHQubmwiLCJleHAiOjE2OTIxODI5MTksImlhdCI6MTY5MjA5NjUxOSwianRpIjoiMTNhZmIyMTktNDE5ZC00YWI4LTlhYzktZDY0MGUzZjJmM2YyIn0.RDGEhmOfTp-Nsr-rt_Wi6COSWwiBVrOIAMkax-gheO99rHsfbXIMKEBADEC0QzWn2LKifpsrBIbi6QBJvWcJkqcEUgg-3PflZPxq2ypOVFmqU0dqro92x5twLlpphydgcoucy2hfVVzxpfUq8nSOHIuu-8oHPdiyJ5zoLqt4NwPScMxqy3FJerTMcb7IwXX4oQdJQCRwnGxdDCTlH8KN2zckVHZIpyieFr-Xo9HpysOKbHYp6UFrpjf2nS3rXqMeOHlp8MaXd66-Pxl0jFILezM_b7_crld47y8NdYjqfBWk1jLWYuMcbVrXNyg9z1wHO14q3I6C4_Z5uhVxoSk_Pw' \
--data-raw '{
  "bc_user_id": "Naam van de instellingsgebruiker die namens de instelling deze actie uitvoert", 
  "issuer_id": "gezBl177SuWhblEmfiSgDw",
  "image": "uploads/badges/issuer_badgeclass_edb0a93a-b125-481e-9b74-d61b3179ef83.png",
  "expiration_period": 0,
  "name": "Edubadges Example Badgeclass - Metadata",
  "description": "### Edubadges Example Badgeclass
                 The purpose of this badgeclass is to show an example of the metadata fields of a badgeclass.
                 *For demonstration purposes only *",
   "Language": "en_EN",
   "LearningOutcome": "The learning outcome of this badgeclass states that the recipient is able to read and 
                       interpret ancient sources as well as modern texts, and demonstrates a good overview 
                       of the important developments of this time period.",
   "criteria_text": "To qualify for this edubadge the student needs to 
                     successfully complete the course such-and-so",
   "criteria_url": "https://wiki.surfnet.nl/display/Edubadges/Edubadges+Example+BadgeClass",
   "ECTS": 5,
   "TimeInvestment": 40,
   "EducationProgramIdentifier": "23434534",
   "EQF": 7,
   "badgeclassalignment": [
    {
      "target_name": "History",
      "target_url": "https://esco.ec.europa.eu/nl/classification/skills?uri=http://data.europa.eu/esco/skill/ce6a9c03-7d45-4551-b47c-d6af1110f6a0",
      "target_description": "The methods, techniques and guidelines historians follow when researching and describing the past, such as the use of primary sources",
      "target_framework": "ESCO",
      "target_code": "ce6a9c03-7d45-4551-b47c-d6af1110f6a0"
    }
  ],
  "is_private": false,
  "award_non_validated_name_allowed": false,
  "is_micro_credentials": false,
  "archived": false,
  "evidence_required": true,
  "narrative_required": true,
  "narrative_student_required": true,
  "evidence_student_required": true,
  "direct_awarding_disabled": false,
  "self_enrollment_disabled": false
}'


# Example Badgeclass Update

curl --location --request POST 'https://api-demo.edubadges.nl/badgeclass/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJraWQiOiJrZXlfMjAyM18wOF8xNV8wMF8wMF8wMF8wMjIiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJvc2lyaXMuZGVtby5lZHViYWRnZXMubmwiLCJzdWIiOiJvc2lyaXMuZGVtby5lZHViYWRnZXMubmwiLCJuYmYiOjE2OTIwOTY1MTksInNjb3BlIjoiZWR1YmFkZ2VzLm5sXC9zaXMiLCJpc3MiOiJodHRwczpcL1wvY29ubmVjdC50ZXN0LnN1cmZjb25leHQubmwiLCJleHAiOjE2OTIxODI5MTksImlhdCI6MTY5MjA5NjUxOSwianRpIjoiMTNhZmIyMTktNDE5ZC00YWI4LTlhYzktZDY0MGUzZjJmM2YyIn0.RDGEhmOfTp-Nsr-rt_Wi6COSWwiBVrOIAMkax-gheO99rHsfbXIMKEBADEC0QzWn2LKifpsrBIbi6QBJvWcJkqcEUgg-3PflZPxq2ypOVFmqU0dqro92x5twLlpphydgcoucy2hfVVzxpfUq8nSOHIuu-8oHPdiyJ5zoLqt4NwPScMxqy3FJerTMcb7IwXX4oQdJQCRwnGxdDCTlH8KN2zckVHZIpyieFr-Xo9HpysOKbHYp6UFrpjf2nS3rXqMeOHlp8MaXd66-Pxl0jFILezM_b7_crld47y8NdYjqfBWk1jLWYuMcbVrXNyg9z1wHO14q3I6C4_Z5uhVxoSk_Pw' \
--data-raw '{
  "bc_user_id": "Naam van de instellingsgebruiker die namens de instelling deze actie uitvoert", 
  "issuer_id": "gezBl177SuWhblEmfiSgDw",
  "entity_id": "y9Zv1aFwREargJY47cO8ww",
  "image": "uploads/badges/issuer_badgeclass_edb0a93a-b125-481e-9b74-d61b3179ef83.png",
  "expiration_period": 0,
  "name": "Edubadges Example Badgeclass - Metadata",
  "description": "### Edubadges Example Badgeclass
                 The purpose of this badgeclass is to show an example of the metadata fields of a badgeclass.
                 *For demonstration purposes only *",
   "Language": "en_EN",
   "LearningOutcome": "The learning outcome of this badgeclass states that the recipient is able to read and 
                       interpret ancient sources as well as modern texts, and demonstrates a good overview 
                       of the important developments of this time period.",
   "criteria_text": "To qualify for this edubadge the student needs to 
                     successfully complete the course such-and-so",
   "criteria_url": "https://wiki.surfnet.nl/display/Edubadges/Edubadges+Example+BadgeClass",
   "ECTS": 5,
   "TimeInvestment": 40,
   "EducationProgramIdentifier": "23434534",
   "EQF": 7,
   "badgeclassalignment": [
    {
      "target_name": "History",
      "target_url": "https://esco.ec.europa.eu/nl/classification/skills?uri=http://data.europa.eu/esco/skill/ce6a9c03-7d45-4551-b47c-d6af1110f6a0",
      "target_description": "The methods, techniques and guidelines historians follow when researching and describing the past, such as the use of primary sources",
      "target_framework": "ESCO",
      "target_code": "ce6a9c03-7d45-4551-b47c-d6af1110f6a0"
    }
  ],
  "is_private": false,
  "award_non_validated_name_allowed": false,
  "is_micro_credentials": false,
  "archived": false,
  "evidence_required": true,
  "narrative_required": true,
  "narrative_student_required": true,
  "evidence_student_required": true,
  "direct_awarding_disabled": false,
  "self_enrollment_disabled": false
}'


  • No labels