IMS Candidate Final

IMS Global Logo

IMS Comprehensive Learner Record REST/JSON Binding Version 1.0

IMS Candidate Final
Version 2.0

Date Issued: 26 August 2019
Latest version: http://www.imsglobal.org/clr/

IPR and Distribution Notices

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.

IMS 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 IMS's procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.

Copyright © 2019 IMS Global Learning Consortium. All Rights Reserved.

Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/speclicense.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 IMS 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 can be posted here: www.imsglobal.org/forums/ims-glc-public-forums-and-resources.

Trademark information: http://www.imsglobal.org/copyright.html

Document Name: IMS Comprehensive Learner Record REST/JSON Binding v1.0

Revision: 26 August 2019

toc | top

Abstract

The IMS Comprehensive Learner Record (CLR) Specification has been designed to create, transmit, and render an individual's set of achievements from one issuer, in a digital, machine-readable format. The specification allows for global adoption and supports shared tools within the IMS Global community.

The Comprehensive Learner Record supports interoperability in that CLR Providers and Consumers can consistently send and receive records among conformant entities. The IMS Comprehensive Learner Record specification describes an information model, service definition, and implementation guide to allow institutions, suppliers, and others to 'extend' the traditional transcript with records and types of information that are typically not found in a traditional transcript, such as competency attainment and co-curricular activities, and to define and facilitate an institution's learner achievements record store for collection of CLRs.

The CLR digitized information can be consumed by other schools, institutions, employers, and any other entities that are conformant as CLR consumers. In this machine readable format, CLR data enables granular and expansive discoverability of learning achievements that was not previously possible.

toc | top

Table of Contents

Abstract

1. Introduction

1.1 Scope and Context

1.2 Conventions

1.3 Structure of this Document

1.4 Nomenclature

3. The REST Endpoints

3.1 Mapping of the Service Operations to the REST Endpoints

3.2 API Root URL and Versioning

3.3 Predefined Endpoint Query Parameters

3.3.1 "deleteClr" Endpoint Query Parameters

3.3.2 "getAssertion" Endpoint Query Parameters

3.3.3 "getClrs" Endpoint Query Parameters

3.3.4 "getDiscoveryDocument" Endpoint Query Parameters

3.3.5 "getEndorsement" Endpoint Query Parameters

3.3.6 "getKey" Endpoint Query Parameters

3.3.7 "postClr" Endpoint Query Parameters

3.4 HTTP Code Handling

4. Security Framework

4.1 Overview

4.2 Architecture

4.3 OAuth 2.0 Client Credentials Grant Resource Access

4.3.1 CCG - Registration

4.3.2 CCG - Obtaining Tokens

4.3.3 CCG - Authenticating with Tokens

4.4 OAuth 2.0 Authorization Code Grant Resource Access

4.4.1 ACG - Registration

4.4.2 ACG - Obtaining Tokens

4.4.3 ACG - Authenticating with Tokens

5. JSON Payloads

5.1 "deleteClr" Request Payload

5.2 "deleteClr" Response Payload

5.2.1 Response Payloads for the HTTP Codes (204)

5.2.2 Response Payloads for the HTTP Codes (400, 401, 403, 404, default)

5.3 "getAssertion" Request Payload

5.4 "getAssertion" Response Payload

5.4.1 Response Payloads for the HTTP Codes (200)

5.4.2 Response Payloads for the HTTP Codes (404, default)

5.5 "getClrs" Request Payload

5.6 "getClrs" Response Payload

5.6.1 Response Payloads for the HTTP Codes (200)

5.6.2 Response Payloads for the HTTP Codes (400, 401, 403, 404, default)

5.7 "getDiscoveryDocument" Request Payload

5.8 "getDiscoveryDocument" Response Payload

5.8.1 Response Payloads for the HTTP Codes (200)

5.8.2 Response Payloads for the HTTP Codes (404, 421, default)

5.9 "getEndorsement" Request Payload

5.10 "getEndorsement" Response Payload

5.10.1 Response Payloads for the HTTP Codes (200)

5.10.2 Response Payloads for the HTTP Codes (404, default)

5.11 "getKey" Request Payload

5.12 "getKey" Response Payload

5.12.1 Response Payloads for the HTTP Codes (200)

5.12.2 Response Payloads for the HTTP Codes (404, default)

5.13 "postClr" Request Payload

5.14 "postClr" Response Payload

5.14.1 Response Payloads for the HTTP Codes (200, 201)

5.14.2 Response Payloads for the HTTP Codes (304)

5.14.3 Response Payloads for the HTTP Codes (400, 401, 403, 404, default)

6. Service OpenAPI Description

6.1 General Information

6.2 Tags Information

6.3 Security Information

6.4 Paths Information

6.4.1 "/assertions/{id}" Path

6.4.2 "/clrs" Path

6.4.3 "/clrs/{id}" Path

6.4.4 "/discovery" Path

6.4.5 "/endorsements/{id}" Path

6.4.6 "/keys/{id}" Path

6.5 Definitions Information

6.5.1 "AchievementDType" Definition

6.5.2 "AddressDType" Definition

6.5.3 "AlignmentDType" Definition

6.5.4 "ArtifactDType" Definition

6.5.5 "AssertionDType" Definition

6.5.6 "AssociationDType" Definition

6.5.7 "ClrDType" Definition

6.5.8 "ClrSetDType" Definition

6.5.9 "CriteriaDType" Definition

6.5.10 "CryptographicKeyDType" Definition

6.5.11 "DiscoveryDocumentDType" Definition

6.5.12 "EndorsementDType" Definition

6.5.13 "EndorsementClaimDType" Definition

6.5.14 "EndorsementProfileDType" Definition

6.5.15 "EvidenceDType" Definition

6.5.16 "IdentityDType" Definition

6.5.17 "ProfileDType" Definition

6.5.18 "ResultDType" Definition

6.5.19 "ResultDescriptionDType" Definition

6.5.20 "RevocationListDType" Definition

6.5.21 "VerificationDType" Definition

6.5.22 "imsx_CodeMinorDType" Definition

6.5.23 "imsx_CodeMinorFieldDType" Definition

6.5.24 "imsx_StatusInfoDType" Definition

7. Extending and Profiling the Service

7.1 Extending the Service

7.1.1 Proprietary Operations

7.1.2 Proprietary Data Elements

7.2 Profiling the Service

References

Appendix A REST/JSON Modelling Terms

A1 REST Endpoint Description Explanations

A1.1 REST Endpoint Mapping Table Explanation

A1.2 Query Parameter Table Explanation

A1.3 Error Codes and Handling for each Endpoint Table Explanation

A2 OpenAPI Descriptions Explanations

A2.1a OpenAPI(2) General Information Table Explanation

A2.1b OpenAPI(3) General Information Table Explanation

A2.2 OpenAPI Tags Table Explanation

A2.3 OpenAPI Security Table Explanation

A2.4 OpenAPI Paths Table Explanation

A2.5 OpenAPI Definitions Table Explanation

Appendix B OpenAPI Listings

B1 Comprehensive Learner Record Service OpenAPI JSON Definition Listing

B1.1 OpenAPI 2.0 JSON Listing

B1.2 OpenAPI 3.0 JSON Listing

B2 Comprehensive Learner Record Service OpenAPI YAML Definition Listing

B2.1 OpenAPI 2.0 YAML Listing

B2.2 OpenAPI 3.0 YAML Listing

About this Document

List of Contributors

Revision History

toc | top

List of Tables

Table 3.1 - The Set of REST Endpoint URL-leaf Values.

Table 3.4 - The List of HTTP Codes and Handling for each Endpoint.

Table 5.13.1 - Tabular representation of the JSON payload for the request message for a "postClr" operation.

Table 6.1a - The Set of General Information Defined in the OpenAPI(2) Description.

Table 6.1b - The Set of General Information Defined in the OpenAPI(3) Description.

Table 6.2 - The Set of Tags Defined in the OpenAPI Description.

Table 6.4.1 - The Set of HTTP Verbs Permitted on the "/assertions/{id}" Path.

Table 6.4.2 - The Set of HTTP Verbs Permitted on the "/clrs" Path.

Table 6.4.3 - The Set of HTTP Verbs Permitted on the "/clrs/{id}" Path.

Table 6.4.4 - The Set of HTTP Verbs Permitted on the "/discovery" Path.

Table 6.4.5 - The Set of HTTP Verbs Permitted on the "/endorsements/{id}" Path.

Table 6.4.6 - The Set of HTTP Verbs Permitted on the "/keys/{id}" Path.

Table 6.5.1 - OpenAPI JSON Schema description for the "AchievementDType" Complex Type.

Table 6.5.2 - OpenAPI JSON Schema description for the "AddressDType" Complex Type.

Table 6.5.3 - OpenAPI JSON Schema description for the "AlignmentDType" Complex Type.

Table 6.5.4 - OpenAPI JSON Schema description for the "ArtifactDType" Complex Type.

Table 6.5.5 - OpenAPI JSON Schema description for the "AssertionDType" Complex Type.

Table 6.5.6 - OpenAPI JSON Schema description for the "AssociationDType" Complex Type.

Table 6.5.7 - OpenAPI JSON Schema description for the "ClrDType" Complex Type.

Table 6.5.8 - OpenAPI JSON Schema description for the "ClrSetDType" Complex Type.

Table 6.5.9 - OpenAPI JSON Schema description for the "CriteriaDType" Complex Type.

Table 6.5.10 - OpenAPI JSON Schema description for the "CryptographicKeyDType" Complex Type.

Table 6.5.11 - OpenAPI JSON Schema description for the "DiscoveryDocumentDType" Complex Type.

Table 6.5.12 - OpenAPI JSON Schema description for the "EndorsementDType" Complex Type.

Table 6.5.13 - OpenAPI JSON Schema description for the "EndorsementClaimDType" Complex Type.

Table 6.5.14 - OpenAPI JSON Schema description for the "EndorsementProfileDType" Complex Type.

Table 6.5.15 - OpenAPI JSON Schema description for the "EvidenceDType" Complex Type.

Table 6.5.16 - OpenAPI JSON Schema description for the "IdentityDType" Complex Type.

Table 6.5.17 - OpenAPI JSON Schema description for the "ProfileDType" Complex Type.

Table 6.5.18 - OpenAPI JSON Schema description for the "ResultDType" Complex Type.

Table 6.5.19 - OpenAPI JSON Schema description for the "ResultDescriptionDType" Complex Type.

Table 6.5.20 - OpenAPI JSON Schema description for the "RevocationListDType" Complex Type.

Table 6.5.21 - OpenAPI JSON Schema description for the "VerificationDType" Complex Type.

Table 6.5.22 - OpenAPI JSON Schema description for the "imsx_CodeMinorDType" Complex Type.

Table 6.5.23 - OpenAPI JSON Schema description for the "imsx_CodeMinorFieldDType" Complex Type.

Table 6.5.24 - OpenAPI JSON Schema description for the "imsx_StatusInfoDType" Complex Type.

Table A1.1 The key to the descriptions of the mapping between a service calls and its REST endpoint URL-leaf

Table A1.2 The key to the descriptions of the data attribute/characteristic tables

Table A1.3 The key to the descriptions of the list of error codes and handling for each endpoint

Table A2.1a The key to the tabular description of the OpenAPI(2) general information

Table A2.1b The key to the tabular description of the OpenAPI(3) general information

Table A2.2 The key to the tabular description of the OpenAPI tags information

Table A2.3 The key to the tabular description of the OpenAPI security information.

Table A2.4 The key to the tabular description of the OpenAPI paths information for an HTTP Verb

Table A2.5 The key to the tabular description of the OpenAPI definitions information

toc | top

List of Code Blocks

Code 5.2.2 - JSON payload example for "400, 401, 403, 404, default" response messages for a "deleteClr" operation.

Code 5.4.1 - JSON payload example for "200" response messages for a "getAssertion" operation.

Code 5.6.1 - JSON payload example for "200" response messages for a "getClrs" operation.

Code 5.6.2 - JSON payload example for "400, 401, 403, 404, default" response messages for a "getClrs" operation.

Code 5.8.1 - JSON payload example for "200" response messages for a "getDiscoveryDocument" operation.

Code 5.10.1 - JSON payload example for "200" response messages for a "getEndorsement" operation.

Code 5.12.1 - JSON payload example for "200" response messages for a "getKey" operation.

Code 5.13.1 - JSON payload example for the request message for a "postClr" operation.

Code 5.14.1 - JSON payload example for "200, 201" response messages for a "postClr" operation.

Code 5.14.3 - JSON payload example for "400, 401, 403, 404, default" response messages for a "postClr" operation.

toc | top

1. Introduction

1.1. Scope and Context

This document is the IMS Comprehensive Learner Record (CLR) REST/JSON Binding Version 1.0 and as such it is used as the basis for implementing the CLR Service. The key related documents are:

This information model and this REST/JSON binding define the IMS Comprehensive Learner Record Abstract Application Programming Interface (a-API). This model is described using the Unified Modeling Language (UML) based upon the IMS Global Model Driven Specification approach and the associated modelling toolkit [I-BAT, 06]. This means that this specification is based upon the concepts of:

1.2. Conventions

All sections marked as non-normative, all authoring guidelines, diagrams (with the exception of the UML diagrams), examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119]. This means that from the perspective of conformance:

The Conformance and Certification Guide for this specification may introduce greater normative constraints than those defined here for specific service or implementation categories.

The SHOULD/SHOULD NOT/RECOMMENDED statements MUST NOT be used in any document, or section of a document, that is responsible for defining the information model and/or the associated bindings and/or conformance and certification.

1.3. Structure of this Document

The structure of the rest of this document is:

3. The REST Endpoints An explanation of the relationship between the logical service operations (as defined in the Comprehensive Learner Record Information Model [CLR, 19d]) and how these are realised as the corresponding set of REST endpoints (including the set of query parameters that are permitted);
4. Security Framework The underlying security framework within which this REST/JSON binding is designed to operate. This includes the details about authentication and how the payload integrity may be protected;
5. JSON Payloads Examples of the set of JSON payloads that are sent by the consumer (the request) and returned by the service provider (response). These examples are focused on the expected structure of a request/response and do not include actual payloads;
6. Service OpenAPI Description A detailed explanation of the structure of the OpenAPI files that are produced as part of the specification documentation. The associated JSON and YAML files are supplied in Appendix B;
7. Extending and Profiling the Service An explanation of how the service can be extended, using the permitted points of extension and/or profiled. Profiling is the process by which the specification is tailored to a specific set of market/domain requirements;
References A list of references used throughout this document.
Appendix A REST/JSON Modelling Terms An overview of the model driven approach, the concepts and the terms used by IMS to create the service model REST/JSON binding definitions (based upon a profile of UML) and the accompanying documentation (including this binding);
Appendix B OpenAPI Listings The listings of the OpenAPI(JSON) and OpenAPI(YAML) files that have been created to define the REST/JSON binding in a machine-readable format i.e. conforming to the OpenAPI 2.0 specification.

1.4. Nomenclature

A-API Abstract API
API Application Programming Interface
CASE IMS Competencies and Standards Exchange specification
CBE Competency Based Education
CLR Comprehensive Learner Record
HE Higher Education
IETF Internet Engineering Task Force
IdentityHash A hash string preceded by a dollar sign ('$') and the algorithm used to generate the hash. The supported algorithms are MD5 and SHA-256, identified by the strings md5 and sha256 respectively. For example: sha256$28d50415252ab6c689a54413da15b083034b66e5 represents the result of calculating a SHA-256 hash on the string 'mayze'.
JSON Java Script Object Notation
JSON-LD A JSON-based serialization for Linked Data
REST Representation State TRansfer
RFC Request for Comments
UML Unified Modelling Language
URI Uniform Resource Identifier
URL Uniform Resource Locator
XML Exchange Markup Language
XSD XML Schema Definition

toc | top

3. The REST Endpoints

This Section is NORMATIVE.

3.1 Mapping of the Service Operations to the REST Endpoints

The mapping between the service operations and the REST Endpoint URL-leaf values are listed in Table 3.1. The syntax and semantics for this mapping are described in Appendix A1.1.

Table 3.1 - The Set of REST Endpoint URL-leaf Values.
Service Call REST Endpoint HTTP Verb
deleteClr /clrs/{id} DELETE
getAssertion /assertions/{id} GET
getClrs /clrs GET
getDiscoveryDocument /discovery GET
getEndorsement /endorsements/{id} GET
getKey /keys/{id} GET
postClr /clrs POST

3.2 API Root URL and Versioning

All of the paths MUST also contain, as the base of the path, excluding the host name, the string: "/ims/clr/v1p0/".

3.3 Predefined Endpoint Query Parameters

The definition of the permitted set of query parameters are defined in the following Tables. The syntax and semantics for this Tables are described in Appendix A1.2.

3.3.1 "deleteClr" Endpoint Query Parameters

There are no pre-defined query parameters for this endpoint.

3.3.2 "getAssertion" Endpoint Query Parameters

There are no pre-defined query parameters for this endpoint.

3.3.3 "getClrs" Endpoint Query Parameters

3.3.3.1 "limit" Query Parameter

The description of the "limit" query parameter is presented in Table 3.3.3.1

Table 3.3.3.1 - The definition of the "limit" query parameter for the "getClrs" operation.
Descriptor Definition
Parameter Name limit
Data Type PositiveInteger (Primitive-type)
Value Space See Appendix A1.2.
Default = "100".
Multiplicity [0..1]
Description The number of results to return.

3.3.3.2 "offset" Query Parameter

The description of the "offset" query parameter is presented in Table 3.3.3.2

Table 3.3.3.2 - The definition of the "offset" query parameter for the "getClrs" operation.
Descriptor Definition
Parameter Name offset
Data Type NonNegativeInteger (Primitive-type)
Value Space See Appendix A1.2.
Multiplicity [0..1]
Description The index of the first record to return. (zero indexed)

3.3.3.3 "since" Query Parameter

The description of the "since" query parameter is presented in Table 3.3.3.3

Table 3.3.3.3 - The definition of the "since" query parameter for the "getClrs" operation.
Descriptor Definition
Parameter Name since
Data Type DateTime (Primitive-type)
Value Space See Appendix A1.2.
Multiplicity [0..1]
Description Retrieve CLRs that were issued after the provided timestamp. Must be an ISO 8601 compatible timestamp with a time zone indicator.

3.3.4 "getDiscoveryDocument" Endpoint Query Parameters

There are no pre-defined query parameters for this endpoint.

3.3.5 "getEndorsement" Endpoint Query Parameters

There are no pre-defined query parameters for this endpoint.

3.3.6 "getKey" Endpoint Query Parameters

There are no pre-defined query parameters for this endpoint.

3.3.7 "postClr" Endpoint Query Parameters

There are no pre-defined query parameters for this endpoint.

3.4 HTTP Code Handling

A service provider will either return a data payload or a payload that indicates the cause of the failure. The list of HTTP Codes and handling for each endpoint is shown in Table 3.4. The syntax and semantics for this tabular description are described in Appendix A1.3.

Table 3.4 - The List of HTTP Codes and Handling for each Endpoint.
REST Endpoint HTTP Verb HTTP Codes and Handling
/assertions/{id} GET
  • 200 - 'OK' - the resource is returned in the payload. The payload is defined by the structure AssertionDType.
  • 404 - 'Not Found' – there is no resource behind the URI. There is no payload in the response message.
/clrs GET
  • 200 - 'OK' - the resource is returned in the payload. The payload is defined by the structure ClrSetDType.
  • 400 - 'Bad Request' – the request was invalid or cannot be served. The exact error should be explained in the error payload. The payload is defined by the structure imsx_StatusInfoDType.
  • 401 - 'Unauthorized' – the request requires an user authentication. The payload is defined by the structure imsx_StatusInfoDType.
  • 403 - 'Forbidden' – the server understood the request, but is refusing it or the access is not allowed. The payload is defined by the structure imsx_StatusInfoDType.
  • 404 - 'Not Found' – there are no resources behind the URI. The payload is defined by the structure imsx_StatusInfoDType.
/clrs POST
  • 200 - 'OK' – the resource was successfully replaced. The payload is defined by the structure ClrDType.
  • 201 - 'Created` – the resource was successfully created. The payload is defined by the structure ClrDType.
  • 304 - 'Not Modified' – the client can use cached data. There is no payload in the response message.
  • 400 - 'Bad Request' – the request was invalid or cannot be served. The exact error should be explained in the error payload. The payload is defined by the structure imsx_StatusInfoDType.
  • 401 - 'Unauthorized' – the request requires user authentication. The payload is defined by the structure imsx_StatusInfoDType.
  • 403 - 'Forbidden' – the server understood the request, but is refusing it or the access is not allowed. The payload is defined by the structure imsx_StatusInfoDType.
  • 404 - 'Not Found' – there is no resource behind the URI. The payload is defined by the structure imsx_StatusInfoDType.
/clrs/{id} DELETE
  • 204 - 'No Content' – The resource was successfully deleted. There is no payload in the response message.
  • 400 - 'Bad Request' – The request was invalid or cannot be served. The exact error should be explained in the error payload. The payload is defined by the structure imsx_StatusInfoDType.
  • 401 - 'Unauthorized' – The request requires an user authentication. The payload is defined by the structure imsx_StatusInfoDType.
  • 403 - 'Forbidden' – The server understood the request, but is refusing it or the access is not allowed. The payload is defined by the structure imsx_StatusInfoDType.
  • 404 - 'Not found' – There is no resource behind the URI. The payload is defined by the structure imsx_StatusInfoDType.
/discovery GET
  • 200 - 'OK' - the resource is returned in the payload. The payload is defined by the structure DiscoveryDocumentDType.
  • 404 - 'Not Found' – there is no resource behind the URI. There is no payload in the response message.
  • 421 - 'Misdirected Request' - the request was not made over secure TLS 1.2 or 1.3 protocol. There is no payload in the response message.
/endorsements/{id} GET
  • 200 - 'OK' - the resource is returned in the payload. The payload is defined by the structure EndorsementDType.
  • 404 - 'Not Found' – there is no resource behind the URI. There is no payload in the response message.
/keys/{id} GET
  • 200 - 'OK' - the resource is returned in the payload. The payload is defined by the structure CryptographicKeyDType.
  • 404 - 'Not Found' – there is no resource behind the URI. There is no payload in the response message.

toc | top

4. Security Framework

This Section is NORMATIVE.

4.1. Overview

This specification has several REST endpoints. Some of those endpoints are secured and the others are not. This section describes how the secured endpoints are protected. The following REST endpoints are protected using the OAuth 2.0 Authorization Framework [RFC6749]:

REST Endpoint HTTP Verb Scope Required
clrs/{id} DELETE https://purl.imsglobal.org/spec/clr/v1p0/scope/delete
clrs GET https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly
clrs POST https://purl.imsglobal.org/spec/clr/v1p0/scope/replace

Endpoints that are secured must use the methods outlined in Section 4, "Securing Web Services" of the IMS Security Framework [SECURITY FRAMEWORK, 19a]. Consumers and Providers that have a pre-established trust relationship and shared ownership of the resources MUST use the OAuth 2.0 Client-Credentials Grant method. Consumers and Providers that give individual users access to their resources MUST use the OAuth 2.0 Authorization Code Grant method. A partial list of examples are shown in the table below:

Example Grant Method to Use
A university system within a state is collecting CLRs from every campus. The Providers are the campus learning information systems. The Consumer is the university system's CLR Hub. OAuth 2.0 Client Credentials Grant because the Consumer and Provider have a pre-established trust relationship and shared ownership of the protected resources.
A school district contracts out a specialty program to a third party. The district collects a CLR for each student from the third party at the end of each course. The Consumer is the school district and the Provider is the third party.
A university system maintains a CLR Hub students and alumni can use to retrieve their personal extended transcript. A student is using a third party application to assemble a personal portfolio. The student uses the portfolio application to get their extended transcript from the university system's CLR Hub. The Consumer is the portfolio application and the Provider is the CLR Hub. OAuth 2.0 Authorization Code Grant because the learner is accessing their own individual resources.
A learner has used a personal portfolio application to assemble a comprehensive record of their achievements. The learner uses the portfolio application to "submit" their CLR to a potential employer. The Consumer is the portfolio application and the Provider is the employer's career tracking system.

4.2. Architecture

Diagram showing the major components of the CLR security

Diagram of the major components of the CLR security framework

Secure IMS services use the OAuth 2.0 Authorization Framework [RFC6749] to protect resources such as comprehensive learner records. There are five key components to the CLR security architecture.

User
This is the individual that owns the protected resources (CLRs) that are on the Provider.
Web Browser
This is the web browser application that the User interacts with.
Consumer
This is the web application that interacts with the Provider on behalf of the User.
Authorization Server
This is a server that implements OAuth 2.0 endpoints on behalf of the Provider. In many systems, the Authorization Server and the Provider are combined.
Provider
This is the resource server that has the protected resources (CLRs).

The role of each component during Registration, Obtaining Tokens, and Authenticating with Tokens using the appropriate method are described below.

4.3. OAuth 2.0 Client Credentials Grant Resource Access

Consumers and Providers that have a pre-established trust relationship and shared ownership of the protected resources MUST use the OAuth 2.0 Client-Credentials Grant (CCG) method.

Consumers and Providers implementing this method of security MUST comply with Section 4.1, "Using OAuth 2.0 Client-Credentials Grant" of the IMS Security Framework [SECURITY FRAMEWORK, 19a].

4.3.1. CCG - Registration

To get started, the Consumer and Provider must share three pieces of information as shown below. The mechanism for sharing this information is not prescribed by this specification.

client_id
Also called the Key in the IMS Security Framework. This is the public identifier for the communication exchange.
client_secret
Also called a Secret in the IMS Security Framework. This is the shared secret for the communication exchange.
OAuth 2.0 Access Token Service Endpoint
The endpoint from which the approved, requesting Consumer can obtain an access token.

4.3.2. CCG - Obtaining Tokens

Sequence diagram for obtaining an access token using the CCG flow

Sequence diagram for obtaining an access token using the CCG flow

To obtain an access token, the Consumer posts a "client_credentials" grant token request to the OAuth 2.0 Access Token Service Endpoint established during Registration. Requests for an access token MUST use an HTTP POST over HTTPS and TLS 1.2 or 1.3 protocol. The Consumer MUST use its client_id and client_secret with the HTTP Basic Authentication method (as described in [RFC2617]) for this request and MUST NOT put its key, secret and list of scopes into the request body.

The set of query parameters used to request an access token are:

Parameter Required Description
grant_type REQUIRED The value MUST be set to "client_credentials"
scope REQUIRED The scope of the access request.

An example request message is shown below in which 3 scopes (https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly, https://purl.imsglobal.org/spec/clr/v1p0/scope/replace, and https://purl.imsglobal.org/spec/clr/v1p0/scope/delete) are requested:

POST /token?scope=https%3a%2f%2fpurl.imsglobal.org%2fspec%2fclr%2fv1p0%2fscope%2fdelete+https%3a%2f%2fpurl.imsglobal.org%2fspec%2fclr%2fv1p0%2fscope%2freadonly+https%3a%2f%2fpurl.imsglobal.org%2fspec%2fclr%2fv1p0%2fscope%2freplace HTTP/1.1
Authorization: Basic YWQyMmU5ZjYxNzlhNzljODo5Y2MxYzEzY2NmZTAxYWQ1
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
        

If the authorization service successfully grants this request (see Section 5.1 in [RFC6749] for the detailed description), it responds with an HTTP 200 OK response containing the access token and its expiry lifetime (IMS recommends a default expiry lifetime of 3600 seconds, one hour, for access tokens) and confirms the set of scopes supported by this access token:

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, max-age=0
Pragma: no-cache
Content-Type: application/json; charset=UTF-8

{
    "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImRmMTExNWEyZDZiMWRkOWY4YWFiNzllZjUxZWNhOTE4IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1NjU2MzYzNTgsImV4cCI6MTU2NTYzOTk1OCwiaXNzIjoiaHR0cHM6Ly9jbHJhdXRoLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImh0dHBzOi8vY2xyYXV0aC5henVyZXdlYnNpdGVzLm5ldC9yZXNvdXJjZXMiLCJEZWxldGVDbHIiLCJHZXRDbHJzIiwiUmVwbGFjZUNsciJdLCJjbGllbnRfaWQiOiJhZDIyZTlmNjE3OWE3OWM4IiwiY2xpZW50X3BvbGljeV91cmkiOiJodHRwczovL2NscmNvbnN1bWVyLmF6dXJld2Vic2l0ZXMubmV0OjQ0My9wcml2YWN5IiwiY2xpZW50X3Rvc191cmkiOiJodHRwczovL2NscmNvbnN1bWVyLmF6dXJld2Vic2l0ZXMubmV0OjQ0My90ZXJtcyIsImNsaWVudF9yZXNwb25zZV90eXBlcyI6IiIsImNsaWVudF90b2tlbl9lbmRwb2ludF9hdXRoX21ldGhvZCI6ImNsaWVudF9zZWNyZXRfYmFzaWMiLCJzY29wZSI6WyJodHRwczovL3B1cmwuaW1zZ2xvYmFsLm9yZy9zcGVjL2Nsci92MXAwL3Njb3BlL2RlbGV0ZSIsImh0dHBzOi8vcHVybC5pbXNnbG9iYWwub3JnL3NwZWMvY2xyL3YxcDAvc2NvcGUvcmVhZG9ubHkiLCJodHRwczovL3B1cmwuaW1zZ2xvYmFsLm9yZy9zcGVjL2Nsci92MXAwL3Njb3BlL3JlcGxhY2UiXX0.hH6pyev1qqDm_ss69OAflROL8deF9z9jc902-m6PmDYylRqkIK_uO3Iv2Od6cwDRfZiqOEKotbyRks3S-Dv3jJsJLg0Kc52i8S-6Wbosjg05KMaXr7Ocg2o1_J6xquSdt-tCopwcMcOty--9ePGPYvkyDaKcTdUYeH0HX214R21K485x5ebiHr3JzKq6WAzvElhkwWQcGTGvopAKywZknwxZc9Z2Izjg1Xk96eFKuw1J9ReIzU9ZwuVsLYHXPlyq9ZjleHWl87y3BApwoYv3PxFT_PP87E9BhlFzYpR__NP5Uf_QSrk1mZxD2yFHmwmG4ad3kEoVISEndrwSc4iawQ",
    "expires_in": 3600,
    "token_type": "Bearer",
    "scope": "https://purl.imsglobal.org/spec/clr/v1p0/scope/delete https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly https://purl.imsglobal.org/spec/clr/v1p0/scope/replace"
}
        

The authorization server MAY decide not to issue an access token: this could be because the request scopes are invalid, the credentials from the client may be invalid, etc. In this case the authorization server MUST return an error message with an HTTP 400 Bad Request status code.

4.3.3. CCG - Authenticating with Tokens

Sequence diagram for authenticating with tokens when using CCG flow

Sequence diagram for authenticating with tokens when using CCG flow

The Consumer utilizes the access token to authenticate with the Provider using the HTTP Authorization request header field [RFC2617] with a Bearer Token [RFC6750]. For example, a "getClrs" request would look like this:

GET /ims/clr/v1p0/clrs HTTP/1.1
Accept: application/ld+json, application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImRmMTExNWEyZDZiMWRkOWY4YWFiNzllZjUxZWNhOTE4IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1NjU2NDg3NzEsImV4cCI6MTU2NTY1MjM3MSwiaXNzIjoiaHR0cHM6Ly9jbHJhdXRoLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImh0dHBzOi8vY2xyYXV0aC5henVyZXdlYnNpdGVzLm5ldC9yZXNvdXJjZXMiLCJEZWxldGVDbHIiLCJHZXRDbHJzIiwiUmVwbGFjZUNsciJdLCJjbGllbnRfaWQiOiJhZDIyZTlmNjE3OWE3OWM4IiwiY2xpZW50X3BvbGljeV91cmkiOiJodHRwczovL2NscmNvbnN1bWVyLmF6dXJld2Vic2l0ZXMubmV0OjQ0My9wcml2YWN5IiwiY2xpZW50X3Rvc191cmkiOiJodHRwczovL2NscmNvbnN1bWVyLmF6dXJld2Vic2l0ZXMubmV0OjQ0My90ZXJtcyIsImNsaWVudF9yZXNwb25zZV90eXBlcyI6IiIsImNsaWVudF90b2tlbl9lbmRwb2ludF9hdXRoX21ldGhvZCI6ImNsaWVudF9zZWNyZXRfYmFzaWMiLCJzY29wZSI6WyJodHRwczovL3B1cmwuaW1zZ2xvYmFsLm9yZy9zcGVjL2Nsci92MXAwL3Njb3BlL2RlbGV0ZSIsImh0dHBzOi8vcHVybC5pbXNnbG9iYWwub3JnL3NwZWMvY2xyL3YxcDAvc2NvcGUvcmVhZG9ubHkiLCJodHRwczovL3B1cmwuaW1zZ2xvYmFsLm9yZy9zcGVjL2Nsci92MXAwL3Njb3BlL3JlcGxhY2UiXX0.F9R10NxTDSluOIQwj0KP0Nb4Ix6Ye1rqOgLu2uot9IP-VDn4rDZsiLeIb6eiUJE2nU40pKgve6IKQAew7gqC9Tt3BfRjVo5QMI99xPoYxgHDLAZeRiJhD_2JYZQmda_KgoByHOPiXuuWM9wI9qw3YpUCeObn7DldxNcFH0NvQZwwSWJzVX-R1N_M7LxdlHB7fHPeggbUXos0G3FWdLF37a-v_5wEsv5zMf-Ts6gHGCU7p682SS1bkLXKT-HWO44IuaqWxzBIRGHA9wXLHCADP6_nWLJxmaZa5_E-FFHpiIvcV4g-CcWlz6KAxgNH-my6mm4IMfPKhUn6vgGCQsSalw
        

If the Provider accepts the request, it responds with the appropriate payload. For example the response to the request above may look like this (empty list of clrs for brevity):

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "type": "ClrSet",
    "clrs": []
}
        

4.4. OAuth 2.0 Authorization Code Grant Resource Access

Consumers and Providers that give individual users access to their own resources MUST use the OAuth 2.0 Authorization Code Grant (ACG) method

Consumers and Providers implementing this method of security MUST comply with Section 4.2, "Using OAuth 2.0 Authorization Code Grant" of the IMS Security Framework [SECURITY FRAMEWORK, 19a].

4.4.1. ACG - Registration

Sequence diagram for registration when using ACG flow

Sequence diagram for registration when using ACG flow

Consumers and Providers that implement the Authentication Code Grant (ACG) method of resource access MUST implement the dynamic Consumer registration process outlined here. There are two steps in this process:

  1. Request the Discovery Document from the Provider
  2. Register with the Authentication Server

The Consumer only needs to register a client_id with the Authentication Server once. Each User will use the same client_id when they request their own authorization code.

Request the Discovery Document

To start the registration process, the User supplies the Consumer with the Provider's domain authority. When presented with an unknown Provider the Consumer MUST request the Provider's CLR Discovery Document at the path /ims/clr/v1p0/discovery. The Discovery Document MUST be provided over HTTPS with TLS 1.2 or 1.3 protocol.

An example request for the Discovery Document looks like this:

GET https://provider.example.com/ims/clr/v1p0/discovery HTTP/1.1
Accept: application/json
        

And an example response from a Provider that supports all the secured endpoints and allows refresh tokens looks like this:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "name": "Example Provider",
    "image": "https://provider.example.com/logo.png",
    "scopesOffered": [
        "https://purl.imsglobal.org/spec/clr/v1p0/scope/delete",
        "https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly",
        "https://purl.imsglobal.org/spec/clr/v1p0/scope/replace",
        "offline_access"
    ],
    "registrationUrl": "https://auth.example.com/register",
    "authorizationUrl": "https://auth.example.com/authorize",
    "tokenUrl": "https://auth.example.com/token",
    "termsOfServiceUrl": "https://provider.example.com/terms",
    "privacyPolicyUrl": "https://provider.example.com/privacy"
}    
        

Upon receiving a Discovery Document from a Provider, the requester SHOULD respect the Cache-Control and Expires headers if present in the response and configure local cache to match the directives it declares. If directives include one of no-cache, no-store, the requester SHOULD NOT cache the data for future interactions. If directives include max-age or if an Expires header is present, the requester SHOULD cache the Discovery Document data, if valid, up to the expiration indicated, either at the time indicated by the Expires header or max-age seconds from request time.

An Etag header MAY be offered with the Discovery Document response. If so, after a resource's declared expiration, a requester MAY include an If-None-Match header containing the value of the Etag to check if the resource is still fresh. If so the server may return a 304 Not Modified response status code, and a new Expires or Cache-Control header MAY be included, which the requester SHOULD use to update the cache expiration.

Register with Authorization Server

With the OAuth 2.0 Registration URL in hand (from the registrationUrl property of the Discovery Document), the Consumer SHOULD post a registration request to the authorization server. The registration request MUST comply with OAuth 2.0 Dynamic Client Registration Protocol [RFC7591]. The request MUST be sent using HTTPS with TLS 1.2 or 1.3 protocol.

The properties of the JSON body MUST be implemented as described in the following table. All URLs MUST use HTTPS (e.g. https://example.com/logo.png) and all URLs MUST have the same hostname. All required properties MUST be present in the registration request in order for it to be accepted by the authorization server.

Name Required Description
client_name Yes The human-readable name of the Consumer.
client_uri Yes A page that which describes the Consumer.
logo_uri Yes The logo of the Consumer.
tos_uri Yes The Terms of Service of the Consumer.
policy_uri Yes The Privacy Policy of the Consumer.
software_id Yes A unique idenfitier assigned by the Consumer developer. As described in [RFC7591], it SHOULD remain the same for all instances of the Consumer software.
software_version Yes A version identifier string for the Consumer software. The value SHOULD change on any update to the Consumer software.
redirect_uris Yes Array of redirection URI strings for use in the OAuth 2.0 flow.
token_endpoint_auth_method No String indicator of the requested authentication method for the token endpoint. In this specification only "client_secret_basic" is allowed:
  • "client_secret_basic": The Consumer uses the HTTP Basic authentication method as defined in OAuth 2.0.
If omitted, the default is "client_secret_basic".
grant_types No Array of OAuth 2.0 grant type strings. In this specification only "authorization_code" and refresh_token" are allowed:
  • "authorization_code": The authorization code grant type defined in OAuth 2.0.
  • "refresh_token": The refresh token grant type defined in OAuth 2.0.
If omitted, the default behavior is that the client will use only the "authorization_code" grant type.
response_types No Array of OAuth 2.0 response type strings. In this specification only "code" is allowed:
  • "code": The authorization code response type defined in OAuth 2.0.
If omitted, the default is that the client will use only the "code" response type.
scope No In the registration request, this is a string containing a space-separated list of scope values that this Consumer may include when requesting access tokens. If omitted, the authorization server MAY register a Consumer with a default set of scopes. In the registration response, this is a list of scopes the authorization server supports.

The list of scopes that can be requested are shown in this table:

Scope Description
https://purl.imsglobal.org/spec/clr/v1p0/scope/delete Permission to delete CLRs for the User on the Provider platform.
https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly Permission to read CLRs for the User on the Provider platform.
https://purl.imsglobal.org/spec/clr/v1p0/scope/replace Permission to create or update CLRs for the User on the Provider platform.
offline_access Permission to issue a refresh_token along with the access_token.

An example registration request looks like this:

POST https://clrauth.azurewebsites.net/connect/register HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8

{
    "client_name": "Example Consumer",
    "client_uri": "https://consumer.example.com/",
    "logo_uri": "https://consumer.example.com/logo.png",
    "tos_uri": "https://consumer.example.com/terms",
    "policy_uri": "https://consumer.example.com/privacy",
    "software_id": "c88b6ed8-269e-448e-99be-7e2ff47167d1",
    "software_version": "v4.0.30319",
    "redirect_uris": [
        "https://consumer.example.com/Authorize"
    ],
    "token_endpoint_auth_method": "client_secret_basic",
    "grant_types": [
        "authorization_code",
        "refresh_token"
    ],
    "response_types": [
        "code"
    ],
    "scope": "https://purl.imsglobal.org/spec/clr/v1p0/scope/delete https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly https://purl.imsglobal.org/spec/clr/v1p0/scope/replace offline_access"
}
        

If the authorization server accepts the registration request, it will store the information provided in the request and respond HTTP 201 Created with a registration response that includes a set of client credentials for the Consumer to use when requesting access tokens. All the information provided by the Consumer MUST be returned to the Consumer, including modifications to the properties as the authorization server deems necessary. An example response looks like this:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
    "client_id": "4ad36680810420ed",
    "client_secret": "af7aa0d679778e12",
    "client_id_issued_at": 1565715850,
    "client_secret_expires_at": 1597338250,
    "client_name": "Example Consumer",
    "client_uri": "https://consumer.example.com/",
    "logo_uri": "https://consumer.example.com/logo.png",
    "tos_uri": "https://consumer.example.com/terms",
    "policy_uri": "https://consumer.example.com/privacy",
    "software_id": "c88b6ed8-269e-448e-99be-7e2ff47167d1",
    "software_version": "v4.0.30319",
    "redirect_uris": [
        "https://consumer.example.com/Authorize"
    ],
    "token_endpoint_auth_method": "client_secret_basic",
    "grant_types": [
        "authorization_code",
        "refresh_token"
    ],
    "response_types": [
        "code"
    ],
    "scope": "https://purl.imsglobal.org/spec/clr/v1p0/scope/delete https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly https://purl.imsglobal.org/spec/clr/v1p0/scope/replace offline_access"
}    
        

The following table describes the properties present in the client registration response that were not included in the request. These are all REQUIRED properties.

Name Required Description
client_id Yes An OAuth 2.0 client identifier string. The value SHOULD NOT be currently valid for any other registered client.
client_secret Yes An OAuth 2.0 client secret string.
client_id_issued_at Yes The time at which the client_id was issued.
client_secret_expires_at Yes The time at which the client_secret will expire. MAY be 0 for no expiration.

4.4.2. ACG - Obtaining Tokens

Sequence diagram for obtaining access tokens when using the ACG flow

Sequence diagram for obtaining access tokens when using the ACG flow

After the Consumer is registered with the Authorization Server as described in Registration, the Consumer then MAY initiate an authorization request as described in Section 4.2 of the IMS Security Framework [SECURITY FRAMEWORK, 19a] by redirecting the user to the authorizationUrl as declared in the Provider's Discovery Document.

All required properties must be included in the authorization request:

Name Required Description
response_type Yes Value MUST be set to "code".
client_id Yes The Consumer identifier. MUST be the client_id provided in the Registration response.
redirect_uri Yes The Consumer's redirection endpoint. MUST match one of the redirect_uris in the Registration request. Although this is optional in the IMS Security Framework [SECURITY FRAMEWORK, 19a], it is REQUIRED by this specification.
scope Yes The scope of the authorization request. This is a space delimited list of scopes.
Scope Description
https://purl.imsglobal.org/spec/clr/v1p0/scope/delete Permission to delete CLRs for the User on the Provider platform.
https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly Permission to read CLRs for the User on the Provider platform.
https://purl.imsglobal.org/spec/clr/v1p0/scope/replace Permission to create or update CLRs for the User on the Provider platform.
offline_access Permission to issue a refresh_token along with the access_token.
state Yes An opaque value used by the Consumer to maintain state between the request and callback.
code_challenge Yes This is BASE64URL-ENCODE(SHA256(ASCII(code_verifier))).
code_challenge_method Yes This MUST have a value of "S256" to indicate the SHA256 code verifier transformation method is used.

The request MUST be made by redirecting the browser to the OAuth 2.0 Authorization endpoint. The request MUST use HTTPS with TLS 1.2 or 1.3 protocol. An example authorization request looks like this (line breaks are for display purposes only):

HTTP/1.1 302 Found
Location: https://auth.example.com/authorize?
    client_id=4ad36680810420ed
    &response_type=code
    &scope=https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Fdelete%20https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Freadonly%20https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Freplace%20offline_access
    &redirect_uri=https%3A%2F%2Fconsumer.example.com%2FAuthorize
    &state=26357667-94df-4a14-bcb1-f55449ddd98d
    &code_challenge=XeDw66i9FLjn7XaecT_xaFyUWWfUub02Kw118n-jbEs
    &code_challenge_method=S256    
        

If the Authorization Server does not recognize the Consumers's redirection endpoint from a prior connection with this Consumer, the Authorization Server SHOULD throw an error specifying that the redirection endpoint is not applicable to any registered Consumer and registration should be made before proceeding. If the redirect_uri matches a known client_id, the Authorization Server SHOULD present the User with the option to authorize the request. If the User authorizes the Consumer to access their resources with the requested scopes, the Authorization Server MUST redirect the browser back to the redirect_uri with the code, scope, and state query string parameters. An example response looks like this:

HTTP/1.1 302 Found
Location https://consumer.example.com/Authorize?
    code=dcf95d196ae04d60aad7e19d18b9af755a7b593b680055158b8ad9c2975f0d86
    &scope=https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Fdelete%20https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Freadonly%20https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Freplace%20offline_access
    &state=26357667-94df-4a14-bcb1-f55449ddd98d
        

With the supplied code, the Consumer SHOULD attempt to exchange the code for an access_token. The Consumer makes an authorization grant POST request to the tokenUrl as declared in the Provider's Discovery Document. The HTTP POST request MUST include a Basic authorization header with the client_id and client_secret provided in the registration response. The body of the token request MUST include the following form fields:

Name Required Description
grant_type Yes Value MUST be set to "authorization_code".
code Yes The authorization code received from the authorization server.
redirect_uri Yes The Consumer's redirection endpoint.
scope Yes The scope of the access request.
code_verifier Yes The PKCE code verifier.

An example token request look like this (line breaks are for display purposes only):

POST https://auth.example.com/token HTTP/1.1
Authorization: Basic NDE2ZjI1YjhjMWQ5OThlODoxNWQ5MDA4NTk2NDdkZDlm
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
    &code=7c7a73263ee14b2b48073d0615f286ec74f6636689046cb8dbede0b5e87a1338
    &redirect_uri=https%3A%2F%2Fconsumer.example.com%2FAuthorize
    &scope=https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Fdelete+https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Freadonly+https%3A%2F%2Fpurl.imsglobal.org%2Fspec%2Fclr%2Fv1p0%2Fscope%2Freplace+offline_access
    &code_verifier=mYUQfKNgI1lSbY8EqtvNHLPzu0x%2FcVKO3fpWnX4VE5I%3D
        

If the Authorization Server finds the request to be a valid, it generates and returns an access token and optionally a refresh token.

4.4.3. ACG - Authenticating with Tokens

Sequence diagram for authenticating with tokens when using the ACG flow

Sequence diagram for authenticating with tokens when using the ACG flow

After obtaining an access_token and optionally a refresh_token using the method above, a Consumer MAY request resources controlled by the User from the Provider endpoints using the access_token in the HTTP Authorization header [RFC2617] with a Bearer Token [RFC6750]. For example, a "getClrs" would look like this:

GET https://provider.example.com/ims/clr/v1p0/clrs HTTP/1.1
Accept: application/ld+json, application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImRmMTExNWEyZDZiMWRkOWY4YWFiNzllZjUxZWNhOTE4IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1NjU3MzIzNzUsImV4cCI6MTU2NTczNTk3NSwiaXNzIjoiaHR0cHM6Ly9jbHJhdXRoLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImh0dHBzOi8vY2xyYXV0aC5henVyZXdlYnNpdGVzLm5ldC9yZXNvdXJjZXMiLCJEZWxldGVDbHIiLCJHZXRDbHJzIiwiUmVwbGFjZUNsciJdLCJjbGllbnRfaWQiOiI0MTZmMjViOGMxZDk5OGU4Iiwic3ViIjoiODE4NzI3IiwiYXV0aF90aW1lIjoxNTY1NzIwMjAyLCJpZHAiOiJsb2NhbCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6IkFsaWNlU21pdGhAZW1haWwuY29tIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZSI6IkFsaWNlIFNtaXRoIiwic2NvcGUiOlsiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9jbHIvdjFwMC9zY29wZS9kZWxldGUiLCJodHRwczovL3B1cmwuaW1zZ2xvYmFsLm9yZy9zcGVjL2Nsci92MXAwL3Njb3BlL3JlYWRvbmx5IiwiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9jbHIvdjFwMC9zY29wZS9yZXBsYWNlIiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.Bbe1uZVO-2PU541mRyAda8kLk6iU8QA9GSotaEdRZYZmxDxMIa1hiLVqCzB998R4mb7gWayES5yKu6Tn0y0-bcAMm3lBZuIUXkdHmCB7hdczHmYhQT-mcQ6y9v7SAvsmy5pAL4o1CoQEJRFj9T_kWbzqk-mBPmfZRsV-eA6NcOwZVO8N_9GtXkLgLgXdWQUBHOwX7_5IFdLvieTFyMW9NDRf4QHV1etIDs3iu1_Izix7Hi1YE4BmOoSsll07cmAxtilf061pTKLRV6zobrQQ2GO4vdi2nxUrUzcvYd7NV8xSEf_xPpsL_yBqvA2LRf1mt3JZKIjC3arIXlWaJUflJQ
        

If the Provider accepts the request, it will respond with the appropriate payload. For example, the response to the request above may look like this ( clrs is an empty list for brevity):

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "type": "ClrSet",
    "clrs": []
}
        

If the access_token is expired or about to expire, and the Consumer received a refresh_token, the Consumer can use OAuth 2.0 Token Refresh [RFC6749] to get a new access_token and refresh_token without repeating the process described in Obtaining Tokens.

toc | top

5. JSON Payloads

This Section is NOT NORMATIVE.

5.1 "deleteClr" Request Payload

There is no payload for this request.

5.2 "deleteClr" Response Payloads

5.2.1 Response Payloads for the HTTP Codes (204)

There is no payload for these responses i.e. only a HTTP response header is returned.

5.2.2 Response Payloads for the HTTP Codes (400, 401, 403, 404, default)

A tabular description of the response payload is shown in the Table below.

Table 5.2.2 - Tabular representation of the JSON payload for "400, 401, 403, 404, default" response messages for a "deleteClr" operation.
Property Name Multiplicity JSON Data-type Description
    imsx_codeMajor [1..1] Enumeration The code major value (from the corresponding enumerated vocabulary).
    imsx_severity [1..1] Enumeration The severity value (from the corresponding enumerated vocabulary).
    imsx_description [0..1] String A human readable description supplied by the entity creating the status code information.
    imsx_codeMinor [0..1] Object The set of reported code minor status codes.
            imsx_codeMinorField [1..*] Array [ Object ] Each reported code minor status code.
                    imsx_codeMinorFieldName [1..1] String Tiis should contain the identity of the system that has produced the code minor status code report.
                    imsx_codeMinorFieldValue [1..1] Enumeration The code minor status code (this is a value from the corresponding enumerated vocabulary).

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.2.2 - JSON payload example for "400, 401, 403, 404, default" response messages for a "deleteClr" operation.
    {
        "imsx_codeMajor" : "success"|"failure"|"processing"|"unsupported",
        "imsx_severity" : "status"|"warning"|"error",
        "imsx_description" : "..String..",
        "imsx_codeMinor" : {
            "imsx_codeMinorField" : [
                {
                    "imsx_codeMinorFieldName" : "..NormalizedString..",
                    "imsx_codeMinorFieldValue" : "forbidden"|"fullsuccess"|"internal_server_error"|"invalid_data"|"invalid_query_parameter"|"server_busy"|"unauthorizedrequest"
                },
                {...},
                {...}
            ]
        }
    }
                        

5.3 "getAssertion" Request Payload

There is no payload for this request.

5.4 "getAssertion" Response Payloads

5.4.1 Response Payloads for the HTTP Codes (200)

A tabular description of the response payload is shown in the Table below.

Table 5.4.1 - Tabular representation of the JSON payload for "200" response messages for a "getAssertion" operation.
Property Name Multiplicity JSON Data-type Description
    id [1..1] String Unique IRI for the Assertion.
    type [1..1] String The JSON-LD type of this object. Normally 'Assertion'.
    achievement [0..1] Object The achievement being asserted.
            id [1..1] String Unique IRI for the Achievement.
            type [1..1] Enumeration The JSON-LD type of this object. Normally 'Achievement'.
            alignments [0..*] Array [ Object ] Alignment objects describe an alignment between this achievement and a node in an educational framework.
                    id [0..1] String Unique IRI for the object.
                    type [0..1] String The JSON-LD type of this entity. Normally 'Alignment'.
                    educationalFramework [0..1] String The framework to which the resource being described is aligned.
                    targetCode [0..1] String If applicable, a locally unique string identifier that identifies the alignment target within its framework.
                    targetDescription [0..1] String Short description of the alignment target.
                    targetName [1..1] String The name of a node in an established educational framework.
                    targetUrl [1..1] String (Format: uri) The URL of a node in an established educational framework.
            creditsAvailable [0..1] Float Credit hours associated with this entity, or credit hours possible. For example '3.0'.
            description [0..1] String A short description of the achievement. May be the same as name if no description is available.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the Achievement.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            humanCode [0..1] String The code, generally human readable, associated with an achievement.
            name [1..1] String The name of the achievement.
            fieldOfStudy [0..1] String Category, subject, area of study, discipline, or general branch of knowledge. Examples include Business, Education, Psychology, and Technology.
            image [0..1] String IRI of an image representing the achievement. May be a Data URI or the URL where the image may be found.
            issuer [1..1] Object A profile describing the individual or organization that issues assertions of this achievement.
                    id [1..1] String Unique IRI for the Profile.
                    type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
                    address [0..1] Object An address for the individual or organization.
                            id [0..1] String Unique IRI for the Address.
                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                            addressLocality [0..1] String The locality. For example, Mountain View.
                            addressRegion [0..1] String The region. For example, CA.
                            postalCode [0..1] String The postal code. For example, 94043.
                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                    description [0..1] String A short description of the individual or organization.
                    email [0..1] String A contact email address for the individual or organization.
                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                            id [1..1] String Unique IRI for the Endorsement.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                            issuer [1..1] Object The issuer's Profile.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    image [0..1] String Image representing the individual or organization.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
                    name [1..1] String The name of the individual or organization.
                    publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                    revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                            id [1..1] String Unique IRI for the RevocationList.
                            type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                            issuer [0..1] String The id of the Issuer.
                            revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                    telephone [0..1] String Primary phone number for the individual or organization.
                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                    verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
            level [0..1] String Text that describes the level of achievement apart from how the achievement was performed or demonstrated. Examples would include 'Level 1', 'Level 2', 'Level 3', or 'Bachelors', 'Masters', 'Doctoral'.
            requirement [0..1] Object Criteria object describing how to earn the achievement.
                    id [1..1] String The URI of a webpage that describes in a human-readable format the criteria for the Achievement.
                    type [0..1] String The JSON-LD type of this object. Normally 'Criteria'.
                    narrative [0..1] String A narrative of what is needed to earn the achievement. Markdown allowed.
                    extensions [0..*] Set of Proprietary Properties Criteria can be extended with additional properties.
            resultDescriptions [0..*] Array [ Object ] The types of result that may be asserted with this achievement.
                    id [0..1] String Unique IRI for the ResultDescription.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                    name [0..1] String The name of the result.
                    resultMin [0..1] String The minimum possible result that may be asserted.
                    resultMax [0..1] String The maximum possible result that may be asserted.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            specialization [0..1] String Name given to the focus, concentration, or specific area of study defined in the achievement. Examples include Entrepreneurship, Technical Communication, and Finance.
            tags [0..*] Array [ String ] Tags that describe the type of achievement.
            typeLabel [1..1] String The type of achievement matching one from an IMS recommended taxonomy of achievement types, or any text string.
            extensions [0..*] Set of Proprietary Properties The Achievement object can be extended with additional properties.
    creditsEarned [0..1] Float The number of credits earned, generally in semester or quarter credit hours. This field correlates with the Achievement creditsAvailable field.
    endDate [0..1] String (Format: date-time) If present, the assertion is not valid after this date.
    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the assertion.
            id [1..1] String Unique IRI for the Endorsement.
            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
            issuer [1..1] Object The issuer's Profile.
                    id [1..1] String Unique IRI for the Profile.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                    address [0..1] Object An address for the individual or organization.
                            id [0..1] String Unique IRI for the Address.
                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                            addressLocality [0..1] String The locality. For example, Mountain View.
                            addressRegion [0..1] String The region. For example, CA.
                            postalCode [0..1] String The postal code. For example, 94043.
                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                    description [0..1] String A short description of the individual or organization.
                    email [0..1] String A contact email address for the individual or organization.
                    image [0..1] String Image representing the individual or organization.
                    name [1..1] String The name of the individual or organization.
                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                    telephone [0..1] String Primary phone number for the individual or organization.
                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
    evidence [0..*] Array [ Object ] Evidence describing the work that the recipient did to earn the achievement. This can be a webpage that links out to other pages if linking directly to the work is infeasible.
            id [0..1] String The URI of a webpage presenting evidence of achievement.
            type [0..1] String The JSON-LD type of this entity. Normally 'Evidence'.
            artifacts [0..*] Array [ Object ] Artifacts that are part of the evidence.
                    type [0..1] String The JSON-LD type of the object. Normally 'Artifact'.
                    description [0..1] String A description of the artifact.
                    name [1..1] String The name of the artifact.
                    url [0..1] String (Format: uri) IRI of the artifact. May be a Data URI or the URL where the artifact may be found.
            audience [0..1] String A description of the intended audience for a piece of evidence.
            description [0..1] String A longer description of the evidence.
            genre [0..1] String A string that describes the type of evidence. For example, Poetry, Prose, Film.
            name [1..1] String The name of the evidence.
            narrative [0..1] String A narrative that describes the evidence and process of achievement that led to an assertion. Markdown allowed.
    image [0..1] String IRI of an image representing the assertion. May be a Data URI or the URL where the image may be found. If the object is an Open Badges 2.0 assertion, the image is a 'Baked Image' as defined by the Open Badges 2.0 specification.
    issuedOn [0..1] String (Format: date-time) Timestamp of when the achievement was awarded. Required unless the assertion is revoked.
    licenseNumber [0..1] String The license number that was issued with this assertion.
    narrative [0..1] String A narrative that describes the connection between multiple pieces of evidence. Likely only present if evidence is a multi-value array. Markdown allowed.
    recipient [0..1] Object The recipient of the achievement. Required unless the assertion is revoked.
            id [0..1] String Unique IRI for the Identity.
            type [1..1] String The JSON-LD type of this entity. The type should identify the property by which the recipient of an Assertion is identified. This value should be an IRI mapped in the present context. For example, email maps to 'clr:email' and indicates that the identity of the IdentityObject will represent a value of a Profile’s email property. Currently the only supported value for many platforms that implement CLR is email, but other properties are available.
            identity [1..1] String Either the hash of the identity or the plaintext value. If it's possible that the plaintext transmission and storage of the identity value would leak personally identifiable information where there is an expectation of privacy, it is strongly recommended that an IdentityHash be used.
            hashed [1..1] Boolean Whether or not the identity value is hashed.
            salt [0..1] String If the recipient is hashed, this should contain the string used to salt the hash. If this value is not provided, it should be assumed that the hash was not salted.
    results [0..*] Array [ Object ] The results being asserted.
            id [0..1] String Unique IRI for the object.
            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
            name [0..1] String The name of the result.
            value [1..1] String A grade or value representing the result of the performance, or demonstration, of the achievement. For example, 'A' if the recipient received a grade of A in the class.
    revocationReason [0..1] String Optional published reason for revocation, if revoked.
    revoked [0..1] Boolean Defaults to false if Assertion is not referenced from a revokedAssertions list and may be omitted. See RevocationList. If revoked is true, only revoked and id are required properties, and many issuers strip a hosted Assertion down to only those properties when revoked.
    role [0..1] String Role, position, or title of the learner when demonstrating or performing the achievement or evidence of learning being asserted. Examples include 'Student President', 'Intern', 'Captain', etc.
    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
    startDate [0..1] String (Format: date-time) If present, the assertion is not valid before this date.
    term [0..1] String The academic term in which this assertion was achieved.
    verification [0..1] Object Instructions for third parties to verify this assertion. (Alias “verify” may be used in context.)
            id [0..1] String Unique IRI for the Verification.
            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
    extensions [0..*] Set of Proprietary Properties The assertion object can be extended with additional properties.

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.4.1 - JSON payload example for "200" response messages for a "getAssertion" operation.
    {
        "id" : "..NormalizedString..",
        "type" : "..NormalizedString..",
        "achievement" : {
            "id" : "..NormalizedString..",
            "type" : "Achievement"|"BadgeClass"|"CASECompetencyStatement"|"CTDLCredential"|"IMSAssessmentResult"|"PESCTranscript",
            "alignments" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "educationalFramework" : "..String..",
                    "targetCode" : "..String..",
                    "targetDescription" : "..String..",
                    "targetName" : "..String..",
                    "targetUrl" : "..URI.."
                },
                {...},
                {...}
            ],
            "creditsAvailable" : ..Number(Float)..,
            "description" : "..String..",
            "endorsements" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "claim" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "endorsementComment" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "issuedOn" : "..Date/Time..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : "..NormalizedString..",
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    }
                },
                {...},
                {...}
            ],
            "humanCode" : "..String..",
            "name" : "..String..",
            "fieldOfStudy" : "..String..",
            "image" : "..NormalizedString..",
            "issuer" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "address" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "addressCountry" : "..String..",
                    "addressLocality" : "..String..",
                    "addressRegion" : "..String..",
                    "postalCode" : "..String..",
                    "postOfficeBoxNumber" : "..String..",
                    "streetAddress" : "..String.."
                },
                "description" : "..String..",
                "email" : "..String..",
                "endorsements" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "claim" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "endorsementComment" : "..String..",
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "issuedOn" : "..Date/Time..",
                        "issuer" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "address" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "addressCountry" : "..String..",
                                "addressLocality" : "..String..",
                                "addressRegion" : "..String..",
                                "postalCode" : "..String..",
                                "postOfficeBoxNumber" : "..String..",
                                "streetAddress" : "..String.."
                            },
                            "description" : "..String..",
                            "email" : "..String..",
                            "image" : "..NormalizedString..",
                            "name" : "..String..",
                            "publicKey" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "owner" : "..NormalizedString..",
                                "publicKeyPem" : "..String.."
                            },
                            "revocationList" : "..NormalizedString..",
                            "sourcedId" : "..String..",
                            "studentId" : "..String..",
                            "telephone" : "..String..",
                            "url" : "..URI..",
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            },
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        }
                    },
                    {...},
                    {...}
                ],
                "image" : "..NormalizedString..",
                "name" : "..String..",
                "publicKey" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "owner" : "..NormalizedString..",
                    "publicKeyPem" : "..String.."
                },
                "revocationList" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "issuer" : "..NormalizedString..",
                    "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
                },
                "signedEndorsements" : [ "..String..", ..., "..String.." ],
                "sourcedId" : "..String..",
                "studentId" : "..String..",
                "telephone" : "..String..",
                "url" : "..URI..",
                "verification" : {
                    "id" : "..NormalizedString..",
                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                    "creator" : "..URI..",
                    "startsWith" : [ "..String..", ..., "..String.." ],
                    "verificationProperty" : "..String.."
                },
                "..permitted extension point.." : "..user defined value.."
            },
            "level" : "..String..",
            "requirement" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "narrative" : "..String..",
                "..permitted extension point.." : "..user defined value.."
            },
            "resultDescriptions" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                    "name" : "..String..",
                    "resultMin" : "..String..",
                    "resultMax" : "..String.."
                },
                {...},
                {...}
            ],
            "signedEndorsements" : [ "..String..", ..., "..String.." ],
            "specialization" : "..String..",
            "tags" : [ "..String..", ..., "..String.." ],
            "typeLabel" : "..String..",
            "..permitted extension point.." : "..user defined value.."
        },
        "creditsEarned" : ..Number(Float)..,
        "endDate" : "..Date/Time..",
        "endorsements" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "claim" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "endorsementComment" : "..String..",
                    "..permitted extension point.." : "..user defined value.."
                },
                "issuedOn" : "..Date/Time..",
                "issuer" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "address" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "addressCountry" : "..String..",
                        "addressLocality" : "..String..",
                        "addressRegion" : "..String..",
                        "postalCode" : "..String..",
                        "postOfficeBoxNumber" : "..String..",
                        "streetAddress" : "..String.."
                    },
                    "description" : "..String..",
                    "email" : "..String..",
                    "image" : "..NormalizedString..",
                    "name" : "..String..",
                    "publicKey" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "owner" : "..NormalizedString..",
                        "publicKeyPem" : "..String.."
                    },
                    "revocationList" : "..NormalizedString..",
                    "sourcedId" : "..String..",
                    "studentId" : "..String..",
                    "telephone" : "..String..",
                    "url" : "..URI..",
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    },
                    "..permitted extension point.." : "..user defined value.."
                },
                "verification" : {
                    "id" : "..NormalizedString..",
                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                    "creator" : "..URI..",
                    "startsWith" : [ "..String..", ..., "..String.." ],
                    "verificationProperty" : "..String.."
                }
            },
            {...},
            {...}
        ],
        "evidence" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "artifacts" : [
                    {
                        "type" : "..NormalizedString..",
                        "description" : "..String..",
                        "name" : "..String..",
                        "url" : "..URI.."
                    },
                    {...},
                    {...}
                ],
                "audience" : "..String..",
                "description" : "..String..",
                "genre" : "..String..",
                "name" : "..String..",
                "narrative" : "..String.."
            },
            {...},
            {...}
        ],
        "image" : "..NormalizedString..",
        "issuedOn" : "..Date/Time..",
        "licenseNumber" : "..String..",
        "narrative" : "..String..",
        "recipient" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "identity" : "..String..",
            "hashed" : "..Boolean..",
            "salt" : "..String.."
        },
        "results" : [
            {
                "id" : "..NormalizedString..",
                "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                "name" : "..String..",
                "value" : "..String.."
            },
            {...},
            {...}
        ],
        "revocationReason" : "..String..",
        "revoked" : "..Boolean..",
        "role" : "..String..",
        "signedEndorsements" : [ "..String..", ..., "..String.." ],
        "startDate" : "..Date/Time..",
        "term" : "..String..",
        "verification" : {
            "id" : "..NormalizedString..",
            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
            "allowedOrigins" : [ "..String..", ..., "..String.." ],
            "creator" : "..URI..",
            "startsWith" : [ "..String..", ..., "..String.." ],
            "verificationProperty" : "..String.."
        },
        "..permitted extension point.." : "..user defined value.."
    }
                        

5.4.2 Response Payloads for the HTTP Codes (404, default)

There is no payload for these responses i.e. only a HTTP response header is returned.

5.5 "getClrs" Request Payload

There is no payload for this request.

5.6 "getClrs" Response Payloads

5.6.1 Response Payloads for the HTTP Codes (200)

A tabular description of the response payload is shown in the Table below.

Table 5.6.1 - Tabular representation of the JSON payload for "200" response messages for a "getClrs" operation.
Property Name Multiplicity JSON Data-type Description
    id [0..1] String Unique IRI for the ClrSet.
    type [0..1] String The JSON-LD type of this object. Normally 'CLRSet'.
    clrs [0..*] Array [ Object ] An unordered collection of comprehensive learner records.
            id [1..1] String Unique IRI for the CLR.
            type [0..1] String The JSON-LD type of this object. Normally 'CLR'.
            assertions [0..*] Array [ Object ] The learner's asserted achievements.
                    id [1..1] String Unique IRI for the Assertion.
                    type [1..1] String The JSON-LD type of this object. Normally 'Assertion'.
                    achievement [0..1] Object The achievement being asserted.
                            id [1..1] String Unique IRI for the Achievement.
                            type [1..1] Enumeration The JSON-LD type of this object. Normally 'Achievement'.
                            alignments [0..*] Array [ Object ] Alignment objects describe an alignment between this achievement and a node in an educational framework.
                                    id [0..1] String Unique IRI for the object.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'Alignment'.
                                    educationalFramework [0..1] String The framework to which the resource being described is aligned.
                                    targetCode [0..1] String If applicable, a locally unique string identifier that identifies the alignment target within its framework.
                                    targetDescription [0..1] String Short description of the alignment target.
                                    targetName [1..1] String The name of a node in an established educational framework.
                                    targetUrl [1..1] String (Format: uri) The URL of a node in an established educational framework.
                            creditsAvailable [0..1] Float Credit hours associated with this entity, or credit hours possible. For example '3.0'.
                            description [0..1] String A short description of the achievement. May be the same as name if no description is available.
                            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the Achievement.
                                    id [1..1] String Unique IRI for the Endorsement.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                                    issuer [1..1] Object The issuer's Profile.
                                            id [1..1] String Unique IRI for the Profile.
                                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                            address [0..1] Object An address for the individual or organization.
                                                    id [0..1] String Unique IRI for the Address.
                                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                                    addressRegion [0..1] String The region. For example, CA.
                                                    postalCode [0..1] String The postal code. For example, 94043.
                                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                            description [0..1] String A short description of the individual or organization.
                                            email [0..1] String A contact email address for the individual or organization.
                                            image [0..1] String Image representing the individual or organization.
                                            name [1..1] String The name of the individual or organization.
                                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                            telephone [0..1] String Primary phone number for the individual or organization.
                                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                                    id [0..1] String Unique IRI for the Verification.
                                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            humanCode [0..1] String The code, generally human readable, associated with an achievement.
                            name [1..1] String The name of the achievement.
                            fieldOfStudy [0..1] String Category, subject, area of study, discipline, or general branch of knowledge. Examples include Business, Education, Psychology, and Technology.
                            image [0..1] String IRI of an image representing the achievement. May be a Data URI or the URL where the image may be found.
                            issuer [1..1] Object A profile describing the individual or organization that issues assertions of this achievement.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                                            id [1..1] String Unique IRI for the Endorsement.
                                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                                            issuer [1..1] Object The issuer's Profile.
                                                    id [1..1] String Unique IRI for the Profile.
                                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                                    address [0..1] Object An address for the individual or organization.
                                                            id [0..1] String Unique IRI for the Address.
                                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                                            addressRegion [0..1] String The region. For example, CA.
                                                            postalCode [0..1] String The postal code. For example, 94043.
                                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                                    description [0..1] String A short description of the individual or organization.
                                                    email [0..1] String A contact email address for the individual or organization.
                                                    image [0..1] String Image representing the individual or organization.
                                                    name [1..1] String The name of the individual or organization.
                                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                                    telephone [0..1] String Primary phone number for the individual or organization.
                                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                                            id [0..1] String Unique IRI for the Verification.
                                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                                    id [0..1] String Unique IRI for the Verification.
                                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                                            id [1..1] String Unique IRI for the RevocationList.
                                            type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                                            issuer [0..1] String The id of the Issuer.
                                            revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
                                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
                            level [0..1] String Text that describes the level of achievement apart from how the achievement was performed or demonstrated. Examples would include 'Level 1', 'Level 2', 'Level 3', or 'Bachelors', 'Masters', 'Doctoral'.
                            requirement [0..1] Object Criteria object describing how to earn the achievement.
                                    id [1..1] String The URI of a webpage that describes in a human-readable format the criteria for the Achievement.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Criteria'.
                                    narrative [0..1] String A narrative of what is needed to earn the achievement. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties Criteria can be extended with additional properties.
                            resultDescriptions [0..*] Array [ Object ] The types of result that may be asserted with this achievement.
                                    id [0..1] String Unique IRI for the ResultDescription.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                                    name [0..1] String The name of the result.
                                    resultMin [0..1] String The minimum possible result that may be asserted.
                                    resultMax [0..1] String The maximum possible result that may be asserted.
                            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                            specialization [0..1] String Name given to the focus, concentration, or specific area of study defined in the achievement. Examples include Entrepreneurship, Technical Communication, and Finance.
                            tags [0..*] Array [ String ] Tags that describe the type of achievement.
                            typeLabel [1..1] String The type of achievement matching one from an IMS recommended taxonomy of achievement types, or any text string.
                            extensions [0..*] Set of Proprietary Properties The Achievement object can be extended with additional properties.
                    creditsEarned [0..1] Float The number of credits earned, generally in semester or quarter credit hours. This field correlates with the Achievement creditsAvailable field.
                    endDate [0..1] String (Format: date-time) If present, the assertion is not valid after this date.
                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the assertion.
                            id [1..1] String Unique IRI for the Endorsement.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                            issuer [1..1] Object The issuer's Profile.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    image [0..1] String Image representing the individual or organization.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    evidence [0..*] Array [ Object ] Evidence describing the work that the recipient did to earn the achievement. This can be a webpage that links out to other pages if linking directly to the work is infeasible.
                            id [0..1] String The URI of a webpage presenting evidence of achievement.
                            type [0..1] String The JSON-LD type of this entity. Normally 'Evidence'.
                            artifacts [0..*] Array [ Object ] Artifacts that are part of the evidence.
                                    type [0..1] String The JSON-LD type of the object. Normally 'Artifact'.
                                    description [0..1] String A description of the artifact.
                                    name [1..1] String The name of the artifact.
                                    url [0..1] String (Format: uri) IRI of the artifact. May be a Data URI or the URL where the artifact may be found.
                            audience [0..1] String A description of the intended audience for a piece of evidence.
                            description [0..1] String A longer description of the evidence.
                            genre [0..1] String A string that describes the type of evidence. For example, Poetry, Prose, Film.
                            name [1..1] String The name of the evidence.
                            narrative [0..1] String A narrative that describes the evidence and process of achievement that led to an assertion. Markdown allowed.
                    image [0..1] String IRI of an image representing the assertion. May be a Data URI or the URL where the image may be found. If the object is an Open Badges 2.0 assertion, the image is a 'Baked Image' as defined by the Open Badges 2.0 specification.
                    issuedOn [0..1] String (Format: date-time) Timestamp of when the achievement was awarded. Required unless the assertion is revoked.
                    licenseNumber [0..1] String The license number that was issued with this assertion.
                    narrative [0..1] String A narrative that describes the connection between multiple pieces of evidence. Likely only present if evidence is a multi-value array. Markdown allowed.
                    recipient [0..1] Object The recipient of the achievement. Required unless the assertion is revoked.
                            id [0..1] String Unique IRI for the Identity.
                            type [1..1] String The JSON-LD type of this entity. The type should identify the property by which the recipient of an Assertion is identified. This value should be an IRI mapped in the present context. For example, email maps to 'clr:email' and indicates that the identity of the IdentityObject will represent a value of a Profile’s email property. Currently the only supported value for many platforms that implement CLR is email, but other properties are available.
                            identity [1..1] String Either the hash of the identity or the plaintext value. If it's possible that the plaintext transmission and storage of the identity value would leak personally identifiable information where there is an expectation of privacy, it is strongly recommended that an IdentityHash be used.
                            hashed [1..1] Boolean Whether or not the identity value is hashed.
                            salt [0..1] String If the recipient is hashed, this should contain the string used to salt the hash. If this value is not provided, it should be assumed that the hash was not salted.
                    results [0..*] Array [ Object ] The results being asserted.
                            id [0..1] String Unique IRI for the object.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                            name [0..1] String The name of the result.
                            value [1..1] String A grade or value representing the result of the performance, or demonstration, of the achievement. For example, 'A' if the recipient received a grade of A in the class.
                    revocationReason [0..1] String Optional published reason for revocation, if revoked.
                    revoked [0..1] Boolean Defaults to false if Assertion is not referenced from a revokedAssertions list and may be omitted. See RevocationList. If revoked is true, only revoked and id are required properties, and many issuers strip a hosted Assertion down to only those properties when revoked.
                    role [0..1] String Role, position, or title of the learner when demonstrating or performing the achievement or evidence of learning being asserted. Examples include 'Student President', 'Intern', 'Captain', etc.
                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                    startDate [0..1] String (Format: date-time) If present, the assertion is not valid before this date.
                    term [0..1] String The academic term in which this assertion was achieved.
                    verification [0..1] Object Instructions for third parties to verify this assertion. (Alias “verify” may be used in context.)
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    extensions [0..*] Set of Proprietary Properties The assertion object can be extended with additional properties.
            associations [0..*] Array [ Object ] The set of achievement associations in the CLR.
                    id [0..1] String Unique IRI for the Association.
                    type [0..1] String The JSON-LD type of this object. Normally 'Association'.
                    associationType [1..1] Enumeration The type of the relationship, used to define the alignment between two achievements.
                    identifier [0..1] String An unambiguous, synthetic, globally unique identifier for the Association. This is the primary way in which the exchange identification is achieved.
                    lastChangeDateTime [0..1] String (Format: date-time) A system generated timestamp of the most recent change to this association.
                    sequenceNumber [0..1] Integer This is used to order associated objects. Associations can be created through mapping rather than strict hierarchy. As such the presentation of the list cannot be ordered by the objects in the list. They may be different based on the parent being viewed.
                    sourceId [1..1] String The 'id' of an Achievement or source of the association.
                    targetId [1..1] String The 'id' of another Achievement, or target of the association.
            issuedOn [1..1] String (Format: date-time) Timestamp of when the CLR was published.
            learner [1..1] Object A profile describing the recipient of the achievements.
                    id [1..1] String Unique IRI for the Profile.
                    type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
                    address [0..1] Object An address for the individual or organization.
                            id [0..1] String Unique IRI for the Address.
                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                            addressLocality [0..1] String The locality. For example, Mountain View.
                            addressRegion [0..1] String The region. For example, CA.
                            postalCode [0..1] String The postal code. For example, 94043.
                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                    description [0..1] String A short description of the individual or organization.
                    email [0..1] String A contact email address for the individual or organization.
                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                            id [1..1] String Unique IRI for the Endorsement.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                            issuer [1..1] Object The issuer's Profile.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    image [0..1] String Image representing the individual or organization.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
                    name [1..1] String The name of the individual or organization.
                    publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                    revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                            id [1..1] String Unique IRI for the RevocationList.
                            type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                            issuer [0..1] String The id of the Issuer.
                            revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                    telephone [0..1] String Primary phone number for the individual or organization.
                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                    verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
            publisher [1..1] Object A profile describing the publisher of the CLR.
                    id [1..1] String Unique IRI for the Profile.
                    type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
                    address [0..1] Object An address for the individual or organization.
                            id [0..1] String Unique IRI for the Address.
                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                            addressLocality [0..1] String The locality. For example, Mountain View.
                            addressRegion [0..1] String The region. For example, CA.
                            postalCode [0..1] String The postal code. For example, 94043.
                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                    description [0..1] String A short description of the individual or organization.
                    email [0..1] String A contact email address for the individual or organization.
                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                            id [1..1] String Unique IRI for the Endorsement.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                            issuer [1..1] Object The issuer's Profile.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    image [0..1] String Image representing the individual or organization.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
                    name [1..1] String The name of the individual or organization.
                    publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                    revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                            id [1..1] String Unique IRI for the RevocationList.
                            type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                            issuer [0..1] String The id of the Issuer.
                            revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                    telephone [0..1] String Primary phone number for the individual or organization.
                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                    verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
            signedAssertions [0..*] Array [ String ] Signed assertions in JWS Compact Serialization format.

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.6.1 - JSON payload example for "200" response messages for a "getClrs" operation.
    {
        "id" : "..NormalizedString..",
        "type" : "..NormalizedString..",
        "clrs" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "assertions" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "achievement" : {
                            "id" : "..NormalizedString..",
                            "type" : "Achievement"|"BadgeClass"|"CASECompetencyStatement"|"CTDLCredential"|"IMSAssessmentResult"|"PESCTranscript",
                            "alignments" : [
                                {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "educationalFramework" : "..String..",
                                    "targetCode" : "..String..",
                                    "targetDescription" : "..String..",
                                    "targetName" : "..String..",
                                    "targetUrl" : "..URI.."
                                },
                                {...},
                                {...}
                            ],
                            "creditsAvailable" : ..Number(Float)..,
                            "description" : "..String..",
                            "endorsements" : [
                                {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "claim" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "endorsementComment" : "..String..",
                                        "..permitted extension point.." : "..user defined value.."
                                    },
                                    "issuedOn" : "..Date/Time..",
                                    "issuer" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "address" : {
                                            "id" : "..NormalizedString..",
                                            "type" : "..NormalizedString..",
                                            "addressCountry" : "..String..",
                                            "addressLocality" : "..String..",
                                            "addressRegion" : "..String..",
                                            "postalCode" : "..String..",
                                            "postOfficeBoxNumber" : "..String..",
                                            "streetAddress" : "..String.."
                                        },
                                        "description" : "..String..",
                                        "email" : "..String..",
                                        "image" : "..NormalizedString..",
                                        "name" : "..String..",
                                        "publicKey" : {
                                            "id" : "..NormalizedString..",
                                            "type" : "..NormalizedString..",
                                            "owner" : "..NormalizedString..",
                                            "publicKeyPem" : "..String.."
                                        },
                                        "revocationList" : "..NormalizedString..",
                                        "sourcedId" : "..String..",
                                        "studentId" : "..String..",
                                        "telephone" : "..String..",
                                        "url" : "..URI..",
                                        "verification" : {
                                            "id" : "..NormalizedString..",
                                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                            "creator" : "..URI..",
                                            "startsWith" : [ "..String..", ..., "..String.." ],
                                            "verificationProperty" : "..String.."
                                        },
                                        "..permitted extension point.." : "..user defined value.."
                                    },
                                    "verification" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                        "creator" : "..URI..",
                                        "startsWith" : [ "..String..", ..., "..String.." ],
                                        "verificationProperty" : "..String.."
                                    }
                                },
                                {...},
                                {...}
                            ],
                            "humanCode" : "..String..",
                            "name" : "..String..",
                            "fieldOfStudy" : "..String..",
                            "image" : "..NormalizedString..",
                            "issuer" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "address" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "addressCountry" : "..String..",
                                    "addressLocality" : "..String..",
                                    "addressRegion" : "..String..",
                                    "postalCode" : "..String..",
                                    "postOfficeBoxNumber" : "..String..",
                                    "streetAddress" : "..String.."
                                },
                                "description" : "..String..",
                                "email" : "..String..",
                                "endorsements" : [
                                    {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "claim" : {
                                            "id" : "..NormalizedString..",
                                            "type" : "..NormalizedString..",
                                            "endorsementComment" : "..String..",
                                            "..permitted extension point.." : "..user defined value.."
                                        },
                                        "issuedOn" : "..Date/Time..",
                                        "issuer" : {
                                            "id" : "..NormalizedString..",
                                            "type" : "..NormalizedString..",
                                            "address" : {
                                                "id" : "..NormalizedString..",
                                                "type" : "..NormalizedString..",
                                                "addressCountry" : "..String..",
                                                "addressLocality" : "..String..",
                                                "addressRegion" : "..String..",
                                                "postalCode" : "..String..",
                                                "postOfficeBoxNumber" : "..String..",
                                                "streetAddress" : "..String.."
                                            },
                                            "description" : "..String..",
                                            "email" : "..String..",
                                            "image" : "..NormalizedString..",
                                            "name" : "..String..",
                                            "publicKey" : {
                                                "id" : "..NormalizedString..",
                                                "type" : "..NormalizedString..",
                                                "owner" : "..NormalizedString..",
                                                "publicKeyPem" : "..String.."
                                            },
                                            "revocationList" : "..NormalizedString..",
                                            "sourcedId" : "..String..",
                                            "studentId" : "..String..",
                                            "telephone" : "..String..",
                                            "url" : "..URI..",
                                            "verification" : {
                                                "id" : "..NormalizedString..",
                                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                                "creator" : "..URI..",
                                                "startsWith" : [ "..String..", ..., "..String.." ],
                                                "verificationProperty" : "..String.."
                                            },
                                            "..permitted extension point.." : "..user defined value.."
                                        },
                                        "verification" : {
                                            "id" : "..NormalizedString..",
                                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                            "creator" : "..URI..",
                                            "startsWith" : [ "..String..", ..., "..String.." ],
                                            "verificationProperty" : "..String.."
                                        }
                                    },
                                    {...},
                                    {...}
                                ],
                                "image" : "..NormalizedString..",
                                "name" : "..String..",
                                "publicKey" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "owner" : "..NormalizedString..",
                                    "publicKeyPem" : "..String.."
                                },
                                "revocationList" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "issuer" : "..NormalizedString..",
                                    "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
                                },
                                "signedEndorsements" : [ "..String..", ..., "..String.." ],
                                "sourcedId" : "..String..",
                                "studentId" : "..String..",
                                "telephone" : "..String..",
                                "url" : "..URI..",
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                },
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "level" : "..String..",
                            "requirement" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "narrative" : "..String..",
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "resultDescriptions" : [
                                {
                                    "id" : "..NormalizedString..",
                                    "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                                    "name" : "..String..",
                                    "resultMin" : "..String..",
                                    "resultMax" : "..String.."
                                },
                                {...},
                                {...}
                            ],
                            "signedEndorsements" : [ "..String..", ..., "..String.." ],
                            "specialization" : "..String..",
                            "tags" : [ "..String..", ..., "..String.." ],
                            "typeLabel" : "..String..",
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "creditsEarned" : ..Number(Float)..,
                        "endDate" : "..Date/Time..",
                        "endorsements" : [
                            {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "claim" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "endorsementComment" : "..String..",
                                    "..permitted extension point.." : "..user defined value.."
                                },
                                "issuedOn" : "..Date/Time..",
                                "issuer" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "address" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "addressCountry" : "..String..",
                                        "addressLocality" : "..String..",
                                        "addressRegion" : "..String..",
                                        "postalCode" : "..String..",
                                        "postOfficeBoxNumber" : "..String..",
                                        "streetAddress" : "..String.."
                                    },
                                    "description" : "..String..",
                                    "email" : "..String..",
                                    "image" : "..NormalizedString..",
                                    "name" : "..String..",
                                    "publicKey" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "owner" : "..NormalizedString..",
                                        "publicKeyPem" : "..String.."
                                    },
                                    "revocationList" : "..NormalizedString..",
                                    "sourcedId" : "..String..",
                                    "studentId" : "..String..",
                                    "telephone" : "..String..",
                                    "url" : "..URI..",
                                    "verification" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                        "creator" : "..URI..",
                                        "startsWith" : [ "..String..", ..., "..String.." ],
                                        "verificationProperty" : "..String.."
                                    },
                                    "..permitted extension point.." : "..user defined value.."
                                },
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                }
                            },
                            {...},
                            {...}
                        ],
                        "evidence" : [
                            {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "artifacts" : [
                                    {
                                        "type" : "..NormalizedString..",
                                        "description" : "..String..",
                                        "name" : "..String..",
                                        "url" : "..URI.."
                                    },
                                    {...},
                                    {...}
                                ],
                                "audience" : "..String..",
                                "description" : "..String..",
                                "genre" : "..String..",
                                "name" : "..String..",
                                "narrative" : "..String.."
                            },
                            {...},
                            {...}
                        ],
                        "image" : "..NormalizedString..",
                        "issuedOn" : "..Date/Time..",
                        "licenseNumber" : "..String..",
                        "narrative" : "..String..",
                        "recipient" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "identity" : "..String..",
                            "hashed" : "..Boolean..",
                            "salt" : "..String.."
                        },
                        "results" : [
                            {
                                "id" : "..NormalizedString..",
                                "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                                "name" : "..String..",
                                "value" : "..String.."
                            },
                            {...},
                            {...}
                        ],
                        "revocationReason" : "..String..",
                        "revoked" : "..Boolean..",
                        "role" : "..String..",
                        "signedEndorsements" : [ "..String..", ..., "..String.." ],
                        "startDate" : "..Date/Time..",
                        "term" : "..String..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    {...},
                    {...}
                ],
                "associations" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "associationType" : "exactMatchOf"|"exemplar"|"hasSkillLevel"|"isChildOf"|"isPartOf"|"isPeerOf"|"isRelatedTo"|"precedes"|"replacedBy",
                        "identifier" : "..String..",
                        "lastChangeDateTime" : "..Date/Time..",
                        "sequenceNumber" : ..Number(Integer)..,
                        "sourceId" : "..NormalizedString..",
                        "targetId" : "..NormalizedString.."
                    },
                    {...},
                    {...}
                ],
                "issuedOn" : "..Date/Time..",
                "learner" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "address" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "addressCountry" : "..String..",
                        "addressLocality" : "..String..",
                        "addressRegion" : "..String..",
                        "postalCode" : "..String..",
                        "postOfficeBoxNumber" : "..String..",
                        "streetAddress" : "..String.."
                    },
                    "description" : "..String..",
                    "email" : "..String..",
                    "endorsements" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "claim" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "endorsementComment" : "..String..",
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "issuedOn" : "..Date/Time..",
                            "issuer" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "address" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "addressCountry" : "..String..",
                                    "addressLocality" : "..String..",
                                    "addressRegion" : "..String..",
                                    "postalCode" : "..String..",
                                    "postOfficeBoxNumber" : "..String..",
                                    "streetAddress" : "..String.."
                                },
                                "description" : "..String..",
                                "email" : "..String..",
                                "image" : "..NormalizedString..",
                                "name" : "..String..",
                                "publicKey" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "owner" : "..NormalizedString..",
                                    "publicKeyPem" : "..String.."
                                },
                                "revocationList" : "..NormalizedString..",
                                "sourcedId" : "..String..",
                                "studentId" : "..String..",
                                "telephone" : "..String..",
                                "url" : "..URI..",
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                },
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            }
                        },
                        {...},
                        {...}
                    ],
                    "image" : "..NormalizedString..",
                    "name" : "..String..",
                    "publicKey" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "owner" : "..NormalizedString..",
                        "publicKeyPem" : "..String.."
                    },
                    "revocationList" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "issuer" : "..NormalizedString..",
                        "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
                    },
                    "signedEndorsements" : [ "..String..", ..., "..String.." ],
                    "sourcedId" : "..String..",
                    "studentId" : "..String..",
                    "telephone" : "..String..",
                    "url" : "..URI..",
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    },
                    "..permitted extension point.." : "..user defined value.."
                },
                "publisher" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "address" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "addressCountry" : "..String..",
                        "addressLocality" : "..String..",
                        "addressRegion" : "..String..",
                        "postalCode" : "..String..",
                        "postOfficeBoxNumber" : "..String..",
                        "streetAddress" : "..String.."
                    },
                    "description" : "..String..",
                    "email" : "..String..",
                    "endorsements" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "claim" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "endorsementComment" : "..String..",
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "issuedOn" : "..Date/Time..",
                            "issuer" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "address" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "addressCountry" : "..String..",
                                    "addressLocality" : "..String..",
                                    "addressRegion" : "..String..",
                                    "postalCode" : "..String..",
                                    "postOfficeBoxNumber" : "..String..",
                                    "streetAddress" : "..String.."
                                },
                                "description" : "..String..",
                                "email" : "..String..",
                                "image" : "..NormalizedString..",
                                "name" : "..String..",
                                "publicKey" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "owner" : "..NormalizedString..",
                                    "publicKeyPem" : "..String.."
                                },
                                "revocationList" : "..NormalizedString..",
                                "sourcedId" : "..String..",
                                "studentId" : "..String..",
                                "telephone" : "..String..",
                                "url" : "..URI..",
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                },
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            }
                        },
                        {...},
                        {...}
                    ],
                    "image" : "..NormalizedString..",
                    "name" : "..String..",
                    "publicKey" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "owner" : "..NormalizedString..",
                        "publicKeyPem" : "..String.."
                    },
                    "revocationList" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "issuer" : "..NormalizedString..",
                        "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
                    },
                    "signedEndorsements" : [ "..String..", ..., "..String.." ],
                    "sourcedId" : "..String..",
                    "studentId" : "..String..",
                    "telephone" : "..String..",
                    "url" : "..URI..",
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    },
                    "..permitted extension point.." : "..user defined value.."
                },
                "signedAssertions" : [ "..String..", ..., "..String.." ]
            },
            {...},
            {...}
        ]
    }
                        

5.6.2 Response Payloads for the HTTP Codes (400, 401, 403, 404, default)

A tabular description of the response payload is shown in the Table below.

Table 5.6.2 - Tabular representation of the JSON payload for "400, 401, 403, 404, default" response messages for a "getClrs" operation.
Property Name Multiplicity JSON Data-type Description
    imsx_codeMajor [1..1] Enumeration The code major value (from the corresponding enumerated vocabulary).
    imsx_severity [1..1] Enumeration The severity value (from the corresponding enumerated vocabulary).
    imsx_description [0..1] String A human readable description supplied by the entity creating the status code information.
    imsx_codeMinor [0..1] Object The set of reported code minor status codes.
            imsx_codeMinorField [1..*] Array [ Object ] Each reported code minor status code.
                    imsx_codeMinorFieldName [1..1] String Tiis should contain the identity of the system that has produced the code minor status code report.
                    imsx_codeMinorFieldValue [1..1] Enumeration The code minor status code (this is a value from the corresponding enumerated vocabulary).

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.6.2 - JSON payload example for "400, 401, 403, 404, default" response messages for a "getClrs" operation.
    {
        "imsx_codeMajor" : "success"|"failure"|"processing"|"unsupported",
        "imsx_severity" : "status"|"warning"|"error",
        "imsx_description" : "..String..",
        "imsx_codeMinor" : {
            "imsx_codeMinorField" : [
                {
                    "imsx_codeMinorFieldName" : "..NormalizedString..",
                    "imsx_codeMinorFieldValue" : "forbidden"|"fullsuccess"|"internal_server_error"|"invalid_data"|"invalid_query_parameter"|"server_busy"|"unauthorizedrequest"
                },
                {...},
                {...}
            ]
        }
    }
                        

5.7 "getDiscoveryDocument" Request Payload

There is no payload for this request.

5.8 "getDiscoveryDocument" Response Payloads

5.8.1 Response Payloads for the HTTP Codes (200)

A tabular description of the response payload is shown in the Table below.

Table 5.8.1 - Tabular representation of the JSON payload for "200" response messages for a "getDiscoveryDocument" operation.
Property Name Multiplicity JSON Data-type Description
    authorizationUrl [1..1] String (Format: uri) A fully qualifed URL to the provider's OAuth 2.0 Authorization endpoint.
    image [0..1] String An image representing the provider. May be a Data URI or the URL where the image may be found.
    name [1..1] String The user-facing name of the platform providing CLR services.
    privacyPolicyUrl [1..1] String (Format: uri) A fully qualified URL to the provider's privacy policy.
    registrationUrl [1..1] String (Format: uri) A fully qualified URL to the provider's OAuth 2.0 Registration endpoint.
    scopesOffered [1..*] Array [ String (Format: uri) ] An array of OAuth 2.0 Scopes supported by the provider.
    termsOfServiceUrl [1..1] String (Format: uri) A fully qualified URL to the provider's terms of service.
    tokenUrl [1..1] String (Format: uri) A fully qualified URL to the provider's OAuth 2.0 Token endpoint.

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.8.1 - JSON payload example for "200" response messages for a "getDiscoveryDocument" operation.
    {
        "authorizationUrl" : "..URI..",
        "image" : "..NormalizedString..",
        "name" : "..String..",
        "privacyPolicyUrl" : "..URI..",
        "registrationUrl" : "..URI..",
        "scopesOffered" : [ "..URI..", ..., "..URI.." ],
        "termsOfServiceUrl" : "..URI..",
        "tokenUrl" : "..URI.."
    }
                        

5.8.2 Response Payloads for the HTTP Codes (404, 421, default)

There is no payload for these responses i.e. only a HTTP response header is returned.

5.9 "getEndorsement" Request Payload

There is no payload for this request.

5.10 "getEndorsement" Response Payloads

5.10.1 Response Payloads for the HTTP Codes (200)

A tabular description of the response payload is shown in the Table below.

Table 5.10.1 - Tabular representation of the JSON payload for "200" response messages for a "getEndorsement" operation.
Property Name Multiplicity JSON Data-type Description
    id [1..1] String Unique IRI for the Endorsement.
    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
    issuer [1..1] Object The issuer's Profile.
            id [1..1] String Unique IRI for the Profile.
            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
            address [0..1] Object An address for the individual or organization.
                    id [0..1] String Unique IRI for the Address.
                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                    addressLocality [0..1] String The locality. For example, Mountain View.
                    addressRegion [0..1] String The region. For example, CA.
                    postalCode [0..1] String The postal code. For example, 94043.
                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
            description [0..1] String A short description of the individual or organization.
            email [0..1] String A contact email address for the individual or organization.
            image [0..1] String Image representing the individual or organization.
            name [1..1] String The name of the individual or organization.
            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
            telephone [0..1] String Primary phone number for the individual or organization.
            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
            id [0..1] String Unique IRI for the Verification.
            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.10.1 - JSON payload example for "200" response messages for a "getEndorsement" operation.
    {
        "id" : "..NormalizedString..",
        "type" : "..NormalizedString..",
        "claim" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "endorsementComment" : "..String..",
            "..permitted extension point.." : "..user defined value.."
        },
        "issuedOn" : "..Date/Time..",
        "issuer" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "address" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "addressCountry" : "..String..",
                "addressLocality" : "..String..",
                "addressRegion" : "..String..",
                "postalCode" : "..String..",
                "postOfficeBoxNumber" : "..String..",
                "streetAddress" : "..String.."
            },
            "description" : "..String..",
            "email" : "..String..",
            "image" : "..NormalizedString..",
            "name" : "..String..",
            "publicKey" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "owner" : "..NormalizedString..",
                "publicKeyPem" : "..String.."
            },
            "revocationList" : "..NormalizedString..",
            "sourcedId" : "..String..",
            "studentId" : "..String..",
            "telephone" : "..String..",
            "url" : "..URI..",
            "verification" : {
                "id" : "..NormalizedString..",
                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                "creator" : "..URI..",
                "startsWith" : [ "..String..", ..., "..String.." ],
                "verificationProperty" : "..String.."
            },
            "..permitted extension point.." : "..user defined value.."
        },
        "verification" : {
            "id" : "..NormalizedString..",
            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
            "allowedOrigins" : [ "..String..", ..., "..String.." ],
            "creator" : "..URI..",
            "startsWith" : [ "..String..", ..., "..String.." ],
            "verificationProperty" : "..String.."
        }
    }
                        

5.10.2 Response Payloads for the HTTP Codes (404, default)

There is no payload for these responses i.e. only a HTTP response header is returned.

5.11 "getKey" Request Payload

There is no payload for this request.

5.12 "getKey" Response Payloads

5.12.1 Response Payloads for the HTTP Codes (200)

A tabular description of the response payload is shown in the Table below.

Table 5.12.1 - Tabular representation of the JSON payload for "200" response messages for a "getKey" operation.
Property Name Multiplicity JSON Data-type Description
    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.12.1 - JSON payload example for "200" response messages for a "getKey" operation.
    {
        "id" : "..NormalizedString..",
        "type" : "..NormalizedString..",
        "owner" : "..NormalizedString..",
        "publicKeyPem" : "..String.."
    }
                        

5.12.2 Response Payloads for the HTTP Codes (404, default)

There is no payload for these responses i.e. only a HTTP response header is returned.

5.13 "postClr" Request Payload

A tabular description of the request payload is shown in the Table below.

Table 5.13.1 - Tabular representation of the JSON payload for the request message for a "postClr" operation.
Property Name Multiplicity JSON Data-type Description
    id [1..1] String Unique IRI for the CLR.
    type [0..1] String The JSON-LD type of this object. Normally 'CLR'.
    assertions [0..*] Array [ Object ] The learner's asserted achievements.
            id [1..1] String Unique IRI for the Assertion.
            type [1..1] String The JSON-LD type of this object. Normally 'Assertion'.
            achievement [0..1] Object The achievement being asserted.
                    id [1..1] String Unique IRI for the Achievement.
                    type [1..1] Enumeration The JSON-LD type of this object. Normally 'Achievement'.
                    alignments [0..*] Array [ Object ] Alignment objects describe an alignment between this achievement and a node in an educational framework.
                            id [0..1] String Unique IRI for the object.
                            type [0..1] String The JSON-LD type of this entity. Normally 'Alignment'.
                            educationalFramework [0..1] String The framework to which the resource being described is aligned.
                            targetCode [0..1] String If applicable, a locally unique string identifier that identifies the alignment target within its framework.
                            targetDescription [0..1] String Short description of the alignment target.
                            targetName [1..1] String The name of a node in an established educational framework.
                            targetUrl [1..1] String (Format: uri) The URL of a node in an established educational framework.
                    creditsAvailable [0..1] Float Credit hours associated with this entity, or credit hours possible. For example '3.0'.
                    description [0..1] String A short description of the achievement. May be the same as name if no description is available.
                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the Achievement.
                            id [1..1] String Unique IRI for the Endorsement.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                            issuer [1..1] Object The issuer's Profile.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    image [0..1] String Image representing the individual or organization.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    humanCode [0..1] String The code, generally human readable, associated with an achievement.
                    name [1..1] String The name of the achievement.
                    fieldOfStudy [0..1] String Category, subject, area of study, discipline, or general branch of knowledge. Examples include Business, Education, Psychology, and Technology.
                    image [0..1] String IRI of an image representing the achievement. May be a Data URI or the URL where the image may be found.
                    issuer [1..1] Object A profile describing the individual or organization that issues assertions of this achievement.
                            id [1..1] String Unique IRI for the Profile.
                            type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                                    id [1..1] String Unique IRI for the Endorsement.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                                    issuer [1..1] Object The issuer's Profile.
                                            id [1..1] String Unique IRI for the Profile.
                                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                            address [0..1] Object An address for the individual or organization.
                                                    id [0..1] String Unique IRI for the Address.
                                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                                    addressRegion [0..1] String The region. For example, CA.
                                                    postalCode [0..1] String The postal code. For example, 94043.
                                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                            description [0..1] String A short description of the individual or organization.
                                            email [0..1] String A contact email address for the individual or organization.
                                            image [0..1] String Image representing the individual or organization.
                                            name [1..1] String The name of the individual or organization.
                                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                            telephone [0..1] String Primary phone number for the individual or organization.
                                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                                    id [0..1] String Unique IRI for the Verification.
                                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                                    id [1..1] String Unique IRI for the RevocationList.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                                    issuer [0..1] String The id of the Issuer.
                                    revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
                            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
                    level [0..1] String Text that describes the level of achievement apart from how the achievement was performed or demonstrated. Examples would include 'Level 1', 'Level 2', 'Level 3', or 'Bachelors', 'Masters', 'Doctoral'.
                    requirement [0..1] Object Criteria object describing how to earn the achievement.
                            id [1..1] String The URI of a webpage that describes in a human-readable format the criteria for the Achievement.
                            type [0..1] String The JSON-LD type of this object. Normally 'Criteria'.
                            narrative [0..1] String A narrative of what is needed to earn the achievement. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties Criteria can be extended with additional properties.
                    resultDescriptions [0..*] Array [ Object ] The types of result that may be asserted with this achievement.
                            id [0..1] String Unique IRI for the ResultDescription.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                            name [0..1] String The name of the result.
                            resultMin [0..1] String The minimum possible result that may be asserted.
                            resultMax [0..1] String The maximum possible result that may be asserted.
                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                    specialization [0..1] String Name given to the focus, concentration, or specific area of study defined in the achievement. Examples include Entrepreneurship, Technical Communication, and Finance.
                    tags [0..*] Array [ String ] Tags that describe the type of achievement.
                    typeLabel [1..1] String The type of achievement matching one from an IMS recommended taxonomy of achievement types, or any text string.
                    extensions [0..*] Set of Proprietary Properties The Achievement object can be extended with additional properties.
            creditsEarned [0..1] Float The number of credits earned, generally in semester or quarter credit hours. This field correlates with the Achievement creditsAvailable field.
            endDate [0..1] String (Format: date-time) If present, the assertion is not valid after this date.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the assertion.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            evidence [0..*] Array [ Object ] Evidence describing the work that the recipient did to earn the achievement. This can be a webpage that links out to other pages if linking directly to the work is infeasible.
                    id [0..1] String The URI of a webpage presenting evidence of achievement.
                    type [0..1] String The JSON-LD type of this entity. Normally 'Evidence'.
                    artifacts [0..*] Array [ Object ] Artifacts that are part of the evidence.
                            type [0..1] String The JSON-LD type of the object. Normally 'Artifact'.
                            description [0..1] String A description of the artifact.
                            name [1..1] String The name of the artifact.
                            url [0..1] String (Format: uri) IRI of the artifact. May be a Data URI or the URL where the artifact may be found.
                    audience [0..1] String A description of the intended audience for a piece of evidence.
                    description [0..1] String A longer description of the evidence.
                    genre [0..1] String A string that describes the type of evidence. For example, Poetry, Prose, Film.
                    name [1..1] String The name of the evidence.
                    narrative [0..1] String A narrative that describes the evidence and process of achievement that led to an assertion. Markdown allowed.
            image [0..1] String IRI of an image representing the assertion. May be a Data URI or the URL where the image may be found. If the object is an Open Badges 2.0 assertion, the image is a 'Baked Image' as defined by the Open Badges 2.0 specification.
            issuedOn [0..1] String (Format: date-time) Timestamp of when the achievement was awarded. Required unless the assertion is revoked.
            licenseNumber [0..1] String The license number that was issued with this assertion.
            narrative [0..1] String A narrative that describes the connection between multiple pieces of evidence. Likely only present if evidence is a multi-value array. Markdown allowed.
            recipient [0..1] Object The recipient of the achievement. Required unless the assertion is revoked.
                    id [0..1] String Unique IRI for the Identity.
                    type [1..1] String The JSON-LD type of this entity. The type should identify the property by which the recipient of an Assertion is identified. This value should be an IRI mapped in the present context. For example, email maps to 'clr:email' and indicates that the identity of the IdentityObject will represent a value of a Profile’s email property. Currently the only supported value for many platforms that implement CLR is email, but other properties are available.
                    identity [1..1] String Either the hash of the identity or the plaintext value. If it's possible that the plaintext transmission and storage of the identity value would leak personally identifiable information where there is an expectation of privacy, it is strongly recommended that an IdentityHash be used.
                    hashed [1..1] Boolean Whether or not the identity value is hashed.
                    salt [0..1] String If the recipient is hashed, this should contain the string used to salt the hash. If this value is not provided, it should be assumed that the hash was not salted.
            results [0..*] Array [ Object ] The results being asserted.
                    id [0..1] String Unique IRI for the object.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                    name [0..1] String The name of the result.
                    value [1..1] String A grade or value representing the result of the performance, or demonstration, of the achievement. For example, 'A' if the recipient received a grade of A in the class.
            revocationReason [0..1] String Optional published reason for revocation, if revoked.
            revoked [0..1] Boolean Defaults to false if Assertion is not referenced from a revokedAssertions list and may be omitted. See RevocationList. If revoked is true, only revoked and id are required properties, and many issuers strip a hosted Assertion down to only those properties when revoked.
            role [0..1] String Role, position, or title of the learner when demonstrating or performing the achievement or evidence of learning being asserted. Examples include 'Student President', 'Intern', 'Captain', etc.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            startDate [0..1] String (Format: date-time) If present, the assertion is not valid before this date.
            term [0..1] String The academic term in which this assertion was achieved.
            verification [0..1] Object Instructions for third parties to verify this assertion. (Alias “verify” may be used in context.)
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties The assertion object can be extended with additional properties.
    associations [0..*] Array [ Object ] The set of achievement associations in the CLR.
            id [0..1] String Unique IRI for the Association.
            type [0..1] String The JSON-LD type of this object. Normally 'Association'.
            associationType [1..1] Enumeration The type of the relationship, used to define the alignment between two achievements.
            identifier [0..1] String An unambiguous, synthetic, globally unique identifier for the Association. This is the primary way in which the exchange identification is achieved.
            lastChangeDateTime [0..1] String (Format: date-time) A system generated timestamp of the most recent change to this association.
            sequenceNumber [0..1] Integer This is used to order associated objects. Associations can be created through mapping rather than strict hierarchy. As such the presentation of the list cannot be ordered by the objects in the list. They may be different based on the parent being viewed.
            sourceId [1..1] String The 'id' of an Achievement or source of the association.
            targetId [1..1] String The 'id' of another Achievement, or target of the association.
    issuedOn [1..1] String (Format: date-time) Timestamp of when the CLR was published.
    learner [1..1] Object A profile describing the recipient of the achievements.
            id [1..1] String Unique IRI for the Profile.
            type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
            address [0..1] Object An address for the individual or organization.
                    id [0..1] String Unique IRI for the Address.
                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                    addressLocality [0..1] String The locality. For example, Mountain View.
                    addressRegion [0..1] String The region. For example, CA.
                    postalCode [0..1] String The postal code. For example, 94043.
                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
            description [0..1] String A short description of the individual or organization.
            email [0..1] String A contact email address for the individual or organization.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
            name [1..1] String The name of the individual or organization.
            publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
            revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the RevocationList.
                    type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                    issuer [0..1] String The id of the Issuer.
                    revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
            telephone [0..1] String Primary phone number for the individual or organization.
            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
            verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
    publisher [1..1] Object A profile describing the publisher of the CLR.
            id [1..1] String Unique IRI for the Profile.
            type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
            address [0..1] Object An address for the individual or organization.
                    id [0..1] String Unique IRI for the Address.
                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                    addressLocality [0..1] String The locality. For example, Mountain View.
                    addressRegion [0..1] String The region. For example, CA.
                    postalCode [0..1] String The postal code. For example, 94043.
                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
            description [0..1] String A short description of the individual or organization.
            email [0..1] String A contact email address for the individual or organization.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
            name [1..1] String The name of the individual or organization.
            publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
            revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the RevocationList.
                    type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                    issuer [0..1] String The id of the Issuer.
                    revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
            telephone [0..1] String Primary phone number for the individual or organization.
            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
            verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
    signedAssertions [0..*] Array [ String ] Signed assertions in JWS Compact Serialization format.

An example of the request payload is shown in the code block below.

Code 5.13.1 - JSON payload example for the request message for a "postClr" operation.
    {
        "id" : "..NormalizedString..",
        "type" : "..NormalizedString..",
        "assertions" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "achievement" : {
                    "id" : "..NormalizedString..",
                    "type" : "Achievement"|"BadgeClass"|"CASECompetencyStatement"|"CTDLCredential"|"IMSAssessmentResult"|"PESCTranscript",
                    "alignments" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "educationalFramework" : "..String..",
                            "targetCode" : "..String..",
                            "targetDescription" : "..String..",
                            "targetName" : "..String..",
                            "targetUrl" : "..URI.."
                        },
                        {...},
                        {...}
                    ],
                    "creditsAvailable" : ..Number(Float)..,
                    "description" : "..String..",
                    "endorsements" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "claim" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "endorsementComment" : "..String..",
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "issuedOn" : "..Date/Time..",
                            "issuer" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "address" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "addressCountry" : "..String..",
                                    "addressLocality" : "..String..",
                                    "addressRegion" : "..String..",
                                    "postalCode" : "..String..",
                                    "postOfficeBoxNumber" : "..String..",
                                    "streetAddress" : "..String.."
                                },
                                "description" : "..String..",
                                "email" : "..String..",
                                "image" : "..NormalizedString..",
                                "name" : "..String..",
                                "publicKey" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "owner" : "..NormalizedString..",
                                    "publicKeyPem" : "..String.."
                                },
                                "revocationList" : "..NormalizedString..",
                                "sourcedId" : "..String..",
                                "studentId" : "..String..",
                                "telephone" : "..String..",
                                "url" : "..URI..",
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                },
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            }
                        },
                        {...},
                        {...}
                    ],
                    "humanCode" : "..String..",
                    "name" : "..String..",
                    "fieldOfStudy" : "..String..",
                    "image" : "..NormalizedString..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "endorsements" : [
                            {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "claim" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "endorsementComment" : "..String..",
                                    "..permitted extension point.." : "..user defined value.."
                                },
                                "issuedOn" : "..Date/Time..",
                                "issuer" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "address" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "addressCountry" : "..String..",
                                        "addressLocality" : "..String..",
                                        "addressRegion" : "..String..",
                                        "postalCode" : "..String..",
                                        "postOfficeBoxNumber" : "..String..",
                                        "streetAddress" : "..String.."
                                    },
                                    "description" : "..String..",
                                    "email" : "..String..",
                                    "image" : "..NormalizedString..",
                                    "name" : "..String..",
                                    "publicKey" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "owner" : "..NormalizedString..",
                                        "publicKeyPem" : "..String.."
                                    },
                                    "revocationList" : "..NormalizedString..",
                                    "sourcedId" : "..String..",
                                    "studentId" : "..String..",
                                    "telephone" : "..String..",
                                    "url" : "..URI..",
                                    "verification" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                        "creator" : "..URI..",
                                        "startsWith" : [ "..String..", ..., "..String.." ],
                                        "verificationProperty" : "..String.."
                                    },
                                    "..permitted extension point.." : "..user defined value.."
                                },
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                }
                            },
                            {...},
                            {...}
                        ],
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "issuer" : "..NormalizedString..",
                            "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
                        },
                        "signedEndorsements" : [ "..String..", ..., "..String.." ],
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "level" : "..String..",
                    "requirement" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "narrative" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "resultDescriptions" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                            "name" : "..String..",
                            "resultMin" : "..String..",
                            "resultMax" : "..String.."
                        },
                        {...},
                        {...}
                    ],
                    "signedEndorsements" : [ "..String..", ..., "..String.." ],
                    "specialization" : "..String..",
                    "tags" : [ "..String..", ..., "..String.." ],
                    "typeLabel" : "..String..",
                    "..permitted extension point.." : "..user defined value.."
                },
                "creditsEarned" : ..Number(Float)..,
                "endDate" : "..Date/Time..",
                "endorsements" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "claim" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "endorsementComment" : "..String..",
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "issuedOn" : "..Date/Time..",
                        "issuer" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "address" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "addressCountry" : "..String..",
                                "addressLocality" : "..String..",
                                "addressRegion" : "..String..",
                                "postalCode" : "..String..",
                                "postOfficeBoxNumber" : "..String..",
                                "streetAddress" : "..String.."
                            },
                            "description" : "..String..",
                            "email" : "..String..",
                            "image" : "..NormalizedString..",
                            "name" : "..String..",
                            "publicKey" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "owner" : "..NormalizedString..",
                                "publicKeyPem" : "..String.."
                            },
                            "revocationList" : "..NormalizedString..",
                            "sourcedId" : "..String..",
                            "studentId" : "..String..",
                            "telephone" : "..String..",
                            "url" : "..URI..",
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            },
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        }
                    },
                    {...},
                    {...}
                ],
                "evidence" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "artifacts" : [
                            {
                                "type" : "..NormalizedString..",
                                "description" : "..String..",
                                "name" : "..String..",
                                "url" : "..URI.."
                            },
                            {...},
                            {...}
                        ],
                        "audience" : "..String..",
                        "description" : "..String..",
                        "genre" : "..String..",
                        "name" : "..String..",
                        "narrative" : "..String.."
                    },
                    {...},
                    {...}
                ],
                "image" : "..NormalizedString..",
                "issuedOn" : "..Date/Time..",
                "licenseNumber" : "..String..",
                "narrative" : "..String..",
                "recipient" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "identity" : "..String..",
                    "hashed" : "..Boolean..",
                    "salt" : "..String.."
                },
                "results" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                        "name" : "..String..",
                        "value" : "..String.."
                    },
                    {...},
                    {...}
                ],
                "revocationReason" : "..String..",
                "revoked" : "..Boolean..",
                "role" : "..String..",
                "signedEndorsements" : [ "..String..", ..., "..String.." ],
                "startDate" : "..Date/Time..",
                "term" : "..String..",
                "verification" : {
                    "id" : "..NormalizedString..",
                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                    "creator" : "..URI..",
                    "startsWith" : [ "..String..", ..., "..String.." ],
                    "verificationProperty" : "..String.."
                },
                "..permitted extension point.." : "..user defined value.."
            },
            {...},
            {...}
        ],
        "associations" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "associationType" : "exactMatchOf"|"exemplar"|"hasSkillLevel"|"isChildOf"|"isPartOf"|"isPeerOf"|"isRelatedTo"|"precedes"|"replacedBy",
                "identifier" : "..String..",
                "lastChangeDateTime" : "..Date/Time..",
                "sequenceNumber" : ..Number(Integer)..,
                "sourceId" : "..NormalizedString..",
                "targetId" : "..NormalizedString.."
            },
            {...},
            {...}
        ],
        "issuedOn" : "..Date/Time..",
        "learner" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "address" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "addressCountry" : "..String..",
                "addressLocality" : "..String..",
                "addressRegion" : "..String..",
                "postalCode" : "..String..",
                "postOfficeBoxNumber" : "..String..",
                "streetAddress" : "..String.."
            },
            "description" : "..String..",
            "email" : "..String..",
            "endorsements" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "claim" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "endorsementComment" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "issuedOn" : "..Date/Time..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : "..NormalizedString..",
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    }
                },
                {...},
                {...}
            ],
            "image" : "..NormalizedString..",
            "name" : "..String..",
            "publicKey" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "owner" : "..NormalizedString..",
                "publicKeyPem" : "..String.."
            },
            "revocationList" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "issuer" : "..NormalizedString..",
                "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
            },
            "signedEndorsements" : [ "..String..", ..., "..String.." ],
            "sourcedId" : "..String..",
            "studentId" : "..String..",
            "telephone" : "..String..",
            "url" : "..URI..",
            "verification" : {
                "id" : "..NormalizedString..",
                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                "creator" : "..URI..",
                "startsWith" : [ "..String..", ..., "..String.." ],
                "verificationProperty" : "..String.."
            },
            "..permitted extension point.." : "..user defined value.."
        },
        "publisher" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "address" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "addressCountry" : "..String..",
                "addressLocality" : "..String..",
                "addressRegion" : "..String..",
                "postalCode" : "..String..",
                "postOfficeBoxNumber" : "..String..",
                "streetAddress" : "..String.."
            },
            "description" : "..String..",
            "email" : "..String..",
            "endorsements" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "claim" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "endorsementComment" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "issuedOn" : "..Date/Time..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : "..NormalizedString..",
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    }
                },
                {...},
                {...}
            ],
            "image" : "..NormalizedString..",
            "name" : "..String..",
            "publicKey" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "owner" : "..NormalizedString..",
                "publicKeyPem" : "..String.."
            },
            "revocationList" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "issuer" : "..NormalizedString..",
                "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
            },
            "signedEndorsements" : [ "..String..", ..., "..String.." ],
            "sourcedId" : "..String..",
            "studentId" : "..String..",
            "telephone" : "..String..",
            "url" : "..URI..",
            "verification" : {
                "id" : "..NormalizedString..",
                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                "creator" : "..URI..",
                "startsWith" : [ "..String..", ..., "..String.." ],
                "verificationProperty" : "..String.."
            },
            "..permitted extension point.." : "..user defined value.."
        },
        "signedAssertions" : [ "..String..", ..., "..String.." ]
    }
                        

5.14 "postClr" Response Payloads

5.14.1 Response Payloads for the HTTP Codes (200, 201)

A tabular description of the response payload is shown in the Table below.

Table 5.14.1 - Tabular representation of the JSON payload for "200, 201" response messages for a "postClr" operation.
Property Name Multiplicity JSON Data-type Description
    id [1..1] String Unique IRI for the CLR.
    type [0..1] String The JSON-LD type of this object. Normally 'CLR'.
    assertions [0..*] Array [ Object ] The learner's asserted achievements.
            id [1..1] String Unique IRI for the Assertion.
            type [1..1] String The JSON-LD type of this object. Normally 'Assertion'.
            achievement [0..1] Object The achievement being asserted.
                    id [1..1] String Unique IRI for the Achievement.
                    type [1..1] Enumeration The JSON-LD type of this object. Normally 'Achievement'.
                    alignments [0..*] Array [ Object ] Alignment objects describe an alignment between this achievement and a node in an educational framework.
                            id [0..1] String Unique IRI for the object.
                            type [0..1] String The JSON-LD type of this entity. Normally 'Alignment'.
                            educationalFramework [0..1] String The framework to which the resource being described is aligned.
                            targetCode [0..1] String If applicable, a locally unique string identifier that identifies the alignment target within its framework.
                            targetDescription [0..1] String Short description of the alignment target.
                            targetName [1..1] String The name of a node in an established educational framework.
                            targetUrl [1..1] String (Format: uri) The URL of a node in an established educational framework.
                    creditsAvailable [0..1] Float Credit hours associated with this entity, or credit hours possible. For example '3.0'.
                    description [0..1] String A short description of the achievement. May be the same as name if no description is available.
                    endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the Achievement.
                            id [1..1] String Unique IRI for the Endorsement.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                            claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                    id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                    endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                    extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                            issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                            issuer [1..1] Object The issuer's Profile.
                                    id [1..1] String Unique IRI for the Profile.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                    address [0..1] Object An address for the individual or organization.
                                            id [0..1] String Unique IRI for the Address.
                                            type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                            addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                            addressLocality [0..1] String The locality. For example, Mountain View.
                                            addressRegion [0..1] String The region. For example, CA.
                                            postalCode [0..1] String The postal code. For example, 94043.
                                            postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                            streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                    description [0..1] String A short description of the individual or organization.
                                    email [0..1] String A contact email address for the individual or organization.
                                    image [0..1] String Image representing the individual or organization.
                                    name [1..1] String The name of the individual or organization.
                                    publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                            id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                            type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                            owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                            publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                    revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                    sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                    studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                    telephone [0..1] String Primary phone number for the individual or organization.
                                    url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                    verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                    extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                            verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                    humanCode [0..1] String The code, generally human readable, associated with an achievement.
                    name [1..1] String The name of the achievement.
                    fieldOfStudy [0..1] String Category, subject, area of study, discipline, or general branch of knowledge. Examples include Business, Education, Psychology, and Technology.
                    image [0..1] String IRI of an image representing the achievement. May be a Data URI or the URL where the image may be found.
                    issuer [1..1] Object A profile describing the individual or organization that issues assertions of this achievement.
                            id [1..1] String Unique IRI for the Profile.
                            type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                                    id [1..1] String Unique IRI for the Endorsement.
                                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                                    issuer [1..1] Object The issuer's Profile.
                                            id [1..1] String Unique IRI for the Profile.
                                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                                            address [0..1] Object An address for the individual or organization.
                                                    id [0..1] String Unique IRI for the Address.
                                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                                    addressRegion [0..1] String The region. For example, CA.
                                                    postalCode [0..1] String The postal code. For example, 94043.
                                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                                            description [0..1] String A short description of the individual or organization.
                                            email [0..1] String A contact email address for the individual or organization.
                                            image [0..1] String Image representing the individual or organization.
                                            name [1..1] String The name of the individual or organization.
                                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                                            telephone [0..1] String Primary phone number for the individual or organization.
                                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                                    id [0..1] String Unique IRI for the Verification.
                                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                                            id [0..1] String Unique IRI for the Verification.
                                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                                    id [1..1] String Unique IRI for the RevocationList.
                                    type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                                    issuer [0..1] String The id of the Issuer.
                                    revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
                            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
                    level [0..1] String Text that describes the level of achievement apart from how the achievement was performed or demonstrated. Examples would include 'Level 1', 'Level 2', 'Level 3', or 'Bachelors', 'Masters', 'Doctoral'.
                    requirement [0..1] Object Criteria object describing how to earn the achievement.
                            id [1..1] String The URI of a webpage that describes in a human-readable format the criteria for the Achievement.
                            type [0..1] String The JSON-LD type of this object. Normally 'Criteria'.
                            narrative [0..1] String A narrative of what is needed to earn the achievement. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties Criteria can be extended with additional properties.
                    resultDescriptions [0..*] Array [ Object ] The types of result that may be asserted with this achievement.
                            id [0..1] String Unique IRI for the ResultDescription.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                            name [0..1] String The name of the result.
                            resultMin [0..1] String The minimum possible result that may be asserted.
                            resultMax [0..1] String The maximum possible result that may be asserted.
                    signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
                    specialization [0..1] String Name given to the focus, concentration, or specific area of study defined in the achievement. Examples include Entrepreneurship, Technical Communication, and Finance.
                    tags [0..*] Array [ String ] Tags that describe the type of achievement.
                    typeLabel [1..1] String The type of achievement matching one from an IMS recommended taxonomy of achievement types, or any text string.
                    extensions [0..*] Set of Proprietary Properties The Achievement object can be extended with additional properties.
            creditsEarned [0..1] Float The number of credits earned, generally in semester or quarter credit hours. This field correlates with the Achievement creditsAvailable field.
            endDate [0..1] String (Format: date-time) If present, the assertion is not valid after this date.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the assertion.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            evidence [0..*] Array [ Object ] Evidence describing the work that the recipient did to earn the achievement. This can be a webpage that links out to other pages if linking directly to the work is infeasible.
                    id [0..1] String The URI of a webpage presenting evidence of achievement.
                    type [0..1] String The JSON-LD type of this entity. Normally 'Evidence'.
                    artifacts [0..*] Array [ Object ] Artifacts that are part of the evidence.
                            type [0..1] String The JSON-LD type of the object. Normally 'Artifact'.
                            description [0..1] String A description of the artifact.
                            name [1..1] String The name of the artifact.
                            url [0..1] String (Format: uri) IRI of the artifact. May be a Data URI or the URL where the artifact may be found.
                    audience [0..1] String A description of the intended audience for a piece of evidence.
                    description [0..1] String A longer description of the evidence.
                    genre [0..1] String A string that describes the type of evidence. For example, Poetry, Prose, Film.
                    name [1..1] String The name of the evidence.
                    narrative [0..1] String A narrative that describes the evidence and process of achievement that led to an assertion. Markdown allowed.
            image [0..1] String IRI of an image representing the assertion. May be a Data URI or the URL where the image may be found. If the object is an Open Badges 2.0 assertion, the image is a 'Baked Image' as defined by the Open Badges 2.0 specification.
            issuedOn [0..1] String (Format: date-time) Timestamp of when the achievement was awarded. Required unless the assertion is revoked.
            licenseNumber [0..1] String The license number that was issued with this assertion.
            narrative [0..1] String A narrative that describes the connection between multiple pieces of evidence. Likely only present if evidence is a multi-value array. Markdown allowed.
            recipient [0..1] Object The recipient of the achievement. Required unless the assertion is revoked.
                    id [0..1] String Unique IRI for the Identity.
                    type [1..1] String The JSON-LD type of this entity. The type should identify the property by which the recipient of an Assertion is identified. This value should be an IRI mapped in the present context. For example, email maps to 'clr:email' and indicates that the identity of the IdentityObject will represent a value of a Profile’s email property. Currently the only supported value for many platforms that implement CLR is email, but other properties are available.
                    identity [1..1] String Either the hash of the identity or the plaintext value. If it's possible that the plaintext transmission and storage of the identity value would leak personally identifiable information where there is an expectation of privacy, it is strongly recommended that an IdentityHash be used.
                    hashed [1..1] Boolean Whether or not the identity value is hashed.
                    salt [0..1] String If the recipient is hashed, this should contain the string used to salt the hash. If this value is not provided, it should be assumed that the hash was not salted.
            results [0..*] Array [ Object ] The results being asserted.
                    id [0..1] String Unique IRI for the object.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value identifies the type of result.
                    name [0..1] String The name of the result.
                    value [1..1] String A grade or value representing the result of the performance, or demonstration, of the achievement. For example, 'A' if the recipient received a grade of A in the class.
            revocationReason [0..1] String Optional published reason for revocation, if revoked.
            revoked [0..1] Boolean Defaults to false if Assertion is not referenced from a revokedAssertions list and may be omitted. See RevocationList. If revoked is true, only revoked and id are required properties, and many issuers strip a hosted Assertion down to only those properties when revoked.
            role [0..1] String Role, position, or title of the learner when demonstrating or performing the achievement or evidence of learning being asserted. Examples include 'Student President', 'Intern', 'Captain', etc.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            startDate [0..1] String (Format: date-time) If present, the assertion is not valid before this date.
            term [0..1] String The academic term in which this assertion was achieved.
            verification [0..1] Object Instructions for third parties to verify this assertion. (Alias “verify” may be used in context.)
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties The assertion object can be extended with additional properties.
    associations [0..*] Array [ Object ] The set of achievement associations in the CLR.
            id [0..1] String Unique IRI for the Association.
            type [0..1] String The JSON-LD type of this object. Normally 'Association'.
            associationType [1..1] Enumeration The type of the relationship, used to define the alignment between two achievements.
            identifier [0..1] String An unambiguous, synthetic, globally unique identifier for the Association. This is the primary way in which the exchange identification is achieved.
            lastChangeDateTime [0..1] String (Format: date-time) A system generated timestamp of the most recent change to this association.
            sequenceNumber [0..1] Integer This is used to order associated objects. Associations can be created through mapping rather than strict hierarchy. As such the presentation of the list cannot be ordered by the objects in the list. They may be different based on the parent being viewed.
            sourceId [1..1] String The 'id' of an Achievement or source of the association.
            targetId [1..1] String The 'id' of another Achievement, or target of the association.
    issuedOn [1..1] String (Format: date-time) Timestamp of when the CLR was published.
    learner [1..1] Object A profile describing the recipient of the achievements.
            id [1..1] String Unique IRI for the Profile.
            type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
            address [0..1] Object An address for the individual or organization.
                    id [0..1] String Unique IRI for the Address.
                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                    addressLocality [0..1] String The locality. For example, Mountain View.
                    addressRegion [0..1] String The region. For example, CA.
                    postalCode [0..1] String The postal code. For example, 94043.
                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
            description [0..1] String A short description of the individual or organization.
            email [0..1] String A contact email address for the individual or organization.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
            name [1..1] String The name of the individual or organization.
            publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
            revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the RevocationList.
                    type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                    issuer [0..1] String The id of the Issuer.
                    revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
            telephone [0..1] String Primary phone number for the individual or organization.
            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
            verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
    publisher [1..1] Object A profile describing the publisher of the CLR.
            id [1..1] String Unique IRI for the Profile.
            type [0..1] String The JSON-LD type of this object. Normally 'Profile'.
            address [0..1] Object An address for the individual or organization.
                    id [0..1] String Unique IRI for the Address.
                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                    addressLocality [0..1] String The locality. For example, Mountain View.
                    addressRegion [0..1] String The region. For example, CA.
                    postalCode [0..1] String The postal code. For example, 94043.
                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
            description [0..1] String A short description of the individual or organization.
            email [0..1] String A contact email address for the individual or organization.
            endorsements [0..*] Array [ Object ] Allows endorsers to make specific claims about the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the Endorsement.
                    type [1..1] String The JSON-LD type of this entity. Normally 'Endorsement'.
                    claim [0..1] Object An entity, identified by an id and additional properties that the endorser would like to claim about that entity.
                            id [1..1] String The 'id' of the Profile, Achievement, or Assertion being endorsed.
                            type [0..1] String The JSON-LD type of this entity. Normally 'EndorsementClaim'.
                            endorsementComment [0..1] String An endorer's comment about the quality or fitness of the endorsed entity. Markdown allowed.
                            extensions [0..*] Set of Proprietary Properties The EndorsementClaim object can be extended with additional properties.
                    issuedOn [1..1] String (Format: date-time) Timestamp of when the endorsement was published.
                    issuer [1..1] Object The issuer's Profile.
                            id [1..1] String Unique IRI for the Profile.
                            type [1..1] String The JSON-LD type of this entity. Normally 'Profile'.
                            address [0..1] Object An address for the individual or organization.
                                    id [0..1] String Unique IRI for the Address.
                                    type [0..1] String The JSON-LD type of this object. Normally 'Address'.
                                    addressCountry [0..1] String The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code.
                                    addressLocality [0..1] String The locality. For example, Mountain View.
                                    addressRegion [0..1] String The region. For example, CA.
                                    postalCode [0..1] String The postal code. For example, 94043.
                                    postOfficeBoxNumber [0..1] String The post office box number for PO box addresses.
                                    streetAddress [0..1] String The street address. For example, 1600 Amphitheatre Pkwy.
                            description [0..1] String A short description of the individual or organization.
                            email [0..1] String A contact email address for the individual or organization.
                            image [0..1] String Image representing the individual or organization.
                            name [1..1] String The name of the individual or organization.
                            publicKey [0..1] Object The URI for the public key used to verify signed Assertions. If present, the URI must resolve to a CryptographicKey document.
                                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
                            revocationList [0..1] String The URI of the Revocation List used for marking revocation of signed Assertions.
                            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
                            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
                            telephone [0..1] String Primary phone number for the individual or organization.
                            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
                            verification [0..1] Object Instructions for how to verify Assertion issued by this Profile.
                                    id [0..1] String Unique IRI for the Verification.
                                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
                            extensions [0..*] Set of Proprietary Properties Profile can be extended with additional properties.
                    verification [0..1] Object Instructions for third parties to verify this assertion of endorsement.
                            id [0..1] String Unique IRI for the Verification.
                            type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                            allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                            creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                            startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                            verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            image [0..1] String IRI of an image representing the individual or organization. May be a DATA URI or the URL where the image may be found.
            name [1..1] String The name of the individual or organization.
            publicKey [0..1] Object The CrytographicKey object used to verify signed assertions and signed endorsements.
                    id [1..1] String The URI of the CryptographicKey document. Used during signed verification.
                    type [0..1] String The JSON-LD type of this object. Normally 'CryptographicKey'.
                    owner [1..1] String The identifier for the Profile that owns this PUBLIC KEY and the PRIVATE KEY used to sign the assertion or endorsement.
                    publicKeyPem [1..1] String The PUBLIC KEY in PEM format corresponding to the PRIVATE KEY used by the owner to sign the assertion or endorsement. The PEM key encoding is a widely-used method to express public keys, compatible with almost every Secure Sockets Layer library implementation.
            revocationList [0..1] Object The list of revoked assertions and endorsements issued by the individual or organization represented by this profile.
                    id [1..1] String Unique IRI for the RevocationList.
                    type [0..1] String The JSON-LD type of this entity. Normally 'RevocationList'.
                    issuer [0..1] String The id of the Issuer.
                    revokedAssertions [0..*] Array [ String ] The id of an assertion that has been revoked.
            signedEndorsements [0..*] Array [ String ] Signed endorsements in JWS Compact Serialization format.
            sourcedId [0..1] String The individual's unique 'sourcedId' value, which is used for providing interoperability with IMS Learning Information Services (LIS).
            studentId [0..1] String An institution's student identifier for the person. This is frequently issued through a Student Information System.
            telephone [0..1] String Primary phone number for the individual or organization.
            url [0..1] String (Format: uri) Web resource that uniquely represents or belongs to the individual. This may be a resource about the individual, hosting provided by the instution to the individual, or an web resource independently controlled by the individual.
            verification [0..1] Object Instructions for how to verify assertions and endorsements issued by the individual or organization represented by this profile.
                    id [0..1] String Unique IRI for the Verification.
                    type [1..1] Enumeration The JSON-LD type of this object. The strongly typed value indicates the verification method.
                    allowedOrigins [0..*] Array [ String ] The host registered name subcomponent of an allowed origin. Any given id URI will be considered valid.
                    creator [0..1] String (Format: uri) The URI of the CryptographicKey with the public key used to verify the signed Assertion. If not present, verifiers will check publicKey property of the referenced issuer Profile. If present, the URI must match the CryptographicKey id in the issuer Profile as well.
                    startsWith [0..*] Array [ String ] The URI fragment that the verification property must start with. Valid Assertions must have an id within this scope. Multiple values allowed, and Assertions will be considered valid if their id starts with one of these values.
                    verificationProperty [0..1] String The property to be used for verification. Only 'id' is supported. Verifiers will consider 'id' the default value if verificationProperty is omitted or if an issuer Profile has no explicit verification instructions, so it may be safely omitted.
            extensions [0..*] Set of Proprietary Properties The Profile object can be extended with additional properties.
    signedAssertions [0..*] Array [ String ] Signed assertions in JWS Compact Serialization format.

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.14.1 - JSON payload example for "200, 201" response messages for a "postClr" operation.
    {
        "id" : "..NormalizedString..",
        "type" : "..NormalizedString..",
        "assertions" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "achievement" : {
                    "id" : "..NormalizedString..",
                    "type" : "Achievement"|"BadgeClass"|"CASECompetencyStatement"|"CTDLCredential"|"IMSAssessmentResult"|"PESCTranscript",
                    "alignments" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "educationalFramework" : "..String..",
                            "targetCode" : "..String..",
                            "targetDescription" : "..String..",
                            "targetName" : "..String..",
                            "targetUrl" : "..URI.."
                        },
                        {...},
                        {...}
                    ],
                    "creditsAvailable" : ..Number(Float)..,
                    "description" : "..String..",
                    "endorsements" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "claim" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "endorsementComment" : "..String..",
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "issuedOn" : "..Date/Time..",
                            "issuer" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "address" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "addressCountry" : "..String..",
                                    "addressLocality" : "..String..",
                                    "addressRegion" : "..String..",
                                    "postalCode" : "..String..",
                                    "postOfficeBoxNumber" : "..String..",
                                    "streetAddress" : "..String.."
                                },
                                "description" : "..String..",
                                "email" : "..String..",
                                "image" : "..NormalizedString..",
                                "name" : "..String..",
                                "publicKey" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "owner" : "..NormalizedString..",
                                    "publicKeyPem" : "..String.."
                                },
                                "revocationList" : "..NormalizedString..",
                                "sourcedId" : "..String..",
                                "studentId" : "..String..",
                                "telephone" : "..String..",
                                "url" : "..URI..",
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                },
                                "..permitted extension point.." : "..user defined value.."
                            },
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            }
                        },
                        {...},
                        {...}
                    ],
                    "humanCode" : "..String..",
                    "name" : "..String..",
                    "fieldOfStudy" : "..String..",
                    "image" : "..NormalizedString..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "endorsements" : [
                            {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "claim" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "endorsementComment" : "..String..",
                                    "..permitted extension point.." : "..user defined value.."
                                },
                                "issuedOn" : "..Date/Time..",
                                "issuer" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "..NormalizedString..",
                                    "address" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "addressCountry" : "..String..",
                                        "addressLocality" : "..String..",
                                        "addressRegion" : "..String..",
                                        "postalCode" : "..String..",
                                        "postOfficeBoxNumber" : "..String..",
                                        "streetAddress" : "..String.."
                                    },
                                    "description" : "..String..",
                                    "email" : "..String..",
                                    "image" : "..NormalizedString..",
                                    "name" : "..String..",
                                    "publicKey" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "..NormalizedString..",
                                        "owner" : "..NormalizedString..",
                                        "publicKeyPem" : "..String.."
                                    },
                                    "revocationList" : "..NormalizedString..",
                                    "sourcedId" : "..String..",
                                    "studentId" : "..String..",
                                    "telephone" : "..String..",
                                    "url" : "..URI..",
                                    "verification" : {
                                        "id" : "..NormalizedString..",
                                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                        "creator" : "..URI..",
                                        "startsWith" : [ "..String..", ..., "..String.." ],
                                        "verificationProperty" : "..String.."
                                    },
                                    "..permitted extension point.." : "..user defined value.."
                                },
                                "verification" : {
                                    "id" : "..NormalizedString..",
                                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                    "creator" : "..URI..",
                                    "startsWith" : [ "..String..", ..., "..String.." ],
                                    "verificationProperty" : "..String.."
                                }
                            },
                            {...},
                            {...}
                        ],
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "issuer" : "..NormalizedString..",
                            "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
                        },
                        "signedEndorsements" : [ "..String..", ..., "..String.." ],
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "level" : "..String..",
                    "requirement" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "narrative" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "resultDescriptions" : [
                        {
                            "id" : "..NormalizedString..",
                            "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                            "name" : "..String..",
                            "resultMin" : "..String..",
                            "resultMax" : "..String.."
                        },
                        {...},
                        {...}
                    ],
                    "signedEndorsements" : [ "..String..", ..., "..String.." ],
                    "specialization" : "..String..",
                    "tags" : [ "..String..", ..., "..String.." ],
                    "typeLabel" : "..String..",
                    "..permitted extension point.." : "..user defined value.."
                },
                "creditsEarned" : ..Number(Float)..,
                "endDate" : "..Date/Time..",
                "endorsements" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "claim" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "endorsementComment" : "..String..",
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "issuedOn" : "..Date/Time..",
                        "issuer" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "address" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "addressCountry" : "..String..",
                                "addressLocality" : "..String..",
                                "addressRegion" : "..String..",
                                "postalCode" : "..String..",
                                "postOfficeBoxNumber" : "..String..",
                                "streetAddress" : "..String.."
                            },
                            "description" : "..String..",
                            "email" : "..String..",
                            "image" : "..NormalizedString..",
                            "name" : "..String..",
                            "publicKey" : {
                                "id" : "..NormalizedString..",
                                "type" : "..NormalizedString..",
                                "owner" : "..NormalizedString..",
                                "publicKeyPem" : "..String.."
                            },
                            "revocationList" : "..NormalizedString..",
                            "sourcedId" : "..String..",
                            "studentId" : "..String..",
                            "telephone" : "..String..",
                            "url" : "..URI..",
                            "verification" : {
                                "id" : "..NormalizedString..",
                                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                                "creator" : "..URI..",
                                "startsWith" : [ "..String..", ..., "..String.." ],
                                "verificationProperty" : "..String.."
                            },
                            "..permitted extension point.." : "..user defined value.."
                        },
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        }
                    },
                    {...},
                    {...}
                ],
                "evidence" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "artifacts" : [
                            {
                                "type" : "..NormalizedString..",
                                "description" : "..String..",
                                "name" : "..String..",
                                "url" : "..URI.."
                            },
                            {...},
                            {...}
                        ],
                        "audience" : "..String..",
                        "description" : "..String..",
                        "genre" : "..String..",
                        "name" : "..String..",
                        "narrative" : "..String.."
                    },
                    {...},
                    {...}
                ],
                "image" : "..NormalizedString..",
                "issuedOn" : "..Date/Time..",
                "licenseNumber" : "..String..",
                "narrative" : "..String..",
                "recipient" : {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "identity" : "..String..",
                    "hashed" : "..Boolean..",
                    "salt" : "..String.."
                },
                "results" : [
                    {
                        "id" : "..NormalizedString..",
                        "type" : "GradePointAverage"|"LetterGrade"|"Percent"|"PerformanceLevel"|"PredictedScore"|"Result"|"RawScore"|"RubricScore"|"ScaledScore",
                        "name" : "..String..",
                        "value" : "..String.."
                    },
                    {...},
                    {...}
                ],
                "revocationReason" : "..String..",
                "revoked" : "..Boolean..",
                "role" : "..String..",
                "signedEndorsements" : [ "..String..", ..., "..String.." ],
                "startDate" : "..Date/Time..",
                "term" : "..String..",
                "verification" : {
                    "id" : "..NormalizedString..",
                    "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                    "allowedOrigins" : [ "..String..", ..., "..String.." ],
                    "creator" : "..URI..",
                    "startsWith" : [ "..String..", ..., "..String.." ],
                    "verificationProperty" : "..String.."
                },
                "..permitted extension point.." : "..user defined value.."
            },
            {...},
            {...}
        ],
        "associations" : [
            {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "associationType" : "exactMatchOf"|"exemplar"|"hasSkillLevel"|"isChildOf"|"isPartOf"|"isPeerOf"|"isRelatedTo"|"precedes"|"replacedBy",
                "identifier" : "..String..",
                "lastChangeDateTime" : "..Date/Time..",
                "sequenceNumber" : ..Number(Integer)..,
                "sourceId" : "..NormalizedString..",
                "targetId" : "..NormalizedString.."
            },
            {...},
            {...}
        ],
        "issuedOn" : "..Date/Time..",
        "learner" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "address" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "addressCountry" : "..String..",
                "addressLocality" : "..String..",
                "addressRegion" : "..String..",
                "postalCode" : "..String..",
                "postOfficeBoxNumber" : "..String..",
                "streetAddress" : "..String.."
            },
            "description" : "..String..",
            "email" : "..String..",
            "endorsements" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "claim" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "endorsementComment" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "issuedOn" : "..Date/Time..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : "..NormalizedString..",
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    }
                },
                {...},
                {...}
            ],
            "image" : "..NormalizedString..",
            "name" : "..String..",
            "publicKey" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "owner" : "..NormalizedString..",
                "publicKeyPem" : "..String.."
            },
            "revocationList" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "issuer" : "..NormalizedString..",
                "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
            },
            "signedEndorsements" : [ "..String..", ..., "..String.." ],
            "sourcedId" : "..String..",
            "studentId" : "..String..",
            "telephone" : "..String..",
            "url" : "..URI..",
            "verification" : {
                "id" : "..NormalizedString..",
                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                "creator" : "..URI..",
                "startsWith" : [ "..String..", ..., "..String.." ],
                "verificationProperty" : "..String.."
            },
            "..permitted extension point.." : "..user defined value.."
        },
        "publisher" : {
            "id" : "..NormalizedString..",
            "type" : "..NormalizedString..",
            "address" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "addressCountry" : "..String..",
                "addressLocality" : "..String..",
                "addressRegion" : "..String..",
                "postalCode" : "..String..",
                "postOfficeBoxNumber" : "..String..",
                "streetAddress" : "..String.."
            },
            "description" : "..String..",
            "email" : "..String..",
            "endorsements" : [
                {
                    "id" : "..NormalizedString..",
                    "type" : "..NormalizedString..",
                    "claim" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "endorsementComment" : "..String..",
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "issuedOn" : "..Date/Time..",
                    "issuer" : {
                        "id" : "..NormalizedString..",
                        "type" : "..NormalizedString..",
                        "address" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "addressCountry" : "..String..",
                            "addressLocality" : "..String..",
                            "addressRegion" : "..String..",
                            "postalCode" : "..String..",
                            "postOfficeBoxNumber" : "..String..",
                            "streetAddress" : "..String.."
                        },
                        "description" : "..String..",
                        "email" : "..String..",
                        "image" : "..NormalizedString..",
                        "name" : "..String..",
                        "publicKey" : {
                            "id" : "..NormalizedString..",
                            "type" : "..NormalizedString..",
                            "owner" : "..NormalizedString..",
                            "publicKeyPem" : "..String.."
                        },
                        "revocationList" : "..NormalizedString..",
                        "sourcedId" : "..String..",
                        "studentId" : "..String..",
                        "telephone" : "..String..",
                        "url" : "..URI..",
                        "verification" : {
                            "id" : "..NormalizedString..",
                            "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                            "allowedOrigins" : [ "..String..", ..., "..String.." ],
                            "creator" : "..URI..",
                            "startsWith" : [ "..String..", ..., "..String.." ],
                            "verificationProperty" : "..String.."
                        },
                        "..permitted extension point.." : "..user defined value.."
                    },
                    "verification" : {
                        "id" : "..NormalizedString..",
                        "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                        "allowedOrigins" : [ "..String..", ..., "..String.." ],
                        "creator" : "..URI..",
                        "startsWith" : [ "..String..", ..., "..String.." ],
                        "verificationProperty" : "..String.."
                    }
                },
                {...},
                {...}
            ],
            "image" : "..NormalizedString..",
            "name" : "..String..",
            "publicKey" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "owner" : "..NormalizedString..",
                "publicKeyPem" : "..String.."
            },
            "revocationList" : {
                "id" : "..NormalizedString..",
                "type" : "..NormalizedString..",
                "issuer" : "..NormalizedString..",
                "revokedAssertions" : [ "..NormalizedString..", ..., "..NormalizedString.." ]
            },
            "signedEndorsements" : [ "..String..", ..., "..String.." ],
            "sourcedId" : "..String..",
            "studentId" : "..String..",
            "telephone" : "..String..",
            "url" : "..URI..",
            "verification" : {
                "id" : "..NormalizedString..",
                "type" : "Hosted"|"HostedAssertion"|"Signed"|"SignedAssertion",
                "allowedOrigins" : [ "..String..", ..., "..String.." ],
                "creator" : "..URI..",
                "startsWith" : [ "..String..", ..., "..String.." ],
                "verificationProperty" : "..String.."
            },
            "..permitted extension point.." : "..user defined value.."
        },
        "signedAssertions" : [ "..String..", ..., "..String.." ]
    }
                        

5.14.2 Response Payloads for the HTTP Codes (304)

There is no payload for these responses i.e. only a HTTP response header is returned.

5.14.3 Response Payloads for the HTTP Codes (400, 401, 403, 404, default)

A tabular description of the response payload is shown in the Table below.

Table 5.14.3 - Tabular representation of the JSON payload for "400, 401, 403, 404, default" response messages for a "postClr" operation.
Property Name Multiplicity JSON Data-type Description
    imsx_codeMajor [1..1] Enumeration The code major value (from the corresponding enumerated vocabulary).
    imsx_severity [1..1] Enumeration The severity value (from the corresponding enumerated vocabulary).
    imsx_description [0..1] String A human readable description supplied by the entity creating the status code information.
    imsx_codeMinor [0..1] Object The set of reported code minor status codes.
            imsx_codeMinorField [1..*] Array [ Object ] Each reported code minor status code.
                    imsx_codeMinorFieldName [1..1] String Tiis should contain the identity of the system that has produced the code minor status code report.
                    imsx_codeMinorFieldValue [1..1] Enumeration The code minor status code (this is a value from the corresponding enumerated vocabulary).

An example of the response JSON payload is shown in the code block below. The JSON Schema file that can be used to validate this payload is given in Appendix ** ERROR **.

Code 5.14.3 - JSON payload example for "400, 401, 403, 404, default" response messages for a "postClr" operation.
    {
        "imsx_codeMajor" : "success"|"failure"|"processing"|"unsupported",
        "imsx_severity" : "status"|"warning"|"error",
        "imsx_description" : "..String..",
        "imsx_codeMinor" : {
            "imsx_codeMinorField" : [
                {
                    "imsx_codeMinorFieldName" : "..NormalizedString..",
                    "imsx_codeMinorFieldValue" : "forbidden"|"fullsuccess"|"internal_server_error"|"invalid_data"|"invalid_query_parameter"|"server_busy"|"unauthorizedrequest"
                },
                {...},
                {...}
            ]
        }
    }
                        

toc | top

6. Service OpenAPI Description

This Section is NORMATIVE

6.1 General Information

The set of General Information defined in the OpenAPI description, and realised in both the JSON and YAML instances, are listed in Tables 6.1a (version 2) and 6.1b (version 3). The syntax and semantics for this information are described in Appendix A2.1.

Table 6.1a - The Set of General Information Defined in the OpenAPI(2) Description.
Swagger Version 2.0
Specification Title Comprehensive Learner Record Service
Specification Version 1.0
Description The Comprehensive Learner Record Service enables the exchange of data about users and their achievements between a Comprehensive Learner Record Service Provider and the consumers of the associated data. This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service.
Terms of Service 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 IMS or its successors or assigns. THIS API DEFINITION 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 API DEFINITION.
Contact Lisa Mattson (COO), IMS Global (http://www.imsglobal.org). Email: lmattson@imsglobal.org.
License IMS Global - https://www.imsglobal.org/license.html
Host www.imsglobal.org
Base Path /ims/clr/v1p0/
Schemes http, https
Consumes application/json
Produces application/json

Table 6.1b - The Set of General Information Defined in the OpenAPI(3) Description.
OpenAPI Version 3.0.0
Specification Title Comprehensive Learner Record Service
Specification Version 1.0
Description The Comprehensive Learner Record Service enables the exchange of data about users and their achievements between a Comprehensive Learner Record Service Provider and the consumers of the associated data. This service has been described using the IMS Model Driven Specification development approach, this being the Platform Specific Model (PSM) of the service.
Terms of Service https://www.imsglobal.org/license.html
Contact Lisa Mattson (COO), IMS Global (http://www.imsglobal.org). Email: lmattson@imsglobal.org.
License IMS Global - https://www.imsglobal.org/license.html
Servers www.imsglobal.org/ims/clr/v1p0/

6.2 Tags Information

The set of Tags defined in the OpenAPI description, and realised in both the JSON and YAML instances, is listed in Table 6.2. The syntax and semantics for these Tags are described in Appendix A2.2.

Table 6.2 - The Set of Tags Defined in the OpenAPI Description.
Tag Name Description
AssertionsManager The set of service operations that manage access to Assertions for hosted verification. The set of endpoints assigned to this tag are:
ClrsManager The set of service operations that manage access to CLRs. The set of endpoints assigned to this tag are:
DiscoveryManager The set of service operations that manage access to the DiscoveryDocument for dynamic consumer registration. The set of endpoints assigned to this tag are:
EndorsementsManager The set of service operations that manage access to Endorsements for hosted verification. The set of endpoints assigned to this tag are:
KeysManager The set of service operations that manage access to CryptographicKeys for signed verification. The set of endpoints assigned to this tag are:

6.3 Security Information

The OAuth 2 security mode is used for this service. Table 6.3 describes the OpenAPI information for the configuration of the OAuth 2.0. The syntax and semantics for this information are described in Appendix A2.3.

Table 6.3 - The Set of OAuth 2.0 Security Information Defined in the OpenAPI Description.
Security Label OAuth2CCG
Type oauth2
Description OAuth 2.0 Client Credentials authorization per IMS Security Framework.
Flow application
Token URL /token
Scopes
  • https://purl.imsglobal.org/spec/clr/v1p0/scope/delete
  • https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly
  • https://purl.imsglobal.org/spec/clr/v1p0/scope/replace
Global Scope OAuth2CCG : [ https://purl.imsglobal.org/spec/clr/v1p0/scope/delete, https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly, https://purl.imsglobal.org/spec/clr/v1p0/scope/replace ]

6.4 Paths Information

The following Tables describe the OpenAPI information for each of the Paths. The syntax and semantics for these Paths are described in Appendix A2.4.

6.4.1 "/assertions/{id}" Path

The following Table describes the OpenAPI information for the HTTP Verb "GET" on the "/assertions/{id}" Path.

Table 6.4.1a - The Path Details for the 'GET' verb with the '/assertions/{id}' Path.
HTTP Verb: GET
Operation ID getAssertion
Summary The REST "read" request message for the "getAssertion()" API call.
Tags AssertionsManager
Scopes The are no scopes covering access to this endpoint.
Description Returns the current version of the specified Assertion. This operation is used to verify a Hosted Assertion.
Path Placeholders
  • {id} - the unique identifier of the Assertion.
Query Parameters Query parameters are not permitted.
Responses
Name Type Description
200 AssertionDType 'OK' - the resource is returned in the payload.
404 N/A 'Not Found' – there is no resource behind the URI.
default N/A The request was not completed successfully.

6.4.2 "/clrs" Path

The following Table describes the OpenAPI information for the HTTP Verb "GET" on the "/clrs" Path.

Table 6.4.2a - The Path Details for the 'GET' verb with the '/clrs' Path.
HTTP Verb: GET
Operation ID getClrs
Summary The REST "read" request message for the "getClrs()" API call.
Tags ClrsManager
Scopes The scopes that enable access to this endpoint are:
  • https://purl.imsglobal.org/spec/clr/v1p0/scope/readonly
Description The set of CLRs the user is authorized to access are returned in the payload of the response message.
Path Placeholders Path placeholders are not permitted.
Query Parameters
Name Type Multiplicity Default
limit Positive Integer [0..1] 100
offset Non-negative Integer [0..1] -
since Date/Time (ISO 8601) [0..1] -
Responses
Name Type Description
200 ClrSetDType 'OK' - the resource is returned in the payload.
400 imsx_StatusInfoDType 'Bad Request' – the request was invalid or cannot be served. The exact error should be explained in the error payload.
401 imsx_StatusInfoDType 'Unauthorized' – the request requires an user authentication.
403 imsx_StatusInfoDType 'Forbidden' – the server understood the request, but is refusing it or the access is not allowed.
404 imsx_StatusInfoDType 'Not Found' – there are no resources behind the URI.
default imsx_StatusInfoDType The request was not completed successfully. The exact error should be explained in the error payload.

The following Table describes the OpenAPI information for the HTTP Verb "POST" on the "/clrs" Path.

Table 6.4.2b - The Path Details for the 'POST' verb with the '/clrs' Path.
HTTP Verb: POST
Operation ID postClr
Summary The REST "createbp" request message for the "postClr()" API call.
Tags ClrsManager
Scopes The are no scopes covering access to this endpoint.
Description Create or replace a CLR.
Path Placeholders Path placeholders are not permitted.
Query Parameters Query parameters are not permitted.
Responses
Name Type Description
200 ClrDType 'OK' – the resource was successfully replaced.
201 ClrDType 'Created` – the resource was successfully created.
304 N/A