# #####################################################################################
# YAML File Information
# #####################################################################################
# 
# Author:         Colin Smythe (1EdTech)
# Date:           1st May, 2024
# Version:        1.0
# Status:         1EdTech Candidate Final
# Description:    The Access for All Personal Needs and Preferences (AfAPNP) Service defines the service to enable the exchange of the personal needs and preferences configuration data for a user.
# 
# History:        This is the first release of the Access for All Personal Needs and Preferences (AfAPNP) Service.
# 
# License:        IPR and Distribution Notices
# 
#                 This machine readable file is derived from the 1EdTech Access for All Personal Needs and Preferences (AfAPNP) Service Version 1.0
#                 found at https://www.1edtech.org/afapnp and the original 1EdTech schema binding or code base at
#                 https://www.1edtech.org/afapnp.
# 
#                 Recipients of this document are requested to submit, with their comments, notification of any relevant 
#                 patent claims or other intellectual property rights of which they may be aware that might be infringed by
#                 any implementation of the specification set forth in this document, and to provide supporting documentation.
# 
#                 1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might
#                 be claimed to pertain to the implementation or use of the technology described in this document or the extent 
#                 to which any license under such rights might or might not be available; neither does it represent that it has 
#                 made any effort to identify any such rights. Information on 1EdTech procedures with respect to rights in 1EdTech 
#                 specifications can be found at the 1EdTech Intellectual Property Rights web page: https://www.1edtech.org/ipr/imsipr_policyFinal.pdf.
# 
#                 Copyright (c) 1EdTech Consortium 1999-2024. All Rights Reserved.
# 
#                 Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: http://www.1edtech.org/license.html.
# 
#                 Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
# 
#                 The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.
# 
#                 THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS
#                 EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM
#                 NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF
#                 ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
# 
# Source UML File Information
# ===========================
# The source file information must be supplied as an XMI file (without diagram layout information).
# The supported UML authoring tools are:
# (a) Papyrus - v1.1.3 (and later)
# 
# Source XSLT File Information
# ============================
# XSL Generator:    Specificationv1p0_GenerationToolv1.xsl
# XSLT Processor:   Saxon
# Release:          1.0
# Date:             31st October, 2022
# Autogen Engineer: Colin Smythe (1EdTech)
# Autogen Date:     2024-04-23
# 
# 1EdTech Auto-generation Binding Tool-kit (E-BAT)
# ================================================
# This file was auto-generated using the 1EdTech Binding Auto-generation Tool-kit (E-BAT). While every
# attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware
# that this is an experimental tool. Permission is given to make use of this tool. 1EdTech makes no
# claim on the materials created by third party users of this tool. Details on how to use this tool
# are contained in the 1EdTech "E-BAT" documentation available at the 1EdTech web-site:
# https://www.1edtech.org.
# 
# Tool Copyright:  2012-2024  (c) 1EdTech Consortium Inc. All Rights Reserved.
# 
# #####################################################################################

swagger: '2.0'

#####################################################################################
#                               API Information                                     #
#####################################################################################
info: 
    version: '1.0'
    title: Access for All Personal Needs and Preferences (AfAPNP) Service OpenAPI (YAML) Definition
    description: The Access for All Personal Needs and Preferences (AfAPNP) Service defines the service to enable the exchange of the personal needs and preferences configuration data for a user.
    termsOfService: 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: 
        name: Vice President of Operations, 1EdTech
        url: https://www.1edtech.org
        email: operations@1edtech.org
    license: 
        name: 1EdTech Consortium
        url: https://www.1edtech.org/license.html

#####################################################################################
#                   Host, Base Path, Schemes and Content Types                      #
#####################################################################################
host: www.1edtech.org
basePath: /ims/afapnp/v1p0
schemes: 
    - http
    - https
consumes: 
    - application/json
produces: 
    - application/json

#####################################################################################
#                                  Tags                                             #
#####################################################################################
tags: 
    - name: AfAPNPRecordManagement
      description: |
        This interface enables the management of the access to the set of Access for All Personal Needs and Preferences (AFA PNP) records. The set of operations support the creation, deletion and reading of AfA PNP records.

#####################################################################################
#                                 Security                                          #
#####################################################################################
securityDefinitions:
    OAuth2CC:
        type: oauth2
        description: OAuth 2 Client Credentials (as per the requirements in the 1EdTech Security Framework) is to be used.
        flow: application
        tokenUrl: https://www.1edtech.org/token
        scopes: 
            https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.readonly: To enable access to ALL of the READ endpoints for the AfA PNP service.
            https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.writeonly: To enable access to ALL of the PUT/POST/DELETE endpoints for the AfA PNP service.
            https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.lti.readonly: The scope that MUST be used for LTI enabled access to the AfA PNP service.


#####################################################################################
#                                   Paths                                           #
#####################################################################################
paths: 
    /afapnprecords:
        get:
            operationId: getAllAfAPNPRecords
            summary: The REST read request message for the getAllAfAPNPRecords() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To read all of the AfA PNP records in the context of the system implementation i.e. for a schools, district, etc.
            parameters: 
                - name: limit
                  in: query
                  description: |
                      To define the download segmentation value i.e. the maximum number of records to be contained in the response.
                  required: false
                  type: integer
                  format: int32
                  allowEmptyValue: false
                  default: 100
                  minimum: 1
                - name: offset
                  in: query
                  description: |
                      The number of the first record to be supplied in the segmented response message.
                  required: false
                  type: integer
                  format: int32
                  allowEmptyValue: false
                  default: 0
                  minimum: 0
                - name: sort
                  in: query
                  description: |
                      Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard.
                  required: false
                  type: string
                  allowEmptyValue: false
                - name: orderBy
                  in: query
                  description: |
                      The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard.
                  required: false
                  type: string
                  enum: 
                    - asc
                    - desc
                  allowEmptyValue: false
                - name: filter
                  in: query
                  description: |
                      The filtering rules to be applied when identifying the records to be supplied in the response message.
                  required: false
                  type: string
                  allowEmptyValue: false
                - name: fields
                  in: query
                  description: |
                      To identify the range of fields that should be supplied in the response message.
                  required: false
                  type: array
                  items: 
                      type: string
                  collectionFormat: csv
                  allowEmptyValue: false
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.readonly
            x-1edtech-confidentiality: veryrestricted
            responses: 
                "200" : 
                    description: |
                        The requested read has been fully serviced and all of the required data returned.
                    schema: 
                        $ref: "#/definitions/AccessForAllPNPRecordSetDType"
                    headers: 
                        "X-Total-Count" :
                            description: |
                                The total number of resources that are available to be returned
                            type: integer
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "400" : 
                    description: |
                        Either an invalid selection field or invalid filter field was supplied and data filtering on the specified criteria was not possible i.e. 'invalid_selection_field' or 'invalid_filter_field' respectively. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        Either the supplied identifier is unknown in the Service Provider and so the object could not be obtained or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"

    /users/{userSourcedId}/activities/{activitySourcedId}/afapnprecords:
        get:
            operationId: getAfAPNPRecordForUserForActivity
            summary: The REST read request message for the getAfAPNPRecordForUserForActivity() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To read the AfA PNP record the identified user for the specified learning activity. If either the user or activity cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
            parameters: 
                - name: userSourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this user. This is the interoperability identifier for the user.
                  required: true
                  type: string
                - name: activitySourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this activity This is the interoperability identifier for the activity.
                  required: true
                  type: string
                - name: fields
                  in: query
                  description: |
                      To identify the range of fields that should be supplied in the response message.
                  required: false
                  type: array
                  items: 
                      type: string
                  collectionFormat: csv
                  allowEmptyValue: false
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.readonly
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.lti.readonly
            x-1edtech-confidentiality: veryrestricted
            responses: 
                "200" : 
                    description: |
                        The requested read has been fully serviced and all of the required data returned.
                    schema: 
                        $ref: "#/definitions/SingleAFAPNPRecordDType"
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "400" : 
                    description: |
                        Either an invalid selection field or invalid filter field was supplied and data filtering on the specified criteria was not possible i.e. 'invalid_selection_field' or 'invalid_filter_field' respectively. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        Either the supplied identifier is unknown in the Service Provider and so the object could not be obtained or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
        delete:
            operationId: deleteAfAPNPRecordForUserForActivity
            summary: The REST delete request message for the deleteAfAPNPRecordForUserForActivity() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To delete the identified AfA PNP record associated with the identified user. If the specified user and/or AFA PNP record cannot be identified within the service provider then a status code of 'unknownobject' must be reported. Note that the user record is NOT deleted i.e. ONLY the AfA PNP record is deleted.
            parameters: 
                - name: userSourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this user. This is the interoperability identifier for the user.
                  required: true
                  type: string
                - name: activitySourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this activity This is the interoperability identifier for the activity.
                  required: true
                  type: string
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.writeonly
            x-1edtech-confidentiality: undefinedverbtype
            responses: 
                "204" : 
                    description: |
                        The object has been successfully deleted. This would be accompanied by the 'codeMajor/severity' values of 'success/status'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        The supplied identifier is unknown in the Service Provider and so the object could not be deleted or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
        put:
            operationId: createAfAPNPRecordForUserForActivity
            summary: The REST create request message for the createAfAPNPRecordForUserForActivity() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To create an AfA PNP record for the defined user. If the user already exists then the request is rejected with a status code of 'user_already_exists'. This request results in a new user record being created to which AfA PNP records for other activities MAY be added.
            parameters: 
                - name: userSourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this user. This is the interoperability identifier for the user.
                  required: true
                  type: string
                - name: activitySourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this learning activity This is the interoperability identifier for the activity.
                  required: true
                  type: string
                - name: afapnpUserRecord
                  in: body
                  description: |
                      The combination of the user information for the creation of the user record and the first AfA PNP record that is to be associated with that user information.
                  required: true
                  schema: 
                      $ref: "#/definitions/SingleUserAFAPNPRecordDType"
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.writeonly
            x-1edtech-confidentiality: undefinedverbtype
            responses: 
                "201" : 
                    description: |
                        The object has been successfully created. This would be accompanied by the 'codeMajor/severity' values of 'success/status'. The 'codeMinority' code will either be 'replacesuccess' or 'fullsuccess'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        Either the supplied identifier is unknown in the Service Provider and so the object could not be changed or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
        post:
            operationId: addAfAPNPRecordForUserForActivity
            summary: The REST createbp request message for the addAfAPNPRecordForUserForActivity() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To add an AfA PNP record for the specified activity for a user who already has other AfA PNP record(s). If the specified activity is already defined, that record is replaced with the AfA PNP record supplied.
            parameters: 
                - name: userSourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this user. This is the interoperability identifier for the user.
                  required: true
                  type: string
                - name: activitySourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this learning activity This is the interoperability identifier for the activity.
                  required: true
                  type: string
                - name: afapnpRecord
                  in: body
                  description: |
                      Tthe AfA PNP record that is to be added to the set of records for the specified user.
                  required: true
                  schema: 
                      $ref: "#/definitions/SingleAFAPNPRecordDType"
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.writeonly
            x-1edtech-confidentiality: undefinedverbtype
            responses: 
                "201" : 
                    description: |
                        The object has been successfully created. This would be accompanied by the 'codeMajor/severity' values of 'success/status'. The 'codeMinority' code will either be 'replacesuccess' or 'fullsuccess'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        Either the supplied identifier is unknown in the Service Provider and so the object could not be changed or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"

    /users/{userSourcedId}/afapnprecords:
        get:
            operationId: getAfAPNPRecordSetForUser
            summary: The REST read request message for the getAfAPNPRecordSetForUser() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To read the set of AfA PNP records for the identified user. If the specified user cannot be identified within the service provider then a status code of 'unknownobject' must be reported.
            parameters: 
                - name: userSourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this user. This is the interoperability identifier for the user.
                  required: true
                  type: string
                - name: limit
                  in: query
                  description: |
                      To define the download segmentation value i.e. the maximum number of records to be contained in the response.
                  required: false
                  type: integer
                  format: int32
                  allowEmptyValue: false
                  default: 100
                  minimum: 1
                - name: offset
                  in: query
                  description: |
                      The number of the first record to be supplied in the segmented response message.
                  required: false
                  type: integer
                  format: int32
                  allowEmptyValue: false
                  default: 0
                  minimum: 0
                - name: sort
                  in: query
                  description: |
                      Identifies the sort criteria to be used for the records in the response message. Use with the orderBy parameter. The sort order should follow the [UNICODE, 16] standard.
                  required: false
                  type: string
                  allowEmptyValue: false
                - name: orderBy
                  in: query
                  description: |
                      The form of ordering for response to the sorted request i.e. ascending (asc) or descending (desc). The sort order should follow the [UNICODE, 16] standard.
                  required: false
                  type: string
                  enum: 
                    - asc
                    - desc
                  allowEmptyValue: false
                - name: filter
                  in: query
                  description: |
                      The filtering rules to be applied when identifying the records to be supplied in the response message.
                  required: false
                  type: string
                  allowEmptyValue: false
                - name: fields
                  in: query
                  description: |
                      To identify the range of fields that should be supplied in the response message.
                  required: false
                  type: array
                  items: 
                      type: string
                  collectionFormat: csv
                  allowEmptyValue: false
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.readonly
            x-1edtech-confidentiality: veryrestricted
            responses: 
                "200" : 
                    description: |
                        The requested read has been fully serviced and all of the required data returned.
                    schema: 
                        $ref: "#/definitions/AccessForAllPNPRecordSetDType"
                    headers: 
                        "X-Total-Count" :
                            description: |
                                The total number of resources that are available to be returned
                            type: integer
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "400" : 
                    description: |
                        Either an invalid selection field or invalid filter field was supplied and data filtering on the specified criteria was not possible i.e. 'invalid_selection_field' or 'invalid_filter_field' respectively. This is accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        Either the supplied identifier is unknown in the Service Provider and so the object could not be obtained or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
        delete:
            operationId: deleteAfAPNPRecordSetForUser
            summary: The REST delete request message for the deleteAfAPNPRecordSetForUser() API call.
            tags: 
                - AfAPNPRecordManagement
            description: |
                To delete all of the AfA PNP records associated with the identified user. If the specified user cannot be identified within the service provider then a status code of 'unknownobject' must be reported. Note that the user record is NOT deleted i.e. ONLY the AFA PNP records are deleted.
            parameters: 
                - name: userSourcedId
                  in: path
                  description: |
                      The unique identifier, GUID, for this user. This is the interoperability identifier for the user.
                  required: true
                  type: string
            security:
                - OAuth2CC:
                    - https://purl.imsglobal.org/spec/afapnp/v1p0/scope/afapnprecord.writeonly
            x-1edtech-confidentiality: undefinedverbtype
            responses: 
                "204" : 
                    description: |
                        The object has been successfully deleted. This would be accompanied by the 'codeMajor/severity' values of 'success/status'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "default" : 
                    description: |
                        This is the default payload when none of the other HTTP codes are to be supplied.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "401" : 
                    description: |
                        The request was not correctly authorised i.e. 'unauthorisedrequest'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "403" : 
                    description: |
                        This is used to indicate that the server can be reached and process the request but refuses to take any further action i.e. 'forbidden'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "404" : 
                    description: |
                        The supplied identifier is unknown in the Service Provider and so the object could not be deleted or an invalid GUID has been supplied. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'. The statement 'Unknown Object' should also be presented.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "429" : 
                    description: |
                        The server is receiving too many requests i.e. 'server_busy'. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"
                "500" : 
                    description: |
                        This code should be used only if there is catastrophic error and there is not a more appropriate code i.e. 'internal_server_error'. This would be accompanied by the 'codeMajor/severity' values of 'failure/error'.
                    schema: 
                        $ref: "#/definitions/imsx_StatusInfoDType"


#####################################################################################
#                               Definitions                                         #
#####################################################################################
definitions: 
    AccessForAllPNPDType:
        description: |
            A collection of information that states how a user prefers digital learning resources to be supplied. This is the root container and so identifies all of the available PNP properties.
        type: object
        x-1edtech-privacy:
            - access-mode-required
            - adaptation-type-required
            - at-interoperable
            - educational-complexity-of-adaptation
            - hazard-avoidance
            - input-requirements
            - language-of-adaptation
            - language-of-interface
            - adaptation-detail-required
            - adaptation-media-required
            - educational-level-of-adaptation
            - linguistic-guidance
            - keyword-emphasis
            - keyword-translation
            - simplified-language-portions
            - simplified-graphics
            - item-translation
            - sign-language
            - encouragement
            - additional-testing-time
            - line-reader
            - magnification
            - spoken
            - tactile
            - braille
            - answer-masking
            - keyboard-directions
            - additional-directions
            - long-description
            - captions
            - environment
            - transcript
            - alternative-text
            - audio-description
            - high-contrast
            - layout-single-column
            - text-appearance
            - calculator-on-screen
            - dictionary-on-screen
            - glossary-on-screen
            - thesaurus-on-screen
            - homophone-checker-on-screen
            - note-taking-on-screen
            - visual-organizer-on-screen
            - outliner-on-screen
            - peer-interaction-on-screen
            - spell-checker-on-screen
            - activate-at-initialization-set
            - activate-as-option-set
            - prohibit-set
            - extensions
        x-1edtech-confidentiality: veryrestricted
        x-1edtech-confidentiality-normal: 
            - text-appearance
            - activate-at-initialization-set
            - activate-as-option-set
            - prohibit-set
            - extensions
        x-1edtech-confidentiality-veryrestricted: 
            - access-mode-required
            - adaptation-type-required
            - at-interoperable
            - educational-complexity-of-adaptation
            - hazard-avoidance
            - input-requirements
            - language-of-adaptation
            - language-of-interface
            - adaptation-detail-required
            - adaptation-media-required
            - educational-level-of-adaptation
            - linguistic-guidance
            - keyword-emphasis
            - keyword-translation
            - simplified-language-portions
            - simplified-graphics
            - item-translation
            - sign-language
            - encouragement
            - additional-testing-time
            - line-reader
            - magnification
            - spoken
            - tactile
            - braille
            - answer-masking
            - keyboard-directions
            - additional-directions
            - long-description
            - captions
            - environment
            - transcript
            - alternative-text
            - audio-description
            - high-contrast
            - layout-single-column
            - text-appearance
            - calculator-on-screen
            - dictionary-on-screen
            - glossary-on-screen
            - thesaurus-on-screen
            - homophone-checker-on-screen
            - note-taking-on-screen
            - visual-organizer-on-screen
            - outliner-on-screen
            - peer-interaction-on-screen
            - spell-checker-on-screen
            - activate-at-initialization-set
            - activate-as-option-set
            - prohibit-set
        properties: 
            access-mode-required: 
                description: |
                    Access mode that a user seeks either in an adaptation or an original resource as a replacement for a different access mode. This attribute relates an 'existingAccessMode' to an access mode that the user prefers, called an 'adaptationRequest'. 
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/AccessModeRequiredDType"
            adaptation-type-required: 
                description: |
                    Nature or genre of the adaptation required as a replacement for a specific access mode. This attribute relates an 'existingAccessMode' to an adaptation type that the user prefers, called an 'adaptationRequest'.
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/AdaptationTypeRequiredDType"
            at-interoperable: 
                description: A preference for resources which are compatible with assistive technologies. Resources that are interoperable with AT should be selected whenever possible.  Interoperability is indicated by compliance with WCAG 2.0 checkpoints- 1.1.1, 1.3.1, 1.3.2, 2.4.4, 3.1.1, 3.1.2, 3.3.2, 4.1.1 and 4.1.2. The specific details of the AT are normally provided by a user agent or the operating system.  The example of 'atInteroperable=true' expresses this statement - resources that are interoperable with AT should be selected whenever possible. Model Primitive Datatype = Boolean.
                type: boolean
            educational-complexity-of-adaptation: 
                description: |
                    A preference for a resource that is simplified or enriched relative to another resource that presents the same intellectual content. The example of 'educationalComplexityOfAdaptation=simplified' expresses this statement: Resources that are presented in a simplified form should be selected whenever possible.
                type: string
            hazard-avoidance: 
                description: |
                    A resource having such a characteristic should not be delivered to a user with this preference. The example of 'hazardAvoidance=flashing' expresses this statement: Resources that include flashing visuals should never be presented.
                type: array
                minItems: 0
                items: 
                    type: string
            input-requirements: 
                description: |
                    Single input system that is sufficient to control a resource. The example of 'inputRequirements=fullKeyboardControl' expresses this statement: Resources that are fully usable with keyboard control should be selected whenever possible.
                type: string
            language-of-adaptation: 
                description: |
                    A preference for the language of the adaptation [RFC 4646]. The example of 'languageOfAdaptation=spa' expresses this statement: Resources in Spanish should be selected whenever possible.
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/LanguageModeDType"
            language-of-interface: 
                description: |
                    A preference for the language of the user interface [RFC 4646]. The example of 'languageOfInterface=spa' expresses this statement: User interfaces should be presented in Spanish whenever possible.
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/LanguageModeDType"
            adaptation-detail-required: 
                description: |
                    This attribute relates an 'existingAccessMode' to an adaptation detail that the user prefers, called an 'adaptationRequest'. The example of 'adaptationDetailRequired.existingAccessMode = auditory' an 'adaptationDetailRequired.adaptationRequested = verbatim' expresses this statement: Resources that are auditory should be replaced by verbatim alternatives.
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/AdaptationDetailRequiredDType"
            adaptation-media-required: 
                description: |
                    This attribute relates an 'existingAccessMode' to an adaptation media that the user prefers, called an 'adaptationRequest'. The example of 'adaptationMediaRequired.existingAccessMode = textual' and 'adaptationMediaRequired.adaptationRequested = NIMAS' expresses this statement: Resources that are textual should be replaced by NIMAS-based alternatives.
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/AdaptationMediaRequiredDType"
            educational-level-of-adaptation: 
                description: A preference for the education level of the adaptation. The example of 'educationalLevelOfAdaptation=Grade5' expresses this statement - resources that match education level Grade 5 should be selected whenever possible when used in conjunction with the ASN Educational Level Vocabulary. Model Primitive Datatype = NormalizedString.
                type: array
                minItems: 0
                items: 
                    type: string
            linguistic-guidance: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            keyword-emphasis: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            keyword-translation: 
                $ref: "#/definitions/LanguageModeDType"
            simplified-language-portions: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            simplified-graphics: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            item-translation: 
                $ref: "#/definitions/LanguageModeDType"
            sign-language: 
                $ref: "#/definitions/LanguageModeDType"
            encouragement: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            additional-testing-time: 
                $ref: "#/definitions/AdditionalTestingTimeDType"
            line-reader: 
                $ref: "#/definitions/LineReaderDType"
            magnification: 
                $ref: "#/definitions/MagnificationDType"
            spoken: 
                $ref: "#/definitions/SpokenDType"
            tactile: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            braille: 
                $ref: "#/definitions/BrailleDType"
            answer-masking: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            keyboard-directions: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            additional-directions: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            long-description: 
                $ref: "#/definitions/LongDescriptionDType"
            captions: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            environment: 
                $ref: "#/definitions/EnvironmentDType"
            transcript: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            alternative-text: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            audio-description: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            high-contrast: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            layout-single-column: 
                $ref: "#/definitions/ReplacesAccessModeDType"
            text-appearance: 
                $ref: "#/definitions/TextAppearanceDType"
            calculator-on-screen: 
                $ref: "#/definitions/CalculatorDType"
            dictionary-on-screen: 
                description: The presence of this attribute makes available, on screen, the dictionary tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            glossary-on-screen: 
                description: The presence of this attribute makes available, on screen, the glossary tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            thesaurus-on-screen: 
                description: The presence of this attribute makes available, on screen, the thesaurus tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            homophone-checker-on-screen: 
                description: The presence of this attribute makes available, on screen, the homophone checker tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            note-taking-on-screen: 
                description: The presence of this attribute makes available, on screen, the note taking tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            visual-organizer-on-screen: 
                description: The presence of this attribute makes available, on screen, the visual organizer tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            outliner-on-screen: 
                description: The presence of this attribute makes available, on screen, the outliner tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            peer-interaction-on-screen: 
                description: The presence of this attribute makes available, on screen, the peer interaction tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            spell-checker-on-screen: 
                description: The presence of this attribute makes available, on screen, the spell checker tool. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            activate-at-initialization-set: 
                $ref: "#/definitions/FeatureSetDType"
            activate-as-option-set: 
                $ref: "#/definitions/FeatureSetDType"
            prohibit-set: 
                $ref: "#/definitions/FeatureSetDType"
        additionalProperties: true
    AccessForAllPNPRecordDType:
        description: |
            This is the container for each of the AfA PNP Records.
        type: object
        required: 
            - personSourcedId
            - activitySourcedId
            - access-for-all-pnp
        x-1edtech-privacy:
            - personSourcedId
            - activitySourcedId
            - access-for-all-pnp
        x-1edtech-confidentiality: veryrestricted
        x-1edtech-confidentiality-normal: 
            - personSourcedId
            - activitySourcedId
        x-1edtech-confidentiality-veryrestricted: 
            - access-for-all-pnp
        properties: 
            personSourcedId: 
                $ref: "#/definitions/PersonSourcedIdDType"
            activitySourcedId: 
                description: This is an identifier that has been assigned to the individual as part of the learning process for which the PNP record will be used. Model Primitive Datatype = NormalizedString.
                type: string
            access-for-all-pnp: 
                $ref: "#/definitions/AccessForAllPNPDType"
        additionalProperties: false
    AccessForAllPNPRecordSetDType:
        description: |
            This is the root container for the set AfA PNP Records. The order of the records is not significant and the payload may be empty.
        type: object
        x-1edtech-privacy:
            - access-for-all-pnp-record
        x-1edtech-confidentiality: veryrestricted
        x-1edtech-confidentiality-veryrestricted: 
            - access-for-all-pnp-record
        properties: 
            access-for-all-pnp-record: 
                description: |
                    This is used to contain the description of each of the individual AfA PNP Records.
                type: array
                minItems: 0
                items: 
                    $ref: "#/definitions/AccessForAllPNPRecordDType"
        additionalProperties: false
    AccessModeRequiredDType:
        description: |
            The container for the domain space and range space information for this class. Access mode that a user seeks either in an adaptation or an original resource as a replacement for a different access mode.
        type: object
        required: 
            - existing-access-mode
            - adaptation-request
        x-1edtech-confidentiality: unrestricted
        properties: 
            existing-access-mode: 
                description: |
                    A value, from the AccessMode vocabulary, for the existing access mode.
                type: string
            adaptation-request: 
                description: |
                    A value, from the AccessMode vocabulary, for the new adaptation access mode.
                type: string
        additionalProperties: false
    AdaptationDetailRequiredDType:
        description: |
            The container for the domain space and range space information for this class. This attribute uses different vocabularies for its current mode and adaotation value. 
        type: object
        required: 
            - existing-access-mode
            - adaptation-request
        x-1edtech-confidentiality: unrestricted
        properties: 
            existing-access-mode: 
                description: |
                    A value, from the AdaptationDetail vocabulary, for the existing access mode.
                type: string
            adaptation-request: 
                description: |
                    A value, from the AdaptatonDetail vocabulary, for the new adaptation detail mode.
                type: string
        additionalProperties: false
    AdaptationMediaRequiredDType:
        description: |
            The container for the requirement for a particular type of media.
        type: object
        required: 
            - existing-access-mode
            - adaptation-request
        x-1edtech-confidentiality: unrestricted
        properties: 
            existing-access-mode: 
                description: |
                    A value, from the AdaptationMedia vocabulary, for the existing access mode.
                type: string
            adaptation-request: 
                description: |
                    A value, from the AdaptatonMedia vocabulary, for the new adaptation media mode.
                type: string
        additionalProperties: false
    AdaptationTypeRequiredDType:
        description: |
            Nature or genre of the adaptation required as a replacement for a specific access mode.
        type: object
        required: 
            - existing-access-mode
            - adaptation-request
        x-1edtech-confidentiality: unrestricted
        properties: 
            existing-access-mode: 
                description: |
                    A value, from the AdaptationType vocabulary, for the existing access mode.
                type: string
            adaptation-request: 
                description: |
                    A value, from the AdaptatonType vocabulary, for the new adaptation media mode.
                type: string
        additionalProperties: false
    AdditionalTestingTimeDType:
        description: |
            The container for the set of additional testing time preferences. Only one of the available options can be selected.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            time-multiplier: 
                description: Providing the additional testing time as a multiplier of the set time. Model Primitive Datatype = Float.
                type: number
                format: float
            fixed-minutes: 
                description: Providing the additional testing time as an additional number of minutes. Model Primitive Datatype = Integer.
                type: integer
                format: int32
            unlimited: 
                description: Providing the additional testing time as an unlimited time. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: false
    BrailleDType:
        description: |
            The container for the set of preferences for Braille devices.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            language: 
                description: The native language, defined as per [RFC 3066], to which the Braille conversion will be applied. Model Primitive Datatype = Language.
                type: string
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            delivery-mode: 
                description: |
                    The delivery mode for the Braille device: this is defined as an enumerated vocabulary.
                type: string
                enum: 
                   - refreshable
                   - embossed
                default: refreshable
            grade: 
                description: |
                    The grade, for the encoding, for the Braille device: this is defined as an enumerated vocabulary.
                type: string
                enum: 
                   - 1
                   - 2
                   - 3
                default: 2
            braille-type: 
                description: |
                    The type of Braille to be used.
                type: string
            math-type: 
                description: |
                    The type of Braille to be used for the rendering if Maths: this is defined as an enumerated vocabulary.
                type: string
        additionalProperties: false
    CalculatorDType:
        description: |
            The data-type for the type of calculator tool.
        type: object
        required: 
            - value
        x-1edtech-confidentiality: unrestricted
        properties: 
            calculator-type: 
                description: |
                    The type of calculator that can be used. This consists of an extensible predefined set of types of permitted calculator.
                type: string
            value: 
                description: Model Derived-Primitive Datatype = Empty (mapped to an enumeration value of active).
                type: string
                enum: 
                   - active
        additionalProperties: false
    EnvironmentDType:
        description: |
            The container for the set of preferences for the environment within which the learning exerience is to take place.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            description: 
                description: A human-readable description of the accessibility support environment. Model Primitive Datatype = NormalizedString.
                type: string
            medical: 
                description: A human-readable description of the available medical support. Model Primitive Datatype = NormalizedString.
                type: string
            software: 
                description: A human-readable description of the available accessibility software. Model Primitive Datatype = NormalizedString.
                type: string
            hardware: 
                description: A human-readable description of the available accessibility hardware. Model Primitive Datatype = NormalizedString.
                type: string
            breaks: 
                description: A human-readable description of the available breaks i.e. moments away for the activity itself. Model Primitive Datatype = Boolean.
                type: boolean
        additionalProperties: false
    FeatureSetDType:
        description: |
            This is the container for the set of features whose preferences can be controlled. When a feature is listed in an instance then the preference is to be set as determined by the intention of the contaning parent class.
        type: object
        x-1edtech-privacy:
            - extensions
        x-1edtech-confidentiality: unrestricted
        x-1edtech-confidentiality-normal: 
            - extensions
        properties: 
            linguistic-guidance: 
                description: Used to indicate that the corresponding 'linguistic-guidance' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            keyword-emphasis: 
                description: Used to indicate that the corresponding 'keyword-emphasis' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            keyword-translation: 
                description: Used to indicate that the corresponding 'keyword-translation' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            simplified-language-portions: 
                description: Used to indicate that the corresponding 'simplified-language-portions' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            simplified-graphics: 
                description: Used to indicate that the corresponding 'simplified-graphics' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            item-translation: 
                description: Used to indicate that the corresponding 'item-translation' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            sign-language: 
                description: Used to indicate that the corresponding 'sign-language' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            encouragement: 
                description: Used to indicate that the corresponding 'encouragement' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            additional-testing-time: 
                description: Used to indicate that the corresponding 'additional-testing-time' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            line-reader: 
                description: Used to indicate that the corresponding 'line-reader' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            magnification: 
                description: Used to indicate that the corresponding 'magnification' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            spoken: 
                description: Used to indicate that the corresponding 'spoken' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            tactile: 
                description: Used to indicate that the corresponding 'tactile' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            braille: 
                description: Used to indicate that the corresponding 'braille' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            answer-masking: 
                description: Used to indicate that the corresponding 'answer-masking' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            keyboard-directions: 
                description: Used to indicate that the corresponding 'keyboard-directions' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            additional-directions: 
                description: Used to indicate that the corresponding 'additional-directions' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            long-description: 
                description: Used to indicate that the corresponding 'long-description' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            captions: 
                description: Used to indicate that the corresponding 'captions' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            transcript: 
                description: Used to indicate that the corresponding 'transcript' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            alternative-text: 
                description: Used to indicate that the corresponding 'alternative-text' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            audio-description: 
                description: Used to indicate that the corresponding 'audio-description' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            high-contrast: 
                description: Used to indicate that the corresponding 'high-contrast' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            input-requirements: 
                description: Used to indicate that the corresponding 'input-requirements' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            language-of-interface: 
                description: Used to indicate that the corresponding 'language-of-interface' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            layout-single-column: 
                description: Used to indicate that the corresponding 'layout-single-column' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            text-appearance: 
                description: Used to indicate that the corresponding 'text-appearance' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            calculator-on-screen: 
                description: Used to indicate that the corresponding 'calculator-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            dictionary-on-screen: 
                description: Used to indicate that the corresponding 'dictionary-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            glossary-on-screen: 
                description: Used to indicate that the corresponding 'glossary-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            thesaurus-on-screen: 
                description: Used to indicate that the corresponding 'thesaurus-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            homophone-checker-on-screen: 
                description: Used to indicate that the corresponding 'homophone-checker-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            note-taking-on-screen: 
                description: Used to indicate that the corresponding 'note-taking-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            visual-organizer-on-screen: 
                description: Used to indicate that the corresponding 'visual-organizer-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            outliner-on-screen: 
                description: Used to indicate that the corresponding 'outliner-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            peer-interaction-on-screen: 
                description: Used to indicate that the corresponding 'peer-interaction-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            spell-checker-on-screen: 
                description: Used to indicate that the corresponding 'spell-checker-on-screen' preferences are to be established appropriately. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: true
    FontFaceDType:
        description: |
            The container for information about the font face to be used.
        type: object
        required: 
            - generic-font-face
        x-1edtech-confidentiality: unrestricted
        properties: 
            font-name: 
                description: The name of the font to be used for text display. Model Primitive Datatype = NormalizedString.
                type: array
                minItems: 0
                items: 
                    type: string
            generic-font-face: 
                description: |
                    The generic font face to be use for text. This is based upon an enumerated vocabulary.
                type: string
                enum: 
                   - serif
                   - sans serif
                   - monospaced
                   - cursive
                   - fantasy
        additionalProperties: false
    LanguageModeDType:
        description: |
            The container for the set of preferences related to the language mode.
        type: object
        required: 
            - language
        x-1edtech-confidentiality: unrestricted
        properties: 
            language: 
                description: Identification of the language. The permitted value is based upon [RFC 3066]. Model Primitive Datatype = Language.
                type: string
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: false
    LineReaderDType:
        description: |
            The container for the preference settings for line readers.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            highlight-color: 
                description: The highlight color to be used by the display when identifying the position of the line reader. Model Primitive Datatype = String.
                type: string
                pattern: "(#)([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})"
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: false
    LongDescriptionDType:
        description: |
            The container for the preferences for the provision of long descriptions.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            hide-visually: 
                description: Defines whether or not the long description is hidden from view as a default setting. Model Primitive Datatype = Boolean.
                type: boolean
                default: true
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: false
    MagnificationDType:
        description: |
            The container for the details about the magnification preferences.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            all-content: 
                $ref: "#/definitions/ZoomAmountDType"
            select-magnification: 
                $ref: "#/definitions/SelectMagnificationDType"
        additionalProperties: false
    PersonSourcedIdDType:
        description: |
            The data-type for the sourcedId of a Person. This is used to identify the owner of a PNP Record. There is NO predefined format for this identifier.
        type: object
        required: 
            - source-system
            - value
        x-1edtech-confidentiality: unrestricted
        properties: 
            source-system: 
                description: The source system that was responsible for the allocation of the 'sourcedId' for the Person. Model Primitive Datatype = NormalizedString.
                type: string
            value: 
                description: Model Derived-Primitive Datatype = NormalizedString.
                type: string
        additionalProperties: false
    ReplacesAccessModeDType:
        description: |
            This is the container for the identification for the set of access modes whose operational state are to be replaced by the contained set of children. The presence of a child attribute means that the parent preference is to be applied to that attribute.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: false
    SelectMagnificationDType:
        description: |
            This is used to contain the zoom magnification factors for the display of text and non-text.
        type: object
        x-1edtech-confidentiality: unrestricted
        properties: 
            text: 
                $ref: "#/definitions/ZoomAmountDType"
            non-text: 
                $ref: "#/definitions/ZoomAmountDType"
        additionalProperties: false
    SingleAFAPNPRecordDType:
        description: |
            The root container for a single AfA PNP record.
        type: object
        required: 
            - access-for-all-pnp-record
        x-1edtech-privacy:
            - access-for-all-pnp-record
        x-1edtech-confidentiality: veryrestricted
        x-1edtech-confidentiality-veryrestricted: 
            - access-for-all-pnp-record
        properties: 
            access-for-all-pnp-record: 
                $ref: "#/definitions/AccessForAllPNPRecordDType"
        additionalProperties: false
    SingleUserAFAPNPRecordDType:
        description: |
            The root container for the combined user information and their first AfA PNP record.
        type: object
        required: 
            - access-for-all-pnp-record
        x-1edtech-privacy:
            - access-for-all-pnp-record
        x-1edtech-confidentiality: veryrestricted
        x-1edtech-confidentiality-veryrestricted: 
            - access-for-all-pnp-record
        properties: 
            access-for-all-pnp-record: 
                $ref: "#/definitions/UserAFAPNPRecordDType"
        additionalProperties: false
    SpokenDType:
        description: |
            The container for the preferences that are used to define the ways in which information is 'spoken'.
        type: object
        required: 
            - reading-type
            - link-indication
            - typing-echo
        x-1edtech-confidentiality: unrestricted
        properties: 
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            reading-type: 
                description: |
                    Deines the type of reading that is to be used. This is based upon an enumerated vocabulary.
                type: string
                enum: 
                   - screen-reader
                   - computer-read-aloud
                default: screen-reader
            restriction-type: 
                description: |
                    Defines the type of restrictions to which the reading is to be applied. This is based upon an extendable enumerated vocbulary.
                type: array
                minItems: 0
                items: 
                    type: string
            speech-rate: 
                description: Rate of speech of a speech synthesizer. A speech synthesizer may be used by or with a number of technologies, including a screen reader, text reader/highlighter or Braille display, among others. Model Primitive Datatype = Integer.
                type: integer
                format: int32
                default: 180
            pitch: 
                description: Pitch of a speech synthesizer. A speech synthesizer may be used by or with a number of technologies, including a screen reader, text reader/highlighter or Braille display, among others. Use 0.0 = 'low', 0.5 = 'medium', 1.0 = 'high'. Model Primitive Datatype = Float.
                type: number
                format: float
                default: 0.5
            volume: 
                description: Volume of a speech synthesizer. A speech synthesizer may be used by or with a number of technologies, including a screen reader, text reader/highlighter or Braille display, among others.  Use 0.0 = 'low', 0.5 = 'medium', 1.0 = 'high'. Model Primitive Datatype = Float.
                type: number
                format: float
                default: 0.5
            link-indication: 
                description: |
                    The nature of handling embedded links. This is based upon an enumerated vocabulary.
                type: string
                enum: 
                   - speak-link
                   - different-voice
                   - sound-effect
                   - none
            typing-echo: 
                description: |
                    Unit of reading to be spoken. This is an enumerated vocabulary.
                type: string
                enum: 
                   - characters
                   - words
                   - characters-and-words
                   - none
        additionalProperties: false
    TextAppearanceDType:
        description: |
            The container for the set of preferences for the appearance of text on a display.
        type: object
        x-1edtech-privacy:
            - extensions
        x-1edtech-confidentiality: unrestricted
        x-1edtech-confidentiality-normal: 
            - extensions
        properties: 
            replace-access-mode-auditory: 
                description: The parent access mode preference is to be applied to auditory based tools and/or content i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-color: 
                description: The parent access mode preference is to be applied to color based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-item-size: 
                description: The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-olfactory: 
                description: The parent access mode preference is to be applied to olfactory based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-orientation: 
                description: The parent access mode preference is to be applied to orientation based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-position: 
                description: The parent access mode preference is to be applied to position based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-tactile: 
                description: The parent access mode preference is to be applied to tactile based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-text-on-image: 
                description: The parent access mode preference is to be applied to text-on-image based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-textual: 
                description: The parent access mode preference is to be applied to text based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            replace-access-mode-visual: 
                description: The parent access mode preference is to be applied to visually based content and/or tools i.e. it replaces the default mode. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            color-theme: 
                description: |
                    The color theme that SHOULD be applied to the text. This is an extensible enumerated vocabulary.
                type: string
            background-color: 
                description: Background color in an interface that is displaying text. Model Primitive Datatype = String.
                type: string
                pattern: "(#)([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})"
            font-color: 
                description: Font color in an interface that is displaying text. Model Primitive Datatype = String.
                type: string
                pattern: "(#)([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})"
            font-size: 
                description: Size of a font. This value is in points. Model Primitive Datatype = Float.
                type: number
                format: float
                default: 12.0
            font-face: 
                $ref: "#/definitions/FontFaceDType"
            line-spacing: 
                description: The line spacing. Model Primitive Datatype = Float.
                type: number
                format: float
            line-height: 
                description: The line height. Model Primitive Datatype = Float.
                type: number
                format: float
            letter-spacing: 
                description: The spacing between letters. This value is in points.  Model Primitive Datatype = Float.
                type: number
                format: float
            uniform-font-sizing: 
                description: Defines if uniform font sizing is to be used. If present then uniform spacing is to be used. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
            word-spacing: 
                description: The spacing between words. This value is in points.  Model Primitive Datatype = Float.
                type: number
                format: float
            word-wrapping: 
                description: Defines if word wrapping is to be used. If present then word wrapping is to be used. Model Primitive Datatype = Empty (mapped to an enumeration value of active). The parent access mode preference is to be applied to item-size based content and/or tools i.e. it replaces the default mode.
                type: string
                enum: 
                   - active
        additionalProperties: true
    UserAFAPNPRecordDType:
        description: |
            This is the container for each of the combined user information and AfA PNP record.
        type: object
        required: 
            - personSourcedId
            - activitySourcedId
            - user
            - access-for-all-pnp
        x-1edtech-privacy:
            - personSourcedId
            - user
            - access-for-all-pnp
        x-1edtech-confidentiality: veryrestricted
        x-1edtech-confidentiality-normal: 
            - personSourcedId
            - user
        x-1edtech-confidentiality-veryrestricted: 
            - access-for-all-pnp
        properties: 
            personSourcedId: 
                $ref: "#/definitions/PersonSourcedIdDType"
            activitySourcedId: 
                description: This is an identifier that has been assigned to the individual as part of the learning process for which the PNP record will be used. Model Primitive Datatype = NormalizedString.
                type: string
            user: 
                $ref: "#/definitions/UserRecordDType"
            access-for-all-pnp: 
                $ref: "#/definitions/AccessForAllPNPDType"
        additionalProperties: false
    UserIdDType:
        description: |
            This is the container for an external user identifier that should be used for this user in the cntext of the AFA PNP Server. This might be an active directory id, an LTI id, or some other machine-readable identifier that is used for this person.
        type: object
        required: 
            - type
            - identifier
        x-1edtech-privacy:
            - type
            - identifier
        x-1edtech-confidentiality: normal
        x-1edtech-confidentiality-normal: 
            - type
            - identifier
        properties: 
            type: 
                description: The type of identifier. This is no predefined vocabuary. Model Primitive Datatype = NormalizedString.
                type: string
            identifier: 
                description: The identifier, of the defined type, for the user. Model Primitive Datatype = NormalizedString.
                type: string
        additionalProperties: false
    UserRecordDType:
        description: |
            The container for the user information. This is a minimal set of information that can identify, uniquely, a user in the AfA PNP Server. It MUST not contain Personally Identifiable Information.
        type: object
        required: 
            - userIds
        x-1edtech-privacy:
            - userIds
            - extensions
        x-1edtech-confidentiality: normal
        x-1edtech-confidentiality-normal: 
            - userIds
            - extensions
        properties: 
            userIds: 
                description: |
                    This is the set of external user identifiers that should be used for this user in the context of the AFA PNP Server. This might be an active directory id, an LTI id, or some other machine-readable identifier that is used for this person.
                type: array
                minItems: 1
                items: 
                    $ref: "#/definitions/UserIdDType"
        additionalProperties: true
    ZoomAmountDType:
        description: |
            A data-type for amount of zoom i.e. magnification.
        type: object
        required: 
            - value
        x-1edtech-confidentiality: unrestricted
        properties: 
            zoom-amount: 
                description: The value for the zoom amount as a float number. Model Primitive Datatype = Float.
                type: number
                format: float
            value: 
                description: Model Derived-Primitive Datatype = Empty (mapped to an enumeration value of active).
                type: string
                enum: 
                   - active
        additionalProperties: false
    imsx_CodeMinorDType:
        description: |
            This is the container for the set of code minor status codes reported in the responses from the Service Provider.
        type: object
        required: 
            - imsx_codeMinorField
        x-1edtech-confidentiality: unrestricted
        properties: 
            imsx_codeMinorField: 
                description: |
                    Each reported code minor status code.
                type: array
                minItems: 1
                items: 
                    $ref: "#/definitions/imsx_CodeMinorFieldDType"
        additionalProperties: false
    imsx_CodeMinorFieldDType:
        description: |
            This is the container for a single code minor status code.
        type: object
        required: 
            - imsx_codeMinorFieldName
            - imsx_codeMinorFieldValue
        x-1edtech-confidentiality: unrestricted
        properties: 
            imsx_codeMinorFieldName: 
                description: This should contain the identity of the system that has produced the code minor status code report. In most cases this will be the target service provider denoted as 'TargetEndSystem'. Model Primitive Datatype = NormalizedString.
                type: string
                default: TargetEndSystem
            imsx_codeMinorFieldValue: 
                description: |
                    The code minor status code (this is a value from the corresponding enumerated vocabulary).
                type: string
                enum: 
                   - fullsuccess
                   - forbidden
                   - internal_server_error
                   - invalid_filter_field
                   - invalid_selection_field
                   - invalid_sort_field
                   - invaliddata
                   - server_busy
                   - unauthorisedrequest
                   - unknownobject
                   - unsupported
                   - user_already_exists
        additionalProperties: false
    imsx_StatusInfoDType:
        description: |
            This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider. For the OneRoster Resources service this object will only be returned to provide information about a failed request i.e. it will NOT be in the payload for a successful request. See Appendix B for further information on the interpretation of the information contained within this class.
        type: object
        required: 
            - imsx_codeMajor
            - imsx_severity
        x-1edtech-confidentiality: unrestricted
        properties: 
            imsx_codeMajor: 
                description: |
                    The code major value (from the corresponding enumerated vocabulary). See Appendix B for further information on the interpretation of this set of codes. The permitted vocabulary for the values for the CodeMajor field.
                type: string
                enum: 
                   - success
                   - processing
                   - failure
                   - unsupported
            imsx_severity: 
                description: |
                    The severity value (from the corresponding enumerated vocabulary). See Appendix B for further information on the interpretation of this set of codes.
                type: string
                enum: 
                   - status
                   - warning
                   - error
            imsx_description: 
                description: A human readable description supplied by the entity creating the status code information. Model Primitive Datatype = String.
                type: string
            imsx_codeMinor: 
                $ref: "#/definitions/imsx_CodeMinorDType"
        additionalProperties: false
