# #####################################################################################
# YAML File Information
# #####################################################################################
# 
# Author:         
# Date:           
# Version:        
# Status:         
# Description:    # 
# History:        # 
# License:        IPR and Distribution Notices
# 
#                 This machine readable file is derived from the IMS [spec name] Version [x.x]
#                 found at http://www.imsglobal.org/[xxx] and the original IMS Global schema binding or code base
#                 http://www.imsglobal.org/[binding document].
# 
#                 Recipients of this document are requested to submit, with their comments, notification of any relevant 
#                 patent claims or other intellectual property rights of which they may be aware that might be infringed by
#                 any implementation of the specification set forth in this document, and to provide supporting documentation.
# 
#                 IMS takes no position regarding the validity or scope of any intellectual property or other rights that might
#                 be claimed to pertain to the implementation or use of the technology described in this document or the extent 
#                 to which any license under such rights might or might not be available; neither does it represent that it has 
#                 made any effort to identify any such rights. Information on IMS procedures with respect to rights in IMS 
#                 specifications can be found at the IMS Global Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.
# 
#                 Copyright (c) IMS Global Learning Consortium 1999-2021. All Rights Reserved.
# 
#                 Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/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 IMS or its successors or assigns.
# 
#                 THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS
#                 EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE 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) Poseidon - v6 (and later)
# (b) Papyrus - v1.1.3 (and later)
# 
# Source XSLT File Information
# ============================
# XSL Generator:    Specificationv1p0_GenerationToolv1.xsl
# XSLT Processor:   Saxon
# Release:          1.0
# Date:             31st January, 2021
# Autogen Engineer: Colin Smythe (IMS Global, UK)
# Autogen Date:     2021-08-25
# 
# IMS Global Auto-generation Binding Tool-kit (I-BAT)
# ===================================================
# This file was auto-generated using the IMS Global Binding Auto-generation Tool-kit (I-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.  IMS Global 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 IMS Global "I-BAT" documentation available at the IMS Global web-site:
# http://www.imsglobal.org.
# 
# Tool Copyright:  2012-2021  (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
# 
# #####################################################################################


#####################################################################################
#                               Components                                          #
#####################################################################################
components:
    schemas: 
        ContextBaseDType:
            description: |
                This is the container for the set of common attributes that are available to all of the first class data structures. These attributes provide essential data to realise the interoperability choreography, localization, internationalization and extensibility.
            type: object
            required: 
                - sourcedId
                - recordStatus
                - dateLastModified
                - language
            properties: 
                sourcedId: 
                    description: The sourcedId of the object. All objects MUST be identified by a Source Identifier. This is a UUID System identifier for an object. This is the UUID that SYSTEMS MUST use when making API calls, or when needing to identify an object. It is RECOMMENDED that systems are able to map whichever local ids (e.g. database key fields) they use to the SourcedId. The sourcedId of an object is considered an addressable property of an entity and as such will not be treated as Personally Identifiable Information (PII) by certified products. Therefore, as a part of certification, vendors will be required to declare that they will notify customers via documentation or other formal and documented agreement that sourcedIds should never contain PII in general, but particularly users. Model Primitive Datatype = String.
                    type: string
                    pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[1-5]{1}[0-9a-f]{3}-[8-9a-b]{1}[0-9a-f]{3}-[0-9a-f]{12}"
                recordStatus: 
                    description: |
                        All objects MUST BE either 'active' or 'tobedeleted'. This is a controlled, enunerated vocabulary and MUST not be extended. Something which is flagged 'tobedeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not under any such compulsion. Deletion should have the effect that subsequent operations attempted on the object result in 'unknown' object failure codes.
                    type: string
                    enum: 
                       - active
                       - tobedeleted
                dateLastModified: 
                    description: All objects MUST be annotated with the dateTime upon which they were last modified. This enables requesters to query for just the latest objects. DateTimes MUST be expressed in W3C profile of [ISO 8601] and MUST contain the UTC timezone. The format MUST be: YYYY-MM-DDTHH:MM:SS.sssZ e.g. '2012-04-23T18:25:43.511Z'. All of the components MST be present. Model Primitive Datatype = DateTime.
                    type: string
                    format: date-time
                language: 
                    description: This is the default language for all string-based information. The value space is [RFC 5646]. If an attribute has a locally attached language identifier, that localized value takes precedence. The order of precedence is defined by the depth of the data structure i.e. the highest precedence is set by the greatest depth of value. Model Primitive Datatype = Language.
                    type: string
                extension: 
                    $ref: "#/components/schemas/ExtensionMetadataDType"
            additionalProperties: false
        ExtensionMetadataDType:
            description: |
                This is the container for the proprietary attributes. The form of the extension is dependent on the binding technology being used.  Refer to the appropriate binding document for details on how to make an extension.
            type: object
            properties: {}
            additionalProperties: true
