1EdTech Resource Search 1.0 Specification: German Profile

1EdTech Resource Search 1.0 Specification: German Profile

Final Release
Spec Version 1.0
Final Release
Document Version: 1.0
Date Issued: August 1st, 2025
Status: This document is made available for adoption by the public community at large.
This version: https://www.imsglobal.org/spec/ltirs-ger/v1p0/
Latest version: https://www.imsglobal.org/spec/ltirs-ger/latest/
Errata: https://www.imsglobal.org/spec/ltirs-ger/v1p0/errata/

IPR and Distribution Notice

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on 1EdTech's procedures with respect to rights in 1EdTech specifications can be found at the 1EdTech Intellectual Property Rights webpage: https://www.1edtech.org/sites/default/files/media/docs/2023/imsipr_policyFinal.pdf .

Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: https://www.1edtech.org/standards/specification-license.

Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.

The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.

THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

Public contributions, comments and questions should be directed to support@1edtech.org .

© 2025 1EdTech™ Consortium, Inc. All Rights Reserved.

Trademark information: https://www.1edtech.org/about/legal

Abstract

The Learning Tools Interoperability (LTI) Resource Search specification defines how to search digital repositories for a set of resources via a web services API. The standard addresses searching learning object repositories (LORs), and other catalogs of learning resources. The specification supports executing these search from learning tools using various attributes of resources and returning full metadata about the resources to the learning tools. Results can be launched either as URLs or LTI links. The goal of the LTI Resource Search standard is a standard way for students and teachers to be able to search resource providers, such as learning object repositories, from single sources or aggregated from multiple sources, within a learning object consumer such as a learning management system or other educational platform.

This is the German Profile of the LTI-RS specification. The original work on the profile was sponsored by the German Federal Ministry of Education and Research.

1. Introduction

1.1 Scope and Context

The Learning Tools Interoperability (LTI) Resource Search specification defines how to search digital repositories for a set of resources via a web services API. The standard addresses searching learning object repositories (LORs), and other catalogs of learning resources. The specification supports executing these search from learning tools using various attributes of resources and returning full metadata about the resources to the learning tools. Results can be launched either as URLs or LTI links. The goal of the LTI Resource Search standard is a standard way for students and teachers to be able to search resource providers, such as learning object repositories, from single sources or aggregated from multiple sources, within a learning object consumer such as a learning management system or other educational platform.

The related LTI Resource Search documentation for the base specification is:

  • 1EdTech LTI Resource Search Service Model v1.0.1 [RS-SM-10] - the description of the Service Model;
  • 1EdTech LTI Resource Search REST/JSON Binding v1.0.1 [RS-RJ-10] - the description of the REST/JSON binding of the Service Model;
  • 1EdTech LTI Resource Search OpenAPI Definition v1.0.1 [RS-OA-10] - the description of the OpenAPI definition of the Service Model;
  • 1EdTech LTI Resource Search Conformance and Certification v1.0 [RS-CC-10] - the conformance guidelines for achieving Resource Search service certification;
  • 1EdTech LTI Resource Search Best Practices v1.0 [RS-IG-10] - the best practice guidance for implementing the Resource Search API.

This is the German Profile of the LTI-RS specification. The documents that should be used to provide more technical details to the work described herein are:

  • 1EdTech LTI Resource Search 1.0.1 Service German Profile REST/JSON Binding v1.0 [RSGP-RJ-10] - the description of the REST/JSON binding of the Service Model for the German Profile (this is derived from the base specification equivalent document [RS-RJ-10]);
  • 1EdTech LTI Resource Search 1.0.1 Service German Profile OpenAPI Definition v1.0.1 [RSGP-OA-10] - the description of the OpenAPI definition of the Service Model for the German Profile (this is derived from the base specification equivalent document [RS-OA-10]).

1.2 Conformance Statements

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, and SHOULD NOT in this document $are to be interpreted as described in $[object Object].

An implementation of this specification that fails to implement a MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED statements constitute a best practice. Ignoring a best practice does not violate conformance but a decision to disregard such guidance should be carefully considered. MAY/OPTIONAL statements indicate that implementers are entirely free to choose whether or not to implement the option.

1.3 Profiles and the Profiling Process

1EdTech create flexible specifications that can be used in a wide range of teaching and learning scenarios, markets and geographic locations. The consensus-based specification development process used by 1EdTech creates specifications that are imperfect but which 'enable practice'. The process of Profiling is used to enable different communities to tailor those specifications that enable, and enforce, best practice in the form of a Profile. It is for the community themselves to decide the form of a Profile but ALL Profiles MUST follow the constraints established by 1EdTech for the definition of a Profile. The key principle for a Profile is that an instance that conforms to the Profile will also conform to the corresponding base specification.

The creation of a Profile is based upon the following constraints:

  • A Data Model MUST only be extended as permitted by the extension points in the base specification and MUST use the corresponding constraints as imposed by the binding technology that realises the form of the extension;
  • The properties in a Data Model MAY be changed as long as the change adds constraints. This includes:
    • Multiplicity - optional properties MAY be PROHIBITED or REQUIRED. The degree of support MAY be reduced e.g. 1-to-many reduced to one ONLY
    • Data-type - making a data-type more restrictive is permitted e.g. String to Enumeration, reducing the list of permitted enumerations, Integer to Non-negative Integer, etc.
  • Embedded vocabularies MAY be extended if the original vocabulary permits extensions (it is 1EdTech best practice for all embedded vocabularies to be designed such that they can be extended). Properties of appropriate data-types e.g. String, etc. MAY be constrained by the inclusion of a new embedded vocabulary;
  • For a service model new operations MAY be added to the set of established operations. The style of definition of those operations MUST follow the style of the established operations. The new operations MAY be added to an established 'Interface' or new 'Interfaces' MAY be created;
  • New services MAY be defined. In some cases a 1EdTech specification is the combination of more than one service and so the addition of new services is consistent with the 1EdTech definition of a specification. The style of definition of a new MUST follow the style of 1EdTech service definitions and MUST be defined to support Profiling;
  • The capabilities of a service MAY be extended to take advantage of the inherent features of the binding technology. For example, new 'OAuth 2' scopes MAY be added as part of the REST-based service binding. Similarly, new Query Parameters could also be added.

The only way to ensure that a valid Profile is created is to use the 1EdTech Model Driven Specification Toolkits. Therefore, a Profile SHOULD be created as a collaborative activity between the profiling community and the 1EdTech core technical team. A Profile is published using the normal specification development process i.e. undergoes formal vote by the 1EdTEch Technical Advisory Board. All 1EdTech Members and the broader public will have access to a published Profile. Only those 1EdTech Contributing Members that either require the use of the Profile or who create products that are certified to the Profile are responsible for the maintenance of the Profile.

1.4 Structure of this Document

The structure of the rest of this document is:

2. Key Details of Education in Germany An overview of the relevant teaching and learning structures and activities that must be supported by this German profile of Resource Search 1.0. The objective is to tailor the Resource Search specification to the needs of the German teaching and learning activities.
3. The Constraints and Extensions Applied by the Profile The functional details for the profile. This includes definition of the data model extensions and increased constraints, the new endpoints to the existing Resource Search and the definition of the new vocabularies.
4. Implementation Guide The suggested best practices for the new features that have added in this profile. Usage of the best practices from the base Resource Search 1.0 specification are assumed.
5. Conformance & Certifications The certifications that are available for the German Profile and the corresponding functionality that must be supported by Service Providers and Service Consumers to prove conformance.
Appendix A Summary of Changes to the Resource Search 1.0.0 Service The formal statement of the changes made to the base specification. This statement is produced by the 1EdTech Model Driven Specification toolkit.
Appendix B OpenAPI Listings The set of OpenAPI files that have been produced to support this profile. OpenAPI files, version 3, in both the JSON and YAML formats are available.
Appendix C Summary of Conformance Tests for a Service Provider The set of tests that will be used to determine if an implementation of the service provider functionality is compliant to this Profile.
Appendix D Summary of Conformance Tests for a Consumer The set of tests that will be used to determine if an implementation of the consumer functionality is compliant to thios Profile
Appendix E Revision History Formal release history of changes made to this document.
Appendix F References Formal citations for all of the works referenced in this document.
Appendix G List of Contributors The list of individuals who contributed to the development of this document.

1.5 Terminology and Acronyms

API
Application Programming Interface
Consumer
The entity that is contained with an application/system/tool to obtain data from a Service Provider.
GUID
Globally Unique Identifier
HTTP
HyperText Transfer Protocol
IETF
Internet Engineering Task Force
IUT
Implementation Under Test. An IUT may be claiming compliance as a Consumer and/or a Service Provider and may also support CSV import and/or CSV export.
JSON
JavaScript Object Notation
LMS
Learning Management System
LOR
Learning Object Repository
REST
Representational State Transfer
RFC
Request For Comment
Service Provider
The entity that is responsible for supplying data to a Consumer. In general a Service Provider will support many Consumers concurrently.
URI
Uniform Resource Identifier
URN
Uniform Resource Name
UUID
Universally Unique Identifier

2. Key Details of Education in Germany

2.1 Use-cases Specific to German Education Needs

2.1.1 Support for German School Type

The German school system classifies students, typically after the 4th grade and in some federal counties after the 6th grade, into different school types according to their academic abilities. Therefore, it is mandatory for educators and learners searching for suitable learning material to filter by school type.

2.1.2 Support for Class Grade

The German education system imposes special characteristics to age ranges of the students and the respective grade. First, grade retention is prevalent in Germany. More than 19% of the students are retained throughout their school career, which increases age heterogeneity. Second, students enter primary school at the age of six, however, it is also fairly common that students enter primary school at the age of seven. In two of the sixteen federal counties in Germany, students visit primary school for six years, while in every other federal county primary school lasts for four years. Some of the federal countries offer to complete the highest school diploma in a total of twelve years of school, while other schools offer this in thirteen years of school. Furthermore, students in the vocational training schools and vocational internship schools have an even wider age range.

2.1.3 Clarification on Learning Resource Type

The property learningResourceType, in LTI-RS, contains values that can be assigned to two categories:

  • Didactic information e.g. Collection/Curriculum Guide, Colletion/Lesson;
  • Media format e.g. Media/Audio, Media/Video.

To give users the ability to search for specific didactic content, while also enabling them to search for a specific media type, separation of didactic and media properties of learningResourceType is preferred.

3. The Constraints and Extensions Applied by the Profile

3.1 Overview of Changes Made by the Profile

The Table below lists the changes made by the German Profile of the LTI-RS 1.0.1 specification.

A Summary of the Changes to the LTI-RS 1.0.1 Specification Made in the Profile Profile.
ID Construct Change Summary Details
1 Learning Resource Type Restructuring of the content in the Learning Resource Type vocabulary to remove the media-specific values. Learning Resource Type
2 Media Type Introduction of a new vacabulary to contain the media-specific values removed from the Learning Resource Type vocabulary. Media Type
3 School Type Introduction of a new vacabulary to identify school types. School Type
4 Class Grade Definition of a new data model to enable identification of the grade of education or range of grades, for a class. Class Grade
5 Resource Data Model Extension of the Resource data model to support the identification of media types, school types and class grades. Resource Data Model
6 Searching for Resources Changes to the search rules to enable searching according to media types, school types and class grades. Changes to Searching for Resources

3.2 Changes to the Learning Resource Type Vocabulary

The permitted set of values for the learningResourceType property has been changed. The set of changes is described in the Table below.

Enumerated Vocabulary for the Learning Resource Type.
Vocabulary Term English Description German Description Note
Activity/Experiment Use for experiment or observation (presumably every experiment includes an observation). Verwendung für Experiment oder Beobachtung. No change.
Activity/Learning Activities engaged in by the learner for the purpose of acquiring certain skills, concepts, or knowledge, whether guided by an instructor or not. Aktivitäten, die der Lernende unternimmt, um sich bestimmte Fähigkeiten, Konzepte oder Kenntnisse anzueignen, unabhängig davon, ob er von einem Ausbilder angeleitet wird oder nicht. No change.
Activity/Worksheet Also called an exercise. A set of problems created to provide students with time working on a problem area. Distinct from a formative assessment. Worksheets are extremely popular K-12 resources and need to be called out distinctly from assessments. Wird auch als Übung bezeichnet. Eine Reihe von Aufgaben, die erstellt werden, damit die Schüler Zeit haben, an einem Problemfeld zu arbeiten. Unterscheidet sich von einer formativen Bewertung. Arbeitsblätter sind äußerst beliebte K-12-Ressourcen und müssen von Bewertungen abgegrenzt werden. No change.
Assessment/Formative Formative assessment is a process used by teachers and students during instruction that provides feedback to adjust ongoing teaching and learning to improve students' achievement of intended instructional outcomes. Die formative Bewertung ist ein Prozess, der von Lehrkräften und Lernenden während des Unterrichts eingesetzt wird und Rückmeldungen zur Anpassung des laufenden Lehr- und Lernprozesses liefert, um das Erreichen der angestrebten Unterrichtsergebnisse durch die Lernenden zu verbessern. No change.
Assessment/Interim An assessment used to evaluate student learning at the end of an instructional unit by comparing it against some standard or benchmark. Eine Bewertung, die dazu dient, den Lernerfolg der Lernenden am Ende einer Unterrichtseinheit zu beurteilen, indem er mit einem Standard oder einem Benchmark verglichen wird. No change.
Assessment/Item An individual question or task on an assessment. Eine einzelne Frage oder Aufgabe in einer Bewertung. No change.
Assessment/Preparation A resource intended to provide focused preparation on a specific assessment (usually high stakes assessments). Eine Ressource, die eine gezielte Vorbereitung auf eine bestimmte Prüfung (in der Regel eine Prüfung mit hohem Schwierigkeitsgrad) ermöglichen soll. No change.
Assessment/Rubric Instructions on how to grade assessments. Anweisungen zur Benotung von Bewertungen. No change.
Collection/Course A series of units and lessons used to teach the skills and knowledge required by its curriculum. Please note the hierarchy implied here. Course is the broadest, then Unit, then Lesson. Eine Serie von Lerneinheiten und Lektionen, die dazu dienen, die im Lehrplan geforderten Fähigkeiten und Kenntnisse zu vermitteln. Bitte beachten Sie die hier implizierte Hierarchie. Kurs ist der umfassendste, dann Einheit, dann Lektion. No change.
Collection/Curriculum Guide A document that defines what concepts should be taught and/or how a concept should be taught effectively. Only teacher facing. Ein Dokument, das festlegt, welche Konzepte gelehrt werden sollten und/oder wie ein Konzept effektiv gelehrt werden sollte. Nur für Lehrer. No change.
Collection/Lesson A detailed description of the course of instruction for a short period of time that is used by a teacher to guide class instruction. Eine detaillierte Beschreibung des Unterrichtsverlaufs für einen kurzen Zeitraum, die von einer Lehrkraft zur Steuerung des Unterrichts verwendet wird. No change.
Collection/Unit A long-range plan of instruction on a particular concept; it contains multiple lessons that are related. Ein langfristiger Unterrichtsplan für ein bestimmtes Konzept, der mehrere zusammenhängende Lektionen enthält. No change.
Game A game. Ein Spiel. No change.
Lecture A lecture. Eine Vorlesung. No change.
Interactive/Simulation An imitation or modeling of a real-world process. Eine Imitation oder Modellierung eines realen Prozesses. This term has been REMOVED.
Interactive/Animation A resource that delivers interactive media-rich content such as moving images, motion graphics, animations, etc. Eine Ressource, die interaktive, mediale Inhalte wie bewegte Bilder, bewegte Grafiken, Animationen usw. enthält. This term has been REMOVED.
Interactive/Whiteboard Content specifically designed for use on an interactive whiteboard. Inhalte, die speziell für die Verwendung auf einem interaktiven Whiteboard entwickelt wurden. This term has been REMOVED.
Media/Audio A recorded audio file. Often a lecture but can be other forms. Eine aufgezeichnete Audiodatei. Oft ein Vortrag, kann aber auch andere Formen annehmen. This term has been REMOVED.
Media/Images/Visuals A picture, diagram or image. Ein Bild, ein Diagramm oder eine Abbildung. This term has been REMOVED.
Media/Video A recorded video. Often a lecture but can be other forms. Ein aufgezeichnetes Video. Oft ein Vortrag, kann aber auch andere Formen annehmen. This term has been REMOVED.
Other A learning resource type that cannot be identified by one of the other values. Ein Lernressourcentyp, der nicht durch einen der anderen Werte identifiziert werden kann. No change.
Text/Book An entire book (but not a textbook, see below) as content. Ein ganzes Buch (aber kein Lehrbuch, siehe unten) als Inhalt. This term has been REMOVED.
Text/Chapter A chapter in a book. Ein Kapitel aus einem Buch. This term has been REMOVED.
Text/Document A distinct document not considered a book. May manifest as a PDF or a web page or a word processing file. Most often a 'primary source'. Ein eigenständiges Dokument, das nicht als Buch gilt. Kann als PDF, als Webseite oder als Textverarbeitungsdatei vorliegen. Meistens eine 'Primärquelle'. This term has been REMOVED.
Text/Article Written work that contains some degree of subjectivity based on the author's point of view but based on factual information. Schriftliche Arbeit, die ein gewisses Maß an Subjektivität enthält, die auf dem Standpunkt des Autors beruht, aber auf sachlichen Informationen basiert. This term has been REMOVED.
Text/Passage Passage or passages from a work. Passage oder Passagen aus einem Werk This term has been REMOVED.
Text/Reference Encyclopedia, dictionary entry. Enzyklopädie, Wörterbucheintrag. This term has been REMOVED.
Text/Textbook A book used as a standard source of information on a particular subject. Ein Buch, das als Standardinformationsquelle zu einem bestimmten Thema dient. This term has been REMOVED.
Text/Website Root URL of a website used for instruction. Root-URL einer für den Unterricht verwendeten Website. This term has been REMOVED.

3.3 New Media Type Vocabulary

The media types that were permitted values for the learningResourceType property have been moved into a new separate enumerated vocabulary. The enumerated vocabulary for the set of media types is listed in the Table below.

Enumerated Vocabulary for Media Type.
Vocabulary Term English Description German Description
Interactive/Simulation An imitation or modeling of a real-world process. Eine Imitation oder Modellierung eines realen Prozesses.
Interactive/Animation A resource that delivers interactive media-rich content such as moving images, motion graphics, animations, etc. Eine Ressource, die interaktive, mediale Inhalte wie bewegte Bilder, bewegte Grafiken, Animationen usw. enthält.
Interactive/Whiteboard Content specifically designed for use on an interactive whiteboard. Inhalte, die speziell für die Verwendung auf einem interaktiven Whiteboard entwickelt wurden.
Media/Audio A recorded audio file. Often a lecture but can be other forms. Eine aufgezeichnete Audiodatei. Oft ein Vortrag, kann aber auch andere Formen annehmen
Media/Images/Visuals A picture, diagram or image. Ein Bild, ein Diagramm oder eine Abbildung.
Media/Video A recorded video. Often a lecture but can be other forms. Ein aufgezeichnetes Video. Oft ein Vortrag, kann aber auch andere Formen annehmen.
Other A media type that cannot be identified by one of the other values. Ein Lernressourcentyp, der nicht durch einen der anderen Werte identifiziert werden kann.
Text/Book An entire book (but not a textbook, see below) as content. Ein ganzes Buch (aber kein Lehrbuch, siehe unten) als Inhalt
Text/Chapter A chapter in a book. Ein Kapitel aus einem Buch.
Text/Document A distinct document not considered a book. May manifest as a PDF or a web page or a word processing file. Most often a 'primary source'. Ein eigenständiges Dokument, das nicht als Buch gilt. Kann als PDF, als Webseite oder als Textverarbeitungsdatei vorliegen. Meistens eine 'Primärquelle'.
Text/Article Written work that contains some degree of subjectivity based on the author's point of view but based on factual information. Schriftliche Arbeit, die ein gewisses Maß an Subjektivität enthält, die auf dem Standpunkt des Autors beruht, aber auf sachlichen Informationen basiert.
Text/Passage Passage or passages from a work. Passage oder Passagen aus einem Werk.
Text/Reference Encyclopedia, dictionary entry. Enzyklopädie, Wörterbucheintrag.
Text/Textbook A book used as a standard source of information on a particular subject. Ein Buch, das als Standardinformationsquelle zu einem bestimmten Thema dient
Text/Website Root URL of a website used for instruction. Root-URL einer für den Unterricht verwendeten Website.

3.4 New School Type Vocabulary

The German school system classifies students, typically after the 4th grade and in some federal countries after the 6th grade, into different school types according to their academic abilities. Therefore, it is mandatory for educators and learners searching for suitable learning material to filter by school type.

The enumerated vocabulary for the set of school types is listed in the Table below.

Enumerated Vocabulary for School Type.
Vocabulary Term English Description German Description
kindergarten Institution for early education, daycare and developmental support. Einrichtung für die frühe Bildung, Kindertagesbetreuung und Entwicklungsförderung.
vorschule Pre-school education facilities that prepare children for school. Einrichtung für die Erziehung vor dem Schuleintritt, welche die Schuleignung vorbereiten.
grundschule Institution for all learners in the lower age groups (approx. 6-10 years). Einrichtung für alle Lernenden der unteren Altersstufen (ca. 6-10 Jahre).
foerderschuleLernen Institution for learners with special needs and learning disabilities. Upon completion, a "Schulabgangszeugniss" or the qualifying "Hauptschulabschluss" can be achieved. Einrichtung für Lernende mit dem sonderpädagogischen Förderschwerpunkt Lernen. Nach Absolvierung kann ein Schulabgangszeugnis oder der qualifizierende Hauptschulabschluss erreicht werden.
hauptschule Institution for learners at lower level. Leads to a qualifying "Hauptschulabschluss" upon successful completion. Einrichtung für Lernende der unteren Niveaustufe. Führt bei erfolgreicher Absolvierung zu einem qualifizierenden Hauptschulabschluss.
realschule Institution for learners at intermediate level. Successful completion leads to a qualifying "Realschulabschluss/ mittlerer Reife/ mittlerer Schulabschluss". Einrichtung für Lernende der mittleren Niveaustufe. Führt bei erfolgreicher Absolvierung zu einem qualifizierenden Realschulabschluss/ mittlerer Reife/ mittlerer Schulabschluss.
gymnasium Institution for learners at the upper level. Leads to a qualifying general higher education entrance qualification upon successful completion. Einrichtung für Lernende der oberen Niveaustufe. Führt bei erfolgreicher Absolvierung zu einem qualifizierenden allgemeinen Hochschulreife.
integrierteGesamtschule Institution for learners of all levels. Successful completion of the 9th grade leads to a qualifying "Hauptschulabschluss", after the 10th grade to a qualifying "Realschulabschluss/ Mittlerer Reife/ Mittlerer Schulabschluss", after the 12th or 13th grade to a general higher education entrance qualification. Einrichtung für Lernende aller Niveauarten. Führt bei erfolgreicher Absolvierung nach der 9. Klasse zu einem qualifizierenden Hauptschulabschluss, nach der 10. Klasse zu einem qualifizierenden Realschulabschluss/ mittlerer Reife/ mittlerer Schulabschluss, nach der 12. bzw. 13. Klasse zur allgemeinen Hochschulreife.
gymnasialeOberstufe Institution for learners at the upper level, from grade 11. Leads to a qualifying general higher education entrance qualification upon successful completion. Einrichtung für Lernende der oberen Niveaustufe, ab der 11. Klasse. Führt bei erfolgreicher Absolvierung zu einer qualifizierenden allgemeinen Hochschulreife.
fachoberschule Institution for learners at intermediate/upper level from year 11. Leads to a "Hochschulreife" upon successful completion. Einrichtung für Lernende der mitterlen/oberen Niveaustufe ab der 11. Klasse. Führt bei erfolgreicher Absolvierung zu einer qualifizierenden Hochschulreife.
berufsschule Vocational training institution. Leads to a certified training certificate upon successful completion. Einrichtung der beruflichen Ausbildung. Führt bei erfolgreicher Absolvierung zu einem zertifizierten Ausbildungszeugniss.
foerderschuleEmotionaleUndSozialeEntwicklung Institution for learners with a special educational focus on emotional and social development. Depending on the grade level and performance achieved, a "Schulabgangszeugniss", the qualifying "Hauptschulabschluss" or "Realschulabschluss" can be obtained after graduation. Einrichtung für Lernende mit dem sonderpädagogischen Förderschwerpunkt emotionale und soziale Entwicklung. Nach Absolvierung kann je nach Klassenstufe und erreichten Leistungen ein Schulabgangszeugnis, der qualifizierende Hauptschul- oder Realschulabschluss erreicht werden.
foerderschuleKoerperlicheUndmotorischeEntwicklung Institution for learners with a special educational focus on physical and motor development. Depending on the grade level and performance achieved, a "Schulabgangszeugniss", the qualifying "Hauptschulabschluss" or "Realschulabschluss" can be obtained after graduation. Einrichtung für Lernende mit dem sonderpädagogischen Förderschwerpunkt körperliche und motorische Entwicklung. Nach Absolvierung kann je nach Klassenstufe und erreichten Leistungen ein Schulabgangszeugnis, der qualifizierende Hauptschul- oder Realschulabschluss erreicht werden.
foerderschuleGeistigeEntwicklung Institution for learners with a special educational focus on intellectual development. After completing the school, students can graduate with a "Abschluss im Förderschwerpunkt geistige Entwicklung". Einrichtung für Lernende mit dem sonderpädagogischen Förderschwerpunkt geistige Entwicklung. Nach Absolvierung kann ein Abschluss im Förderschwerpunkt geistige Entwicklung erreicht werden.
foerderschuleSprache Institution for learners with a special educational focus on language. Depending on the grade level and performance achieved, a "Schulabgangszeugniss", the qualifying "Hauptschulabschluss" or "Realschulabschluss" can be obtained after graduation. Einrichtung für Lernende mit dem sonderpädagogischen Förderschwerpunkt Sprache. Nach Absolvierung kann je nach Klassenstufe und erreichten Leistungen ein Schulabgangszeugnis, der qualifizierende Hauptschul- oder Realschulabschluss erreicht werden.
unbekannt To be used when the type of school information is not available. Zu verwenden, wenn Informationen zur Schulart nicht verfügbar sind.

3.5 New Class Grade Data Model

This new data model has been added to enable the Resource data model to provide information about the age grades supported by the associated resource.

Definition of the new ClassGrade data model.
Property Name Description Data Type Multiplicity
startGrade The start age grade supported by the resource. Integer in the range 0-13 (inclusive). 1 (REQUIRED)
endGrade The final age grade supported by the resource. This MUST be greater than or equal to the startGrade. Integer in the range 0-13 (inclusive). 0..1 (OPTIONAL)

Note: The new (optional) ClassGrade data model does not replace the typicalAgeRange property, but complements it for better local discoverability in German regions. For international (global) interoperability of learning resources the use of the (optional) typicalAgeRange property is still recommended.

3.6 Changes to the Resource Data Model

The Resource data model has been extended to support the new German use-cases (see Section 2.1). These new properties have been named such that they are not unique to the set of German use-cases. The new properties are:

Definition of the new properties added to the Resource data model.
Property Name Description Data Type Multiplicity
1edtech.mediaType The type(s) of media supplied by the resource. Enumeration (see the vocabulary defined in Section 3.3). 1..*
1edtech.schoolType The type of school for which the resource is suitable. Enumeration (see the vocabulary defined in Section 3.4). 1..*
1edtech.classGrade The age grades to which the resource is suitable. ClassGrade (see the definition in Section 3.5). 0..1

3.7 Changes to Searching for Resources

The list of terms for which the search request can be made is listed in Table 3.1 of [RSGP-RJ-10]. This list is extended to include the following new terms (these reflect the three new properties added into the Resource data model - see Section 3.6.):

  • 1edtech.mediaType
  • 1edtech.schoolType
  • 1edtech.classGrade

Therefore, these new terms can be used with the filter and sort query parameters.

4. Implementation Guide

All of the relevant recommendations in the Resource Search Implementation Guide [RS-IG-10] SHOULD be followed.

4.1 Example of Resource with New Properties

An example of the new properties is shown below:

"resources" : [{
    "name" : "Video: Korallenriffe",
    "description" : "Fokus Chemie - Sekundarstufe II - Schulbuch als E-Book - Kursstufe",
    "subject" : ["CHEMIE"],
    "url" : "https://endpoint.com/aaaaa-bbbbb-ccccc-dddd",
    "ltiLink" : {
        "title" : "Title for Resource",
        "description" : "Description for Resource.",
        "custom" : {
            "properties" : [
                {
                    "name" : "url",
                    "value" : "https://endpoint.com/aaaaa-bbbbb-ccccc-dddd"
                }
            ]
        },
        "launch_url" : "https://endpoint.com/aaaaa-bbbbb-ccccc-dddd",
        "secure_launch_url" : "https://endpoint.com/aaaaa-bbbbb-ccccc-dddd",
        "vendor" : {
            "name": "Hachette Livre"
        }
    },
    "thumbnailUrl" : "https://static.com/media/aaaaa-bbbbb-ccccc-ddddd-eeeee.png",
    "typicalAgeRange" : "16-19",
    "publisher" : "Cornelsen 6",
    "technicalFormat" : "MEDIA_VIDEO",
    "publishDate" : "2023-02-20",
    "rating" : "4",
    "relevance" : 0,
    "learningResourceType" : ["Collection/Unit"],
    "1edtech.mediaType" : ["Media/Video"],
    "1edtech.schoolType" : "gymnasium",
    "1edtech.classGade" : {
        "startGrade" : 11,
        "endGrade" : 13
}
]

The three new properties are shown as the final attributes in the above set i.e. 1edtech.mediaType, 1edtech.schoolType and 1edtech.classGade.

4.2 Search Results

Upon returning the list of resources from a search query, the implementation must consider the defined multiplicity of the newly introduced attributes. The properties 1edtech.schoolType and 1edtech.mediaType are REQUIRED, however, and MUST have a non-empty value. The property 1edtech.classGrade is OPTIONAL and MUST be omitted if the LOR does not provide this information.

When filtering is used, the search results MUST support teh new properties and discard non-matching results (see section 3.5 of [RS-IG-10]). For instance, if a user searches for learning material tailored towards the 1edtech.schoolType='gymnasium', only resources with the 1edtech.schoolType of a value of gymnasium will be returned. Resources with "null" for the 1edtech.schoolType will not be returned.

5. Conformance & Certification

5.1 Conformance Testing Process

This Section is NOT NORMATIVE.

The process for conformance testing implementations of LTI Resource Search Service includes the following:

  • Go to the 1EdTech Conformance Test Suite for LTI Resource Search Services. Conformance Test Suite links are available in this document;
  • Follow the onscreen instructions to run the tests;
  • Once the test has been successfully run, submit a print out of the test results along with the following information to conformance@1edtech.org:
    1. Your Name
    2. Your Organization
    3. Your Product Name and Version
    4. Date the Product was tested
    5. Whether you are a Service Provider, a Service Consumer or both.

5.1.1 Requirements for Resource Search Service 1.0 Conformance

All of the REQUIRED feature tests MUST be passed successfully to be considered 1EdTech LTI Resource Search Service compliant. If a system is to be certified for any of the OPTIONAL features then the corresponding tests for these MUST ALSO be passed. When using the conformance test systems you are required to identify which optional features are supported by the implementation under test. The conformance test systems will then test ALL of the REQUIRED and identified OPTIONAL features to confirm their correct implementation. The 1EdTech Product Certification directory will then identify the set of optional features that are certified as being compliant.

5.1.2 Resource Search Service Conformance Mark

After you have submitted your successful conformance information to conformance@1edtech.org, and received confirmation and a registration number from 1EdTech you may then apply the appropriate conformance mark. The 1EdTech Conformance Chart will list your conformance details. If you have any questions, please feel free to Contact Us at any point.

1EdTech Membership is the only way to achieve official conformance to the LTI Resource Search Service standard and this Profile. Products without a 1EdTech Conformance Registration Number are not considered to be compliant by 1EdTech.

5.2 Service Provider Certification

This Section is NORMATIVE.

The following should be noted in Tables 5.1 and 5.2:

  • For a LTI Resource Search Service 1.0 implementation the 'Endpoint' value should be appended to the string '/ims/rs/v1p0/';
  • The 'Mode' is used denote whether the system is responsible for issuing the request (Init) or responding to the request (Resp).

5.2.1 Required Endpoint Support

The set of endpoints that MUST be supported by a Service Provider is listed in Table 5.1.

Table 5.1 The endpoints that MUST be supported by a compliant LTI Resource Search service provider.
Service Call Endpoint HTTP Verb Mode
searchForResources /resources GET Resp
getAllSubjects /subjects GET Resp

5.2.2 Optional Endpoint Support

There are NO optional endpoints for a Service Provider.

5.2.3 Service Provider Compliance

The functional capabilities of such systems are:

  • They MUST support ALL of the endpoints;
  • They MUST supply all of the required data fields in the JSON payloads;
  • They MUST be capable of supplying all of the optional data fields in the JSON payloads (conformance testing requires ALL data fields to be populated);
  • They MAY provide extension data fields in the permitted parts of the JSON payloads;
  • They MUST support the endpoint payload pagination query parameters and the corresponding response HTTP header extensions MUST be supported;
  • They MUST support the endpoint payload filtering query parameters;
  • They MUST support the endpoint payload sorting and ordering query parameters;
  • They MUST support the endpoint payload field selection query parameter.

The Conformance Test System used to certify an LTI Resource Search 1.0 Service Provider is available at: https://validate.imsglobal.org/German_RSv1p0_CTS_ServiceProvider/index.php.

A summary of the set of tests that will be used to determine the compliance of an implementation of the service provider functionality is given in Appendix C.

5.3 Service Consumer Certification

This Section is NORMATIVE.

In Tables 5.2 and 5.3, the following should be noted:

  • For a LTI Resource Search Service 1.0 implementation the 'Endpoint' value should be appended to the string '/ims/rs/v1p0/';
  • The 'Mode' is used denote whether the system is responsible for issuing the request (Init) or responding to the request (Resp).

5.3.1 Required Endpoint Support

The set of endpoints that MUST be supported by a Service Consumer is listed in Table 5.2.

Table 5.2 The endpoints that MUST be supported by a compliant LTI Resource Search service consumer.
Service Call Endpoint HTTP Verb Mode
searchForResources /resources GET Init

5.3.2 Optional Endpoint Support

The set of endpoints that MAY be supported by a Service Consumer is listed in Table 5.3.

Table 5.3 The endpoints that MAY be supported by a compliant LTI Resource Search service consumer.
Service Call Endpoint HTTP Verb Mode
getAllSubjects /subjects GET Init

5.3.3 Service Consumer Compliance

The functional capabilities of such systems are:

  • They MUST support all of the required endpoints;
  • They MAY support any of the optional endpoints;
  • They MUST 'handle' all of the required data fields in the JSON payloads;
  • They MAY 'handle' any of the optional data fields in the JSON payloads;
  • The presence of extension data fields in the JSON payloads should not cause the systems to fail but the handling of these messages is implementation dependent;
  • They MAY support the endpoint payload pagination query parameters. If supported the corresponding response HTTP header extensions MUST be supported;
  • They MUST support the endpoint payload filtering query parameters;
  • They MAY support the endpoint payload sorting and ordering query parameters;
  • They MAY support the endpoint payload field selection query parameter.

NOTE: From a conformance perspective, 'handle' means that the consumer must store the data in a persistent manner and must demonstrate that storage. Conceptually, if a read request was made to the service consumer for that record then all of the data supplied by the service provider should be recovered.

The Conformance Test System used to certify a LTI Resource Search 1.0 Service Consumer is available at: https://onerostervalidator.imsglobal.org:8443/ltirs-client-cts-webapp/index.

A summary of the set of tests that will be used to determine the compliance of an implementation of the consumer functionality is given in Appendix D.

 

5.4 German Profile Certifications

This Section is NORMATIVE.

The only changes for conformance and certification with respect to the German Profile are:

  • Both a Service Provider and Consumer MUST demonstrate support for the new REQUIRED property 1edtech.mediaType in the class Resource;
  • Both a Service Provider and Consumer MUST demonstrate support for the new REQUIRED property 1edtech.schoolType in the class Resource;
  • Both a Service Provider and Consumer MUST demonstrate support for the new OPTIONAL property 1edtech.classGrade in the class Resource;
  • A Service Provider and Consumer MUST demonstrate support for the 1edtech.mediaType, 1edtech.schoolType and 1edtech.classGrade properties with the filter query parameter;
  • A Service Provider MUST demonstrate support for the 1edtech.mediaType, 1edtech.schoolType and 1edtech.classGrade properties with the sort query parameter;
  • A Consumer MAY demonstrate support for the 1edtech.mediaType, 1edtech.schoolType and 1edtech.classGrade properties with the sort query parameter.

A. Summary of Changes to the Resource Search 1.0 Service

The set of changes made in this Profile are summarized below:

  • The following classes/data-types have been modified:-
    • Changes to the "LRTEnum" class are:-
      • The attribute "Interactive/Simulation" has been PROHIBITED
      • The attribute "Interactive/Animation" has been PROHIBITED
      • The attribute "Interactive/Whiteboard" has been PROHIBITED
      • The attribute "Text/Book" has been PROHIBITED
      • The attribute "Text/Chapter" has been PROHIBITED
      • The attribute "Text/Document" has been PROHIBITED
      • The attribute "Text/Article" has been PROHIBITED
      • The attribute "Text/Passage" has been PROHIBITED
      • The attribute "Text/Textbook" has been PROHIBITED
      • The attribute "Text/Reference" has been PROHIBITED
      • The attribute "Text/Website" has been PROHIBITED
      • The attribute "Media/Audio" has been PROHIBITED
      • The attribute "Media/Images/Visuals" has been PROHIBITED
      • The attribute "Media/Video" has been PROHIBITED
    • Changes to the "Resource" class are:-
      • The attribute "1edtech.mediaType" with an ENUMERATED data-type (MediaTypeEnum) has been APPENDED
      • The attribute "1edtech.schoolType" with an ENUMERATED data-type (SchoolTypeEnum) has been APPENDED
      • The attribute "1edtech.classGrade" with a COMPLEX data-type (ClassGrade) has been APPENDED
  • The following new classes/data-types have been defined:-
    • The NEW class "ClassGrade" has been created.
      The container for the grade range for the Class. This may be either a single value or a range define by the start and end.
      This consists of the following attributes:
      • "startGrade : ClassGradeValue [1..1]"
      • "endGrade : ClassGradeValue [0..1]"
    • The NEW class "ClassGradeValue" has been created.
      The data-type for the startGrade and endGrade. The value is an integer in the range 0 to 13 inclusive.
      Data-type: Integer
      Minimum Inclusive Value: 0
      Maximum Inclusive Value: 13
    • The NEW class "MediaTypeEnum" has been created.
      The set of permitted tokens for the type of media (a new attribute added in this Profile).
      This provides an enumeration of:
      • The token "Interactive/Simulation" has been defined
      • The token "Interactive/Animation" has been defined
      • The token "Interactive/Whiteboard" has been defined
      • The token "Text/Book" has been defined
      • The token "Text/Chapter" has been defined
      • The token "Text/Document" has been defined
      • The token "Text/Article" has been defined
      • The token "Text/Passage" has been defined
      • The token "Text/Textbook" has been defined
      • The token "Text/Reference" has been defined
      • The token "Text/Website" has been defined
      • The token "Media/Audio" has been defined
      • The token "Media/Images/Visuals" has been defined
      • The token "Media/Video" has been defined
      • The token "Other" has been defined
    • The NEW class "SchoolTypeEnum" has been created.
      The set of permitted tokens for the type of school (a new attribute added in this Profile).
      This provides an enumeration of:
      • The token "kindergarten" has been defined
      • The token "vorschule" has been defined
      • The token "grundschule" has been defined
      • The token "foerderschuleLernen" has been defined
      • The token "hauptschule" has been defined
      • The token "realschule" has been defined
      • The token "gymnasium" has been defined
      • The token "integrierteGesamtschule" has been defined
      • The token "gymnasialeOberstufe" has been defined
      • The token "fachoberschule" has been defined
      • The token "berufsschule" has been defined
      • The token "foerderschuleEmotionaleUndSozi aleEntwicklung" has been defined
      • The token "foerderschuleKoerperlicheUndmot orischeEntwicklung" has been defined
      • The token "foerderschuleGeistigeEntwicklung" has been defined
      • The token "foerderschuleSprache" has been defined
      • The token "unbekannt" has been defined

B. OpenAPI Listings

This Section is NOT NORMATIVE.

B.1 OpenAPI 3.0 JSON Listing

The OpenAPI 3 (JSON) listing for this profile (based upon [OPENAPI-30]) is shown below (the OpenAPI JSON is available at: https://purl.imsglobal.org/rs/v1p0/german/schema/openapi/imsrsv1p0p1_openapi3_v1p0.json).

{
    "openapi" : "3.0.0",
    "info" : {
        "version" : "1.0",
        "title" : "LTI Resource Search 1.0.1 German Profile REST/JSON Binding [ German ] OpenAPI (JSON) Definition",
        "description" : "The 1EdTech LTI Resource Search (RS) Service defines how to search digital respositories for a set of resources. This is the Gerrman Profile of the LTI-RS 1.0.1 version of the specification. The changes in this Profile are focused on the data model for the metadata about the resources. THIS IS A FORMAL PROFILE OF: LTI Resource Search Service 1.0.1.",
        "termsOfService" : "https://www.imsglobal.org/license.html",
        "contact" : {
            "name" : "Vice President of Operations, 1EdTech",
            "url" : "https://www.1edtech.org",
            "email" : "operations@1edtech.org"
        },
        "license" : {
            "name" : "1EdTech",
            "url" : "https://www.1edtech.org/license.html"
        }
    },
    "servers" : [
        {
            "url" : "https://{hostName}{basePath}",
            "description" : "The pattern for the Server URL should be configured for the actual server location.",
            "variables" : {
                "hostName" : {
                    "description" : "This is the hostname for the server and MUST be set to the actual service provider (the 1EdTech URL is given as a default value).",
                    "default" : "www.imsglobal.org"
                },
                "basePath" : {
                    "description" : "This is the base-path for the full URL and MUST be a part of the service endpoints.",
                    "enum" : ["/ims/rs/v1p0"],
                    "default" : "/ims/rs/v1p0"
                }
            }
        }
    ],
    "tags" : [
        {
            "name" : "ResourceSearchManager",
            "description" : "The set of service operations that manage searching for resources."
        },
        {
            "name" : "SubjectsManager",
            "description" : "The set of service operations that manage access to the lists of subjects supported by a LOR."
        }
    ],
    "paths" : {
        "/resources" : {
            "get" : {
                "operationId" : "searchForResources",
                "summary" : "The REST read request message for the searchForResources() API call.",
                "tags" : [ "ResourceSearchManager" ],
                "description" : "This is the search request. The criteria for the search are passed as query parameters and the set of identified resources are returned in the payload for the response message.",
                "parameters" : [
                    {
                        "name" : "limit",
                        "in" : "query",
                        "description" : "This is used as part of the data pagination mechanism to control the number of records returned in any one response message. The 'limit' defines the download segmentation value i.e. the maximum number of records to be contained in the response. The form of implementation is described in the corresponding binding document(s).",
                        "required" : false,
                        "schema" : {
                            "type" : "integer",
                            "format" : "int32",
                            "default" : 100,
                            "minimum" : 1
                        },
                        "style" : "form",
                        "allowEmptyValue" : false
                    },
                    {
                        "name" : "offset",
                        "in" : "query",
                        "description" : "This is used as part of the data pagination mechanism to control the download rate of data. The 'offset' is the number of the first record to be supplied in the segmented response message. The form of implementation is described in the corresponding binding document(s).",
                        "required" : false,
                        "schema" : {
                            "type" : "integer",
                            "format" : "int32",
                            "default" : 0,
                            "minimum" : 0
                        },
                        "style" : "form",
                        "allowEmptyValue" : false
                    },
                    {
                        "name" : "filter",
                        "in" : "query",
                        "description" : "The filtering rules to be applied when identifying the records to be supplied in the response message. Filtering defines the search criteria to be applied at the service provider for the identification and selection of the resources to be returned. A strict vocabulary is used for the permitted search terms (see the RS REST/JSON binding document 'Keyword Searching' in Sub-section 3.1 [RS-RJ-10]).",
                        "required" : false,
                        "schema" : {
                            "type" : "string"
                        },
                        "style" : "form",
                        "allowEmptyValue" : false
                    },
                    {
                        "name" : "sort",
                        "in" : "query",
                        "description" : "This is used as part of the sorting mechanism to be use by the service provider. The 'sort' identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The form of implementation is described in the corresponding binding document(s).",
                        "required" : false,
                        "schema" : {
                            "type" : "string"
                        },
                        "style" : "form",
                        "allowEmptyValue" : false
                    },
                    {
                        "name" : "orderBy",
                        "in" : "query",
                        "description" : "This is used as part of the sorting mechanism to be use by the service provider. This defines the form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The form of implementation is described in the corresponding binding document(s).",
                        "required" : false,
                        "schema" : {
                            "type" : "string",
                            "enum" : [ "asc","desc" ]
                        },
                        "style" : "form",
                        "allowEmptyValue" : false
                    },
                    {
                        "name" : "fields",
                        "in" : "query",
                        "description" : "To identify the range of fields, and only those fields, that should be supplied in the response message. The permitted vocabulary for these fields is determined by the payloads that are returned in the corresponding response messages.",
                        "required" : false,
                        "schema" : {
                            "type" : "array",
                            "items" : {
                                "type" : "string"
                            }
                        },
                        "style" : "form",
                        "allowEmptyValue" : false
                    }
                ],
                "x-1edtech-confidentiality" : "unrestricted",
                "responses" : {
                    "200" : {
                        "description" : "The response code for when the query request has been successfully completed and the set of identified resources returned. This would be accompanied by the 'codeMajor/severity' values of 'success/status'",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/ResourceSetDType"
                                }
                            }
                        },
                        "headers" : {
                            "X-Total-Count" : {
                                "description" : "The total number of resources that are available to be returned",
                                "schema" : {
                                    "type" : "integer"
                                }
                            }
                        },
                        "links" : {
                            "next" : {
                                "description" : "Get the next set of resources i.e. from offset to offset+limit",
                                "operationId" : "searchForResources",
                                "parameters" : {
                                    "limit" : "$request.path.limit",
                                    "offset" : "$request.path.offset"
                                }
                            },
                            "last" : {
                                "description" : "Get the last set of resources i.e. from offset to end",
                                "operationId" : "searchForResources",
                                "parameters" : {
                                    "limit" : "$request.path.limit",
                                    "offset" : "$request.path.offset"
                                }
                            },
                            "first" : {
                                "description" : "Get the first set of resources i.e. from first to limit",
                                "operationId" : "searchForResources",
                                "parameters" : {
                                    "limit" : "$request.path.limit",
                                    "offset" : "$request.path.offset"
                                }
                            },
                            "prev" : {
                                "description" : "Get the previous set of resources i.e. from last_offset to last_offset+limit",
                                "operationId" : "searchForResources",
                                "parameters" : {
                                    "limit" : "$request.path.limit",
                                    "offset" : "$request.path.offset"
                                }
                            }
                        }
                    },
                    "400" : {
                        "description" : "The request has been declared as 'bad'.  This will be due to the provision of bad data in the request query parameters. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "401" : {
                        "description" : "The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "403" : {
                        "description" : "This is used to indicate that the server can be reached and process the request but refuses to take any further action. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "500" : {
                        "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "default" : {
                        "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "422" : {
                        "description" : "This error condition may occur if a JSON request body contains well-formed i.e. syntactically correct, but semantically erroneous, JSON instructions. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "429" : {
                        "description" : "The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/subjects" : {
            "get" : {
                "operationId" : "getAllSubjects",
                "summary" : "The REST read request message for the getAllSubjects() API call.",
                "tags" : [ "SubjectsManager" ],
                "description" : "To obtain, read, the list of subjects that are supported by a LOR.",
                "x-1edtech-confidentiality" : "unrestricted",
                "responses" : {
                    "200" : {
                        "description" : "The response code for when the query request has been successfully completed and the set of subjects returned. This would be accompanied by the 'codeMajor/severity' values of 'success/status'",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/SubjectSetDType"
                                }
                            }
                        }
                    },
                    "400" : {
                        "description" : "The request has been declared as 'bad'.  This will be due to the provision of bad data in the request query parameters. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "401" : {
                        "description" : "The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "403" : {
                        "description" : "This is used to indicate that the server can be reached and process the request but refuses to take any further action. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "422" : {
                        "description" : "This error condition may occur if a JSON request body contains well-formed i.e. syntactically correct, but semantically erroneous, JSON instructions. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "429" : {
                        "description" : "The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "500" : {
                        "description" : "This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. ",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    },
                    "default" : {
                        "description" : "This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.",
                        "content" : {
                            "application/json" : {
                                "schema" : {
                                    "$ref" : "#/components/schemas/imsx_StatusInfoDType"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components" : {
        "schemas" : {
            "CCLTILinkDType" : {
                "description" : "The extended set of information used to define the presence of an LTI Link resource (this is based upon the definition for including an LTI link inside a 1EdTech Common Cartridge or 1EdTech Thin Common Cartridge).",
                "type" : "object",
                "properties" : {
                    "title" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The human readable title/label for the activity being addressed by the content available through the LTI link.",
                        "type" : "string"
                    },
                    "description" : {
                        "description" : "Model Primitive Datatype = String. A human readable description of the activity addressed by the content supplied via the LTI link.",
                        "type" : "string"
                    },
                    "custom" : {
                        "$ref" : "#/components/schemas/PropertySetDType"
                    },
                    "extensions" : {
                        "$ref" : "#/components/schemas/PlatformPropertySetDType"
                    },
                    "launch_url" : {
                        "description" : "Model Primitive Datatype = AnyURI. The URL for the LTI launch. One of either the launch_url or the secure_launch_url must be specified. It is acceptable to specify both and if both are specified, the Platform decides which to use. Typically, the Platform will use a secure_launch_url when embedding the Tool in a secure page and the launch_url when embedding the tool in a non-secure page. So, it is important that the Tool provides the same functionality whether the launch_url or secure_launch_url is used.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "secure_launch_url" : {
                        "description" : "Model Primitive Datatype = AnyURI. A secure URL for the LTI launch. One of either the launch_url or the secure_launch_url must be specified. It is acceptable to specify both and if both are specified, the Platform decides which to use. Typically, the Platform will use a secure_launch_url when embedding the Tool in a secure page and the launch_url when embedding the tool in a non-secure page. So, it is important that the Tool provides the same functionality whether the launch_url or secure_launch_url is used.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "icon" : {
                        "description" : "Model Primitive Datatype = AnyURI. A URL to an icon for this tool.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "secure_icon" : {
                        "description" : "Model Primitive Datatype = AnyURI. A secure URL to an icon for this tool.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "vendor" : {
                        "$ref" : "#/components/schemas/VendorDType"
                    },
                    "cartridge_bundle" : {
                        "$ref" : "#/components/schemas/LTILinkResourceRefDType"
                    },
                    "cartridge_icon" : {
                        "$ref" : "#/components/schemas/LTILinkResourceRefDType"
                    },
                    "metadata" : {
                        "$ref" : "#/components/schemas/MetadataDType"
                    }
                },
                "required" : [ "title","vendor" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "CSMSetDType" : {
                "description" : "This is the is the container for the set of curriculum standards metadata. Each member of the set contains the curriculum standards metadata for a specific source of the GUIDs.",
                "type" : "object",
                "properties" : {
                    "resourceLabel" : {
                        "description" : "Model Primitive Datatype = NormalizedString. This is a human readable label used to identify the type of resource, or part of resource, to which the enclosed metadata refers.",
                        "type" : "string"
                    },
                    "resourcePartId" : {
                        "description" : "Model Primitive Datatype = NormalizedString. This is used to contain the appropriate identifier that is used to identify the resource part.",
                        "type" : "string"
                    },
                    "curriculumStandardsMetadata" : {
                        "description" : "The curriculum standards associated from a single source of the curriculum standards definition.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "$ref" : "#/components/schemas/CurriculumStandardsMetadataDType"
                        }
                    }
                },
                "required" : [ "curriculumStandardsMetadata" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "CurriculumStandardsMetadataDType" : {
                "description" : "This is the container for the special metadata for curriculum standards for a particular domain of GUID provider.",
                "type" : "object",
                "properties" : {
                    "providerId" : {
                        "description" : "Model Primitive Datatype = NormalizedString. This is used to denote the originator of the GUID scheme.",
                        "type" : "string"
                    },
                    "setOfGUIDs" : {
                        "description" : "The set of curriculum standards GUIDs that apply to the learning associated resource.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "$ref" : "#/components/schemas/SetOfGUIDsDType"
                        }
                    }
                },
                "required" : [ "setOfGUIDs" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "LTILinkResourceRefDType" : {
                "description" : "The container for the link information.",
                "type" : "object",
                "properties" : {
                    "name" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The name of the type of content supplied by the link.",
                        "type" : "string"
                    },
                    "resourceUri" : {
                        "description" : "Model Primitive Datatype = AnyURI. The URI for the link.",
                        "type" : "string",
                        "format" : "uri"
                    }
                },
                "required" : [ "name","resourceUri" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "LabelledGUIDDType" : {
                "description" : "The labelled curriculum standard GUID.",
                "type" : "object",
                "properties" : {
                    "label" : {
                        "description" : "Model Primitive Datatype = NormalizedString. A human readable string to provide a clue about the nature of the curriculum standard.",
                        "type" : "string"
                    },
                    "caseItemURI" : {
                        "description" : "Model Primitive Datatype = AnyURI. The corresponding Competency and Academic Standards (CASE) URI. This is the URI used for alignment with the 1EdTech CASE Service 1.0 specification [CASE-10].",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "GUID" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The GUID itself.",
                        "type" : "string"
                    }
                },
                "required" : [ "GUID" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "LearningObjectivesDType" : {
                "description" : "The container for the learning objectives which are addressed by the resource.",
                "type" : "object",
                "properties" : {
                    "alignmentType" : {
                        "description" : "A category of alignment between the learning resource and the framework node.",
                        "type" : "string",
                        "enum" : [ "assesses","educationLevel","educationalSubject","readingLevel","requires","teaches","textComplexity" ]
                    },
                    "educationalFramework" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The framework to which the resource being described is aligned.",
                        "type" : "string"
                    },
                    "targetDescription" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The description of a node in an established educational framework.",
                        "type" : "string"
                    },
                    "targetName" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The name of a node in an established educational framework.",
                        "type" : "string"
                    },
                    "targetURL" : {
                        "description" : "Model Primitive Datatype = AnyURI. The URL of a node in an established educational framework.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "caseItemUri" : {
                        "description" : "Model Primitive Datatype = AnyURI. Reference to a CASE CFItem for a standard or skill [CASE-10].",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "caseItemGUID" : {
                        "description" : "Model Primitive Datatype = NormalizedString. Reference to CASE CFItem as a GUID [CASE-10].",
                        "type" : "string"
                    }
                },
                "required" : [ "alignmentType" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "MetadataDType" : {
                "description" : "The container for all of the metadata associated with the LTI link. Currently this metadata is restricted to the set of curriculum standards annotations.",
                "type" : "object",
                "properties" : {
                    "curriculumStandardsMetadataSet" : {
                        "$ref" : "#/components/schemas/CSMSetDType"
                    }
                },
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "PlatformPropertySetDType" : {
                "description" : "The container for the collection of properties that are available for a specific platform.",
                "type" : "object",
                "properties" : {
                    "platform" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The identifier for the authoring environment.",
                        "type" : "string"
                    },
                    "properties" : {
                        "description" : "The set of extension properties for the identified platform.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "$ref" : "#/components/schemas/PropertyDType"
                        }
                    }
                },
                "required" : [ "platform","properties" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "PropertyDType" : {
                "description" : "The container for the name/value pair for a specific property.",
                "type" : "object",
                "properties" : {
                    "name" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The name of the key for the property.",
                        "type" : "string"
                    },
                    "value" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The value for the property.",
                        "type" : "string"
                    }
                },
                "required" : [ "name","value" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "PropertySetDType" : {
                "description" : "The container for the collection of properties that have been specified.",
                "type" : "object",
                "properties" : {
                    "properties" : {
                        "description" : "The set of properties for the identified platform or orginal authoring platform.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "$ref" : "#/components/schemas/PropertyDType"
                        }
                    }
                },
                "required" : [ "properties" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "ResourceDType" : {
                "description" : "The container for the information about a resource that is supported by a LOR.",
                "type" : "object",
                "properties" : {
                    "name" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The name/title of resource.",
                        "type" : "string"
                    },
                    "description" : {
                        "description" : "Model Primitive Datatype = NormalizedString. A human readable description of the contents of the resource.",
                        "type" : "string"
                    },
                    "subject" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The subject(s) of the resource. May have multiple subjects tagged.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string"
                        }
                    },
                    "url" : {
                        "description" : "Model Primitive Datatype = AnyURI. How to access resource over Internet e.g. HTTP, FTP, etc. A resource must have either a URL or or a LTI Link.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "ltiLink" : {
                        "$ref" : "#/components/schemas/CCLTILinkDType"
                    },
                    "learningResourceType" : {
                        "description" : "The type of the resource. There may be multiple types.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "Activity/Experiment","Activity/Learning","Activity/Worksheet","Assessment/Formative","Assessment/Interim","Assessment/Item","Assessment/Preparation","Assessment/Rubric","Collection/Course","Collection/Curriculum Guide","Collection/Lesson","Collection/Unit","Game","Lecture","Other" ]
                        }
                    },
                    "language" : {
                        "description" : "Model Primitive Datatype = Language. The languages used in the resource. International two digit code for language e.g. 'en' for English. Use the [RFC 3066] annotation.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string"
                        }
                    },
                    "thumbnailUrl" : {
                        "description" : "Model Primitive Datatype = AnyURI. Link to a thumbnail representing resource.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "typicalAgeRange" : {
                        "description" : "Model Primitive Datatype = NormalizedString. Age of the typical intended user. This is described as EITHER the minimum-maximum age range (the format is '11-12', '5-7', etc. with ONLY integers permitted) OR the age as a single integer e.g. '9'.",
                        "type" : "string"
                    },
                    "textComplexity" : {
                        "description" : "A number indicating text complexity based on number of established measures.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "$ref" : "#/components/schemas/TextComplexityDType"
                        }
                    },
                    "learningObjectives" : {
                        "description" : "The set of learning objectives addressed by the resource.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "$ref" : "#/components/schemas/LearningObjectivesDType"
                        }
                    },
                    "author" : {
                        "description" : "Model Primitive Datatype = NormalizedString. Author or creator of the resource.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string"
                        }
                    },
                    "publisher" : {
                        "description" : "Model Primitive Datatype = NormalizedString. Owner of the rights to the resource or who made it available (company or person).",
                        "type" : "string"
                    },
                    "useRightsURL" : {
                        "description" : "Model Primitive Datatype = AnyURI. URL describing how resource can be licensed. Could be Creative Commons license link or link to other specific open or proprietary license.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "timeRequired" : {
                        "description" : "Model Primitive Datatype = Duration. Time that the resource takes to consume. Use the [ISO 8601] format for a duration.",
                        "type" : "string",
                        "pattern" : "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$"
                    },
                    "technicalFormat" : {
                        "description" : "Model Primitive Datatype = NormalizedString. A valid MIME type format for the resource e.g. text, HTML, PDF, MPEG, MP3, etc. See https://www.iana.org/assignments/media-types/media-types.xhtml.",
                        "type" : "string"
                    },
                    "educationalAudience" : {
                        "description" : "For whom the resource is intended.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "administrator","aide","guardian","parent","proctor","relative","student","teacher" ]
                        }
                    },
                    "accessibilityAPI" : {
                        "description" : "Which (if any) accessibility API is supported by the resource.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "ARIAv1","AT-SPI","ATK","AndroidAccessibility","BlackberryAccessibility","IAccessible2","JavaAccessibility","MSAA","MacOSXAccessibility","UIAutomation" ]
                        }
                    },
                    "accessibilityInputMethods" : {
                        "description" : "How the resource can be controlled by the user, which includes full keyboard controllability, mouse controllability, and voice controllability.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "fullKeyboardControl","fullMouseControl","fullVoiceControl" ]
                        }
                    },
                    "accessibilityFeatures" : {
                        "description" : "Model Primitive Datatype = NormalizedString. These include alternatives and listed enhancements for the resource. These can be transformation features, navigation features, control features or augmentation features.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string"
                        }
                    },
                    "accessibilityHazards" : {
                        "description" : "The set of accessibility hazards which are encountered when using this resource.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "flashing","motionSimulation","olfactoryHazard","sound" ]
                        }
                    },
                    "accessMode" : {
                        "description" : "The human sensory perceptual system or cognitive faculty through which a person may process or perceive information.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "auditory","color","itemSize","olfactory","orientation","position","tactile","textOnImage","textual","visual" ]
                        }
                    },
                    "publishDate" : {
                        "description" : "Model Primitive Datatype = Date. Date the resource was published by the publisher. The 'date' using the [ISO 8601] format.",
                        "type" : "string",
                        "format" : "date"
                    },
                    "rating" : {
                        "description" : "A rating of the quality of the resource determined by the Search Provider. Often derived from crowdsource ratings.",
                        "type" : "string",
                        "enum" : [ "1","2","3","4","5" ]
                    },
                    "relevance" : {
                        "description" : "Model Primitive Datatype = Float. This is a floating point value based on relevance to the specific search. Higher relevance has a higher number.",
                        "type" : "number",
                        "format" : "float"
                    },
                    "1edtech.mediaType" : {
                        "description" : "This indicates the media format of the resource: it is an enumerated vocabulary. Originally this was a part of the 'learningResourceType' attrubute but it has been separated to provide clarity.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "Interactive/Simulation","Interactive/Animation","Interactive/Whiteboard","Text/Book","Text/Chapter","Text/Document","Text/Article","Text/Passage","Text/Textbook","Text/Reference","Text/Website","Media/Audio","Media/Images/Visuals","Media/Video","Other" ]
                        }
                    },
                    "1edtech.schoolType" : {
                        "description" : "This is the type of school. This is a non-extensible enumerated vocabulary.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "type" : "string",
                            "enum" : [ "kindergarten","vorschule","grundschule","foerderschuleLernen","hauptschule","realschule","gymnasium","integrierteGesamtschule","gymnasialeOberstufe","fachoberschule","berufsschule","foerderschuleEmotionaleUndSozi aleEntwicklung","foerderschuleKoerperlicheUndmot orischeEntwicklung","foerderschuleGeistigeEntwicklung","foerderschuleSprache","unbekannt" ]
                        }
                    },
                    "1edtech.classGrade" : {
                        "description" : "This is the grade of the class. The grade takes the form of a single value or a range. The available set of grades are: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 and 13.",
                                "$ref" : "#/components/schemas/ClassGradeDType"
                    }
                },
                "required" : [ "name","learningResourceType","publisher","1edtech.mediaType","1edtech.schoolType" ],
                "x-1edtech-privacy" : [ "extensions" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : true
            },
            "ResourceSetDType" : {
                "description" : "The container for the set of resources that have been supplied by the service provider. This may be empty if none of the resources fulfill the search criteria. The order of resources is not significant.",
                "type" : "object",
                "properties" : {
                    "resources" : {
                        "description" : "The actual resources supplied by the service provider. The order of resources is not significant.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "$ref" : "#/components/schemas/ResourceDType"
                        }
                    }
                },
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "SetOfGUIDsDType" : {
                "description" : "The  container for the set of GUIDs that annotate a resource for a particular geographical/socio-political/etc. region.",
                "type" : "object",
                "properties" : {
                    "region" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The region responsible for the definition. ",
                        "type" : "string"
                    },
                    "version" : {
                        "description" : "Model Primitive Datatype = NormalizedString. This is used to denote any relevant versioning information.",
                        "type" : "string"
                    },
                    "labelledGUID" : {
                        "description" : "The actual GUID plus the corresponding labelling information.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "$ref" : "#/components/schemas/LabelledGUIDDType"
                        }
                    }
                },
                "required" : [ "labelledGUID" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "SubjectDType" : {
                "description" : "This is the container for the details of a subject that is covered by the content within a LOR.",
                "type" : "object",
                "properties" : {
                    "identifier" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The unique identifier, a string, of the subject node. For the root node the value will be 'null'. ",
                        "type" : "string"
                    },
                    "name" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The name of the subject node, which may have any character and need not be unique with the returned taxonomy. ",
                        "type" : "string"
                    },
                    "parent" : {
                        "description" : "Model Primitive Datatype = NormalizedString. A string (the identifier of that subject node) that references the single parent of this node. The returned data must be a true rooted tree, where each node returned has a single parent. ",
                        "type" : "string"
                    }
                },
                "required" : [ "identifier","name","parent" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "SubjectSetDType" : {
                "description" : "The container for the set of subjects that have been supplied by the service provider. This may be empty if none of the subjects fulfill the search criteria. The order of subjects is not significant.",
                "type" : "object",
                "properties" : {
                    "subjects" : {
                        "description" : "The actual list of subject supplied by the service provider. The order of subjects is not significant.",
                        "type" : "array",
                        "minItems" : 0,
                        "items" : {
                            "$ref" : "#/components/schemas/SubjectDType"
                        }
                    }
                },
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "TextComplexityDType" : {
                "description" : "The name/pair value container for a text complexity annotation.",
                "type" : "object",
                "properties" : {
                    "name" : {
                        "description" : "The name of the complexity measure. This is taken from an enumerated vocabulary.",
                        "type" : "string",
                        "enum" : [ "DRA","Dale-Schall","Flesch-Kincaid","Fountas-Pinnell","Lexile" ]
                    },
                    "value" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The text complexity measure in terms of the named measuring scale.",
                        "type" : "string"
                    }
                },
                "required" : [ "name","value" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "VendorDType" : {
                "description" : "The container for the information about the vendor who created the resource.",
                "type" : "object",
                "properties" : {
                    "code" : {
                        "description" : "Model Primitive Datatype = NormalizedString. An identification code for the vendor.",
                        "type" : "string"
                    },
                    "name" : {
                        "description" : "Model Primitive Datatype = NormalizedString. The name of the vendor.",
                        "type" : "string"
                    },
                    "description" : {
                        "description" : "Model Primitive Datatype = String. A human readable description of the vendor.",
                        "type" : "string"
                    },
                    "url" : {
                        "description" : "Model Primitive Datatype = AnyURI. A URL for the vendor.",
                        "type" : "string",
                        "format" : "uri"
                    },
                    "emailContact" : {
                        "description" : "Model Primitive Datatype = NormalizedString. Contact email for the vendor.",
                        "type" : "string"
                    }
                },
                "required" : [ "code","name" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "imsx_CodeMinorDType" : {
                "description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.",
                "type" : "object",
                "properties" : {
                    "imsx_codeMinorField" : {
                        "description" : "Each reported code minor status code.",
                        "type" : "array",
                        "minItems" : 1,
                        "items" : {
                            "$ref" : "#/components/schemas/imsx_CodeMinorFieldDType"
                        }
                    }
                },
                "required" : [ "imsx_codeMinorField" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "imsx_CodeMinorFieldDType" : {
                "description" : "This is the container for a single code minor status code.",
                "type" : "object",
                "properties" : {
                    "imsx_codeMinorFieldName" : {
                        "description" : "Model Primitive Datatype = NormalizedString. This should contain the identity of the system that has produced the code minor status code report.",
                        "type" : "string"
                    },
                    "imsx_codeMinorFieldValue" : {
                        "description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
                        "type" : "string",
                        "enum" : [ "forbidden","fullsuccess","internal_server_error","invalid_data","invalid_query_parameter","server_busy","unauthorisedrequest" ]
                    }
                },
                "required" : [ "imsx_codeMinorFieldName","imsx_codeMinorFieldValue" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "imsx_StatusInfoDType" : {
                "description" : "This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.",
                "type" : "object",
                "properties" : {
                    "imsx_codeMajor" : {
                        "description" : "The code major value (from the corresponding enumerated vocabulary).",
                        "type" : "string",
                        "enum" : [ "failure","processing","success","unsupported" ]
                    },
                    "imsx_severity" : {
                        "description" : "The severity value (from the corresponding enumerated vocabulary).",
                        "type" : "string",
                        "enum" : [ "error","status","warning" ]
                    },
                    "imsx_description" : {
                        "description" : "Model Primitive Datatype = String. A human readable description supplied by the entity creating the status code information.",
                        "type" : "string"
                    },
                    "imsx_codeMinor" : {
                        "$ref" : "#/components/schemas/imsx_CodeMinorDType"
                    }
                },
                "required" : [ "imsx_codeMajor","imsx_severity" ],
                "x-1edtech-confidentiality" : "unrestricted",
                "additionalProperties" : false
            },
            "ClassGradeDType" : {
                "description" : "The container for the grade range for the Class. This may be either a single value or a range define by the start and end.",
                "type" : "object",
                "properties" : {
                    "startGrade" : {
                        "description" : "Model Primitive Datatype = Integer. The start grade for the Class.",
                        "type" : "integer",
                        "format" : "int32",
                        "minimum" : 0,
                        "maximum" : 13
                    },
                    "endGrade" : {
                        "description" : "Model Primitive Datatype = Integer. The end grade for the Class. This must be greater than the 'startGrade'.",
                        "type" : "integer",
                        "format" : "int32",
                        "minimum" : 0,
                        "maximum" : 13
                    }
                },
                "required" : [ "startGrade" ],
                "additionalProperties" : false
            }
        }
    }
}

B.2 OpenAPI 3.0 YAML Listing

The OpenAPI 3 (YAML) listing for this profile (based upon [OPENAPI-30]) is shown below (the OpenAPI YAML is available at: https://purl.imsglobal.org/rs/v1p0/german/schema/openapi/imsrsv1p0p1_openapi3_v1p0.yaml).

# #####################################################################################
# YAML File Information
# #####################################################################################
# 
# Author:         Colin Smythe (1EdTech) and Susan Haught (1EdTech)
# Date:           1st August 2025
# Version:        1.0
# Status:         Final Release
# Description:    The 1EdTech LTI Resource Search (RS) Service defines how to search digital respositories for a set of resources. This is the German Profile of the LTI-RS 1.0.1 version of the specification. The changes in this Profile are focused on the data model for the metadata about the resources.
#                 The changes to the base specification are:
#                 * The following classes/data-types have been modified:-
#                    - Changes to the "LRTEnum" class are:-
#                       + The attribute "Interactive/Simulation" has been PROHIBITED
#                       + The attribute "Interactive/Animation" has been PROHIBITED
#                       + The attribute "Interactive/Whiteboard" has been PROHIBITED
#                       + The attribute "Text/Book" has been PROHIBITED
#                       + The attribute "Text/Chapter" has been PROHIBITED
#                       + The attribute "Text/Document" has been PROHIBITED
#                       + The attribute "Text/Article" has been PROHIBITED
#                       + The attribute "Text/Passage" has been PROHIBITED
#                       + The attribute "Text/Textbook" has been PROHIBITED
#                       + The attribute "Text/Reference" has been PROHIBITED
#                       + The attribute "Text/Website" has been PROHIBITED
#                       + The attribute "Media/Audio" has been PROHIBITED
#                       + The attribute "Media/Images/Visuals" has been PROHIBITED
#                       + The attribute "Media/Video" has been PROHIBITED
#                    - Changes to the "Resource" class are:-
#                       + The attribute "1edtech.mediaType" with an ENUMERATED data-type (MediaTypeEnum) has been APPENDED
#                       + The attribute "1edtech.schoolType" with an ENUMERATED data-type (SchoolTypeEnum) has been APPENDED
#                       + The attribute "1edtech.classGrade" with a COMPLEX data-type (ClassGrade) has been APPENDED
#
#                 * The following new classes/data-types have been defined:-
#                    - The NEW class "ClassGrade" has been created.
#                      The container for the grade range for the Class. This may be either a single value or a range define by the start and end.
#                      This consists of the following attributes:
#                       + "startGrade : ClassGradeValue [1..1]"
#                       + "endGrade : ClassGradeValue [0..1]"
#                    - The NEW class "ClassGradeValue" has been created.
#                      The data-type for the startGrade and endGrade. The value is an integer in the range 0 to 13 inclusive.
#                       + DataType: Integer
#                       + Minimum Inclusive Value: 0
#                       + Maximum Inclusive Value: 13
#                    - The NEW class "MediaTypeEnum" has been created.
#                      The set of permitted tokens for the type of media (a new attribute added in this Profile).
#                      This provides an enumeration of:
#                       + The token "Interactive/Simulation" has been defined
#                       + The token "Interactive/Animation" has been defined
#                       + The token "Interactive/Whiteboard" has been defined
#                       + The token "Text/Book" has been defined
#                       + The token "Text/Chapter" has been defined
#                       + The token "Text/Document" has been defined
#                       + The token "Text/Article" has been defined
#                       + The token "Text/Passage" has been defined
#                       + The token "Text/Textbook" has been defined
#                       + The token "Text/Reference" has been defined
#                       + The token "Text/Website" has been defined
#                       + The token "Media/Audio" has been defined
#                       + The token "Media/Images/Visuals" has been defined
#                       + The token "Media/Video" has been defined
#                       + The token "Other" has been defined
#                    - The NEW class "SchoolTypeEnum" has been created.
#                      The set of permitted tokens for the type of school (a new attribute added in this Profile).
#                      This provides an enumeration of:
#                       + The token "kindergarten" has been defined
#                       + The token "vorschule" has been defined
#                       + The token "grundschule" has been defined
#                       + The token "foerderschuleLernen" has been defined
#                       + The token "hauptschule" has been defined
#                       + The token "realschule" has been defined
#                       + The token "gymnasium" has been defined
#                       + The token "integrierteGesamtschule" has been defined
#                       + The token "gymnasialeOberstufe" has been defined
#                       + The token "fachoberschule" has been defined
#                       + The token "berufsschule" has been defined
#                       + The token "foerderschuleEmotionaleUndSozi aleEntwicklung" has been defined
#                       + The token "foerderschuleKoerperlicheUndmot orischeEntwicklung" has been defined
#                       + The token "foerderschuleGeistigeEntwicklung" has been defined
#                       + The token "foerderschuleSprache" has been defined
#                       + The token "unbekannt" has been defined
# 
# History:        This is the first release of the LTI Resource Search REST/JSON Binding German Profile. This Final Release is made available for general adoption.
# 
# License:        IPR and Distribution Notices
# 
#                 This machine readable file is derived from the 1EdTech LTI Resource Search 1.0.1 German Profile REST/JSON Binding Version 1.0
#                 found at https://www.1edtech.org/ and the original 1EdTech schema binding or code base at
#                 https://www.1edtech.org/.
# 
#                 Recipients of this document are requested to submit, with their comments, notification of any relevant 
#                 patent claims or other intellectual property rights of which they may be aware that might be infringed by
#                 any implementation of the specification set forth in this document, and to provide supporting documentation.
# 
#                 1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might
#                 be claimed to pertain to the implementation or use of the technology described in this document or the extent 
#                 to which any license under such rights might or might not be available; neither does it represent that it has 
#                 made any effort to identify any such rights. Information on 1EdTech procedures with respect to rights in 1EdTech 
#                 specifications can be found at the 1EdTech Intellectual Property Rights web page: https://www.1edtech.org/ipr/imsipr_policyFinal.pdf.
# 
#                 Copyright (c) 1EdTech Consortium 1999-2025. All Rights Reserved.
# 
#                 Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: http://www.1edtech.org/license.html.
# 
#                 Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
# 
#                 The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.
# 
#                 THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS
#                 EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM
#                 NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF
#                 ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
# 
# Source UML File Information
# ===========================
# The source file information must be supplied as an XMI file (without diagram layout information).
# The supported UML authoring tools are:
# (a) Papyrus - v1.1.3 (and later)
# 
# Source XSLT File Information
# ============================
# XSL Generator:    Specificationv1p0_GenerationToolv1.xsl
# XSLT Processor:   Saxon
# Release:          1.0
# Date:             31st October, 2022
# Autogen Engineer: Colin Smythe (1EdTech)
# Autogen Date:     2025-05-20
# 
# 1EdTech Auto-generation Binding Tool-kit (E-BAT)
# ================================================
# This file was auto-generated using the 1EdTech Binding Auto-generation Tool-kit (E-BAT). While every
# attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware
# that this is an experimental tool. Permission is given to make use of this tool. 1EdTech makes no
# claim on the materials created by third party users of this tool. Details on how to use this tool
# are contained in the 1EdTech "E-BAT" documentation available at the 1EdTech web-site:
# https://www.1edtech.org.
# 
# Tool Copyright:  2012-2025  (c) 1EdTech Consortium Inc. All Rights Reserved.
# 
# #####################################################################################

openapi: '3.0.0'

#####################################################################################
#                               API Information                                     #
#####################################################################################
info: 
    version: '1.0'
    title: LTI Resource Search 1.0.1 German Profile REST/JSON Binding [ German ] OpenAPI (YAML) Definition
    description: The 1EdTech LTI Resource Search (RS) Service defines how to search digital respositories for a set of resources. This is the German Profile of the LTI-RS 1.0.1 version of the specification. The changes in this Profile are focused on the data model for the metadata about the resources. THIS IS A FORMAL PROFILE OF LTI Resource Search Service 1.0.1.
    termsOfService: https://www.imsglobal.org/license.html
    contact: 
        name: Vice President of Operations, 1EdTech
        url: https://www.1edtech.org
        email: operations@1edtech.org
    license: 
        name: 1EdTech Consortium
        url: https://www.1edtech.org/license.html

#####################################################################################
#                                 Servers                                           #
#####################################################################################
servers: 
    - url: https://{hostName}{basePath}
      description: The pattern for the Server URL should be configured for the actual server location.
      variables: 
          "hostName": 
              description: This is the hostname for the server and MUST be set to the actual service provider (the 1EdTech url is given as a default value).
              default: www.imsglobal.org
          "basePath": 
              description: This is the base-path for the full URL and MUST be a part of the service endpoints.
              enum: 
                - /ims/rs/v1p0
              default: /ims/rs/v1p0

#####################################################################################
#                                  Tags                                             #
#####################################################################################
tags: 
    - name: ResourceSearchManager
      description: |
        The set of service operations that manage searching for resources.
    - name: SubjectsManager
      description: |
        The set of service operations that manage access to the lists of subjects supported by a LOR.

#####################################################################################
#                                   Paths                                           #
#####################################################################################
paths: 
    /resources:
        get:
            operationId: searchForResources
            summary: The REST read request message for the searchForResources() API call.
            tags: 
                - ResourceSearchManager
            description: |
                This is the search request. The criteria for the search are passed as query parameters and the set of identified resources are returned in the payload for the response message.
            parameters: 
                - name: limit
                  in: query
                  description: |
                      This is used as part of the data pagination mechanism to control the number of records returned in any one response message. The 'limit' defines the download segmentation value i.e. the maximum number of records to be contained in the response. The form of implementation is described in the corresponding binding document(s).
                  required: false
                  schema: 
                      type: integer
                      format: int32
                      default: 100
                      minimum: 1
                  allowEmptyValue: false
                  style: form
                - name: offset
                  in: query
                  description: |
                      This is used as part of the data pagination mechanism to control the download rate of data. The 'offset' is the number of the first record to be supplied in the segmented response message. The form of implementation is described in the corresponding binding document(s).
                  required: false
                  schema: 
                      type: integer
                      format: int32
                      default: 0
                      minimum: 0
                  allowEmptyValue: false
                  style: form
                - name: filter
                  in: query
                  description: |
                      The filtering rules to be applied when identifying the records to be supplied in the response message. Filtering defines the search criteria to be applied at the service provider for the identification and selection of the resources to be returned. A strict vocabulary is used for the permitted search terms (see the RS REST/JSON binding document 'Keyword Searching' in Sub-section 3.1 [RS-RJ-10]).
                  required: false
                  schema: 
                      type: string
                  allowEmptyValue: false
                  style: form
                - name: sort
                  in: query
                  description: |
                      This is used as part of the sorting mechanism to be use by the service provider. The 'sort' identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The form of implementation is described in the corresponding binding document(s).
                  required: false
                  schema: 
                      type: string
                  allowEmptyValue: false
                  style: form
                - name: orderBy
                  in: query
                  description: |
                      This is used as part of the sorting mechanism to be use by the service provider. This defines the form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The form of implementation is described in the corresponding binding document(s).
                  required: false
                  schema: 
                      type: string
                      enum: 
                        - asc
                        - desc
                  allowEmptyValue: false
                  style: form
                - name: fields
                  in: query
                  description: |
                      To identify the range of fields, and only those fields, that should be supplied in the response message. The permitted vocabulary for these fields is determined by the payloads that are returned in the corresponding response messages.
                  required: false
                  schema: 
                      type: array
                      items: 
                          type: string
                  allowEmptyValue: false
                  style: form
            x-1edtech-confidentiality: unrestricted
            responses: 
                "200" : 
                    description: |
                        The response code for when the query request has been successfully completed and the set of identified resources returned. This would be accompanied by the 'codeMajor/severity' values of 'success/status'
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/ResourceSetDType"
                    headers: 
                        "X-Total-Count" :
                            description: |
                                The total number of resources that are available to be returned
                            schema: 
                                type: integer
                    links: 
                        "next" :
                            description: |
                                Get the next set of resources i.e. from offset to offset+limit
                            operationId: searchForResources
                            parameters: 
                                "limit" : "$request.path.limit"
                                "offset" : "$request.path.offset"
                        "last" :
                            description: |
                                Get the last set of resources i.e. from offset to end
                            operationId: searchForResources
                            parameters: 
                                "limit" : "$request.path.limit"
                                "offset" : "$request.path.offset"
                        "first" :
                            description: |
                                Get the first set of resources i.e. from first to limit
                            operationId: searchForResources
                            parameters: 
                                "limit" : "$request.path.limit"
                                "offset" : "$request.path.offset"
                        "prev" :
                            description: |
                                Get the previous set of resources i.e. from last_offset to last_offset+limit
                            operationId: searchForResources
                            parameters: 
                                "limit" : "$request.path.limit"
                                "offset" : "$request.path.offset"
                "400" : 
                    description: |
                        The request has been declared as 'bad'.  This will be due to the provision of bad data in the request query parameters. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. 
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. 
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "default" : 
                    description: |
                        This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "422" : 
                    description: |
                        This error condition may occur if a JSON request body contains well-formed i.e. syntactically correct, but semantically erroneous, JSON instructions. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. 
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"

    /subjects:
        get:
            operationId: getAllSubjects
            summary: The REST read request message for the getAllSubjects() API call.
            tags: 
                - SubjectsManager
            description: |
                To obtain, read, the list of subjects that are supported by a LOR.
            x-1edtech-confidentiality: unrestricted
            responses: 
                "200" : 
                    description: |
                        The response code for when the query request has been successfully completed and the set of subjects returned. This would be accompanied by the 'codeMajor/severity' values of 'success/status'
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/SubjectSetDType"
                "400" : 
                    description: |
                        The request has been declared as 'bad'.  This will be due to the provision of bad data in the request query parameters. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. 
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "422" : 
                    description: |
                        This error condition may occur if a JSON request body contains well-formed i.e. syntactically correct, but semantically erroneous, JSON instructions. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. 
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. 
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"
                "default" : 
                    description: |
                        This is the response data payload to be supplied when the HTTP code is NOT explicitly defined. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and the appropriate 'codeMinor' value. The associated HTTP code will also be supplied.
                    content: 
                        application/json: 
                            schema: 
                                $ref: "#/components/schemas/imsx_StatusInfoDType"


#####################################################################################
#                               Components                                          #
#####################################################################################
components:
    schemas: 
        CCLTILinkDType:
            description: |
                The extended set of information used to define the presence of an LTI Link resource (this is based upon the definition for including an LTI link inside a 1EdTech Common Cartridge or 1EdTech Thin Common Cartridge).
            type: object
            required: 
                - title
                - vendor
            x-1edtech-confidentiality: unrestricted
            properties: 
                title: 
                    description: The human readable title/label for the activity being addressed by the content available through the LTI link. Model Primitive Datatype = NormalizedString.
                    type: string
                description: 
                    description: A human readable description of the activity addressed by the content supplied via the LTI link. Model Primitive Datatype = String.
                    type: string
                custom: 
                    $ref: "#/components/schemas/PropertySetDType"
                extensions: 
                    $ref: "#/components/schemas/PlatformPropertySetDType"
                launch_url: 
                    description: The URL for the LTI launch. One of either the launch_url or the secure_launch_url must be specified. It is acceptable to specify both and if both are specified, the Platform decides which to use. Typically, the Platform will use a secure_launch_url when embedding the Tool in a secure page and the launch_url when embedding the tool in a non-secure page. So, it is important that the Tool provides the same functionality whether the launch_url or secure_launch_url is used. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                secure_launch_url: 
                    description: A secure URL for the LTI launch. One of either the launch_url or the secure_launch_url must be specified. It is acceptable to specify both and if both are specified, the Platform decides which to use. Typically, the Platform will use a secure_launch_url when embedding the Tool in a secure page and the launch_url when embedding the tool in a non-secure page. So, it is important that the Tool provides the same functionality whether the launch_url or secure_launch_url is used. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                icon: 
                    description: A URL to an icon for this tool. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                secure_icon: 
                    description: A secure URL to an icon for this tool. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                vendor: 
                    $ref: "#/components/schemas/VendorDType"
                cartridge_bundle: 
                    $ref: "#/components/schemas/LTILinkResourceRefDType"
                cartridge_icon: 
                    $ref: "#/components/schemas/LTILinkResourceRefDType"
                metadata: 
                    $ref: "#/components/schemas/MetadataDType"
            additionalProperties: false
        CSMSetDType:
            description: |
                This is the is the container for the set of curriculum standards metadata. Each member of the set contains the curriculum standards metadata for a specific source of the GUIDs.
            type: object
            required: 
                - curriculumStandardsMetadata
            x-1edtech-confidentiality: unrestricted
            properties: 
                resourceLabel: 
                    description: This is a human readable label used to identify the type of resource, or part of resource, to which the enclosed metadata refers. Model Primitive Datatype = NormalizedString.
                    type: string
                resourcePartId: 
                    description: This is used to contain the appropriate identifier that is used to identify the resource part. Model Primitive Datatype = NormalizedString.
                    type: string
                curriculumStandardsMetadata: 
                    description: |
                        The curriculum standards associated from a single source of the curriculum standards definition.
                    type: array
                    minItems: 1
                    items: 
                        $ref: "#/components/schemas/CurriculumStandardsMetadataDType"
            additionalProperties: false
        CurriculumStandardsMetadataDType:
            description: |
                This is the container for the special metadata for curriculum standards for a particular domain of GUID provider.
            type: object
            required: 
                - setOfGUIDs
            x-1edtech-confidentiality: unrestricted
            properties: 
                providerId: 
                    description: This is used to denote the originator of the GUID scheme. Model Primitive Datatype = NormalizedString.
                    type: string
                setOfGUIDs: 
                    description: |
                        The set of curriculum standards GUIDs that apply to the learning associated resource.
                    type: array
                    minItems: 1
                    items: 
                        $ref: "#/components/schemas/SetOfGUIDsDType"
            additionalProperties: false
        LTILinkResourceRefDType:
            description: |
                The container for the link information.
            type: object
            required: 
                - name
                - resourceUri
            x-1edtech-confidentiality: unrestricted
            properties: 
                name: 
                    description: The name of the type of content supplied by the link. Model Primitive Datatype = NormalizedString.
                    type: string
                resourceUri: 
                    description: The URI for the link. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
            additionalProperties: false
        LabelledGUIDDType:
            description: |
                The labelled curriculum standard GUID.
            type: object
            required: 
                - GUID
            x-1edtech-confidentiality: unrestricted
            properties: 
                label: 
                    description: A human readable string to provide a clue about the nature of the curriculum standard. Model Primitive Datatype = NormalizedString.
                    type: string
                caseItemURI: 
                    description: The corresponding Competency and Academic Standards (CASE) URI. This is the URI used for alignment with the 1EdTech CASE Service 1.0 specification [CASE-10]. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                GUID: 
                    description: The GUID itself. Model Primitive Datatype = NormalizedString.
                    type: string
            additionalProperties: false
        LearningObjectivesDType:
            description: |
                The container for the learning objectives which are addressed by the resource.
            type: object
            required: 
                - alignmentType
            x-1edtech-confidentiality: unrestricted
            properties: 
                alignmentType: 
                    description: |
                        A category of alignment between the learning resource and the framework node.
                    type: string
                    enum: 
                       - assesses
                       - educationLevel
                       - educationalSubject
                       - readingLevel
                       - requires
                       - teaches
                       - textComplexity
                educationalFramework: 
                    description: The framework to which the resource being described is aligned. Model Primitive Datatype = NormalizedString.
                    type: string
                targetDescription: 
                    description: The description of a node in an established educational framework. Model Primitive Datatype = NormalizedString.
                    type: string
                targetName: 
                    description: The name of a node in an established educational framework. Model Primitive Datatype = NormalizedString.
                    type: string
                targetURL: 
                    description: The URL of a node in an established educational framework. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                caseItemUri: 
                    description: Reference to a CASE CFItem for a standard or skill [CASE-10]. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                caseItemGUID: 
                    description: Reference to CASE CFItem as a GUID [CASE-10]. Model Primitive Datatype = NormalizedString.
                    type: string
            additionalProperties: false
        MetadataDType:
            description: |
                The container for all of the metadata associated with the LTI link. Currently this metadata is restricted to the set of curriculum standards annotations.
            type: object
            x-1edtech-confidentiality: unrestricted
            properties: 
                curriculumStandardsMetadataSet: 
                    $ref: "#/components/schemas/CSMSetDType"
            additionalProperties: false
        PlatformPropertySetDType:
            description: |
                The container for the collection of properties that are available for a specific platform.
            type: object
            required: 
                - platform
                - properties
            x-1edtech-confidentiality: unrestricted
            properties: 
                platform: 
                    description: The identifier for the authoring environment. Model Primitive Datatype = NormalizedString.
                    type: string
                properties: 
                    description: |
                        The set of extension properties for the identified platform.
                    type: array
                    minItems: 1
                    items: 
                        $ref: "#/components/schemas/PropertyDType"
            additionalProperties: false
        PropertyDType:
            description: |
                The container for the name/value pair for a specific property.
            type: object
            required: 
                - name
                - value
            x-1edtech-confidentiality: unrestricted
            properties: 
                name: 
                    description: The name of the key for the property. Model Primitive Datatype = NormalizedString.
                    type: string
                value: 
                    description: The value for the property. Model Primitive Datatype = NormalizedString.
                    type: string
            additionalProperties: false
        PropertySetDType:
            description: |
                The container for the collection of properties that have been specified.
            type: object
            required: 
                - properties
            x-1edtech-confidentiality: unrestricted
            properties: 
                properties: 
                    description: |
                        The set of properties for the identified platform or orginal authoring platform.
                    type: array
                    minItems: 1
                    items: 
                        $ref: "#/components/schemas/PropertyDType"
            additionalProperties: false
        ResourceDType:
            description: |
                The container for the information about a resource that is supported by a LOR.
            type: object
            required: 
                - name
                - learningResourceType
                - publisher
                - 1edtech.mediaType
                - 1edtech.schoolType
            x-1edtech-privacy:
                - extensions
            x-1edtech-confidentiality: unrestricted
            x-1edtech-confidentiality-normal: 
                - extensions
            properties: 
                name: 
                    description: The name/title of resource. Model Primitive Datatype = NormalizedString.
                    type: string
                description: 
                    description: A human readable description of the contents of the resource. Model Primitive Datatype = NormalizedString.
                    type: string
                subject: 
                    description: |
                        The subject(s) of the resource. May have multiple subjects tagged. Model Primitive Datatype = NormalizedString.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                url: 
                    description: How to access resource over Internet e.g. HTTP, FTP, etc. A resource must have either a URL or or a LTI Link. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                ltiLink: 
                    $ref: "#/components/schemas/CCLTILinkDType"
                learningResourceType: 
                    description: |
                        The type of the resource. There may be multiple types.
                    type: array
                    minItems: 1
                    items: 
                        type: string
                        enum: 
                           - Activity/Experiment
                           - Activity/Learning
                           - Activity/Worksheet
                           - Assessment/Formative
                           - Assessment/Interim
                           - Assessment/Item
                           - Assessment/Preparation
                           - Assessment/Rubric
                           - Collection/Course
                           - Collection/Curriculum Guide
                           - Collection/Lesson
                           - Collection/Unit
                           - Game
                           - Lecture
                           - Other
                language: 
                    description: The languages used in the resource. International two digit code for language e.g. 'en' for English. Use the [RFC 3066] annotation. Model Primitive Datatype = Language.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                thumbnailUrl: 
                    description: Link to a thumbnail representing resource. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                typicalAgeRange: 
                    description: Age of the typical intended user. This is described as EITHER the minimum-maximum age range (the format is '11-12', '5-7', etc. with ONLY integers permitted) OR the age as a single integer e.g. '9'. Model Primitive Datatype = NormalizedString.
                    type: string
                textComplexity: 
                    description: |
                        A number indicating text complexity based on number of established measures.
                    type: array
                    minItems: 0
                    items: 
                        $ref: "#/components/schemas/TextComplexityDType"
                learningObjectives: 
                    description: |
                        The set of learning objectives addressed by the resource.
                    type: array
                    minItems: 0
                    items: 
                        $ref: "#/components/schemas/LearningObjectivesDType"
                author: 
                    description: |
                        Author or creator of the resource. Model Primitive Datatype = NormalizedString.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                publisher: 
                    description: Owner of the rights to the resource or who made it available (company or person). Model Primitive Datatype = NormalizedString.
                    type: string
                useRightsURL: 
                    description: URL describing how resource can be licensed. Could be Creative Commons license link or link to other specific open or proprietary license. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                timeRequired: 
                    description: Time that the resource takes to consume. Use the [ISO 8601] format for a duration. Model Primitive Datatype = Duration.
                    type: string
                    pattern: "^P(?!$)(\\d+(?:\\.\\d+)?Y)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?W)?(\\d+(?:\\.\\d+)?D)?(T(?=\\d)(\\d+(?:\\.\\d+)?H)?(\\d+(?:\\.\\d+)?M)?(\\d+(?:\\.\\d+)?S)?)?$"
                technicalFormat: 
                    description: A valid MIME type format for the resource e.g. text, HTML, PDF, MPEG, MP3, etc. See https://www.iana.org/assignments/media-types/media-types.xhtml. Model Primitive Datatype = NormalizedString.
                    type: string
                educationalAudience: 
                    description: |
                        For whom the resource is intended.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                        enum: 
                           - administrator
                           - aide
                           - guardian
                           - parent
                           - proctor
                           - relative
                           - student
                           - teacher
                accessibilityAPI: 
                    description: |
                        Which (if any) accessibility API is supported by the resource.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                        enum: 
                           - ARIAv1
                           - AT-SPI
                           - ATK
                           - AndroidAccessibility
                           - BlackberryAccessibility
                           - IAccessible2
                           - JavaAccessibility
                           - MSAA
                           - MacOSXAccessibility
                           - UIAutomation
                accessibilityInputMethods: 
                    description: |
                        How the resource can be controlled by the user, which includes full keyboard controllability, mouse controllability, and voice controllability.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                        enum: 
                           - fullKeyboardControl
                           - fullMouseControl
                           - fullVoiceControl
                accessibilityFeatures: 
                    description: These include alternatives and listed enhancements for the resource. These can be transformation features, navigation features, control features or augmentation features. Model Primitive Datatype = NormalizedString.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                accessibilityHazards: 
                    description: |
                        The set of accessibility hazards which are encountered when using this resource.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                        enum: 
                           - flashing
                           - motionSimulation
                           - olfactoryHazard
                           - sound
                accessMode: 
                    description: |
                        The human sensory perceptual system or cognitive faculty through which a person may process or perceive information.
                    type: array
                    minItems: 0
                    items: 
                        type: string
                        enum: 
                           - auditory
                           - color
                           - itemSize
                           - olfactory
                           - orientation
                           - position
                           - tactile
                           - textOnImage
                           - textual
                           - visual
                publishDate: 
                    description: Date the resource was published by the publisher. The 'date' using the [ISO 8601] format. Model Primitive Datatype = Date.
                    type: string
                    format: date
                rating: 
                    description: |
                        A rating of the quality of the resource determined by the Search Provider. Often derived from crowdsource ratings.
                    type: string
                    enum: 
                       - 1
                       - 2
                       - 3
                       - 4
                       - 5
                relevance: 
                    description: This is a floating point value based on relevance to the specific search. Higher relevance has a higher number. Model Primitive Datatype = Float.
                    type: number
                    format: float
                1edtech.mediaType: 
                    description: |
                        This indicates the media format of the resource: it is an enumerated vocabulary. Originally this was a part of the 'learningResourceType' attrubute but it has been separated to provide clarity.
                    type: array
                    minItems: 1
                    items: 
                        type: string
                        enum: 
                           - Interactive/Simulation
                           - Interactive/Animation
                           - Interactive/Whiteboard
                           - Text/Book
                           - Text/Chapter
                           - Text/Document
                           - Text/Article
                           - Text/Passage
                           - Text/Textbook
                           - Text/Reference
                           - Text/Website
                           - Media/Audio
                           - Media/Images/Visuals
                           - Media/Video
                           - Other
                1edtech.schoolType: 
                    description: |
                        This is the type of school. This is a non-extensible enumerated vocabulary.
                    type: array
                    minItems: 1
                    items: 
                        type: string
                        enum: 
                           - kindergarten
                           - vorschule
                           - grundschule
                           - foerderschuleLernen
                           - hauptschule
                           - realschule
                           - gymnasium
                           - integrierteGesamtschule
                           - gymnasialeOberstufe
                           - fachoberschule
                           - berufsschule
                           - foerderschuleEmotionaleUndSozi aleEntwicklung
                           - foerderschuleKoerperlicheUndmot orischeEntwicklung
                           - foerderschuleGeistigeEntwicklung
                           - foerderschuleSprache
                           - unbekannt
                1edtech.classGrade: 
                    description: This is the grade of the class. The grade takes the form of a single value or a range. The available set of grades are: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 and 13.
                    $ref: "#/components/schemas/ClassGradeDType"
            additionalProperties: true
        ResourceSetDType:
            description: |
                The container for the set of resources that have been supplied by the service provider. This may be empty if none of the resources fulfill the search criteria. The order of resources is not significant.
            type: object
            x-1edtech-confidentiality: unrestricted
            properties: 
                resources: 
                    description: |
                        The actual resources supplied by the service provider. The order of resources is not significant.
                    type: array
                    minItems: 0
                    items: 
                        $ref: "#/components/schemas/ResourceDType"
            additionalProperties: false
        SetOfGUIDsDType:
            description: |
                The  container for the set of GUIDs that annotate a resource for a particular geographical/socio-political/etc. region.
            type: object
            required: 
                - labelledGUID
            x-1edtech-confidentiality: unrestricted
            properties: 
                region: 
                    description: The region responsible for the definition.  Model Primitive Datatype = NormalizedString.
                    type: string
                version: 
                    description: This is used to denote any relevant versioning information. Model Primitive Datatype = NormalizedString.
                    type: string
                labelledGUID: 
                    description: |
                        The actual GUID plus the corresponding labelling information.
                    type: array
                    minItems: 1
                    items: 
                        $ref: "#/components/schemas/LabelledGUIDDType"
            additionalProperties: false
        SubjectDType:
            description: |
                This is the container for the details of a subject that is covered by the content within a LOR.
            type: object
            required: 
                - identifier
                - name
                - parent
            x-1edtech-confidentiality: unrestricted
            properties: 
                identifier: 
                    description: The unique identifier, a string, of the subject node. For the root node the value will be 'null'.  Model Primitive Datatype = NormalizedString.
                    type: string
                name: 
                    description: The name of the subject node, which may have any character and need not be unique with the returned taxonomy.  Model Primitive Datatype = NormalizedString.
                    type: string
                parent: 
                    description: A string (the identifier of that subject node) that references the single parent of this node. The returned data must be a true rooted tree, where each node returned has a single parent.  Model Primitive Datatype = NormalizedString.
                    type: string
            additionalProperties: false
        SubjectSetDType:
            description: |
                The container for the set of subjects that have been supplied by the service provider. This may be empty if none of the subjects fulfill the search criteria. The order of subjects is not significant.
            type: object
            x-1edtech-confidentiality: unrestricted
            properties: 
                subjects: 
                    description: |
                        The actual list of subject supplied by the service provider. The order of subjects is not significant.
                    type: array
                    minItems: 0
                    items: 
                        $ref: "#/components/schemas/SubjectDType"
            additionalProperties: false
        TextComplexityDType:
            description: |
                The name/pair value container for a text complexity annotation.
            type: object
            required: 
                - name
                - value
            x-1edtech-confidentiality: unrestricted
            properties: 
                name: 
                    description: |
                        The name of the complexity measure. This is taken from an enumerated vocabulary.
                    type: string
                    enum: 
                       - DRA
                       - Dale-Schall
                       - Flesch-Kincaid
                       - Fountas-Pinnell
                       - Lexile
                value: 
                    description: The text complexity measure in terms of the named measuring scale. Model Primitive Datatype = NormalizedString.
                    type: string
            additionalProperties: false
        VendorDType:
            description: |
                The container for the information about the vendor who created the resource.
            type: object
            required: 
                - code
                - name
            x-1edtech-confidentiality: unrestricted
            properties: 
                code: 
                    description: An identification code for the vendor. Model Primitive Datatype = NormalizedString.
                    type: string
                name: 
                    description: The name of the vendor. Model Primitive Datatype = NormalizedString.
                    type: string
                description: 
                    description: A human readable description of the vendor. Model Primitive Datatype = String.
                    type: string
                url: 
                    description: A URL for the vendor. Model Primitive Datatype = AnyURI.
                    type: string
                    format: uri
                emailContact: 
                    description: Contact email for the vendor. Model Primitive Datatype = NormalizedString.
                    type: string
            additionalProperties: false
        imsx_CodeMinorDType:
            description: |
                This is the container for the set of code minor status codes reported in the responses from the Service Provider.
            type: object
            required: 
                - imsx_codeMinorField
            x-1edtech-confidentiality: unrestricted
            properties: 
                imsx_codeMinorField: 
                    description: |
                        Each reported code minor status code.
                    type: array
                    minItems: 1
                    items: 
                        $ref: "#/components/schemas/imsx_CodeMinorFieldDType"
            additionalProperties: false
        imsx_CodeMinorFieldDType:
            description: |
                This is the container for a single code minor status code.
            type: object
            required: 
                - imsx_codeMinorFieldName
                - imsx_codeMinorFieldValue
            x-1edtech-confidentiality: unrestricted
            properties: 
                imsx_codeMinorFieldName: 
                    description: This should contain the identity of the system that has produced the code minor status code report. Model Primitive Datatype = NormalizedString.
                    type: string
                imsx_codeMinorFieldValue: 
                    description: |
                        The code minor status code (this is a value from the corresponding enumerated vocabulary).
                    type: string
                    enum: 
                       - forbidden
                       - fullsuccess
                       - internal_server_error
                       - invalid_data
                       - invalid_query_parameter
                       - server_busy
                       - unauthorisedrequest
            additionalProperties: false
        imsx_StatusInfoDType:
            description: |
                This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.
            type: object
            required: 
                - imsx_codeMajor
                - imsx_severity
            x-1edtech-confidentiality: unrestricted
            properties: 
                imsx_codeMajor: 
                    description: |
                        The code major value (from the corresponding enumerated vocabulary).
                    type: string
                    enum: 
                       - failure
                       - processing
                       - success
                       - unsupported
                imsx_severity: 
                    description: |
                        The severity value (from the corresponding enumerated vocabulary).
                    type: string
                    enum: 
                       - error
                       - status
                       - warning
                imsx_description: 
                    description: A human readable description supplied by the entity creating the status code information. Model Primitive Datatype = String.
                    type: string
                imsx_codeMinor: 
                    $ref: "#/components/schemas/imsx_CodeMinorDType"
            additionalProperties: false
        ClassGradeDType:
            description: |
                The container for the grade range for the Class. This may be either a single value or a range define by the start and end.
            type: object
            required: 
                - startGrade
            properties: 
                startGrade: 
                    description: The start grade for the Class. Model Primitive Datatype = Integer.
                    type: integer
                    format: int32
                    minimum: 0
                    maximum: 13
                endGrade: 
                    description: The end grade for the Class. This must be greater than the 'startGrade'. Model Primitive Datatype = Integer.
                    type: integer
                    format: int32
                    minimum: 0
                    maximum: 13
            additionalProperties: false

C. Summary of Conformance Tests for a Service Provider

The set of tests that will be used to determine if an implementation of the service provider functionality is compliant are summarised in Table C1. The features supplied Table C1 are:

  • ID - the unique identifier assigned to the test;
  • Mode - set as either 'Req' to denote that this test MUST be passed and 'Opt' to denote this test MAY be passed;
  • Description - a brief summary of the objective of the test.
Table C1 - A summary of the set of tests to be applied to a service provider undergoing certification.
ID Mode Description
101 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'search' (using the phrase search!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
102 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'name' (using the phrase name!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
103 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'publisher' (using the phrase publisher!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
104 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningResourceType' (using the phrase learningResourceType!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
105 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'subject' (using the phrase subject!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
106 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'description'. The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
107 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'language' (using the phrase language!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
108 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'typicalAgeRange' (using the phrase typicalAgeRange!='12'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
109a Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'textComplexity' (using the phrase textComplexity.name!='DRA'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
109b Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'textComplexity' (using the phrase textComplexity.value!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110a Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.alignmentType!='assesses'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110b Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.educationalFramework!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110c Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.targetDescription!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110d Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.targetName!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110e Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.targetURL!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110f Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.caseItemURI!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
110g Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'learningObjectives' (using the phrase learningObjectives.caseItemGUID!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
111 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'publishDate' (using the phrase publishDate!='1999-12-31'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
112 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'author' (using the phrase author!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
113 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'timeRequired' (using the phrase timeRequired!='PT1H'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
114 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'technicalFormat' (using the phrase technicalFormat!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
115 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'educationalAudience' (using the phrase educationalAudience!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
116 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'rating' (using the phrase rating!='1'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
117 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'accessibilityAPI' (using the phrase accessibilityAPI!='ARIAv1'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
118 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'accessibilityInputMethods' (using the phrase accessibilityInputMethods!='fullMouseControl'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
119 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term 'accessMode' (using the phrase accessMode!='tactile'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
121 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using equal ('=' using the term 'name'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
122 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using not equal ('!=' using the term 'name'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
123 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using greater than ('>' using the term 'publishDate'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
124 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using greater than or equal ('>=' using the term 'rating'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
125 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using lesser than (using the term 'publishDate'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
126 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using lesser than or equal ('>=' using the term 'rating'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
127 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using contains ('~' using the term 'subject'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
131 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using the AND predicate (using the phrase 'rating!= AND subject~'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
132 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using the OR predicate (using the phrase 'name= OR rating=5'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
151 Opt To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using the pagination query parameters ?limit and ?offset (using the phrase name!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
161 Opt To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using the sort query parameter ?sort (using the phrase "&sort=name"). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
162 Opt To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using the sort and orderBy (ascending) query parameters (using the phrase ?sort=learningResourceType&orderBy=asc on a filter of name). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
163 Opt To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using the sort and orderBy (descending) query parameters (using the phrase ?sort=learningResourceType&orderBy=desc on a filter of name). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
171 Opt To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using a single field (name) selection query parameter ?fields (using the phrase name!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
172 Opt To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for searches using three fields (description, subject, learningResourceType) selection query parameter ?fields (using the phrase name!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
301 Req To confirm the service provider's '.../ims/rs/v1p0/subjects' endpoint works correctly. The test system issues the getAllSubjects request and expects to receive a fully populated JSON payload.
401 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term '1edtech.mediaType' (using the phrase 1edtech.mediaType!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
402 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term '1edtech.schoolType' (using the phrase 1edtech.schoolType!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.
403 Req To confirm the service provider's '.../ims/rs/v1p0/resources' endpoint works correctly for the search term '1edtech.classGrade' (using the phrase 1edtech.classGrade.startGrade!='NULL'). The test system issues the searchForResources request and expects to receive a fully populated JSON payload.

The shaded rows denote tests that were added for this Profile.

D. Summary of Conformance Tests for a Consumer

The set of tests that will be used to determine if an implementation of the consumer functionality is compliant are summarised in Table D1. The features supplied in Table D1 are:

  • ID - the unique identifier assigned to the test;
  • Mode - set as either 'Req' to denote that this test MUST be passed and 'Opt' to denote this test MAY be passed;
  • Description - a brief summary of the objective of the test.
Table D1 - A summary of the set of tests to be applied to a service provider undergoing certification.
ID Mode Description
1.1 Req Confirm that the consumer makes requests using valid access token usage as per OAuth 2.0;
2.1 Req Confirm that the consumer makes valid requests for obtaining all subjects using the endpoint '.../ims/rs/v1p0/subjects';
2.2 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' (a valid 'filter' URL query parameter must be supplied);
3.1 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'limit' URL query parameter;
3.2 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'offset' URL query parameter;
3.3 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'filter' URL query parameter;
3.4 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'sort' URL query parameter;
3.5 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'orderBy' URL query parameter;
3.6 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'fields' URL query parameter.
5.1 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'filter' URL query parameter on the Media Type.
5.2 Req Confirm that the consumer makes valid requests for obtaining all resources using the endpoint '.../ims/rs/v1p0/resources' with a valid 'filter' URL query parameter on the School Type.

The shaded rows denote tests that were added for this Profile.

E. Revision History

This section is non-normative.

E.1 Version History

Version No. Release Date Comments
1EdTech Final Release 1.0 1st August, 2025

This is the first release of this Final Release document. This Profile is made available to 1EdTech Members for general adoption and certification.

F. References

F.1 Normative references

[OPENAPI-30]
OpenAPI Specification 3.0. Open API Initiative (Linux Foundation). July 2017. URL: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RS-CC-10]
LTI Resource Search 1.0 Service Conformance & Certification 1.0. 1EdTech Consortium, Inc. September 2018. URL: https://www.imsglobal.org/sites/default/files/spec/lti-rs/v1p0/conformance/rsservicev1p0_conformancev1p0.html
[RS-IG-10]
LTI Resource Search 1.0 Developers Guide 1.0. 1EdTech Consortium, Inc. May, 2019. URL: https://www.imsglobal.org/spec/lti-rs/v1p0/devguide
[RS-OA-10]
LTI Resource Search 1.0.1 Service OpenAPI Definition 1.0. 1EdTech Consortium, Inc. January 2025. URL: https://www.imsglobal.org/sites/default/files/spec/lti-rs/v1p0/openapi/rsservicev1p0p1_openapiv2p0.html
[RS-RJ-10]
LTI Resource Search 1.0.1 Service REST/JSON Binding 2.0. 1EdTech Consortium, Inc. January 2025. URL: https://www.imsglobal.org/sites/default/files/spec/lti-rs/v1p0/rest_binding/rsservicev1p0p1_restbindv2p0.html
[RS-SM-10]
LTI Resource Search 1.0.1 Service Model 1.0. 1EdTech Consortium, Inc. January 2025. URL: https://www.imsglobal.org/sites/default/files/spec/lti-rs/v1p0/information_model/rsservicev1p0p1_infomodelv2p0.html
[RSGP-OA-10]
LTI Resource Search 1.0.1 Service German Profile OpenAPI Definition 1.0. 1EdTech Consortium, Inc. January 2025. URL: https://www.imsglobal.org/sites/default/files/spec/lti-rs/v1p0/openapi/rsservicev1p0p1_german_openapiv1p0.html
[RSGP-RJ-10]
LTI Resource Search 1.0.1 Service German Profile REST/JSON Binding 1.0. 1EdTech Consortium, Inc. January 2025. URL: https://www.imsglobal.org/sites/default/files/spec/lti-rs/v1p0/rest_binding/rsservicev1p0p1_german_restbindv1p0.html

G. List of Contributors

The following individuals contributed to the development of this document:

Name Organization
Susan Haught 1EdTech Consortium
Colin Smythe 1EdTech Consortium
Mark Molenaar Apenutmize (Netherlands)
Eva Mjovik Udir (Norway)
Kasper Ceçek Cornelsen Verlag GmbH (Germany)
Christian Vesterling Cornelsen Verlag GmbH (Germany)
Lennart Nörenberg Cornelsen Verlag GmbH (Germany)

1EdTech™ Consortium, Inc. ("1EdTech") is publishing the information contained in this document ("Specification") for purposes of scientific, experimental, and scholarly collaboration only.

1EdTech makes no warranty or representation regarding the accuracy or completeness of the Specification.

This material is provided on an "As Is" and "As Available" basis.

The Specification is at all times subject to change and revision without notice.

It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.

1EdTech would appreciate receiving your comments and suggestions.

Please contact 1EdTech through our website at www.1edtech.org

Please refer to Document Name: 1EdTech Resource Search 1.0 Specification: German Profile 1.0

Date: August 1st, 2025