Project

General

Profile

Interface Control Document

Back to Table of Contents

Table of Figures

Figure 1: The GIFT architecture diagram shows how the various components of GIFT interact. The arrows depict the flow of messages and interactions.

Figure 2: Message Flow through ActiveMQ

Overview

The purpose of the GIFT Interface Control Document (ICD) is to describe the interface, in terms of messaging input and outputs, of each module in the system. It does not attempt to describe the characteristics of each module but merely treat each module as if it were a black box. GIFT developers can use this document to create new modules in replace of existing modules by adhering to the messaging I/O described.

Figure 1: The GIFT architecture diagram shows how the various components of GIFT interact. The arrows depict the flow of messages and interactions.

Modules

Messaging Details

Each module declares two ActiveMQ queues that are used to receive messages from other GIFT modules; the “Inbox” queue and the Module Queue. The queues are named according to the following convention:
Inbox Queue: <module name>:<ip address>:Inbox
Module Queue: <module name>:<ip address>

The functions of the two queues are described below:

Inbox Queue
The Inbox Queue of a particular module is effectively its messaging address. As such other modules wishing to communicate with a particular module will address messages to the desired module’s Inbox Queue. Conversely, when a module communicates with other modules, it identifies itself using the name of its Inbox Queue.

Module Queue
This is the queue the module listens on to receive incoming messages – effectively it is the Module’s “Outbox”. Messages should not be directly sent to this queue because the Camel component of ActiveMQ will route the message from the Inbox to this queue as well as to other queues for logging and monitoring. An illustration of this process is shown below.

Figure 2: Message Flow through ActiveMQ

Upon receipt of a message, a module can reply, initially, with a:
  • ACK message – Indicates that the message was received and successfully decoded.
  • NACK message – Indicates that the message was received but was unable to be decoded.
  • No message – Nothing is sent for messages read from a Topic or those messages whose header specifies that a reply is not needed (refer to message header attributes for each message type in this document).
Once a message is handled by the recipient module, the module can optionally respond with a reply message to convey additional information. For example, the sender of the LMS Data Request message would expect to receive a LMS Data Reply message which would contain all the LMS data of interest. In addition to specific reply message like the LMS Data Reply, there are two generic reply message types:
  • Processed ACK – Signifies that the message was handled successfully.
  • ACProcessed NACK – Signifies that the message was not handled successfully.

Currently only a single reply message (ACK and NACK are not considered reply messages here, e.g. LMS Data Reply) should be sent for each received message. Additional replies will be ignored by the recipient.

User Management System (UMS) Module

Details

The primary function of the UMS module is to manage a user session. It is responsible for storing information about the user such as biographical details, in addition to maintaining information about domain sessions. It does not, however, keep scoring records of user’s training history. That is handled by the LMS. The UMS also contains the message logger which is responsible for logging all messages sent on a single ActiveMQ network.

Subscriptions

Domain Discovery
  • For logging purposes
Pedagogical Discovery
  • For logging purposes
Tutor Discovery
  • For logging purposes
Learner Discovery
  • For logging purposes
Sensor Discovery
  • For logging purposes
Gateway Discovery
  • For logging purposes
LMS Discovery
  • For logging purposes

UMS Discovery

Logger Queue

Messages

Module Status

Send
To: UMS Discovery
Reply With: Nothing
Description: Notify all subscribers of the UMS module status

Receive
From: LMS Discovery, Pedagogical Discovery, Learner Discovery, Tutor Discovery, Gateway Discovery, Domain Discovery, Sensor Discovery
Reply With: Nothing
Description: For logging the module status messages of the other modules that are active in the system

Module Allocation Request

Receive
From: Tutor
Reply With: Module Allocation Reply, Processed NACK
Description: The Tutor is requesting to use this UMS module for a User Session

Module Allocation Reply

Send
To: Tutor
Expected Reply: Nothing
Description: Reply to the Tutor’s request to use this UMS module for a User Session

Initialize Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is initializing

Start Domain Session

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is starting

Close Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is ending

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

New User Request

Receive
From: Tutor
Reply With: Login Reply, Processed NACK
Description: Request for a new user to be created

User Id Request

Receive
From: Tutor
Reply With: User Id Reply, Processed NACK
Description: Request for a user id based on a username

Login Request

Receive
From: Tutor
Reply With: Login Reply, Processed NACK
Description: Request for a user to be logged in

Logout Request

Receive
From: Tutor
Reply With: Processed ACK, Processed NACK
Description: Request for a user to be logged out

Sensor File Created

Receive
From: Sensor
Reply With: Nothing
Description: Notification that a file has been created with sensor data

Submit Survey Results

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Submit the results of a survey

Get Survey Request

Receive
From: Domain, Tutor
Reply With: Get Survey Reply
Description: Request a survey

Domain Selection Request

Receive
From: Domain
Reply With: Domain Selection Reply, Processed NACK
Description: Request a domain session on the selected domain

Survey Check Request

Receive
From: Domain
Reply With: SurveyCheckResponse, Processed NACK
Description: The UMS module needs to check the survey references against entries in the survey database.

Domain Session Start Time Request

Receive
From: Monitor
Reply With: Domain Session Start Time Reply, Processed NACK
Description: Request the start time of a domain session.

Get Experiment Request

Receive
From: Domain
Expected Reply: Get Experiment Reply
Description: Reply to a request to retrieve the experiment details by experiment id.

LTI Get User Request

Receive
From: Tutor
Expected Reply: LTI Get User Reply
Description: Request to get the LTI user record based on an incoming LTI launch request (containing a consumer key and consumer id).

LTI Get User Reply
Send
To: Tutor
Expected Reply: Nothing
Description: The LTI user record data that was found for the user. If the user was not found, null is returned for the lti user record.

Learning Management System (LMS) Module

Details

The primary function of the LMS module is keep track of a user’s training history. The GIFT LMS will save the scores of every lesson.

Subscriptions

LMS Discovery

Messages

Module Status

Send
To: LMS Discovery
Reply With: Nothing
Description: Notify all subscribers of the LMS module status

Module Allocation Request

Receive
From: Tutor
Reply With: Module Allocation Reply, Processed NACK
Description: The Tutor is requesting to use this LMS module for a User Session

Module Allocation Reply

Send
To: Tutor
Reply With: Nothing
Description: Reply to the Tutor’s request to use this LMS module for a User Session

LMS Data Request

Receive
From: Learner, Tutor
Reply With: LMS Data Reply, Processed NACK
Description: A request for a learner’s LMS data

Publish Lesson Score Request

Receive
From: Domain
Reply With: Publish Lesson Score Reply, Processed NACK
Description: The final score of a lesson, to be stored for later retrieval with the key returned from a successful publish

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Learner Module

Details

The primary function of the Learner module is to determine the learner’s state.

Subscriptions

Learner Discovery

Messages

Module Status

Send
To: Learner Discovery
Expected Reply: Nothing
Description: Notify all subscribers of the Learner module status

Module Allocation Request

Receive
From: Domain
Reply With: Module Allocation Reply, Processed NACK
Description: The Domain is requesting to use this Learner module for a Domain Session

Module Allocation Reply

Send
To: Domain
Expected Reply: Nothing
Description: Reply to the Domain’s request to use this Learner module for a User Session

Sensor Data

Receive
From: Sensor
Reply With: Nothing
Description: For processing sensor data into human relatable behavior

Sensor Filter Data

Receive
From: Sensor
Reply With: Nothing
Description: For processing sensor data into human relatable behavior

Instantiate Learner Request

Receive
From: UMS
Reply With: Processed ACK, Processed NACK
Description: Try to instantiate a new learner

Initialize Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is initializing

Start Domain Session

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is starting

Close Domain Session Request

Receive
From: Domain
Reply With: Nothing
Description: For being notified that a domain session is ending

Lesson Started

Receive
From: Anywhere
Reply With: Processed ACK, Processed NACK
Description: Notify learner module that the lesson started

Lesson Completed

Receive
From: Anywhere
Reply With: Processed ACK, Processed NACK
Description: Notify learner module that the lesson is complete

Publish Lesson Score Request

Receive
From: Anywhere
Reply With: Processed ACK, Processed NACK
Description: Publishes the score of the lesson completed by a learner

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Submit Survey Results

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Submit the results of a survey to a learner

Performance Assessment

Receive
From: Domain
Reply With: Nothing
Description: Give a performance assessment to a learner

Logout Request

Receive
From: Tutor
Reply With: Nothing
Description: Unregister a learner with the module

Learner State

Send
To: Pedagogical
Expected Reply: Nothing
Description: Notify modules of a learner’s state

Initialize Lesson Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Tell a module to initialize a single lesson of a course during a domain session

Pedagogical Module

Details

The primary function of the Pedagogical module is to use information about the learner’s state to produce actions for the tutor to better influence learning.

Subscriptions

Pedagogical Discovery

Messages

Module Status

Send
To: Pedagogical Discovery
Expected Reply: Nothing
Description: Notify all subscribers of the Pedagogical module status

Module Allocation Request

Receive
From: Domain
Reply With: Module Allocation Reply, Processed NACK
Description: The Domain is requesting to use this Pedagogical module for a Domain Session

Module Allocation Reply

Send
To: Domain
Expected Reply: Nothing
Description: Reply to the Domain’s request to use this Pedagogical module for a User Session

Learner State

Receive
From: Learner
Reply With: Nothing
Description: Process learner state and update pedagogical actions

Initialize Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is initializing

Start Domain Session

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is starting

Close Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is ending

Lesson Started

Receive
From: Anywhere
Reply With: Processed ACK, Processed NACK
Description: Notify pedagogical module that the lesson started

Lesson Completed

Receive
From: Anywhere
Reply With: Processed ACK, Processed NACK
Description: Notify pedagogical module that the lesson is complete

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Pedagogical Request

Send
To: Domain
Expected Reply: Nothing
Description: Suggest pedagogical action to a tutor

Initialize Lesson Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Tell a module to initialize a single lesson of a course during a domain session

Initialize Pedagogical Model Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Tell the Pedagogical Module to initialize a pedagogical model.

Course State

Receive
From: Domain
Reply With: Pedagogical Request, Nothing
Description: Provide the current course state to any pedagogical models. In some instances a model will return a pedagogical request.

Domain Module

Details

The primary function of the domain module is to create, maintain and assess domain sessions.

Subscriptions

UMS Discovery
LMS Discovery
Pedagogical Discovery
Tutor Discovery
Learner Discovery
Domain Discovery
Sensor Discovery
Gateway Discovery

Messages

Module Status

Send
To: Domain Discovery
Expected Reply: Nothing
Description: Notify modules of the Domain module status

Receive
From: LMS Discovery
Reply With: Nothing
Description: Get status of available LMS modules

Receive
From: UMS Discovery
Reply With: Nothing
Description: Get status of available UMS modules

Receive
From: Pedagogical Discovery
Reply With: Nothing
Description: Get status of available Pedagogical modules

Receive
From: Tutor Discovery
Reply With: Nothing
Description: Get status of available Tutor modules

Receive
From: Learner Discovery
Reply With: Nothing
Description: Get status of available Learner modules

Receive
From: Sensor Discovery
Reply With: Nothing
Description: Get status of available Sensor modules

Receive
From: Gateway Discovery
Reply With: Nothing
Description: Get status of available Gateway modules

Module Allocation Request

Receive
From: Tutor
Reply With: Module Allocation Reply, Processed NACK
Description: The Tutor is requesting to use this Domain module for a Domain Session

Send
To: Pedagogical, Learner, Sensor, Gateway
Expected Reply: Module Allocation Reply, Processed NACK
Description: Request that the module be allocated to this Domain module for a Domain Session

Module Allocation Reply

Send
To: Tutor
Expected Reply: Nothing
Description: Reply to the Tutor’s request to use this Domain module for a Domain Session

Receive
From: Pedagogical, Learner, Sensor, Gateway
Reply With: Nothing
Description: Replies to this Domain’s request to use the module for a Domain Session

Learner Tutor Action

Receive
From: Tutor
Reply With: Processed ACK, Processed NACK
Description: Notify domain of action completed by the learner on the tutoring system

Domain Options Request

Receive
From: Tutor
Reply With: Domain Options Reply, Processed NACK
Description: Request the current set of domain options

Domain Selection Request

Receive
From: Tutor
Reply With: Domain Selection Reply, Processed NACK
Description: Request a domain session on the selected domain

Chat Log

Receive
From: Tutor
Reply With: Processed ACK, Processed NACK
Description: For updating the domain module with the chat between the tutor and user

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Close Domain Session Request

Send
To: Learner, UMS, Sensor, Gateway, Tutor
Expected Reply: Nothing
Description: Ends the domain session

Receive
From: Monitor, Tutor
Reply With: Processed ACK, Processed NACK
Description: Ends the domain session

Pedagogical Request

Receive
From: Pedagogical
Reply With: Nothing
Description: A request for an action

Get Survey Request

Send
To: UMS
Expected Reply: Get Survey Reply, Processed NACK
Description: Request the UMS for a survey

LoS Query

Send
To: Gateway
Expected Reply: Nothing
Description: Do a line of sight query

Submit Survey Results

Send
To: UMS
Expected Reply: Processed ACK, Processed NACK
Description: Submit the results of the survey to the UMS

Initialize Domain Session Request

Send
To: Learner, UMS, Sensor, Gateway, Pedagogical, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell a module to initialize a domain session

Instantiate Learner Request

Send
To: Learner
Expected Reply: Processed ACK, Processed NACK
Description: Request Learner to be instantiated

Start Domain Session

Send
To: Learner, UMS, Sensor, Gateway, Pedagogical, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell a module to start a domain session

Close Domain Session Request

Send
To: Learner, UMS, Sensor, Gateway,Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell a module to close a domain session

Display Feedback Embedded Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the embedded training application to display a feedback message to the user within the application

Display Feedback Tutor Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display feedback to the user

Display Guidance Tutor Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display guidance to the user

Display Lesson Material Tutor Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display lesson material to the user

Display Mid-Lesson Media Tutor Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display media to the user during a training application lesson

Display Survey Tutor Request

Send
To: Tutor
Expected Reply: Processed NACK, Display Survey Tutor Reply

Description: Tell the Tutor module to display a survey to the user

Display AAR Tutor Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display the After Action Review to the user

Display Chat Window Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Request a chat window to be displayed to the learner

Display Chat Window Update Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Request an update to the chat window to be displayed to the learner

SIMAN

(Siman Type = LOAD)

Send
To: Gateway, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Gateway module or Tutor module to load a scenario in the training application

SIMAN

(Siman Type = START)

Send
To: Gateway, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Gateway module or Tutor module to start a scenario in the training application

SIMAN

(Siman Type = STOP)

Send
To: Gateway, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Gateway module or Tutor module to stop a scenario in the training application

SIMAN

(Siman Type = RESTART)

Send
To: Gateway, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Gateway module or Tutor module to restart a scenario in the training application

SIMAN

(Siman Type = PAUSE)

Send
To: Gateway, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Gateway module or TutorModule to pause a scenario in the training application

SIMAN

(Siman Type = RESUME)

Send
To: Gateway, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Gateway module or Tutor Module to resume a scenario in the training application

Environment Control

Send
To: Gateway
Expected Reply: Processed ACK, Processed NACK
Description: Tweak the environment of the current interop application

Publish Lesson Score Request

Send
To: LMS
Expected Reply: Processed ACK, Processed NACK
Description: Notify the LMS of the score achieved by the user for a specific lesson

Performance Assessment

Send
To: Learner
Expected Reply: Nothing
Description: Notify the Learner module of the completed performance assessment

Initialize Interop Connections

Send
To: Gateway
Expected Reply: Interop Connections Info, Processed NACK
Description: Notify the Gateway module of the interop connections needed for the lesson that is about to begin

Initialize Embedded Connections

Send
To: Tutor
Expected Reply: Interop Connections Info, Processed NACK
Description: Notify the Tutor module of the embedded application needed for the lesson that is about to begin

Initialize Lesson Request

Send
To: Learner, Pedagogical, Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell a module to initialize a single lesson of a course during a domain session

Initialize Pedagogical Model Request

Send
To: Pedagogical
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Pedagogical Module to initialize a pedagogical model.

Active Domain Sessions Request

Receive
From: Monitor
Expected Reply: Active Domain Sessions Reply
Description: Request for the active domain sessions known to this domain module instance.

Active Domain Sessions Reply

Send
To: Monitor
Expected Reply: Nothing
Description: Reply to a request for the active domain sessions known to this domain module instance.

Course State

Send
To: Pedagogical
Expected Reply: Pedagogical Request (when the course state warrants it), Nothing
Description: The pedagogical module needs to know where in the course the user is in order to inform various pedagogical model(s).

Survey Check Request

Send
To: UMS
Expected Reply: SurveyCheckResponse, Processed NACK
Description: The UMS module needs to check the survey references against entries in the survey database.

Display Course Init Instructions Request

Send
To: Tutor
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display the generic course initialize instructions webpage to the user

Experiment Course Request

Receive
From: Tutor
Expected Reply: Domain Selection Reply, Processed NACK
Description: Starts a new subject in the experiment's course

Get Experiment Request

Send
To: UMS
Expected Reply: Get Experiment Reply
Description: Request the experiment details by experiment id.

Subject Created

Send
To: Tutor
Expected Reply: Processed ACK
Description: Notify the tutor that a subject has been created for the experiment being started as per the tutor's request

Load Progress

Send
To: Tutor
Expected Reply: Nothing
Description: Forwarding the training application content loading progress information from the gateway module interop plugin

Training Application Survey Submit

Send
To: Tutor
Expected Reply: Nothing
Description: Forwarding the training application survey submit event so the tutor can submit the currently presented survey

Tutor Survey Question Response

Send
To: Gateway
Expected Reply: Nothing
Description: Forwarding the selecting an answer (not submitting the answer/survey) to a survey question event from the tutor

Tutor Survey Question Response

Receive
To: Tutor
Expected Reply: Nothing
Description: The selecting an answer (not submitting the answer/survey) to a survey question event from the tutor

Training Application Survey Response

Send
To: Tutor
Expected Reply: Nothing
Description: Forwarding the event of the user selecting a survey response in the external training application from the gateway module interop plugin

Sensor Module

Details

The primary function of the Sensor module is to read and filter sensor data.

Subscriptions

Sensor Discovery

Messages

Module Status

Send
To: Sensor Discovery
Expected Reply: Nothing
Description: Notify subscribers of Sensor Module status

Module Allocation Request

Receive
From: Domain
Reply With: Module Allocation Reply, Processed NACK
Description: The Domain is requesting to use this Sensor module for a Domain Session

Module Allocation Reply

Send
To: Domain
Expected Reply: Nothing
Description: Reply to the Domain’s request to use this Sensor module for a Domain Session

Initialize Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is initializing

Start Domain Session

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is starting

Close Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is being ended

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Sensor Data

Send
To: Learner
Expected Reply: Nothing
Description: Propagate new Sensor data for processing

Sensor Filter Data

Send
To: Learner
Expected Reply: Nothing
Description: Propagate new Filtered Sensor data for processing

Sensor File Created

Send
To: UMS
Expected Reply: Nothing
Description: Notify modules that a new Sensor File was created

Tutor Module

Details

The primary function of the Tutor module is to provide an interface that allows interaction between GIFT and the learner.

Subscriptions

UMS Discovery
LMS Discovery
Domain Discovery
Tutor Discovery

Messages

Module Status

Send
To: Tutor Discovery
Expected Reply: Nothing
Description: Notify subscribers of Tutor Module status

Receive
To: UMS Discovery
Expected Reply: Nothing
Description: Get status of available UMS modules

Receive
To: LMS Discovery
Expected Reply: Nothing
Description: Get status of available LMS modules

Receive
To: Domain Discovery
Expected Reply: Nothing
Description: Get status of available Domain modules

Tutor Module Status

Send
To: Tutor
Expected Reply: Nothing
Description: Notify subscribers about the existence of the Tutor Topic

Module Allocation Request

Send
To: Domain, UMS and LMS
Expected Reply: Module Allocation Reply, Processed NACK
Description: Request that the module be allocated to this Tutor module for a User Session

Module Allocation Reply

Receive
From: Domain, UMS and LMS
Expected Reply: Nothing
Description: Replies to this Tutor’s request to use the module for a User Session

Initialize Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is initializing

Start Domain Session

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is starting

Close Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is ending

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Display Guidance Tutor Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request some guidance to be displayed to the learner

Display Feedback Tutor Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request feedback to be displayed to the learner

Display Survey Tutor Request

Receive
From: Domain
Reply With: Display Survey Tutor Reply, Processed NACK
Description: Request a survey to be displayed to the learner

Display AAR Tutor Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request an After Action Review to be displayed to the learner

Display Lesson Material Tutor Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request lesson material to be displayed to the learner

Display Mid-Lesson Media Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request media to be displayed to the learner during a training application lesson

Display Chat Window Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request a chat window to be displayed to the learner

Display Chat Window Update Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Request an update to the chat window to be displayed to the learner

New User Request

Send
To: UMS
Expected Reply: Processed NACK, Login Reply
Description: Request a new user to be added to the UMS

Login Request

Send
To: UMS
Expected Reply: Processed NACK, Login Reply
Description: Request a user login

User Id Request

Send
To: UMS
Expected Reply: Processed NACK, User Id Reply
Description: Request the unique GIFT user id based on the GIFT username

LMS Data Request

Send
To: LMS
Expected Reply: LMS Data Reply, Processed NACK
Description: Request all LMS data on a user

Domain Options Request

Send
To: Domain
Expected Reply: Domain Options Reply, Processed NACK
Description: Request a list of available domains

Domain Selection Request

Send
To: Domain
Expected Reply: Domain Selection Reply, Processed NACK
Description: Select a domain for use

Learner Tutor Action

Send
To: Domain
Expected Reply: Processed ACK, Processed NACK
Description: Notify Domain of a completed report

Logout Request

Send
To: Learner, UMS
Expected Reply: Processed ACK, Processed NACK
Description: Log a user out

Chat Log

Send
To: Domain
Expected Reply: Processed ACK, Processed NACK
Description: For updating the domain module with the chat between the tutor and user

Initialize Lesson Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: Tell a module to initialize a single lesson of a course during a domain session

Active User Sessions Request

Receive
From: Monitor
Expected Reply: Active User Sessions Reply
Description: Request for the active user sessions known to this tutor instance.

Active User Sessions Reply

Send
To: Monitor
Expected Reply: Nothing
Description: Reply to a request for the active user sessions known to this tutor instance.

Get Experiment Request

Send
To: Domain
Expected Reply: Get Experiment Reply
Description: Reply to a request for the experiment request by experiment id.

Display Course Init Instructions Request

Receive
From: Domain
Expected Reply: Processed ACK, Processed NACK
Description: Tell the Tutor module to display the generic course initialize instructions webpage to the user

Subject Created

Receive
From: Domain
Expected Reply: Processed ACK
Description: Notifcation that a subject has been created for the experiment being started as per the tutor's request

Load Progress

Receive
From: Domain
Expected Reply: None
Description: Forwarded training application content loading progress from the gateway module interop plugin

Training Application Survey Submit

Receive
From: Domain
Expected Reply: Nothing
Description: Forwarded the training application survey submit event so the tutor can submit the currently presented survey

Tutor Survey Question Response

Send
To: Domain
Expected Reply: Nothing
Description: The selecting an answer (not submitting the answer/survey) to a survey question event

Training Application Survey Response

Receive
From: Domain
Expected Reply: Nothing
Description: Forwarded the event of the user selecting a survey response in the external training application from the gateway module interop plugin

LTI Get User Request

Send
To: UMS
Expected Reply: LTI Get User Reply
Description: Request to get the LTI user record based on an incoming LTI launch request (containing a consumer key and consumer id).

LTI Get User Reply
Receive
From: UMS
Expected Reply: Nothing
Description: The LTI user record data that was found for the user. If the user was not found, null is returned for the lti user record.

Gateway Module

Details

The primary function of the Gateway module is to listen for communication outside of GIFT and then convert it into GIFT messages and vice-versa.

When a message is received from outside of GIFT (e.g., VBS DIS connection), the Gateway module converts that message into a GIFT message and sends it to the Gateway Module’s topic (i.e., broadcasts the message).

Subscriptions

Gateway Discovery Topic
Gateway Topic

Messages

Gateway Module Status

Send
To: Gateway Discovery Topic
Expected Reply: Nothing
Description: Notify subscribers of Gateway status and the name of the topic where simulation messages will be sent to for other modules to consume.

Module Allocation Request

Receive
From: Domain
Reply With: Module Allocation Reply, Processed NACK
Description: The Domain is requesting to use this Gateway module for a Domain Session

Module Allocation Reply

Send
To: Domain
Expected Reply: Nothing
Description: Reply to the Domain’s request to use this Gateway module for a Domain Session

Initialize Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is initializing

Start Domain Session

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is starting

Close Domain Session Request

Receive
From: Domain
Reply With: Processed ACK, Processed NACK
Description: For being notified that a domain session is ending

Kill Module

Receive
From: Anywhere
Reply With: Nothing
Description: For shutting down the module remotely

Initialize Interop Connections

Receive
To: Domain
Reply With: Interop Connections Info, Processed NACK
Description: Initialize/Enable the specified interop connections needed for the lesson that is about to begin

Interoperability

The Gateway Module has simulation interoperability capabilities with the following standards. These interfaces allow GIFT to communicate with training applications that also implement the same standards. Each section will list the messages from each standard that GIFT can currently handle. Refer to GIFT Configuration Settings for more information on interoperability configurations and the other interoperability interfaces.

DIS

This interface uses JDIS library (http://sourceforge.net/projects/jdis/) to send/receive DIS PDUs.

For information on the DIS standard concerning these messages see: https://en.wikipedia.org/wiki/Distributed_Interactive_Simulation

Detonation PDU
Entity State PDU
Fire PDU

Currently the DIS interop interface can send these GIFT messages:

Weapon Fire
Detonation
Entity State
Collision

Currently the DIS interop interface can handle these incoming GIFT messages and convert and send their equivalents as DIS messages:

Start Resume
Stop Freeze

JSON DIS

This interface is built upon the DIS interface mentioned above. The difference is that incoming DIS PDU messages created by applications external to GIFT are converted into GIFT JSON messages. These JSON messages are perfectly formatted for use in the SIMILE assessment engine in the Domain module.

The GIFT game state message is defined by Generic JSON Status.

VBS

This interop interface communicates to the GIFT VBS plugin DLL.

Currently the VBS interop interface can handle these incoming GIFT messages:

SIMAN
Environment Control
LoS Query
Display Feedback Gateway Request

Currently the VBS interop interface can send these GIFT messages:

LoS Result

ARES

This interop interface communicates to the Augemented REality Sandtable application.

Currently the ARES interop interface can handle these incoming GIFT messages:

SIMAN
Survey Presented Notification
Tutor Survey Question Response

Currently the ARES interop interface can send these GIFT messages:

Training App Survey Response
Training App Survey Submit

PPT

This interop interface uses JACOB library (http://sourceforge.net/projects/jacob-project/) to communicate with Microsoft PowerPoint.

Currently the PPT interop interface can handle these incoming GIFT messages:

SIMAN

Currently the PPT interop interface can send these GIFT messages:

Start Resume
Stop Freeze
PowerPoint State
Load Progress

TC3

This interop interface handles communication between TC3 (aka vMedic) game engine.

Currently the TC3 interop interface can handle these incoming GIFT messages:

SIMAN

Currently the TC3 interop interface can send these GIFT messages:

Generic JSON Status

SCATT

This interop interface handles communication between the SCATT Pro marksmanship training application.

Currently the SCATT interop interface can handle these incoming GIFT messages:

SIMAN

Currently the SCATT interop interface can send these GIFT messages:

Rifle Shot

Simple (XML-RPC)

This interop interface handles communication between the Simple Training App created for the GIFT Developer Guide.

Currently the Simple interop interface can handle these incoming GIFT messages:

SIMAN
Display Feedback Gateway Request

Currently the Simple interop interface can send these GIFT messages:

Simple Example State

ActiveMQ: Topics and Queues

GIFT uses ActiveMQ connections to handle transporting of messages between modules. For more information on ActiveMQ visit http://activemq.apache.org/.

Topics

Topics are used by GIFT to implement publish and subscribe semantics. A message published to a topic is delivered to all subscribers, so zero to many subscribers will receive a copy of the message. Only subscribers who had an active subscription at the time the broker receives the message will get a copy of the message.

UMS Discovery

The UMS discovery topic is used to obtain the address and status of available UMS modules.

Publishers
UMS

Subscribers
Domain, Monitor, Tutor

LMS Discovery

The LMS discovery topic is used to obtain the address and status of available LMS modules.

Publishers
LMS

Subscribers
Tutor, Monitor, Domain, UMS (for logging)

Pedagogical Discovery

The Pedagogical discovery topic is used to obtain the address and status of available Pedagogical modules.

Publishers
Pedagogical

Subscribers
Monitor, Domain, UMS (for logging)

Tutor Discovery

The Tutor discovery topic is used to obtain the address and status of available Tutor modules.

Publishers
Tutor

Subscribers
Monitor, Domain, UMS (for logging)

Tutor

The Tutor topic that embedded apps send game state messages to. One instance is created for each domain session that contains an embedded training application. Each instance is created by the Tutor Module when an Initialize Domain Session Request is received and is destroyed by the Domain Module when a domain session is closed.

Publishers
Tutor

Subscribers
Monitor, Domain

Learner Discovery

The Learner discovery topic is used to obtain the address and status of available Learner modules.

Publishers
Learner

Subscribers
Monitor, Domain, UMS (for logging)

Sensor Discovery

The Sensor discovery topic is used to obtain the address and status of available sensor modules.

Publishers
Sensor

Subscribers
Domain, Monitor, UMS (for logging)

Domain Discovery

The Domain discovery topic is used to obtain the address and status of available domain modules.

Publishers
Domain

Subscribers
Tutor, Monitor, UMS (for logging)

Gateway Discovery

The Gateway discovery topic is used to obtain the address and status of available Gateway modules.

Publishers
Gateway

Subscribers
Domain, Monitor, UMS (for logging)

Gateway

The Gateway topic is used to send GIFT simulation messages from interop plugins (e.g., DIS, VBS plugin).

Publishers
Gateway

Subscribers
Domain, Monitor, UMS (for logging)

Queues

Queues are used to send information from a single source to a single destination. The reader of a queue is the message recipient. GIFT uses Queues to send messages from one module to another module. Every module has a queue with the “Inbox” suffix (e.g., Sensor_Queue:192.168.1.113:Inbox) which is present in that module’s status message. The Inbox queue is used as the destination to send messages to a particular module. The modules themselves actually read messages from a queue with a similar name but without the “Inbox” suffix. This setup provides GIFT the opportunity to route messages to the message logger queue in the UMS.

Messaging

Overview

Communication between modules in GIFT is done through ActiveMQ messaging, for more information on ActiveMQ, visit http://activemq.apache.org/.

Messages are formatted as JSON strings, for more information on JSON, see: http://www.json.org/

For the messages and data objects below, note the following:

Requires: This message or data object needs to also include all the properties of the required message or data object.

Assigned Value: This message or data object needs to set the indicated property to the specified value.

For the enumeration value type, use the string representation of the enumeration value

Time Stamps

Timestamps use UNIX (epoch) time stored as 64-bit signed integers. The Timestamp property in the GIFT Message Header should always hold an absolute timestamp of when the message was created. See http://en.wikipedia.org/wiki/Unix_time for more details.

Message Sequences

This section contains details about the sequence of messages for common events in GIFT execution.

Key:                            
S – Message Sender
R – Message Recipient

Start Domain Session
Once the learner starts a selected GIFT course, the following message sequence happens. The end of this sequence is when the first course transition is about to be handled.

Note: ACK messages are not shown.
Note: This sequence doesn't apply to a subject in an experiment starting an experiment's course. Continue reading for more details.

Message Tutor Domain Sensor Learner Ped Gateway UMS LMS Reason
Domain Selection Request S R Tutor notifies Domain of course being loaded
Domain Selection Request S R Domain request UMS create domain session entry in database
Domain Selection Reply R S
Module Allocation Request S R Domain trying to select a Pedagogical module
Module Allocation Reply R S
Module Allocation Request S R Domain trying to select a Sensor module
Module Allocation Reply R S
If running in Desktop Mode: Desktop mode doesn't use Course Initialization Instructions webpage
Module Allocation Request S R Domain trying to select a Gateway module
Module Allocation Reply R S
otherwise running in Server mode: Sever mode requires the learner to run a java web start jnlp application
Display Course Initialize Instructions R S Tutor needs to display the webpage with instructions for the learner
Processed ACK S R
Once Domain Module receives Gateway module heartbeat Indication that the learner start the java web start jnlp application
Module Allocation Request S R Domain trying to select a Gateway module
Module Allocation Reply R S
Display Course Initialize Instructions R S Update of status to the course initialization instructions webpage
Processed ACK S R
Configure Interop Connections S R Domain indicating which interops need to be configured
Processed ACK R S
Display Course Initialize Instructions R S Update of status to the course initialization instructions webpage
Processed ACK S R
continue common sequence
Module Allocation Request S R Domain trying to select a Learner module
Module Allocation Reply R S
Domain Selection Reply R S Notify the tutor that the Domain has completed setting up the domain session
Instantiate Learner Request S R Have the learner module create the Learner instance
LMS Data Request S R Retrieve learner records to customize the learner instance
LMS Data Reply R S
Initalize Domain Session Request R S R R R R R Synchronize and prepare all modules for course start
Processed ACK S R S S S S S
Initalize Pedagogical Model Request S R Load any course specific pedagogical models
Processed ACK R S
Start Domain Session R S R R R R R Synchronize the start of the course across all modules
Processed ACK S R S S S S S
Course State S R
course specific requests…

Start Training Application course transition
This message sequence happens when a training application course transition is reached. The end of this message sequence is when game state messages start arriving.

Notes:
  • ACK messages are not shown
  • The * indicates that training application game state messages can start arriving after the gateway module acknowledges that message appropriately.
Message Tutor Domain Sensor Learner Ped Gateway UMS LMS
Course State S R
Initialize Interop Connections S R
Siman (load) S R
Initialize Pedagogical Model Request S R
Initialize Lesson Request S R
Display Learner Actions Request R S
Lesson Started R(2) S R(1) R(3)
Siman (start)* S R
Start Resume (game state) S
game state messages...
Pre-GIFT v2014-2 (5.0)
Course State S R
Initialize Interop Connections S R
Siman (load) S R
Siman (start)* S R
Start Resume (game state) S
Initialize Lesson Request S R
Display Learner Actions Request R S
Initialize Pedagogical Model Request S R
Lesson Started R(2) S R(1) R(3)
game state messages…

Start Experiment
Once a subject selects to start an experiment's course, the following message sequence happens. The end of this sequence is when the first course transition is about to be handled.

Note: ACK messages are not shown.

Message Tutor Domain Sensor Learner Ped Gateway UMS LMS
Experiment Course Request S R
Module Allocation Request S R
Module Allocation Reply R S
Get Experiment Request S R
Get Experiment Reply R S
If there are surveys in the course:
Survey Check Request S R
Survey Check Response R S
New User Request S R
Login Reply R S
Subject Created R S
Module Allocation Request S R
Module Allocation Reply R S
Module Allocation Request S R
Module Allocation Reply R S
Module Allocation Request S R
Module Allocation Reply R S
If running in Desktop Mode:
Module Allocation Request S R
Module Allocation Reply R S
otherwise running in Server mode:
Display Course Initialize Instructions R S
Processed ACK S R
Once Domain Module receives Gateway module heartbeat
Module Allocation Request S R
Module Allocation Reply R S
Display Course Initialize Instructions R S
Processed ACK S R
Configure Interop Connections S R
Processed ACK R S
Display Course Initialize Instructions R S
Processed ACK S R
Domain Selection Reply R S
Instantiate Learner Request S R
LMS Data Request S R
LMS Data Reply R S
Initalize Domain Session Request R S R R R R R
Processed ACK S R S S S S S
Initalize Pedagogical Model Request S R
Processed ACK R S
Start Domain Session R S R R R R R
Processed ACK S R S S S S S
Course State S R
course specific requests…

GIFT Message Headers

GIFT Message Header

Property Name JSON Key Value Type Description
Message Type Message_Type Enum (Message Type) The type of message being sent
Timestamp Time_Stamp Long ((Time Stamp) The time the message was sent
Sender Module Type SenderModuleType String The module type of the sender module
Sender Module Name SenderModuleName String The name of the sender module
Sender Queue Name SenderQueueName String The inbox queue of the sender queue
Destination Queue Name DestinationQueueName String Which queue to send the message to
Sequence Number SequenceNumber Integer The sequence number of the message
Needs ACK NeedsACK Boolean If the message requires an ACK reply
Reply To Sequence Number ReplyToSequenceNumber Integer (Optional) the sequence number of a message this message is a reply too. If this message is not a reply to another message, don’t use this JSON key in the message.

GIFT User Session Message Header

Requires GIFT Message Header

Property Name JSON Key Value Type Description
User ID userId Integer The ID of the user
Username username String The username of the GIFT user

GIFT Domain Session Message Header

Requires GIFT User Session Message Header

Property Name JSON Key Value Type Description
Domain Session ID SessionId Integer The ID of the domain session
Experiment ID experimentId String (optional) unique id of an experiment if this domain session is part of an experiment session.

GIFT Messages

Message Name Message Type Enum Value Header Type Payload
ACK ACK Message,
Domain Session Message,
User Session Message *
None
Active Domain Sessions Request ActiveDomainSessionsRequest Message None
Active Domain Sessions Reply ActiveDomainSessionsReply Message Domain Session List
Active User Sessions Request ActiveUserSessionsRequest Message None
Active User Sessions Reply ActiveUserSessionsReply Message User Session List
Chat Log ChatLog Domain Session Message Chat Log
Close Domain Session Request CloseDomainSessionRequest Domain Session Message Close Domain Session Request
Collision Collision Domain Session Message Collision
Course State CourseState Domain Session Message Course State
Detonation Detonation Message Detonation
Display AAR Tutor Request DisplayAarTutorRequest Domain Session Message Display AAR Tutor Request
Display Chat Window Request DisplayChatWindowRequest Domain Session Message Display Chat Window Request
Display Chat Window Update Request DisplayChatWindowUpdateRequest Domain Session Message Display Chat Window Update Request
Display Course Init Instructions Request DisplayCourseInitInstructionsRequest Domain Session Message Display Course Init Instructions Request
Display Feedback Tutor Request DisplayFeedbackTutorRequest Domain Session Message Tutor User Interface Feedback
Display Feedback Gateway Request DisplayFeedbackGatewayRequest Domain Session Message String Payload – the feedback message
Display Feedback Embedded Request DisplayFeedbackEmbeddedRequest Domain Session Message String Payload – the feedback message
Display Leaner Actions Tutor Request DisplayLearnerActionsTutorRequest Domain Session Message Display Learner Actions Tutor Request
Display Lesson Material Tutor Request DisplayLessonMaterialTutorRequest Domain Session Message Display Media Collection Request
Display Message Tutor Request DisplayMessageTutorRequest Domain Session Message Display Message Tutor Request
Display Mid-Lesson Media Tutor Request DisplayMidLessonMediaTutorRequest Domain Session Message Display Mid-Lesson Media Request
Display Survey Tutor Reply DisplaySurveyTutorReply Domain Session Message * Survey Response
Display Survey Tutor Request DisplaySurveyTutorRequest Domain Session Message Survey
Display Guidance Tutor Request DisplayGuidanceTutorRequest Domain Session Message Display Guidance Tutor Request (Base)
Domain Options Request DomainOptionsRequest User Session Message Domain Options Request
Domain Options Reply DomainOptionsReply User Session Message * Domain Option List
Domain Selection Reply DomainSelectionReply User Session Message * Domain Session
Domain Selection Request DomainSelectionRequest User Session Message Domain Selection Request
Domain Session Start Time Request DomainSessionStartTimeRequest Message Integer
Domain Session Start Time Reply DomainSessionStartTimeRequest Message Long
Entity State EntityState Message Entity State
Environment Control EnvironmentControl Domain Session Message Environment Control
Experiment Course Request ExperimentCourseRequest Message Experiment Course Request
Gateway Module Status GatewayModuleStatus Message Gateway Module Status
Generic JSON Status GenericJSONState Domain Session Message Generic JSON State
Geolocation Geolocation Domain Session Message Geolocation
Get Experiment Request GetExperimentRequest Domain Session Message * Get Experiment Request
Get Experiment Reply GetExperimentReply Domain Session Message * Data Collection Item
Get Survey Reply GetSurveyReply Domain Session Message * Survey Gift Data
Get Survey Request GetSurveyRequest Domain Session Message Get Survey Request
Initialize Domain Session Request InitializeDomainSessionRequest Domain Session Message Initialize Domain Session Request
Initialize Embedded Connections InitializeEmbeddedConnections Domain Session Message Initialize Embedded Connections
Initialize Interop Connections InitializeInteropConnections Domain Session Message Initialize Interop Connections
Initialize Lesson Request InitializeLessonRequest Domain Session Message None
Initialize Pedagogical Model Request InitializePedagogicalModelRequest Domain Session Message Initialize Pedagogical Model Request
Instantiate Learner Request InstantiateLearnerRequest Domain Session Message Instantiate Learner Request
Interop Connections Info InteropConnectionsInfo Domain Session Message * Interop Connections Info
Kill Module KillModule Message None
Learner State LearnerState Domain Session Message Learner State
Learner Tutor Action LearnerTutorAction DoDomain Session Message Learner Tutor Action
Lesson Completed LessonCompleted Domain Session Message None
Lesson Started LessonStarted Domain Session Message None
LMS Data Reply LMSDataReply User Session Message * LMS Course Records
LMS Data Request LMSDataRequest User Session Message LMS Data Request
Load Progress LoadProgress Domain Session Message Generic JSON State
Login Reply LoginReply User Session Message * User Data
Login Request LoginRequest User Session Message Login Request
Logout Request LogOutRequest User Session Message None
LoS Query LoSQuery Domain Session Message Line of Sight Query
LoS Result LoSResult Domain Session Message Line of Sight Result
Get Lti User Request LtiGetUserRequest Message LTI Get User Request
Get Lti User Reply LtiGetUserReply Message LTI Get User Reply
Module Allocation Reply ModuleAllocationReply Message Module Allocation Reply
Module Allocation Request ModuleAllocationRequest Message Module Allocation Request
Module Status ModuleStatus Message Module Status
NACK NACK Message,
Domain Session Message,
User Session Message *
NACK
New User Request NewUserRequest Message User Data
Pedagogical Request PedagogicalRequest Domain Session Message Pedagogical Request
Performance Assessment PerformanceAssessment Domain Session Message Performance Assessment
PowerPoint State PowerPointState Message PowerPoint State
Publish Lesson Score Request PublishLessonScoreRequest Domain Session Message Publish Lesson Score Request
Publish Lesson Score Reply PublishLessonScoreReply Domain Session Message Publish Lesson Score Response
Processed ACK ProcessedACK Message,
Domain Session Message,
User Session Message *
None
Processed NACK ProcessedNACK Message,
Domain Session Message,
User Session Message *
NACK
Rifle Shot RifleShot Message Rifle Shot
Sensor Data SensorData Domain Session Message Unfiltered Sensor Data
Sensor Status SensorStatus User Session Message Sensor Status
Sensor File Created SensorFileCreated Domain Session Message Sensor File Created
Sensor Filter Data SensorFilterData Domain Session Message Filtered Sensor Data
SIMAN Siman Domain Session Message Siman
Simple Example State SimpleExampleState Domain Session Message Simple Example State
Start Domain Session StartDomainSession Domain Session Message None
Start Resume StartResume Message Start Resume
Stop Freeze StopFreeze Message Stop Freeze
Subject Created SubjectCreated User Session Message Subject Created
Submit Survey Results SubmitSurveyResults Domain Session Message Submit Survey Results
SurveyCheckRequest SurveyCheckRequest User Session Message Survey Check Request
SurveyCheckResponse SurveyCheckResponse User Session Message Survey Check Response
TrainingAppSurveyResponse TrainingAppSurveyResponse User Session Message Survey Response
TrainingAppSurveySubmit TrainingAppSurveySubmit Domain Session Message None
Tutor Module Status TutorModuleStatus Message Tutor Module Status
TutorSurveyQuestionResponse TutorSurveyQuestionResponse Domain Session Message Question Response
User Id Request UserIdRequest Message String Payload – the GIFT username to use to lookup the user id
User Id Reply UserIdReply Message User Data
Vibrate Device Request VibrateDeviceRequest Domain Session Message Vibrate Device
Weapon Fire WeaponFire Message Weapon Fire
  • - Fill in the proper Sequence Number for the reply.

GIFT Payloads

Affective State

Property Name JSON Key Value Type Description
Attributes attributes Map (Enum (Learner State Attribute Name), Learner State Attribute) Attributes that describe the affective state of the learner
Class stateType String Unique name of an affective state object (value is “AffectiveState”)

After Action Review Course Event

Requires: After Action Review Event (Base)
Assigned Values: Class = AfterActionReviewCourseEvent

Property Name JSON Key Value Type Description
Graded Score Node Graded_Score_Node Object (Graded Score Node) The graded score node of the event

After Action Review Event (Base)

Property Name JSON Key Value Type Description
Class eventType String The class of the event type

After Action Review Survey Event

Requires: After Action Review Event (Base)
Assigned Values: Class = AfterActionReviewSurveyEvent

Property Name JSON Key Value Type Description
Scores Scores Object (Score (Base)) The score of the survey reponse
Survey Response Metadata Survey_Response_Metadata Object (Survey Response Metadata) The metadata of the response to the survey

Answer Score (Base)

Requires: Score (Base)
Assigned Values: Class = AbstractAnswerScore

Property Name JSON Key Value Type Description
Class answerScoreType String The score of the survey reponse
Total Earned Points Total_Earned_Points Integer The total points earned
Highest Possible Points Highest_Possible_Points Integer The highest possible points

Assessment (Base)

Property Name JSON Key Value Type Description
Name name String Name of the item being assessed
Assessment assessment Enum (Assessment Level) Assessment of the item
Time time String (Time Stamp) Time when the last assessment was calculated
ID id Integer Unique performance id that maps to this assessment
Priority Priority Integer (Optional) the current priority value of the performance assessment node. Priority can be used to filter pedagogical strategies.
Class assessmentType String Unique name of an assessment object (Concept Assessment, Intermediate Concept Assessment, Task Assessment)
State state The name value of the enum PerformanceNodeStateEnum (e.g. FINISHED) Used to show the runtime assessment state of a task/concept which can be used for time on task analysis

Attribute Scorer Properties

Property Name JSON Key Value Type Description
Type Type Enum (Learner State Attribute Name) The learner state to apply to the result of the scoring conditions.
Return Conditions Return_Conditions List ( Object (Return Value Condition)) The list of conditions to use for scoring

Avatar Data

Property Name JSON Key Value Type Description
URL avatarURL String The URL of the avatar to display, cannot be null
Width avatarWidth Integer The width of the avatar to display, cannot be null
Height avatarHeight Integer The height of the avatar to display, cannot be null

Branch Adaptation Strategy

Property Name JSON Key Value Type Description
Quadrant quadrant Enum (Merrill Quadrant) The Merrill quadrant the strategy is associated with.
Attributes attributes Array (Object (Metadata Attribute Item)) List of metadata attributes used to find matching domain metadata files.
Next Quadrant nextQuadrant String {Rule, Example, Recall, Remediation, Practice} The next quadrant to branch too
Remediation Map remediation Map <String, JSONArray> Map of concept to prioritized list of Passive, Active, Constructive remediation objects
Is Skill isSkill boolean (optional) whether the advancement concept list (below) is based on skill assessment/state as opposed to knowledge
Advancement advancement JSONArray <JSONObject> (optional) list of concepts (and reasons) the learner has mastered enough to move on and no longer need remediation for
Reason reason String (optional) why the learner allowed to skip or move on from the current quadrant
Concept concept String A course concept
Label label String A GIFT learner state attribute value (e.g. Expert) that would correspond to a learner state attribute type (e.g. Knowledge)
Type type String (class name) {ProgressionInfo, RemediationInfo, AdvancementInfo} The name of the class used to handle the type of strategy
Is After Practice afterPractice boolean (optional) only needs to be defined if this adaptation is for remediation. True if the remediation is after practice phase.
Remediation Type remediationType String (class name) {ActiveRemediationConcept, ConstructiveRemediationConcept, PassiveRemediationConcept) (optional) only needed for remediation adaptation. Used to determine how to handle this payload.

Burst Descriptor

Property Name JSON Key Value Type Description
Munition Type munitionType Object (Entity Type) The type of munition used
Warhead warhead Integer Type of warhead used
Fuse fuse Integer Type of fuse used
Quantity quantity Integer Number of rounds fired in the burst
Rate rate Integer Rounds per minute

Category

Property Name JSON Key Value Type Description
ID Category_Id Integer The ID of the category
Name Category_Name String The name of the category

Chat Log

Property Name JSON Key Value Type Description
Chat Id Id Integer The unique id of a chat session used to match/sync chat updates and requests together.
Tutor Entries tutor Array (Object (String Payload)) The chat messages from the tutor
User Entries user Array (Object (String Payload)) The chat messages from the user

Clear Text Action

Property Name JSON Key Value Type Description
No properties used - - -

Close Domain Session Request

Property Name JSON Key Value Type Description
Reason String String (optional) a message about why the domain session is closing.

Collision

Property Name JSON Key Value Type Description
Issuing Entity issuingId Object (Entity Identifier) The unique identifier for the entity that is issuing the collision information.
Colliding Entity collidingId Object (Entity Identifier) The unique identifier for the entity which has collided with the issuing entity.
Collision Type type Integer Type of collision

Cognitive State

Property Name JSON Key Value Type Description
Attributes attributes Map (Enum (Learner State Attribute Name, Object (Learner State Attribute)) Attributes that describe the affective state of the learner
Class stateType String Unique name of a cognitive state object (value is “CognitiveState”)

Concept Assessment

Requires: Assessment
Assigned Values: Class = ConceptAssessment

Concept Parameter

Property Name JSON Key Value Type Description
Concept Name conceptName String The name of a concept
Parameters parameters Array (Question Type Parameter) Contains additional parameters for this concept such as the number of questions needed in the survey request response.
Preferred Questions preferQuestions Array (Integers) A list of unique question ids for questions that are preferred to be given in the survey request response. Can be empty.
Questions to Avoid avoidQuestions Array (Integers) A list of unique question ids for questions that should be not be given in the survey request response. Can be empty.

Concept Performance State

Property Name JSON Key Value Type Description
State state Object (Performance State Attribute) Performance state of the concept

Course State

Property Name JSON Key Value Type Description
Merrill Quadrant quadrant Enum (Merrill Quadrant) (Optional) the current Merrill quadrant the course is at in its list of transitions.

Default Raw Score

Requires: Raw Score
Assigned Values: Class = DefaultRawScore

Property Name JSON Key Value Type Description
Value value String Value of the score

Detonation

Property Name JSON Key Value Type Description
Firing Entity ID firingEntityID Object (Entity Identifier) ID of the firing entity
Target Entity ID targetEntityID Object (Entity Identifier) ID of the target entity
Munition ID munitionID Object (Entity Identifier) ID of the munition
Event ID eventID Object (Event Identifier) ID of the detonation event
Velocity velocity Object (Vector 3d) Velocity of the detonation
Location location Object (Vector 3d) Location of the detonation
Detonation Result detonationResult Enum (Detonation Result) Result of the detonation

Display AAR Tutor Request

Property Name JSON Key Value Type Description
Events Events Array(Object(After Action Review Event (Base))) The list of events that happened
Fullscreen fullscreen Boolean (optional) If the AAR should be presented in full screen mode on the tutor user interface.
Title Title String The title of the structured review webpage. This can be authored if the course contains a structured review

Display Avatar Action

Assigned Values: Class = DisplayAvatarAction

Property Name JSON Key Value Type Description
Avatar avatarData Object (Avatar Data) The avatar to display
Avatar Action Type avatarActionType String The class of the avatar action type
Preload Only preloadOnly boolean Whether the TUI should only preload the avatar or if it should display it as well (default: false)

Display Chat Window Request

Property Name JSON Key Value Type Description
Chat Id Id Integer The unique id of a chat session used to match/sync chat updates and requests together.
Avatar avatar Object (Display Avatar Action) The avatar action to perform
Tutor Name tutor String The name of the tutor, cannot be null
User Name User String The name of the user, cannot be null
Bypass bypass Boolean If the user can bypass the chat before it is complete
Fullscreen fullscreen Boolean If the chat window should be presented in fullscreen mode

Display Chat Window Update Request

Property Name JSON Key Value Type Description
Chat Id Id Integer The unique id of a chat session used to match/sync chat updates and requests together.
Avatar Action action Object (Display Avatar Action) The avatar action to perform
Text text String The text that was said by the tutor
Closed closed String If the chat session has been closed

Display Course Init Instructions Request

Property Name JSON Key Value Type Description
Gateway State gwState String (mil.arl.gift.common.-DisplayCourseInitInstructionsRequest.-GatewayStateEnum) The enumerated gateway module states related to initializing a course.
Asset URLs assetURLs Array (String) (Optional) Collection of URLs that can be reached by the tutor client and should be downloaded onto the client's computer for use in the current GIFT course execution. Example: Java Web Start Gateway module JNLP file

Display Guidance Tutor Request (Base)

Property Name JSON Key Value Type Description
Display Duration Display_Duration Integer (Optional) How long to display the guidance
Fullscreen Fullscreen Boolean (Optional) If the guidance takes up the full screen
Class Class String The class of what type of guidance to give

Display HTML Page Guidance Tutor Request

Requires: Display Guidance Tutor Request (Base)
Assigned Values: Class = DisplayHtmlPageGuidanceTutorRequest

Property Name JSON Key Value Type Description
URL URL String The URL of the web page to display
Message MESSAGE String (Optional) A message to display to the user with the web page

Display Learner Actions Tutor Request

Property Name JSON Key Value Type Description
Action List Actions_List Array (Object (Learner Action)) List of learner actions that the user can take
Scenario Controls Scenario_Controls Scenario Controls Controls that user can use to influence an active scenario

Display Media Collection Request

Property Name JSON Key Value Type Description
Lesson Material LessonMaterial (Object (Lesson Material)) Lesson Material with media to display

Display Mid-Lesson Media Request

Property Name JSON Key Value Type Description
Lesson Material List LessonMaterialList (Object (Lesson Material List)) Lesson material list with media to display

Display Media Tutor Request

Property Name JSON Key Value Type Description
Media List Media_List Array (Object (Media Item)) Array of URIs for media to display

Display Message Tutor Request

Property Name JSON Key Value Type Description
Guidance Guidance (Object (Guidance)) The course.generated.Guidance object containing the message to display. (see GIFT\config\domain\course\course.xsd for XML structure)

Display Scripted Avatar Action

Requires: Display Avatar Action (Base)
Assigned Values: Class = DisplayScriptedAvatarAction

Property Name JSON Key Value Type Description
Action action String The key of the action to perform

Display Text Action

Property Name JSON Key Value Type Description
Text text String The text to display
Delivery Settings deliverySettings String An XML string that is formatted against the GIFT/config/domain/dkf/dkf.xsd XML element, uniquely, named ‘InTutor’.

Display Text Guidance Tutor Request

Requires: Display Guidance Tutor Request (Base)
Assigned Values: Class = DisplayTextGuidanceTutorRequest

Property Name JSON Key Value Type Description
Text text String The text to display

Display Text To Speech Avatar Action

Requires: Display Avatar Action (Base)
Assigned Values: Class = DisplayTextToSpeechAvatarAction

Property Name JSON Key Value Type Description
Text text String The text to say

Display Text Tutor Request

Property Name JSON Key Value Type Description
Text Text String Text to display
Beep BeepOnDisplay Boolean (Optional) True if a beep sound should be played when displaying the text, false otherwise
Highlight Text HighlightText Boolean (Optional) True if the text to display should be highlighted when displayed, false otherwise
Display Duration DisplayDuration Integer (Optional) How long to display the text before it should be hidden

Domain Option

Property Name JSON Key Value Type Description
Domain Name Domain_Name String Name of the domain option
Domain ID Domain_ID String ID of the domain option
Description description String (Optional) description of the domain.
Recommendation recommendation Object (Domain Option - Recommendation) (Optional) information about whether the domain option is recommended, not recommended, or unavailable and why.
Concepts concepts List (String) (Optional) concepts related to the course
Username User_Name String (Optional) the name of the user requesting to build the domain option data
Permissions permissions List (Domain Option - Permissions) (Optional) the permission information for all users that have access to this domain

Domain Option - Recommendation

Property Name JSON Key Value Type Description
Recommendation type Enum ( Domain Option - Recommendation ) Enumerated reason on whether the domain option is recommended, not recommended, or unavailable to the user for selection.
Reason reason String (Optional) a description about the reason of the recommendation.
Details details String (Optional) details about the reason for the recommendation.

Domain Option - Permissions

Property Name JSON Key Value Type Description
Permission User permission_user String the username that the permissions apply to
Permission Type permission_type Enum( Shared Permissions Enum ) the type of permission the user has
Permissions Is Owner permission_is_owner Boolean indicates if the user is the owner of the domain option

Domain Option List

Property Name JSON Key Value Type Description
Domain Options DomainOptions Array (Object (Domain Option)) Array of Domain Option objects

Domain Options Request

Property Name JSON Key Value Type Description
Client Info clientInfo Object (WebClient Information) Information about the tutor client
LMS User Name LMSUsername String (Optional) the LMS username for a GIFT user

Domain Selection Request

Property Name JSON Key Value Type Description
Domain Runtime id DomainName String The selected domain runtime id which is the path to the course used when taking the course
Domain Sourece id DomainSource String The selected domain source id which is the to the authored course
LMS Username LmsUsername String Name of the learner selecting this domain
Client Info clientInfo Object(WebClient Information ) Information about the tutor client
Runtime Params runtimeParams Object {LTI Runtime Params} (optional) Abstract runtime parameters that can be passed into the domain when started.

Domain Session

Property Name JSON Key Value Type Description
Domain Session ID dsId Integer Unique ID of the newly created domain session
Domain Name name String The course runtime id which is the path to the course used when taking the course
Experiment ID experimentId String (optional) unique experiment id if this domain session is part of an experiment
Domain Source ID domainSourceId String The course source id which is the path to the authored course

Domain Session List

Property Name JSON Key Value Type Description
Domain Sessions DomainSessions Array (Object (Domain Session)) Array of Domain Session objects

Entity Appearance

Property Name JSON Key Value Type Description
Posture posture Enum (Posture) Posture of the entity
Damage damage Enum (Damage) Damage taken by the entity

Entity Identifier

Property Name JSON Key Value Type Description
Entity ID entityID Integer Unique ID for entity
Simulation Address simulationAddress Object (Simulation Address) Simulation Address of the entity

Entity State

Property Name JSON Key Value Type Description
Entity ID entityID Object (Entity Identifier) Unique ID of the entity
Entity Type entityType Object (Entity Type) Type of the entity
Force ID forceID Integer Identifier of the entity’s force
Linear Velocity linearVelocity Object (Vector 3d) Linear velocity of the entity
Location location Object (Point 3d) Location of the entity
Orientation orientation Object (Vector 3d) Orientation of the entity
Appearance appearance Object (Entity Appearance) Appearance of the entity

Entity Type

Property Name JSON Key Value Type Description
Entity Kind Entity_Kind Integer ID of the entity’s kind
Domain Domain Integer ID of the entity’s domain
Country Country Integer ID of the entity’s country
Category Category Integer ID of the entity’s category
Subcategory Subcategory Integer ID of the entity’s subcategory
Specific Specific Integer Entity specific field
Extra Extra Integer Entity extra field

Environment Control

Property Name JSON Key Value Type Description
Environment Type EnvironmentType Enum (Environment Control) Type of environment control

Event Identifier

Property Name JSON Key Value Type Description
Event ID eventID Integer Unique ID of the event
Simulation Address simulationAddress Object (Simulation Address) Simulation address of the event

Data Collection Item

Property Name JSON Key Value Type Description
Experiment ID Id String The unique id of this experiment in this GIFT instance
Experiment Name Name String The non-unique display name of this experiment
Experiment Course Folder CourseFolder String The location of the course folder in GIFT (currently in Domain/Experiments/)
URL URL String The URL for subjects to execute the experiment's course
Author AuthorUserName String The username of the author of the experiment (experimenter)
Description Description String A description about the experiment.
Status Status Enum (Experiment Status) Legacy in 2019-1 forward. The experiment current status
Subjects Subjects List (Experiment Subject) Legacy in 2019-1 forward. List of subjects that have started this experiment (can be empty)
Subject size SubjectSize long The number of experiment participants that have started this experiment. If LTI result size is > 0 this will always be 0.
Subject Last Attempt SubjectLastAttempt String The date at which the last experiment was started by a learner. Will not be provided if subject size is 0.
LTI result size LtiResultsSize long The number of LTI participants that have started this published course instance through LTI. If subject size is > 0 this will always be 0.
LTI result last attempt LtiResultsLastAttempt String The date at which the last LTI experience was started by a learner. Will not be provided if LTI result size is 0.

Experiment Subject

Property Name JSON Key Value Type Description
Subject Id Id Experiment Subject Id The unique id of this subject in an experiment
Start Time StartTime String The start time of the course for this subject instance
End Time EndTime String The end time of the course for this subject instance
Domain Session Message log file name MessageLogFile String The file name of the GIFT domain session message log file for this subject's execution of the experiment's course

Experiment Subject Id

Property Name JSON Key Value Type Description
Subject Id SubjectId int The unique id of this subject in a specific experiment. The value could be the same for other subjects in other experiments, therefore you need the experiment id to uniquely identify this user among all GIFT users, subject or not.
Experiment Id ExperimentId String The unique experiment id this subject is apart of

Experiment Course Request

Property Name JSON Key Value Type Description
Experiment Id EXPERIMENT_ID String The unique experiment id to retrieve and start it's course for a subject
Client Info CLIENT_INFO Object(WebClient Information ) Information about the tutor client
Pre Session Id PRE_SESSION_ID String An id created by the tutor and used to identify the tutor client request to start a subject in an experiment's course.

Filtered Sensor

Property Name JSON Key Value Type Description
Filter Name FilterName String Name of the filter used
Sensor Name SensorName String Name of the sensor where the data is coming from
Elapsed Time ElapsedTime Long Total milliseconds from the start of the domain session
Attribute Values AttributeValues Map (Enum (Sensor Attribute Name), Sensor Attribute Value) Attribute/Value pairs that hold the sensor data
Sensor Type SensorType Enum(Sensor Type) Type of sensor

Folder

Property Name JSON Key Value Type Description
ID Folder_Id Integer The ID of the folder
Name Folder_Name String The name of the folder

Free Response Reply Weights

Property Name JSON Key Value Type Description
Reply Weights REPLY_WEIGHTS List ( List ( List ( double))) The reply weights for a free response survey question where the first list is the row index of the response field, the first inner list is the index of the condition, and the most inner list is the score weight, (optional) min range value, and (optional) max range value, respectively. (i.e. [1][1][2] is the 2nd response field's 2nd condition's max range value, using zero-based array indexing).

Gateway Module Status

Property Name JSON Key Value Type Description
Topic Name topicName String Name of the current topic
Status status Object (Module Status) Status of the Gateway Module

Generic JSON State

Property Name JSON Key Value Type Description
Unique id messageUniqueId String A UUID that is unique to the sender.
JSON string n/a JSON string This is a JSON encoded string that is simply added to the JSON payload. There are zero or more keys depending on the JSON string for the Generic JSON state (e.g. {“firingEntityId._entityID”:17}, {“velocity._z”:123.567} )

Geolocation

Property Name JSON Key Value Type Description
Coordinates Property coordinates Object (Point 3d) The geodetic (GDC) coordinates of the location (i.e. longitude, latitude, altitude)
Accuracy Property accuracy Double The accuracy of the location's latitude and longitude coordinates
Altitude Accuracy Property altitudeAccuracy Double The accuracy of the location's altitude coordinate
Heading Property heading Double The direction of travel at the location, in degrees clockwise from north
Speed Property speed Double The speed of travel at the location, in meters per second

Get Survey Request

Property Name JSON Key Value Type Description
Gift Key GiftKey String Key for the survey being requested
Survey Context ID SurveyContextId Integer Unique ID of the survey context that is associated with the survey being requested
Concepts Concepts Map (Concept Parameter) (Optional) Mapping of concept name to the request details for that concept (e.g. number of questions). This is only needed if the survey being requested in a knowledge concept survey created from a question bank from the survey context.

Get Experiment Request

Property Name JSON Key Value Type Description
Experiment Id ExperimentID String Key for the experiment being requested

Graded Score Node

Requires: Score Node
Assigned Values: Class = GradedScoreNode

Property Name JSON Key Value Type Description
Node Grade grade Enum (Pass Fail) The score of the node
Children Nodes children Map (String, Object (Score Node) The children of this node

Image Properties

Assigned Values: Class = ImageProperties

Initialize Domain Session Request

Property Name JSON Key Value Type Description
Course File Name courseFileName String The name of the Course file being used for an entire domain session
Topic ID topicId String The id used to identify the unique tutor topic and gateway topic for a domain session

Initialize Embedded Connections

Property Name JSON Key Value Type Description
Urls urls Array (String) The list of urls that specify the location of the embedded apps. Currently only a single url is supported.

Initialize Interop Connections

Property Name JSON Key Value Type Description
Interop Connections interops Array (String) The list of interop interface class implementation names (e.g., gateway.interop.dis.DISInterface). Refer to the interopConfig.xml and interopConfig.xsd for more information.
Content Server Address contentServerAddr String The domain module’s content server (currently a jetty instance) address that host’s domain content (e.g. PowerPoint show) used in a GIFT course.

Initialize Pedagogical Model Request

Property Name JSON Key Value Type Description
Actions actions String The XML actions element of a Course or DKF that contains action information for the pedagogical module to initialize with.
Course Actions isCourseActions Boolean Whether or not the actions element is from a course (versus a DKF).
Configuration configuration String The content of the configuration xml file that contains information for the pedagogical model to initialize with.

Instantiate Learner Request

Property Name JSON Key Value Type Description
LMS Username LMSUserName String LMS username of learner to instantiate
Configuration configuration String The content of the configuration xml file that contains information for the learner model to initialize with.

Intermediate Concept Assessment

Requires: Assessment
Assigned Values: Class = IntermediateConceptAssessment

Property Name JSON Key Value Type Description
Concepts concepts Array (Assessment (Base)) List of assessment objects. This object allows for theoreticalinfinite nesting of a task/concept hierarchy.

Interop Connections Info

Property Name JSON Key Value Type Description
Message Types types Array (Message Type Enum) List of message types the current initialized gateway module interop plugins can receive and handle from GIFT

Learner Action

Property Name JSON Key Value Type Description
Type type Enum (Learner Action Type) The type of learner action taken
Name name String The name of the action taken

Scenario Controls

Property Name JSON Key Value Type Description
Prevent Manual Stop PreventManualStop Boolean Whether or not the user should be allowed to manually stop an active scenario

Learner State Attribute

Requires: Learner State Attribute (Base)
Assigned Values: Class = LearnerStateAttribute

Learner State Attribute (Base)

Property Name JSON Key Value Type Description
Name attributeName Enum (Learner State Attribute Name) Name of the learner state attribute
Short Term shortTerm Enum Short term state
Note: technically any enumeration value will suffice, however only some are properly decoded
Short Term Timestamp shortTermTimestamp long The timestamp at which the short term learner state value was created. Value is epoch time.
Long Term longTerm Enum Long term state
Note: technically any enumeration value will suffice, however only some are properly decoded
Long Term Timestamp longTermTimestamp long The timestamp at which the long term learner state value was created. Value is epoch time.
Predicted predicted Enum Predicted state
Note: technically any enumeration value will suffice, however only some are properly decoded
Predicted Timestamp predictedTimestamp long The timestamp at which the predicted learner state value was created. Value is epoch time.
Class learnerStateAttributeType String Unique name of a learner state attribute object (Learner State Attribute)

Learner State

Property Name JSON Key Value Type Description
Performance State Performance Object (Performance State) Performance State of the learner
Cognitive State Cognitive Object (Cognitive State) Cognitive State of the learner
AffectiveState Affective Object (Affective State) Affective State of the learner

Learner Tutor Action

Property Name JSON Key Value Type Description
Action action Object ({String: "RadioUsed", String: "ExplosiveHazardSpotReport", String: "NineLineReport", String: "SpotReport", String: "PaceCountStarted", String: "PaceCountEnded", Tutor Me Learner Tutor Action}), String: "FinishScenario" Action that is packed in this message
Learner Action attributes learnerAction A serialized instance of generated.dkf.LearnerAction Attributes associated with the learner action (e.g. description, display name)

Lesson Material

Assigned Values: Class = LessonMaterial

Property Name JSON Key Value Type Description
Name transitionName String The name of this transition
Lesson Material List lessonMaterialList Object The generated.course.LessonMaterialList object. (see GIFT\config\domain\course\course.xsd for XML structure)
Lesson Material Files lessonMaterialFiles Object The generated.course.LessonMaterialFiles object. (see GIFT\config\domain\course\course.xsd for XML structure)

Lesson Material List

Assigned Values: Class = LessonMaterialList

Property Name JSON Key Value Type Description
Media media Object A List of generated.dkf.Media objects. (see GIFT\config\domain\dkf\dkf.xsd for XML structure)

List Option

Property Name JSON Key Value Type Description
ID Id Integer The ID of the list option
Text Text String The list option text
Option List ID Option_List_Id Integer The ID of the option list that contains this

LMS Connection Info

Property Name JSON Key Value Type Description
Name name String Unique name of the LMS connection.

LMS Course Record

Property Name JSON Key Value Type Description
ID Id Integer The course record unique id in the particular LMS.
Domain domain String (optional) The domain name for this record.
Root root Object (Graded Score Node) Scores from the course history.
Date date String (Time Stamp) Date on which the record was created.
LMS Connection connection Object (LMS Connection Info) (Optional) Information about the LMS this record is from.

LMS Course Records

Property Name JSON Key Value Type Description
Course History CourseHistory Array (Object (LMS Course Record)) Array of course records that represent the course’s history
Assessments Assessments Map (String, Enum (Assessment Level)) Map of skills to an overall assessment level

LMS Data Request

Property Name JSON Key Value Type Description
Username UserName String Username of the learner from which data should be given
Published Score Responses publishedResponses Array (Publish Lesson Score Response) (Optional: can be empty) The list of published score response objects containing the high level identifiers of LMS data that is being requested.
Page Start Index PageStart Integer The index in the query to start getting scores (Ignored if Score Keys is set)
Page Size PageSize Integer How many scores to return (Ignored if Score Keys is set)
Sort Descending SortDescending Boolean If the scores should be sorted with the newest listed first
Domain names DomainNames Array (String) Used to filter for LMS records on specific domains/courses, can be empty if wanting all records

Line of Sight Query

Property Name JSON Key Value Type Description
Locations locations Array (Object (Point 3d)) Array of point locations to test Line of Sight on

Line of Sight Result

Property Name JSON Key Value Type Description
Locations locations Map (Object (Point 3d), Double) Map from original Line of Sight query locations to visibility percentage

Login Request

Property Name JSON Key Value Type Description
User ID userId Integer Unique ID of the user
Username username String The GIFT username of the user (optional in cases where the user doesn’t have a username)
User Type userType String {"GIFT_USER", "EXPERIMENT_USER", "LTI_USER"} Enum to record the different types of user sessions that can exist in GIFT

LTI Get User Request

Property Name JSON Key Value Type Description
Consumer Key consumerKey String The LTI consumer key (typically a UUID) that corresponds to the lti launch request for a user.
Consumer Id consumerId String The LTI consumer id that corresponds to the lti launch request for a user.

LTI Get User Reply

Property Name JSON Key Value Type Description
Consumer Key consumerKey String The LTI consumer key (typically a UUID) that corresponds to the lti launch request for a user.
Consumer Id consumerId String The LTI consumer id that corresponds to the lti launch request for a user.
Global user id globalUserId Long (optional) only one of the userId, experimentId, or globalUserId should be set at a time. The global user id that references the global id of the user.
LTI Launch Request Timestamp ltiTimestamp Long Epoch value of the timestamp when the lti user initiated the last launch request.

LTI Runtime parameters

Property Name JSON Key Value Type Description
Consumer Key consumerKey String The consumer key that made the lti launch request.
Service URL serviceUrl String The lis outcome service url, this is the url where GIFT will report a score value back to.
LIS sourced Id lisSourcedid String The lis sourcedid, which identifies who and what course the score will be reported back to.

LTI User Id

Property Name JSON Key Value Type Description
Consumer Key ConsumerKey String The consumer key of the lti user
Consumer Id ConsumerId String The consumer id of the lti user.

LTI User Session Details

Property Name JSON Key Value Type Description
Data Set Id DataSetId String The data collection data set id that corresponds to the user session.
LTI User Id LtiUserId LTI User Id The lti user id of the user
Global User Id GlobalUserId Long Each user session details that are made in the future, should provide a global user id that identifies the user in the user session. This id represents a unique id in the globaluser UMS database table which indicates a unique id for a user in the gift instance.

Matrix of Choices Reply Weights

Property Name JSON Key Value Type Description
Reply Weights REPLY_WEIGHTS List ( List ( double)) The reply weights for a matrix of choices survey question where the first list is the row index and the inner list is the column index (i.e. [1][3] is the 4th item in the 2nd row using zero-based array indexing).

Media Item

Property Name JSON Key Value Type Description
URI URI String URI of the media
Name Name String Name of the media
Class properties String The name of the class of the properties object
Properties Object (PDF Properties) or Object (Webpage Properties) or Object (Youtube Video Properties ) or Object (Video Properties) or Object (Image Properties) Properties of the media, at this level of the hierarchy

Metadata Attribute Item

Property Name JSON Key Value Type Description
Attribute attribute String A string representation of the metadata XML element from the metadata.xsd.
Priority priority Integer A priority value for this metadata.

Module Allocation Request

Property Name JSON Key Value Type Description
Requestor Information Requestor Module Status The module status information for the module requesting that another module be allocated to it.
Allocated Modules Allocated_Modules Map (Module Type, Module Status*) Map of the modules that have already been allocated to the requesting module. This information can be used for sharing the same modules for a Domain Session.

*If the Module Type is equal to Gateway Module then the Module Type is mapped to the Gateway Module Status instead.

Module Allocation Reply

Property Name JSON Key Value Type Description
Request denied information RequestDenied String (optional) indicates why the module allocation request could not be satisfied.
Additional Information AdditionalInfo String (optional) provided additional information about why the request could not be satisfied. This is useful for providing help or developer details.

Module Status

Property Name JSON Key Value Type Description
Module Name Module_Name String Name of the module to report status
Queue Name Queue_Name String Name of the queue to send status to
Module Type Module_Type Enum (Module Type) Type of module the status is about
Module State State Enum (Module State) Type of state the module is in currently

NACK

Property Name JSON Key Value Type Description
Error Enumeration Error_Enum Enum (Error) Type of error this NACK is responding with
Error Message Error_Msg String Message that describes the error
Help Help String (optional) a help message for the user to resolve the error.

Number Payload

Property Name JSON Key Value Type Description
Number NumberPayload Number The number value

Option List

Property Name JSON Key Value Type Description
ID Id Integer The ID of the option list
Name Name String The name of the option list
Is Shared Is Shared Boolean If the option list is shared among questions
Options List_Options Array (List Option) The list of options for this list, in the order which they are presented
Visible to Usernames VisibleToUserNames Array (String) The usernames this option list is visible to
Editable to Usernames EditableToUserNames Array (String) The usernames that can edit this option list

PDF Properties

Assigned Values: Class = PDFProperties

Pedagogical Request

Property Name JSON Key Value Type Description
ID id Integer Performance node ID associated with this request
Name name String Performance node name associated with this request
Class requestType String Unique name of a pedagogical request object (Request Instructional Intervention, Request Mid-Lesson Media, Request Performance Assessment, Request Scenario Adaptation, Request Do Nothing) or “BranchAdpatationStrategy”
Request object n/a One of Request Instructional Intervention, Request Mid-Lesson Media, Request Performance Assessment, Request Scenario Adaptation, Request Do Nothing, Request Branch Adaptation The attributes based on the object type
Wait Time waitTime Double (optional) amount of time to wait in seconds before executing the strategy

Pedagogical Requests

Property Name JSON Key Value Type Description
Requests Requests Array (Pedagogical Request) Array of requests

Performance Assessment

Property Name JSON Key Value Type Description
Tasks tasks Array (Object (Task Assessment)) Array of task assessments for overall performance

Performance State Attribute

Requires: Performance State Attribute (Base)
Assigned Values: Class = PerformanceStateAttribute

Performance State Attribute (Base)

Property Name JSON Key Value Type Description
Name attributeName String Name of the learner performance state attribute
Short Term shortTerm Enum (Assessment Level) Short term assessment
Short Term Timestamp shortTermTimestamp long The timestamp at which the short term performance state value was created. Value is epoch time.
Long Term longTerm Enum (Assessment Level) Long term assessment
Long Term Timestamp longTermTimestamp long The timestamp at which the long term performance state value was created. Value is epoch time.
Predicted predicted Enum (Assessment Level) Predicted assessment
Predicted Timestamp predictedTimestamp long The timestamp at which the predicted performance state value was created. Value is epoch time.
ID id Integer Unique performance node ID that maps to this attribute
Priority Priority Integer (Optional) the current priority value of the performance assessment node. Priority can be used to filter pedagogical strategies.
Class performanceStateAttributeType String Unique name of a performance state attribute object (Performance State Attribute)
State state The name value of the enum PerformanceNodeStateEnum (e.g. FINISHED) Used to show the runtime assessment state of a task/concept which can be used for time on task analysis

Performance State

Property Name JSON Key Value Type Description
Tasks tasks Map (Integer, Object (Task Performance State)) Map from node ID to task performance states

Play Audio Action

Property Name JSON Key Value Type Description
MP3 File mp3File String The URL of the MP3 file to play
OGG File oggFile String (Optional) The URL of the OGG file to play

Point 3d

Property Name JSON Key Value Type Description
X X Double X coordinate of this point
Y Y Double Y coordinate of this point
Z Z Double Z Coordinate of this point

PowerPoint State

Property Name JSON Key Value Type Description
Slide Index slideIndex Integer The current slide index in the active PowerPoint show
Slide Count slideCount Integer Total number of slides in the active PowerPoint show
Error Message errorMsg String The error that the message describes

Publish Lesson Score Request

Property Name JSON Key Value Type Description
LMS Username LMSUserName String Username of learner to publish the score from
CourseData CourseData Object (LMS Course Record) Course record that contains the score

Publish Lesson Score Response

Property Name JSON Key Value Type Description
Records records Map (LMS Connection Info, Integer) A map of unique identifiers for the score record written for each LMS connection for a single publish lesson score request message.

Question

Property Name JSON Key Value Type Description
ID Id Integer The ID of the question
Text Question_Text String The question being asked
Reply Type Type Enum (Question Type) The type of question this is
Properties Properties Map (Enum (Survey Property Key), Object (Survey Item Property Value)) The properties of this question
Categories Categories Array (Category) The categories associated with this question
Visible to Usernames VisibleToUserNames Array (String) The usernames this question is visible to
Editable to Usernames EditableToUserNames Array (String) The usernames that can edit this question

Question Answer Score

Requires: Answer Score (Base)
Assigned Values: Class = QuestionAnswerScore

Property Name JSON Key Value Type Description
Reply Scores Reply_Scores Array (Object (Answer Score (Base))) The reply scores for the question

Question Scale Score

Requires: Scale Score (Base)
Assigned Values: Class = QuestionScaleScore

Property Name JSON Key Value Type Description
Reply Scores Reply_Scores Array (Object (Scale Score (Base))) The reply scores for the question

Question Scorer

Property Name JSON Key Value Type Description
Total Total boolean Whether this question should be included in total scoring
Attribute Scorer Attribute_Scorers List ( Object (Attribute Scorer Properties)) The scoring information for the list of attributes to be evaluated and score upon

Question Response

Property Name JSON Key Value Type Description
ID Question_Response_Id Integer The ID of the question response
Text Option List Text_Option_List Object (Option List) (Optional) The option list the response text came from
Row Text Text String (Optional) The text of the row the response is for. For all questions types except matrix of choices, this contains the text of a single answer to the question.
Row Text Option List Row_Text_Option_List Object (Option List) (Optional) The option list the row text came from
Choice List Option Choice_List_Option Object (List Option) (Optional) The row response for matrix of choices. Not provided for all other question types
Row Choice List Option Row_Choice_List_Option Object (List Option) (Optional) The list option of the choice for matrix of choices, rating scale and multiple choice questions
Answer Time Answer_Time String (Time Stamp) (Optional) The time the question was answered. Can be null if there is a question widget with multiple responses and one or more of the responses were not answered.
Option IDs Order Option_Ids_Order List (Object (Integer)) (Optional) The order in which the question's reply options were shown to the learner. Can be null if the question did not have multiple reply options to pick from

Abstract Question Response Metadata

Property Name JSON Key Value Type Description
Survey Question ID Survey_Question_Id Integer The ID of the survey question
Survey Page Response ID Survey_Reponse_Id Integer The ID of the survey page response that the question response is part of
Survey Page Response ID Survey_Reponse_Id Integer The ID of the survey page response that the question response is part of
Option IDs Order Option_Ids_Order List (Object (Integer)) (Optional) The order in which the question's reply options were shown to the learner. Can be null if the question did not have multiple reply options to pick from

Question Response Element Metadata

Property Name JSON Key Value Type Description
Question Response ID Question_Response_Id Integer The ID of the question response
Text Text String The question that was asked
Row Text Row_Text String (Optional) The text of the row the response is for. For all questions types except matrix of choices, this contains the text of a single answer to the question.

Question Type Parameter

Property Name JSON Key Value Type Description
Number of Questions numberOfQuestions Integer The number of questions to request for a particular concept
Property Value propertyValue String The value for the property to match
Question Property Key questionProperty String (Survey Property Key) The enumerated question property the value is associated with.

Raw Score

Property Name JSON Key Value Type Description
Units units String Value to describe the score’s units (seconds, meters, etc.)
Class type String Unique name of a raw score object (Default Raw Score )
One of Default Raw Score

Raw Score Node

Requires: Score Node
Assigned Values: Class = RawScoreNode

Property Name JSON Key Value Type Description
Assessment assessment Enum (Assessment Level) Assessment for this node
Raw Score rawScore Object (Raw Score) Raw Score that is packed in this node

Reply Answer Score

Requires: Answer Score (Base)
Assigned Values: Class = ReplyAnswerScore

Reply Scale Score

Requires: Scale Score (Base)
Assigned Values: Class = ReplyScaleScore

Request Branch Adaptation

Requires: Pedagogical Request
Assigned Values: Class = RequestBranchAdaptation

Property Name JSON Key Value Type Description
Strategy strategy Object (Branch Adaptation Strategy) Branch Adaptation strategy information.

Request Do Nothing Strategy

Requires: Pedagogical Request
Assigned Values: Class = RequestDoNothingStrategy

Property Name JSON Key Value Type Description
Strategy strategy String Domain Action Knowledge strategy name

Request Instructional Intervention

Requires: Pedagogical Request
Assigned Values: Class = RequestInstructionalIntervention

Property Name JSON Key Value Type Description
Strategy strategy String Domain Action Knowledge strategy name

Request Mid-Lesson Media

Requires: Pedagogical Request
Assigned Values: Class = RequestMidLessonMedia

Property Name JSON Key Value Type Description
Strategy strategy String Domain Action Knowledge strategy name

Request Performance Assessment

Requires: Pedagogical Request
Assigned Values: Class = RequestPerformanceAssessment

Property Name JSON Key Value Type Description
Strategy strategy String Domain Action Knowledge strategy name

Request Scenario Adaptation

Requires: Pedagogical Request
Assigned Values: Class = RequestScenarioAdaptation

Property Name JSON Key Value Type Description
Strategy strategy String Domain Action Knowledge strategy name

Return Value Condition

Property Name JSON Key Value Type Description
Sign Sign Enum (Operator) The mathematical operator to apply to the condition
Value Value double The fixed value for the condition to score against
Return Value Return_Value Enum ( A value from any GIFT Enum class ) The enumerated value to return when this condition is met
Return Value Class Return_Value_Class String The GIFT enum class name that contains the ‘Return_Value’ enumerated value.

Rifle Shot

Property Name JSON Key Value Type Description
Location location Point 3d Location of the rifle shot hit location on the target (z-value not used)
Result result float Score value for this rifle shot
Shot Number shotNumber int Index number of this shot

Scale Score (Base)

Requires: Score (Base)
Assigned Values: Class = AbstractScaleScore

Property Name JSON Key Value Type Description
Class scaleScoreType String The class of the scale score object

Score (Base)

Property Name JSON Key Value Type Description
Class scoreType String The class of the score type object

Score Node

Property Name JSON Key Value Type Description
Name Name String Name of the performance node
Class Type String Unique name of a score node object (Graded Score Node, Raw Score Node)
the node attributes n/a One of Graded Score Node, Raw Score Node contains the attributes of the node object

Sensor Attribute Value

Property Name JSON Key Value Type Description
Name name Enum (Sensor Attribute Name) Name of the sensor attribute
Class attributeValue String Unique name of a sensor attribute object (Sensor Double Value, Sensor Integer Value, Sensor String Value, Sensor Tuple3d Value)
the attribute object n/a One of Sensor Double Value, Sensor Integer Value, Sensor String Value, Sensor Tuple3d Value The values of a sensor attribute object.

Sensor Double Value

Requires: Sensor Attribute Value
Assigned Values: Class = DoubleValue

Property Name JSON Key Value Type Description
value value Double A double value.

Sensor Status

Property Name JSON Key Value Type Description
Message Message String The sensor status message
Sensor Name SensorName String Name of the sensor that produced the error
Sensor Type SensorType Enum ( Sensor Type) The type of sensor
Is Error IsError Boolean If the status is an error message

Sensor File Created

Property Name JSON Key Value Type Description
File name FileName String Name of the file created
Sensor Type SensorType Enum (Sensor Type) The type of sensor

Sensor Integer Value

Requires: Sensor Attribute Value
Assigned Values: Class = IntegerValue

Property Name JSON Key Value Type Description
value value Integer An integer value.

Sensor String Value

Requires: Sensor Attribute Value
Assigned Values: Class = StringValue

Property Name JSON Key Value Type Description Property Name
value value String A string value.

Sensor Tuple3d Value

Requires: Sensor Attribute Value
Assigned Values: Class = Tuple3dValue

Property Name JSON Key Value Type Description
X X Double The X value as a double.
Y Y Double The Y value as a double.
Z Z Double The Z value as a double.
Class type String Unique name of the tuple3d object (“Vector3d”, “Point3d”)

Siman

Property Name JSON Key Value Type Description
Siman Type Siman_Type Enum (Siman Type) The type of Siman message
Load Arguments LoadArgs Map (String, String) A key/value pair map of the Siman Load parameters. In the case of interop-based training applications, the keys are interop plugin class names (e.g. gateway.interop.ppt.PPTInterface). In the case of embedded training applications, the keys are the urls of the training application. The values are string representations of the course XML node object ‘generated.course.InteropInputs’ (see GIFT\config\domain\course\course.xsd for XML structure).
Course Folder CourseFolder String (optional) runtime course folder path relative to Domain folder
File Size FileSize long (optional) size (bytes) of a training application file to load on the client side
Route Type RouteType Enum(Training App Route Type) Specifies whether the Siman message is for an embedded training application or an interop-based training application. Used to properly decode the Load Arguments

Simple Example State

Property Name JSON Key Value Type Description
Variable VAR String Just a string value that represents something about a simple game state. This was created for the GIFT developer guide as a simple use case of a game state message.

Simulation Address

Property Name JSON Key Value Type Description
Site ID siteID Integer Unique site ID for this address
Application ID applicationID Integer Unique ID for this address

Slider Range

Property Name JSON Key Value Type Description
Min Value MIN_VALUE Double The minimum value of the slider for a survey question
Max Value MAX_VALUE Double The maximum value of the slider for a survey question

Start Resume

Real Time realWorldTime Integer The real-world time (UTC, milliseconds since midnight Jan 1, 1970) at which the entity is to start/resume in the exercise.
Simulation Time simulationTime Integer The simulation time (time of day in the simulated world in UTC, milliseconds since midnight Jan 1, 1970) at which the entity will start/resume in the exercise
Request ID requestID Integer Unique ID for this request

Stop Freeze

Property Name JSON Key Value Type Description
Real Time realWorldTime Integer The real-world time (UTC, milliseconds since midnight Jan 1, 1970) at which the entity is to start/resume in the exercise.
Reason reason Integer ID for the reason that an entity or exercise was stopped/frozen
Frozen Behavior frozenBehavior Integer ID for the frozen behavior, that will indicate how the entity or exercise acts while frozen
Request ID requestID Integer Unique ID for this request

String Payload

Property Name JSON Key Value Type Description
String StringPayload String The string value as the entire payload.

Subject Created

Property Name JSON Key Value Type Description
Course Id courseId String A unique identifier for the experiment's course (usually the relative path to the course.xml file from the Domain folder)
Pre Session Id preSessionId String An id created by the tutor and used to identify the tutor client request to start a subject in an experiment's course.

Submit Survey Results

Property Name JSON Key Value Type Description
Survey Response SurveyResponse Object (Survey Response) The response to the survey with the results
Gift Key GiftKey String Label for the survey being submitted

Survey

Property Name JSON Key Value Type Description
ID Id Integer The ID of the survey
Name Name String The name of the survey
Folder Folder Object (Folder) The folder the survey is in (this should not be defined if it is not in a folder)
Pages Survey_Pages Array (Survey Page) The pages of the survey, in the order in which they are to be presented
Properties Properties Map (Enum (Survey Property Key), Object (Survey Item Property Value)) The properties of the survey
Visible to Usernames VisibleToUserNames Array (String) The usernames this survey is visible to
Editable to Usernames EditableToUserNames Array (String) The usernames that can edit this survey

Survey Answer Score

Requires: Answer Score (Base)
Assigned Values: Class = SurveyAnswerScore

Property Name JSON Key Value Type Description
Question Scores Question_Scores Array (Object (Answer Score (Base))) The reply scores for the survey

Survey Check Request

Property Name JSON Key Value Type Description
GIFT Key GiftKey String (optional if this check is for a survey context and not a survey in the context) Label for the survey being checked.
Survey Context Id SurveyContextId Integer Unique id of a survey context associated with the GIFT key and questions to check.
Questions Questions List (Object ( Survey Check Request - Question )) List of question objects to check in this request.

Survey Check Request - Question

Property Name JSON Key Value Type Description
Question ID id Integer The ID of the question
Replies Replies List (Object ( Survey Check Request - Reply )) List of reply objects for this question to check in this request.

Survey Check Request - Reply

Property Name JSON Key Value Type Description
Reply ID id Integer The ID of the question reply

Survey Check Response

Property Name JSON Key Value Type Description
Responses responses Map ( String , List ( Object ( Survey Check Response - Response Interface ) ) ) Map of survey check responses where the key provides useful information about what the list of responses are for (e.g. a course name).

Survey Check Response - Response Interface

Property Name JSON Key Value Type Description
Type type String The class of the value object (e.g. FailureResponse) that implements Response interface.
Responses responses One of ( Survey Check Response - Failure Response, Survey Check Response - Success Response ) The responses to the Survey Check Request

Survey Check Response - Failure Response

Requires: Survey Check Response - Response Interface
Assigned Values: Class = FailureResponse

Property Name JSON Key Value Type Description
Message message String The reason why the survey check request failed.

Survey Context

Property Name JSON Key Value Type Description
Survey Context ID Survey_Context_Id Integer The ID of the survey context
Survey Context Name Survey_Context_Name String The name of the survey context
Survey Context Surveys Survey_Context_Surveys Array (Object(Survey Context Survey)) The surveys contained in this survey context
Visible to Usernames VisibleToUserNames Array (String) The usernames this survey is visible to
Editable to Usernames EditableToUserNames Array (String) The usernames that can edit this survey

Survey Context Survey

Property Name JSON Key Value Type Description
Survey Context id Survey_Context_Context_Id Integer The ID of the survey context
Survey Context survey key Survey_Context_Survey_Key String The gift key, unique to this survey context, that references this survey in the survey context.
Survey Context Survey Survey_Context_Survey_Survey Object(Survey) The survey for this key

Survey Check Response - Success Response

Requires: Survey Check Response - Response Interface
Assigned Values: Class = SuccessResponse

Survey List Check Request

Property Name JSON Key Value Type Description
Requests request Map ( String , List ( Object ( Survey Check Request ) ) ) Map of survey check requests where the key provides useful information about what the list of requests are for (e.g. a course name).

Survey Item Property Value

Property Name JSON Key Value Type Description
Class Property_Class String The class of the value object
Value Property_Value Object (One of Option List, String Payload, Survey Scorer, Question Scorer, Slider Range, Matrix of Choices Reply Weights, Free Response Reply Weights) The value of the property

Survey Feedback Scorer (Base)

Requires: Score (Base)
Assigned Values: Class = SurveyFeedbackScorer

Property Name JSON Key Value Type Description
nothing

Survey Gift Data

Property Name JSON Key Value Type Description
Gift Key Gift_Key String The gift key that identifies the returned survey within the database
Survey Survey Survey The survey that was requested by the Get Survey Request

Survey Scale Score

Requires: Scale Score (Base)
Assigned Values: Class = SurveyScaleScore

Property Name JSON Key Value Type Description
Question Scores Question_Scores Array (Object (Scale Score (Base))) The reply scores for the survey

Survey Scorer

Property Name JSON Key Value Type Description
Total Scorer Total_Scorer Object (Total Scorer) The scoring information for calculating the total score
Attribute Scorer Attribute_Scorers List ( Object (Attribute Scorer Properties)) The scoring information for the list of attributes to be evaluated and score upon

Survey Page

Property Name JSON Key Value Type Description
ID Survey_Page_Id Integer The ID of the survey page
Name Survey_Page_Name String The name of the survey page
Survey ID Survey_Page_Survey_Id Integer The ID of the survey page’s parent survey
Questions Survey_Page_Questions Array (Survey Question) The survey questions in the page, in the order they are to be presented in
Properties Properties Map (Enum (Survey Property Key), Object (Survey Item Property Value)) The properties of the survey page

Survey Page Response

Property Name JSON Key Value Type Description
ID Survey_Page_Response_Id Integer The ID of the response
Survey Response ID Survey_Response_Id Integer The ID of the survey response this page is in
Survey Page Survey_Page Object (Survey Page) The survey page the response is for
Start Time Start_Time String (Time Stamp) The time the survey page was started
End Time End_Time String (Time Stamp) The time the survey page was completed
Question Responses Question_Responses Array (Question Response) The list of responses to questions in the survey page

Survey Page Response Metadata

Property Name JSON Key Value Type Description
Survey Page Response ID Survey_Page_Response_Id Integer The ID of the response
Survey Response ID Survey_Response_Id Integer The ID of the survey response this page is in
Survey Page ID Survey_Page_Id Integer The ID of the survey page the response is for
Start Time Start_Time String (Time Stamp) The time the survey page was started
End Time End_Time String (Time Stamp) The time the survey page was completed
Question Response Metadata Question_Response_Metadata Array (Abstract Question Response Metadata) The metadata list of responses to questions in the survey page

Survey Question

Property Name JSON Key Value Type Description
ID ID Integer The ID of the survey question
Question Question Object (Question) The question that is being asked
Survey Page ID Survey_Page_Id Integer The ID of the survey question’s parent survey page
Properties Properties Map (Enum (Survey Property Key), Object (Survey Item Property Value)) The properties of the survey question

Survey Response

Property Name JSON Key Value Type Description
ID Survey_Response_Id Integer The ID of the survey response
Survey Survey Object (Survey) The survey that was responded to
Survey Context ID Survey_Context_Id Integer The ID of the survey context that the survey response belongs to
Start Time Start_Time String (Time Stamp) The time the survey was started
End Time End_Time String (Time Stamp) The time the survey was completed
Survey Page Responses Survey_Page_Responses Array (Survey Page Response) The list of responses to pages in the survey
Survey Id SurveyId Integer The ID of the survey that was responded to
GIFT Key GiftKey String The GIFT key of the survey that was responded to
Survey Name SurveyName String The name of the survey that was responded to
Survey Type SurveyType String The type of survey that was responded to
Survey Name SurveyScorer String The scorer for the survey that was responded to
Has Fill in the Blank Question With Ideal Answer HasFillInTheBlankQuestionWithIdealAnswer Boolean Whether or not the survey this response is for contains any fill-in-the-blank questions with ideal answers that should be shown in an AAR

Survey Response Metadata

Property Name JSON Key Value Type Description
GIFT Key Gift_Key String The unique identifier for the survey that was taken
Has Ideal Answer Has_Ideal_Answer Boolean Whether or not the survey that this response metadata was responding to had a fill in the blank question with an ideal answer
Survey Context ID Survey_Context_Id Integer The ID of the survey context which the survey which was taken belongs to
Survey End Time Survey_End_Time String (Time Stamp) The time that the survey was completed by the survey taker
Survey ID Survey_Id Integer The id of the survey that was being responded to
Survey Name Survey_Name String The name of the survey that was being responded to
Survey Page Responses Survey_Page_Responses Array (Survey Page Response Metadata) The list of the survey page response metadata that compose this survey response metadata object
Survey Response ID Survey_Response_Id Integer The survey response ID
Survey Start Time Survey_Start_Time String (Time Stamp) The time that the survey was started by the survey taker

Task Assessment

Requires: Assessment (Base)
Assigned Values: Class = TaskAssessment

Task Performance State

Property Name JSON Key Value Type Description
State state Object(Performance State Attribute) Performance state of the task
Concepts concepts Map ( Integer, Object (Concept Performance State)) Map from concepts IDs to the Performance State of that concept

Total Scorer

Property Name JSON Key Value Type Description
Attribute Properties Attribute_Properties List ( Object (Attribute Scorer Properties)) The scoring information for the list of attributes to be evaluated and score upon

Tutor Me Learner Tutor Action

Property Name JSON Key Value Type Description
Action Name action String the unique name of the action to use as a key to apply the action during the course

Tutor Module Status

Property Name JSON Key Value Type Description
Topic Name topicName String The name of the tutor topic where embedded training applications send messages for the Domain Module
Module Status status Module Status The base status of the Tutor Module that is broadcasting the Tutor Module Status

Tutor User Interface Feedback

Property Name JSON Key Value Type Description
Display Text Action DisplayTextAction Object (Display Text Action) (Optional) The text to display as feedback
Play Audio Action PlayAudioAction Object (Play Audio Action) (Optional) The audio to display as feedback
Display Avatar Action DisplayAvatarAction Object (Display Avatar Action) (Optional) The avatar action to take as feedback
Clear Text Action ClearTextAction Object (Clear Text Action) (Optional) Whether to clear previous text feedback from the TUI before presenting this feedback

Unfiltered Sensor Data

Property Name JSON Key Value Type Description
Sensor Name SensorName String Name of the sensor the data is coming from
Sensor Type SensorType Enum (Sensor Type) Type of sensor the data is coming from
Elapsed Time ElapsedTime Long Total milliseconds from the start of the domain session
Attribute Values AttributeValues Map ( Enum (Sensor Attribute Name), Sensor Attribute Value) Name/Value pairs that represent the sensor’s data

User Data

Property Name JSON Key Value Type Description
User ID User_Id Integer Unique ID of the user (optional in cases where the user id hasn’t been created yet)
Username Username String The GIFT username of the user (optional in cases where the user doesn’t have a username)
Gender Gender Enum (Gender) Gender of the user
LMS Username LMS_UserName String LMS username of the user
Experiment Id ExperimentId String (optional) the id of an experiment if this user is a subject in an experiment.

User Session

Property Name JSON Key Value Type Description
User ID userId Integer ID of the user to associate with this domain session
Username username String The GIFT username of the user (optional in cases where the user doesn’t have a username)
Experiment ID experimentId String (optional) unique experiment id if this domain session is part of an experiment
Client Info clientInfo Object (WebClient Information) Information about the tutor client
Session Type sessionType String {"GIFT_USER", "EXPERIMENT_USER", "LTI_USER"} Enum to record the different types of user sessions that can exist in GIFT
Session Details sessionDetails {LTI User Session Details} Optional: currently only used for LTI user sessions

User Session List

Property Name JSON Key Value Type Description
User Sessions UserSessions Array (Object (User Session)) Array of User Session objects

Vector 3d

Property Name JSON Key Value Type Description
X X Double X value of the vector
Y Y Double Y value of the vector
Z Z Double Z value of the vector

Vibrate Device

Property Name JSON Key Value Type Description
Pattern Array Property PatternArray List (Integer) The pattern in which to vibrate a mobile device, in alternating durations (in milliseconds) of vibrations and pauses

Video Properties

Assigned Values: Class = VideoProperties

Weapon Fire

Property Name JSON Key Value Type Description
Firing Entity ID firingEntityID Object (Entity Identifier) ID of the firing entity
Target Entity ID targetEntityID Object (Entity Identifier) ID of the target entity
Munition ID munitionID Object (Entity Identifier) ID of the munition
Event ID eventID Object (Event Identifier) ID of the detonation event
Velocity velocity Object (Vector 3d) Velocity of the detonation
Location location Object (Vector 3d) Location of the detonation
Burst Descriptor burstDescriptor Object (Burst Descriptor) Description of the weapon fire

WebClient Information

Property Name JSON Key Value Type Description
Client Address clientAddress String The address (e.g. IPv4) of the tutor client.

Webpage Properties

Assigned Values: Class = WebpageProperties

Youtube Video Properties

Assigned Values: Class = YoutubeVideoProperties

Property Name JSON Key Value Type Description
Height height Integer The height of the video
Width width Integer The width of the video
Fullscreen fullscreen String {true, false from generated.course.BooleanEnum} If the video should be displayed fullscreen
Width units widthUnits string Optional: Browser based units of measure (e.g. px)
Height units heightUnits string Optional: Browser based units of measure (e.g. px)
Constrain to Screen constrainToScreen boolean

GIFT Enumerations

Arousal Level

Element Name Element Value Description
Unknown Unknown
Low Low
Medium Medium
High High

Assessment Level

Element Name Element Value Description
Below Expectation BelowExpectation
At Expectation AtExpectation
Above Expectation AboveExpectation
Unknown Unknown

Damage

Element Name Element Value Description
Healthy Healthy
Died of Wounds DiedOfWounds
Incapacitated Incapacitated

Detonation Result

Element Name Element Value Description
Other Other
Entity Impact EntityImpact
None None

Domain Option Recommendation Enum

Element Name Element Value Description
Unavailable - Other UnavailableOther
Unavailable - Survey Validation UnavailableSurveyValidation
Unavailable - Restricted to User UnavailableRestrictedToUser
Recommended Recommended
Not Recommended NotRecommended

Engagement Level

Element Name Element Value Description
Unknown Unknown
Low Low
Medium Medium
High High

Environment Control Enum

Element Name Element Value Description
Overcast Overcast
Fog Level 1 FogLevel1
Fog Level 2 FogLevel2
Fog Level 3 FogLevel3
Fog Level 4 FogLevel4
Rain Rain
Time of Day Dusk TimeOfDayDusk
Time of Day Dawn TimeOfDayDawn
Time of Day Midday TimeOfDayMidday
Time of Day Midnight TimeOfDayMidnight

Error Type

Element Name Element Value Description
Malformed Data Error MalformedDataError
User Not Found Error UserNotFoundError
Database Insert Error DBInsertError
Database Update Error DBUpdateError
Incorrect Credentials IncorrectCredentials
LMS Retrieve Error LMSRetrieveError
Learner Instantiated Error LearnerInstantiatedError
Domain Session Not Found Error DomainSessionNotFoundError
Message Timeout Error MessageTimeOutError
Operation Failed OperationFailedError
Module Not Found ModuleNotFound
Unhandled Message Error UnhandledMessageError
Get Survey Error GetSurveyError

Experiment Status

Element Name Element Value Description
Running RUNNING
Paused PAUSED The experimenter has paused the experiment, meaning no additional subjects can start the experiment while it is in this state.
Invalid Course INVALID_COURSE The course is currently invalid. This means that no additional subjects can start the experiment while the course is invalid.

Filter Type

Element Name Element Value Description
Raw RAW

Gender

Element Name Element Value Description
Male MALE
Female FEMALE

Learner Action Type

Element Name Element Value Description
Explosive Hazard Spot Report EXPLOSIVE_HAZARD_SPOT_REPORT
Nine Line Report NINE_LINE_REPORT
Spot Report SPOT_REPORT
Radio RADIO

Learner State Attribute Name

Element Name Element Value Description
Engagement Engagement
Understanding Understanding
Arousal Arousal
Long Term Excitement LongTermExcitement
Short Term Excitement ShortTermExcitement
Meditation Meditation
Frustration Frustration
Motivation Motivation
Prior Knowledge PriorKnowledge
Socio-Economic Status SocioEconomicStatus
Locus of Control LocusOfControl
Learner Ability LearnerAbility
General Intelligence GeneralIntelligence
Learning Style LearningStyle

Low Medium High Level

Element Name Element Value Description
Unknown Unknown
Low Low
Medium Medium
High High

Message Encoding Type

Element Name Element Value Description
JSON JSON

Message Type

Element Name Element Value Description
ACK ACK
Active Domain Sessions Reply ActiveDomainSessionsReply
Active Domain Sessions Request ActiveDomainSessionsRequest
Active User Sessions Reply ActiveUserSessionsReply
Active User Sessions Request ActiveUserSessionsRequest
Chat Log ChatLog
Close Domain Session Request CloseDomainSessionRequest
Collision Collision
Course State CourseState
Detonation Detonation
Display AAR Tutor Request DisplayAarTutorRequest
Display Chat Window Request DisplayChatWindowRequest
Display Chat Window Update Request DisplayChatWindowUpdateRequest
Display Feedback Tutor Request DisplayFeedbackTutorRequest
Display Feedback Gateway Request DisplayFeedbackGatewayRequest
Display Learner Actions Tutor Request DisplayLearnerActionsTutorRequest
Display Lesson Material Tutor Request DisplayLessonMaterialTutorRequest
Display Mid-Lesson Media Tutor Request DisplayMidLessonMediaTutorRequest
Display Survey Tutor Request DisplaySurveyTutorRequest
Display Guidance Tutor Request DisplayGuidanceTutorRequest
Domain Options Request DomainOptionsRequest
Domain Options Reply DomainOptionsReply
Domain Selection Request DomainSelectionRequest
Domain Selection Reply DomainSelectionReply
Domain Session Start Time Request DomainSessionStartTimeRequest
Domain Session Start Time Reply DomainSessionStartTimeReply
Entity State EntityState
Environment Control EnvironmentControl
Experiment Course Request ExperimentCourseRequest
Gateway Module Status GatewayModuleStatus
Generic JSON State GenericJSONState
Geolocation Geolocation
Get Experiment Request GetExperimentRequest
Get Experiment Reply GetExperimentReply
Get Survey Reply GetSurveyReply
Get Survey Request GetSurveyRequest
Initialize Domain Session Request InitializeDomainSessionRequest
Initialize Interop Connections InitializeInteropConnections
Initialize Lesson Request InitializeLessonRequest
Initialize Pedagogical Model Request InitializePedagogicalModelRequest
Instantiate Learner Request InstantiateLearnerRequest
Kill Module KillModule
Learner Tutor Action LearnerTutorAction
Learner State LearnerState
Lesson Completed LessonCompleted
Lesson Started LessonStarted
LMS Data Reply LMSDataReply
LMS Data Request LMSDataRequest
Login Reply LoginReply
Logout Reply LogoutReply
Logout Request LogoutRequest
Line of Sight Query LoSQuery
Line of Sight Result LoSResult
Module Allocation Reply ModuleAllocationReply
Module Allocation Request ModuleAllocationRequest
Module Status ModuleStatus
NACK NACK
New User Request NewUserRequest
Pedagogical Request PedagogicalRequest
Performance Assessment PerformanceAssessment
Publish Lesson Score Request PublishLessonScoreRequest
Publish Lesson Score Reply PublishLessonScoreReply
Processed ACK ProcessedACK
Processed NACK ProcessedNACK
Rifle Shot RifleShot
Sensor Data SensorData
Sensor Status SensorStatus
Sensor File Created SensorFileCreated
Sensor Filter Data SensorFilterData
Siman Siman
Simple Example State SimpleExampleState
Start Domain Session StartDomainSession
Start Resume StartResume
Stop Freeze StopFreeze
Subject Created SubjectCreated Used to indicate that a subject in an experiment was created.
Submit Survey Results SubmitSurveyResults
Survey Check Request SurveyCheckRequest
Survey Check Response SurveyCheckResponse
User ID Request UserIdRequest
User ID Reply UserIdReply
Vibrate Device Request VibrateDeviceRequest
Weapon Fire WeaponFire

Merrill Quadrant

Element Name Element Value Description
Rule Rule
Example Example
Recall Recall
Practice Practice

Metadata Attribute

Element Name Element Value Description
IMI 1 IMI1
IMI 2 IMI2
IMI 3 IMI3
IMI4 IMI4
Visual Visual
Textual Textual
Visual with Text Visual with Text
Video Video
Animation Animation
Easy Difficulty Easy Difficulty
Medium Difficulty Medium Difficulty
Hard Difficulty Hard Difficulty
Low Control Low Control
Medium Control Medium Control
High Control High Control
Case Study Case Study
Graphic Graphic
Worked Example Worked Example
Multiple Choice Multiple Choice
Short Response Short Response
Essay Response Essay Response
LSA LSA
Item Response Item Response
Concept Progression As Needed Concept Progression As Needed
Feedback Frequency Question by Question Feedback Frequency Question by Question
Feedback Frequency Following All items Feedback Frequency Following All Items
Training Type Procedure Execution Training Type Procedure Execution
Training Type Problem Solving Training Type Problem Solving
Guidance Hints Guidance Hints
Guidance Prompts Guidance Prompts
Guidance Reflection Guidance Reflection
Guidance Assertions Guidance Assertions
Guidance Pumps Guidance Pumps
Training Feedback Realtime Training Feedback Realtime
Training Feedback AAR Training Feedback AAR

Module State

Element Name Element Value Description
UNKNOWN Unknown The state is not known or not provided
NORMAL Normal The module is behaving normally
OVERLOADED Overloaded The module is overloaded at this time
FAILED Failed The module has reached a critical failure state and is no longer executing properly.

Module Type

Element Name Element Value Description
UMS Module UMS_Module
LMS Module LMS_Module
DMS Module DMS_Module
Tutor Module Tutor_Module
Learner Module Learner_Module
Pedagogical Module Pedagogical_Module
Sensor Module Sensor_Module
Gateway Module Gateway_Module
Domain Module Domain_Module
Monitor Module Monitor_Module

Operator

Element Name Element Value Description
Less Than LessThan
Greater Than GreaterThan
Less Than or Equals LessThanEquals
Greater Than or Equals GreaterThanEquals
Equals Equals

Pass Fail

Element Name Element Value Description
Pass PASS
Fail FAIL
Unknown UNKNOWN
Incomplete INCOMPLETE

Performance Node State

Element Name Element Value Description
Unactivated UNACTIVATED the task/concept was never active
Active ACTIVE the task/concept is currently being assessed
Deactivated DEACTIVATED the concept's conditions never finished but the concept is NOT currently being assessed because the ancestor task is no longer active
Finished FINISHED the task/concept gracefully finished and is NOT currently being assessed

Posture

Element Name Element Value Description
Unused Unused
Standing Standing
Walking Walking
Running Running
Kneeling Kneeling
Prone Prone
Crawling Crawling
Swimming Swimming
Parachuting Parachuting
Jumping Jumping
Sitting Sitting
Squatting Squatting
Crouching Crouching
Wading Wading
Surrender Surrender
Detained Detained

Question State

Element Name Element Value Description
Answered Correct AnsweredCorrect
Answered Wrong AnsweredWrong
Skipped Skipped
Unanswered Unanswered

Score Node Type

Element Name Element Value Description
Graded Score Node GradedScoreNode
Raw Score Node RawScoreNode

Sensor Attribute Name

Element Name Element Value Description
Time Time
Temperature Temperature
Humidity Humidity
Arousal Arousal
Acceleration 3D X Acceleration3d
Electro Dermal Activity EDA
Long Term Excitement LongTermExcitement
Short Term Excitement ShortTermExcitement
Meditation Meditation
Frustration Frustration
Engagement Engagement
ED Counter ED_COUNTER An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Interpolated ED_INTERPOLATED An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Raw CQ ED_RAW_CQ An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED AF3 ED_AF3 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan F7 EE_CHAN_F7 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan F3 EE_CHAN_F3 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan FC5 EE_CHAN_FC5 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan T7 EE_CHAN_T7 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan P7 EE_CHAN_P7 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan O1 EE_CHAN_O1 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan O2 EE_CHAN_O2 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan P8 EE_CHAN_P8 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan T8 EE_CHAN_T8 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan FC6 EE_CHAN_FC6 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan F4 EE_CHAN_F4 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
EE Chan F8 EE_CHAN_F8 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED AF4 ED_AF4 An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Gyro X ED_GYROX An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Gyro Y ED_GYROY An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Timestamp ED_TIMESTAMP An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED ES Timestamp ED_ES_TIMESTAMP An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Function ID ED_FUNC_ID An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Function Value ED_FUNC_VALUE An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Marker ED_MARKER An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
ED Sync Signal ED_SYNC_SIGNAL An attribute of the Emotiv EPOC neuroheadset. Refer to www.emotiv.com for more information.
OS3D BITMASK OS3D_BITMASK An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D FRAME COUNTER OS3D_FRAME_COUNTER An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D RAW ACC OS3D_RAW_ACC An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D RAW GYR OS3D_RAW_GYR An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D RAW MAG OS3D_RAW_MAG An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D RAW TEMP OS3D_RAW_TEMP An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D CAL ACC OS3D_CAL_ACC An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D CAL GYR OS3D_CAL_GYR An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
OS3D CAL MAG OS3D_CAL_MAG An attribute of the Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
QUAT X QUAT_X A quaternion X value.
QUAT Y QUAT_Y A quaternion Y value.
QUAT Z QUAT_Z A quaternion Z value.
QUAT W QUAT_W A quaternion W value.
QUAT X Relative QUAT_X_REL A relative quaternion X value.
QUAT Y Relative QUAT_Y_REL A relative quaternion Y value.
QUAT Z Relative QUAT_Z_REL A relative quaternion Z value.
QUAT W Relative QUAT_W_REL A relative quaternion W value.
Dropped Packet Count DROPPED_PACKET_COUNT A counter for the number of dropped packets.
Roll Degrees ROLL_DEG A roll value in degrees
Pitch Degrees PITCH_DEG A pitch value in degrees
Yaw Degrees YAW_DEG A yaw value in degrees
Roll Relative Degrees ROLL_DEG_REL A roll value in degrees relative to some value
Pitch Relative Degrees PITCH_DEG_REL A pitch value in degrees relative to some value
Yaw Relative Degrees YAW_DEG_REL A yaw value in degrees relative to some value
HEART RATE HEART_RATE An attribute of the Zephyr Technologies BioHarness sensor. Refer to http://www.zephyr-technology.com/products/bioharness-3/ for more information.
RESPIRATION RATE RESPIRATION_RATE An attribute of the Zephyr Technologies BioHarness sensor. Refer to http://www.zephyr-technology.com/products/bioharness-3/ for more information.
SKIN TEMPERATURE SKIN_TEMPERATURE An attribute of the Zephyr Technologies BioHarness sensor. Refer to http://www.zephyr-technology.com/products/bioharness-3/ for more information.
POSTURE POSTURE An attribute of the Zephyr Technologies BioHarness sensor. Refer to http://www.zephyr-technology.com/products/bioharness-3/ for more information.
HEAD POSE HEAD_POSE
HEAD POSE ROT HEAD_POSE_ROT
POSTURE TYPE POSTURE_TYPE
ACTIVITY TYPE ACTIVITY_TYPE
ATTENTION TYPE ATTENTION_TYPE
ATTENTION VALUE ATTENTION_VALUE
ENGAGEMENT TYPE ENGAGEMENT_TYPE
ENGAGEMENT VALUE ENGAGEMENT_VALUE
HORIZONTAL GAZE HORIZONTAL_GAZE
VERTICAL GAZE VERTICAL_GAZE
GAZE DIRECTION GAZE_DIRECTION
LEFT HAND POSE LEFT_HAND_POSE
LEFT HAND POSE ROT LEFT_HAND_POSE_ROT
LEFT HAND POSE TYPE LEFT_HAND_POSE_TYPE
RIGHT HAND POSE RIGHT_HAND_POSE
RIGHT HAND POSE ROT RIGHT_HAND_POSE_ROT
RIGHT HAND POSE TYPE RIGHT_HAND_POSE_TYPE
HEAD HEAD
CENTER HIP CENTER_HIP
CENTER SHOULDER CENTER_SHOULDER
LEFT ANKLE LEFT_ANKLE
LEFT ELBOW LEFT_ELBOW
LEFT FOOT LEFT_FOOT
LEFT HAND LEFT_HAND
LEFT HIP LEFT_HIP
LEFT KNEE LEFT_KNEE
LEFT SHOULDER LEFT_SHOULDER
LEFT WRIST LEFT_WRIST
RIGHT ANKLE RIGHT_ANKLE
RIGHT ELBOW RIGHT_ELBOW
RIGHT FOOT RIGHT_FOOT
RIGHT HAND RIGHT_HAND
RIGHT HIP RIGHT_HIP
RIGHT KNEE RIGHT_KNEE
RIGHT SHOULDER RIGHT_SHOULDER
RIGHT WRIST RIGHT_WRIST
SPINE SPINE
TOP SKULL TOP_SKULL
TOP RIGHT FOREHEAD TOP_RIGHT_FOREHEAD
MIDDLE TOP DIP UPPER LIP MIDDLE_TOP_DIP_UPPER_LIP
ABOVE CHIN ABOVE_CHIN
BOTTOM OF CHIN BOTTOM_OF_CHIN
RIGHT OF RIGHT EYEBROW RIGHT_OF_RIGHT_EYEBROW
MIDDLE TOP OF RIGHT EYEBROW MIDDLE_TOP_OF_RIGHT_EYEBROW
LEFT OF RIGHT EYEBROW LEFT_OF_RIGHT_EYEBROW
MIDDLE BOTTOM OF RIGHT EYEBROW MIDDLE_BOTTOM_OF_RIGHT_EYEBROW
ABOVE MID UPPER RIGHT EYELID ABOVE_MID_UPPER_RIGHT_EYELID
OUTER CORNER OF RIGHT EYE OUTER_CORNER_OF_RIGHT_EYE
MIDDLE TOP RIGHT EYELID MIDDLE_TOP_RIGHT_EYELID
MIDDLE BOTTOM RIGHT EYELID MIDDLE_BOTTOM_RIGHT_EYELID
INNER CORNER RIGHT EYE INNER_CORNER_RIGHT_EYE
UNDER MID BOTTOM RIGHT EYELID UNDER_MID_BOTTOM_RIGHT_EYELID
RIGHT SIDE OF CHIN RIGHT_SIDE_OF_CHIN
OUTSIDE RIGHT CORNER MOUTH OUTSIDE_RIGHT_CORNER_MOUTH
RIGHT OF CHIN RIGHT_OF_CHIN
RIGHT TOP DIP UPPER LIP RIGHT_TOP_DIP_UPPER_LIP
TOP LEFT FOREHEAD TOP_LEFT_FOREHEAD
MIDDLE TOP LOWER LIP MIDDLE_TOP_LOWER_LIP
MIDDLE BOTTOM LOWER LIP MIDDLE_BOTTOM_LOWER_LIP
LEFT OF LEFT EYEBROW LEFT_OF_LEFT_EYEBROW
MIDDLE TOP OF LEFT EYEBROW MIDDLE_TOP_OF_LEFT_EYEBROW
RIGHT OF LEFT EYEBROW RIGHT_OF_LEFT_EYEBROW
MIDDLE BOTTOM OF LEFT EYEBROW MIDDLE_BOTTOM_OF_LEFT_EYEBROW
ABOVE MID UPPER LEFT EYELID ABOVE_MID_UPPER_LEFT_EYELID
OUTER CORNER OF LEFT EYE OUTER_CORNER_OF_LEFT_EYE
MIDDLE TOP LEFT EYELID MIDDLE_TOP_LEFT_EYELID
MIDDLE BOTTOM LEFT EYELID MIDDLE_BOTTOM_LEFT_EYELID
INNER CORNER LEFT EYE INNER_CORNER_LEFT_EYE
UNDER MID BOTTOM LEFT EYELID UNDER_MID_BOTTOM_LEFT_EYELID
LEFT SIDE OF CHEEK LEFT_SIDE_OF_CHEEK
OUTSIDE LEFT CORNER MOUTH OUTSIDE_LEFT_CORNER_MOUTH
LEFT OF CHIN LEFT_OF_CHIN
LEFT TOP DIP UPPER LIP LEFT_TOP_DIP_UPPER_LIP
OUTER TOP RIGHT PUPIL OUTER_TOP_RIGHT_PUPIL
OUTER BOTTOM RIGHT PUPIL OUTER_BOTTOM_RIGHT_PUPIL
OUTER TOP LEFT PUPIL OUTER_TOP_LEFT_PUPIL
OUTER BOTTOM LEFT PUPIL OUTER_BOTTOM_LEFT_PUPIL
INNER TOP RIGHT PUPIL INNER_TOP_RIGHT_PUPIL
INNER BOTTOM RIGHT PUPIL INNER_BOTTOM_RIGHT_PUPIL
INNER TOP LEFT PUPIL INNER_TOP_LEFT_PUPIL
INNER BOTTOM LEFT PUPIL INNER_BOTTOM_LEFT_PUPIL
RIGHT TOP UPPER LIP RIGHT_TOP_UPPER_LIP
LEFT TOP UPPER LIP LEFT_TOP_UPPER_LIP
RIGHT BOTTOM UPPER LIP RIGHT_BOTTOM_UPPER_LIP
LEFT BOTTOM UPPER LIP LEFT_BOTTOM_UPPER_LIP
RIGHT TOP LOWER LIP RIGHT_TOP_LOWER_LIP
LEFT TOP LOWER LIP LEFT_TOP_LOWER_LIP
RIGHT BOTTOM LOWER LIP RIGHT_BOTTOM_LOWER_LIP
LEFT BOTTOM LOWER LIP LEFT_BOTTOM_LOWER_LIP
MIDDLE BOTTOM UPPER LIP MIDDLE_BOTTOM_UPPER_LIP
LEFT CORNER MOUTH LEFT_CORNER_MOUTH
RIGHT CORNER MOUTH RIGHT_CORNER_MOUTH
BOTTOM OF RIGHT CHEEK BOTTOM_OF_RIGHT_CHEEK
BOTTOM OF LEFT CHEEK BOTTOM_OF_LEFT_CHEEK
ABOVE THREE FOURTH RIGHT EYELID ABOVE_THREE_FOURTH_RIGHT_EYELID
ABOVE THREE FOURTH LEFT EYELID ABOVE_THREE_FOURTH_LEFT_EYELID
THREE FOURTH TOP RIGHT EYELID THREE_FOURTH_TOP_RIGHT_EYELID
THREE FOURTH TOP LEFT EYELID THREE_FOURTH_TOP_LEFT_EYELID
THREE FOURTH BOTTOM RIGHT EYELID THREE_FOURTH_BOTTOM_RIGHT_EYELID
THREE FOURTH BOTTOM LEFT EYELID THREE_FOURTH_BOTTOM_LEFT_EYELID
BELOW THREE FOURTH RIGHT EYELID BELOW_THREE_FOURTH_RIGHT_EYELID
BELOW THREE FOURTH LEFT EYELID BELOW_THREE_FOURTH_LEFT_EYELID
ABOVE ONE FOURTH RIGHT EYELID ABOVE_ONE_FOURTH_RIGHT_EYELID
ABOVE ONE FOURTH LEFT EYELID ABOVE_ONE_FOURTH_LEFT_EYELID
ONE FOURTH TOP RIGHT EYELID ONE_FOURTH_TOP_RIGHT_EYELID
ONE FOURTH TOP LEFT EYELID ONE_FOURTH_TOP_LEFT_EYELID
ONE FOURTH BOTTOM RIGHT EYELID ONE_FOURTH_BOTTOM_RIGHT_EYELID
ONE FOURTH BOTTOM LEFT EYELID ONE_FOURTH_BOTTOM_LEFT_EYELID
COLOR CHANNEL COLOR_CHANNEL
DEPTH CHANNEL DEPTH_CHANNEL

Sensor State

Element Name Element Value Description
Ready READY
Running RUNNING
Stopped STOPPED

Sensor Type

Element Name Element Value Description
Temperature/Humidity TEMP_HUMIDITY
GSR GSR
Sinewave SINEWAVE
Self Assessment SELF_ASSESSMENT
Temperature Humidity Mouse Surrogate MOUSE_TEMP_HUMIDITY_SURROGATE
Temperature Humidity Mouse MOUSE_TEMP_HUMIDITY
Mouse Event MOUSE_EVENT
Emotiv Composer EMOTIV_COMPOSER
Emotiv EMOTIV
VHT Multisense VHT_Multisense
Kinect KINECT
OS3D OS3D The Inertial Labs OS3D-GS orientation sensor. Refer to www.inertiallabs.com for more information.
BioHarness BIOHARNESS The Zephyr Technologies BioHarness 3 sensor. Refer to http://www.zephyr-technology.com/products/bioharness-3/ for more information.
Motivation Surrogate MOTIVATION_SURROGATE
Expertise Surrogate EXPERTISE_SURROGATE

Shared Permissions Enum

Element Name Element Value Description
Can View ViewCourse Specifies the ability to view a course in authoring mode
Can Edit EditCourse Specifies the ability to edit a course in authoring mode

Siman Type

Element Name Element Value Description
Load Load
Start Start
Stop Stop
Pause Pause
Resume Resume

Survey Property Key

Element Name Element Value Description
Question Image Question_Image
Question Image Position Question_Image_Position
Question Image Width Question_Image_Width
Is Answer Field Text Box Is_Answer_Field_Text_Box
Column Options Column_Options
Row Options Row_Options
Column Width Column_Width
Reply Option Set Reply_Option_Set
Minimum Selections Required Minimum_Selections_Required
Maximum Selections Allowed Maximum_Selections_Allowed
Scale Image URI Scale_Image_Uri
Hide Reply Option Labels Hide_Reply_Option_Labels
Display Scale Labels Display_Scale_Labels
Left Label Left_Extreme_Label
Right Label Right_Extreme_Label
Mid Point Label Mid_Point_Label
Correct Answer Correct_Answer
CLS Question Priority CLS_Question_Priority
Use Bar Layout Use_Bar_Layout
Scorers Scorers
Survey Item Scales Survey_Item_Scales
Answer Weights Answer_Weights
Hide Survey Name Hide_Survey_Name
Hide Survey Question Numbers Hide_Survey_Question_Numbers
Hide Survey Page Numbers Hide_Survey_Page_Numbers
Survey Next Page Button Label Survey_Next_Page_Button_Label
Survey Next Page Button Label Survey_Complete_Survey_Button_Label
Survey Go Back Enabled Survey_Go_Back_Enabled
Randomize Randomize
Help String Help_String
Text Text
Required Required
Range ValueBounds

Training App Route Type

Element Name Element Value Description
Embedded EMBEDDED Specifies an embedded application that resides as a web page within the Tutor User Interface
Interop INTEROP Specifies an interop-based application that runs external to GIFT and communicates with GIFT through the Gateway Module

Question Type

Element Name Element Value Description
Fill In The Blank FillInTheBlank
Multiple Choice MultipleChoice
Rating Scale RatingScale
Matrix Of Choices MatrixOfChoices
Slider Bar SliderBar

Understanding Level

Element Name Element Value Description
Unknown Unknown
Low Low
Medium Medium
High High

Weapon Control Status

Element Name Element Value Description
Hold Hold
Tight Tight
Free Free