diff --git a/docs/404.html b/docs/404.html index c28770988..d198d9189 100644 --- a/docs/404.html +++ b/docs/404.html @@ -20,13 +20,13 @@ - +

404

That's a Four-Oh-Four.
Take me home.
- + diff --git a/docs/404.html.gz b/docs/404.html.gz index 1d709b3d1..20fd91cec 100644 Binary files a/docs/404.html.gz and b/docs/404.html.gz differ diff --git a/docs/assets/js/10.411d752a.js.gz b/docs/assets/js/10.411d752a.js.gz deleted file mode 100644 index b49d7bf5f..000000000 Binary files a/docs/assets/js/10.411d752a.js.gz and /dev/null differ diff --git a/docs/assets/js/10.411d752a.js b/docs/assets/js/10.4b8c4d62.js similarity index 90% rename from docs/assets/js/10.411d752a.js rename to docs/assets/js/10.4b8c4d62.js index ca5ca8a53..75712b8a1 100644 --- a/docs/assets/js/10.411d752a.js +++ b/docs/assets/js/10.4b8c4d62.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{435:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},447:function(e,t,r){e.exports=r.p+"assets/img/relationship-types.b24659e3.png"},505:function(e,t,r){e.exports=r.p+"assets/img/competency-configuration.35bf84a0.png"},506:function(e,t,r){e.exports=r.p+"assets/img/add-custom-property.acf0adff.png"},507:function(e,t,r){e.exports=r.p+"assets/img/new-competency-property.f69f0bee.png"},508:function(e,t,r){e.exports=r.p+"assets/img/limit-values-competency.a02a44f8.png"},509:function(e,t,r){e.exports=r.p+"assets/img/limit-values-enabled-competency.a16a768c.png"},510:function(e,t,r){e.exports=r.p+"assets/img/limit-concepts.f9c070d5.png"},511:function(e,t,r){e.exports=r.p+"assets/img/limit-by-type.bec9c441.png"},512:function(e,t,r){e.exports=r.p+"assets/img/competency-limited-by-type.e0f0135c.png"},513:function(e,t,r){e.exports=r.p+"assets/img/competency-properties.ac3e4c6c.png"},514:function(e,t,r){e.exports=r.p+"assets/img/restrict-competency-types.b998c4dd.png"},515:function(e,t,r){e.exports=r.p+"assets/img/permitted-values.f4ebf7f0.png"},516:function(e,t,r){e.exports=r.p+"assets/img/allow-levels.4ccdf171.png"},517:function(e,t,r){e.exports=r.p+"assets/img/restrict-levels.1208a441.png"},518:function(e,t,r){e.exports=r.p+"assets/img/enforced-levels.b2bed16e.png"},519:function(e,t,r){e.exports=r.p+"assets/img/add-level.becb6305.png"},520:function(e,t,r){e.exports=r.p+"assets/img/add-new-level.80367258.png"},521:function(e,t,r){e.exports=r.p+"assets/img/apply-selected.ff45ebb9.png"},522:function(e,t,r){e.exports=r.p+"assets/img/competency-relationships-configuration.7fd522bf.png"},523:function(e,t,r){e.exports=r.p+"assets/img/display-options.f8802fa1.png"},524:function(e,t,r){e.exports=r.p+"assets/img/relationship-types-enabled.61c04858.png"},525:function(e,t,r){e.exports=r.p+"assets/img/manage-relationships.bcd93eed.png"},526:function(e,t,r){e.exports=r.p+"assets/img/resource-alignment-configuration.b8d0b7ed.png"},656:function(e,t,r){"use strict";r.r(t);var s=r(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"competency-property-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-property-configuration"}},[e._v("#")]),e._v(" Competency Property Configuration")]),e._v(" "),t("p",[e._v("Competency properties are the values that can be added, edited, and deleted for competency objects. Default competency properties are "),t("em",[t("strong",[e._v("id, name, description,")])]),e._v(" and "),t("em",[t("strong",[e._v("type")])]),e._v(". Properties added here will be displayed when editing competency level objects in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(505),alt:"Competency Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the competency level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-properties"}},[e._v("#")]),e._v(" Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a competency by clicking the "),t("em",[t("strong",[e._v("add custom competency property")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(506),alt:"Add Custom Competency Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("New Competency Property")])]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(507),alt:"New Competency Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-competency-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-property-fields"}},[e._v("#")]),e._v(" Custom Competency Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[t("strong",[e._v("range/type: Text")])]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("range/type")])]),e._v(" field defines the property type. Certain "),t("em",[e._v("range/types")]),e._v(" allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Competency")]),e._v(" - A CaSS competency ID")])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(").")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The alphanumeric name of the property in the data record.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(435),alt:"One Entry Per Language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(508),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(509),alt:"Limit Values Enabled"}})]),e._v(" "),t("h3",{attrs:{id:"limit-concepts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-concepts"}},[e._v("#")]),e._v(" Limit Concepts")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=SKOS Concept")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type SKOS Concept")])]),e._v(", you can limit the concepts to apply to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Concepts")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Concept Schemes or Taxonomies that match your search. Select one or more of the Concept Schemes or Taxonomies. Each selected item will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(510),alt:"Limit Concepts"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type SKOS Concept with limited concepts, only concepts defined within the Limit Concepts configuration will be available to select from.")]),e._v(" "),t("h3",{attrs:{id:"limit-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-types"}},[e._v("#")]),e._v(" Limit Types")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Competency")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Competency")])]),e._v(", you can limit the available competencies to apply to the property. To do this, you must first have Competency Types defined in the configuration. [To add Competency Types, please refer to Restrict Competency Types (#restrict-competency-types). Toggle the "),t("em",[t("strong",[e._v("Limit By Type")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Competency Types that match your search. Select one or more of the Competency Types. Each selected Competency Type will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(511),alt:"Limit By Type"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type Competency, only values with the Competency Type defined in the Limit By Type configuration will be available in the search.")]),e._v(" "),t("p",[e._v('In the example below, "Critical Skill" is a property of type Competency. In the configuration, it is limited by type "Major". The two competencies listed in the search below, "Emergency Response Preparedness" and "Threat Awareness", both have the Competency Type of "Major" applied to them and therefore show up as options to apply to "Critical Skill".\nThe value of the "Critical Skill" property will be set to the id of the competency selected from the search.')]),e._v(" "),t("p",[t("img",{attrs:{src:r(512),alt:"Competency Limited By Type"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-competency-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-competency-property"}},[e._v("#")]),e._v(" Applying the Custom Competency Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-competency-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Competency Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(513),alt:"Delete Custom Properties"}})]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-types"}},[e._v("#")]),e._v(" Restrict Competency Types")]),e._v(" "),t("p",[e._v("By default, values for the competency "),t("em",[t("strong",[e._v("type")])]),e._v(" property are not limited. By toggling this setting, competency types can be restricted to a list of predetermined values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(514),alt:"Restrict Competency Types"}})]),e._v(" "),t("p",[e._v("For each entry in the permitted values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the type value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the type is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(515),alt:"Permitted Values Table"}})]),e._v(" "),t("h2",{attrs:{id:"competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-levels"}},[e._v("#")]),e._v(" Competency Levels")]),e._v(" "),t("p",[e._v("By default, the level property is enabled for competency objects created in the CaSS Authoring Tool. Levels can be disabled by toggling the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" switch.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(516),alt:"Allow Levels"}})]),e._v(" "),t("h2",{attrs:{id:"level-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level-property-fields"}},[e._v("#")]),e._v(" Level Property Fields")]),e._v(" "),t("p",[e._v("Level property fields can be modified from the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" section of the competency configuration settings:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for levels")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of the levels property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which levels are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("level display priority")])]),e._v(" - priority in which levels are displayed in form inputs (primary, secondary, or tertiary)")])]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-levels"}},[e._v("#")]),e._v(" Restrict Competency Levels")]),e._v(" "),t("p",[e._v("By default, levels in CaSS can be created during framework/competency editing. To restrict competencies that allow levels to a limited selection, toggle the "),t("em",[t("strong",[e._v("restrict level values")])]),e._v(" switch and click the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(517),alt:"Restrict Competency Levels"}})]),e._v(" "),t("h3",{attrs:{id:"manage-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manage-competency-levels"}},[e._v("#")]),e._v(" Manage Competency Levels")]),e._v(" "),t("p",[e._v("Clicking the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button displays the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue screen. From here, you can select from all existing levels in CaSS or create more appropriate levels. Any previously selected levels will already be checked and can be removed from the enforced levels list by unchecking the appropriate item.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(518),alt:"Enforced Levels"}})]),e._v(" "),t("h3",{attrs:{id:"add-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#add-competency-levels"}},[e._v("#")]),e._v(" Add Competency Levels")]),e._v(" "),t("p",[e._v("To add a new level to the available level list, click on the "),t("em",[t("strong",[e._v("add level")])]),e._v(" button in the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue window.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(519),alt:"Add Levels"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("add new level")])]),e._v(" dialogue is open. Enter the new level's "),t("em",[t("strong",[e._v("name")])]),e._v(" (and optionally the new level's "),t("em",[t("strong",[e._v("description")])]),e._v(" ). Clicking the "),t("em",[t("strong",[e._v("save new level")])]),e._v(" button on the bottom right corner of the dialogue will create this level in CaSS and return you to the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(520),alt:"Add New Level Modal"}})]),e._v(" "),t("h3",{attrs:{id:"apply-selected-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#apply-selected-competency-levels"}},[e._v("#")]),e._v(" Apply Selected Competency Levels")]),e._v(" "),t("p",[e._v("Upon selecting the desired enforced levels, click the "),t("em",[t("strong",[e._v("apply selected")])]),e._v(" button at the bottom right of the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialog window to apply the enforced levels to competencies.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(521),alt:"Select Enforced Levels"}})]),e._v(" "),t("h2",{attrs:{id:"competency-relationships-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-relationships-configuration"}},[e._v("#")]),e._v(" Competency Relationships Configuration")]),e._v(" "),t("p",[e._v("Relationships can be added as properties on competencies to define how competencies within a framework relate to each other. Enabled relationships will be available in the property drop down when editing competencies in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(522),alt:"Competnecy Relationship Configuration"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-display-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-display-options"}},[e._v("#")]),e._v(" Relationship Display Options")]),e._v(" "),t("p",[e._v("General relationship display options can be configured from the "),t("em",[t("strong",[e._v("display options section")])]),e._v(". These include:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which relationships are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("relationships display priority")])]),e._v(" - priority in which relationships are displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(")")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(523),alt:"Relationship Display Options"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-type-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-type-management"}},[e._v("#")]),e._v(" Relationship Type Management")]),e._v(" "),t("p",[e._v("The types of relationships available to competencies using the configuration can be managed under the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section. Relationship types can be "),t("em",[e._v("enabled, disabled,")]),e._v(" and "),t("em",[e._v("relabeled")]),e._v(".")]),e._v(" "),t("p",[e._v("By default, the following relationship types are enabled:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("isEnabledBy")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("requires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("desires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("narrows")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isRelatedTo")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isEquivalentTo")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(447),alt:"Relationship Types Management"}})]),e._v(" "),t("p",[e._v("To reduce screen clutter, the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section only displays "),t("em",[e._v("enabled")]),e._v(" relationship types. Currently, enabled relationships can be disabled using the corresponding "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the relationship entry.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(524),alt:"Relationship Types Enabled Toggle"}})]),e._v(" "),t("p",[e._v("To add other relationship types to a configuration, click on the "),t("em",[t("strong",[e._v("manage relationships")])]),e._v(" button on the upper right of the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(525),alt:"Manage Relationships"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("manage relationship types")])]),e._v(" dialogue window is open. From this screen, all relationships type currently available in CaSS are categorized and displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(447),alt:"Manage Relationship Types"}})]),e._v(" "),t("p",[e._v("The available relationship types are as follows:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Default Relationships")]),e._v(" "),t("ul",[t("li",[e._v("isEnabledBy")]),e._v(" "),t("li",[e._v("requires")]),e._v(" "),t("li",[e._v("desires")]),e._v(" "),t("li",[e._v("narrows")]),e._v(" "),t("li",[e._v("isRelatedTo")]),e._v(" "),t("li",[e._v("isEquivalentTo")]),e._v(" "),t("li",[e._v("broadens")]),e._v(" "),t("li",[e._v("enables")])])]),e._v(" "),t("li",[t("strong",[e._v("Achievement Standards Network Relationships")]),e._v(" "),t("ul",[t("li",[e._v("majorRelated")]),e._v(" "),t("li",[e._v("minorRelated")])])]),e._v(" "),t("li",[t("strong",[e._v("GEMQ")]),e._v(" "),t("ul",[t("li",[e._v("hasChild")]),e._v(" "),t("li",[e._v("isChildOf")])])]),e._v(" "),t("li",[t("strong",[e._v("Other")]),e._v(" "),t("ul",[t("li",[e._v("isSimilarTo")]),e._v(" "),t("li",[e._v("isPartiallySameAs")])])])]),e._v(" "),t("p",[e._v("To enable or disable a relationship type for the configuration, toggle the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the corresponding type and click the "),t("em",[t("strong",[e._v("ok")])]),e._v(" button.")]),e._v(" "),t("h2",{attrs:{id:"resource-alignment-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resource-alignment-configuration"}},[e._v("#")]),e._v(" Resource Alignment Configuration")]),e._v(" "),t("p",[e._v("Resource alignment terms are used to map resources such as learning material, courses, and other content to competencies in CAT. If enabled, the alignment type property will show up in the framework editor when aligning competencies to resources.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(526),alt:"Resource Alignemnt Configuration"}})]),e._v(" "),t("p",[e._v("Currently, the CaSS Authoring Tool supports four types of resource alignments:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("teaches")]),e._v(" - The item being described is intended to help a person learn the competency or learning outcome defined by the referenced term")]),e._v(" "),t("li",[t("strong",[e._v("assesses")]),e._v(" - The learning resource being described may be used to assess the competency being referenced")]),e._v(" "),t("li",[t("strong",[e._v("requires")]),e._v(" - The competency being referenced is required in order for effective outcome of the learning resource being described")]),e._v(" "),t("li",[t("strong",[e._v("desires")]),e._v(" - Knowledge of the learning resource being described is desired by the competency being referenced")])]),e._v(" "),t("p",[e._v("Each alignment type can be enabled and disabled by toggling the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of each corresponding item.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{433:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},447:function(e,t,r){e.exports=r.p+"assets/img/relationship-types.b24659e3.png"},485:function(e,t,r){e.exports=r.p+"assets/img/competency-configuration.35bf84a0.png"},486:function(e,t,r){e.exports=r.p+"assets/img/add-custom-property.acf0adff.png"},487:function(e,t,r){e.exports=r.p+"assets/img/new-competency-property.f69f0bee.png"},488:function(e,t,r){e.exports=r.p+"assets/img/limit-values-competency.a02a44f8.png"},489:function(e,t,r){e.exports=r.p+"assets/img/limit-values-enabled-competency.a16a768c.png"},490:function(e,t,r){e.exports=r.p+"assets/img/limit-concepts.f9c070d5.png"},491:function(e,t,r){e.exports=r.p+"assets/img/limit-by-type.bec9c441.png"},492:function(e,t,r){e.exports=r.p+"assets/img/competency-limited-by-type.e0f0135c.png"},493:function(e,t,r){e.exports=r.p+"assets/img/competency-properties.ac3e4c6c.png"},494:function(e,t,r){e.exports=r.p+"assets/img/restrict-competency-types.b998c4dd.png"},495:function(e,t,r){e.exports=r.p+"assets/img/permitted-values.f4ebf7f0.png"},496:function(e,t,r){e.exports=r.p+"assets/img/allow-levels.4ccdf171.png"},497:function(e,t,r){e.exports=r.p+"assets/img/restrict-levels.1208a441.png"},498:function(e,t,r){e.exports=r.p+"assets/img/enforced-levels.b2bed16e.png"},499:function(e,t,r){e.exports=r.p+"assets/img/add-level.becb6305.png"},500:function(e,t,r){e.exports=r.p+"assets/img/add-new-level.80367258.png"},501:function(e,t,r){e.exports=r.p+"assets/img/apply-selected.ff45ebb9.png"},502:function(e,t,r){e.exports=r.p+"assets/img/competency-relationships-configuration.7fd522bf.png"},503:function(e,t,r){e.exports=r.p+"assets/img/display-options.f8802fa1.png"},504:function(e,t,r){e.exports=r.p+"assets/img/relationship-types-enabled.61c04858.png"},505:function(e,t,r){e.exports=r.p+"assets/img/manage-relationships.bcd93eed.png"},506:function(e,t,r){e.exports=r.p+"assets/img/resource-alignment-configuration.b8d0b7ed.png"},655:function(e,t,r){"use strict";r.r(t);var s=r(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"competency-property-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-property-configuration"}},[e._v("#")]),e._v(" Competency Property Configuration")]),e._v(" "),t("p",[e._v("Competency properties are the values that can be added, edited, and deleted for competency objects. Default competency properties are "),t("em",[t("strong",[e._v("id, name, description,")])]),e._v(" and "),t("em",[t("strong",[e._v("type")])]),e._v(". Properties added here will be displayed when editing competency level objects in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(485),alt:"Competency Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the competency level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-properties"}},[e._v("#")]),e._v(" Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a competency by clicking the "),t("em",[t("strong",[e._v("add custom competency property")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(486),alt:"Add Custom Competency Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("New Competency Property")])]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(487),alt:"New Competency Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-competency-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-property-fields"}},[e._v("#")]),e._v(" Custom Competency Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[t("strong",[e._v("range/type: Text")])]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("range/type")])]),e._v(" field defines the property type. Certain "),t("em",[e._v("range/types")]),e._v(" allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Competency")]),e._v(" - A CaSS competency ID")])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(").")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The alphanumeric name of the property in the data record.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(433),alt:"One Entry Per Language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(488),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(489),alt:"Limit Values Enabled"}})]),e._v(" "),t("h3",{attrs:{id:"limit-concepts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-concepts"}},[e._v("#")]),e._v(" Limit Concepts")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=SKOS Concept")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type SKOS Concept")])]),e._v(", you can limit the concepts to apply to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Concepts")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Concept Schemes or Taxonomies that match your search. Select one or more of the Concept Schemes or Taxonomies. Each selected item will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(490),alt:"Limit Concepts"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type SKOS Concept with limited concepts, only concepts defined within the Limit Concepts configuration will be available to select from.")]),e._v(" "),t("h3",{attrs:{id:"limit-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-types"}},[e._v("#")]),e._v(" Limit Types")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Competency")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Competency")])]),e._v(", you can limit the available competencies to apply to the property. To do this, you must first have Competency Types defined in the configuration. [To add Competency Types, please refer to Restrict Competency Types (#restrict-competency-types). Toggle the "),t("em",[t("strong",[e._v("Limit By Type")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Competency Types that match your search. Select one or more of the Competency Types. Each selected Competency Type will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(491),alt:"Limit By Type"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type Competency, only values with the Competency Type defined in the Limit By Type configuration will be available in the search.")]),e._v(" "),t("p",[e._v('In the example below, "Critical Skill" is a property of type Competency. In the configuration, it is limited by type "Major". The two competencies listed in the search below, "Emergency Response Preparedness" and "Threat Awareness", both have the Competency Type of "Major" applied to them and therefore show up as options to apply to "Critical Skill".\nThe value of the "Critical Skill" property will be set to the id of the competency selected from the search.')]),e._v(" "),t("p",[t("img",{attrs:{src:r(492),alt:"Competency Limited By Type"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-competency-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-competency-property"}},[e._v("#")]),e._v(" Applying the Custom Competency Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-competency-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Competency Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(493),alt:"Delete Custom Properties"}})]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-types"}},[e._v("#")]),e._v(" Restrict Competency Types")]),e._v(" "),t("p",[e._v("By default, values for the competency "),t("em",[t("strong",[e._v("type")])]),e._v(" property are not limited. By toggling this setting, competency types can be restricted to a list of predetermined values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(494),alt:"Restrict Competency Types"}})]),e._v(" "),t("p",[e._v("For each entry in the permitted values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the type value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the type is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(495),alt:"Permitted Values Table"}})]),e._v(" "),t("h2",{attrs:{id:"competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-levels"}},[e._v("#")]),e._v(" Competency Levels")]),e._v(" "),t("p",[e._v("By default, the level property is enabled for competency objects created in the CaSS Authoring Tool. Levels can be disabled by toggling the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" switch.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(496),alt:"Allow Levels"}})]),e._v(" "),t("h2",{attrs:{id:"level-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level-property-fields"}},[e._v("#")]),e._v(" Level Property Fields")]),e._v(" "),t("p",[e._v("Level property fields can be modified from the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" section of the competency configuration settings:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for levels")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of the levels property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which levels are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("level display priority")])]),e._v(" - priority in which levels are displayed in form inputs (primary, secondary, or tertiary)")])]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-levels"}},[e._v("#")]),e._v(" Restrict Competency Levels")]),e._v(" "),t("p",[e._v("By default, levels in CaSS can be created during framework/competency editing. To restrict competencies that allow levels to a limited selection, toggle the "),t("em",[t("strong",[e._v("restrict level values")])]),e._v(" switch and click the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(497),alt:"Restrict Competency Levels"}})]),e._v(" "),t("h3",{attrs:{id:"manage-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manage-competency-levels"}},[e._v("#")]),e._v(" Manage Competency Levels")]),e._v(" "),t("p",[e._v("Clicking the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button displays the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue screen. From here, you can select from all existing levels in CaSS or create more appropriate levels. Any previously selected levels will already be checked and can be removed from the enforced levels list by unchecking the appropriate item.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(498),alt:"Enforced Levels"}})]),e._v(" "),t("h3",{attrs:{id:"add-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#add-competency-levels"}},[e._v("#")]),e._v(" Add Competency Levels")]),e._v(" "),t("p",[e._v("To add a new level to the available level list, click on the "),t("em",[t("strong",[e._v("add level")])]),e._v(" button in the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue window.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(499),alt:"Add Levels"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("add new level")])]),e._v(" dialogue is open. Enter the new level's "),t("em",[t("strong",[e._v("name")])]),e._v(" (and optionally the new level's "),t("em",[t("strong",[e._v("description")])]),e._v(" ). Clicking the "),t("em",[t("strong",[e._v("save new level")])]),e._v(" button on the bottom right corner of the dialogue will create this level in CaSS and return you to the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(500),alt:"Add New Level Modal"}})]),e._v(" "),t("h3",{attrs:{id:"apply-selected-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#apply-selected-competency-levels"}},[e._v("#")]),e._v(" Apply Selected Competency Levels")]),e._v(" "),t("p",[e._v("Upon selecting the desired enforced levels, click the "),t("em",[t("strong",[e._v("apply selected")])]),e._v(" button at the bottom right of the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialog window to apply the enforced levels to competencies.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(501),alt:"Select Enforced Levels"}})]),e._v(" "),t("h2",{attrs:{id:"competency-relationships-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-relationships-configuration"}},[e._v("#")]),e._v(" Competency Relationships Configuration")]),e._v(" "),t("p",[e._v("Relationships can be added as properties on competencies to define how competencies within a framework relate to each other. Enabled relationships will be available in the property drop down when editing competencies in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(502),alt:"Competnecy Relationship Configuration"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-display-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-display-options"}},[e._v("#")]),e._v(" Relationship Display Options")]),e._v(" "),t("p",[e._v("General relationship display options can be configured from the "),t("em",[t("strong",[e._v("display options section")])]),e._v(". These include:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which relationships are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("relationships display priority")])]),e._v(" - priority in which relationships are displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(")")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(503),alt:"Relationship Display Options"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-type-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-type-management"}},[e._v("#")]),e._v(" Relationship Type Management")]),e._v(" "),t("p",[e._v("The types of relationships available to competencies using the configuration can be managed under the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section. Relationship types can be "),t("em",[e._v("enabled, disabled,")]),e._v(" and "),t("em",[e._v("relabeled")]),e._v(".")]),e._v(" "),t("p",[e._v("By default, the following relationship types are enabled:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("isEnabledBy")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("requires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("desires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("narrows")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isRelatedTo")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isEquivalentTo")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(447),alt:"Relationship Types Management"}})]),e._v(" "),t("p",[e._v("To reduce screen clutter, the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section only displays "),t("em",[e._v("enabled")]),e._v(" relationship types. Currently, enabled relationships can be disabled using the corresponding "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the relationship entry.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(504),alt:"Relationship Types Enabled Toggle"}})]),e._v(" "),t("p",[e._v("To add other relationship types to a configuration, click on the "),t("em",[t("strong",[e._v("manage relationships")])]),e._v(" button on the upper right of the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(505),alt:"Manage Relationships"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("manage relationship types")])]),e._v(" dialogue window is open. From this screen, all relationships type currently available in CaSS are categorized and displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(447),alt:"Manage Relationship Types"}})]),e._v(" "),t("p",[e._v("The available relationship types are as follows:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Default Relationships")]),e._v(" "),t("ul",[t("li",[e._v("isEnabledBy")]),e._v(" "),t("li",[e._v("requires")]),e._v(" "),t("li",[e._v("desires")]),e._v(" "),t("li",[e._v("narrows")]),e._v(" "),t("li",[e._v("isRelatedTo")]),e._v(" "),t("li",[e._v("isEquivalentTo")]),e._v(" "),t("li",[e._v("broadens")]),e._v(" "),t("li",[e._v("enables")])])]),e._v(" "),t("li",[t("strong",[e._v("Achievement Standards Network Relationships")]),e._v(" "),t("ul",[t("li",[e._v("majorRelated")]),e._v(" "),t("li",[e._v("minorRelated")])])]),e._v(" "),t("li",[t("strong",[e._v("GEMQ")]),e._v(" "),t("ul",[t("li",[e._v("hasChild")]),e._v(" "),t("li",[e._v("isChildOf")])])]),e._v(" "),t("li",[t("strong",[e._v("Other")]),e._v(" "),t("ul",[t("li",[e._v("isSimilarTo")]),e._v(" "),t("li",[e._v("isPartiallySameAs")])])])]),e._v(" "),t("p",[e._v("To enable or disable a relationship type for the configuration, toggle the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the corresponding type and click the "),t("em",[t("strong",[e._v("ok")])]),e._v(" button.")]),e._v(" "),t("h2",{attrs:{id:"resource-alignment-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resource-alignment-configuration"}},[e._v("#")]),e._v(" Resource Alignment Configuration")]),e._v(" "),t("p",[e._v("Resource alignment terms are used to map resources such as learning material, courses, and other content to competencies in CAT. If enabled, the alignment type property will show up in the framework editor when aligning competencies to resources.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(506),alt:"Resource Alignemnt Configuration"}})]),e._v(" "),t("p",[e._v("Currently, the CaSS Authoring Tool supports four types of resource alignments:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("teaches")]),e._v(" - The item being described is intended to help a person learn the competency or learning outcome defined by the referenced term")]),e._v(" "),t("li",[t("strong",[e._v("assesses")]),e._v(" - The learning resource being described may be used to assess the competency being referenced")]),e._v(" "),t("li",[t("strong",[e._v("requires")]),e._v(" - The competency being referenced is required in order for effective outcome of the learning resource being described")]),e._v(" "),t("li",[t("strong",[e._v("desires")]),e._v(" - Knowledge of the learning resource being described is desired by the competency being referenced")])]),e._v(" "),t("p",[e._v("Each alignment type can be enabled and disabled by toggling the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of each corresponding item.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/10.4b8c4d62.js.gz b/docs/assets/js/10.4b8c4d62.js.gz new file mode 100644 index 000000000..05f9c4b35 Binary files /dev/null and b/docs/assets/js/10.4b8c4d62.js.gz differ diff --git a/docs/assets/js/11.8bfaceb8.js b/docs/assets/js/11.86096b96.js similarity index 81% rename from docs/assets/js/11.8bfaceb8.js rename to docs/assets/js/11.86096b96.js index da63dc64e..67d0669a5 100644 --- a/docs/assets/js/11.8bfaceb8.js +++ b/docs/assets/js/11.86096b96.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{433:function(e,t,a){e.exports=a.p+"assets/img/filter-frameworks-button.e6c645ee.png"},434:function(e,t,a){e.exports=a.p+"assets/img/filter-and-sort-panel.17620163.png"},485:function(e,t,a){e.exports=a.p+"assets/img/frameworks-page.7c414a94.png"},486:function(e,t,a){e.exports=a.p+"assets/img/search-apply-to.5f3c31e9.png"},487:function(e,t,a){e.exports=a.p+"assets/img/search-field-types.4952e58f.png"},488:function(e,t,a){e.exports=a.p+"assets/img/framework-information.96bc1382.png"},489:function(e,t,a){e.exports=a.p+"assets/img/create-new-framework.ec13de7d.png"},490:function(e,t,a){e.exports=a.p+"assets/img/add-competencies.824a430d.png"},491:function(e,t,a){e.exports=a.p+"assets/img/add-children-competencies.acdce853.png"},492:function(e,t,a){e.exports=a.p+"assets/img/edit-competencies.97631d75.png"},493:function(e,t,a){e.exports=a.p+"assets/img/edit-modal.ffa034d8.png"},494:function(e,t,a){e.exports=a.p+"assets/img/add-property.c64cced1.png"},495:function(e,t,a){e.exports=a.p+"assets/img/edit-multiple-competencies.249cc34f.png"},496:function(e,t,a){e.exports=a.p+"assets/img/adding-property-to-multiple.26b5968f.png"},497:function(e,t,a){e.exports=a.p+"assets/img/undo-button.c8cb7762.png"},498:function(e,t,a){e.exports=a.p+"assets/img/drag-and-drop.b8547df3.png"},499:function(e,t,a){e.exports=a.p+"assets/img/cut-copy-paste.948815df.png"},500:function(e,t,a){e.exports=a.p+"assets/img/setting-a-framework-configuration.d432089d.png"},501:function(e,t,a){e.exports=a.p+"assets/img/manage-framework-configuration.3b043c9a.png"},502:function(e,t,a){e.exports=a.p+"assets/img/manage-users-button.7e4db1a3.png"},503:function(e,t,a){e.exports=a.p+"assets/img/share-framework-and-manage-users.dd1d4622.png"},504:function(e,t,a){e.exports=a.p+"assets/img/property-details.f97b720c.png"},655:function(e,t,a){"use strict";a.r(t);var o=a(69),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"finding-and-editing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#finding-and-editing"}},[e._v("#")]),e._v(" Finding and Editing")]),e._v(" "),t("p",[e._v("Competency frameworks can be viewed and managed in CaSS Authoring Tools by navigating to the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" page. The Frameworks page can be visited by clicking on the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" button on the left sidebar highlighted by the red box in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(485),alt:"CAT Competency Framework Management - Frameworks Page"}})]),e._v(" "),t("p",[e._v("On this page, frameworks are shown with their names in bold. Beneath the\nname, you can see how many competencies are in the framework, when it\nwas created and last modified. If you have permission to edit the\nframework, it will say “"),t("em",[e._v("Editable")]),e._v("”.")]),e._v(" "),t("h2",{attrs:{id:"sorting-and-filtering-frameworks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sorting-and-filtering-frameworks"}},[e._v("#")]),e._v(" Sorting and Filtering Frameworks")]),e._v(" "),t("p",[e._v("You can sort and filter the list of frameworks by clicking the filter\nbutton next to the search bar. The button next to it clears any filters\nyou’ve applied.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(433),alt:"CAT Competency Framework Management - Filter Button"}})]),e._v(" "),t("p",[e._v("The filter button will open up a side panel to the right of the\nframework list with options to sort, filter, and apply your search term\nto various fields.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(434),alt:"CAT Competency and Framework Management - Filter and Sort Panel"}})]),e._v(" "),t("p",[e._v("The filter options under "),t("em",[t("strong",[e._v("Apply search term to")])]),e._v(" are available based on the type of each field wtihin the current configuration (either browser default or instance default).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(486),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[e._v("Fields for frameworks, competencies, and directories that are of the type "),t("em",[t("strong",[e._v("Text")])]),e._v(" or "),t("em",[t("strong",[e._v("Lang-String")])]),e._v(" are made available to filter on when searching. These settings are applied when creating or editing fields in Configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(487),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[t("em",[e._v("(Advanced)")]),e._v(" The configuration settings of "),t("code",[e._v("ceasnDataFields=true")]),e._v(" or "),t("code",[e._v("tlaProfile=true")]),e._v(" override browser default or instance default configurations when listing available fields to filter on.")]),e._v(" "),t("h2",{attrs:{id:"opening-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#opening-a-framework"}},[e._v("#")]),e._v(" Opening a Framework")]),e._v(" "),t("p",[e._v("Double-click on a framework to open the framework.")]),e._v(" "),t("h2",{attrs:{id:"viewing-a-framework-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-a-framework-in-more-detail"}},[e._v("#")]),e._v(" Viewing a Framework in More Detail")]),e._v(" "),t("p",[e._v("Single-click on a framework to view an Information panel with more details and options for the framework.")]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("Information")])]),e._v(" about the framework will show on a side panel to the right of the directory list.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(488),alt:"CAT Competency and Framework Management - Information Panel"}})]),e._v(" "),t("h2",{attrs:{id:"creating-a-new-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-competency-framework"}},[e._v("#")]),e._v(" Creating a New Competency Framework")]),e._v(" "),t("p",[e._v("A new competency framework can be created within CaSS Authoring Tools by pressing the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button at the top of the framework management page.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(489),alt:"CAT Competency Framework Management - Create New Framework"}})]),e._v(" "),t("p",[e._v("When you click on the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button to create a new competency framework, you will be required to enter a "),t("em",[e._v("Framework Name")]),e._v(" and "),t("em",[e._v("Framework description")]),e._v(" to your new competency framework. Additional properties can be added to a competency framework that are controlled by CaSS Authoring Tools’ configuration settings. For more information about configuration settings and managing the properties of competency frameworks, see the "),t("em",[t("strong",[e._v("Custom Framework Properties")])]),e._v(" section of this user guide under "),t("em",[t("strong",[e._v("Competency Framework and Competency Configuration")])]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"adding-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-competencies"}},[e._v("#")]),e._v(" Adding Competencies")]),e._v(" "),t("p",[e._v("To add competencies to your framework, click the "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button below the framework details.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(490),alt:"CAT Competency Framework Management - Add Competencies"}})]),e._v(" "),t("p",[e._v("You can construct a hierarchy of competencies by checking the box to the left of a competency. The "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button text will change to "),t("em",[t("strong",[e._v("add child")])]),e._v(", which you can click to place a competency underneath the one you’ve checked.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(491),alt:"CAT Competency Framework Management - Add Children to Competencies"}})]),e._v(" "),t("h2",{attrs:{id:"editing-frameworks-and-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-frameworks-and-competencies"}},[e._v("#")]),e._v(" Editing Frameworks and Competencies")]),e._v(" "),t("p",[e._v("To edit a single competency or framework, hover over the item you want to edit and an edit icon will appear. Click the icon highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(492),alt:"CAT Competency Framework Management - Edit"}})]),e._v(" "),t("p",[e._v("A modal will appear and you can edit the framework or competency’s properties. This modal also allows you to delete the competency or framework, remove a competency from the current framework without deleting it, and export the object. Click "),t("em",[t("strong",[e._v("done")])]),e._v(" when you’ve finished making changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(493),alt:"CAT Competency Framework Management - Edit Modal"}})]),e._v(" "),t("p",[e._v("You can add new properties to your object from here too by clicking the "),t("em",[t("strong",[e._v("add property")])]),e._v(" button at the bottom of the modal. You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter in the value, and click "),t("em",[t("strong",[e._v("save property")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(494),alt:"CAT Competency Framework Management - Add a Property"}})]),e._v(" "),t("p",[e._v("If there’s a property you’d like to add to multiple competencies, use the checkboxes to select the competencies you want to edit and click "),t("em",[t("strong",[e._v("edit multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(495),alt:"CAT Competency Framework Management - Edit Multiple Competencies"}})]),e._v(" "),t("p",[e._v("You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter the value, and click "),t("em",[t("strong",[e._v("apply to multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(496),alt:"CAT Competency Framework Management - Adding Property to Multiple Competencies"}})]),e._v(" "),t("p",[e._v("If you make a mistake while editing, click the "),t("em",[t("strong",[e._v("undo")])]),e._v(" button in the bar at the top of the page to revert your most recent changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(497),alt:"CAT Competency Framework Management - Undo Button"}})]),e._v(" "),t("h3",{attrs:{id:"changing-competency-hierarchy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-competency-hierarchy"}},[e._v("#")]),e._v(" Changing Competency Hierarchy")]),e._v(" "),t("p",[e._v("There are several ways to move competencies around in the hierarchy. You can drag and drop the competency to the spot you’d like to move it to by hovering over the competency. The icon highlighted in the image below will appear and you can click on it, hold down, and drag the competency to the appropriate position.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(498),alt:"CAT Competency Framework Management - Drag and Drop"}})]),e._v(" "),t("p",[e._v("You can also move a competency by selecting its checkbox. Click the cut or copy icon highlighted in red in the image below, select another competency, and click the paste icon.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(499),alt:"CAT Competency Framework Management - Cut, Copy, Paste"}})]),e._v(" "),t("p",[e._v("With one competency selected, you can move it with keyboard commands as well. You can cut, copy and paste, or use the arrow keys to move it to the position you want.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Tab")]),e._v(" - Switch focus between elements on the page")]),e._v(" "),t("li",[t("strong",[e._v("Space")]),e._v(" - Select the element currently in focus")]),e._v(" "),t("li",[t("strong",[e._v("Shift + X")]),e._v(" - Cut competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + C")]),e._v(" - Cut and copy competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + V")]),e._v(" - Drop competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ↑, Shift + ↓")]),e._v(" - Move competency up/down in the list.")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ←, Shift + →")]),e._v(" - Move competency indent/outdent in the list")])]),e._v(" "),t("h2",{attrs:{id:"setting-a-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-a-configuration"}},[e._v("#")]),e._v(" Setting a Configuration")]),e._v(" "),t("p",[e._v("Configurations control which properties you can edit and display within a particular framework, and what types of values they can have. If youdon’t specify a configuration for your framework, the browser, instance, or CaSS default will control the properties. If you want a framework to have a different configuration, you can set one by clicking the\nframework configuration button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(500),alt:"CAT Competency Framework Management - Setting a Framework Configuration"}})]),e._v(" "),t("p",[e._v("This will open up a panel with a list of available configurations to apply. Click "),t("em",[t("strong",[e._v("set as framework default")])]),e._v(" next to the configuration you want.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(501),alt:"CAT Competency Framework Management - Manage Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"managing-users-and-sharing-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing-a-framework"}},[e._v("#")]),e._v(" Managing Users and Sharing a Framework")]),e._v(" "),t("p",[e._v("To control who can view and edit a framework you own, click the "),t("em",[t("strong",[e._v("manage users")])]),e._v(" button highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(502),alt:"CAT Competency Framework Management - Manage Users Button"}})]),e._v(" "),t("p",[e._v("You can see who the admins and viewers of your framework are, and add or remove users and organizations. This view also has a shareable link to your framework that you can copy to your clipboard and give to someone else.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(503),alt:"CAT Competency Framework Management - Share Framework and Manage Users"}})]),e._v(" "),t("h2",{attrs:{id:"viewing-frameworks-and-competencies-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-frameworks-and-competencies-in-more-detail"}},[e._v("#")]),e._v(" Viewing Frameworks and Competencies in More Detail")]),e._v(" "),t("p",[e._v("By default, only primary properties are shown on a framework and competencies. To see some additional properties, click "),t("em",[t("strong",[e._v("secondary")])]),e._v(" in the panel at the top of the screen. This will show all the properties assigned as "),t("em",[e._v("primary")]),e._v(" and "),t("em",[e._v("secondary")]),e._v(" in the configuration that have values. To see all properties that have values, click on "),t("em",[t("strong",[e._v("tertiary")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(504),alt:"CAT Competency Framework Management - Property Details"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{434:function(e,t,a){e.exports=a.p+"assets/img/filter-frameworks-button.e6c645ee.png"},435:function(e,t,a){e.exports=a.p+"assets/img/filter-and-sort-panel.17620163.png"},507:function(e,t,a){e.exports=a.p+"assets/img/frameworks-page.7c414a94.png"},508:function(e,t,a){e.exports=a.p+"assets/img/search-apply-to.5f3c31e9.png"},509:function(e,t,a){e.exports=a.p+"assets/img/search-field-types.4952e58f.png"},510:function(e,t,a){e.exports=a.p+"assets/img/framework-information.96bc1382.png"},511:function(e,t,a){e.exports=a.p+"assets/img/create-new-framework.ec13de7d.png"},512:function(e,t,a){e.exports=a.p+"assets/img/add-competencies.824a430d.png"},513:function(e,t,a){e.exports=a.p+"assets/img/add-children-competencies.acdce853.png"},514:function(e,t,a){e.exports=a.p+"assets/img/edit-competencies.97631d75.png"},515:function(e,t,a){e.exports=a.p+"assets/img/edit-modal.ffa034d8.png"},516:function(e,t,a){e.exports=a.p+"assets/img/add-property.c64cced1.png"},517:function(e,t,a){e.exports=a.p+"assets/img/edit-multiple-competencies.249cc34f.png"},518:function(e,t,a){e.exports=a.p+"assets/img/adding-property-to-multiple.26b5968f.png"},519:function(e,t,a){e.exports=a.p+"assets/img/undo-button.c8cb7762.png"},520:function(e,t,a){e.exports=a.p+"assets/img/drag-and-drop.b8547df3.png"},521:function(e,t,a){e.exports=a.p+"assets/img/cut-copy-paste.948815df.png"},522:function(e,t,a){e.exports=a.p+"assets/img/setting-a-framework-configuration.d432089d.png"},523:function(e,t,a){e.exports=a.p+"assets/img/manage-framework-configuration.3b043c9a.png"},524:function(e,t,a){e.exports=a.p+"assets/img/manage-users-button.7e4db1a3.png"},525:function(e,t,a){e.exports=a.p+"assets/img/share-framework-and-manage-users.dd1d4622.png"},526:function(e,t,a){e.exports=a.p+"assets/img/property-details.f97b720c.png"},656:function(e,t,a){"use strict";a.r(t);var o=a(69),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"finding-and-editing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#finding-and-editing"}},[e._v("#")]),e._v(" Finding and Editing")]),e._v(" "),t("p",[e._v("Competency frameworks can be viewed and managed in CaSS Authoring Tools by navigating to the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" page. The Frameworks page can be visited by clicking on the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" button on the left sidebar highlighted by the red box in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(507),alt:"CAT Competency Framework Management - Frameworks Page"}})]),e._v(" "),t("p",[e._v("On this page, frameworks are shown with their names in bold. Beneath the\nname, you can see how many competencies are in the framework, when it\nwas created and last modified. If you have permission to edit the\nframework, it will say “"),t("em",[e._v("Editable")]),e._v("”.")]),e._v(" "),t("h2",{attrs:{id:"sorting-and-filtering-frameworks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sorting-and-filtering-frameworks"}},[e._v("#")]),e._v(" Sorting and Filtering Frameworks")]),e._v(" "),t("p",[e._v("You can sort and filter the list of frameworks by clicking the filter\nbutton next to the search bar. The button next to it clears any filters\nyou’ve applied.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(434),alt:"CAT Competency Framework Management - Filter Button"}})]),e._v(" "),t("p",[e._v("The filter button will open up a side panel to the right of the\nframework list with options to sort, filter, and apply your search term\nto various fields.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(435),alt:"CAT Competency and Framework Management - Filter and Sort Panel"}})]),e._v(" "),t("p",[e._v("The filter options under "),t("em",[t("strong",[e._v("Apply search term to")])]),e._v(" are available based on the type of each field wtihin the current configuration (either browser default or instance default).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(508),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[e._v("Fields for frameworks, competencies, and directories that are of the type "),t("em",[t("strong",[e._v("Text")])]),e._v(" or "),t("em",[t("strong",[e._v("Lang-String")])]),e._v(" are made available to filter on when searching. These settings are applied when creating or editing fields in Configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(509),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[t("em",[e._v("(Advanced)")]),e._v(" The configuration settings of "),t("code",[e._v("ceasnDataFields=true")]),e._v(" or "),t("code",[e._v("tlaProfile=true")]),e._v(" override browser default or instance default configurations when listing available fields to filter on.")]),e._v(" "),t("h2",{attrs:{id:"opening-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#opening-a-framework"}},[e._v("#")]),e._v(" Opening a Framework")]),e._v(" "),t("p",[e._v("Double-click on a framework to open the framework.")]),e._v(" "),t("h2",{attrs:{id:"viewing-a-framework-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-a-framework-in-more-detail"}},[e._v("#")]),e._v(" Viewing a Framework in More Detail")]),e._v(" "),t("p",[e._v("Single-click on a framework to view an Information panel with more details and options for the framework.")]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("Information")])]),e._v(" about the framework will show on a side panel to the right of the directory list.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(510),alt:"CAT Competency and Framework Management - Information Panel"}})]),e._v(" "),t("h2",{attrs:{id:"creating-a-new-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-competency-framework"}},[e._v("#")]),e._v(" Creating a New Competency Framework")]),e._v(" "),t("p",[e._v("A new competency framework can be created within CaSS Authoring Tools by pressing the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button at the top of the framework management page.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(511),alt:"CAT Competency Framework Management - Create New Framework"}})]),e._v(" "),t("p",[e._v("When you click on the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button to create a new competency framework, you will be required to enter a "),t("em",[e._v("Framework Name")]),e._v(" and "),t("em",[e._v("Framework description")]),e._v(" to your new competency framework. Additional properties can be added to a competency framework that are controlled by CaSS Authoring Tools’ configuration settings. For more information about configuration settings and managing the properties of competency frameworks, see the "),t("em",[t("strong",[e._v("Custom Framework Properties")])]),e._v(" section of this user guide under "),t("em",[t("strong",[e._v("Competency Framework and Competency Configuration")])]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"adding-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-competencies"}},[e._v("#")]),e._v(" Adding Competencies")]),e._v(" "),t("p",[e._v("To add competencies to your framework, click the "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button below the framework details.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(512),alt:"CAT Competency Framework Management - Add Competencies"}})]),e._v(" "),t("p",[e._v("You can construct a hierarchy of competencies by checking the box to the left of a competency. The "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button text will change to "),t("em",[t("strong",[e._v("add child")])]),e._v(", which you can click to place a competency underneath the one you’ve checked.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(513),alt:"CAT Competency Framework Management - Add Children to Competencies"}})]),e._v(" "),t("h2",{attrs:{id:"editing-frameworks-and-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-frameworks-and-competencies"}},[e._v("#")]),e._v(" Editing Frameworks and Competencies")]),e._v(" "),t("p",[e._v("To edit a single competency or framework, hover over the item you want to edit and an edit icon will appear. Click the icon highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(514),alt:"CAT Competency Framework Management - Edit"}})]),e._v(" "),t("p",[e._v("A modal will appear and you can edit the framework or competency’s properties. This modal also allows you to delete the competency or framework, remove a competency from the current framework without deleting it, and export the object. Click "),t("em",[t("strong",[e._v("done")])]),e._v(" when you’ve finished making changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(515),alt:"CAT Competency Framework Management - Edit Modal"}})]),e._v(" "),t("p",[e._v("You can add new properties to your object from here too by clicking the "),t("em",[t("strong",[e._v("add property")])]),e._v(" button at the bottom of the modal. You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter in the value, and click "),t("em",[t("strong",[e._v("save property")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(516),alt:"CAT Competency Framework Management - Add a Property"}})]),e._v(" "),t("p",[e._v("If there’s a property you’d like to add to multiple competencies, use the checkboxes to select the competencies you want to edit and click "),t("em",[t("strong",[e._v("edit multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(517),alt:"CAT Competency Framework Management - Edit Multiple Competencies"}})]),e._v(" "),t("p",[e._v("You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter the value, and click "),t("em",[t("strong",[e._v("apply to multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(518),alt:"CAT Competency Framework Management - Adding Property to Multiple Competencies"}})]),e._v(" "),t("p",[e._v("If you make a mistake while editing, click the "),t("em",[t("strong",[e._v("undo")])]),e._v(" button in the bar at the top of the page to revert your most recent changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(519),alt:"CAT Competency Framework Management - Undo Button"}})]),e._v(" "),t("h3",{attrs:{id:"changing-competency-hierarchy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-competency-hierarchy"}},[e._v("#")]),e._v(" Changing Competency Hierarchy")]),e._v(" "),t("p",[e._v("There are several ways to move competencies around in the hierarchy. You can drag and drop the competency to the spot you’d like to move it to by hovering over the competency. The icon highlighted in the image below will appear and you can click on it, hold down, and drag the competency to the appropriate position.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(520),alt:"CAT Competency Framework Management - Drag and Drop"}})]),e._v(" "),t("p",[e._v("You can also move a competency by selecting its checkbox. Click the cut or copy icon highlighted in red in the image below, select another competency, and click the paste icon.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(521),alt:"CAT Competency Framework Management - Cut, Copy, Paste"}})]),e._v(" "),t("p",[e._v("With one competency selected, you can move it with keyboard commands as well. You can cut, copy and paste, or use the arrow keys to move it to the position you want.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Tab")]),e._v(" - Switch focus between elements on the page")]),e._v(" "),t("li",[t("strong",[e._v("Space")]),e._v(" - Select the element currently in focus")]),e._v(" "),t("li",[t("strong",[e._v("Shift + X")]),e._v(" - Cut competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + C")]),e._v(" - Cut and copy competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + V")]),e._v(" - Drop competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ↑, Shift + ↓")]),e._v(" - Move competency up/down in the list.")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ←, Shift + →")]),e._v(" - Move competency indent/outdent in the list")])]),e._v(" "),t("h2",{attrs:{id:"setting-a-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-a-configuration"}},[e._v("#")]),e._v(" Setting a Configuration")]),e._v(" "),t("p",[e._v("Configurations control which properties you can edit and display within a particular framework, and what types of values they can have. If youdon’t specify a configuration for your framework, the browser, instance, or CaSS default will control the properties. If you want a framework to have a different configuration, you can set one by clicking the\nframework configuration button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(522),alt:"CAT Competency Framework Management - Setting a Framework Configuration"}})]),e._v(" "),t("p",[e._v("This will open up a panel with a list of available configurations to apply. Click "),t("em",[t("strong",[e._v("set as framework default")])]),e._v(" next to the configuration you want.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(523),alt:"CAT Competency Framework Management - Manage Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"managing-users-and-sharing-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing-a-framework"}},[e._v("#")]),e._v(" Managing Users and Sharing a Framework")]),e._v(" "),t("p",[e._v("To control who can view and edit a framework you own, click the "),t("em",[t("strong",[e._v("manage users")])]),e._v(" button highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(524),alt:"CAT Competency Framework Management - Manage Users Button"}})]),e._v(" "),t("p",[e._v("You can see who the admins and viewers of your framework are, and add or remove users and organizations. This view also has a shareable link to your framework that you can copy to your clipboard and give to someone else.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(525),alt:"CAT Competency Framework Management - Share Framework and Manage Users"}})]),e._v(" "),t("h2",{attrs:{id:"viewing-frameworks-and-competencies-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-frameworks-and-competencies-in-more-detail"}},[e._v("#")]),e._v(" Viewing Frameworks and Competencies in More Detail")]),e._v(" "),t("p",[e._v("By default, only primary properties are shown on a framework and competencies. To see some additional properties, click "),t("em",[t("strong",[e._v("secondary")])]),e._v(" in the panel at the top of the screen. This will show all the properties assigned as "),t("em",[e._v("primary")]),e._v(" and "),t("em",[e._v("secondary")]),e._v(" in the configuration that have values. To see all properties that have values, click on "),t("em",[t("strong",[e._v("tertiary")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(526),alt:"CAT Competency Framework Management - Property Details"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/11.86096b96.js.gz b/docs/assets/js/11.86096b96.js.gz new file mode 100644 index 000000000..199e8501e Binary files /dev/null and b/docs/assets/js/11.86096b96.js.gz differ diff --git a/docs/assets/js/11.8bfaceb8.js.gz b/docs/assets/js/11.8bfaceb8.js.gz deleted file mode 100644 index 38f0b5c3c..000000000 Binary files a/docs/assets/js/11.8bfaceb8.js.gz and /dev/null differ diff --git a/docs/assets/js/13.726d8471.js.gz b/docs/assets/js/13.726d8471.js.gz deleted file mode 100644 index ace8508f4..000000000 Binary files a/docs/assets/js/13.726d8471.js.gz and /dev/null differ diff --git a/docs/assets/js/13.726d8471.js b/docs/assets/js/13.f0dba927.js similarity index 80% rename from docs/assets/js/13.726d8471.js rename to docs/assets/js/13.f0dba927.js index ffdee8713..b9bab95e1 100644 --- a/docs/assets/js/13.726d8471.js +++ b/docs/assets/js/13.f0dba927.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{448:function(e,t,a){e.exports=a.p+"assets/img/alignment-bubble.d1653648.png"},533:function(e,t,a){e.exports=a.p+"assets/img/crosswalk-navigation.d511ba6f.png"},534:function(e,t,a){e.exports=a.p+"assets/img/progress-bar.b67face7.png"},535:function(e,t,a){e.exports=a.p+"assets/img/main-alignment-screen.57985f0f.png"},536:function(e,t,a){e.exports=a.p+"assets/img/action-buttons.aa2fc6ad.png"},537:function(e,t,a){e.exports=a.p+"assets/img/relationship-add-button.fe96ae46.png"},538:function(e,t,a){e.exports=a.p+"assets/img/relationship-type-selection.1ccc143f.png"},539:function(e,t,a){e.exports=a.p+"assets/img/target-competency-selection.1dc6c010.png"},540:function(e,t,a){e.exports=a.p+"assets/img/apply-alignments-button.6cc30393.png"},541:function(e,t,a){e.exports=a.p+"assets/img/alignment-change-tally.ab69747d.png"},542:function(e,t,a){e.exports=a.p+"assets/img/target-competency-removal.e40196e6.png"},543:function(e,t,a){e.exports=a.p+"assets/img/apply-alignment-bubble.88166cf5.png"},544:function(e,t,a){e.exports=a.p+"assets/img/alignment-removing-one.027f9b51.png"},545:function(e,t,a){e.exports=a.p+"assets/img/alignment-save-and-review.32dcf037.png"},546:function(e,t,a){e.exports=a.p+"assets/img/alignment-summary.f357b47a.png"},547:function(e,t,a){e.exports=a.p+"assets/img/framework-application-selection.770e618c.png"},548:function(e,t,a){e.exports=a.p+"assets/img/continue-editing.0f0e5022.png"},549:function(e,t,a){e.exports=a.p+"assets/img/save-alignments.9b945c1b.png"},658:function(e,t,a){"use strict";a.r(t);var s=a(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#framework-crosswalk-tool"}},[e._v("#")]),e._v(" Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be used to create relationships across two separate frameworks.")]),e._v(" "),t("p",[e._v("In order to apply any relationships created with the crosswalk tool, at least one of the frameworks initially selected in the tool wizard must be owned and editable by the logged in user.")]),e._v(" "),t("h2",{attrs:{id:"accessing-the-framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-framework-crosswalk-tool"}},[e._v("#")]),e._v(" Accessing the Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be accessed at any time by selecting the crosswalk frameworks icon under the "),t("em",[t("strong",[e._v("competencies & frameworks")])]),e._v(" category in the navigation menu.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(533),alt:"CAT Competency Framework Management - Crosswalk Frameworks Navigation"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-overview"}},[e._v("#")]),e._v(" Crosswalk Overview")]),e._v(" "),t("p",[e._v("Framework crosswalking is comprised of four steps:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Select Source")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the source framework")]),e._v(" "),t("li",[e._v("The selection for the source framework is limited to frameworks that\nare owned and editable by the current user.")]),e._v(" "),t("li",[e._v("The source framework also defines the relationship types available\nfor the crosswalk by determining the applied configuration of that\nframework.  If there is no explicit configuration applied to the\nselected framework, the relationships available for the crosswalk\nare determined by the selected browser default configuration or the\ninstance default configuration.")])])]),e._v(" "),t("li",[t("strong",[e._v("Select Target")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the target framework")])])]),e._v(" "),t("li",[t("strong",[e._v("Align Frameworks")]),e._v(" "),t("ul",[t("li",[e._v("Creation of the relationships between the\ncompetencies of the two frameworks")])])]),e._v(" "),t("li",[t("strong",[e._v("Save & Review")]),e._v(" "),t("ul",[t("li",[e._v("Review of created relationships, determination of\nwhere the relationships will reside (one or both of the chosen\nframeworks), and the saving of the relationships")])])])]),e._v(" "),t("p",[e._v("The current step will be highlighted by the progress bar at the top of the crosswalk tool screen.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(534),alt:"CAT Crosswalk Frameworks - Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"aligning-framework-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aligning-framework-competencies"}},[e._v("#")]),e._v(" Aligning Framework Competencies")]),e._v(" "),t("p",[e._v("After selecting the source and target frameworks, the selected frameworks will be displayed in side by side panes. Any existing relationships between the two frameworks will be indicated by orange bubbles underneath the corresponding competency in the source framework pane.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(535),alt:"CAT Crosswalk Frameworks - Main Alignment Screen"}})]),e._v(" "),t("p",[e._v("At the top of each framework pane are four action buttons. Clicking these action buttons will affect only the framework view in the corresponding pane.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("show aligned only")]),e._v(" - show only competencies that have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show unaligned only")]),e._v(" - show only competencies that do not have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show all ("),t("em",[e._v("default")]),e._v(")")]),e._v(" - show all competencies regardless of existing alignments")]),e._v(" "),t("li",[t("strong",[e._v("change framework")]),e._v(" - change the source/target framework\n"),t("ul",[t("li",[e._v("Selecting this action will remove all unsaved alignments from the current crosswalk session")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(536),alt:"CAT Crosswalk Frameworks - Crosswalk Action Buttons"}})]),e._v(" "),t("h3",{attrs:{id:"adding-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Adding a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To begin adding a relationship between the competencies within the frameworks, hover over the appropriate competency in the source framework pane and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(537),alt:"CAT Crosswalk Frameworks - Relationship Add Button"}})]),e._v(" "),t("p",[e._v("Select the desired relationship type from the dropdown.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(538),alt:"CAT Crosswalk Frameworks - Relationship Type Selection"}})]),e._v(" "),t("p",[e._v("Once a relationship type has been selected, click the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" to the right of each competency in the target framework pane you wish to apply the relationship. When clicked, the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" will transition into a checkmark. Clicking on this checkmark will remove the relationship.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(539),alt:"CAT Crosswalk Frameworks - Target Competency Selection"}})]),e._v(" "),t("p",[e._v("After selecting the desired competencies, click the apply alignments button.  Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(540),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(541),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("p",[e._v("The alignment tally will keep track of both the addition of new alignments and the removal of alignments created in previous crosswalk sessions.")]),e._v(" "),t("p",[e._v("Once applied, alignments can be quickly accessed by clicking on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(448),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("h3",{attrs:{id:"removing-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Removing a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To remove an existing relationship click on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(448),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("p",[e._v("In the target pane, click on the checkmark icon to the right of the competency you wish to remove from the relationship. When clicked, the checkmark icon will transition into a + button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(542),alt:"CAT Crosswalk Frameworks - Target Competency Removal"}})]),e._v(" "),t("p",[e._v("After removing the undesired competencies, click the apply alignments button. Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(543),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(544),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-review-and-save"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-review-and-save"}},[e._v("#")]),e._v(" Crosswalk Review and Save")]),e._v(" "),t("p",[e._v("To save all changes made during the crosswalk session to the repository, click on the "),t("em",[t("strong",[e._v("save & review")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(545),alt:"CAT Crosswalk Frameworks - Save & Review"}})]),e._v(" "),t("p",[e._v("The summary screen will be displayed detailing the overall alignment changes between the two frameworks and the framework application selector. By default, all owned or editable frameworks used in the crosswalk will be checked. A check mark next the framework means all alignment/relationship changes made will be applied to that framework.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("You may only apply alignment changes to frameworks that you own or can edit.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(546),alt:"CAT Crosswalk Frameworks - Crosswalk Alignment Summary"}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(547),alt:"CAT Crosswalk Frameworks - Framework Application Selection"}})]),e._v(" "),t("p",[e._v("If you wish to make further changes to the alignments, click on the "),t("em",[t("strong",[e._v("continue editing")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(548),alt:"CAT Crosswalk Frameworks - Continue Editing Button"}})]),e._v(" "),t("p",[e._v("When you are satisfied with your changes, click on the "),t("em",[t("strong",[e._v("save alignments")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(549),alt:"CAT Crosswalk Frameworks - Save Alignments Button"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{448:function(e,t,a){e.exports=a.p+"assets/img/alignment-bubble.d1653648.png"},538:function(e,t,a){e.exports=a.p+"assets/img/crosswalk-navigation.d511ba6f.png"},539:function(e,t,a){e.exports=a.p+"assets/img/progress-bar.b67face7.png"},540:function(e,t,a){e.exports=a.p+"assets/img/main-alignment-screen.57985f0f.png"},541:function(e,t,a){e.exports=a.p+"assets/img/action-buttons.aa2fc6ad.png"},542:function(e,t,a){e.exports=a.p+"assets/img/relationship-add-button.fe96ae46.png"},543:function(e,t,a){e.exports=a.p+"assets/img/relationship-type-selection.1ccc143f.png"},544:function(e,t,a){e.exports=a.p+"assets/img/target-competency-selection.1dc6c010.png"},545:function(e,t,a){e.exports=a.p+"assets/img/apply-alignments-button.6cc30393.png"},546:function(e,t,a){e.exports=a.p+"assets/img/alignment-change-tally.ab69747d.png"},547:function(e,t,a){e.exports=a.p+"assets/img/target-competency-removal.e40196e6.png"},548:function(e,t,a){e.exports=a.p+"assets/img/apply-alignment-bubble.88166cf5.png"},549:function(e,t,a){e.exports=a.p+"assets/img/alignment-removing-one.027f9b51.png"},550:function(e,t,a){e.exports=a.p+"assets/img/alignment-save-and-review.32dcf037.png"},551:function(e,t,a){e.exports=a.p+"assets/img/alignment-summary.f357b47a.png"},552:function(e,t,a){e.exports=a.p+"assets/img/framework-application-selection.770e618c.png"},553:function(e,t,a){e.exports=a.p+"assets/img/continue-editing.0f0e5022.png"},554:function(e,t,a){e.exports=a.p+"assets/img/save-alignments.9b945c1b.png"},659:function(e,t,a){"use strict";a.r(t);var s=a(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#framework-crosswalk-tool"}},[e._v("#")]),e._v(" Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be used to create relationships across two separate frameworks.")]),e._v(" "),t("p",[e._v("In order to apply any relationships created with the crosswalk tool, at least one of the frameworks initially selected in the tool wizard must be owned and editable by the logged in user.")]),e._v(" "),t("h2",{attrs:{id:"accessing-the-framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-framework-crosswalk-tool"}},[e._v("#")]),e._v(" Accessing the Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be accessed at any time by selecting the crosswalk frameworks icon under the "),t("em",[t("strong",[e._v("competencies & frameworks")])]),e._v(" category in the navigation menu.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(538),alt:"CAT Competency Framework Management - Crosswalk Frameworks Navigation"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-overview"}},[e._v("#")]),e._v(" Crosswalk Overview")]),e._v(" "),t("p",[e._v("Framework crosswalking is comprised of four steps:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Select Source")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the source framework")]),e._v(" "),t("li",[e._v("The selection for the source framework is limited to frameworks that\nare owned and editable by the current user.")]),e._v(" "),t("li",[e._v("The source framework also defines the relationship types available\nfor the crosswalk by determining the applied configuration of that\nframework.  If there is no explicit configuration applied to the\nselected framework, the relationships available for the crosswalk\nare determined by the selected browser default configuration or the\ninstance default configuration.")])])]),e._v(" "),t("li",[t("strong",[e._v("Select Target")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the target framework")])])]),e._v(" "),t("li",[t("strong",[e._v("Align Frameworks")]),e._v(" "),t("ul",[t("li",[e._v("Creation of the relationships between the\ncompetencies of the two frameworks")])])]),e._v(" "),t("li",[t("strong",[e._v("Save & Review")]),e._v(" "),t("ul",[t("li",[e._v("Review of created relationships, determination of\nwhere the relationships will reside (one or both of the chosen\nframeworks), and the saving of the relationships")])])])]),e._v(" "),t("p",[e._v("The current step will be highlighted by the progress bar at the top of the crosswalk tool screen.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(539),alt:"CAT Crosswalk Frameworks - Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"aligning-framework-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aligning-framework-competencies"}},[e._v("#")]),e._v(" Aligning Framework Competencies")]),e._v(" "),t("p",[e._v("After selecting the source and target frameworks, the selected frameworks will be displayed in side by side panes. Any existing relationships between the two frameworks will be indicated by orange bubbles underneath the corresponding competency in the source framework pane.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(540),alt:"CAT Crosswalk Frameworks - Main Alignment Screen"}})]),e._v(" "),t("p",[e._v("At the top of each framework pane are four action buttons. Clicking these action buttons will affect only the framework view in the corresponding pane.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("show aligned only")]),e._v(" - show only competencies that have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show unaligned only")]),e._v(" - show only competencies that do not have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show all ("),t("em",[e._v("default")]),e._v(")")]),e._v(" - show all competencies regardless of existing alignments")]),e._v(" "),t("li",[t("strong",[e._v("change framework")]),e._v(" - change the source/target framework\n"),t("ul",[t("li",[e._v("Selecting this action will remove all unsaved alignments from the current crosswalk session")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(541),alt:"CAT Crosswalk Frameworks - Crosswalk Action Buttons"}})]),e._v(" "),t("h3",{attrs:{id:"adding-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Adding a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To begin adding a relationship between the competencies within the frameworks, hover over the appropriate competency in the source framework pane and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(542),alt:"CAT Crosswalk Frameworks - Relationship Add Button"}})]),e._v(" "),t("p",[e._v("Select the desired relationship type from the dropdown.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(543),alt:"CAT Crosswalk Frameworks - Relationship Type Selection"}})]),e._v(" "),t("p",[e._v("Once a relationship type has been selected, click the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" to the right of each competency in the target framework pane you wish to apply the relationship. When clicked, the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" will transition into a checkmark. Clicking on this checkmark will remove the relationship.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(544),alt:"CAT Crosswalk Frameworks - Target Competency Selection"}})]),e._v(" "),t("p",[e._v("After selecting the desired competencies, click the apply alignments button.  Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(545),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(546),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("p",[e._v("The alignment tally will keep track of both the addition of new alignments and the removal of alignments created in previous crosswalk sessions.")]),e._v(" "),t("p",[e._v("Once applied, alignments can be quickly accessed by clicking on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(448),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("h3",{attrs:{id:"removing-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Removing a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To remove an existing relationship click on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(448),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("p",[e._v("In the target pane, click on the checkmark icon to the right of the competency you wish to remove from the relationship. When clicked, the checkmark icon will transition into a + button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(547),alt:"CAT Crosswalk Frameworks - Target Competency Removal"}})]),e._v(" "),t("p",[e._v("After removing the undesired competencies, click the apply alignments button. Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(548),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(549),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-review-and-save"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-review-and-save"}},[e._v("#")]),e._v(" Crosswalk Review and Save")]),e._v(" "),t("p",[e._v("To save all changes made during the crosswalk session to the repository, click on the "),t("em",[t("strong",[e._v("save & review")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(550),alt:"CAT Crosswalk Frameworks - Save & Review"}})]),e._v(" "),t("p",[e._v("The summary screen will be displayed detailing the overall alignment changes between the two frameworks and the framework application selector. By default, all owned or editable frameworks used in the crosswalk will be checked. A check mark next the framework means all alignment/relationship changes made will be applied to that framework.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("You may only apply alignment changes to frameworks that you own or can edit.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(551),alt:"CAT Crosswalk Frameworks - Crosswalk Alignment Summary"}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(552),alt:"CAT Crosswalk Frameworks - Framework Application Selection"}})]),e._v(" "),t("p",[e._v("If you wish to make further changes to the alignments, click on the "),t("em",[t("strong",[e._v("continue editing")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(553),alt:"CAT Crosswalk Frameworks - Continue Editing Button"}})]),e._v(" "),t("p",[e._v("When you are satisfied with your changes, click on the "),t("em",[t("strong",[e._v("save alignments")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(554),alt:"CAT Crosswalk Frameworks - Save Alignments Button"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/13.f0dba927.js.gz b/docs/assets/js/13.f0dba927.js.gz new file mode 100644 index 000000000..9acae368c Binary files /dev/null and b/docs/assets/js/13.f0dba927.js.gz differ diff --git a/docs/assets/js/14.91d7bcdb.js.gz b/docs/assets/js/14.91d7bcdb.js.gz deleted file mode 100644 index 93f29ae6e..000000000 Binary files a/docs/assets/js/14.91d7bcdb.js.gz and /dev/null differ diff --git a/docs/assets/js/14.91d7bcdb.js b/docs/assets/js/14.e66b5ba3.js similarity index 99% rename from docs/assets/js/14.91d7bcdb.js rename to docs/assets/js/14.e66b5ba3.js index c52ffa9b7..ba81d8a18 100644 --- a/docs/assets/js/14.91d7bcdb.js +++ b/docs/assets/js/14.e66b5ba3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{607:function(e,s,r){e.exports=r.p+"assets/img/users-and-groups.aeb260d8.png"},608:function(e,s,r){e.exports=r.p+"assets/img/users-groups.5fc9d7ab.png"},609:function(e,s,r){e.exports=r.p+"assets/img/create-new-group.1c2d8509.png"},610:function(e,s,r){e.exports=r.p+"assets/img/groups-add-subgroup.ee27cd27.png"},611:function(e,s,r){e.exports=r.p+"assets/img/groups-subgroup-indicators.d2f09e52.png"},612:function(e,s,r){e.exports=r.p+"assets/img/user-group-details.ffa7b5c4.png"},613:function(e,s,r){e.exports=r.p+"assets/img/groups-edit-details.b93902fe.png"},614:function(e,s,r){e.exports=r.p+"assets/img/managers.e62b3a9a.png"},615:function(e,s,r){e.exports=r.p+"assets/img/add-managers.847493a2.png"},616:function(e,s,r){e.exports=r.p+"assets/img/available-managers.6dc6e2de.png"},617:function(e,s,r){e.exports=r.p+"assets/img/remove-managers.3df290e2.png"},618:function(e,s,r){e.exports=r.p+"assets/img/reassign-as-member.df4c0f56.png"},619:function(e,s,r){e.exports=r.p+"assets/img/members.a21a128f.png"},620:function(e,s,r){e.exports=r.p+"assets/img/add-members.847493a2.png"},621:function(e,s,r){e.exports=r.p+"assets/img/available-members.dcb0e42e.png"},622:function(e,s,r){e.exports=r.p+"assets/img/remove.c0077c88.png"},623:function(e,s,r){e.exports=r.p+"assets/img/reassign-as-manager.ea67d221.png"},624:function(e,s,r){e.exports=r.p+"assets/img/save-user-group.2a9b7910.png"},669:function(e,s,r){"use strict";r.r(s);var a=r(69),t=Object(a.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"user-group-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#user-group-management"}},[e._v("#")]),e._v(" User Group Management")]),e._v(" "),s("p",[e._v("In the CaSS authoring environment, user groups allow for multiple users to assume a single shared 'identity'. Members of a group are granted access to any CaSS object that the group has been explicitly assigned.")]),e._v(" "),s("p",[e._v("Subgroups can be created within Groups to further organize and define access to CaSS objects for multiple users.")]),e._v(" "),s("h2",{attrs:{id:"accessing-the-cat-user-group-manager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cat-user-group-manager"}},[e._v("#")]),e._v(" Accessing the CAT User Group Manager")]),e._v(" "),s("p",[s("strong",[e._v("Important: To access the CAT user group manager, you must be logged into the CAT application.")])]),e._v(" "),s("p",[e._v("The CAT user group manager can be accessed at any time by selecting the "),s("em",[s("strong",[e._v("users and groups")])]),e._v(" icon on the lower left corner of the navigation menu.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(607),alt:"Users and groups"}})]),e._v(" "),s("p",[s("strong",[e._v("CAT User Group Manager - Navigation Menu - Users and Groups")])]),e._v(" "),s("p",[e._v("The "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(" list contains options for creating a new group, viewing group members, and accessing existing groups.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(608),alt:"Users groups"}})]),e._v(" "),s("p",[e._v("To view a list of all group members, click on "),s("em",[s("strong",[e._v("Member List")])]),e._v(" under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(". This only lists users who are already within a group.")]),e._v(" "),s("h2",{attrs:{id:"creating-a-new-user-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-user-group"}},[e._v("#")]),e._v(" Creating a New User Group")]),e._v(" "),s("p",[e._v("To create a new group, click on the "),s("em",[s("strong",[e._v("create new group")])]),e._v(" button under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(".")]),e._v(" "),s("p",[s("img",{attrs:{src:r(609),alt:"Create new group"}})]),e._v(" "),s("p",[e._v("A new group is created with a default name and description.")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),s("p",[e._v("There may be noticeable processing time when creating a new group. CAT user groups are assigned identity keys that must be generated at creation time. This process may take several seconds.")])]),e._v(" "),s("h2",{attrs:{id:"creating-a-new-sub-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-sub-group"}},[e._v("#")]),e._v(" Creating a New Sub-Group")]),e._v(" "),s("p",[e._v("To add a sub-group to a currently open group, click on the "),s("em",[s("strong",[e._v("add sub-group")])]),e._v(" button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(".\n"),s("em",[e._v("Sub-groups")]),e._v(" can be created within "),s("em",[e._v("Groups")]),e._v(" to further organize and define access to CaSS objects for multiple users.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(610),alt:"Create new sub-group"}})]),e._v(" "),s("p",[e._v("A new sub-group is created with a default name and description. The path of the group and the listing under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(" indicate the parent of the sub-group.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(611),alt:"Sub-group Indicators"}})]),e._v(" "),s("p",[e._v("The actions for managing users and editing groups apply to sub-groups as well.")]),e._v(" "),s("h2",{attrs:{id:"managing-a-user-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#managing-a-user-group"}},[e._v("#")]),e._v(" Managing a User Group")]),e._v(" "),s("p",[e._v("To access existing groups in the current CAT instance, click on the group name under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(" to the left of the "),s("em",[s("strong",[e._v("Group Details")])]),e._v(".")]),e._v(" "),s("p",[s("em",[e._v("Group Details")]),e._v(" show the name, description, and a list of members within the group.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(612),alt:"User Group Details"}})]),e._v(" "),s("p",[e._v("Click on the edit icon next to the "),s("em",[s("strong",[e._v("name")])]),e._v(" and "),s("em",[s("strong",[e._v("description")])]),e._v(' to edit either of these properties. When you are done editing, click "done editing" to save changes.')]),e._v(" "),s("p",[s("img",{attrs:{src:r(613),alt:"Edit Group Details"}})]),e._v(" "),s("h3",{attrs:{id:"group-managers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#group-managers"}},[e._v("#")]),e._v(" Group Managers")]),e._v(" "),s("p",[e._v("Group managers can add and remove members and other managers to the group. Managers also share the owner and reader privileges assigned to the group.")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),s("p",[e._v("You cannot remove yourself as a manager from the current group")])]),e._v(" "),s("p",[s("img",{attrs:{src:r(614),alt:"Managers"}})]),e._v(" "),s("h4",{attrs:{id:"add-managers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#add-managers"}},[e._v("#")]),e._v(" Add Managers")]),e._v(" "),s("p",[e._v("To add managers to a group, click on the "),s("em",[s("strong",[e._v("+ member")])]),e._v(" button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(" in the top right corner.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(615),alt:"Available Managers"}})]),e._v(" "),s("p",[e._v("In the "),s("em",[s("strong",[e._v("Add members")])]),e._v(' dialogue, select the desired permissions next to the name of the member or members you would like to add to the group. The member icon with a shield, as shown above the check box outlined in red below, represents a manager for this group. When you are finished selecting member permissions click "apply".')]),e._v(" "),s("p",[s("img",{attrs:{src:r(616),alt:"Available Managers"}})]),e._v(" "),s("h4",{attrs:{id:"remove-managers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remove-managers"}},[e._v("#")]),e._v(" Remove Managers")]),e._v(" "),s("p",[e._v("Group managers can be removed from the group by clicking on the "),s("em",[s("strong",[e._v("remove icon")])]),e._v(".")]),e._v(" "),s("p",[s("img",{attrs:{src:r(617),alt:"Remove Managers"}})]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),s("p",[e._v("You cannot remove yourself as a manager from the current group")])]),e._v(" "),s("h4",{attrs:{id:"reassign-manager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reassign-manager"}},[e._v("#")]),e._v(" Reassign Manager")]),e._v(" "),s("p",[e._v("Managers can be reassigned as a group member by clicking the "),s("em",[s("strong",[e._v("change role")])]),e._v(" button.")]),e._v(" "),s("p",[e._v("When a role is changed from manager to member, the list is re-sorted to place the member beneath existing managers in the list.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(618),alt:"Reassign as member"}})]),e._v(" "),s("h3",{attrs:{id:"group-members"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#group-members"}},[e._v("#")]),e._v(" Group Members")]),e._v(" "),s("p",[e._v("Group members share the owner and reader privileges assigned to the group.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(619),alt:"Members"}})]),e._v(" "),s("h4",{attrs:{id:"add-members"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#add-members"}},[e._v("#")]),e._v(" Add Members")]),e._v(" "),s("p",[e._v("To add members to a group, click on the "),s("em",[s("strong",[e._v("+ member")])]),e._v(" button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(" in the top right corner.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(620),alt:"Available Managers"}})]),e._v(" "),s("p",[e._v("In the "),s("em",[s("strong",[e._v("Add members")])]),e._v(" dialogue, select the desired permissions next to the name of the member or members you would like to add to the group. The "),s("em",[e._v("member icon without a shield")]),e._v(", as shown above the check box outlined in red below, represents a member for this group. When you are finished selecting member permissions click "),s("em",[s("strong",[e._v("apply")])]),e._v(".")]),e._v(" "),s("p",[s("img",{attrs:{src:r(621),alt:"Available Managers"}})]),e._v(" "),s("h4",{attrs:{id:"remove-members"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remove-members"}},[e._v("#")]),e._v(" Remove Members")]),e._v(" "),s("p",[e._v("Group members can be removed from the group by clicking on the remove icon.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(622),alt:"Remove Members"}})]),e._v(" "),s("h4",{attrs:{id:"reassign-member"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reassign-member"}},[e._v("#")]),e._v(" Reassign Member")]),e._v(" "),s("p",[e._v("Members can be reassigned as a group manager by clicking "),s("em",[s("strong",[e._v("change role")])]),e._v(" button.")]),e._v(" "),s("p",[e._v("When a role is changed from member to manager, the list is re-sorted to place the new manager above existing members in the list.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(623),alt:"Reassign as manager"}})]),e._v(" "),s("h3",{attrs:{id:"saving-the-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#saving-the-group"}},[e._v("#")]),e._v(" Saving the Group")]),e._v(" "),s("p",[e._v("Changes to Groups can be saved by clicking on the save button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(" in the top right corner.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(624),alt:"Save User Group"}})])])}),[],!1,null,null,null);s.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{607:function(e,s,r){e.exports=r.p+"assets/img/users-and-groups.aeb260d8.png"},608:function(e,s,r){e.exports=r.p+"assets/img/users-groups.5fc9d7ab.png"},609:function(e,s,r){e.exports=r.p+"assets/img/create-new-group.1c2d8509.png"},610:function(e,s,r){e.exports=r.p+"assets/img/groups-add-subgroup.ee27cd27.png"},611:function(e,s,r){e.exports=r.p+"assets/img/groups-subgroup-indicators.d2f09e52.png"},612:function(e,s,r){e.exports=r.p+"assets/img/user-group-details.ffa7b5c4.png"},613:function(e,s,r){e.exports=r.p+"assets/img/groups-edit-details.b93902fe.png"},614:function(e,s,r){e.exports=r.p+"assets/img/managers.e62b3a9a.png"},615:function(e,s,r){e.exports=r.p+"assets/img/add-managers.847493a2.png"},616:function(e,s,r){e.exports=r.p+"assets/img/available-managers.6dc6e2de.png"},617:function(e,s,r){e.exports=r.p+"assets/img/remove-managers.3df290e2.png"},618:function(e,s,r){e.exports=r.p+"assets/img/reassign-as-member.df4c0f56.png"},619:function(e,s,r){e.exports=r.p+"assets/img/members.a21a128f.png"},620:function(e,s,r){e.exports=r.p+"assets/img/add-members.847493a2.png"},621:function(e,s,r){e.exports=r.p+"assets/img/available-members.dcb0e42e.png"},622:function(e,s,r){e.exports=r.p+"assets/img/remove.c0077c88.png"},623:function(e,s,r){e.exports=r.p+"assets/img/reassign-as-manager.ea67d221.png"},624:function(e,s,r){e.exports=r.p+"assets/img/save-user-group.2a9b7910.png"},668:function(e,s,r){"use strict";r.r(s);var a=r(69),t=Object(a.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"user-group-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#user-group-management"}},[e._v("#")]),e._v(" User Group Management")]),e._v(" "),s("p",[e._v("In the CaSS authoring environment, user groups allow for multiple users to assume a single shared 'identity'. Members of a group are granted access to any CaSS object that the group has been explicitly assigned.")]),e._v(" "),s("p",[e._v("Subgroups can be created within Groups to further organize and define access to CaSS objects for multiple users.")]),e._v(" "),s("h2",{attrs:{id:"accessing-the-cat-user-group-manager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cat-user-group-manager"}},[e._v("#")]),e._v(" Accessing the CAT User Group Manager")]),e._v(" "),s("p",[s("strong",[e._v("Important: To access the CAT user group manager, you must be logged into the CAT application.")])]),e._v(" "),s("p",[e._v("The CAT user group manager can be accessed at any time by selecting the "),s("em",[s("strong",[e._v("users and groups")])]),e._v(" icon on the lower left corner of the navigation menu.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(607),alt:"Users and groups"}})]),e._v(" "),s("p",[s("strong",[e._v("CAT User Group Manager - Navigation Menu - Users and Groups")])]),e._v(" "),s("p",[e._v("The "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(" list contains options for creating a new group, viewing group members, and accessing existing groups.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(608),alt:"Users groups"}})]),e._v(" "),s("p",[e._v("To view a list of all group members, click on "),s("em",[s("strong",[e._v("Member List")])]),e._v(" under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(". This only lists users who are already within a group.")]),e._v(" "),s("h2",{attrs:{id:"creating-a-new-user-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-user-group"}},[e._v("#")]),e._v(" Creating a New User Group")]),e._v(" "),s("p",[e._v("To create a new group, click on the "),s("em",[s("strong",[e._v("create new group")])]),e._v(" button under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(".")]),e._v(" "),s("p",[s("img",{attrs:{src:r(609),alt:"Create new group"}})]),e._v(" "),s("p",[e._v("A new group is created with a default name and description.")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),s("p",[e._v("There may be noticeable processing time when creating a new group. CAT user groups are assigned identity keys that must be generated at creation time. This process may take several seconds.")])]),e._v(" "),s("h2",{attrs:{id:"creating-a-new-sub-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-sub-group"}},[e._v("#")]),e._v(" Creating a New Sub-Group")]),e._v(" "),s("p",[e._v("To add a sub-group to a currently open group, click on the "),s("em",[s("strong",[e._v("add sub-group")])]),e._v(" button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(".\n"),s("em",[e._v("Sub-groups")]),e._v(" can be created within "),s("em",[e._v("Groups")]),e._v(" to further organize and define access to CaSS objects for multiple users.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(610),alt:"Create new sub-group"}})]),e._v(" "),s("p",[e._v("A new sub-group is created with a default name and description. The path of the group and the listing under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(" indicate the parent of the sub-group.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(611),alt:"Sub-group Indicators"}})]),e._v(" "),s("p",[e._v("The actions for managing users and editing groups apply to sub-groups as well.")]),e._v(" "),s("h2",{attrs:{id:"managing-a-user-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#managing-a-user-group"}},[e._v("#")]),e._v(" Managing a User Group")]),e._v(" "),s("p",[e._v("To access existing groups in the current CAT instance, click on the group name under "),s("em",[s("strong",[e._v("My User Groups")])]),e._v(" to the left of the "),s("em",[s("strong",[e._v("Group Details")])]),e._v(".")]),e._v(" "),s("p",[s("em",[e._v("Group Details")]),e._v(" show the name, description, and a list of members within the group.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(612),alt:"User Group Details"}})]),e._v(" "),s("p",[e._v("Click on the edit icon next to the "),s("em",[s("strong",[e._v("name")])]),e._v(" and "),s("em",[s("strong",[e._v("description")])]),e._v(' to edit either of these properties. When you are done editing, click "done editing" to save changes.')]),e._v(" "),s("p",[s("img",{attrs:{src:r(613),alt:"Edit Group Details"}})]),e._v(" "),s("h3",{attrs:{id:"group-managers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#group-managers"}},[e._v("#")]),e._v(" Group Managers")]),e._v(" "),s("p",[e._v("Group managers can add and remove members and other managers to the group. Managers also share the owner and reader privileges assigned to the group.")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),s("p",[e._v("You cannot remove yourself as a manager from the current group")])]),e._v(" "),s("p",[s("img",{attrs:{src:r(614),alt:"Managers"}})]),e._v(" "),s("h4",{attrs:{id:"add-managers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#add-managers"}},[e._v("#")]),e._v(" Add Managers")]),e._v(" "),s("p",[e._v("To add managers to a group, click on the "),s("em",[s("strong",[e._v("+ member")])]),e._v(" button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(" in the top right corner.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(615),alt:"Available Managers"}})]),e._v(" "),s("p",[e._v("In the "),s("em",[s("strong",[e._v("Add members")])]),e._v(' dialogue, select the desired permissions next to the name of the member or members you would like to add to the group. The member icon with a shield, as shown above the check box outlined in red below, represents a manager for this group. When you are finished selecting member permissions click "apply".')]),e._v(" "),s("p",[s("img",{attrs:{src:r(616),alt:"Available Managers"}})]),e._v(" "),s("h4",{attrs:{id:"remove-managers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remove-managers"}},[e._v("#")]),e._v(" Remove Managers")]),e._v(" "),s("p",[e._v("Group managers can be removed from the group by clicking on the "),s("em",[s("strong",[e._v("remove icon")])]),e._v(".")]),e._v(" "),s("p",[s("img",{attrs:{src:r(617),alt:"Remove Managers"}})]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),s("p",[e._v("You cannot remove yourself as a manager from the current group")])]),e._v(" "),s("h4",{attrs:{id:"reassign-manager"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reassign-manager"}},[e._v("#")]),e._v(" Reassign Manager")]),e._v(" "),s("p",[e._v("Managers can be reassigned as a group member by clicking the "),s("em",[s("strong",[e._v("change role")])]),e._v(" button.")]),e._v(" "),s("p",[e._v("When a role is changed from manager to member, the list is re-sorted to place the member beneath existing managers in the list.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(618),alt:"Reassign as member"}})]),e._v(" "),s("h3",{attrs:{id:"group-members"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#group-members"}},[e._v("#")]),e._v(" Group Members")]),e._v(" "),s("p",[e._v("Group members share the owner and reader privileges assigned to the group.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(619),alt:"Members"}})]),e._v(" "),s("h4",{attrs:{id:"add-members"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#add-members"}},[e._v("#")]),e._v(" Add Members")]),e._v(" "),s("p",[e._v("To add members to a group, click on the "),s("em",[s("strong",[e._v("+ member")])]),e._v(" button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(" in the top right corner.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(620),alt:"Available Managers"}})]),e._v(" "),s("p",[e._v("In the "),s("em",[s("strong",[e._v("Add members")])]),e._v(" dialogue, select the desired permissions next to the name of the member or members you would like to add to the group. The "),s("em",[e._v("member icon without a shield")]),e._v(", as shown above the check box outlined in red below, represents a member for this group. When you are finished selecting member permissions click "),s("em",[s("strong",[e._v("apply")])]),e._v(".")]),e._v(" "),s("p",[s("img",{attrs:{src:r(621),alt:"Available Managers"}})]),e._v(" "),s("h4",{attrs:{id:"remove-members"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remove-members"}},[e._v("#")]),e._v(" Remove Members")]),e._v(" "),s("p",[e._v("Group members can be removed from the group by clicking on the remove icon.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(622),alt:"Remove Members"}})]),e._v(" "),s("h4",{attrs:{id:"reassign-member"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reassign-member"}},[e._v("#")]),e._v(" Reassign Member")]),e._v(" "),s("p",[e._v("Members can be reassigned as a group manager by clicking "),s("em",[s("strong",[e._v("change role")])]),e._v(" button.")]),e._v(" "),s("p",[e._v("When a role is changed from member to manager, the list is re-sorted to place the new manager above existing members in the list.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(623),alt:"Reassign as manager"}})]),e._v(" "),s("h3",{attrs:{id:"saving-the-group"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#saving-the-group"}},[e._v("#")]),e._v(" Saving the Group")]),e._v(" "),s("p",[e._v("Changes to Groups can be saved by clicking on the save button under "),s("em",[s("strong",[e._v("Group actions")])]),e._v(" in the top right corner.")]),e._v(" "),s("p",[s("img",{attrs:{src:r(624),alt:"Save User Group"}})])])}),[],!1,null,null,null);s.default=t.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/14.e66b5ba3.js.gz b/docs/assets/js/14.e66b5ba3.js.gz new file mode 100644 index 000000000..6e223491d Binary files /dev/null and b/docs/assets/js/14.e66b5ba3.js.gz differ diff --git a/docs/assets/js/15.911d0a50.js b/docs/assets/js/15.0ae73eca.js similarity index 97% rename from docs/assets/js/15.911d0a50.js rename to docs/assets/js/15.0ae73eca.js index 5c942ab70..ff65501a9 100644 --- a/docs/assets/js/15.911d0a50.js +++ b/docs/assets/js/15.0ae73eca.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{433:function(e,t,i){e.exports=i.p+"assets/img/filter-frameworks-button.e6c645ee.png"},434:function(e,t,i){e.exports=i.p+"assets/img/filter-and-sort-panel.17620163.png"},436:function(e,t,i){e.exports=i.p+"assets/img/directory-information-users.fda33476.png"},437:function(e,t,i){e.exports=i.p+"assets/img/directory-copy-progress.cf7ba395.png"},449:function(e,t,i){e.exports=i.p+"assets/img/directory-list.10dc4de4.png"},557:function(e,t,i){e.exports=i.p+"assets/img/directory-icon.c831353c.png"},558:function(e,t,i){e.exports=i.p+"assets/img/directory-breadcrumbs.9c34d465.png"},559:function(e,t,i){e.exports=i.p+"assets/img/directory-cass-link.c40527ae.png"},560:function(e,t,i){e.exports=i.p+"assets/img/framework-go-to-directory.ea1aed61.png"},561:function(e,t,i){e.exports=i.p+"assets/img/directory-information.8636464e.png"},562:function(e,t,i){e.exports=i.p+"assets/img/directory-information-details.660b8a79.png"},563:function(e,t){e.exports="data:image/png;base64,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"},564:function(e,t){e.exports="data:image/png;base64,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"},565:function(e,t){e.exports="data:image/png;base64,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"},566:function(e,t){e.exports="data:image/png;base64,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"},567:function(e,t,i){e.exports=i.p+"assets/img/directory-create-resource.aa5f7d6a.png"},568:function(e,t,i){e.exports=i.p+"assets/img/directory-delete.fbd49265.png"},661:function(e,t,i){"use strict";i.r(t);var r=i(69),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"finding-and-editing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#finding-and-editing"}},[e._v("#")]),e._v(" Finding and Editing")]),e._v(" "),t("p",[e._v("Directories can be used to orgranize competency frameworks and resources into collections. A directory can contain "),t("em",[e._v("subdirectories, frameworks,")]),e._v(" and "),t("em",[e._v("resources")]),e._v(". Items can be copied or moved into and out-of directories.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(449),alt:"Directory Management - Directory List"}})]),e._v(" "),t("h2",{attrs:{id:"navigating-to-a-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigating-to-a-directory"}},[e._v("#")]),e._v(" Navigating to a Directory")]),e._v(" "),t("p",[e._v("Directories that you have created or you have access to can be viewed by clicking on a "),t("em",[t("strong",[e._v("Directory icon")])]),e._v(" on the left side bar highlighted by the red box in the image below. If you have access to multiple directories, then you will see multiple directory icons (one for each created directory).")]),e._v(" "),t("p",[t("img",{attrs:{src:i(557),alt:"Directory Management - Directories Icon"}})]),e._v(" "),t("p",[e._v("Click on a "),t("em",[t("strong",[e._v("Directory icon")])]),e._v(" to open the directory. Once opened, you will see the contents of the selected directory. If the directory does not show any items listed, then it is empty.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(449),alt:"Directory Management - Directory List"}})]),e._v(" "),t("h3",{attrs:{id:"navigating-with-the-directory-path"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigating-with-the-directory-path"}},[e._v("#")]),e._v(" Navigating with the Directory Path")]),e._v(" "),t("p",[e._v("The path for the selected directory is located in the breadcrumb navigation directly above the contents of the directory.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(558),alt:"Directory Management - Directory Path"}})]),e._v(" "),t("p",[e._v("Click on a directory or subdirectory name in the path to show items within that directory or subdirectory. If the directory does not show any items listed, then it is empty.")]),e._v(" "),t("p",[e._v("Click on "),t("em",[t("strong",[e._v("CaSS")])]),e._v(" in the breadcrumb navigation to show all available items. This list includes:")]),e._v(" "),t("ul",[t("li",[e._v("All directories, subdirectories, frameworks, and resources within public directories")]),e._v(" "),t("li",[e._v("Directories that you have created")]),e._v(" "),t("li",[e._v("Any other directories that you have access to")])]),e._v(" "),t("p",[t("img",{attrs:{src:i(559),alt:"Directory Management - Directory Path"}})]),e._v(" "),t("h3",{attrs:{id:"navigating-to-a-directory-from-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigating-to-a-directory-from-a-framework"}},[e._v("#")]),e._v(" Navigating to a Directory from a Framework")]),e._v(" "),t("p",[e._v("If a framework exists within a directory, then a link to its parent directory is available when viewing the framework. To view the directory that a framework is in, click on "),t("em",[t("strong",[e._v("go to directory")])]),e._v(" in the top right corner as outlined in red below.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(560),alt:"Framework - Go To Directory"}})]),e._v(" "),t("h2",{attrs:{id:"opening-an-item"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#opening-an-item"}},[e._v("#")]),e._v(" Opening an Item")]),e._v(" "),t("ul",[t("li",[e._v("Double-click on any item within a directory (including another directory) to open that item")]),e._v(" "),t("li",[e._v("Opening a "),t("strong",[e._v("Directory")]),e._v(" will show the contents of the directory")]),e._v(" "),t("li",[e._v("Opening a "),t("strong",[e._v("Framework")]),e._v(" will show the framework. This navigates away from the Directory page")]),e._v(" "),t("li",[e._v("Opening a "),t("strong",[e._v("Resource")]),e._v(" will open the URL of the resource in your browser")])]),e._v(" "),t("h2",{attrs:{id:"viewing-an-item-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-an-item-in-more-detail"}},[e._v("#")]),e._v(" Viewing an Item in More Detail")]),e._v(" "),t("p",[e._v("Single-click on any item name within a directory (including another directory) to view an "),t("em",[t("strong",[e._v("Information panel")])]),e._v(" with more details and options for that item.")]),e._v(" "),t("p",[e._v("The Information about the item will show on a side panel to the right of the directory list.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(561),alt:"Directory Management - Directory Information"}})]),e._v(" "),t("p",[e._v("The type of item ("),t("em",[e._v("Directory, Framework, or Resource")]),e._v(") along with the item name is shown in the top section of the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(". The type of item being viewed and its properties determines the contents available within the information panel.")]),e._v(" "),t("p",[e._v("If the type of item is a Competency, then the details and options within the Information panel will refer to the Framework that the Competency is within.")]),e._v(" "),t("p",[e._v("If the item is not currently open, then a button providing the option to open that item is available under the name of the item.")]),e._v(" "),t("p",[e._v("Not all options listed below are available on all items.")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("Details")]),e._v(" (only available for directories and frameworks)")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Last Modified")]),e._v(" - The date that this item was last modified")]),e._v(" "),t("li",[t("strong",[e._v("Date Created")]),e._v(" - The original date that this item was created. If this item has been copied from another location, then the date created will reflect the date that the copy was created")]),e._v(" "),t("li",[t("strong",[e._v("Subdirectories")]),e._v(" - The number of subdirectories that this directory contains (only available for directories)")]),e._v(" "),t("li",[t("strong",[e._v("Objects")]),e._v(" - The number of frameworks and resources that this directory contains (only available for directories)")]),e._v(" "),t("li",[t("strong",[e._v("Parent Directory")]),e._v(" - A link to navigate to the parent of this directory (only available for subdirectories)")]),e._v(" "),t("li",[t("strong",[e._v("Share")]),e._v(' - Click on "copy link" and the link to this item will be copied to your clipboard')])]),e._v(" "),t("p",[t("img",{attrs:{src:i(562),alt:"Directory Management - Directory Information Details"}})])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Users")]),e._v(' - Click on "manage users and privacy" and a window dialogue will allow you to view and control access to this item.\n'),t("img",{attrs:{src:i(436),alt:"Directory Management - Directory Information Users"}})])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Properties")]),e._v(" - Available properties on this item, including name and URL (if a resource). Includes option to edit properties if editable")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Description")]),e._v(" - A description for the item if one has been provided")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Copy")]),e._v(" - Includes a list of available directories that this item can be copied to")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Move")]),e._v(" - Includes a list of available directories that this item can be moved to")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Delete directory")]),e._v(' - Click on the "delete directory" button to delete the currently selected directory. You will need to type in the name of the directory when prompted in order to avoid accidental deletion.')])])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("This action is irreversible. Deleting this directory will delete all of its contents and make it unavailable to others who might be using it.")])]),e._v(" "),t("h2",{attrs:{id:"searching-for-items-from-the-directory-view"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#searching-for-items-from-the-directory-view"}},[e._v("#")]),e._v(" Searching for Items from the Directory View")]),e._v(" "),t("p",[e._v("Use the search bar at the top of the page to type in a search term and then press ENTER.")]),e._v(" "),t("p",[e._v("Items that contain the search term and are within the currently open directory (and its subdirectories) will be listed under "),t("em",[t("strong",[e._v("Available Items")])]),e._v(". This included Directories, Frameworks, Resources, and Competencies within Frameworks.")]),e._v(" "),t("p",[e._v("You can sort and filter the list of items by clicking the "),t("em",[t("strong",[e._v("filter button")])]),e._v(" next to the search bar. The button next to it clears any filters you’ve applied.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(433),alt:"CAT Competency Framework Management - Filter Button"}})]),e._v(" "),t("p",[e._v("The filter button will open up a side panel to the right of the "),t("em",[t("strong",[e._v("Available items")])]),e._v(" with options to sort, filter, and apply your search term to various fields.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(434),alt:"CAT Competency and Framework Management - Filter and Sort Panel"}})]),e._v(" "),t("h2",{attrs:{id:"making-changes-to-directories"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#making-changes-to-directories"}},[e._v("#")]),e._v(" Making Changes to Directories")]),e._v(" "),t("p",[e._v("You can only make changes to a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory. To confirm that you can edit a directory, click on "),t("em",[t("strong",[e._v("CaSS")])]),e._v(" in the breadcrumb navigation to show all available items. If the directory has the label "),t("em",[t("strong",[e._v("Editable")])]),e._v(" beneath it, then you can make changes to it.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(563),alt:"Directory Management - Directory Editable"}})]),e._v(" "),t("h3",{attrs:{id:"creating-a-new-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-directory"}},[e._v("#")]),e._v(" Creating a New Directory")]),e._v(" "),t("p",[e._v("To create a new directory (not a subdirectory):")]),e._v(" "),t("ul",[t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("create new")])]),e._v(" button in the left menu under your login")]),e._v(" "),t("li",[e._v("Select "),t("em",[t("strong",[e._v("Directory")])]),e._v(" from the dropdown\n"),t("ul",[t("li",[e._v("A field appears for you to enter in the name of the new directory.")])])]),e._v(" "),t("li",[e._v("Enter the name and click "),t("em",[t("strong",[e._v("create")])]),e._v(" "),t("ul",[t("li",[e._v("A new directory is created and the "),t("em",[e._v("Directory Path")]),e._v(" is updated to reflect the location of the new directory.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(564),alt:"Directory Management - Create New"}})]),e._v(" "),t("h3",{attrs:{id:"editing-properties-of-a-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-properties-of-a-directory"}},[e._v("#")]),e._v(" Editing Properties of a Directory")]),e._v(" "),t("p",[e._v("To rename a directory or edit other properties:")]),e._v(" "),t("ul",[t("li",[e._v("Open the directory")]),e._v(" "),t("li",[e._v("Click on the name of the directory in the "),t("em",[e._v("Directory Path")]),e._v(" to show its Information on the right side panel.")]),e._v(" "),t("li",[e._v("Within the "),t("em",[e._v("Information")]),e._v(" panel, click on "),t("em",[t("strong",[e._v("Properties")])]),e._v(" and click "),t("em",[t("strong",[e._v("edit")])]),e._v(" "),t("ul",[t("li",[e._v("A dialogue window opens with the name and properties of the directory.")])])]),e._v(" "),t("li",[e._v("Make the desired changes to the directory and click "),t("em",[t("strong",[e._v("save")])]),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"adding-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-items"}},[e._v("#")]),e._v(" Adding Items")]),e._v(" "),t("p",[e._v("You can only add items to a directory if you are an owner (listed as Admin) for the directory.")]),e._v(" "),t("p",[e._v("To add an item to a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Open the directory")]),e._v(" "),t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("add new")])]),e._v(" button in the top right corner of the page")])]),e._v(" "),t("p",[e._v("A directory can contain "),t("em",[e._v("Subdirectories, Frameworks,")]),e._v(" and "),t("em",[e._v("Resources")]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:i(565),alt:"Directory Management - Add New"}})]),e._v(" "),t("h3",{attrs:{id:"adding-a-new-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-new-framework"}},[e._v("#")]),e._v(" Adding a New Framework")]),e._v(" "),t("p",[e._v("To create a new Framework within the current Directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("add Framework")])]),e._v(" in the dropdown menu\n"),t("ul",[t("li",[e._v("A dialogue window opens to create and add properties to a new Framework")])])]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("Done")])]),e._v(" when finished and your framework will be created and opened")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("go to directory")])]),e._v(" at the top of the page\n"),t("ul",[t("li",[e._v("You'll return to the parent directory where the framework has been created")]),e._v(" "),t("li",[e._v("You will see your new framework in the list of directory contents")])])])]),e._v(" "),t("h3",{attrs:{id:"adding-a-new-subdirectory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-new-subdirectory"}},[e._v("#")]),e._v(" Adding a New Subdirectory")]),e._v(" "),t("ul",[t("li",[e._v("click on "),t("em",[t("strong",[e._v("Sub directory")])]),e._v(" in the dropdown menu\n"),t("ul",[t("li",[e._v("A dialogue window opens to create a new directory")])])]),e._v(" "),t("li",[e._v("Enter the name of the new directory")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("create")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(566),alt:"Directory Management - Create Directory"}})]),e._v(" "),t("p",[e._v("A new subdirectory is created and the Directory Path is updated to reflect the location of the new directory.")]),e._v(" "),t("h3",{attrs:{id:"adding-a-new-resource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-new-resource"}},[e._v("#")]),e._v(" Adding a New Resource")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Resource")])]),e._v(" in the dropdown menu\n"),t("ul",[t("li",[e._v("A dialogue window opens to create a new resource")])])]),e._v(" "),t("li",[e._v("Enter the name + URL of the new resource")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("create")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(567),alt:"Directory Management - Create Resource"}})]),e._v(" "),t("p",[e._v("A new resource is created and the contents of the Directory is updated to relfect the additional resource.")]),e._v(" "),t("h2",{attrs:{id:"making-changes-to-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#making-changes-to-items"}},[e._v("#")]),e._v(" Making Changes to Items")]),e._v(" "),t("p",[e._v("You can only make changes to an item if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the item.")]),e._v(" "),t("h3",{attrs:{id:"editing-properties-of-a-resource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-properties-of-a-resource"}},[e._v("#")]),e._v(" Editing Properties of a Resource")]),e._v(" "),t("p",[e._v("To rename an item or edit other properties:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the item in the list of directory contents to show its "),t("em",[t("strong",[e._v("Information")])]),e._v(" on the right side panel")]),e._v(" "),t("li",[e._v("Within the Information panel, click on "),t("em",[t("strong",[e._v("Properties")])])]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("edit")])]),e._v(" "),t("ul",[t("li",[e._v("A dialogue window opens with the name and properties of the item")])])]),e._v(" "),t("li",[e._v("Make the desired changes to the item")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("save")])])])]),e._v(" "),t("h2",{attrs:{id:"copying-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#copying-items"}},[e._v("#")]),e._v(" Copying Items")]),e._v(" "),t("p",[e._v("To create a copy of an item in a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the item to be copied to show its Information on the right side panel")]),e._v(" "),t("li",[e._v("Within the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", expand the "),t("em",[t("strong",[e._v("Copy")])]),e._v(" section.\n"),t("ul",[t("li",[e._v("Each available directory that the currently selected item can be copied into is listed with a corresponding button.")])])]),e._v(" "),t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("copy here")])]),e._v(" button to make a copy of the item into that directory\n"),t("ul",[t("li",[e._v("The name of the new copy will be prepended with "),t("em",[e._v('"Copy of "')])]),e._v(" "),t("li",[e._v("A progress bar at the top of the main window will move from left to right to indicate the progress of the copy")]),e._v(" "),t("li",[e._v("The copy of the item will be in the new directory")]),e._v(" "),t("li",[e._v("The original item will remain in its original location.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(437),alt:"Directory Management - Copy Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"moving-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#moving-items"}},[e._v("#")]),e._v(" Moving Items")]),e._v(" "),t("p",[e._v("You can only move items to a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory and for the item to be moved.")]),e._v(" "),t("p",[e._v("To move an item to a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the item to be moved to show its Information on the right side panel.")]),e._v(" "),t("li",[e._v("Within the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", expand the "),t("em",[t("strong",[e._v("Move")])]),e._v(" section.\n"),t("ul",[t("li",[e._v("Each available directory that the currently selected item can be moved to is listed with a corresponding button")])])]),e._v(" "),t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("move here")])]),e._v(" button to move the item into that directory\n"),t("ul",[t("li",[e._v("A progress bar at the top of the main window will move from left to right to indicate the progress of the move")]),e._v(" "),t("li",[e._v("The item will now be in the new directory location only.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(437),alt:"Directory Management - Copy Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"remove-item-from-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remove-item-from-directory"}},[e._v("#")]),e._v(" Remove Item from Directory")]),e._v(" "),t("p",[e._v("You can only remove items from a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory and for the item to be removed.")]),e._v(" "),t("p",[e._v("To remove an item from a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the item to be removed to show its Information on the right side panel")]),e._v(" "),t("li",[e._v("Within the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", expand the "),t("em",[t("strong",[e._v("Move")])]),e._v(" section\n"),t("ul",[t("li",[e._v("At the bottom of the list of directories in the "),t("em",[t("strong",[e._v("Move")])]),e._v(" section is an option to remove the item at its location inside the current directory")])])]),e._v(" "),t("li",[e._v("Click on the link to "),t("em",[t("strong",[e._v("Remove from directory")])]),e._v(" "),t("ul",[t("li",[e._v("A progress bar at the top of the main window will move from left to right to indicate the progress of the removal")]),e._v(" "),t("li",[e._v("The item will no longer reside in the directory")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(437),alt:"Directory Management - Copy Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"deleting-a-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deleting-a-directory"}},[e._v("#")]),e._v(" Deleting a Directory")]),e._v(" "),t("p",[e._v("You can only delete a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory.")]),e._v(" "),t("p",[e._v("To delete a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the directory to be deleted to show its Information on the right side panel.")]),e._v(" "),t("li",[e._v("At the bottom of the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", click on the "),t("em",[t("strong",[e._v("delete directory")])]),e._v(" button to delete the currently selected directory\n"),t("ul",[t("li",[e._v("For confirmation, you will need to type in the name of the directory when prompted")])])])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("This action is irreversible. Deleting this directory will delete all of its contents and make it unavailable to others who might be using it.")])]),e._v(" "),t("p",[t("img",{attrs:{src:i(568),alt:"Directory Management - Delete Directory"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{434:function(e,t,i){e.exports=i.p+"assets/img/filter-frameworks-button.e6c645ee.png"},435:function(e,t,i){e.exports=i.p+"assets/img/filter-and-sort-panel.17620163.png"},436:function(e,t,i){e.exports=i.p+"assets/img/directory-information-users.fda33476.png"},437:function(e,t,i){e.exports=i.p+"assets/img/directory-copy-progress.cf7ba395.png"},449:function(e,t,i){e.exports=i.p+"assets/img/directory-list.10dc4de4.png"},555:function(e,t,i){e.exports=i.p+"assets/img/directory-icon.c831353c.png"},556:function(e,t,i){e.exports=i.p+"assets/img/directory-breadcrumbs.9c34d465.png"},557:function(e,t,i){e.exports=i.p+"assets/img/directory-cass-link.c40527ae.png"},558:function(e,t,i){e.exports=i.p+"assets/img/framework-go-to-directory.ea1aed61.png"},559:function(e,t,i){e.exports=i.p+"assets/img/directory-information.8636464e.png"},560:function(e,t,i){e.exports=i.p+"assets/img/directory-information-details.660b8a79.png"},561:function(e,t){e.exports="data:image/png;base64,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"},562:function(e,t){e.exports="data:image/png;base64,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"},563:function(e,t){e.exports="data:image/png;base64,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"},564:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqgAAAEMCAIAAACHv9NuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAIadJREFUeF7t3Xl8VPW9//Eks2Uymcm+7yGBEAiLgECtWqq1aG+16vWntWpd6lJbLV5ttdde215bl9a627pUbRGXXhcEV9xAEBWRskRCQvaE7Mlkm2QyM5mZ3yecUxohIDEQA9/X8zGP4fs9y/d8z+GP9/d75mQm9JIl14cAAAA1hOn/AgAABRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABQSesmS6/Xil+WOTfJGx/stEXodAAAcagZPv7mr3eps0etf1lhn/K7UHHdSJqkPAMBhJVErgSuxq9e/rDEF/9BcPyperwAAgMNMYlfCV698KWMKfm80qQ8AwLgaY/iOKfi5ww8AwDgbY/jyVD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMG/X9/Iz1560ffOnztdyqlR9j+e+a17z/72lMQ4bS0AAEeiryD4rSbjpQtnPXnBGcuvOFdeUrh4wUx93SFy9fFz5aVXDgWb2SSvSIvZYjTqi8ZscWHerxYfn58Qq9cBADj8xjv4JfVv/NZxp03Lr+/qvm/1hrvf/Whna8fiqXnnzy3StzgUJiXEJjsi9cqhUN7mvPofr//omVe2Nbboi8YsM8aRHRttNZn0OgAAh994B/95c6YXpiSsq6i75dU1a8pr1lXW3f7WBw+8/8nyrTv0LQ4Fs8GglyYw6WRoaKheAQBgXIResuR6vTh6zqnz9NLBken+nd87Wd7veuejstYOfekw58+dvrgwb/nW0pOm5KRFO9ZX1t317kez05MvOHZGTly0xGRTd+8//rn9/fJa2XhBdvqZswpkuSSoZ9C/tqL2iY82z89Ov/Lrc+QQWoNu3+AjH2ySEcb+GhlO9rriuDnzs9MizKZ+r6+4sbUwOeGNkvJnPv1M1j5wzqnyfs3zb8j7/37nGzER1vVVdf8xfbLREPbUhm2vbS8/a9bU706fHB0R7g8EPmtsffyjzfWdPVqz3587/cS8LIc1PBAIVnd0/m3D1iuPm5MR45C1mndKqx5cu3FKYtz584qmJsfLGUkHNtQ0PLp+k5yCbLDXlfm4eleS3WY1m259Y21jd6/WyA0nLZyemnj/mk/+Wd+kLQEAHJVid2zUS6NnmL3ga3px9NwJaXrp4EimnpCXVevsfnHLyPP7otTEyYlxEs8Smc9vLiltbk+Nsv/0xHnGsLAXtuxYV1E7KSF2bmZqbUd3z4DnquPnGMLCXineuWpHZaTFPC8z1ecPvFFSIY0fl5tZ6+y68rnXpFzj7DomI2XERlp6+/QD7/aTE+Ydn5cpI5KlG7ZJJ+dmpjislh3N7TICkLWnTcuXd2lf3hdNzk6027Jio98pq3q/vGZHS/vpRZNlFCKh/vQnxbu6eo7NTpOzWLN7bCHNnlyQW9HulFU72zqyYqPa+9wPvP9JvC0iyhp+x1vr71uz4ZPaRhkHXLtofnq049XPylcWl1mMxoU5GXI1tEb2ujIlTW3BYHB6SmL3gKe0pV02kAt1etGU9r7+ZRuLpQoAOIpZ2xv10uiN661+k8EgUd3u6tfrIwk3Gdtd7nve+1hm5Jt3NZ82LU8C+8mPt67YVvbezppnPi2W6oKcNJkH37Ti3Z8vf1uCX2bGkv2ewcEpSSM/cr+/RvTVuy3ITpfRQHmr8/ZVH6yvqpe59bObtsu0W1+9D7vF/GFV/dMbi6XBCJPpxPys6vYu2XddZd1zm7av3lkjIX1cboYMdOZl6c3KKunADcvffnP36GEv35k2OdVhf317ubQpZ/THdz7csqt5SlL8qYV52gZ7XRnZps/rnZaSoK0tSIp3hFtkqKRVAQAY0YT7cz6ZtRc3tmj3t2UWmxbtaOpxfVyzS1u7sbbR5fHKtFirCknWa79x7LnHTLOaTOEjPXJ/MI2ISQkxJkPYZ02t2qG/UJfbs6lOv6OelxBrM5t3tnbs2be6oys0NFQm95PipVnDwTSbHRfV6/F+1tim10NCJPhDQ0NkAKFVh18ZUdbaUevslkNof2FYmJIwGAh81vTv3QEA2Ne4Br/P7/cHAvGREXr9i8TbIswGg8xlX77i3D2vPR+NnzFjyt8vPOOqr8+RaJeg7dvP7PzAjewRYw2X95Yel1YdlSirxWw0SH/2tL9k0fwI89Dj+jazKRAMNnTpH8MfgAwd+r2+4X81IGcUDIaE7f8BQBl5hBtNczJTrCZjblx0U08vn+4DAA5sXINf4rnb7UmLth/k1+C09/V7/f4dze33rt4w/PXC5h3HT8r8z1mFtZ3d1zz/5k0r3l1XUSf5qu/2eQdoRN9iN0lZmaMn2m16fTTkpAZ8g2+WVAxv//41n6yrrNvdbEjSQTTb5/VGmI2FyfqteyGDBtl3f+cl1pTXdLrd01MTj8lIibVZuc8PAPhC4xr8jd29WxuaYyKsi//1ubVmfnbaiEMB2b6hqyfJYesZ8EjI7XnJtFim7EZDmERdR9/QEwNhYaFhn58Y2yxmrXCARrQNNLXObn8gkBsfo9dDQmQSf4DZ9nAVbU63z5cabd9Qs2tP+2sraus7eyrbOwf9gWmpCXv+0GA4i9FgD9f7WdPRbbdYZqUnaVVRmJIgoS+jJb2+D7dvsKSpPdkROSs9eehPCbjPDwD4IuP6VL8oaW6bkhQ/LytV5qmSiClRkefPLfrP2YVxtgiZHxelJsrana0d2oP0wuXxycZzMlKsZpPJYDg2K+2sWVN73B4pz0xPthiNMtVemJNxzuzC2IiINlff6vIa2ev4vMwUR6TkYqTF7PMH2lz9IzYy/Kn+5h6XBO30lESZ9MsuiyZnnzWzwGoylbaM/FS/I9yyoaZBa6Gjzx0VblmYmzEjLSkYDEoLpxRMOiEvUzaQ8YSc0ay05EkJMTJ3n5wUd/Xxcycnxn1S21iQFF+QnCDH6vV4YqzhO1raitISZ6YlSycjzCa5LNLPHc1tf/1wsxxi3yujkTbnZqamR9ube/t4nh8AFDGWp/rHO/gHAwGZFltMxqLUpEVTcr4+KTPaGr56Z80j6zfJqn3jranHJfPmKUlxsuU3J2dPTY6XlN3W0PJxTUOS3TY7I+X4vKysGMcHVXUyCPD5/Vrwyzx9Wmqi7LIgO73P63tvZ/WIjci7dhQhR69sd2bEOOZnpy2anJMW5ZC9Euy2WmfXFwa/2NbYGgiGHJORcmJ+thwlyR5Z0eaUQYM0u6muMcoqU/lkWSWDj45+9xvbK2Sc4ex3ywhgTmbKSVNy5CK8tr28ur0rPcYhu38jPzveFvFR9a7712yQFqT9/QW/XJ8FOelpUfb1lfVbGw7ZtwoCACaysQT/uH6BDw4HvrcHAFQzli/wmXB/zodRyYhx5MbH1Dm7SX0AwMEg+I9UEvnHZKRctnB2pMW8tmLvrx8GAGBEBP+R6syZU2859YS8hNjXt5e/U1atLwUA4ID4jB8AgCMMn/EDAICDQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoJDQS5ZcrxdHKyzsv398hV4GAADj5ba/PBoSCOiVURpD8IeEPHHPXXoJAACMl0uvu0EvjR63+gEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoJBxDf7O7u7Lr7/xuZdXBoNBqW7aWvw/d9414PFoaw8VV1//fY89ccbFl8nr7ocf6+rp0ZZX1dZdet0NZ15yeWl5hbZkxZtvXbLk+pa2dilLN6Qz0iVt1Whpp7b4+xee9oMf/uxXv95etlM7x63bS66+6eZ2Z6e22cHz+XyrVr/f1tGh1wEAOBTGe8ZvMhlXr/+woalZrx9qXp/vgceflMJzf3lIXgaD4b7HHtfGFsU7SosKCl58/JHJeZN2bzvE7R54/d33tJAeu9/f9IuVS584/dvf+u2f7i0uLZMlM6cV/vmO38fHxmgbHLx+98Dba9f1uvr0OgAAh4Jh9oKv6cXRO2PxKXrp4EgAf7jx0/ycnMqa2mOKpje3tpVWVJ6wYL7fH1j24ku33nP/U8+/GAgGC6dMDgsLk/yWzR556ml52awRMoe+6bY7Pt2ybc6MogirVab1D/3t77+/5/43V7+fk5mRnJioHaKytu7N99b89NIfxkRHySAjNyvj5Tfeys/J3tXYdOdDf5EGd1ZVHzdvrtFolI3LKip9g4Mt7e2TsrLskZHrPv6kIC8vNTlpr8b9gcAvf3fH9IIpNqv1jgf/XFFdM7touvT8vseemH/MLLPJJE3Jqb39/rq5M2ekpyTLLj0ulxxr3qyZ1XX1t95z37HHzGpqaX3wyb+VVVbJec2dNaO8uuam393x+DPPtXU4ZxQWmEwmZ1fX7fc/9Ke/PPrOug8mZWc+tuzZLZ9tf+2d9zq7u+fNnvXWmrX/fdudy15aPjDgKczPNxoNK958a93HG1545bUNmzdLx/78t6UL5hwj7cgVXvr8i1KWQc/uSwIAONqsWPWWXhq9r+Az/hMXzq9taCivqtbrISGhYaGzpk975s8PPHLXHR99uqluV4O2XGLyjpt/ed0Vlz/+7HMpSYnLHrxPBgSbP9suE/QXX3s9JyNj5VNP3rzkp/+38tVel0vbpbfXFSuZ77BrVYfdnpyY0NzWNmdm0Y9/eOF3Tv7mrTfeEG6xaGuFzMVP+vpxL7+xanBwUFuyb+MWs1narGtokAGB2z1Qu6uhr7+/vrExKSFBhiDaXsOFhoZmpae1tLV5vF590W4yVkiMi/vr3X8MBoJyxD/ecvNLTz5mMISt3/ip1+d7ZOnTKYmJsuSuX/8qPyf3v666vHBy/p/v+P01l13y6Zat8n98929vefqhB2TEsOf/e92GjZec9/9u+unVUyfnS1UuqXT+n8XbZfyhDUcAANjLVxD8EsbfOemby99c5fXpuSgplZedJfn33PKVza1tnV3d2vJjiqZH2iIy01JlRl6QnyeTcin397t7el0yPnh46bLTzr/oZ7/6jUyaB/1+bZcRDU/6fS2ce4zMtkt2lmvVfRuXqbMkq8TqrqamxPg4R2RkW0dHSVn5zGlTJeO1vQ5GUnz8iV9bYDQYtpbs2Lhl6w+vve70iy599e135YyaWlqrautOWXSCXIrY6GiLxazvs9umrcVT8/PSU1Pkaiw6bmHxjlLtw4t5s2ZMnpQr3ZPxx/Hzj924dVtnd3djS8vsomnajgAA7OWreap/3uyZXq93y/YSrVpTX3/jrbfLNP2KC8+Xaa628MAky++99TdvPvuUvB77050xUVHacrs9sq29o93p1Ko9vb2S3AlxcVp1RJE22+nf/tbKVW+7Bwa0Jfs2XlQwRSb6xaVls4umpyQnfVa6s6W9PTMtTdt+LzLtlo2TEhIs5s/l93Ann/D115b9TTuE9omJjCFCQ0YxjNiLdKy2fpeMJxLj4uJiRv1IAQBAEV9N8EuynnnaqWs/3mA0Dn0O3eHsctgjC/ImObu6ZcavbXMAMvGdMmnSs8tXuPr6PR7vrsYmfUVISHZGem5W5kuvvel2D8jr2eUrs9LTZIm+ej9mTZ/msNur6+qlPGLjaSnJMskuLa9IS06enJuzev2HNqt1xEf2Bv3+9z5Yv/qDD08+/rj93Q+Qwc22kh2fbN4SCAabWlv73e6khHh5rVr9vtfna3d2ysRdNvP5BrWxyJyZRWWVVXJlpEur139UNLVg33sYCXGxcu7LXnjp2Nkz+XQfALA/X03wCwm/uTNnDA4O3aLPycqQ93OvuPqFV19LSdIf0zsACbYLzzk7Ospx3pVXX/jTn326dZskqLbKbDJdc9klkovn/fgn8vL7/T+++EJZqK3dH9ng9FNO1sojNm632WRoIjEs8ZyZlurs7IqNjrZFRGi77HHzHX84/aJLV656++Yl1xTk5+lL95GTmfGzyy/7y9+X/ccFF9/76OPdPb3S4asvvqi2oeF7F//oF7f+vr6xyREZuXDenBtvve22+x4sKpz63W+dfO3Nt/zgJ9fk52Sf8e0RnqmUQcbCuXOiHVFT8w/qlgkAQE2hlyy5Xi+O3hP33KWX8FWT0clzy1d4vN6Lzz1nVE8eAACOOJded4NeGr2vbMaPQ6ihufnia6+rqK4587TFpD4A4AAI/qNBWnLy0gfuveX6JdEOh74IAICREPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhYz3V/Y6nc6enp49P34PAICyjEajw+GIjY3V6wdtLF/ZO67BL6k/MDAQHR0tpyqH1pcCAKCioEyDu7q6wsPDR5v9R0zw19TUJCYmmc3msLBQvlIeAKCyYDAYCAR9Pl9LS3N2dra+9OAcMcFfUVGRk5MTFmYg9AEA2J39gerq6ry8/f6S+4iOpF/nG5rpk/oAAOiZON6hyFP9AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQlQPfr/fX11fX1pROeDx6IsAADh6TaDg7+7pLa+uDgaDWrWusbHf7dbKh4+rv99gMBTkTQq3WPRFh5rP55OBhbz7fIO1DQ2Dfr++4qB5vN5el0uvAAAwBhNrxu/1+ZxdXXplfARDzCaTXj7MTCZjVlqa0WDQ6wdNgt89MKBXAAAYA8PsBV/Ti6N3xuJT9NLBcTqdMTEx+/uyAo/HG24J7+l12SNtYWFh3b29EVaryWTq7O6urqtvbGl19fVF2e2yqrm1rdfV19DcvKup2WI2d/f0VtbVdXZ1RznsMn33+/0ysa5rbGzvcEbabNKCfoCQEGmzvLpGdu93DzgiIyVQK2vrZOGAZ0Ba1joma139/dJ4XWOTDAukM8N39Hp9DnukbNDS3i67yPS9rKrKtrufMmSRHtoiInYfamgQU1FTK+30ufulGhMVFQgEahsah/YaHKxraHT1yVFaoh0OV3/f8MalG3v2dXZ2GY3G2l0NXT290v7QlQkNrdnVILu3dTjDLRZ5+Xy+Pa3J1Whua9POpd/tlou257wAABNQMBjs7Owc7Xf1r1j1ll4avYk14/cH/BLe7c5Ovb6b3Wabmp83s3CqNTy8t69vaFFoiCTulEm5U/PydjU3SxzOnDrVYbdL7spKieTEuDhZUpA3SdJR4nZol5AQmTS3trdrTUnqN7a0SIPZ6elpyUm5mZkyntA2k8Z9vsHJubkzphb0ud0Sq7Jjr8s1fcpk2VGCVgYBsuOg9CAQkFVmk6l/93S8r79/T+rLf+SuxqbUpCTZJSs9PRDU+7CHbBwT5SjMzxv0D+7V+PB95RRkZKB1UraR40q3o+yRsmpq3qTW9g7tTsCe1oaGKaEh2vMKcjWioxykPgBguAn3cJ/MjN0eSa5/P2onk3iZvMrkvsfl2vMIniS3RFpYWKjJaNTu1UdGRMhEWcK4p9cl0/3SikqZNMtUfnjwR9ps2p12mVhLuvv383G73vhQ+0PXR3Z0dnWXVVZJm+1Op+xokBVhodLJgQHPUIfdAzKJDwSCln89KCBVaSHCGi5lCd7QobfPkSGCpLgU9m1chhrBkKC279BhhiW3nJ3H67NHRkrZaDRG2iK0C7KnNdlYBgpdPb1y1u4Bj81qHdoNAIB/mXDBL1GXEBvb5nRqT/nJe039rgGPV6a8qYlJ2jYHJok4KStL5srymjJp0u6fAB6rhLhYrcHCyflSlnyVTO13D3h9XhlMSE73ud0GQ5gMCPQdhh4eGIphvbKP4Wv3alxbOCrDW5MBkM/ndfX3m2RMdCjOHQBwNJlwwS9k/ip53+saum8vU2d5j3bY5V3CdWj1AUn0WsxDH7dr1cC//kZAyJxYolqb5ff0uiQXDQf3nJ3s2N3T6/X5pCwdE1KQTva4XBK3ZpMp3GKRI0YMm15L4gaDQx8ESFmm6douI9q3cZPJFBoSKl2VJbLn0B2L0KE/O5SqnF24xezqG3poQK6MFOTQUh5OTkrabG5tc0QOXTQAAIabiMEvaZoYFycxKGVJULPZvHVHaVll1Z6b9geWmpTkdg9s2V6ytWSHs/PfjwtIHMbHxpSUV8hyyWzZTF/xRWTHlKTEHbt33FlVrY1FLBbLwMCATKq1DWSYMjz45RSk/eq6etmlpa1d22xE+zYu+6alJDe2tMiSsspKGT3INtLh4tJSKackJnb19MiqHRWVifFxskpvaBiJ/LDQUGv44foDRQDAkWu8f48/NzdX++Ach09HZ6ffH5BhgV4HAExUMqetqqo6mn+PH4eVz+crKa/o6XXFxUTriwAAGIbgP6qYTKbC/LyczIyDfHwBAKAagh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFDIuAa/0Wgc+iL6/X+NHQAA6pBAlFgc569XH9ef5Q0EAi6Xy2w288dmAABI6judTpvNZh3lb6qN5Wd5x/Wb+4ScYU9Pj/attwAAqEzm+g6HY7Q/xi/G8s194x38AABgjPjKXgAAcFAIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoZ0+/x//dPrtJLAABgvNz20MN6afTGFPxP3HOXXgIAAOPl0utu0Eujx61+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQyHj/Hv/S5198493Vnd3den1CiomKOvWkRRedc7Ze30dxY2tVe6fbN6jXJx6ryZgbH1OUmqjXAQBHkbH8Hv+4Br+kfmVN7VUXXZCSNKEDqaml9eGlyyZlZ42Y/ZL625va9MrENi0lgewHgKPPWIJ/XG/1y1x/4qe+kB5KP6W3ev3zZK6vlya8I6irAIDxMa7B39ndPfFTXyP93N/nERP5Dv9ejqCuAgDGBw/3AQCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABSiVvBX1dY9/sxzeuVIMD87LTXKrlcAABgzZvwTV5zNGmMNNxsNeh0AgDEb1x/pWfz9C9989im9ckDOrq57H328obk5Njp6yeWX2WwRz728cstn2wf9/isv/MG8WTNl7r5qzftmk+njTZvTkpNuuPrKSJut3+3+69PPbtleYg0Pv/riiwon57+z7oOXX1/l8XnPOnXxqSctqq6rX73+w8vOP08/zAHtr7fPbdqul75ISlTk7PTkCJMpEAzWOLuc/QOFyfGD/oDVbNrW0BIfGZER7QgNDXV5PB/XNFiMxhmpiQ6rJSwktL2vf31V/aL87OiIcNm3x+1ZXV6zICctIdIWKmtdfR9W7/L5A/phDui8OdP0EgDgaHHE/EjPQfL6fH//vxfOPeO7j9/9x9/d+POkxIQIq/WCs896+A+33/bLX3zwycYBj0c2a2xuOfO0xY/edUdebk5ZRVUwGHz+lddmFBbKXvfd+pu8nOzi0jKPx/vg7bc+dtedXb29kvpa++PDZAgrSknsGfCsKC5bU15T39kjC8ONxjZX/4ptZVaTMdpqeXdn9Ytbdrh9g1OS4j2DgztbO17aUvpRzS6b2ZQe7dja0NI74P20rumt0qoZaUmG0LBXineuLC4zGQwFSfHaUQAAGJWJGPxd3d2BQCA3K1PKFovZaDDIzD4kJPjeBx/+Y8Uruxqb3AMDsio7Iz02OlpmzHabTaoy3W9pa5tRWCBLjEajxWwuKdv5ztp1t/zhT/L6dMvWvv7+odbHS6LdJl1v7O6VqbnM9SXvZeHA4GBTj0sKMpV3hFtOzMs6vWhybIQ13GjodnsGBv0Lc9JluCCz/0iLeXczuhhreEyE9dTCPHnZw83c/wcAfDlHxmf8xTtKH1n69PSCKZdfcL7kvb70iwSCwfPP+t6tN94gr7t/e0vR1AJ9xVcnGJRXUCt39g+sHJrB73x5W9nairqpyfHzs9N6Bjzv7qzu83q1bYaTMYS2/fKtZZvqmvSlAACMxkQM/uioqLCwsKraOikPDg56vF4pH7/g2MT4uK7ung7nyL8xH2G1JiUkbCsplWQd9Ps9Hq8MFN5eu67f7Za10s6exB0frb193kF/apTdZAiLsloS7UO3Jfbo6h+QiXteQoyUZW2E2WS3mPs83u1NbUl2m8kwNKGXgUtoaIjZMPR/1OkeSIyMSImKlHK0NVzalAIAAKM1EfPDbDJdcPaZ/1jxymX/9fP/ufOuXY1Ns4umL3tx+VW/+OUb7622Rw6F375CQ0PP/s5pW7eXyF7X//p/i0tLiwqmzJs589pf/fpH1//i4aVPywDCYY/cVrKjZGe5vs/h5PMHSprbHOGWM4qmnDQ5JycuWl+xW0lze2O3a2Za0tmzpp6QlyXDglZXf6TFLNWi1ESJfNmmzdUvQ4EZqUmnFOSWtzq7Bzxfy8mQDRbmpMVGWLV2AAAYlQn6VP9EMPan+icCnuoHgKPP0fZUPwAAOEwIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAAChnX4I+JimpqadUrE5v0U3qrVz7PajLqpQnvCOoqAGB8jGvwn3rSooeXLpv42S89lH5Kb/X65+XGD33P7hHhCOoqAGB8jOs394mlz7/4xrurO7u79fqEJHN9Sf2Lzjlbr++juLG1qr3T7RvU6xOPzPUl9YtSE/U6AOAoMpZv7hvv4AcAAGPEV/YCAICDQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoJAxBX99Y6NeAgAA42KM4Tum4F+3YaNeAgAA42KM4Tum4H9n7br1Gz/VKwAA4DCT2JXw1StfimH2gq/pxS9lc/FnfW53dJQjym7XFwEAgEOtvrHxtXfee/HV1/X6lxV6yZLr9SIAADja8VQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFBGSMj/B5a/EUyOHN6YAAAAAElFTkSuQmCC"},565:function(e,t,i){e.exports=i.p+"assets/img/directory-create-resource.aa5f7d6a.png"},566:function(e,t,i){e.exports=i.p+"assets/img/directory-delete.fbd49265.png"},660:function(e,t,i){"use strict";i.r(t);var r=i(69),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"finding-and-editing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#finding-and-editing"}},[e._v("#")]),e._v(" Finding and Editing")]),e._v(" "),t("p",[e._v("Directories can be used to orgranize competency frameworks and resources into collections. A directory can contain "),t("em",[e._v("subdirectories, frameworks,")]),e._v(" and "),t("em",[e._v("resources")]),e._v(". Items can be copied or moved into and out-of directories.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(449),alt:"Directory Management - Directory List"}})]),e._v(" "),t("h2",{attrs:{id:"navigating-to-a-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigating-to-a-directory"}},[e._v("#")]),e._v(" Navigating to a Directory")]),e._v(" "),t("p",[e._v("Directories that you have created or you have access to can be viewed by clicking on a "),t("em",[t("strong",[e._v("Directory icon")])]),e._v(" on the left side bar highlighted by the red box in the image below. If you have access to multiple directories, then you will see multiple directory icons (one for each created directory).")]),e._v(" "),t("p",[t("img",{attrs:{src:i(555),alt:"Directory Management - Directories Icon"}})]),e._v(" "),t("p",[e._v("Click on a "),t("em",[t("strong",[e._v("Directory icon")])]),e._v(" to open the directory. Once opened, you will see the contents of the selected directory. If the directory does not show any items listed, then it is empty.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(449),alt:"Directory Management - Directory List"}})]),e._v(" "),t("h3",{attrs:{id:"navigating-with-the-directory-path"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigating-with-the-directory-path"}},[e._v("#")]),e._v(" Navigating with the Directory Path")]),e._v(" "),t("p",[e._v("The path for the selected directory is located in the breadcrumb navigation directly above the contents of the directory.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(556),alt:"Directory Management - Directory Path"}})]),e._v(" "),t("p",[e._v("Click on a directory or subdirectory name in the path to show items within that directory or subdirectory. If the directory does not show any items listed, then it is empty.")]),e._v(" "),t("p",[e._v("Click on "),t("em",[t("strong",[e._v("CaSS")])]),e._v(" in the breadcrumb navigation to show all available items. This list includes:")]),e._v(" "),t("ul",[t("li",[e._v("All directories, subdirectories, frameworks, and resources within public directories")]),e._v(" "),t("li",[e._v("Directories that you have created")]),e._v(" "),t("li",[e._v("Any other directories that you have access to")])]),e._v(" "),t("p",[t("img",{attrs:{src:i(557),alt:"Directory Management - Directory Path"}})]),e._v(" "),t("h3",{attrs:{id:"navigating-to-a-directory-from-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigating-to-a-directory-from-a-framework"}},[e._v("#")]),e._v(" Navigating to a Directory from a Framework")]),e._v(" "),t("p",[e._v("If a framework exists within a directory, then a link to its parent directory is available when viewing the framework. To view the directory that a framework is in, click on "),t("em",[t("strong",[e._v("go to directory")])]),e._v(" in the top right corner as outlined in red below.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(558),alt:"Framework - Go To Directory"}})]),e._v(" "),t("h2",{attrs:{id:"opening-an-item"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#opening-an-item"}},[e._v("#")]),e._v(" Opening an Item")]),e._v(" "),t("ul",[t("li",[e._v("Double-click on any item within a directory (including another directory) to open that item")]),e._v(" "),t("li",[e._v("Opening a "),t("strong",[e._v("Directory")]),e._v(" will show the contents of the directory")]),e._v(" "),t("li",[e._v("Opening a "),t("strong",[e._v("Framework")]),e._v(" will show the framework. This navigates away from the Directory page")]),e._v(" "),t("li",[e._v("Opening a "),t("strong",[e._v("Resource")]),e._v(" will open the URL of the resource in your browser")])]),e._v(" "),t("h2",{attrs:{id:"viewing-an-item-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-an-item-in-more-detail"}},[e._v("#")]),e._v(" Viewing an Item in More Detail")]),e._v(" "),t("p",[e._v("Single-click on any item name within a directory (including another directory) to view an "),t("em",[t("strong",[e._v("Information panel")])]),e._v(" with more details and options for that item.")]),e._v(" "),t("p",[e._v("The Information about the item will show on a side panel to the right of the directory list.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(559),alt:"Directory Management - Directory Information"}})]),e._v(" "),t("p",[e._v("The type of item ("),t("em",[e._v("Directory, Framework, or Resource")]),e._v(") along with the item name is shown in the top section of the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(". The type of item being viewed and its properties determines the contents available within the information panel.")]),e._v(" "),t("p",[e._v("If the type of item is a Competency, then the details and options within the Information panel will refer to the Framework that the Competency is within.")]),e._v(" "),t("p",[e._v("If the item is not currently open, then a button providing the option to open that item is available under the name of the item.")]),e._v(" "),t("p",[e._v("Not all options listed below are available on all items.")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("Details")]),e._v(" (only available for directories and frameworks)")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Last Modified")]),e._v(" - The date that this item was last modified")]),e._v(" "),t("li",[t("strong",[e._v("Date Created")]),e._v(" - The original date that this item was created. If this item has been copied from another location, then the date created will reflect the date that the copy was created")]),e._v(" "),t("li",[t("strong",[e._v("Subdirectories")]),e._v(" - The number of subdirectories that this directory contains (only available for directories)")]),e._v(" "),t("li",[t("strong",[e._v("Objects")]),e._v(" - The number of frameworks and resources that this directory contains (only available for directories)")]),e._v(" "),t("li",[t("strong",[e._v("Parent Directory")]),e._v(" - A link to navigate to the parent of this directory (only available for subdirectories)")]),e._v(" "),t("li",[t("strong",[e._v("Share")]),e._v(' - Click on "copy link" and the link to this item will be copied to your clipboard')])]),e._v(" "),t("p",[t("img",{attrs:{src:i(560),alt:"Directory Management - Directory Information Details"}})])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Users")]),e._v(' - Click on "manage users and privacy" and a window dialogue will allow you to view and control access to this item.\n'),t("img",{attrs:{src:i(436),alt:"Directory Management - Directory Information Users"}})])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Properties")]),e._v(" - Available properties on this item, including name and URL (if a resource). Includes option to edit properties if editable")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Description")]),e._v(" - A description for the item if one has been provided")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Copy")]),e._v(" - Includes a list of available directories that this item can be copied to")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Move")]),e._v(" - Includes a list of available directories that this item can be moved to")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Delete directory")]),e._v(' - Click on the "delete directory" button to delete the currently selected directory. You will need to type in the name of the directory when prompted in order to avoid accidental deletion.')])])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("This action is irreversible. Deleting this directory will delete all of its contents and make it unavailable to others who might be using it.")])]),e._v(" "),t("h2",{attrs:{id:"searching-for-items-from-the-directory-view"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#searching-for-items-from-the-directory-view"}},[e._v("#")]),e._v(" Searching for Items from the Directory View")]),e._v(" "),t("p",[e._v("Use the search bar at the top of the page to type in a search term and then press ENTER.")]),e._v(" "),t("p",[e._v("Items that contain the search term and are within the currently open directory (and its subdirectories) will be listed under "),t("em",[t("strong",[e._v("Available Items")])]),e._v(". This included Directories, Frameworks, Resources, and Competencies within Frameworks.")]),e._v(" "),t("p",[e._v("You can sort and filter the list of items by clicking the "),t("em",[t("strong",[e._v("filter button")])]),e._v(" next to the search bar. The button next to it clears any filters you’ve applied.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(434),alt:"CAT Competency Framework Management - Filter Button"}})]),e._v(" "),t("p",[e._v("The filter button will open up a side panel to the right of the "),t("em",[t("strong",[e._v("Available items")])]),e._v(" with options to sort, filter, and apply your search term to various fields.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(435),alt:"CAT Competency and Framework Management - Filter and Sort Panel"}})]),e._v(" "),t("h2",{attrs:{id:"making-changes-to-directories"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#making-changes-to-directories"}},[e._v("#")]),e._v(" Making Changes to Directories")]),e._v(" "),t("p",[e._v("You can only make changes to a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory. To confirm that you can edit a directory, click on "),t("em",[t("strong",[e._v("CaSS")])]),e._v(" in the breadcrumb navigation to show all available items. If the directory has the label "),t("em",[t("strong",[e._v("Editable")])]),e._v(" beneath it, then you can make changes to it.")]),e._v(" "),t("p",[t("img",{attrs:{src:i(561),alt:"Directory Management - Directory Editable"}})]),e._v(" "),t("h3",{attrs:{id:"creating-a-new-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-directory"}},[e._v("#")]),e._v(" Creating a New Directory")]),e._v(" "),t("p",[e._v("To create a new directory (not a subdirectory):")]),e._v(" "),t("ul",[t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("create new")])]),e._v(" button in the left menu under your login")]),e._v(" "),t("li",[e._v("Select "),t("em",[t("strong",[e._v("Directory")])]),e._v(" from the dropdown\n"),t("ul",[t("li",[e._v("A field appears for you to enter in the name of the new directory.")])])]),e._v(" "),t("li",[e._v("Enter the name and click "),t("em",[t("strong",[e._v("create")])]),e._v(" "),t("ul",[t("li",[e._v("A new directory is created and the "),t("em",[e._v("Directory Path")]),e._v(" is updated to reflect the location of the new directory.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(562),alt:"Directory Management - Create New"}})]),e._v(" "),t("h3",{attrs:{id:"editing-properties-of-a-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-properties-of-a-directory"}},[e._v("#")]),e._v(" Editing Properties of a Directory")]),e._v(" "),t("p",[e._v("To rename a directory or edit other properties:")]),e._v(" "),t("ul",[t("li",[e._v("Open the directory")]),e._v(" "),t("li",[e._v("Click on the name of the directory in the "),t("em",[e._v("Directory Path")]),e._v(" to show its Information on the right side panel.")]),e._v(" "),t("li",[e._v("Within the "),t("em",[e._v("Information")]),e._v(" panel, click on "),t("em",[t("strong",[e._v("Properties")])]),e._v(" and click "),t("em",[t("strong",[e._v("edit")])]),e._v(" "),t("ul",[t("li",[e._v("A dialogue window opens with the name and properties of the directory.")])])]),e._v(" "),t("li",[e._v("Make the desired changes to the directory and click "),t("em",[t("strong",[e._v("save")])]),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"adding-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-items"}},[e._v("#")]),e._v(" Adding Items")]),e._v(" "),t("p",[e._v("You can only add items to a directory if you are an owner (listed as Admin) for the directory.")]),e._v(" "),t("p",[e._v("To add an item to a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Open the directory")]),e._v(" "),t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("add new")])]),e._v(" button in the top right corner of the page")])]),e._v(" "),t("p",[e._v("A directory can contain "),t("em",[e._v("Subdirectories, Frameworks,")]),e._v(" and "),t("em",[e._v("Resources")]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:i(563),alt:"Directory Management - Add New"}})]),e._v(" "),t("h3",{attrs:{id:"adding-a-new-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-new-framework"}},[e._v("#")]),e._v(" Adding a New Framework")]),e._v(" "),t("p",[e._v("To create a new Framework within the current Directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("add Framework")])]),e._v(" in the dropdown menu\n"),t("ul",[t("li",[e._v("A dialogue window opens to create and add properties to a new Framework")])])]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("Done")])]),e._v(" when finished and your framework will be created and opened")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("go to directory")])]),e._v(" at the top of the page\n"),t("ul",[t("li",[e._v("You'll return to the parent directory where the framework has been created")]),e._v(" "),t("li",[e._v("You will see your new framework in the list of directory contents")])])])]),e._v(" "),t("h3",{attrs:{id:"adding-a-new-subdirectory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-new-subdirectory"}},[e._v("#")]),e._v(" Adding a New Subdirectory")]),e._v(" "),t("ul",[t("li",[e._v("click on "),t("em",[t("strong",[e._v("Sub directory")])]),e._v(" in the dropdown menu\n"),t("ul",[t("li",[e._v("A dialogue window opens to create a new directory")])])]),e._v(" "),t("li",[e._v("Enter the name of the new directory")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("create")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(564),alt:"Directory Management - Create Directory"}})]),e._v(" "),t("p",[e._v("A new subdirectory is created and the Directory Path is updated to reflect the location of the new directory.")]),e._v(" "),t("h3",{attrs:{id:"adding-a-new-resource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-new-resource"}},[e._v("#")]),e._v(" Adding a New Resource")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Resource")])]),e._v(" in the dropdown menu\n"),t("ul",[t("li",[e._v("A dialogue window opens to create a new resource")])])]),e._v(" "),t("li",[e._v("Enter the name + URL of the new resource")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("create")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(565),alt:"Directory Management - Create Resource"}})]),e._v(" "),t("p",[e._v("A new resource is created and the contents of the Directory is updated to relfect the additional resource.")]),e._v(" "),t("h2",{attrs:{id:"making-changes-to-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#making-changes-to-items"}},[e._v("#")]),e._v(" Making Changes to Items")]),e._v(" "),t("p",[e._v("You can only make changes to an item if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the item.")]),e._v(" "),t("h3",{attrs:{id:"editing-properties-of-a-resource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-properties-of-a-resource"}},[e._v("#")]),e._v(" Editing Properties of a Resource")]),e._v(" "),t("p",[e._v("To rename an item or edit other properties:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the item in the list of directory contents to show its "),t("em",[t("strong",[e._v("Information")])]),e._v(" on the right side panel")]),e._v(" "),t("li",[e._v("Within the Information panel, click on "),t("em",[t("strong",[e._v("Properties")])])]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("edit")])]),e._v(" "),t("ul",[t("li",[e._v("A dialogue window opens with the name and properties of the item")])])]),e._v(" "),t("li",[e._v("Make the desired changes to the item")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("save")])])])]),e._v(" "),t("h2",{attrs:{id:"copying-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#copying-items"}},[e._v("#")]),e._v(" Copying Items")]),e._v(" "),t("p",[e._v("To create a copy of an item in a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the item to be copied to show its Information on the right side panel")]),e._v(" "),t("li",[e._v("Within the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", expand the "),t("em",[t("strong",[e._v("Copy")])]),e._v(" section.\n"),t("ul",[t("li",[e._v("Each available directory that the currently selected item can be copied into is listed with a corresponding button.")])])]),e._v(" "),t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("copy here")])]),e._v(" button to make a copy of the item into that directory\n"),t("ul",[t("li",[e._v("The name of the new copy will be prepended with "),t("em",[e._v('"Copy of "')])]),e._v(" "),t("li",[e._v("A progress bar at the top of the main window will move from left to right to indicate the progress of the copy")]),e._v(" "),t("li",[e._v("The copy of the item will be in the new directory")]),e._v(" "),t("li",[e._v("The original item will remain in its original location.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(437),alt:"Directory Management - Copy Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"moving-items"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#moving-items"}},[e._v("#")]),e._v(" Moving Items")]),e._v(" "),t("p",[e._v("You can only move items to a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory and for the item to be moved.")]),e._v(" "),t("p",[e._v("To move an item to a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the item to be moved to show its Information on the right side panel.")]),e._v(" "),t("li",[e._v("Within the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", expand the "),t("em",[t("strong",[e._v("Move")])]),e._v(" section.\n"),t("ul",[t("li",[e._v("Each available directory that the currently selected item can be moved to is listed with a corresponding button")])])]),e._v(" "),t("li",[e._v("Click on the "),t("em",[t("strong",[e._v("move here")])]),e._v(" button to move the item into that directory\n"),t("ul",[t("li",[e._v("A progress bar at the top of the main window will move from left to right to indicate the progress of the move")]),e._v(" "),t("li",[e._v("The item will now be in the new directory location only.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(437),alt:"Directory Management - Copy Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"remove-item-from-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remove-item-from-directory"}},[e._v("#")]),e._v(" Remove Item from Directory")]),e._v(" "),t("p",[e._v("You can only remove items from a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory and for the item to be removed.")]),e._v(" "),t("p",[e._v("To remove an item from a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the item to be removed to show its Information on the right side panel")]),e._v(" "),t("li",[e._v("Within the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", expand the "),t("em",[t("strong",[e._v("Move")])]),e._v(" section\n"),t("ul",[t("li",[e._v("At the bottom of the list of directories in the "),t("em",[t("strong",[e._v("Move")])]),e._v(" section is an option to remove the item at its location inside the current directory")])])]),e._v(" "),t("li",[e._v("Click on the link to "),t("em",[t("strong",[e._v("Remove from directory")])]),e._v(" "),t("ul",[t("li",[e._v("A progress bar at the top of the main window will move from left to right to indicate the progress of the removal")]),e._v(" "),t("li",[e._v("The item will no longer reside in the directory")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:i(437),alt:"Directory Management - Copy Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"deleting-a-directory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deleting-a-directory"}},[e._v("#")]),e._v(" Deleting a Directory")]),e._v(" "),t("p",[e._v("You can only delete a directory if you are an owner (listed as "),t("em",[e._v("Admin")]),e._v(") for the directory.")]),e._v(" "),t("p",[e._v("To delete a directory:")]),e._v(" "),t("ul",[t("li",[e._v("Click on the name of the directory to be deleted to show its Information on the right side panel.")]),e._v(" "),t("li",[e._v("At the bottom of the "),t("em",[t("strong",[e._v("Information panel")])]),e._v(", click on the "),t("em",[t("strong",[e._v("delete directory")])]),e._v(" button to delete the currently selected directory\n"),t("ul",[t("li",[e._v("For confirmation, you will need to type in the name of the directory when prompted")])])])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("This action is irreversible. Deleting this directory will delete all of its contents and make it unavailable to others who might be using it.")])]),e._v(" "),t("p",[t("img",{attrs:{src:i(566),alt:"Directory Management - Delete Directory"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/15.0ae73eca.js.gz b/docs/assets/js/15.0ae73eca.js.gz new file mode 100644 index 000000000..23fa9d36a Binary files /dev/null and b/docs/assets/js/15.0ae73eca.js.gz differ diff --git a/docs/assets/js/15.911d0a50.js.gz b/docs/assets/js/15.911d0a50.js.gz deleted file mode 100644 index 65d4674ad..000000000 Binary files a/docs/assets/js/15.911d0a50.js.gz and /dev/null differ diff --git a/docs/assets/js/21.94265723.js b/docs/assets/js/21.a375b56a.js similarity index 97% rename from docs/assets/js/21.94265723.js rename to docs/assets/js/21.a375b56a.js index 6c78e2f11..ee66a28f3 100644 --- a/docs/assets/js/21.94265723.js +++ b/docs/assets/js/21.a375b56a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{471:function(A,e){A.exports="data:image/png;base64,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"},472:function(A,e){A.exports="data:image/png;base64,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"},473:function(A,e){A.exports="data:image/png;base64,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"},474:function(A,e){A.exports="data:image/png;base64,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"},475:function(A,e){A.exports="data:image/png;base64,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"},476:function(A,e,t){A.exports=t.p+"assets/img/assertion-editor-view-evidence.2a10ad59.png"},477:function(A,e){A.exports="data:image/png;base64,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"},478:function(A,e,t){A.exports=t.p+"assets/img/assertion-editor-add-badge.006cd0ad.png"},479:function(A,e,t){A.exports=t.p+"assets/img/assertion-editor-view-badge.87a81617.png"},652:function(A,e,t){"use strict";t.r(e);var r=t(69),a=Object(r.a)({},(function(){var A=this,e=A._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":A.$parent.slotKey}},[e("h1",{attrs:{id:"creating-and-editing"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-and-editing"}},[A._v("#")]),A._v(" Creating and Editing")]),A._v(" "),e("p",[e("strong",[A._v("Assertion management is only available to logged in users, ensure you are logged in to the application before continuing.")])]),A._v(" "),e("h2",{attrs:{id:"enabling-assertion-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enabling-assertion-management"}},[A._v("#")]),A._v(" Enabling Assertion Management")]),A._v(" "),e("p",[A._v("Open any framework and you should be presented with a "),e("em",[A._v("manage assertions")]),A._v(" button in the top toolbar")]),A._v(" "),e("p",[e("img",{attrs:{src:t(471),alt:"Manage Assertions Button"}})]),A._v(" "),e("p",[A._v("To return to the framework editing mode, simply press the "),e("em",[A._v("stop managing assertions")]),A._v(" button in the top toolbar")]),A._v(" "),e("p",[e("img",{attrs:{src:t(472),alt:"Stop Managing Assertions Button"}})]),A._v(" "),e("h2",{attrs:{id:"choosing-a-subject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-subject"}},[A._v("#")]),A._v(" Choosing a Subject")]),A._v(" "),e("p",[A._v("You can choose to make assertions about yourself, or another user in the system. In order to change the subject of your assertions, click the "),e("em",[A._v("myself")]),A._v(" button and select a new user from the resulting dialog.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(473),alt:"Select Assertion Subject Button"}})]),A._v(" "),e("h2",{attrs:{id:"creating-an-assertion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-an-assertion"}},[A._v("#")]),A._v(" Creating an Assertion")]),A._v(" "),e("p",[A._v("Once in the assertion management mode, the competencies in the framework will display new controls to create either a positive or negative assertion, indicating that a user can or cannot perform the competency respectively.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(474),alt:"Assertion Editor Controls"}})]),A._v(" "),e("p",[A._v("Clicking the "),e("em",[A._v("I can")]),A._v(" button will generate a positive assertion for that competency and display an input field allowing you to provide evidence in the form of text or a link to support the assertion. Press "),e("em",[A._v("enter")]),A._v(" on your keyboard after entering the evidence into the input field to attach it to your assertion.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(475),alt:"Assertion Editor Add Evidence"}})]),A._v(" "),e("p",[A._v("The evidence will appear in a section underneath the input field, along with a button to delete that evidence if desired.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(476),alt:"Assertion Editor View Evidence"}})]),A._v(" "),e("h2",{attrs:{id:"deleting-an-assertion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deleting-an-assertion"}},[A._v("#")]),A._v(" Deleting an Assertion")]),A._v(" "),e("p",[A._v("To delete an assertion, simply click the same button that was used to create the assertion. In this case, the "),e("em",[A._v("I can")]),A._v(" button.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(477),alt:"Assertion Editor Remove Assertion"}})]),A._v(" "),e("h2",{attrs:{id:"adding-a-badge"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-badge"}},[A._v("#")]),A._v(" Adding a Badge")]),A._v(" "),e("p",[A._v("You can add a badge to a positive assertion by clicking the "),e("em",[A._v("add badge")]),A._v(" button.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(478),alt:"Assertion Editor Add Badge"}})]),A._v(" "),e("p",[A._v("This will generate a url for the badge that can be viewed by clicking the "),e("em",[A._v("view badge")]),A._v(" button and then shared.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(479),alt:"Assertion Editor View Badge"}})])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{474:function(A,e){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA68AAAAsCAIAAAAFNhlVAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAB40SURBVHhe7Z0LXBNXvsdTaZNWiVcsfqBSWQX8COyVhK6w7gZ0QSz4ABSsC3oxrAK7mrDl0ZVHRVFchLYIdyHYJWiJtkK1oIAgKoWLkF2aeCXBFULLw8XFhoUK1wBtYqn3zIMQ3qg8Evl/P/nAmTMzycyZM//zO//znzMvPXnyhAIAAAAAAABo8N2ylWQK0EFev/8NmZoE88j/AAAAAAAAADD3ADUMAMBUUlFRTaZ0EDh4AACAOQioYQAAAAAAAGDuAnHDAABMJRUV1evXryUXdA04eAAA1AyLG36qOFRg5nme6wW+YQAAAAAAAGDuAmoYAAAAAAAAmLuAGgYAAAAAAADmLqCGAQAAAAAAgLkLqGEAAAAAAABg7gJqGAAAAAAAAJi7gBoGAAAAAAAA5i6ghgEAAAAAAIC5C6hhAAAAQANlj6J76EdJofSTKwEAAF48ZvxddN8reh6TydF55TX9114m08A49PUoVGRydKj69PlkEpgy+lWKCcqdQqXr0/TI9BxkWt6IRtR2PSqdTiVzpoepPHgkHweqQWdNYdFVYdFdOb5kzNzm6rPRyWwRvjR1TNHBS1JZkfw+coHAMTYrlpIY9l0Qf6/Vq2SetqDs7lG9pk+nkYtaQE9lIje1Fk/aBJ6OYNHxJKCLwLvodIvnuV4zq4Zlt3zSHz4kF8bEfsevjq8DAzIuDfxtPrnN5MJYUDd/IEjYaEAuAVNAV2kUO6xkAjVMWe594YtAy7kqiKdUUMqleYKPTgul7QNlPn+B4ztBwftcLafHQkzdwdfzt4QWbYw76//KpajDSdUj6wzVPuTYyf9iLpy6ejJVajjJNlJApkkINbwhtokRnJC511pLlKeyTsDhZIu6UZLKYB9MDnYw1IqbTp7H9Y8V4kkWpyzN3RBP6gRtV2L8TogV5uzPz/qakXlzGlDDusXzXK8ZjZSQ3+udUAojRE0dZOq5UFRllJ38m4JcerHolNVNJIURquK7/yST2kdnfignn3CV6RD/lE4ohRH36uo6yeS00ZSzn5PTSC68mHQKk3YH+cWXD0phRF9vpSB5pxuHX9dD5mgpykcPKM2CGAenSFwKUw1t7djRoZmnImJDnByNqOj2FKVE7kmtUZLb6wQqaWpkwJn6H8jFGaevte3+QGVoLwwLJKQwQiUVHA+90Eq6dvpam1u6lDMb2qGsK8yplisVTXnxh5MIKYwQ8kPjC2UKVWd1dp6211jUZpanxlCjS0rEn/iatV+L3M+XztiVbswO2J89iUYN0C16KhN/F1+h9TUf50WOG1b1/djzE5kGAC2ihsd96p6API/Lk6oHcvpVCvlDnRJST0l/a05YnKBhjL5HX1NqYEyRfGajvJ4d48DTn5WdiQt/x9V+rZMXO4JXdP5csAWNguTykbArunEaNFOHwED3wEBX+x9Ete1k5kyirOFtYwVt8vDYli5BNb+zuqxyaDiH9NNrMlSUDYLfvh20zcvXIaxw2vukajBpzovf72+3jhN7sVXDB6OSXuTtXOfhvF8Qq/01tq9HwWIy6XiEj0Iuq5V3TKLv/6zgBo1Mo/u9p1M+jT8GzBid+aFJNep6/lj5fw9V/RSdMHFao4ZfeY17wMrfhFyaCujOIW8fdoCIC0Dr6GxtfHrrIG9RO5wQelaBl7LZFuTSC0htYdIdMjk6ffVpxfVkWtuRf3mzXqHpqtTTZ+xNyGQbvERRVZ4QiGbN1zpZKnNzK5Wmv3zLHv9YG85GqISsopDwHTbzhTI8MZxuFVLJ0opcWS+2pLxZdnOGVLtKmp01TJqPQl99rECoMz1YC/ZlYYzLQnJpGhhq0FYFXr7EhtiMF4C2Fk2zbOASnx/rrP8SuajVaIcaRlL4PZaH5TIPZ7o+mTU27XdCP2mUi2+F/On623+8HvBxvZx0AD8s+LNI8n1zxuHrb8fd+ZZCkXxyPY14lAFfJXp0L+tE6dY/Xt+Tjnb5vrFEuCfk+tY/VZyXDRion3oby0UHo7Cv9Tpxu+57MlvySUXBt50FJ9G+fxf9pCj5CH2t2uf8E/qVBLFuOun66gUh3na2bnZuoUkVrWRmf2txfBDL1s3GKSj+BipFEsWd7Mg9Hja2Hs57E4uJbfu7RBmR25zcbFjenJTyNnVjX8Pj5Ms7xfwAfFXklUEnqLKxMJ74kncFom4NT0C7WHAoyJlF/OjA9u2FnBSJsobv5+QWkCd/UsffxC3sUKvI9kIuO7eNXNAlpCmbnGPrK2P9bWzdOJfxEh61zNEJ4qe/B51+1mccLJSz0O8tNxtbwqEiz+OG5hGNfb9cJIjxc8MK1i9+8EJIU0LzHsiLo9AlThb1dxUf9EiqIVchpCke8aMEs2oLqMMw4U3V9kiJKtuGd/mimfMBTh7awqVkCtEsOJxB2iI1+gx/fxfUSvQJq+q03nVypzBqf0zAwOdS8ywcsNnP7QgRTnOzRrLJ0BL7q4nJOyzLlyiWv3I1w9temp3DL43wFdNOb0e75rPhVEZwgvBWSe2t7HPB5podB2p373ihe7jF+6GxMNYHv5czJIO9pL6mvHjSQkZelDwaGQTS3yO9GINMJTK5fvHXSCMwdC91fwy3DMh6c5DNsXOLKX6A56Jfd+NVCnnOyC7ly7FFZGqI64yZ+lDse5CNwj+44ZLnBW8aNCk1PBu1fcabgH9diUG7JImejGLekXF7Czdo2LfhBg39HHfQl4+aj7DtREuRXHmfzCTKBzUi6vLRrnYXOzyx4o6Ag0wxyz8WnSkq/zh/O+wsstUqY/TGDrPnPGkvsb0baw9fgvfoMEbfXt2Yqi8K6WhHB8DdRBSdQDaih6ZouJYU7otf91CBOnQHKYF3hymBHpkAv+KajTuqY4LQDUSmoG7ghFA14En7JHy2p01Q1mmum5+AIti7CR1S0m2sNqD2Tl1JsGPei/0Qa09MTq36ViC+YfDcperDflBOnCO2/Z1pD7eYFTU8j2n92mIyPSCF35jX0yw99JliUmdc03zygdHh+LevJzHc/u/+ocL2Advck3Gqk/mey/VIqzfIHDXdCbxOJsf5ShLDo+t+woe3CxZanU1xydn+8vncr8kq1nGv4MHisFiX639x/mBl96E89V34uORMg2rnb64k2dnPozs7LCj533vkmp/uVf2D7mCjJU+VPB2ynEOlaxLFNSXii9wVKuLm6yqNOSJhHStDprzkkGVRNL8Bz27g79kvYr5/vramID+CScfvDZmAE9/lyi8tqb2ZyabwtyUK1bZblBL60T3nZLQqZ5cihldKVPvu8iPs87QDAvQlZdHWTRXq4lVJb1TRdyWWCUtqC3wpsSnFZCwghXKbf+TvzPTSkkxP45esXdldZZUDl7qzuuzRVrupHEuYKRghV8tirRxjs2prSnjbUD0do8wRNdjpp6HT99vNq0lgU9zP3S6preEwyNUkyrryykW70osKam+dD6IkJ93oIldQWi/F8X84kCu+FWqvZ7DBk5VTISHX9EtK81kuttM7P8PzYGiKBRKMj8lCmqJT3nkzN8AzNLtZ23qkVoEXvxCWqz8F4bbkikEWMVgsJNxU9fcGGzndAbVhu5JqZi4ikL4xriwvIfNMRtlxJ2zIb1UgLw4b1Segr/VNDmK+ikTwas7Z3ITMU8lXT3nPlH0wcDlRcG7vAnJpIyd9L5OuR6HoGTD2Hj+6kcw23JtQdcJ1gifq8uMC8/W5nxXU3oxh5sedwyI/EF2lcaFfrjiYfxMzEfZVhzkXhj8QIhMEBVRZv1+ArLHg/bf08ZuB2CtCvdeBCwMuD0pTEudk8/pEYU3J5X09kanlmIU2cueVcBxZnDJklzyNie0IFDc+4LS6fV6B9H3WyXcW+5wqwA3XeDTnx2WqApBJD//F4+HmvesJ+q2027hBqxnFoKHmJiD+4faPC7Dmxpea5JM46HfPjwvQKJ+zalOpJeQnRIoZCcgU57h3HEzkJBUsCcoS3zp/1Cg7tYS4x0c0dqg0SK6FBhPbf5HMKIn6vA7PHGP7/vqz7xYuee8z1IgIc3wdVwcW38aLsYG/L5PKOU8UXc/hOPzKDiKvvNrqGC5A112cxiz9U7aMaMqRErD7YIgSaMgO/ZKZiWrOTUHwCgrxJTJBcAY16BKWmcnu+vDIDfWhSz+KEzJS82tP+e9LKznHprDPXEUHFv7WUI9wd3lsUJlZhAD9UNlRZtWB8JwWcg2Fcj2UO3jukTmEd7mnNDWZsg+pjhLhh87UR+NPRjYFzIIadtjxqw/+wMpkL8IEsaYU/kt73STDfI3eCPNctvgVtLvRjt8aqf5XPvD0xI+mjgz7hfMor4yco422y38NE1tl5PALWt3rb4T9Gv3+PP3/XMxs/55si4x+HrbbwpiGyuRlC9YS43vdA23UT6r/tNjx5svE11JtjRz+0V5FNL6yh1WrltjrpBimKH94bL4Md57Qzb02WmGJlhK+fkD4emNsgjCaqddumzxh/ROKqjI3d8WhGJ9VmOOevsrVcQUykOWCNNOg3zstwY2+ffBBn6Ivigei4pRbwxLeMcfag2WsDSxpPd53aL4qkLIPh6/F57gwsvP1NMcSGFTGf4V6WeP5dCcXL0m9+iZpMvXaZ4e3K2jB1HFb7+VKwqB3iYS9m9cuw9M6zuhljoOfPjbnAHb6Y0Jb7RvuaYWXkr7jRqdSmbql7KU4s71QIeG709Y4bM+/JiLqbYO40s2Boc311sY9fDWZHJ35VtzNb1TeEGPpvvoT4WcJy65FzNenL1J/Ru14LF6CiwqpXBfVMKJLsDcw6fbQBne66GkuEWRdFX7198KsT6814/LIZGuCUJhx4VTcubxs4Sm2JT6hZGd1NrbZ7bLsTwulMzlo0D/gzVtqpBGfZ2AyMETQOZn6uXLXiTAnbGYMup3Lxl5JI96zbfgiqdad+44Fdo8jExEd+B+8K1LNb1MK89JMjx71xSZa0dO3dGOZoS3xvYJ34nYY32thWuHAXiqv6DjCnpusc3a8OcEz2c0yyfatrktQ66dn7LLRLqd64rGMth+dA7b/DEvpjTDvA66kMegpzco1+32QI9E0reUcfUeYo/aJrtyVEK5RPt+oe/7awcpd0URHCGv46s3cQrGz0NNn2jEqW4hTGKc0lnHjQojt7Z2dH0ib8Mo7xvadjRIj102rsYqGWuQNr1aJMD8Raqn/5hXia0Vsvtbb57uyr4bcncabQwLtl+K2yMJ1uwn5tPcoSkCl6jQzNUEngqqTpxM2PxKqY2Vvh/ta4e2Rgf3OrZ1lEgVZD9qtPAPtF6J8YnF0ZHlpUp9AotbRVnjH/kk/KV8yUJHe5B4nywqde5u0ET+ux6q+xSYmeLiAkZMXCz+r6WQW1HDV1buS7+fp/2JNJvuNyGeQwsNYTDXtVg7cEzRr0zFbeKrmuaov20LakF6wslNScuvQnysO/LVd3Y9GMFfgdYWAZubxVm9VLSYr6mq7mbbLtNfDNi6MnTEmOUF+hwSVLWT5dd4VyS7G2akHX4KuYYPRlDpJkbnD6qF18V7dl2vsGOoJU/UsGOvqW9SBFXqop6JGpfoR+9vWInexxe+00VC0lOfER/oFcT66QuZg2FqbaVxPk43eS67cwqIjFJKbclfHN3UiGGkCxihzHOaQ0x+P7qbKi4lhezkBSeVkDg7TwpRMIWgsL19JaQ0WHSGrLrNfT447ayl6qPOj7i+NYL55MD+O+dWxIzcGns+4V3iDcKboEvI2/Jjtlw4xQlrHRnbmqTiNT6iJMD01PftLLF6iS7AvaAY8xJ35Mduisvn8Qj7/mqjfaImqtfIiLzVdkFf72NDSyoTyz2J8sbihh2ZIaTiPNivkp/D8AgVNA+3t9NIv7+gb8A3fEA92zPrrRTfIpElf18SCmEodclf2Y6ag85v6NmempdrDY2TBWNRIaCWSryWXNa0xTuc3ddhe6pbOyIKpuZemv2iiiGfLtb8pys79FzLj/a15n/2Pl80knld4y9xEwzwPMe8TXJHG+pvmDjaDzY3Zz9VScvTy0SKGHd5AIdMNh/raRy8N6hA1qVFVRtneiOH44xef38KkrkKce7aDyTBCxV0nKZbHew00Jbb+seKeR8Mubr+qraYw9RAnIOhw2l0yD1cCgZpKgGK9i7f0i9/uiRFUNJEBNqiO1Qm2qdupLXyRomeg9M0sV0wogrqapb0bNAQAum0NG+93kqc/6rkbbAj2bjnmy0kplD6YiaC+2YiU6O0+eEyEC+LVzs8phRHKn6bMEn97JySuoXW5xeGo9en7jca+4+dZ2y6S1NxXUb6VyBboaJgEhqFd4Kns9H2mzRmhO2PLyZAvdkItNno18AlhTpHkVCnHdCH1SFP8D1zVdwxJOJfBe9+TzB2FRfYbjK9V3qcoa0Vt7nZLXwQxjPN8Za6s4e0MK6GtDT15hpcZ4Urmjoalg7OoQqyktEr+h6nNYRIYDwrjk5roq+0CQ1zx+cgGmL/AkR16oSR5c2syN7ZeozEkOl06RYuwGPOyLWBaarcaXmppv9ZO48Ogfn0FqdJKIt6U0pWTL3402KhPC+pHc2huoclu949sD+LEI8mbHbuf4+y0w9krMhJfjPTZFXnXKT7ZlYyRuCeRDbS300mTYLd/2MUB3/CD3H1cfnFda1vdNT43IpUsJUrbxcQNu3VyEjGarauX4lrUVg8bl4gq2xNRT/dQ1Ajz/sLY7WfhaUtjrO1NXbyNRafCWbYenqd6uDy2OZlvGVui0ZTUJHtp+PFQny0vLIjfauEbw8vMOMZVx24NVQJYj0nPwD6Id/kv/mb3svbtjislHlD5NRZFM/jlae5LpvlS0izcYz8RRK+nlMb5+gk0rf20MBtqGEEKYsrzSmHUBt571Gj0GtYvem4kpd8ab13jYbloiBd5VKyX7XjQLvrm32XGr+tomIQa+gon9okEnwfZX95/YrjS2kQsbR7uwLCwWtdUdWfomNRy6w23xFJ1gG///ZZaqxXjxZLpv7lywVeNmg73ATrLM8SuRw/YmUz85jyDDdvNi6rqpVVNW9aYTvOdOEOMUeaTp+vLLLFXDMd+MkMU1q4+d6tEDeIiS+0Ok0AYuSbcKBGejQtmh/JKCmqr8ejbmwW1N7Oj16uKDu7YFCVsIjclMDXRoZccIFDLlJKNjRQud3Ow0O66fPH4zt3+Gp/INp8LwnJetD122LR1nMsxTgun+QzoBoSzkOqz0675HL9UbXmGo6qM5X21ypttjS8tsjAxmIGyNXfx1hiEoVAU1bmRu4M27U5OHfqgKsP7188wbYLhSiuTMolM3dnrbpV1W5hr1vZh1hgHMyxoL7Vh6W6tH7bXpOm8cbbD9+RZdBuWZ59kj/HulR/H8N4R5n3/ZMw7Ad7c1A42N20tdY4rtLu7OHmeorHDGbP0JNlZ1kdPZwhrCsrORLiQ0Tio6GS1sp4x+391uSeMAqM8rUadE0atBErVT/QsMndkxyXvlAtutmJ17G+S+omGEcbGwIyx4MuawekmFC3NnRbLDCe8O/WoJrbu4WmRzJQC6TTL4VlSwwgkiA+V7nk2KdzxsEyGexo7vj6Zp3DYYDFBSP/koL4yr/Ff+EhS9/2C3I5x32xgZG/74/mc7yyYP9PRMAkKRV6cwhcRAxDtUtFdI8NFFMqqHWE/ywv7qLwD2VBsSEWMP5uk77jLveV4XF4LtrHyQXleRReFzvIJaM34K7Fllyg1LoO1Y7PxeFXb0mkHLS2Z+BJFQ258ysCNQdOn32ttQ9cT/WI1LzV/vBKl2TpYladl3HWyX0Hm6CK0+fpVNXhPF5Xe6GU+EtrCpWJJ4xPNETScV6jzHza3YgMkygfi1Ixr46pcU0f3VkHSNSstD5NA6FGHvFe8/35eHNfPw8NmjcemvTzBiNkwzNj7t2tnGHm/vPigt1+6eMgoebs4NTAo9iY6CwP2YV8rzWFrLaSvV1Yn1/xgb0JetIBKxaTwpSR3LL5wmjFjZ4uxhxHPc20eNtcOv/pDEdc2Ltv+MdZ9EpdymDNStiYeBwKXo/9Us+WjmC/6cgMswHO5e7g7Hkr7tKxyD7YoTLvYiI1ZK1vzjvD+zdnK0Cxz3BofOZKLmQ5kQyoKK1E7hu+VegEf6cb36uC6D9nraWhrHzlZnbG17YLKCnzii/bypDOi0Z9ZHGneSbFGGDSUTyyqwZqb5r9mVOI/qKjmRQrsfTa+KGp4zNIYg3G2737YgYsgDfRd2F6S6JjPCXXU3SSqG/pAApVqKGvEJojo75Ll83PIqR5GUQKdJcn8ajn2/pp+ufT2fZNFiyl0Jza3Piwqu/4RtqGiRSwbY/pC2sIFX93FPRVDr6zlFn+zHH5OA95UteRGHf8u3HPcUVClRJBSKMP7eIo6iWTp4oXT3GjNnhpGPP5p1LdjUF+e6Khep+vX3vYKuf52wr8obzMi175G5j8f1p5m9rV3senVTrUb+yx3I7NHx/TXhtQOmoOtVosK2njC0thxk3HpIV9sXhV2iXlKmAvm3jFwiUsN6s/+7To3m3W+kVflRIWmrebwk62rwnbY2HpsSpQYrjBAV4nxe160wbVAF7RlgIASeDmC9Sr+vWOywjf5A9NL+3dg065VmHIj7Mh8ulNwVM8RNzcbF66g3S06ZOxoUQSNtYUpf7TpWVwsM8mr47Y69HW7wv6dgs28ky5SjlHmI7DaHm5e7L/JxiWUnBGJRN8lOPDRiV3o0gRkybeEB9qT+aNj4uS2UGzuuEbXOnHzrdjhbKZmyMRQ6EaLtfNWlH0aFnmjV8qPcV7jsY3wrfp427nF8LEAbqrLsZPhthPPKqmVLLb2OHT5pPubMyXlafjziDS9XsWYjuFBaHRiY3Jx2qExg/m8CyUFly8VlJ3ydlRPrrfUKvhUlvBStvBmxmU+B5vz4lkw3nwieUPLB57IRLgdFzkc4+0cpqoxa8z7uTgMWdF1vvE1+maYJ53YK1G9V/rOIQ7syWO43t0kicMgY0axSTZL8bktLX0Obbl92N7Ww+90z7bwXaPbZNy8x27SMO+kAsIMWhEb5Q8zaFhzkxm9+NIfsGnCPLNV4TkRjpP1K2s9Ixu78Z2jY5Yec6O/hLt+IIrXyTeMmPJsVeC5j5miqN0ok/U7vrR3qFFc5ZvgIPRb42a35VjlUu577xC5I5QAnWLI8ni97PAmrEniFJnGvOeM2ShLdkbmW9JoT6wO+KVJHo1xc1lu4VoXhaFtOMWDM7RiGLknZTg3J7LRDzkfkTikJ/mM79KiMbeslWf8Dpthze3Dh9v/29eSXDFdvPTkyfh9kyml/etjqfeq8L7FWFBprwWFYY/Wkcsjab8TmkmJeH/1LPcW6275VC06G2QxO7KivTz23eS8sd7UhUMzsjt6Jm6zxqSnLwRdxQcjHgX/1WfZ+FZkmlDJPg3dl9Q0vE8+BCpj/9HMIG3tJ9XxtxVafx7Bmr7Dq6ioXr9+LbkwtfT3NFcV5hRck9x9KGunGK5aZr/Ozfc3y5qu5+SUyLekZT3/60im/uD7e2R5iZwUccfQQUaakRX3wzj26qmUwlN08JIkbHLr8WCfvjp8+qQZpO1KjN8JcecYg7b0tezMZF+rZ9SdU4I8j+sfS7xagsUpS3PXrRCeEXSVRh97xE32GmhKZAL/Pb0hogNMcvmF5rtlK8kUzuv3vyFTs0sD3+8Kkx9uR1ZzRXns+gL768mbdbyqPT/Pc71mVg1PCdqghh+3f3Hy7kPP3wRZzqpzfe6hEPP25Vlnxk97nOKLSX9rXtjh7w5kBa4iM6aDaVTD0890HbxSLqsWf3W3FXMFLDBl2tnZr8Ln1JtSpujgm3L2x+WN57OwCkqLcBk6xwyggar5RnbRN9iI8MKV7j4bx57nSDeo52899uhQOjE5prKz/lJcRLPvxei1On5ak0M71bDixmHnK4ycRG9zJIf7VW1VydzTFmlnZ2yCbe0F1PCM0nih9MDfKPZbmMc3zvmO2EyCur/rEm+s9k7/OJDxwgyczSDNAt9tGarNUbyErdN764Aani10+uABrUXZWJgUn3WppldJoRraMtj7w9h2c6UzpKW+4f4u0enE+GxJczeFssjAxdOfG+RqBs3inFPDAABoMSAoZwtQwwAwtWipGgbG4HmuFwz0AwAAAAAAAHMXUMMAAAAAAADA3AXUMAAAAAAAADB3ATUMAAAAAAAAzF1ADQMAAAAAAABzF1DDAAAAAAAAwNwF1DAAAAAAAAAwdwE1DAAAAAAAAMxd4O0bAABMJfACi9kC3r4BAFPLsLc5ALoFvH0DAAAAAAAAACYF+IYBAAAAAACGA75hnQZ8wwAAAAAAAAAwKUANAwAAAAAAAHMVCuX/Af9HNQJ3LAyeAAAAAElFTkSuQmCC"},475:function(A,e){A.exports="data:image/png;base64,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"},476:function(A,e){A.exports="data:image/png;base64,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"},477:function(A,e){A.exports="data:image/png;base64,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"},478:function(A,e){A.exports="data:image/png;base64,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"},479:function(A,e,t){A.exports=t.p+"assets/img/assertion-editor-view-evidence.2a10ad59.png"},480:function(A,e){A.exports="data:image/png;base64,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"},481:function(A,e,t){A.exports=t.p+"assets/img/assertion-editor-add-badge.006cd0ad.png"},482:function(A,e,t){A.exports=t.p+"assets/img/assertion-editor-view-badge.87a81617.png"},653:function(A,e,t){"use strict";t.r(e);var r=t(69),a=Object(r.a)({},(function(){var A=this,e=A._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":A.$parent.slotKey}},[e("h1",{attrs:{id:"creating-and-editing"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-and-editing"}},[A._v("#")]),A._v(" Creating and Editing")]),A._v(" "),e("p",[e("strong",[A._v("Assertion management is only available to logged in users, ensure you are logged in to the application before continuing.")])]),A._v(" "),e("h2",{attrs:{id:"enabling-assertion-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enabling-assertion-management"}},[A._v("#")]),A._v(" Enabling Assertion Management")]),A._v(" "),e("p",[A._v("Open any framework and you should be presented with a "),e("em",[A._v("manage assertions")]),A._v(" button in the top toolbar")]),A._v(" "),e("p",[e("img",{attrs:{src:t(474),alt:"Manage Assertions Button"}})]),A._v(" "),e("p",[A._v("To return to the framework editing mode, simply press the "),e("em",[A._v("stop managing assertions")]),A._v(" button in the top toolbar")]),A._v(" "),e("p",[e("img",{attrs:{src:t(475),alt:"Stop Managing Assertions Button"}})]),A._v(" "),e("h2",{attrs:{id:"choosing-a-subject"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#choosing-a-subject"}},[A._v("#")]),A._v(" Choosing a Subject")]),A._v(" "),e("p",[A._v("You can choose to make assertions about yourself, or another user in the system. In order to change the subject of your assertions, click the "),e("em",[A._v("myself")]),A._v(" button and select a new user from the resulting dialog.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(476),alt:"Select Assertion Subject Button"}})]),A._v(" "),e("h2",{attrs:{id:"creating-an-assertion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-an-assertion"}},[A._v("#")]),A._v(" Creating an Assertion")]),A._v(" "),e("p",[A._v("Once in the assertion management mode, the competencies in the framework will display new controls to create either a positive or negative assertion, indicating that a user can or cannot perform the competency respectively.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(477),alt:"Assertion Editor Controls"}})]),A._v(" "),e("p",[A._v("Clicking the "),e("em",[A._v("I can")]),A._v(" button will generate a positive assertion for that competency and display an input field allowing you to provide evidence in the form of text or a link to support the assertion. Press "),e("em",[A._v("enter")]),A._v(" on your keyboard after entering the evidence into the input field to attach it to your assertion.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(478),alt:"Assertion Editor Add Evidence"}})]),A._v(" "),e("p",[A._v("The evidence will appear in a section underneath the input field, along with a button to delete that evidence if desired.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(479),alt:"Assertion Editor View Evidence"}})]),A._v(" "),e("h2",{attrs:{id:"deleting-an-assertion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deleting-an-assertion"}},[A._v("#")]),A._v(" Deleting an Assertion")]),A._v(" "),e("p",[A._v("To delete an assertion, simply click the same button that was used to create the assertion. In this case, the "),e("em",[A._v("I can")]),A._v(" button.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(480),alt:"Assertion Editor Remove Assertion"}})]),A._v(" "),e("h2",{attrs:{id:"adding-a-badge"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-badge"}},[A._v("#")]),A._v(" Adding a Badge")]),A._v(" "),e("p",[A._v("You can add a badge to a positive assertion by clicking the "),e("em",[A._v("add badge")]),A._v(" button.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(481),alt:"Assertion Editor Add Badge"}})]),A._v(" "),e("p",[A._v("This will generate a url for the badge that can be viewed by clicking the "),e("em",[A._v("view badge")]),A._v(" button and then shared.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(482),alt:"Assertion Editor View Badge"}})])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/21.94265723.js.gz b/docs/assets/js/21.a375b56a.js.gz similarity index 83% rename from docs/assets/js/21.94265723.js.gz rename to docs/assets/js/21.a375b56a.js.gz index b60797f07..e920e1731 100644 Binary files a/docs/assets/js/21.94265723.js.gz and b/docs/assets/js/21.a375b56a.js.gz differ diff --git a/docs/assets/js/24.e3a9aa2a.js b/docs/assets/js/24.326617e3.js similarity index 99% rename from docs/assets/js/24.e3a9aa2a.js rename to docs/assets/js/24.326617e3.js index f765e40ef..13d1ce296 100644 --- a/docs/assets/js/24.e3a9aa2a.js +++ b/docs/assets/js/24.326617e3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{435:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},569:function(e,t,r){e.exports=r.p+"assets/img/framework-properties.f66c77e7.png"},570:function(e,t,r){e.exports=r.p+"assets/img/add-custom-framework-property.e4d663fb.png"},571:function(e,t,r){e.exports=r.p+"assets/img/new-framework-property.f88627b4.png"},572:function(e,t,r){e.exports=r.p+"assets/img/limit-values.a6f85c8e.png"},573:function(e,t,r){e.exports=r.p+"assets/img/limit-values-framework.40f13c6e.png"},574:function(e,t,r){e.exports=r.p+"assets/img/framework-configuration.2ae19467.png"},663:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"configuring-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-framework-properties"}},[e._v("#")]),e._v(" Configuring Framework Properties")]),e._v(" "),t("p",[e._v("Framework properties are the values that can be added, edited, and deleted for framework objects. Minimal framework properties are "),t("em",[t("strong",[e._v("id")])]),e._v(", "),t("em",[t("strong",[e._v("name")])]),e._v(", and "),t("em",[t("strong",[e._v("description")])]),e._v(". Properties added here will be displayed in the framework object at the top of the framework editor view.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(569),alt:"Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the framework level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-properties"}},[e._v("#")]),e._v(" Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a framework by clicking the "),t("em",[e._v("add custom framework property")]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(570),alt:"Add Custom Framework Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[e._v("New Framework Property")]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(571),alt:"New Framework Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-framework-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-property-fields"}},[e._v("#")]),e._v(" Custom Framework Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[e._v("range/type: Text")]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[e._v("range/type")]),e._v(" field defines the property type. Certain range/types allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs "),t("em",[e._v("(primary, secondary, or tertiary)")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The name of the property in the data record. Only alphanumerics are allowed.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(435),alt:"One entry per language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(572),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(573),alt:"Limit Value Entries"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-framework-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-framework-property"}},[e._v("#")]),e._v(" Applying the Custom Framework Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-framework-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Framework Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(574),alt:"Delete Custom Properties"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{433:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},569:function(e,t,r){e.exports=r.p+"assets/img/framework-properties.f66c77e7.png"},570:function(e,t,r){e.exports=r.p+"assets/img/add-custom-framework-property.e4d663fb.png"},571:function(e,t,r){e.exports=r.p+"assets/img/new-framework-property.f88627b4.png"},572:function(e,t,r){e.exports=r.p+"assets/img/limit-values.a6f85c8e.png"},573:function(e,t,r){e.exports=r.p+"assets/img/limit-values-framework.40f13c6e.png"},574:function(e,t,r){e.exports=r.p+"assets/img/framework-configuration.2ae19467.png"},663:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"configuring-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-framework-properties"}},[e._v("#")]),e._v(" Configuring Framework Properties")]),e._v(" "),t("p",[e._v("Framework properties are the values that can be added, edited, and deleted for framework objects. Minimal framework properties are "),t("em",[t("strong",[e._v("id")])]),e._v(", "),t("em",[t("strong",[e._v("name")])]),e._v(", and "),t("em",[t("strong",[e._v("description")])]),e._v(". Properties added here will be displayed in the framework object at the top of the framework editor view.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(569),alt:"Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the framework level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-properties"}},[e._v("#")]),e._v(" Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a framework by clicking the "),t("em",[e._v("add custom framework property")]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(570),alt:"Add Custom Framework Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[e._v("New Framework Property")]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(571),alt:"New Framework Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-framework-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-property-fields"}},[e._v("#")]),e._v(" Custom Framework Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[e._v("range/type: Text")]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[e._v("range/type")]),e._v(" field defines the property type. Certain range/types allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs "),t("em",[e._v("(primary, secondary, or tertiary)")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The name of the property in the data record. Only alphanumerics are allowed.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(433),alt:"One entry per language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(572),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(573),alt:"Limit Value Entries"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-framework-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-framework-property"}},[e._v("#")]),e._v(" Applying the Custom Framework Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-framework-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Framework Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(574),alt:"Delete Custom Properties"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/24.326617e3.js.gz b/docs/assets/js/24.326617e3.js.gz new file mode 100644 index 000000000..62b0fd882 Binary files /dev/null and b/docs/assets/js/24.326617e3.js.gz differ diff --git a/docs/assets/js/24.e3a9aa2a.js.gz b/docs/assets/js/24.e3a9aa2a.js.gz deleted file mode 100644 index 437fbc84c..000000000 Binary files a/docs/assets/js/24.e3a9aa2a.js.gz and /dev/null differ diff --git a/docs/assets/js/26.2cd05b7f.js.gz b/docs/assets/js/26.2cd05b7f.js.gz deleted file mode 100644 index dc53362a6..000000000 Binary files a/docs/assets/js/26.2cd05b7f.js.gz and /dev/null differ diff --git a/docs/assets/js/26.2cd05b7f.js b/docs/assets/js/26.ace82101.js similarity index 86% rename from docs/assets/js/26.2cd05b7f.js rename to docs/assets/js/26.ace82101.js index 28b75a9cb..c5d8defd2 100644 --- a/docs/assets/js/26.2cd05b7f.js +++ b/docs/assets/js/26.ace82101.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{527:function(t,e,n){t.exports=n.p+"assets/img/configurations.63f74143.png"},528:function(t,e,n){t.exports=n.p+"assets/img/browser-default.25f6a9ff.png"},529:function(t,e,n){t.exports=n.p+"assets/img/view-manage-delete.5931810b.png"},530:function(t,e,n){t.exports=n.p+"assets/img/create-new-configuration.ea5e3e25.png"},531:function(t,e,n){t.exports=n.p+"assets/img/general-details.6aaad19b.png"},532:function(t,e,n){t.exports=n.p+"assets/img/save-configuration.23d35bf3.png"},657:function(t,e,n){"use strict";n.r(e);var a=n(69),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"configurations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configurations"}},[t._v("#")]),t._v(" Configurations")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("This section is not applicable to Credential Engine instances of CAT.")])]),t._v(" "),e("p",[t._v("Configurations control the way frameworks and competencies appear in the editor, as well as what properties,\nrelationships, and in some cases value types of properties and relationships that can be added to frameworks and competencies.")]),t._v(" "),e("p",[t._v("Configurations are set at the framework object. If a framework does not have a configuration assigned,\nthen the following priority is made to determine the correct configuration to apply to the display of the framework:")]),t._v(" "),e("ol",[e("li",[t._v("Browser default configuration")]),t._v(" "),e("li",[t._v("Instance default configuration")]),t._v(" "),e("li",[t._v("CaSS nomenclature fallback")])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h2",{attrs:{id:"accessing-the-cat-configuration-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cat-configuration-manager"}},[t._v("#")]),t._v(" Accessing the CAT Configuration Manager")]),t._v(" "),e("p",[t._v("The CAT configuration manager can be accessed at any time by selecting the "),e("em",[e("strong",[t._v("configurations")])]),t._v(" icon on the\nlower left corner of the navigation menu.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(527),alt:"Configurations Navigation Menu"}})]),t._v(" "),e("p",[t._v("Upon entering the configuration manager, a list of all existing configurations in the current CAT instance are displayed. Public configurations or configurations owned by the current logged in user can be managed or deleted by selecting one of the actions icons to the right of the configuration item. Unowned configurations can be viewed by selecting the appropriate action icon.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(528),alt:"Configuration Action Browser Default"}})]),t._v(" "),e("p",[t._v("It is also possible for users to set their browser default configuration from this screen")]),t._v(" "),e("p",[e("img",{attrs:{src:n(529),alt:"Browser Default"}})]),t._v(" "),e("h2",{attrs:{id:"creating-a-new-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-configuration"}},[t._v("#")]),t._v(" Creating a New Configuration")]),t._v(" "),e("p",[t._v("Configurations can be created by clicking the "),e("em",[e("strong",[t._v("create new configuration")])]),t._v(" button at the bottom right corner of the configuration management list screen. By default, all required fields are pre-populated with default CaSS terminology and settings.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(530),alt:"Create new Configuration"}})]),t._v(" "),e("h2",{attrs:{id:"managing-a-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-a-configuration"}},[t._v("#")]),t._v(" Managing a Configuration")]),t._v(" "),e("p",[t._v("After creating a new configuration or selecting the "),e("em",[e("strong",[t._v("manage")])]),t._v(" action on an existing configuration, the configuration details screen is displayed. This screen is divided into the following sections:")]),t._v(" "),e("h3",{attrs:{id:"configuration-general-details"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-general-details"}},[t._v("#")]),t._v(" Configuration General Details")]),t._v(" "),e("p",[e("img",{attrs:{src:n(531),alt:"General Details"}})]),t._v(" "),e("p",[t._v("The general details configuration settings provide fields for editing the "),e("em",[e("strong",[t._v("name")])]),t._v(" and "),e("em",[e("strong",[t._v("description")])]),t._v(" of the configuration. From this section you can also toggle the "),e("em",[e("strong",[t._v("instance default")])]),t._v(" switch and set your browser default.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h3",{attrs:{id:"saving-the-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#saving-the-configuration"}},[t._v("#")]),t._v(" Saving the Configuration")]),t._v(" "),e("p",[t._v("Configurations can be saved by clicking on the "),e("em",[e("strong",[t._v("save configuration")])]),t._v(" button on the left side of the "),e("em",[e("strong",[t._v("configuration details")])]),t._v(" screen.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(532),alt:"Save Configuration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{532:function(t,e,n){t.exports=n.p+"assets/img/configurations.63f74143.png"},533:function(t,e,n){t.exports=n.p+"assets/img/browser-default.25f6a9ff.png"},534:function(t,e,n){t.exports=n.p+"assets/img/view-manage-delete.5931810b.png"},535:function(t,e,n){t.exports=n.p+"assets/img/create-new-configuration.ea5e3e25.png"},536:function(t,e,n){t.exports=n.p+"assets/img/general-details.6aaad19b.png"},537:function(t,e,n){t.exports=n.p+"assets/img/save-configuration.23d35bf3.png"},658:function(t,e,n){"use strict";n.r(e);var a=n(69),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"configurations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configurations"}},[t._v("#")]),t._v(" Configurations")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("This section is not applicable to Credential Engine instances of CAT.")])]),t._v(" "),e("p",[t._v("Configurations control the way frameworks and competencies appear in the editor, as well as what properties,\nrelationships, and in some cases value types of properties and relationships that can be added to frameworks and competencies.")]),t._v(" "),e("p",[t._v("Configurations are set at the framework object. If a framework does not have a configuration assigned,\nthen the following priority is made to determine the correct configuration to apply to the display of the framework:")]),t._v(" "),e("ol",[e("li",[t._v("Browser default configuration")]),t._v(" "),e("li",[t._v("Instance default configuration")]),t._v(" "),e("li",[t._v("CaSS nomenclature fallback")])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h2",{attrs:{id:"accessing-the-cat-configuration-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cat-configuration-manager"}},[t._v("#")]),t._v(" Accessing the CAT Configuration Manager")]),t._v(" "),e("p",[t._v("The CAT configuration manager can be accessed at any time by selecting the "),e("em",[e("strong",[t._v("configurations")])]),t._v(" icon on the\nlower left corner of the navigation menu.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(532),alt:"Configurations Navigation Menu"}})]),t._v(" "),e("p",[t._v("Upon entering the configuration manager, a list of all existing configurations in the current CAT instance are displayed. Public configurations or configurations owned by the current logged in user can be managed or deleted by selecting one of the actions icons to the right of the configuration item. Unowned configurations can be viewed by selecting the appropriate action icon.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(533),alt:"Configuration Action Browser Default"}})]),t._v(" "),e("p",[t._v("It is also possible for users to set their browser default configuration from this screen")]),t._v(" "),e("p",[e("img",{attrs:{src:n(534),alt:"Browser Default"}})]),t._v(" "),e("h2",{attrs:{id:"creating-a-new-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-configuration"}},[t._v("#")]),t._v(" Creating a New Configuration")]),t._v(" "),e("p",[t._v("Configurations can be created by clicking the "),e("em",[e("strong",[t._v("create new configuration")])]),t._v(" button at the bottom right corner of the configuration management list screen. By default, all required fields are pre-populated with default CaSS terminology and settings.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(535),alt:"Create new Configuration"}})]),t._v(" "),e("h2",{attrs:{id:"managing-a-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-a-configuration"}},[t._v("#")]),t._v(" Managing a Configuration")]),t._v(" "),e("p",[t._v("After creating a new configuration or selecting the "),e("em",[e("strong",[t._v("manage")])]),t._v(" action on an existing configuration, the configuration details screen is displayed. This screen is divided into the following sections:")]),t._v(" "),e("h3",{attrs:{id:"configuration-general-details"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-general-details"}},[t._v("#")]),t._v(" Configuration General Details")]),t._v(" "),e("p",[e("img",{attrs:{src:n(536),alt:"General Details"}})]),t._v(" "),e("p",[t._v("The general details configuration settings provide fields for editing the "),e("em",[e("strong",[t._v("name")])]),t._v(" and "),e("em",[e("strong",[t._v("description")])]),t._v(" of the configuration. From this section you can also toggle the "),e("em",[e("strong",[t._v("instance default")])]),t._v(" switch and set your browser default.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h3",{attrs:{id:"saving-the-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#saving-the-configuration"}},[t._v("#")]),t._v(" Saving the Configuration")]),t._v(" "),e("p",[t._v("Configurations can be saved by clicking on the "),e("em",[e("strong",[t._v("save configuration")])]),t._v(" button on the left side of the "),e("em",[e("strong",[t._v("configuration details")])]),t._v(" screen.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(537),alt:"Save Configuration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/26.ace82101.js.gz b/docs/assets/js/26.ace82101.js.gz new file mode 100644 index 000000000..add830bd2 Binary files /dev/null and b/docs/assets/js/26.ace82101.js.gz differ diff --git a/docs/assets/js/27.a895691a.js b/docs/assets/js/27.cb63dfc3.js similarity index 99% rename from docs/assets/js/27.a895691a.js rename to docs/assets/js/27.cb63dfc3.js index bf69341e9..5ef7e4a86 100644 --- a/docs/assets/js/27.a895691a.js +++ b/docs/assets/js/27.cb63dfc3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{625:function(t,s){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAC8CAYAAADCScSrAAAilElEQVR4Xu2dB1hUxxbHV5btuyxbWHpREAUUlGrBFhNbjJqoWLBg713jU6NGxaixl0TRWJIYk1ijxt57b7HEFEtijBpjQWyIeN6cqxicQQXZhS3z/77fy5O75d45fy4zc8+cEYm4zCFPQnlCM8IgV71hnt7gtlxnMB7VG4y/qNTq68+4SY4D4uTklOmidb2l1mj+1ekNf7h7ev9sMLmf9PL224jvddUZFpLXDSG0IFQmBGR9GRdXQcmdUEcqVfzPzd1jDRpV7Oz8WKXWPAgMDrlTrUbd+0ldekP/4WNh5KRZMPOblTB/+SZYs/f0c45cuA3H/kx7ztp9/x1bsGIzpHz3o/DeQcmToE3XvlC9dr27JUJLp7rq9Hef/ZL8SX6hNjo5O48g59KIEEydIxfXG8mJUFYikfV2c/fcoNa43FSqVOllYsunNW/b9cnw8Z/DojU7Yd8v114wsCU58Pu/8P36vTD2swXQtmvfzHKVqqcS89+VSmX3XHS6neQX4mNyzjUJqhcvhYsrZ3mJJZJ2Jg+vzTK54oG3r/+9Bk1aZnw8YSas2HaUMaC1sPnI7zBpzrfQqmOv9JDSZW5JJNJ0F632KLmeoYQKBDF1nVwOrGCtTjcGuycKpTL9nXcbpKPBNx76lTGWrYB/dT77egU0b9vlnpeP/03yFyBNKpfjmKAeQU43AJf9y58MFkeTfvGfWp3hYdOkTplzl26AIxdTGfPYA+v2nYEBw8c9KhEaft3ZWXLfWSpdRtrgPYKEbhgu+5FMLBY3NZo8jqrU6vTGLds/RpMf/eMOYxB7Ztvxi/DRmKmPAoNL/kO6PrdIu0whlKUbi8t25as3mmbJFcp7kXEVH4ydMV8Y/NFGcERW7/oJWnfqfUvjosV+/zHR0ylQKd2AXLahaIObaT3OrCS265b5455TTMA5T8Gu3OQvvntUslTEX2Jn539J240ieNANymWdqqI3up0wurk/6DdsDOw+8zcTYM7LWbHtCNSs1wifL9whbTmD4Ec3MJd1qBIx+jEPL58H+OCGfsDDyRtbjp2HD5on/UEGuamkbb8gBNINzlU4KqU3GA+aPLwe4HTi4fO3mOBx3pztP/0JTZM6XyB3fBzgTiMY6QBwFYzcdDrDN2qNy8OBIyfAofM3mWBxzMe24xefVK9d/6yTk9MN0dMcHwUdEC7LSKzRaAbhrEvztl0f7zh5iQkOx3Ks2nniQVhE5OkiRYr8SWLRgA4Ol3kV5aJ1/T2qXPzDlTuOM8HgFByff73yilKlRtOvEvFMTrNLpdHqZpHuy4PkKbOZxucUDtiNbNKqwwnSzcG05wGipwl3XPlUnFqtuVa7fuP07Sf+YBr9dRw8dwOWbj4IE2cvgl6DRkGDJi0hpnw8hJeJBG9fX/AhSCQSIUddJpMJ/8afR0bHQLn4ypDQsp2Q7jt9wVJYvfsk8/mcNFi988Rtk7vnKdKGuwnFqPhx5VLOKo1mLN7V0ax0I78MTJzCPPS23fpBeGSMYOag4oFQu9Zb0Kt7Esya+hFs/XEW7N08Dy6cWiVw/9oegDuH4e7VXc9/tnP9HNjwwwyYPuFD6NapKbz9VkXw8vIApVIJlapWI788I+DrVdvtNv8mr2CKRqsOPQ+Tvj0+uOpMB5Pr1QrQuLicia1Y5cGmw78xjUuDA9chY6ZCdLl4UKpUUK5cDAz+sDNsW5MCD/7ZK5jZXNz+azusWDQBenRuBqEhxUGjUUPNd+vChFkLecoCYfGmfZdJ7H4mMVxJcKUDy0VJLBa/q1Aq7/YbNiaTbszsYFcFc8Cr164HpIHh/fffhZXfT4F713YzJrUk/5zfBPNnDocqlWLAVecKCYmtAZPS6PN1JEjf/nFcfFXs3pwnRNIx5noqJ4VKM85Vb7iPy+LoRswCuyzYpzZ5eEL58rGQMn04pF7ewRixMLj081oY83F3CCkZBMElgmH01DkO/SBsUPLEA6SLc53EthMdbEeXC7lL74qIir23+eg5puGQXacvQ/cPh4Pe6Abv1a0JR3YtYgxnTWD/v0p8NPj5+cKQ0ZMctruzdPOBCzKZ/FcS45kEZzrwjih/Mji90DCxTXpO+S84KBw8ejLoDUZo2qQBnD60lDGXNYOD47q1q4C7hzuMnpLCXJ8jsPvM36kGk/sBEusNBBfaAI6kWNJfv/Wy/jrOgoSGl4VypOvy0/4ljJlsif1bF0BU2TCIiYuDxRv2Mddq75Cb2aPSZWO2kJjj9GUA5QOHEA5O702Zt5hpnD0/X4VGLdqByd0d5s0azZjHVsm8fRBSpg4GN6MBWrTtRO58V5hrt3cat2i3kcT+EiGUNoTdCpfaqdSa+1+t3MY0CN79AgKLQ2JiI2EKkDaNPfDvxS2Q1KIeFC1WFBat3cW0gb3TbcDQzcQGV0SOMIPjJJF00rrq7i3ZdIBpiI/GTiN9dQPMnz2GMYk98v2CMWA06GHgiHFMW9g7g0ZN3E7scI1QkbKI/Ugmk/U2GE33Vu088cLF4wxG7QYJEBoWCmcOL2eMYc+c+2ml0LevXrO2MBNFG8OeGT1t7i5ii38I8bRXbF7kzt4ZzY4lI7JfNC7Biy5fCerXr2P2p6K2wqMb+6FrhwQILlnSpuvhvAnPTI93+ijaMzYr0mdPctUb7uEq+ewXixWzSoSFQ4f2LYQBHW0ER2PsyJ7g4+sjrCuljWHPDP5k0lbR0z59GO0dW1RjF63rPbpUHWYe+vgFwNDBPZnAOzJfpowAk8kNvvphK2MMe6bHwOE4kP2LUJQ2kC2pMubF0PPO+DQVzT55wkdMwDmHYc3SqWAgg1lHM32TVh3WE8+cEdlo0lmITK5MnbVo1QsXhX127MbwO/urWbd8Gri5GWHZlkOMMeyZsjEVcJ4eH1DZVBlAD7lCeXXkpJTH2S8GZ2NiKlSG9u0SmQBzWBZ+MQq8vL2F2pC0MeyVIxdTH5k8vfYQD82nTWWtkipV6uMdew18SF8MTj3ibAwfoOaeyeP6Q2BQELzJai9bZd8v11JJ7+A08VIf2lxWJ7lcOT++Wo00ukgpPlTCeXZHnXrMD/17tYYKlas61OqqVTtPnC9SpAhOV1rvHL1YLO7o6e13h84RwUErPkF1tIdK5uLxrYNQOT4GuvQbzBjDnhk1Zc5e0dO8G6uscxmDMzI/bD/2wkljIhjmxjhKuoCl+PvX9eDhYQJ6EsDeqVaz7ibire0iK9vFREMGqX+Nn/U1k+aLWY+YCEYHkJN3cPE5ZpDmZp2vvXDkj9THrnrDYeKxwbTpCk1yueK7ug2bpdEni/nsGCB7zXosDIZ82AHerv0eYwx7Zu2+U5dIfx5zbqwiuzLR5OGVSu9mhwOs0NJl7Cqf3Rp4eH0vBAYWhanzlzDGsGf6DB6Ni8LxoVSh1rT0lsrkd75bt4c5QVyWhyuV6IBx8s+mVTOFYlF7zxbclpnWQEBgCZyfn0ybsMAklys3dOgx4D59YpjmioutT+xbzASLYx6aJtSF1p17MaawZ7Ydv3jTyckJpyqjaS8WhJp5+frfxvow9Il1GzAMmjR5nwkSx3xcO7cRdDqdQz2FRXoNHrWPeO+IqIBnbYxSqfzmwtXbmRPCvrzBzQ3OHF7GBIljXvr3bi/MgtExsHf0bibcgK3gnsJK5fIvE1p1YGZlECySVO+9WkxwOObn+oXN4OrqCusPnGXiYM8s33r0r2c1LL1ob1pCUWqNJi2n5WjYvXH39ILDO79hgsOxDL17toMmrTsysbB3qtWsiwPYebQ5za0iCoXyyLBPZzyiTwDBWo8VKsQxQeFYDuzLa7WuwobDdDzsmV1nLt93Eotxbj6CNqk5lehfNPDmy5KYsLAp1nqkg8KxLAkJDWDAx45X+aB9j/4HiSdxpZRFRLruiivzlm1kvhjB3d6wii9/qlrwbFqdIiyqoWNi7xy+cOuJXKG8QLxZkzarOdStTEy5G/SXZoH12Rs0qMMEg2N5nqQeEnYuyekBoL0zKHkylu7DqUqzSiGTya+/qkoWbkaw8vvJTDA4BcPAAd2geduuTFzsHexeK5Sqi8SjNWjT5kf9y1eu/tK7O869484bBb0ZAec/Th5YCl4+fkxsHIFByRNxdRTm2phFMqlUfiOn0nhZ4J5KuM0MHQROweLu4YkrhZj42DvP7vJ/EK9Wo837JupQNqbcv/SXZAc3EMM9legAcAqWxgkfwJBPpjDxcQS6fzgcMylxX6l8qYhcrrg45/u1zBdkB3fLww3E6ABwCpY5M8dA9Tr1mfg4Avt//eeJ2NkZ94sNok2cFzXwCwh85d0dS2/I5XK+ONsK+OvsenDV6YUtJOk4OQJ13m9ynHh2Cm3iXEuhUO4ZM33eC7VlaLBQUGBQMabxOYWDm8nd4XJrsiDX/dDJyekWsa6G9nJuVFyhVKbllP6bHdw0uFbNt5iG5xQO5SqUd7iF3tkJDi2Fffm2tJlfK/KbMr5ZUudU+gNpeg4aCb17JDENzykcWie1gIEjxjNxchTGfrbgKrEvluDOk6RSqezWyh3HmQ+kqZ/QAmZPH8o0vC2BA+6kxPfgk+HdmGO2xthPhkBCqw5MnByFQ+dvgkQixcFrcdrUr9IHJcLC/6E/LCdiysfDltUzmYa3JWq/UwHEYidwdhaTgd9a5rgtsXLJLChfuToTJ0eiRt2G2K0ZTZv6pZLJFCuHjp2WQX9QToSWDofDO79mGt5WwN2z0ezdOyYAuXQYPqgj8xpbYs+WhRAWEcXEyZH4ds0uHLzitve5kpr8SbiP2Y/0B+VE0WKBcPaI7S7nSx7aVTD6mUNLILpsKHh7mSDj5gHmdbbCqUPLISAwmImTo6FSq3Gxdxna3DmpeURUbK66MwgWWrr8yzqm4W0BzDIMKuYLxQP9hH9PGddPMP/yb8Yzr7UVsEvm5u7JxMnRqNuw6W8kliNpczOSyeRrR02e/cq59+xg0tidv3cyDW8LbF87WzD4yCFP0yL+Ob8JpFIJvFPNdldtpV7egXc3Jk6OxpcrNqeTbs3PtL9pyZ2dJfd3nLzEfMDLEIvFQnVbuuFtgVbN3gXSKHDx9OrnP3v/vWpQpEgR+O34Cub1tgB2x5xITOg4ORr4tFmuUL421aBmYHDIdfrNr0Jlo3d4vBMqFXJ4q8qLWZ6rvp8k3PX79WjBvMcW4Hf4/6hQufo5EssutMmfi9ztpnbpO5ipJPYqbLUPnzJ1sGDsAD8vqFop6jnx5csIPzfotTaZH8T78P8xYuLMVPLXegXt8+cifwIufbtuN/PGV2GrszRx0aVALpe+YPYsShT3F0z/1eyRzPusnTOHlgn1+Ok4OSK4WyTp3t0hsXSmvY7yIwPQu3nNtAuzwXn40wcXC4Zu3jjnglE4RYnHy8eGM8esnf3b+Dx8doxu7n+TWJanvC6oWWzFKnnqvyOx5Sva3JNW7J+T64W1y6Yxx7JAs+Nrju9ZxByzZtaumAWxFasycXJUajdojFvm9KO8LuzPNLPPkOR0+g2vo37j5jBnuu1sMPzoxn4wuenBw93wytml2dOGCIbv1PYD5pg1M2XiMHi/WWsmTo7KqEmzH5B+/FLa7yKFUvkb7thBv+F19PzfCOjXqzXT8NYKdr+wnz4+uRdzLDs424EzOHVrVXrlL4a10alTa+j70WgmTo7K6l0/gUQiwwzKF+QikUgfYqYZ/YbXMSHlG6hbh+fDWwtVq1WBaQuWMnFyZGRyRRrxuE92w1cKCAp+5VK+l4HVDIoX5yuerAVvHx/hrkbHyZEJDY+8TDxeL7vhu9Vp0OQm/cLccOC368Ka1vR/9zGNzylY8AGgXKGAIxduM3FyZBJatr8uyr4LoEQi+eJ/IycwW07mltIRZWDn+jlMADgFy+ol0yCmQmUmPo7OiAkzM8Ri8bfPDa9Sa36au3QD88LcktS5F4wY0oUJAKdg6d41SdhuiI6Po7NoDfnLJ1ecfW54TBjLbf57Tkwng6TK8babYWgvhIaFwFc/bGXi4+hgKUgnsThd9GxfKINMJn9Avygv7D5zRUgiwz1E6SBwCgZMbXZx0cLh87eY+HDSQK3WYIqBMFMT7e3r/9JCqbmlbFQ0bFz5GRMITsEwPyUZqtZ4l4kL5ykBgcVxt5CKaPhGcZWqvdGUZHb6DRsDrRMbMIHgFAxVq8ZjiQomLpynVKzyDhq+ORp+QJNWHXPckS8vbDr8G2hdtXD/2h4mGBzLggvRXXU6YYqYjgvnKc3adEklXh9EBqzOU/p+9MkT+gVvQsUq1eD7BWOYgHAsy8hhPaFRYlsmHpz/+HDEp5lk4PqZSKnWLBk5aRbzgjdh1OQUqFOrKhMQjmXB2p5frtjCxIPzH6OnfgEKpXq5SKPV7jBX7sWen6+CXq+H8ydXMUHhWIZ1K2ZA8RIhTCw4L/LZV8tx073dIvI/Z8w5d9u+Rz/o3D6BCQzHMsTFRcKY6fOYOFgCnM/u3GcwA2bMTpi1EHae+ot5j7WAmcDE62dFSpXqijm3Sdly7LywHfrV3zcyweGYl60/zoKAYoHCli90HCwBbn5MBn4vxUXrKtxJ6fdZA+hx4vWrmAd/a8PBX5gX5IemrTvCh33aMAHimJdK8XFgrvFXbsgyPObrrNl7+jlYdDd5ymxyB9WCSq2BvJR5KShwFlGmUN4WSWXyu+bethwbAfvy1y9sZoLEMQ94d/f19y/QJ6tZho9/qyZzDMGuDR63xucB20/8AVKp7K4IF37sPvM384L80qJdV2jXuiETKE7+wWWKJUoECZtR0O1uSV5n+OHjPxeOj5/1NXOssMH0F2dnyUORk1j8GPdpol+QX/CXCGvWHNrxFRMwTv5IHt4dqrxdi2lzS/Mqw2OXoWRYBBhNHsJsHX28sMGdbNDr+KT1iaUGPdi/jI6KEIqW0kHjvBkXTq0SuovYbaTb29JkGV4mVwibIGcHSxZ6ePvC4o37mfdZA+hx9LrF7vAI1rgpExUDKdNsp6qBtVPzncq4JynT1gVBluG1Oj1El6/0nMi4isIMTdaA1txjQnOAHhfu8Jbqw2exdPNBMBgMNlmdzNqYOKYvhJeJFLZ1odu5IHhVlwbvoL0HJwvHa9ZrxBwvbJ734S0xS0MzZMxUCC8dyvPl88G+LfPB6OZWKF2ZLF5l+Cx8/AJwNsTq1tXiuaPX8cHTbXPPw+fE23XqQffOiUwgOa/n5p9bwc/PGyZ/8R3TrgVJbgwfGBwi9Odft91pQbPx0K+gUKpui9QazTVzPml9GfgwwsvHF5YtnMgElPNysAhUrXcqQcsO3Zk2LWheZ3jMycLa+hFRccyxwgY9Trz+j8hVb/j1q5XbmBdYAlxMqyf9+b1bFjCB5eRMUosGEF+1eqH127OTZXh3T2+o1zjxBSJjKwhmxxkca8zcxFwaV53hN5HBaNpvrmzJ3DDjy2XgZnKDX48tZ4LLeZGBfdpAeNko2Hv2GtOOhcHLcmm0rjphI7W6DZtb7bQk+o54/QAxvNuqgszHQPCJnL+/H1w7xxPMXsakMf0hsHiw8Eicbj9O3kmeMgd0BuNqkVanT+k79BPmBZamS98hEBJSAq78toEJtqODZseSeev2nWHajfNm9B8+FjRa1zkiZ2fpoJYdephliV9ewQcoAQH+fMFINrAbg3f2dft/ZtqL8+a07tzrCfH6R6QLJmpcqXrtPO3rZE4GJU8CT09POHVwCRN8RwJnY3CAin123o0xP9Vq1L1PvN4UDR/tH1g831UL8sMn0+aSgawJNq9OYYzgCOA8O0494myMtQxQ7Y3A4BAsxCRsfWNUKJV53vnD3KR8u5qY3h1GDOvlUMlm+7cuAF9fb2GevSBz2x0NlVrzgHjdEw0vkkplD61hlQo+8S0THQc1arwFty5tY8xhb2BujMFohClzv2fagmM+8K+ms7Mkg1i9iGB4g5vp93nLNjIvLAzwLpfYrhv4+PrCuh9sa7O03IIpvpj1iIlga/cVXm6Mo7Bw9XbQ6Q1/CGZHmTy9l+HgkX5hYYIPCrx9/aFRo/p2M1+PK5Vw8YZOpxNmqKzh6akj8PGEmeDm7vHjc8PLZIreDRPbvPGGCJYCy0Ikdekt/Nn/bOoIyLxtO5uL0eAa1ODgQGGlUmFmPDoipMeQKZXKBz03PFHlkqXLFNrU5OtYvGEflI0pD4FBQTBv9lib2lUPjY7VBXDBdUGvQeU8JSI67i7xeK3shneVyRUZ1j5LMGvRKsH4xQIDYW6KdRsfK4JhkaSigUHCUkdrb1t7RqVWPxRlzdBkSWcwXsFsRvrF1ghOYUaViwd3D0/o3bsznDmygjFcYYBVfLGwKdZ6xPJ3WBHMUuuFObnjh+3HQK1xufmC2VFevv7LPxzxKfMGawaXD7bq1AuMbu4QFRMN06aMgktnCzY3B3feWDA7WajPjlmDWMXXGtNjHZWnA1bPDbTfRRKJPOntOvUf02+wBbC7MGXeYmEtJS4mDixeHNq1bw2Lv50BqX/vYkyaH9Ku7BR2y8MNxEJCQ3BRAVSrWVcoPsTrs1sf9RNaZEgksl6031HFXPWGQn/iml+wUsI3P+6AnoNGQlx8NWFBgoenF1SpVg3ad0iCCZ8Ohx9XzIHNa+fCuVOrhTnxu1ef/lLgf/HfyFZyfP3KFJg84SNhO/e3qlcFL29vkMlkwsp83C0Pi9Ba29pNzot4+/rfI94uS5tdELk73sJuAv0mW2f17pPC8jPclge7HGjYMtHlntdUkcnkT+utEDNn/QyPYwkKfD2mT0+dv0SooUh/Nsd6wXWscoUSk8aE3fsY+fgXW95nSDLzRg7HFsH+u8nDawvt8+cSS6X1o8rFZ9Bv5HBskeq166WLJZJ2tM+zS4Xz8Vi0hn4zh2NL4NhKpVbjZsTetMlfEOnkn/x05lfMB3A4tsTcpRswYexP2t+M3Dw9e71dp77V5dVwOHmhaVKnTK1O9wnt75ykVyiVGdZY8pjDyQ34dFurM2A6QQna3DnKN6DYCVx2R38Qh2MLYHfGVad/fXcmSyZPz87x1Wvxbg3HJklo1eGxRqsdTfv6VVIpVap0nLinP4zDsWawDrxKrcHZmQDa1K9UseCQtV37D2U+kMOxZjBD1WjyOEr7+bVSKpXR7p7eGTy9lWNLRMZWeCAWi4X6M3mWycP78mdfr2A+lMOxRn7ccwpzZ3B1k4z2cq5UNLB4/wpV3i6UMnwcTl5p0b57psFomkn7OC+SaV119621BDKHkwXuU6ZUqXDu3Zc2cZ4UVDJs+nuNEpkv4HCsCUzhNrqZ1tH+fRPpVCr1Iz5FybFWcMWb0c0dS+nF0OZ9IwWHhC9r2qYz80UcjjWAVSF0RrcTtG/zI5Na45LBa5ZzrA28u3t4+eDdvQpt2nypZFjEtw2bt2G+kMMpTHBVk97odoz2qzmkJ3f5R7g+lP5SDqcwwNqcJg8vvLvH02Y1i0JKRXxRo+4HzBdzOIXBwBHjQW8wHqB9ak4pyJ+Pe3OXrGe+nMMpSHA/A9LjwHn3UrRJzarQUmV7BIeWzuQ5NpzCpFnbLhk6nWEh7U+LyDeg2J9Dx05nToLDKQiwXqRcocQCS260Ny2iwJIlK7jqDY+3HDvPnAyHY2miysU/1Gg0L9R7t7jCIiKX1nyvIXMyHI4lSZ4yG+uHnhO9rJqYBaVwc/dMwyKm9ElxOJZg2/GLoHHR4jRkFG3GAlGpiMj3TR5embtOX2ZOjsMxN7XrN07XaHWzaB8WqMLCIzfXbpDAnByHY04mpHwDarXmKrGcivZgQUvh4eWbmjxlDnOSHI452HT4t6yuTDnafIWi8PDISlqdPhOXWNEny+HkB6z3H1uxygOVRjOW9l2hKiI6bkbpyJgnB8/dYE6aw3lT+g0bk6lxcTlNLOZMe66wVSQ4tNSZhFYdmJPmcN6E+cs3gUKpTBPltcZMQUmn02ndPb3TMCGfPnkOJy9sPnoOdAbjfbFY/C7tM6tSeFS5OK2r7vGitbuYi+BwcgPWdo+Iir2nUmnG0f6ySsVVrNqb3OkzNxz8hbkYDud1NExsk0767buIlZxob1mtysZWmFM8pNQTvpsIJy/0Gzb2sUqjuUAs5EJ7yuoVViZye4Wq7/CtHTm5AtNUyCD1FrGOP+0lW5E4qETo7/UTWgjzqfQFcjhZfL1qO5odU35jaRPZmlT+xYKuNE3qxFwkh4NgZTuVWoP7qdahzWOT8vPz0/n6F73Rpmtf5mI5js3qXT+B1lV3TywWN6N9Y9NyDww0efr6p3bpO4S5aI5jsm7fGTAYTXedJJJOtF/sQkFB4T5oen6n5+CdnZj9nkwm6037xK6Ed3rs3mDpPj6QdUxWbDsKrnrDPXJn70z7wy6FfXocyOLsDZZKoxuEY78s3rAPU33vkj57Eu0Le5cKpyxxnp4/nHIMUr5dnTX12Jg2g6NIjA+n8IksT0Owb0ZNnv1YJlemkphXpk3gcMI0BFwb++263UxDcWwbHKd17DXwoVyhxOV5IXTsHVaYcIZZljy12H7Armp8tRppSpX6OAmxBx1zh1doRHQs5tM3btleqAxLNyDHdsDqYJ7efnfkcuV8ElopHWuuZ8JFJLhyqnTZ6Cdr9p5mGpJj/Yyf9XUmbh8pFos70vHlyllFcI0sLgzn1RBsh32/XIO6DZulEbNfFplrvyVHElZDwBIgWPeGF3uybr5btwc3J0iVyxXfkdBp6Fhy5V4KLPaEszi8rJ/1gWOtDj0G3JfK5HdIrJrTweN6Q2FZP6PJIw0LuPKqxdbBwtXbwcvH7zYZmG4gIfKmY8aVfynCIiKXueoNmcPGzQC+KUPhgN3LhFYd0qRS+U0SE/tK67VGYX163JShRFj4E779TsGBN5hhn87IUGk0d6Vy+ZckFEY6NlwWFG6/g3tO4UZrfHdByzJv2UbwKxp4U6FQHhEVVrlqLkEK3F0Qt9TEfWT55snmBesLlYkpd0MuV1whbd2CbnyuwpMeN09WqTUZmGu/8dCvTPA4uWfJpgNQofLbN0g//QZp264i/rTUamUqGRqxXKVWZ7zXKFEIHB1MzsuZ8/1aKBtb/l+pVIblMgYQFHQDc1mndEElw6ZjXfEKVd958tlXy/kKq5eAFZ/Hzpj/2C+g2A2ZTI5FkDoQZHSDctmGpP5FA/uZPLwvmzy8MroNGMa7O89YueM4NGvT+Q7mvZA++m7SVg0IRegG5LJRKZXK6GLBIWuUKtWj+Oq1MkdP/QL2nr3GGMGe2f7TnzB03PSMEmHh/0gk0ltOTk7jSdME0W3FZV9SGk2mzj7+RU8olMqMt+vUzxz3+Zew5+erjEHsgZ2n/oKRk1IeR0SVQ5PfJ/3zFaQNGor4QNQhpXPz9Ozp6eN3SiZXZETFVczoNWgULNtyiDGOLYGrxzr3HfwgMDjkurOz5AHpm68j15oosoJNwbisR0qxTFbPx7/YChet6y2tTp9evXa9xwM+HifMR1trUVis/IB5LX0+Gp0eW7HKdVwoTfrll0h3ZRq5phoEOX2hXFw5qZhEIk/y8vVfrjMY/5bK5BnBYeH3G7ds/+R/oybCghWbhe4CbUBLsuPkJeGp58CRE568+0HTG35Fg26QO3i6QqX6VSwWfy56mtviR18IF9ebyJVQWSZT9PHw9lmqM7qdI/3hdHJHTfcPLJ5WqXrt+y079oQ+Q5IB1+biVCiaE1duZUEvXcR/Zz8+d+kG4X34fvycJq06psVWrPqvt6//DfIL94CY+75SpT4pkUhSyLl0J1QU2WItdS6bloEQLXpab+VDvdFtjt7gtlxvMB4i//+sSq2+jqg1GnxqCTTk2L94XKFUXXNx1Z0ir9vtotUtJscmip4+/Gn07PPxe7jyof8DS23f238EOUEAAAAASUVORK5CYII="},626:function(t,s,a){t.exports=a.p+"assets/img/relation-requires.1be62180.png"},627:function(t,s){t.exports="data:image/png;base64,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"},628:function(t,s){t.exports="data:image/png;base64,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"},629:function(t,s,a){t.exports=a.p+"assets/img/relation-desires.341aa591.png"},630:function(t,s){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADDCAYAAABtec/IAAAkJElEQVR4Xu2dB3hUxdfGN9vL3bubQiihhUBon/SiFKmGHhAC0gWkFxFCEYjSg4YapEXpiHQRpZeEFqpAEAyoIKIIgkiVgJQ935wL8oc7GFrK7ux5n+f3SLzZ7O7c886dekajIaWltIzXGX0YsxkJFov5hMNhP+fn57gh2213JMl6D9FqtcCuPxG8brNZ8PfuyLLtb1mWzvv4+Jxg17Yz5jIGMsIYsibz5cMIZlRjdGAMZd9tpl22r7LZbfuskvWk1Wa9YJNsf7L/f0fzhO+L4HUFu+2Uw+k4wF6/1mg2fs6ujWR0YtRiFGJYNSSSG6geI0an0+1g5r7EzH2X/Qx2yQqFCwa76teu7Orfuy18NLwXzJ0xDFYvmwQJa+Lg1NGvH/LbsbUA1759yNkf1z92HX9/3ZeTlddPGNMX+vRsBfVqV3Lh33fIkgvfz2Ix3TObTX+yf+9lTGe0YBgf+ZxpqcKMxowRZrN5LTP2GQ1+BqslJTgk76UqNSpfbt/t7Vv9PugDH30yCuIWToUFK2dD/IEND9mWtBl+uHDkIYlHEx67vuCrOTBryQzl9UNGDYROPTvcfaNujauhRUIvO3wd1/H92HtfYhUEVoYTNPcrh3IM8/8+JomUtgpkROr1unh/P8c1o9EAzPBQ6bUSrve6t4R5ccPh4I6FcP3c9scMnd78c3E3HN61CBbPiVYqh8oVS93z83W49DodmIyGa+wz72ZEM0Ie/zrPJBujOiPKYrEk6A36FGb4lBJlil1s07HVzY+njIaVW5bCoVN7HzN0epN87jCs3rESJs+eAD0iu95+vXqly1lzZL3MWhd3rVbz9+zzxjJaae63SkikF1YLg0G/hRk+RafTQoGQ3K5uHSNg0exoOJ28mjOjO/HHiY2w8otx0KNzM1fRwiH3WCsFWKWVwr5TIuM9hqT6rv+qJGMwM/xebK7nzJ3zUkTrJtcmxMVAwsGNnBndiW9P7IZZS+OgV//ut0qXK3XBaDTeNJlM2EKJYzRl+D7+VUmkx4VNyMFOh3SaPUlcAf5OaNc6HJYviIFrZzP2yZ7W3Di/E9av/AQ6tW/syp4t4B5WaFqtz2nN/adlU4PBMJcZ5i+HU74e3qTuFXy6Hvx5D2cyT+LYH4dh6fqF0Ktf95SCRUPPs+9822A0YIuoLyPvozee5L3SMyIdDvspi9kE+fPlco2M6gZH9izhTCQSvyavgTHDekJogTyArYN8BYJd7w/vD0fOHOCMJApJp/dD7Mzxd6uGVTnHKoKbrEvzHbv3UYzcqpggeYHKWy3mRMlmceXNkwOGDuoMxw+s4IziDZz7aQNMmTAIypR5BXz9nNCmY0v4Kn4ZZyCROHrmIHy2aPq9GrWq/a7T626ySjCBxURbDc0wCC182kf7+zmvmkxGaNeqPuzeMoczhDeTvH8Z9O3dFgIDA6BoscKAA31oFrWBRAJbBtETR/ydv2DIb1qt9gaLkWmMIqrYIXmwnAajboksS/fyh+SC6RMHeXyfPr25c2kvLFsQA+XLl4AsrDLoPbAn7D62nTOPaCQc3ABNWzX+1WAwXPfx8dnEYidcc39tB8kDFSxJll0Wi9lVuWJJZT5dHejE09m/bT40i6gDkmRTugc7vtvCGUc0Dv/6LQwaOeCCn7/fWVYR/MRiqb3mfguS5AEKkiTrTovFBBGNakBS4hdcUBPPD059duwQAZLdeyoCZOq8yZez5cj2C6sITrHY6qxJv0VWpJeUH3vab0Hjh9erAkf3LuWCmHh5/lcRSNCxZwdl/l1tGhH59Itpl4Jy5TjBKoJfWay9raGugftIp9NNYU99V82q5eDQTnriZwS4VLlpRG3w8/eFYTFRkHw2iTONiLCK4LzTz4mtgUOMmupYJGWsWvs67Dfz5Q1SFrqog5RIf3ZtmQNlyxaDkNB8MG/FTM4wInL8/HcQFT3ohMFg+IPF4DpGqDowSemrIKdTPoEbb2Jj+imj1urAJDKWBbNGK9OHjZqFw94fdnCmEZHvfvsW3mrbLIl1C66ymBzGMKnilJQOGiXZrK6mb9aECz9v4gKRyDwu/5YAHdo1VroFuIZAbRhR2bhnzeWcuYOOsNj8kVFDHbCktFEhp0M+nzXQH9Ysj+WCj3Aftm+YCaGhwVClZmVI/H4rZxhRGT72g+91et0FFqufav57wxXpBTTYZrW4ur4TkeFbbokX49afu6BX95bgH+AH0+dP5swiKvt+TLwRWij/fhazJxkV1YFMej7JDof9mK/TTk99D2XjqmmQPXsg6ytHKMtu1YYRlSGjBx3QarWXWAx/xDCoA5v0dIXJsnTnjeqvKvvb1YFFeA5/nY6H8PrVoFCRUNi4dw1nFlHZemjjBb8AP5wuxDwMOdUBTvoP6fX6aIvFDGNH9eaCifBcPhrRW9lx6E1dgmPnDt+rWafaVhbWOGVI6waeIr0s2/b7+cpKPjx1ABGeTzy7rzhd2K1PZyVph9owohIzJXqfj4/PRc39HASkJyi70ylfLVW8EJw5/niyTEIs8P6WKlUUajcIUzbeqM0iKqz7c9psNh9nsb5QQ2sGHlNp1t+/3TyilpLoUh0whHhgmrIG9apBidLFYFfyNs4sonLw5z1XA7MGYAbnHYwAtRG8UU1tNosrakBHLkgIsbl3ZR+826MV5M6TE9bv+oYzi6gk/5F0u2TZ4ltY7ONWY69eRhxptZhhzvShXHAQ3kPs2AEQkMVf+FRkapq/3XQj88A5RnG1MYSXVqsdbrNaKFEHoTDv0xHg5++EJesWckYRmR6RXTczO+DBLuXVHhFWBoN+kmSzwLZ1n3KBQHgvmIbM6etQThNSG0VkBo0ciElJ/2JUVVlFPJnMppmyLMGe+LlcABDEmuWTvbISiI4dgUediV0J4JMfzU9JO4jUWL08VqkE8GAPtVFE5pFKAM86FEvY58dm/96EedwNJwg1S+d/rIwJrEpYzhlFZAYO7x/P7II7CoupPeTJ6ocDflvXUp+feHbmzBimpCXfsHs1ZxSR6dq3Cw4M4uxAfrWRPFFNrVYzjfYTL8TEjyMhT95csOe4+OcSPErTlo1xivAHhp/aUJ6ksrjIh+b5iZehZ9fmUKpsCSUFl9ooIlOs1P9hd2CrxkNTkWeX7bbbH9AKP+IlwRWD9etWgboNaykJOdVGEZXks4f/8c/iv495aZ7aXO4uvcNhv4Jr+9U3kyBehL//2AElSxSG7pFdOKOIzIETuy6bTCbMNThQbTK3ld1u21eqRCHa2EOkKb8dWwtZsvjDjM+ncEYRmXWJX+PJRJ6xRkCr1Y7xdcq0pZdIF+JXzwBfP4dXZRZCRk4cvofZ6ywju9pz7qQw3NxD031EevLRiHeV9GLelGMQqVKj8jbmMcQtDyp1sqb/nfHRfbgbRhBpTaMG1fEob84kInPsXNJdXz/nYea1kWrzZbpku5SMCTzVN4og0oNLv8ZDUFA2mDJ3EmcUkdmyf+0fD8YD3Gr3YBT2+8+fpOy9RMaB4wH+/r5ec1T5v/T7sA+eO4CLhKxqI2aGClmtZhfl7Scyg8jebaFS1de8an0Aki8k+FvmvalqM2a4HLJ0AU/sUd8YgsgIcKq52CsFYdjYDziTiMzuY9uv6XRaTCRSRe3JjFR0tkB/Oq6LyFS+3b5A2T7sbV2BQSMHfsc8mKzJpKXCQXhe39oVtMmHyHz69GoNb9SpzplEdLLnyHaUeXGI2pzpLrvdeqJZ4zDuRhBEZoBpxvPkCYJP5kzkTCIyaxNXXfTx8bnCLBmi9mh6qo1dssGfpzZzN4IgMosNX01hT8SskPTLPs4oItO4ecODzJOr1CZNL2kdDiklNqYfdwMIIrNpUK8q9OjXlTOJyLAK757eoMcsQuk/IKjVaqfkyxsEdy7t5QqfIDKbn5JWguywQ8LBjZxRRGbgsEhcF4DrA3zUnk1LBeDAHza11AVPEO5C33fbQL0363AmERk8aFV2yL8wj7ZUmzbNZDKZNr9RrTxX4AThTlz9fZuybXjZ+i84o4jM1HmxZ318fE4xqxrU3k0LBVnMJhel9CY8gfFj+kKlqhU4k4hOtuxZTzKvtleb96VlNpt3hNetwhU0QbgjKecTIVu2LPDFN/M4k4jMtPmTL7BWwAlmWZ3awy+jYLPZCN/vW8oVNEG4K5+MGwjlK5blTCI6gVkDfmGebaM28QuLmT8xolFNroAJwp3BfQI5c2bzumPGYmeO/5O1Ao5r0mhGIAD7/kmJ1PcnPI/J4wZAlRqVOJOIDO6MdPrKmD6srtrMzy2tVru4coWSXMEShCeA2YQxh+Dq7Ss5o4jMgKF9sQJYr/bz80ovSda7NO9PeDLvR3aAJi0acSYRGVwOrTforzEPF1Sb+nk0Jn++XC51gRKEJ3H2x/Vgt9tg55F4zigi8+Zb4bgmYIra1M8sh8N+NS52MFegBOFptG5RH94d0IMzichs3r/Oxbrw2Ap4odRhFXDq79pZSvZBeD6Jm2ZDUK4cypJZtVFEJjgk76/My63U5n6qTCbDzrYt63MFSRCeSqFCITBz8XTOJCIzctyHV3x8fDap/f00GTHR5574uVwhEoSnMn5MJITVq8mZRGQOndoLOr3uBvN0LrXJU9OAvLlzcAVIEJ7MX6fjwWazwq7kbZxRRKZKzcrYDXhfbfL/lGS1nBw2uAtXgATh6dSvVw2GxURxJhGZuIVT7uj12kNqn/+XrGaT0XX8wAqu8AjC0/lidjSUq1CGM4nIHDlzAAxGQwrzdh612Z+kqPwhNPdPiAmuDJQkm9elEK9Y9bUzzNvvqc3OyW6znhr9YQ+u4AhCFN58MwyGjBrImURkJn027rbeoN+l9rtaWqvF7DqyZwlXaAQhCovnjvG6bcLKbIBO+w/zuK/a9I+qRYC/kyswghCJy78lgMVihgMnd3NGEZkChfP/wTzeRG36h9LpdJvatWrAFRhBiMarr5XyukNEukd2wWXB09W+fyin057y5cKxXGERhGiMHNYLmrZuwplEZJauXwhGo/G02vf/KlCv1ykZVdWFRRCigQlusuXIyplEZJLPHQaTyYTTgXnV5kdFFqDpP8JLcF3dD75+Tti0by1nFJEpUbb4ec2Tzg5g/f/4ru804QqKIESldu0q8PGU0ZxJRKZ73y64L2Cy2v+s/y9fWzQ7miskghCVUcPfhWZtIjiTiMyspXFgsVgOq/2vNxoN8GvyGq6QCEJUdmyYBfkLhnAmEZn9P+3C9QC3mefNj1YAYQ6HxBUQQYjMrT934aCYYgq1UUQmS9Ysl5nnyz1aAYyrUL44DQASXkfRVwrC56vmciYRmcrVK15knu/w0P06nW77e91bcoVDEKLTokUDiIoexJlEZLr37XKL2X78wwrAIUsX58UN5wqHIERnzOi+XrcgKHbmeLDZLNseVgCSZL1Hp/4S3sj6VdOgWKlXOJOIzNqdq8BsNv/5r//NWq0PXD9H2X8J7wPPDLBJNs4kIvP974fAx8fnnuZBuvDX7ZKVKxiC8AZwRaDZbII9x7dzRhEZh6/jOvN+IawA+hQKzUszAITXUiA0Hyxb/wVnEpEpWCT0EvN+LawAZterXZkqAMJreSOsMkz8dCxnEpGpUacargXohBXAtr69WnOFQhDeQqdOzSEy6j3OJCLzTs92mB1olIb1f46PHdWbKxSC8BaGftgL2nZuzZlEZDAnotFsnKOR7dIfc6YP5QqFILyFKbFR0KBJXc4kIhMzNRpsdts6ja9T/vvrJRO4QiEyBjy0MmFNHKScT+SuERnDks/HQaWqFTiTpMbKLUthwcrZHBt2r1YSb6h/392IWzgVZIf8rUaWpdu7Ns/mCoVIf3489CXOxwLri8GMSXQMe2YRv+4zKFq8CGeS1ChdvpRy356EXZbcfkxhybqFINmlkxqb1UKnAGUSgyLbg8lkhPz5ckGJYqHcdSJjOLJvGeTImYMzSWr8WwHgPoKPPhml0HdIb+jYswP7W9mVa4NG9Ode5y5gS8VqtfyFg4CuX77/hisUIn25e3kfBOUIhBpVy8EHAzsqAbN7yxzu94j05+ejX4N/gB9nktT4twJ40kGjO4/Eg8VqwW233DV3YeuhTZgg9LoGE4Gc+2kDVyhE+rJmeawSQDgDk7x/mfLvti3qcb9HpD+4HBib7WqTpEZqFQBSvFQxpXuHy27V19yBxO+3gt6gv6nR63TKscnqQiHSlyYNq4NWq4VT7OmDP5cpWQQsFhPdi0wAyxwTg6hNkhqpVQDfntgNslN+7nGFjGT/j4mYGeiOBmspPDBRXShE+nHhZ2x+GaDa62Ue/r8p4wYoATU+ug/3+0T6ghvhsDJWmyQ1njQGgPT/sA+EhObDATYlD7/6de5C0i/7sIXi0uCX+Ofibq5QiPRj4kd9leB5NAfDpV/jwWw2Qmj+3MoGFfVriPQD4x/vx/NM36U2C4DgugJ33mB09MzB+5+VWgAZzytF84Nks3Ll/laTMOWmbP56GvcaIv3A+/CiLYCp82IfrgGYt2ImRE8aAY2ahSt/LyhXDtj3w07ute7AwxYAjQFkLPu2zueeFmpwfED9OiL9SOsxAKR7ZBfles/+3bhr7gBWTEp2YJoFyFi6dYxQAgMPYRk2qDNH9mwBYDDolZFp9WuJ9AHjH/vsapOkxtMqgBUbFyvXq9euxl1zBxKPJoDBaLhJ6wAyEFzu63TYIUf2LMo6APV1ZHC/DkrgjBjSlbtGpA+nWPz7+ftyJkmNp1UAk2dPUK43bt6Qu+YOJBzcgK2ea7QSMANZOGuUEhSRqWy//ilppTJ/nDtntv+sJIi0JZnFf/agbJxJUiO1CmDR6vlK/x+vz1oyg7vuDqzf9Q2uBLxIewEyEFz1h0HxtASsr1e8H1yrFtMmrYxgx+Y5UKhoQc4kqfFvBYAVB5odwdOG/x3HQdp1bcu9zl1YvPZzsMv2k7QbMIO4cmarMu/fIqIWd03NlwvHQtXKpZUxAfU1Iu1ZsXgivFq5PGeS1GjTsSWUq1iWIzyiPnR+9x23TzE2fcEnuBtwH+UDILyeuGnDoE7DWpxJRGbM5FGYD+AbyghEeD2jRvSBFu3e4kwiMgOGRYLJbPqMdVUoJyDh3bz77tvQo19XziQi06H723eY94djBUBZgQmvpmGjMGUFn9okIlMtrMpVzYMDQulcAMKrKVGyKMz/chZnEpHJVyDfFeb9algB0MlAhFeDi4C2fLueM4nIWG3WFOb9YKwA6GxAwmvBuNfpdZB8NokziagcOrUXNyvh2YB6rADodGDCaznA4j533lycSUTmq/hl2AI4p5gf5ZCli4/uTScIb+GzGSOgZp3qnElE5uMpo0GSpY0PKwCdTrf9ve4tucIhCNHp2bON100BtuvS5jbrAox4WAEwjatQvjjNBBBeR9Vqr8HkWeM5k4hMqbIlcQYg4tEKIMzhkLjCIQjRyRIYoOTIV5tEZOwOCWcAQh+tAPSYGOTX5DVcARGEqJxm8Y7pwI/98ey5AD0dPA/AYDBgBaB9tALQOJ3ytUWzo7lCIghRmT8rGipVq8iZRGQmxMVgyvLEx8yP0ul08ZimSl1IBCEqnTo1h94De3ImEZnm7Zrd0mq1H6r9j4osEJKLBgIJr+H/ihVSMvmqTSIyefPlwT0A1dXmRwXq9Tq4+vs2rqAIQjQwzjETMKbHVptEVA6c3I2rHnEXoE1tfkVOpz0Fs9GoC4sgRGPJ5+OgzKulOJOIzJS5kzAL0CG17x9Kp9NtateqAVdYBCEabds2hj6D3+VMIjKNmze8yfr/Q9S+f1QtAvydXGERhGjkCMoGK7cs5UwiMr5+vjeYx0uqTf+otFaL2XVkzxKuwAhCFA7vWQpZsmaB4+e/40wiKqu3r8TTpy8zj/uoTf+Y7DbrqdEf9uAKjSBEYdiHvaBJyzc5k4gM6+7cs9ksC9V+f5Ki8tN0ICEwRV8pCDMXT+dMIjJ58+W5xrxdW232J8lqNhnptCBCSPAUIKevE77//RBnElHBU4BMJtPfzNsGtdmfKMlqOTlscBeu8AjC0xkyuBs0axPBmURkeg3oftdms81X+zw1DcibOwdXeATh6YQWzAdzln/GmURkgnLluM48XVNt8tRktFrNrj3xc7kCJAhPZdeWecr5fcnnvGf339L1C/EQ0L+Yp3Vqk6cqk8mws23L+lwhEoSn0rpNI6/L/tOoWfgto9E4Su3vZ1EFs9kI185StmDC88E4luwSJBzcwJlEVA7+vAcH//5hXs6jNvczyeGwX42LHcwVJkF4GlMmRUHl6pU4k4jMiHFD8QjwHWpfP4/G5M9HawIIz6dI0VCYOi+WM4nI5AnOjVN/jdSmfh7pJcl6d8NXU7gCJQhPYe3KqbgQxqtSf81aGoe5/3/XqFN/Pa+0Wu3iyhVKcoVKEJ5C1aqvwrCYKM4kIlPm1dI3mHe7q/38IgqwmE2upEQ6OYjwPA4mLlLO/ks6vZ8ziaisSliOg3+49NeqNvMLyWw2JkY0qskVLkG4OxERdbxu6q92g7CbzLOj1T5+GQXjlOD3+5ZyBUwQ7soRFq8Opwz7f0zkTCIqa3Z8hU9/TPvtqzbxS8lsNu8Ir1uFK2SCcFfCw2tCr/7dOZOITPXaVVOYV19o4c/TFIRjAXSKMOEJ4Km/vn5OJRGm2iSigqf+sqc/rvuX1eZNE7E/vvmNauW5wiYIdyMsrDJERr3HmURkKrz+WorRaIxS+zYtFWCzWly0LoBwZ3DeP3tQNq8a+Vfm/a2Wi5q0Gvn/L2m12in58gbBnUt7uYIniMwG4xK3/I6f8TFnElFJPpsEOXMH3dDpdC3Vfk0PaR0OKSU2ph9X+ASR2UyI6Q+lypX0qoSfQ6Lfd0l2KUnztISfaag2dskGf57azN0AgsgsMB79/J2wYuNiziSisuf4drBJtlvMk2XUJk1X2e3WE80ah3E3gSAyi2ZN60KLt5txJhGZOg1r37LbbXPV/swIBeGA4NoVk7kbQRAZzTfLJ0PW7IFeNe332aLpOPB3SZNe037PoOhsgf5w/RwlDSEyD4y/nLmyw7T5kzmTiMqhU3shS2DATebBhmpTZqgcsnSh6zsR3E0hiIyic6e3oHZ4GGcSkWnRrtltu2xfo/ZjZqgQJhBdszyWuzEEkd58s2wyBGbNAruPbedMIiqffjENm/5XmPeyqM2YWYrydcpw/uRG7gYRRHqB8caawV51ys+u5G0gO+zY9H+mU34yTLJdSn6j+qvcTSKI9AKX+7bt3JozichUrPLaTbvdHqf2nzvIabfb7oyP7sPdKIJIa2Ki+0Jo4QLw3W/fciYRlfeH979ns9t+Zl4zq83nLgqzWsywde2n3A0jiLQinsUX7vTbsHs1ZxJRWfDVHDCbTTeYx0LVpnMrabXaMTgecOb4Wu7GEcTLgnEVyPr93jTlt/3wFkxsckun071Uht8ME+sK7CtVohD8c3E3dwMJ4kXBeCpbthh069OZM4moHD1zEIoWK3KTNf3Hqn3mztI7HPYrzSNqcTeRIF6U5m/VhddrVPKq9N713qzzj122b9e8bHrvTFB22W67/cGAjtyNJIjnZcjATlCoaEHluCu1SUSlR2TXe5JdOsG8ZFeby1NU1mazuOZMH8rdUIJ4VmZNH6ac6rstaTNnElEZM3kUHuyB6/xzqk3laWpqtZph3Ze0aYh4ftayuMERf8x1rzaJqODCJovFjJl9i6vN5KnqZ7NaaHqQeC5wus/p64C5K2ZyJhEVnO5j5seVfjXUJvJoabXa4ZLNAnsT5nE3miDU7Imfr5g/buFUziSismz9F2CxWnC6r77aP0LIYNBPkmUJKLU4kRoHWXz4+/tC7MzxnElEBVN6S3bpltGoe0vtG6FkMptmYiWwJ34ud+MJYveWueAf4AsxU6M5k4jK0vULFfMbzIZ2ar8IKWwJYHdg2zoaEyD+x9Z19/v83vTk/3zVXKXZL/yTXy0cE8CBQZodIJC1X37idX1+ZbRf5D7/MygSNw/ROgHvZta0oYr553nRaD/O85vNyiGe1dWm8DY1xcVCUbRi0CsZzO57tuyBXjXP371vl3uW+8k8hZnnf1mVlmXpNu4doA1E3gHe5xZv1YXCRQsqu93UJhER3NhTr3EdzOV3ksV8kNoE3q7sTqd8tVTxQrSVWHDw/pYt84qyscdb1vZjJVfklcI3Zae8Q+PBa/vTW3pZtu3385UhYU0cFziE5xPP7ivu58ctvd6yq2/BytnAjI8HeIzTeOCuvgyXXq+PtljMMHZUby6ACM8lZtR7ymDfdC9K5jFgeKQLB/t0Ol3m5u/3QIXJsnQHE43+cYKyDXsyeP9qhVWCQkVCvSaNV+L3WzGB5y3W38ccfu6dxsuNJTsc9mO+TjvQuQOeyeplkyFLFn8le++RMwc4o4gI5u2XHfZbLHY/ZTFsUgc16fk1GM8hxBOI6BgyzwDvU9dOzZRDO2YtmcGZRETwuK4W7ZvdsdqsV1nM1lIHMenlVMjpkM9nDfSn1oCbs5rdn5w5s0HdhrW85sQefOoHBAbckh0yHtflNif2iKhRks3qavpmTbjw8yYu+IjMA+9Hs4jaSvYebxnowwquTnitfx5k7wlXByspfRTkdMon7JIVYmP6wZ1Le7lgJDIOLP+JMf3B188BLdq95RVHdCefTYIho9/HtF23ZKc8T5OJR3R7s1r7Ouw38+UNgvUrP+ECk0h/1rFyDw0NhtLlSsKXm5ZwRhERHNPIlSfnTYfT8R2LwdLqoCRlsHQ63RRJsrpqVi1HyUYyCCznsDcqQo6c2WH8jI85k4gIJu2oUOW1WzbJ9heLuZbqOCRlrvwsFvMWi8UE4fWqwNG9S7mgJV4eLNdG4TWURJ2RUe/B4V/FP5tv9Y6VUKN2tVt4NJfZbP6AxZpFHXwk91EQaw3sxIogolENSEqkFkFagOXYtEktZSXfuwN6eEU/H3co1m4Q9g+u5LNK1lEa6ud7lIIlybKLtQpclSuWpMQjLwiWW7Wq5ZUcfT37d4P9PyZyRhENTNRR5tXSKcz41602azSLJV91cJE8R06DUbdElqV7+UNywfSJg+DaWVpMlBpYPtNYORUunB+CQ/LAsJgo4Y/hxl2Jw8Z+AHmCc6dIdums1qDtoXHjY7hJzy89I9rfz3nVZDJCu1b1YfeWOVzwezNYHu3bNAKbzQpVa1ZWTuAVfcfeknULoXHzRreNRuNtXz/nThYjuGmHduwJrvJWizlRsllcefPkgKGDOsPxAys4Q3gD+L3x+xcMDYbsObIqzfythzZxRhGJ9bu+we/pCsoVdAMX8Fit5tEsJnKpg4QkvrBVEOlw2E9ZzCbIny+Xa2RUNziyZwlnFJHA7/fBwE6QK2c2wNZQkVcKu0ZPGiH003719pXQ+/2e2MT/22Qy/S3J0kLN/Xx89LQnKcL+3mCnQzrNngiuAH8ntGsdDssXxHj8mAF+fvweLZvWdjmddhczvctg0OGps1GMBgaDYS5rAv/lcMrXw5vUvTJ59gSPz9SDnx+/R5MWb7KmvW+K1Wq5IsvSIs39TTpY8ZNIqaqFwaDf4u/nSNHptFAgJLerW8cIWDQ7Gk4nr+ZM5k7g58PP+c7bjVzBeYNcOq0WWJfnb/adNuL3Un/RR1SSMdhisezVarV3cubOeSmidZNrE+JiIOHgRs5k7gR+PvycLdu/dTs4JM91ds/uOn0dSXqjHuft8XuRSC+sQEakXq+LZxXCNaPRALLdBpVeK+F6r3tLmBc3HA7uWJjhW5Xx/fB98f17dW0Or5Z7xSVJVmAVF9hslsvsM2/Gz/3g8z+vbJr7TeQoViEk6A36FNZfTilRptjFNh1b3fx4ymhYuWWpsgVWbcb0BN8P3xff/+0ube6WebX0NZtku2kwGm76+jl2afXaDx98bvz8JFK6qR4jRqfT7fDzc1xiFcJd9jPgBqXCBYNd9WtXdvXv3RY+Gt4L5s4YBquXTVLyHJ46+vVDfjv2ePJT/PnR6/j7+Dp8Pf6dPj1bQZ03KrpC8+dx4clK+H7sv3fZ0/0C+/d2/DwPPld6qTCjMWOE2WxeyyqEM+zfeLhFSnBI3ktValS+3L7b27f6fdAHPvpklHLIB+bDiz+w4SHbkjY/Zmj8+dHr+Pv4Onw9/p2OPdq7qoVVuR4Smu8qez88NReP0Trr9HNsYa2UkQ8+D34uEinThQNKrzP6MGYzEiwW8wmHw36OVRI3WCVxhz2h7yEseBUDq8H/r/yOzXqPVSZ3ZNn2N77ex8fnB/x7D/4u/n18H3cYwPJhBDOqMTowhrLvMNMu21fZ7LZ9Vsl6khn3AntK/4ndCs2Tv/MdvK5gt/3Mmu4H8fVmqxl32Q198Hfx7+P74PuR0kj/D0tMOZTnhqEcAAAAAElFTkSuQmCC"},694:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"relation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[t._v("#")]),t._v(" Relation")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("Relation")]),t._v(" objects describe the relation between two competencies within a Competency Framework, allowing:")]),t._v(" "),s("ul",[s("li",[t._v("Competencies to be organized into hierarchies")]),t._v(" "),s("li",[t._v("Prerequisite relationships to be established")]),t._v(" "),s("li",[t._v("Creation of equivalences across frameworks.")])])]),t._v(" "),s("p",[t._v("Relations in CASS exist outside of (but can be referenced within) competencies and frameworks, so that frameworks may reuse competencies and rearrange them in a different structure.")]),t._v(" "),s("p",[t._v("Relations can, therefore, represent a relationship between two competencies within the same framework or two competencies in separate frameworks. Relations can also be considered independent of a framework.")]),t._v(" "),s("h2",{attrs:{id:"relation-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation-types"}},[t._v("#")]),t._v(" Relation Types")]),t._v(" "),s("p",[t._v("Relations are directional and labeled. Let's look at the different types.")]),t._v(" "),s("h3",{attrs:{id:"narrows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#narrows"}},[t._v("#")]),t._v(" Narrows")]),t._v(" "),s("p",[s("img",{attrs:{src:a(625),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Narrows B states that the entirety of the task in A is contained within B and that A helps describe B. This relation can also be stated as “A is a subcompetency of B”. With set theory we could say that “A is a subset of B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to think of an indented list:")]),t._v(" "),s("ul",[s("li",[t._v("B\n"),s("ul",[s("li",[t._v("A")])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition narrows Basic Arithmetic")])]),t._v(" "),s("h3",{attrs:{id:"requires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(626),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Requires B describes a relation where it is necessary to hold the competency B before the competency A may be obtained. As opposed to a Narrows relation, A and B are logically distinct. B may be involved in the steps to complete A, but it does not help describe A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to consider a sequential checklist where all previous items must be completed before the current item.")]),t._v(" "),s("ol",[s("li",[t._v("B")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication requires Addition")])]),t._v(" "),s("h3",{attrs:{id:"equivalent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#equivalent"}},[t._v("#")]),t._v(" Equivalent")]),t._v(" "),s("p",[s("img",{attrs:{src:a(627),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Equivalent to B describes a relation where two competencies represent the same capability in all aspects. The wording may be somewhat different, but there should be no distinction between these two competencies.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to append additional names.")]),t._v(" "),s("ul",[s("li",[t._v("A ("),s("em",[t._v("also known as B")]),t._v(")")]),t._v(" "),s("li",[t._v("A ("),s("em",[t._v("aka B")]),t._v(")")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition is equivalent to Sums")])]),t._v(" "),s("h3",{attrs:{id:"related"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#related"}},[t._v("#")]),t._v(" Related")]),t._v(" "),s("p",[s("img",{attrs:{src:a(628),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Related to B describes a relation where two competencies involve some degree of overlap such that interest in A may be followed by interest in B or visa versa. With set theory we could say that “there exists an intersection between A and B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it may be useful to annote with “Did you mean” or “Related: ”, or augment them in search results.")]),t._v(" "),s("ul",[s("li",[t._v("A\n"),s("ul",[s("li",[s("em",[t._v("Related:")]),t._v(" "),s("ul",[s("li",[t._v("B")])])])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Division is related to Grouping")])]),t._v(" "),s("h3",{attrs:{id:"desires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#desires"}},[t._v("#")]),t._v(" Desires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(629),alt:"Image"}})]),t._v(" "),s("p",[t._v("A desires B describes a relation where B is not essential to the acquisition of A, but it may be desired, lightly assumed, or implied by the declaration of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similarly to Requires, but ensure the individual knows it is optional.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("optional")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication desires Subtraction. (for some strategies)")])]),t._v(" "),s("h3",{attrs:{id:"is-enabled-by"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-by"}},[t._v("#")]),t._v(" Is Enabled By")]),t._v(" "),s("p",[s("img",{attrs:{src:a(630),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Enabled by B describes a relation where the acquisition of B speeds or makes more probable the acquisition of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similar to Requires, but as a recommended option.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("recommended")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: English Speaking enables English Writing")])]),t._v(" "),s("h2",{attrs:{id:"computational-complexity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#computational-complexity"}},[t._v("#")]),t._v(" Computational Complexity")]),t._v(" "),s("p",[t._v("There are several methods to consider when determining competence. Consider:")]),t._v(" "),s("ul",[s("li",[t._v("Basic Arithmetic\n"),s("ul",[s("li",[t._v("Addition")]),t._v(" "),s("li",[t._v("Subtraction")]),t._v(" "),s("li",[t._v("Multiplication")]),t._v(" "),s("li",[t._v("Division")])])])]),t._v(" "),s("p",[t._v("Addition, Subtraction, Multiplication, and Division all have a narrows relationship with Basic Arithmetic.")]),t._v(" "),s("p",[t._v("If a person holds all four sub-competencies of Basic Arithmetic, do they also implicitly hold Basic Arithmetic?")]),t._v(" "),s("p",[t._v("An optimistic strategy assumes that it is aware of all information about a particular competency. It would conclude that the person does hold Basic Arithmetic because Basic Arithmetic is only composed of its sub-competencies: "),s("em",[t._v("Addition, Subtraction, Multiplication,")]),t._v(" and "),s("em",[t._v("Division")]),t._v(".")]),t._v(" "),s("p",[t._v("The pessimistic route presumes there may be additional unidentified information about a competency (such as undefined competencies) and could make no determination about Basic Arithmetic based on the holding of its four sub-competencies. (Note: However, a pessimistic process may conclude that that the person does NOT hold Basic Arithmetic if there is an explicit assertion that the person does not hold one of the subcompetencies.)")]),t._v(" "),s("p",[t._v("It is important to understand the possibilities and potential issues and to have a clearly defined goal as these relations are subject to interpretation. See "),s("RouterLink",{attrs:{to:"/dev/fundamentals/assertion-processing/"}},[t._v("Assertion Processing")]),t._v(" for further information.")],1),t._v(" "),s("h2",{attrs:{id:"creation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAlignment")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("target "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relationType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Relation"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("NARROWS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h3",{attrs:{id:"adding-a-relation-to-a-framework"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-relation-to-a-framework"}},[t._v("#")]),t._v(" Adding a Relation to a Framework")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRelation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h2",{attrs:{id:"save"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that validates expected fields before saving.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that deletes the alignment. This does NOT DELETE any objects referenced by the alignment.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for retrieving an Alignment, automatically decrypting it, automatically encrypting it on save, and casting it to the EcAlignment object. The blocking version locks the thread while this occurs.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for searching for Alignments.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for alignments")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 alignments that originate from a competency.")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token template-string"}},[s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('source:"')]),s("span",{pre:!0,attrs:{class:"token interpolation"}},[s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("${")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("}")])]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"')]),s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{625:function(t,s){t.exports="data:image/png;base64,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"},626:function(t,s,a){t.exports=a.p+"assets/img/relation-requires.1be62180.png"},627:function(t,s){t.exports="data:image/png;base64,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"},628:function(t,s){t.exports="data:image/png;base64,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"},629:function(t,s,a){t.exports=a.p+"assets/img/relation-desires.341aa591.png"},630:function(t,s){t.exports="data:image/png;base64,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"},693:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"relation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[t._v("#")]),t._v(" Relation")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("Relation")]),t._v(" objects describe the relation between two competencies within a Competency Framework, allowing:")]),t._v(" "),s("ul",[s("li",[t._v("Competencies to be organized into hierarchies")]),t._v(" "),s("li",[t._v("Prerequisite relationships to be established")]),t._v(" "),s("li",[t._v("Creation of equivalences across frameworks.")])])]),t._v(" "),s("p",[t._v("Relations in CASS exist outside of (but can be referenced within) competencies and frameworks, so that frameworks may reuse competencies and rearrange them in a different structure.")]),t._v(" "),s("p",[t._v("Relations can, therefore, represent a relationship between two competencies within the same framework or two competencies in separate frameworks. Relations can also be considered independent of a framework.")]),t._v(" "),s("h2",{attrs:{id:"relation-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation-types"}},[t._v("#")]),t._v(" Relation Types")]),t._v(" "),s("p",[t._v("Relations are directional and labeled. Let's look at the different types.")]),t._v(" "),s("h3",{attrs:{id:"narrows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#narrows"}},[t._v("#")]),t._v(" Narrows")]),t._v(" "),s("p",[s("img",{attrs:{src:a(625),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Narrows B states that the entirety of the task in A is contained within B and that A helps describe B. This relation can also be stated as “A is a subcompetency of B”. With set theory we could say that “A is a subset of B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to think of an indented list:")]),t._v(" "),s("ul",[s("li",[t._v("B\n"),s("ul",[s("li",[t._v("A")])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition narrows Basic Arithmetic")])]),t._v(" "),s("h3",{attrs:{id:"requires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(626),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Requires B describes a relation where it is necessary to hold the competency B before the competency A may be obtained. As opposed to a Narrows relation, A and B are logically distinct. B may be involved in the steps to complete A, but it does not help describe A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to consider a sequential checklist where all previous items must be completed before the current item.")]),t._v(" "),s("ol",[s("li",[t._v("B")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication requires Addition")])]),t._v(" "),s("h3",{attrs:{id:"equivalent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#equivalent"}},[t._v("#")]),t._v(" Equivalent")]),t._v(" "),s("p",[s("img",{attrs:{src:a(627),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Equivalent to B describes a relation where two competencies represent the same capability in all aspects. The wording may be somewhat different, but there should be no distinction between these two competencies.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to append additional names.")]),t._v(" "),s("ul",[s("li",[t._v("A ("),s("em",[t._v("also known as B")]),t._v(")")]),t._v(" "),s("li",[t._v("A ("),s("em",[t._v("aka B")]),t._v(")")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition is equivalent to Sums")])]),t._v(" "),s("h3",{attrs:{id:"related"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#related"}},[t._v("#")]),t._v(" Related")]),t._v(" "),s("p",[s("img",{attrs:{src:a(628),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Related to B describes a relation where two competencies involve some degree of overlap such that interest in A may be followed by interest in B or visa versa. With set theory we could say that “there exists an intersection between A and B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it may be useful to annote with “Did you mean” or “Related: ”, or augment them in search results.")]),t._v(" "),s("ul",[s("li",[t._v("A\n"),s("ul",[s("li",[s("em",[t._v("Related:")]),t._v(" "),s("ul",[s("li",[t._v("B")])])])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Division is related to Grouping")])]),t._v(" "),s("h3",{attrs:{id:"desires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#desires"}},[t._v("#")]),t._v(" Desires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(629),alt:"Image"}})]),t._v(" "),s("p",[t._v("A desires B describes a relation where B is not essential to the acquisition of A, but it may be desired, lightly assumed, or implied by the declaration of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similarly to Requires, but ensure the individual knows it is optional.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("optional")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication desires Subtraction. (for some strategies)")])]),t._v(" "),s("h3",{attrs:{id:"is-enabled-by"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-by"}},[t._v("#")]),t._v(" Is Enabled By")]),t._v(" "),s("p",[s("img",{attrs:{src:a(630),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Enabled by B describes a relation where the acquisition of B speeds or makes more probable the acquisition of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similar to Requires, but as a recommended option.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("recommended")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: English Speaking enables English Writing")])]),t._v(" "),s("h2",{attrs:{id:"computational-complexity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#computational-complexity"}},[t._v("#")]),t._v(" Computational Complexity")]),t._v(" "),s("p",[t._v("There are several methods to consider when determining competence. Consider:")]),t._v(" "),s("ul",[s("li",[t._v("Basic Arithmetic\n"),s("ul",[s("li",[t._v("Addition")]),t._v(" "),s("li",[t._v("Subtraction")]),t._v(" "),s("li",[t._v("Multiplication")]),t._v(" "),s("li",[t._v("Division")])])])]),t._v(" "),s("p",[t._v("Addition, Subtraction, Multiplication, and Division all have a narrows relationship with Basic Arithmetic.")]),t._v(" "),s("p",[t._v("If a person holds all four sub-competencies of Basic Arithmetic, do they also implicitly hold Basic Arithmetic?")]),t._v(" "),s("p",[t._v("An optimistic strategy assumes that it is aware of all information about a particular competency. It would conclude that the person does hold Basic Arithmetic because Basic Arithmetic is only composed of its sub-competencies: "),s("em",[t._v("Addition, Subtraction, Multiplication,")]),t._v(" and "),s("em",[t._v("Division")]),t._v(".")]),t._v(" "),s("p",[t._v("The pessimistic route presumes there may be additional unidentified information about a competency (such as undefined competencies) and could make no determination about Basic Arithmetic based on the holding of its four sub-competencies. (Note: However, a pessimistic process may conclude that that the person does NOT hold Basic Arithmetic if there is an explicit assertion that the person does not hold one of the subcompetencies.)")]),t._v(" "),s("p",[t._v("It is important to understand the possibilities and potential issues and to have a clearly defined goal as these relations are subject to interpretation. See "),s("RouterLink",{attrs:{to:"/dev/fundamentals/assertion-processing/"}},[t._v("Assertion Processing")]),t._v(" for further information.")],1),t._v(" "),s("h2",{attrs:{id:"creation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAlignment")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("target "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relationType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Relation"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("NARROWS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h3",{attrs:{id:"adding-a-relation-to-a-framework"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-relation-to-a-framework"}},[t._v("#")]),t._v(" Adding a Relation to a Framework")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRelation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h2",{attrs:{id:"save"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that validates expected fields before saving.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that deletes the alignment. This does NOT DELETE any objects referenced by the alignment.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for retrieving an Alignment, automatically decrypting it, automatically encrypting it on save, and casting it to the EcAlignment object. The blocking version locks the thread while this occurs.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for searching for Alignments.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for alignments")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 alignments that originate from a competency.")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token template-string"}},[s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('source:"')]),s("span",{pre:!0,attrs:{class:"token interpolation"}},[s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("${")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("}")])]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"')]),s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/27.a895691a.js.gz b/docs/assets/js/27.cb63dfc3.js.gz similarity index 99% rename from docs/assets/js/27.a895691a.js.gz rename to docs/assets/js/27.cb63dfc3.js.gz index 644c2cf5d..3e06e4815 100644 Binary files a/docs/assets/js/27.a895691a.js.gz and b/docs/assets/js/27.cb63dfc3.js.gz differ diff --git a/docs/assets/js/31.fc1b5e7b.js b/docs/assets/js/31.d2183018.js similarity index 82% rename from docs/assets/js/31.fc1b5e7b.js rename to docs/assets/js/31.d2183018.js index 2666f5258..843126780 100644 --- a/docs/assets/js/31.fc1b5e7b.js +++ b/docs/assets/js/31.d2183018.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{550:function(e,t,a){e.exports=a.p+"assets/img/user-configuration.5c0e0c9d.png"},551:function(e,t,a){e.exports=a.p+"assets/img/manage-default-owners.47c6a75a.png"},552:function(e,t,a){e.exports=a.p+"assets/img/select-default-owners.1e72e4ce.png"},553:function(e,t,a){e.exports=a.p+"assets/img/manage-default-readers.c6e7c9ba.png"},554:function(e,t,a){e.exports=a.p+"assets/img/select-default-readers.de910329.png"},659:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"managing-default-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-default-users"}},[e._v("#")]),e._v(" Managing Default Users")]),e._v(" "),t("p",[e._v("By default, the creator of a CaSS framework, competency, or other object is assigned as the sole owner of that record. By using the "),t("em",[t("strong",[e._v("user configuration")])]),e._v(" section of the configuration, other specified users and groups can be assigned as owners and readers to objects created in the framework/competency editor that use the configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(550),alt:"User configuration"}})]),e._v(" "),t("h2",{attrs:{id:"default-owners"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-owners"}},[e._v("#")]),e._v(" Default Owners")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the owner list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(551),alt:"Manage Default Owners"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default owners")])]),e._v(" dialogue window is displayed. Select the desired default owner entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Default owners can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(552),alt:"Select Default Owners"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])]),e._v(" "),t("h2",{attrs:{id:"default-readers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-readers"}},[e._v("#")]),e._v(" Default Readers")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the reader list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(553),alt:"Manage Default Readers"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default readers")])]),e._v(" dialogue window is displayed. Select the desired default reader entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Note: Default readers can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(554),alt:"Select Default Readers"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{527:function(e,t,a){e.exports=a.p+"assets/img/user-configuration.5c0e0c9d.png"},528:function(e,t,a){e.exports=a.p+"assets/img/manage-default-owners.47c6a75a.png"},529:function(e,t,a){e.exports=a.p+"assets/img/select-default-owners.1e72e4ce.png"},530:function(e,t,a){e.exports=a.p+"assets/img/manage-default-readers.c6e7c9ba.png"},531:function(e,t,a){e.exports=a.p+"assets/img/select-default-readers.de910329.png"},657:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"managing-default-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-default-users"}},[e._v("#")]),e._v(" Managing Default Users")]),e._v(" "),t("p",[e._v("By default, the creator of a CaSS framework, competency, or other object is assigned as the sole owner of that record. By using the "),t("em",[t("strong",[e._v("user configuration")])]),e._v(" section of the configuration, other specified users and groups can be assigned as owners and readers to objects created in the framework/competency editor that use the configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(527),alt:"User configuration"}})]),e._v(" "),t("h2",{attrs:{id:"default-owners"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-owners"}},[e._v("#")]),e._v(" Default Owners")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the owner list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(528),alt:"Manage Default Owners"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default owners")])]),e._v(" dialogue window is displayed. Select the desired default owner entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Default owners can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(529),alt:"Select Default Owners"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])]),e._v(" "),t("h2",{attrs:{id:"default-readers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-readers"}},[e._v("#")]),e._v(" Default Readers")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the reader list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(530),alt:"Manage Default Readers"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default readers")])]),e._v(" dialogue window is displayed. Select the desired default reader entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Note: Default readers can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(531),alt:"Select Default Readers"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/31.d2183018.js.gz b/docs/assets/js/31.d2183018.js.gz new file mode 100644 index 000000000..aa1f6ef4d Binary files /dev/null and b/docs/assets/js/31.d2183018.js.gz differ diff --git a/docs/assets/js/31.fc1b5e7b.js.gz b/docs/assets/js/31.fc1b5e7b.js.gz deleted file mode 100644 index 1f91a2383..000000000 Binary files a/docs/assets/js/31.fc1b5e7b.js.gz and /dev/null differ diff --git a/docs/assets/js/32.4a48bc75.js.gz b/docs/assets/js/32.4a48bc75.js.gz deleted file mode 100644 index 410bd125f..000000000 Binary files a/docs/assets/js/32.4a48bc75.js.gz and /dev/null differ diff --git a/docs/assets/js/32.4a48bc75.js b/docs/assets/js/32.b414de84.js similarity index 99% rename from docs/assets/js/32.4a48bc75.js rename to docs/assets/js/32.b414de84.js index 264618558..9b5994199 100644 --- a/docs/assets/js/32.4a48bc75.js +++ b/docs/assets/js/32.b414de84.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{635:function(e,t,a){e.exports=a.p+"assets/img/cass-overview-comic.5b9fa605.png"},636:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_environment.a93d588a.png"},637:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_components.aa1759ed.png"},638:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_assertion_format.0217138d.png"},639:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_roles.d78926db.png"},721:function(e,t,a){"use strict";a.r(t);var n=a(69),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("Last updated 2018-12-12")]),e._v(" "),t("h2",{attrs:{id:"welcome"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#welcome"}},[e._v("#")]),e._v(" Welcome")]),e._v(" "),t("p",[e._v("We sincerely hope your development experience with CASS will be easy and enlightening. Perhaps some of the lessons learned and tools created during its development will benefit you on other projects. -- CASS Team")]),e._v(" "),t("h2",{attrs:{id:"about-cass"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about-cass"}},[e._v("#")]),e._v(" About CaSS")]),e._v(" "),t("p",[e._v("CaSS is open-source software that enables users and other systems to define, store, manage, and access data objects called competencies that are organized into structured collections called frameworks, and to report, store, and retrieve assertions about the competencies held by an individual.")]),e._v(" "),t("p",[e._v("CaSS consists of open source code that provides two basic sets of services intended for use by applications that support competency-based approaches to education, training, and workforce development. The goal of CaSS is to enable these applications to share competencies and related information about learners and learning resources in an interoperable and secure manner. The basic services provided by CaSS are used by applications to:")]),e._v(" "),t("ul",[t("li",[e._v("Define, store, manage, and access objects called competencies that are organized into structured collections called frameworks. Competencies can represent competencies, skills, knowledge, abilities, traits, learning objectives, learning outcomes, and other similar constructs that define performance, mastery, attainment, or capabilities. Frameworks are structured collections of competencies associated with a knowledge domain, a domain of endeavor, a job, or a task with structure defined by relations among the competencies they (or other frameworks) contain. CaSS provides persistent, unique URLs that multiple applications can use to access and reference the same frameworks and competencies.")]),e._v(" "),t("li",[e._v("Store assertions about the competencies held by an individual (or team), and compile assertions and other data into profiles that describe a learner’s current state. CaSS is designed to respond to queries from other applications that, for instance, ask whether an individual X holds a competency Y (at performance level Z). Subject to authorization and adherence to privacy protection policies, CaSS will answer yes or no and might include a number indicating its confidence in the answer, a link to evidence, and an expiry date. In addition, CaSS can collect assertions and other data from multiple sources and apply relations and rules to formulate a response to a query.")])]),e._v(" "),t("h3",{attrs:{id:"intended-scope"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#intended-scope"}},[e._v("#")]),e._v(" Intended Scope")]),e._v(" "),t("p",[e._v("CaSS is intended to allow competencies and competency frameworks to be defined, published, accessed, and applied in any size jurisdiction, ranging from a single learning system to an organization, a community of practice, or the entire world. The CaSS project believes that this capability is achievable and is needed to support competency-based approaches to training, education, credentialing, and career management. In fact, there already exist services such as the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(" that do this. Sharing assertions of competency among collaborating systems is another goal. Currently, this is done by using credentials as intermediaries, and the CaSS project believes that significant value can be achieved by enabling such sharing with closed ecosystems that consist of collaborating systems deployed by a training organization, educational institution, corporation, government agency, or a similar organization. Although the CaSS project has looked at broader use cases, the current version of CaSS therefore assumes that it is operating within such an ecosystem.")]),e._v(" "),t("h3",{attrs:{id:"services-not-end-user-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#services-not-end-user-applications"}},[e._v("#")]),e._v(" Services, not End-user Applications")]),e._v(" "),t("p",[e._v("Although the CaSS project is providing reference implementations of end-user applications that use the CaSS services, the CaSS services themselves are not end-user applications. They enable learning management systems, HR systems, talent management systems, student information systems, MOOCS, intelligent tutoring systems, learning resource repositories and registries, competency management systems, and other learning- and training-related applications to exchange data through software, but end-users do not interact directly with the services.")]),e._v(" "),t("h3",{attrs:{id:"infrastructure-and-interoperability-but-not-another-standard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#infrastructure-and-interoperability-but-not-another-standard"}},[e._v("#")]),e._v(" Infrastructure and Interoperability, but not Another Standard")]),e._v(" "),t("p",[e._v("CaSS is infrastructure that is intended to promote interoperability among software systems that produce and consume competencies and competency assertions. As expected, CaSS documentation specifies how these systems must receive and transmit data, and to the extent that systems must conform to these specifications to use CaSS. CaSS documentation also specifies the object models (expressed as Linked Data schema) that CaSS uses to internally store competencies, frameworks, and assertions, and to represent alignments between resources and competencies; None of these internal representations are intended to be standards. To the contrary, multiple standards exist and are in development for these purposes. The CaSS project supports these standards as import and export formats and does not to try to create yet another one.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(635),alt:"XKCD Comic"}})]),e._v(" "),t("h3",{attrs:{id:"collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#collaboration"}},[e._v("#")]),e._v(" Collaboration")]),e._v(" "),t("p",[e._v("The CaSS Project is a community effort that strives to incorporate, support, and add value to the work of the many individuals and organizations involved in competency-based education and training. These include the "),t("a",{attrs:{href:"https://www.credentialtransparencyinitiative.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Credential Engine"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.imsglobal.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IMS Global Learning Consortium"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://ieee-sa.imeetcentral.com/ltsc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IEEE Learning Technology Standards Committee"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.medbiq.org/std_specs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MedBiquitous"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.dublincore.org/specifications/lrmi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.cetis.org.uk/inloc/Home",target:"_blank",rel:"noopener noreferrer"}},[e._v("Centre for Educational Technology Interoperability and Standards"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(", and many others.")]),e._v(" "),t("h2",{attrs:{id:"design-principles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#design-principles"}},[e._v("#")]),e._v(" Design Principles")]),e._v(" "),t("h3",{attrs:{id:"federated-not-centralized-not-distributed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#federated-not-centralized-not-distributed"}},[e._v("#")]),e._v(" Federated, not centralized, not distributed")]),e._v(" "),t("p",[e._v("CaSS follows a "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Federated_architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("Federated Architecture"),t("OutboundLink")],1),e._v(". CaSS components communicate with each other via web services and common object models. A CaSS instance may be deployed by any party, may be exposed to the public, or may be set up behind a firewall on a private network. CaSS instances can be standalone or syndicated and can be distributed over multiple servers.")]),e._v(" "),t("h3",{attrs:{id:"open-source"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-source"}},[e._v("#")]),e._v(" Open Source")]),e._v(" "),t("p",[e._v("CaSS code is released on GitHub under a non-viral (“business-friendly”) Apache 2.0 license.")]),e._v(" "),t("h3",{attrs:{id:"open-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-data"}},[e._v("#")]),e._v(" Open Data")]),e._v(" "),t("p",[e._v("CaSS uses and promotes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Linked_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("linked data"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Open_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("open data"),t("OutboundLink")],1),e._v(" and has mechanisms in place to facilitate public machine-readable access to competency data. CaSS selectively includes encryption mechanisms to identify users anonymously, provide data integrity and nonrepudiation, and protect Personally Identifiable Information. This use of encryption to protect rights allows researchers to use CaSS data without the need to maintain relationships of trust with providers of sensitive data.")]),e._v(" "),t("h3",{attrs:{id:"open-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-schema"}},[e._v("#")]),e._v(" Open Schema")]),e._v(" "),t("p",[e._v("The CaSS Project publishes its schema for all to use. These schemas are versioned and the CaSS library provides upgrade paths to move information forward as community ideas evolve. The CaSS Project and its collaborators maintain these schema.")]),e._v(" "),t("h3",{attrs:{id:"open-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-security"}},[e._v("#")]),e._v(" Open Security")]),e._v(" "),t("p",[e._v("CaSS supports commonly accepted and robust encryption formats (RSA and AES) for user identification, encryption, sharing, integrity and nonrepudiation. CaSS follows a no-knowledge policy, meaning that CaSS implementers, by default, cannot observe or decode protected information put into their instances by users of that instance. This preserves the privacy of user information.")]),e._v(" "),t("p",[e._v("Since CaSS is intended to be used in a wide variety of environments and applications, CaSS instances can implement and enforce stringent security and privacy policies but can also be configured to be completely open with no consideration given to either security or privacy, and everything in between.")]),e._v(" "),t("h3",{attrs:{id:"identity-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#identity-management"}},[e._v("#")]),e._v(" Identity Management")]),e._v(" "),t("p",[e._v("The current version of CaSS assumes that its assertion services will be deployed within an ecosystem that includes some sort of identity and group management. CaSS includes an identity manager as a core component. Because of the security and privacy concerns surrounding a person’s identity, it is recommended that applications should create non-PII identities and should not be able to access or alter the credentials of a user. The CaSS identity manager may also be configured to defer authorization and authentication to a third party system outside the ecosystem, such as OAuth.")]),e._v(" "),t("h2",{attrs:{id:"cass-instances-and-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-instances-and-apis"}},[e._v("#")]),e._v(" CaSS Instances and APIs")]),e._v(" "),t("p",[t("strong",[e._v("CaSS")]),e._v(" stands for Competency and Skills System (or Service) and refers to the open source software available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(" (CaSS Software), its associated documentation (CaSS Documentation), and services that the software implements and that the documentation describe (CaSS Services). CaSS is maintained by an effort called the CaSS Project. The CaSS Project web site is "),t("a",{attrs:{href:"https://www.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("www.cassproject.org"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("A working installation of CaSS is called a CaSS Instance and is composed of a CaSS Repository and CaSS Applications. Since CaSS is open source and has a software development kit, it can be modified, rewritten, combined with or used by other applications. If the result provides all of the documented CaSS functionality, a working installation is still considered to be a CaSS Instance.")]),e._v(" "),t("p",[e._v("Other applications interact with CaSS through the CaSS SDK. CaSS Libraries are written in Javascript and may be included in any execution environment with Javascript interoperability, such as Node, Java, or the .NET environment.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(636),alt:"CaSS Overview"}})]),e._v(" "),t("h3",{attrs:{id:"crud-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crud-apis"}},[e._v("#")]),e._v(" CRUD APIs")]),e._v(" "),t("p",[e._v("Data in CaSS is stored as objects. Subject to authorization, CaSS Web Service APIs enable these objectives to be created, retrieved, updated, and deleted (“CRUD” operations), and these operation suffice to use CaSS services.")]),e._v(" "),t("h2",{attrs:{id:"cass-objects"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-objects"}},[e._v("#")]),e._v(" CaSS Objects")]),e._v(" "),t("p",[e._v("In CaSS, objects are represented using "),t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON-LD"),t("OutboundLink")],1),e._v(" compatible with "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("schema.org"),t("OutboundLink")],1),e._v(" and are extensions of "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("creative work schema"),t("OutboundLink")],1),e._v(". The properties of creative works, (in particular names, descriptions, and URLs) are inherited and apply to all CaSS objects.")]),e._v(" "),t("h3",{attrs:{id:"competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-framework"}},[e._v("#")]),e._v(" Competency Framework")]),e._v(" "),t("p",[e._v("Frameworks contain competencies and relations among competencies. Properties include a name, description, a source (e.g. from where the framework was imported or originally defined).")]),e._v(" "),t("h3",{attrs:{id:"competency"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency"}},[e._v("#")]),e._v(" Competency")]),e._v(" "),t("p",[e._v("Competencies can have a scope (conditions to which the competency applies), roll-up rules, and performance levels. The latter two are expressed as independent objects, as are relations among competencies and alignments between resources and competencies. This allows users who do not have access to and do not own competencies to define roll-up rules, levels, relations, and alignments.")]),e._v(" "),t("h3",{attrs:{id:"level"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level"}},[e._v("#")]),e._v(" Level")]),e._v(" "),t("p",[e._v("The level object assigns performance levels to an identified competency. Each level should have performance criteria (also called assessment or evaluation criteria). The “scale” is assumed to be discrete and qualitative (e.g. {1,2,3,4}, {beginner, intermediate, advanced}).")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Levels are a common property of competencies. However, there are two different types of “levels” that are often confused: Performance levels of the same skill or ability (or indications of knowledge) and levels of advancement in rank or the ability to perform a job. In the latter case, advanced levels of a competency usually requires additional and different skills than lower levels: A black belt karate master can do things that a white belt cannot, and advancement from a junior to intermediate to senior programmer involves performing new tasks, not just writing the same type of code better or more efficiently.")])]),e._v(" "),t("p",[e._v("When defining competencies and frameworks for human interpretation, these two types of levels can be conflated without causing too much harm, but treating levels of advancement as levels of performance leads to computational problems when trying to make inferences about sub-competencies. As a result, it is best practice to treat different levels of advancement as distinct competencies rather than to relate them with the Performance Level object. Future versions of CaSS will use the relation “is a level of” and “is a more advanced level of” to indicate the connection, which will also allow categorical competencies such as “karate” to be defined in addition to their levels.")]),e._v(" "),t("h3",{attrs:{id:"relation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[e._v("#")]),e._v(" Relation")]),e._v(" "),t("p",[e._v("Relations are statements that relate two competencies (in the same or different frameworks). The standard relationships in the current release of CaSS include “requires,” “is required by,” “narrows,” “broadens,” “is the same as,” and “is equivalent to.”")]),e._v(" "),t("p",[e._v("Relations that describe how competencies are related could be represented as properties on the competencies, however, several use cases include third parties creating new relationships between competencies. These third-party relationships can be crosswalks, alignments, or other mappings between frameworks. As the third party owns these relationships, they may compose a separate framework owned by the third party.")]),e._v(" "),t("h3",{attrs:{id:"alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alignment"}},[e._v("#")]),e._v(" Alignment")]),e._v(" "),t("p",[e._v("CaSS uses the "),t("a",{attrs:{href:"http://www.lrmi.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative (LRMI)"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://schema.org/AlignmentObject",target:"_blank",rel:"noopener noreferrer"}},[e._v("alignment object"),t("OutboundLink")],1),e._v(" to indicate alignments between resources and competencies. These are expressed using the "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("CreativeWork"),t("OutboundLink")],1),e._v(" schema.")]),e._v(" "),t("h3",{attrs:{id:"assertion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion"}},[e._v("#")]),e._v(" Assertion")]),e._v(" "),t("p",[e._v("An assertion object records that an agent has asserted that a subject (i.e. an individual) holds or does not hold a particular competency at a particular performance level. The assertion can include:")]),e._v(" "),t("ul",[t("li",[e._v("(links to) associated evidence on which the assertion is based (e.g. an exam, a certificate, or a document)")]),e._v(" "),t("li",[e._v("a timestamp (when it was made)")]),e._v(" "),t("li",[e._v("an expiration time past which it is no longer to be considered valid")]),e._v(" "),t("li",[e._v("a confidence "),t("em",[e._v("p")]),e._v(" with 0 ≤ "),t("em",[e._v("p")]),e._v(" ≤ 1")])]),e._v(" "),t("p",[e._v("Some applications may interpret confidence as the agent’s estimate of the probability that an assertion is correct, but other applications may take a more circumspect view and interpret it as nothing more than a general indicator of confidence in the assertion.")]),e._v(" "),t("h2",{attrs:{id:"cass-components"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-components"}},[e._v("#")]),e._v(" CaSS Components")]),e._v(" "),t("p",[e._v("Each CaSS instance contains the following components:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Repository")]),e._v(" - installed on one or more servers\n"),t("ul",[t("li",[e._v("Services for storing, retrieving, and updating CaSS objects (competencies, frameworks, alignments, roll-up rules, assertions, etc.)")]),e._v(" "),t("li",[e._v("Identity management services")]),e._v(" "),t("li",[e._v("Security framework")]),e._v(" "),t("li",[e._v("Adapters")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Libraries")]),e._v(" - JavaScript libraries that implement the majority of CaSS functionality. These are incorporated into Web applications or other applications that use CaSS.\n"),t("ul",[t("li",[e._v("Import/Export (Import and export competencies and frameworks)")]),e._v(" "),t("li",[e._v("Identity Manager (JavaScript methods for the CaSS Identity manager)")]),e._v(" "),t("li",[e._v("Object Instantiation (JavaScript versions of CaSS objects)")]),e._v(" "),t("li",[e._v("Repository library (JavaScript methods for repository APIs)")]),e._v(" "),t("li",[e._v("Admin tools (Used to configure permissions, adapters, settings, etc.)")]),e._v(" "),t("li",[e._v("Plugins (JavaScript CaSS adapters used to communicate with external applications)")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Applications")]),e._v(" - HTML5 web applications that provide software capabilities. Can be run as a standalone Web application or incorporated into other Web applications.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(637),alt:"CaSS Components"}})]),e._v(" "),t("h3",{attrs:{id:"cass-reference-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-reference-implementation"}},[e._v("#")]),e._v(" CaSS Reference Implementation")]),e._v(" "),t("p",[e._v("The CaSS Reference Implementation refers to an instance of CaSS maintained by the CaSS project to demonstrate CaSS services in action and to provide sample code to developers. The CaSS Reference Implementation includes end-user applications that are meant to demonstrate CaSS but are not meant to be production applications. The code for the CaSS Reference Implementation is available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"cass-adapters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-adapters"}},[e._v("#")]),e._v(" CaSS Adapters")]),e._v(" "),t("p",[e._v("A CaSS Adapter is software that translates information and requests from an external system into the format required by CaSS APIs and vice versa. CaSS Adapters can be built into external systems or be implemented as middleware that sits between an external system and a CaSS instance. CaSS Adapters are used by a CaSS instance to retrieve assertions about an individual’s competencies from external systems. CaSS Adapters may also be used by external systems to query CaSS about individual competencies and to receive answers to such queries in their preferred format.")]),e._v(" "),t("p",[t("RouterLink",{attrs:{to:"/guide/interoperability/#adapters-overview"}},[e._v("Several CaSS adapters")]),e._v(" come with the CaSS code distribution, including an xAPI adapter for retrieving "),t("a",{attrs:{href:"https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("xAPI statements"),t("OutboundLink")],1),e._v(" from a Learning Record Store (LRS). Other adapters relevant to the "),t("a",{attrs:{href:"https://adlnet.gov/projects/tla/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADL’s Total Learning Architecture (TLA)"),t("OutboundLink")],1),e._v(" are incorporated.")],1),e._v(" "),t("h3",{attrs:{id:"assertion-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processors"}},[e._v("#")]),e._v(" Assertion Processors")]),e._v(" "),t("p",[e._v("An Assertion Processor is a component of CaSS that, when asked whether an individual "),t("em",[e._v("X")]),e._v(" has competency "),t("em",[e._v("C")]),e._v(" (at performance level "),t("em",[e._v("L")]),e._v("), retrieves relevant assertions, collates them (using roll-up rules and the structure of the framework containing "),t("em",[e._v("C")]),e._v(", and returns a conclusion (assuming it is authorized to do so.) An assertion includes the identity of the individual (or "),t("strong",[e._v("subject")]),e._v(") and the competency. It can also include the identity of the agent making the assertion, a performance level, a link to evidence, a "),t("strong",[e._v("confidence")]),e._v(" (a number between 0 and 1), a timestamp, and an expiration time.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(638),alt:"CaSS Assertion Format"}})]),e._v(" "),t("p",[e._v("Assertion processors maintain a configurable list of systems that can provide them with assertions. This list could consist of only one CaSS instance, in which case that instance acts as a store for competency-based learner profiles, but it can also include other systems that might make or transmit assertions. When an assertion processor receives a query, it looks at what other competencies might be related to the queried competency through roll-up rules and framework relationships, and the processor retrieves information about these as well as about the target competency. The processor then follows an algorithm that computes a single conclusion about the target competency (and target performance level, if relevant) taking into consideration roll-up rules, relationships, confidence, and (in some cases) the reliability of collaborating systems.")]),e._v(" "),t("p",[e._v("The current CaSS distribution includes a JavaScript Assertion Processor. This enables assertion processing to be done within client applications. Server-side versions may be implemented as part of an adapter or Node application. Future plans include a server-side version that will act as an adapter for the TLA’s profile API.")]),e._v(" "),t("h2",{attrs:{id:"security-and-privacy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-and-privacy"}},[e._v("#")]),e._v(" Security and Privacy")]),e._v(" "),t("p",[e._v("Security and privacy are strongly enforced in CaSS. The CaSS project has developed a "),t("a",{attrs:{href:"/dev/security/kbac-specification"}},[e._v("security framework")]),e._v(" that uses “Key-based Access Control” (KBAC) based on cryptographic methods found in Public Key Infrastructure (PKI). This approach was guided by the following requirements:")]),e._v(" "),t("ul",[t("li",[e._v("Prevent sensitive information (which in CaSS includes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Personal_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("personally identifiable information (PII)"),t("OutboundLink")],1),e._v(") and competency assertions) from being discovered or read by any unauthorized individual.")]),e._v(" "),t("li",[e._v("Enable access to information to be controlled by its “owner.” The owner of an assertion about an individual’s competencies may be the individual, but it may also be the individual’s employer or another type of entity. Note that controlling access is not the same as controlling the contents of an assertion, which an owner cannot typically change.")]),e._v(" "),t("li",[e._v("Enable recipients of sensitive information to verify that it is valid and that no unauthorized tampering or alteration has occurred.")]),e._v(" "),t("li",[e._v("Enable a wide variety of privacy policies to be implemented, ranging from open policies with no privacy or data protection to highly secure policies that, for example, prevent CaSS from reporting whether or not any assertion exists about an individual unless the requesting system is on a trusted list and securely authenticates itself.")]),e._v(" "),t("li",[e._v("Protect privacy while supporting the use of anonymized “open data” for the purpose of analyzing and improving learning and training systems and for other research purposes.")])]),e._v(" "),t("h3",{attrs:{id:"cass-security-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-security-framework"}},[e._v("#")]),e._v(" CaSS Security Framework")]),e._v(" "),t("p",[e._v("The CaSS security framework assigns an identity to each person, organization, software system, or group. Identities are stored in the CaSS identity manager as 2048 bit "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/RSA_(cryptosystem)",target:"_blank",rel:"noopener noreferrer"}},[e._v("public RSA keys"),t("OutboundLink")],1),e._v(". In CaSS implementations, these are mapped externally to meaningful identifiers, but within CaSS, and when included in a CaSS object such as an assertion about someone’s competency, they are just 2048 bit pseudo-identifiers that contain no PII and require additional mappings to refer to individuals.")]),e._v(" "),t("p",[e._v("CaSS objects are JSON-LD objects that can be stored open to the public (unencrypted) or privately (encrypted) in the CaSS repository. Objects can be transmitted to other systems as plain text if desired, but by default objects in transit are encrypted and contain additional signatures that can be used to verify that they have not been altered and that specify which identities have the following permissions:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Read")]),e._v(": Decrypt and read the object")]),e._v(" "),t("li",[t("strong",[e._v("Edit")]),e._v(": Read, change, and re-publish the object or specified properties of the object")]),e._v(" "),t("li",[t("strong",[e._v("Delete")]),e._v(": Delete an object (only applies to the CaSS Repository)")]),e._v(" "),t("li",[t("strong",[e._v("Control")]),e._v(": Grant and revoke permissions")])]),e._v(" "),t("p",[e._v("CaSS uses public/private key encryption and signature methods to ensure that only those identities assigned the above permissions can perform the corresponding tasks. For example, if someone with the right to read an object but not the right to edit it nonetheless opens it, edits it, and re-saves it, then the unpermitted tampering will be immediately detected by any CaSS instance or any system using secure versions of the CaSS APIs and can be detected using standard means by any third party.")]),e._v(" "),t("p",[e._v("In CaSS, identities, and hence the above permissions, can be assigned to groups as well as individuals. CaSS assumes that group membership can be verified externally to CaSS. Identities can also be assigned to systems, such as an LMS or an HR system.")]),e._v(" "),t("h3",{attrs:{id:"roles-in-cass-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roles-in-cass-applications"}},[e._v("#")]),e._v(" Roles in CaSS Applications")]),e._v(" "),t("p",[e._v("CaSS itself only supports permissions, and only does this on an object-by-object basis. Roles and associated policies are defined in applications that use CaSS services. It is up to these applications to assign appropriate permissions to CaSS objects. Once assigned, however, any CaSS instance will enforce these permissions and unauthorized actions will be either prevented (read actions) or revealed (other actions).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(639),alt:"CaSS Roles"}})]),e._v(" "),t("h3",{attrs:{id:"analysis-of-kbac-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#analysis-of-kbac-security"}},[e._v("#")]),e._v(" Analysis of KBAC Security")]),e._v(" "),t("p",[e._v("The effectiveness of KBAC Security is analyzed in a "),t("a",{attrs:{href:"/dev/security/kbac-threat-model"}},[e._v("Threat Model")]),e._v(" document. The document shows how KBAC prevents common threats and the impact should systems become compromised.")]),e._v(" "),t("p",[e._v("Implementers, users, and administrator should note that KBAC will not prevent attacks based on compromising end user applications, e.g. attacks that steal information from an end-user’s browser after it has been decrypted and displayed, attacks that compromise a server that provides an end-user application, or attacks that steal a user’s password from a web browser. These attacks are also analyzed in the Threat Model under the “Client-side Attacks” tab.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{635:function(e,t,a){e.exports=a.p+"assets/img/cass-overview-comic.5b9fa605.png"},636:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_environment.a93d588a.png"},637:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_components.aa1759ed.png"},638:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_assertion_format.0217138d.png"},639:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_roles.d78926db.png"},720:function(e,t,a){"use strict";a.r(t);var n=a(69),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("Last updated 2018-12-12")]),e._v(" "),t("h2",{attrs:{id:"welcome"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#welcome"}},[e._v("#")]),e._v(" Welcome")]),e._v(" "),t("p",[e._v("We sincerely hope your development experience with CASS will be easy and enlightening. Perhaps some of the lessons learned and tools created during its development will benefit you on other projects. -- CASS Team")]),e._v(" "),t("h2",{attrs:{id:"about-cass"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about-cass"}},[e._v("#")]),e._v(" About CaSS")]),e._v(" "),t("p",[e._v("CaSS is open-source software that enables users and other systems to define, store, manage, and access data objects called competencies that are organized into structured collections called frameworks, and to report, store, and retrieve assertions about the competencies held by an individual.")]),e._v(" "),t("p",[e._v("CaSS consists of open source code that provides two basic sets of services intended for use by applications that support competency-based approaches to education, training, and workforce development. The goal of CaSS is to enable these applications to share competencies and related information about learners and learning resources in an interoperable and secure manner. The basic services provided by CaSS are used by applications to:")]),e._v(" "),t("ul",[t("li",[e._v("Define, store, manage, and access objects called competencies that are organized into structured collections called frameworks. Competencies can represent competencies, skills, knowledge, abilities, traits, learning objectives, learning outcomes, and other similar constructs that define performance, mastery, attainment, or capabilities. Frameworks are structured collections of competencies associated with a knowledge domain, a domain of endeavor, a job, or a task with structure defined by relations among the competencies they (or other frameworks) contain. CaSS provides persistent, unique URLs that multiple applications can use to access and reference the same frameworks and competencies.")]),e._v(" "),t("li",[e._v("Store assertions about the competencies held by an individual (or team), and compile assertions and other data into profiles that describe a learner’s current state. CaSS is designed to respond to queries from other applications that, for instance, ask whether an individual X holds a competency Y (at performance level Z). Subject to authorization and adherence to privacy protection policies, CaSS will answer yes or no and might include a number indicating its confidence in the answer, a link to evidence, and an expiry date. In addition, CaSS can collect assertions and other data from multiple sources and apply relations and rules to formulate a response to a query.")])]),e._v(" "),t("h3",{attrs:{id:"intended-scope"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#intended-scope"}},[e._v("#")]),e._v(" Intended Scope")]),e._v(" "),t("p",[e._v("CaSS is intended to allow competencies and competency frameworks to be defined, published, accessed, and applied in any size jurisdiction, ranging from a single learning system to an organization, a community of practice, or the entire world. The CaSS project believes that this capability is achievable and is needed to support competency-based approaches to training, education, credentialing, and career management. In fact, there already exist services such as the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(" that do this. Sharing assertions of competency among collaborating systems is another goal. Currently, this is done by using credentials as intermediaries, and the CaSS project believes that significant value can be achieved by enabling such sharing with closed ecosystems that consist of collaborating systems deployed by a training organization, educational institution, corporation, government agency, or a similar organization. Although the CaSS project has looked at broader use cases, the current version of CaSS therefore assumes that it is operating within such an ecosystem.")]),e._v(" "),t("h3",{attrs:{id:"services-not-end-user-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#services-not-end-user-applications"}},[e._v("#")]),e._v(" Services, not End-user Applications")]),e._v(" "),t("p",[e._v("Although the CaSS project is providing reference implementations of end-user applications that use the CaSS services, the CaSS services themselves are not end-user applications. They enable learning management systems, HR systems, talent management systems, student information systems, MOOCS, intelligent tutoring systems, learning resource repositories and registries, competency management systems, and other learning- and training-related applications to exchange data through software, but end-users do not interact directly with the services.")]),e._v(" "),t("h3",{attrs:{id:"infrastructure-and-interoperability-but-not-another-standard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#infrastructure-and-interoperability-but-not-another-standard"}},[e._v("#")]),e._v(" Infrastructure and Interoperability, but not Another Standard")]),e._v(" "),t("p",[e._v("CaSS is infrastructure that is intended to promote interoperability among software systems that produce and consume competencies and competency assertions. As expected, CaSS documentation specifies how these systems must receive and transmit data, and to the extent that systems must conform to these specifications to use CaSS. CaSS documentation also specifies the object models (expressed as Linked Data schema) that CaSS uses to internally store competencies, frameworks, and assertions, and to represent alignments between resources and competencies; None of these internal representations are intended to be standards. To the contrary, multiple standards exist and are in development for these purposes. The CaSS project supports these standards as import and export formats and does not to try to create yet another one.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(635),alt:"XKCD Comic"}})]),e._v(" "),t("h3",{attrs:{id:"collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#collaboration"}},[e._v("#")]),e._v(" Collaboration")]),e._v(" "),t("p",[e._v("The CaSS Project is a community effort that strives to incorporate, support, and add value to the work of the many individuals and organizations involved in competency-based education and training. These include the "),t("a",{attrs:{href:"https://www.credentialtransparencyinitiative.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Credential Engine"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.imsglobal.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IMS Global Learning Consortium"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://ieee-sa.imeetcentral.com/ltsc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IEEE Learning Technology Standards Committee"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.medbiq.org/std_specs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MedBiquitous"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.dublincore.org/specifications/lrmi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.cetis.org.uk/inloc/Home",target:"_blank",rel:"noopener noreferrer"}},[e._v("Centre for Educational Technology Interoperability and Standards"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(", and many others.")]),e._v(" "),t("h2",{attrs:{id:"design-principles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#design-principles"}},[e._v("#")]),e._v(" Design Principles")]),e._v(" "),t("h3",{attrs:{id:"federated-not-centralized-not-distributed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#federated-not-centralized-not-distributed"}},[e._v("#")]),e._v(" Federated, not centralized, not distributed")]),e._v(" "),t("p",[e._v("CaSS follows a "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Federated_architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("Federated Architecture"),t("OutboundLink")],1),e._v(". CaSS components communicate with each other via web services and common object models. A CaSS instance may be deployed by any party, may be exposed to the public, or may be set up behind a firewall on a private network. CaSS instances can be standalone or syndicated and can be distributed over multiple servers.")]),e._v(" "),t("h3",{attrs:{id:"open-source"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-source"}},[e._v("#")]),e._v(" Open Source")]),e._v(" "),t("p",[e._v("CaSS code is released on GitHub under a non-viral (“business-friendly”) Apache 2.0 license.")]),e._v(" "),t("h3",{attrs:{id:"open-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-data"}},[e._v("#")]),e._v(" Open Data")]),e._v(" "),t("p",[e._v("CaSS uses and promotes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Linked_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("linked data"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Open_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("open data"),t("OutboundLink")],1),e._v(" and has mechanisms in place to facilitate public machine-readable access to competency data. CaSS selectively includes encryption mechanisms to identify users anonymously, provide data integrity and nonrepudiation, and protect Personally Identifiable Information. This use of encryption to protect rights allows researchers to use CaSS data without the need to maintain relationships of trust with providers of sensitive data.")]),e._v(" "),t("h3",{attrs:{id:"open-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-schema"}},[e._v("#")]),e._v(" Open Schema")]),e._v(" "),t("p",[e._v("The CaSS Project publishes its schema for all to use. These schemas are versioned and the CaSS library provides upgrade paths to move information forward as community ideas evolve. The CaSS Project and its collaborators maintain these schema.")]),e._v(" "),t("h3",{attrs:{id:"open-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-security"}},[e._v("#")]),e._v(" Open Security")]),e._v(" "),t("p",[e._v("CaSS supports commonly accepted and robust encryption formats (RSA and AES) for user identification, encryption, sharing, integrity and nonrepudiation. CaSS follows a no-knowledge policy, meaning that CaSS implementers, by default, cannot observe or decode protected information put into their instances by users of that instance. This preserves the privacy of user information.")]),e._v(" "),t("p",[e._v("Since CaSS is intended to be used in a wide variety of environments and applications, CaSS instances can implement and enforce stringent security and privacy policies but can also be configured to be completely open with no consideration given to either security or privacy, and everything in between.")]),e._v(" "),t("h3",{attrs:{id:"identity-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#identity-management"}},[e._v("#")]),e._v(" Identity Management")]),e._v(" "),t("p",[e._v("The current version of CaSS assumes that its assertion services will be deployed within an ecosystem that includes some sort of identity and group management. CaSS includes an identity manager as a core component. Because of the security and privacy concerns surrounding a person’s identity, it is recommended that applications should create non-PII identities and should not be able to access or alter the credentials of a user. The CaSS identity manager may also be configured to defer authorization and authentication to a third party system outside the ecosystem, such as OAuth.")]),e._v(" "),t("h2",{attrs:{id:"cass-instances-and-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-instances-and-apis"}},[e._v("#")]),e._v(" CaSS Instances and APIs")]),e._v(" "),t("p",[t("strong",[e._v("CaSS")]),e._v(" stands for Competency and Skills System (or Service) and refers to the open source software available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(" (CaSS Software), its associated documentation (CaSS Documentation), and services that the software implements and that the documentation describe (CaSS Services). CaSS is maintained by an effort called the CaSS Project. The CaSS Project web site is "),t("a",{attrs:{href:"https://www.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("www.cassproject.org"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("A working installation of CaSS is called a CaSS Instance and is composed of a CaSS Repository and CaSS Applications. Since CaSS is open source and has a software development kit, it can be modified, rewritten, combined with or used by other applications. If the result provides all of the documented CaSS functionality, a working installation is still considered to be a CaSS Instance.")]),e._v(" "),t("p",[e._v("Other applications interact with CaSS through the CaSS SDK. CaSS Libraries are written in Javascript and may be included in any execution environment with Javascript interoperability, such as Node, Java, or the .NET environment.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(636),alt:"CaSS Overview"}})]),e._v(" "),t("h3",{attrs:{id:"crud-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crud-apis"}},[e._v("#")]),e._v(" CRUD APIs")]),e._v(" "),t("p",[e._v("Data in CaSS is stored as objects. Subject to authorization, CaSS Web Service APIs enable these objectives to be created, retrieved, updated, and deleted (“CRUD” operations), and these operation suffice to use CaSS services.")]),e._v(" "),t("h2",{attrs:{id:"cass-objects"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-objects"}},[e._v("#")]),e._v(" CaSS Objects")]),e._v(" "),t("p",[e._v("In CaSS, objects are represented using "),t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON-LD"),t("OutboundLink")],1),e._v(" compatible with "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("schema.org"),t("OutboundLink")],1),e._v(" and are extensions of "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("creative work schema"),t("OutboundLink")],1),e._v(". The properties of creative works, (in particular names, descriptions, and URLs) are inherited and apply to all CaSS objects.")]),e._v(" "),t("h3",{attrs:{id:"competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-framework"}},[e._v("#")]),e._v(" Competency Framework")]),e._v(" "),t("p",[e._v("Frameworks contain competencies and relations among competencies. Properties include a name, description, a source (e.g. from where the framework was imported or originally defined).")]),e._v(" "),t("h3",{attrs:{id:"competency"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency"}},[e._v("#")]),e._v(" Competency")]),e._v(" "),t("p",[e._v("Competencies can have a scope (conditions to which the competency applies), roll-up rules, and performance levels. The latter two are expressed as independent objects, as are relations among competencies and alignments between resources and competencies. This allows users who do not have access to and do not own competencies to define roll-up rules, levels, relations, and alignments.")]),e._v(" "),t("h3",{attrs:{id:"level"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level"}},[e._v("#")]),e._v(" Level")]),e._v(" "),t("p",[e._v("The level object assigns performance levels to an identified competency. Each level should have performance criteria (also called assessment or evaluation criteria). The “scale” is assumed to be discrete and qualitative (e.g. {1,2,3,4}, {beginner, intermediate, advanced}).")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Levels are a common property of competencies. However, there are two different types of “levels” that are often confused: Performance levels of the same skill or ability (or indications of knowledge) and levels of advancement in rank or the ability to perform a job. In the latter case, advanced levels of a competency usually requires additional and different skills than lower levels: A black belt karate master can do things that a white belt cannot, and advancement from a junior to intermediate to senior programmer involves performing new tasks, not just writing the same type of code better or more efficiently.")])]),e._v(" "),t("p",[e._v("When defining competencies and frameworks for human interpretation, these two types of levels can be conflated without causing too much harm, but treating levels of advancement as levels of performance leads to computational problems when trying to make inferences about sub-competencies. As a result, it is best practice to treat different levels of advancement as distinct competencies rather than to relate them with the Performance Level object. Future versions of CaSS will use the relation “is a level of” and “is a more advanced level of” to indicate the connection, which will also allow categorical competencies such as “karate” to be defined in addition to their levels.")]),e._v(" "),t("h3",{attrs:{id:"relation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[e._v("#")]),e._v(" Relation")]),e._v(" "),t("p",[e._v("Relations are statements that relate two competencies (in the same or different frameworks). The standard relationships in the current release of CaSS include “requires,” “is required by,” “narrows,” “broadens,” “is the same as,” and “is equivalent to.”")]),e._v(" "),t("p",[e._v("Relations that describe how competencies are related could be represented as properties on the competencies, however, several use cases include third parties creating new relationships between competencies. These third-party relationships can be crosswalks, alignments, or other mappings between frameworks. As the third party owns these relationships, they may compose a separate framework owned by the third party.")]),e._v(" "),t("h3",{attrs:{id:"alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alignment"}},[e._v("#")]),e._v(" Alignment")]),e._v(" "),t("p",[e._v("CaSS uses the "),t("a",{attrs:{href:"http://www.lrmi.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative (LRMI)"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://schema.org/AlignmentObject",target:"_blank",rel:"noopener noreferrer"}},[e._v("alignment object"),t("OutboundLink")],1),e._v(" to indicate alignments between resources and competencies. These are expressed using the "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("CreativeWork"),t("OutboundLink")],1),e._v(" schema.")]),e._v(" "),t("h3",{attrs:{id:"assertion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion"}},[e._v("#")]),e._v(" Assertion")]),e._v(" "),t("p",[e._v("An assertion object records that an agent has asserted that a subject (i.e. an individual) holds or does not hold a particular competency at a particular performance level. The assertion can include:")]),e._v(" "),t("ul",[t("li",[e._v("(links to) associated evidence on which the assertion is based (e.g. an exam, a certificate, or a document)")]),e._v(" "),t("li",[e._v("a timestamp (when it was made)")]),e._v(" "),t("li",[e._v("an expiration time past which it is no longer to be considered valid")]),e._v(" "),t("li",[e._v("a confidence "),t("em",[e._v("p")]),e._v(" with 0 ≤ "),t("em",[e._v("p")]),e._v(" ≤ 1")])]),e._v(" "),t("p",[e._v("Some applications may interpret confidence as the agent’s estimate of the probability that an assertion is correct, but other applications may take a more circumspect view and interpret it as nothing more than a general indicator of confidence in the assertion.")]),e._v(" "),t("h2",{attrs:{id:"cass-components"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-components"}},[e._v("#")]),e._v(" CaSS Components")]),e._v(" "),t("p",[e._v("Each CaSS instance contains the following components:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Repository")]),e._v(" - installed on one or more servers\n"),t("ul",[t("li",[e._v("Services for storing, retrieving, and updating CaSS objects (competencies, frameworks, alignments, roll-up rules, assertions, etc.)")]),e._v(" "),t("li",[e._v("Identity management services")]),e._v(" "),t("li",[e._v("Security framework")]),e._v(" "),t("li",[e._v("Adapters")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Libraries")]),e._v(" - JavaScript libraries that implement the majority of CaSS functionality. These are incorporated into Web applications or other applications that use CaSS.\n"),t("ul",[t("li",[e._v("Import/Export (Import and export competencies and frameworks)")]),e._v(" "),t("li",[e._v("Identity Manager (JavaScript methods for the CaSS Identity manager)")]),e._v(" "),t("li",[e._v("Object Instantiation (JavaScript versions of CaSS objects)")]),e._v(" "),t("li",[e._v("Repository library (JavaScript methods for repository APIs)")]),e._v(" "),t("li",[e._v("Admin tools (Used to configure permissions, adapters, settings, etc.)")]),e._v(" "),t("li",[e._v("Plugins (JavaScript CaSS adapters used to communicate with external applications)")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Applications")]),e._v(" - HTML5 web applications that provide software capabilities. Can be run as a standalone Web application or incorporated into other Web applications.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(637),alt:"CaSS Components"}})]),e._v(" "),t("h3",{attrs:{id:"cass-reference-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-reference-implementation"}},[e._v("#")]),e._v(" CaSS Reference Implementation")]),e._v(" "),t("p",[e._v("The CaSS Reference Implementation refers to an instance of CaSS maintained by the CaSS project to demonstrate CaSS services in action and to provide sample code to developers. The CaSS Reference Implementation includes end-user applications that are meant to demonstrate CaSS but are not meant to be production applications. The code for the CaSS Reference Implementation is available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"cass-adapters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-adapters"}},[e._v("#")]),e._v(" CaSS Adapters")]),e._v(" "),t("p",[e._v("A CaSS Adapter is software that translates information and requests from an external system into the format required by CaSS APIs and vice versa. CaSS Adapters can be built into external systems or be implemented as middleware that sits between an external system and a CaSS instance. CaSS Adapters are used by a CaSS instance to retrieve assertions about an individual’s competencies from external systems. CaSS Adapters may also be used by external systems to query CaSS about individual competencies and to receive answers to such queries in their preferred format.")]),e._v(" "),t("p",[t("RouterLink",{attrs:{to:"/guide/interoperability/#adapters-overview"}},[e._v("Several CaSS adapters")]),e._v(" come with the CaSS code distribution, including an xAPI adapter for retrieving "),t("a",{attrs:{href:"https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("xAPI statements"),t("OutboundLink")],1),e._v(" from a Learning Record Store (LRS). Other adapters relevant to the "),t("a",{attrs:{href:"https://adlnet.gov/projects/tla/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADL’s Total Learning Architecture (TLA)"),t("OutboundLink")],1),e._v(" are incorporated.")],1),e._v(" "),t("h3",{attrs:{id:"assertion-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processors"}},[e._v("#")]),e._v(" Assertion Processors")]),e._v(" "),t("p",[e._v("An Assertion Processor is a component of CaSS that, when asked whether an individual "),t("em",[e._v("X")]),e._v(" has competency "),t("em",[e._v("C")]),e._v(" (at performance level "),t("em",[e._v("L")]),e._v("), retrieves relevant assertions, collates them (using roll-up rules and the structure of the framework containing "),t("em",[e._v("C")]),e._v(", and returns a conclusion (assuming it is authorized to do so.) An assertion includes the identity of the individual (or "),t("strong",[e._v("subject")]),e._v(") and the competency. It can also include the identity of the agent making the assertion, a performance level, a link to evidence, a "),t("strong",[e._v("confidence")]),e._v(" (a number between 0 and 1), a timestamp, and an expiration time.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(638),alt:"CaSS Assertion Format"}})]),e._v(" "),t("p",[e._v("Assertion processors maintain a configurable list of systems that can provide them with assertions. This list could consist of only one CaSS instance, in which case that instance acts as a store for competency-based learner profiles, but it can also include other systems that might make or transmit assertions. When an assertion processor receives a query, it looks at what other competencies might be related to the queried competency through roll-up rules and framework relationships, and the processor retrieves information about these as well as about the target competency. The processor then follows an algorithm that computes a single conclusion about the target competency (and target performance level, if relevant) taking into consideration roll-up rules, relationships, confidence, and (in some cases) the reliability of collaborating systems.")]),e._v(" "),t("p",[e._v("The current CaSS distribution includes a JavaScript Assertion Processor. This enables assertion processing to be done within client applications. Server-side versions may be implemented as part of an adapter or Node application. Future plans include a server-side version that will act as an adapter for the TLA’s profile API.")]),e._v(" "),t("h2",{attrs:{id:"security-and-privacy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-and-privacy"}},[e._v("#")]),e._v(" Security and Privacy")]),e._v(" "),t("p",[e._v("Security and privacy are strongly enforced in CaSS. The CaSS project has developed a "),t("a",{attrs:{href:"/dev/security/kbac-specification"}},[e._v("security framework")]),e._v(" that uses “Key-based Access Control” (KBAC) based on cryptographic methods found in Public Key Infrastructure (PKI). This approach was guided by the following requirements:")]),e._v(" "),t("ul",[t("li",[e._v("Prevent sensitive information (which in CaSS includes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Personal_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("personally identifiable information (PII)"),t("OutboundLink")],1),e._v(") and competency assertions) from being discovered or read by any unauthorized individual.")]),e._v(" "),t("li",[e._v("Enable access to information to be controlled by its “owner.” The owner of an assertion about an individual’s competencies may be the individual, but it may also be the individual’s employer or another type of entity. Note that controlling access is not the same as controlling the contents of an assertion, which an owner cannot typically change.")]),e._v(" "),t("li",[e._v("Enable recipients of sensitive information to verify that it is valid and that no unauthorized tampering or alteration has occurred.")]),e._v(" "),t("li",[e._v("Enable a wide variety of privacy policies to be implemented, ranging from open policies with no privacy or data protection to highly secure policies that, for example, prevent CaSS from reporting whether or not any assertion exists about an individual unless the requesting system is on a trusted list and securely authenticates itself.")]),e._v(" "),t("li",[e._v("Protect privacy while supporting the use of anonymized “open data” for the purpose of analyzing and improving learning and training systems and for other research purposes.")])]),e._v(" "),t("h3",{attrs:{id:"cass-security-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-security-framework"}},[e._v("#")]),e._v(" CaSS Security Framework")]),e._v(" "),t("p",[e._v("The CaSS security framework assigns an identity to each person, organization, software system, or group. Identities are stored in the CaSS identity manager as 2048 bit "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/RSA_(cryptosystem)",target:"_blank",rel:"noopener noreferrer"}},[e._v("public RSA keys"),t("OutboundLink")],1),e._v(". In CaSS implementations, these are mapped externally to meaningful identifiers, but within CaSS, and when included in a CaSS object such as an assertion about someone’s competency, they are just 2048 bit pseudo-identifiers that contain no PII and require additional mappings to refer to individuals.")]),e._v(" "),t("p",[e._v("CaSS objects are JSON-LD objects that can be stored open to the public (unencrypted) or privately (encrypted) in the CaSS repository. Objects can be transmitted to other systems as plain text if desired, but by default objects in transit are encrypted and contain additional signatures that can be used to verify that they have not been altered and that specify which identities have the following permissions:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Read")]),e._v(": Decrypt and read the object")]),e._v(" "),t("li",[t("strong",[e._v("Edit")]),e._v(": Read, change, and re-publish the object or specified properties of the object")]),e._v(" "),t("li",[t("strong",[e._v("Delete")]),e._v(": Delete an object (only applies to the CaSS Repository)")]),e._v(" "),t("li",[t("strong",[e._v("Control")]),e._v(": Grant and revoke permissions")])]),e._v(" "),t("p",[e._v("CaSS uses public/private key encryption and signature methods to ensure that only those identities assigned the above permissions can perform the corresponding tasks. For example, if someone with the right to read an object but not the right to edit it nonetheless opens it, edits it, and re-saves it, then the unpermitted tampering will be immediately detected by any CaSS instance or any system using secure versions of the CaSS APIs and can be detected using standard means by any third party.")]),e._v(" "),t("p",[e._v("In CaSS, identities, and hence the above permissions, can be assigned to groups as well as individuals. CaSS assumes that group membership can be verified externally to CaSS. Identities can also be assigned to systems, such as an LMS or an HR system.")]),e._v(" "),t("h3",{attrs:{id:"roles-in-cass-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roles-in-cass-applications"}},[e._v("#")]),e._v(" Roles in CaSS Applications")]),e._v(" "),t("p",[e._v("CaSS itself only supports permissions, and only does this on an object-by-object basis. Roles and associated policies are defined in applications that use CaSS services. It is up to these applications to assign appropriate permissions to CaSS objects. Once assigned, however, any CaSS instance will enforce these permissions and unauthorized actions will be either prevented (read actions) or revealed (other actions).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(639),alt:"CaSS Roles"}})]),e._v(" "),t("h3",{attrs:{id:"analysis-of-kbac-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#analysis-of-kbac-security"}},[e._v("#")]),e._v(" Analysis of KBAC Security")]),e._v(" "),t("p",[e._v("The effectiveness of KBAC Security is analyzed in a "),t("a",{attrs:{href:"/dev/security/kbac-threat-model"}},[e._v("Threat Model")]),e._v(" document. The document shows how KBAC prevents common threats and the impact should systems become compromised.")]),e._v(" "),t("p",[e._v("Implementers, users, and administrator should note that KBAC will not prevent attacks based on compromising end user applications, e.g. attacks that steal information from an end-user’s browser after it has been decrypted and displayed, attacks that compromise a server that provides an end-user application, or attacks that steal a user’s password from a web browser. These attacks are also analyzed in the Threat Model under the “Client-side Attacks” tab.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/32.b414de84.js.gz b/docs/assets/js/32.b414de84.js.gz new file mode 100644 index 000000000..2bcc5fc2c Binary files /dev/null and b/docs/assets/js/32.b414de84.js.gz differ diff --git a/docs/assets/js/33.842a3aff.js.gz b/docs/assets/js/33.842a3aff.js.gz deleted file mode 100644 index 4628ebf23..000000000 Binary files a/docs/assets/js/33.842a3aff.js.gz and /dev/null differ diff --git a/docs/assets/js/33.842a3aff.js b/docs/assets/js/33.896bb601.js similarity index 99% rename from docs/assets/js/33.842a3aff.js rename to docs/assets/js/33.896bb601.js index fe2173136..83a45d2bc 100644 --- a/docs/assets/js/33.842a3aff.js +++ b/docs/assets/js/33.896bb601.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{583:function(e,t,o){e.exports=o.p+"assets/img/import-framework-button.fbbab476.png"},584:function(e,t,o){e.exports=o.p+"assets/img/importing-framework-page.7054f43f.png"},585:function(e,t,o){e.exports=o.p+"assets/img/importing-open-directory.46eb1968.png"},586:function(e,t,o){e.exports=o.p+"assets/img/importing-cass-directories.ff5aaa2b.png"},666:function(e,t,o){"use strict";o.r(t);var r=o(69),i=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"importing-a-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-a-competency-framework"}},[e._v("#")]),e._v(" Importing a Competency Framework")]),e._v(" "),t("p",[e._v("The process of Importing a new framework is also relatively simple. From the frameworks tab on the sidebar, users have the ability to view all existing frameworks within the system. At the top of the page is a list of options which allow users to import new frameworks into the database of existing frameworks.")]),e._v(" "),t("p",[t("img",{attrs:{src:o(583),alt:"CAT Competency Framework Management - Import Frameworks"}})]),e._v(" "),t("p",[e._v("After clicking the import framework button users will be prompted with a new page where they have the ability to select the source of the frameworks they are trying to import. Options include: "),t("em",[t("strong",[e._v("File Import, Remote Server, Paste Text")])]),e._v(", and "),t("em",[t("strong",[e._v("URL Source")])]),e._v(".")]),e._v(" "),t("p",[e._v("All import types have instructions and guidelines in the panel on the right side of the screen.")]),e._v(" "),t("h2",{attrs:{id:"importing-from-a-file"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-a-file"}},[e._v("#")]),e._v(" Importing From a File")]),e._v(" "),t("p",[e._v("To import a framwork from a file:")]),e._v(" "),t("ul",[t("li",[e._v('Click on "File Import"')]),e._v(" "),t("li",[e._v("Select the desired source and drag the framework into the dotted window displayed below.\n"),t("ul",[t("li",[e._v("You can upload "),t("em",[e._v("csv, json,")]),e._v(" and "),t("em",[e._v("xml")]),e._v(" files in specific formats")]),e._v(" "),t("li",[t("em",[e._v("Html, pdf,")]),e._v(" and "),t("em",[e._v("docx")]),e._v(" formats are also experimentally supported")]),e._v(" "),t("li",[e._v("Example files and templates are linked from the panel on the right side of the screen.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:o(584),alt:"CAT Competency Framework Management - Importing Frameworks"}})]),e._v(" "),t("p",[e._v("Once imported, users can select the process files button and the desired framework will be imported into the your CaSS Authoring Tool database.")]),e._v(" "),t("h2",{attrs:{id:"importing-from-an-existing-cass-repository"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-an-existing-cass-repository"}},[e._v("#")]),e._v(" Importing From an Existing CaSS Repository")]),e._v(" "),t("p",[t("strong",[e._v("To import a framework from a CaSS respository:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Remote Server")])])]),e._v(" "),t("li",[e._v("Set the input for "),t("em",[t("strong",[e._v("Paste URL Endpoint Of Server")])]),e._v(" to the CaSS endpoint with the framework(s) you would like to import.")]),e._v(" "),t("li",[e._v("Click on "),t("em",[t("strong",[e._v("connect to cass endpoint")])])])])]),e._v(" "),t("p",[t("strong",[e._v("To search for frameworks within the CaSS repository:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Enter a search term in the "),t("em",[t("strong",[e._v("Search for frameworks...")])]),e._v(" field\n"),t("ul",[t("li",[e._v("Leave this field blank to return all frameworks within the set filters below")])])])])]),e._v(" "),t("p",[t("strong",[e._v("To search all frameworks within the CaSS repository:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on the dropdown list under "),t("em",[t("strong",[e._v("Select A Directory To Filter Results")])])]),e._v(" "),t("li",[e._v("Select "),t("em",[t("strong",[e._v("All frameworks")])])])])]),e._v(" "),t("p",[t("strong",[e._v("If the CaSS repository you are importing from contains directories, then you can import frameworks located within a directory. To view the frameworks within a specific directory:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on the dropdown list under "),t("em",[t("strong",[e._v("Select A Directory To Filter Results")])])]),e._v(" "),t("li",[e._v("Select the desired directory")]),e._v(" "),t("li",[e._v("You will then see a list of frameworks (if any) in the directory")])])]),e._v(" "),t("p",[e._v("When you select a directory to view the contents of, the directory name will show above the list of frameworks within it AND the list of directories to filter by will be updated to reflect any subdirectories located within that directory.")]),e._v(" "),t("p",[t("strong",[e._v("To navigate back to the parent directory:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on the "),t("em",[e._v("Back")]),e._v(" button in the bottom right corner")])])]),e._v(" "),t("p",[t("img",{attrs:{src:o(585),alt:"CAT Competency Framework Management - Importing Open Directory"}})]),e._v(" "),t("p",[e._v('You can select one or more individual frameworks to import by clicking on each framwork name. When you have selected the frameworks that you would like to import, click "import".')]),e._v(" "),t("p",[t("img",{attrs:{src:o(586),alt:"CAT Competency Framework Management - Importing CaSS Repository"}})]),e._v(" "),t("h2",{attrs:{id:"importing-from-an-ims-case-repositories"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-an-ims-case-repositories"}},[e._v("#")]),e._v(" Importing From an IMS CASE Repositories")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Remote Server")])])]),e._v(" "),t("li",[e._v("Set the input for "),t("em",[t("strong",[e._v("Paste URL Endpoint Of Server")])]),e._v(" to the IMS CASE endpoint with the framework(s) you would like to import")]),e._v(" "),t("li",[e._v("Click on "),t("em",[t("strong",[e._v("connect to case endpoint")])])])]),e._v(" "),t("h2",{attrs:{id:"importing-from-ctdl-asn-json-ld-graphs"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-ctdl-asn-json-ld-graphs"}},[e._v("#")]),e._v(" Importing From CTDL-ASN JSON-LD Graphs")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("URL Source")])])]),e._v(" "),t("li",[e._v("Set the input for "),t("em",[t("strong",[e._v("Paste URL Document Of Document")])]),e._v(" to the link to the CTDL-ASN JSON-LD graphs")]),e._v(" "),t("li",[e._v("Click on "),t("em",[t("strong",[e._v("import framework")])])])]),e._v(" "),t("h2",{attrs:{id:"importing-from-text"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-text"}},[e._v("#")]),e._v(" Importing From Text")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Paste Text")])]),e._v(" to input lists of competency names")]),e._v(" "),t("li",[e._v("Copy and paste from a document or start typing in the text area")]),e._v(" "),t("li",[e._v("Enter the name of the framework")]),e._v(" "),t("li",[e._v("List each competency on a separate line\n"),t("ul",[t("li",[e._v("One space indicates one level of indentation in the hierarchy")])])]),e._v(" "),t("li",[e._v("To the right of the text box, you will see a preview of the hierarchy you are creating. You can make any needed adjustments before importing")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("import")])]),e._v(" when done to complete the immport process and view the framework in the editor")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{583:function(e,t,o){e.exports=o.p+"assets/img/import-framework-button.fbbab476.png"},584:function(e,t,o){e.exports=o.p+"assets/img/importing-framework-page.7054f43f.png"},585:function(e,t,o){e.exports=o.p+"assets/img/importing-open-directory.46eb1968.png"},586:function(e,t,o){e.exports=o.p+"assets/img/importing-cass-directories.ff5aaa2b.png"},665:function(e,t,o){"use strict";o.r(t);var r=o(69),i=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"importing-a-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-a-competency-framework"}},[e._v("#")]),e._v(" Importing a Competency Framework")]),e._v(" "),t("p",[e._v("The process of Importing a new framework is also relatively simple. From the frameworks tab on the sidebar, users have the ability to view all existing frameworks within the system. At the top of the page is a list of options which allow users to import new frameworks into the database of existing frameworks.")]),e._v(" "),t("p",[t("img",{attrs:{src:o(583),alt:"CAT Competency Framework Management - Import Frameworks"}})]),e._v(" "),t("p",[e._v("After clicking the import framework button users will be prompted with a new page where they have the ability to select the source of the frameworks they are trying to import. Options include: "),t("em",[t("strong",[e._v("File Import, Remote Server, Paste Text")])]),e._v(", and "),t("em",[t("strong",[e._v("URL Source")])]),e._v(".")]),e._v(" "),t("p",[e._v("All import types have instructions and guidelines in the panel on the right side of the screen.")]),e._v(" "),t("h2",{attrs:{id:"importing-from-a-file"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-a-file"}},[e._v("#")]),e._v(" Importing From a File")]),e._v(" "),t("p",[e._v("To import a framwork from a file:")]),e._v(" "),t("ul",[t("li",[e._v('Click on "File Import"')]),e._v(" "),t("li",[e._v("Select the desired source and drag the framework into the dotted window displayed below.\n"),t("ul",[t("li",[e._v("You can upload "),t("em",[e._v("csv, json,")]),e._v(" and "),t("em",[e._v("xml")]),e._v(" files in specific formats")]),e._v(" "),t("li",[t("em",[e._v("Html, pdf,")]),e._v(" and "),t("em",[e._v("docx")]),e._v(" formats are also experimentally supported")]),e._v(" "),t("li",[e._v("Example files and templates are linked from the panel on the right side of the screen.")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:o(584),alt:"CAT Competency Framework Management - Importing Frameworks"}})]),e._v(" "),t("p",[e._v("Once imported, users can select the process files button and the desired framework will be imported into the your CaSS Authoring Tool database.")]),e._v(" "),t("h2",{attrs:{id:"importing-from-an-existing-cass-repository"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-an-existing-cass-repository"}},[e._v("#")]),e._v(" Importing From an Existing CaSS Repository")]),e._v(" "),t("p",[t("strong",[e._v("To import a framework from a CaSS respository:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Remote Server")])])]),e._v(" "),t("li",[e._v("Set the input for "),t("em",[t("strong",[e._v("Paste URL Endpoint Of Server")])]),e._v(" to the CaSS endpoint with the framework(s) you would like to import.")]),e._v(" "),t("li",[e._v("Click on "),t("em",[t("strong",[e._v("connect to cass endpoint")])])])])]),e._v(" "),t("p",[t("strong",[e._v("To search for frameworks within the CaSS repository:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Enter a search term in the "),t("em",[t("strong",[e._v("Search for frameworks...")])]),e._v(" field\n"),t("ul",[t("li",[e._v("Leave this field blank to return all frameworks within the set filters below")])])])])]),e._v(" "),t("p",[t("strong",[e._v("To search all frameworks within the CaSS repository:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on the dropdown list under "),t("em",[t("strong",[e._v("Select A Directory To Filter Results")])])]),e._v(" "),t("li",[e._v("Select "),t("em",[t("strong",[e._v("All frameworks")])])])])]),e._v(" "),t("p",[t("strong",[e._v("If the CaSS repository you are importing from contains directories, then you can import frameworks located within a directory. To view the frameworks within a specific directory:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on the dropdown list under "),t("em",[t("strong",[e._v("Select A Directory To Filter Results")])])]),e._v(" "),t("li",[e._v("Select the desired directory")]),e._v(" "),t("li",[e._v("You will then see a list of frameworks (if any) in the directory")])])]),e._v(" "),t("p",[e._v("When you select a directory to view the contents of, the directory name will show above the list of frameworks within it AND the list of directories to filter by will be updated to reflect any subdirectories located within that directory.")]),e._v(" "),t("p",[t("strong",[e._v("To navigate back to the parent directory:")])]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Click on the "),t("em",[e._v("Back")]),e._v(" button in the bottom right corner")])])]),e._v(" "),t("p",[t("img",{attrs:{src:o(585),alt:"CAT Competency Framework Management - Importing Open Directory"}})]),e._v(" "),t("p",[e._v('You can select one or more individual frameworks to import by clicking on each framwork name. When you have selected the frameworks that you would like to import, click "import".')]),e._v(" "),t("p",[t("img",{attrs:{src:o(586),alt:"CAT Competency Framework Management - Importing CaSS Repository"}})]),e._v(" "),t("h2",{attrs:{id:"importing-from-an-ims-case-repositories"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-an-ims-case-repositories"}},[e._v("#")]),e._v(" Importing From an IMS CASE Repositories")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Remote Server")])])]),e._v(" "),t("li",[e._v("Set the input for "),t("em",[t("strong",[e._v("Paste URL Endpoint Of Server")])]),e._v(" to the IMS CASE endpoint with the framework(s) you would like to import")]),e._v(" "),t("li",[e._v("Click on "),t("em",[t("strong",[e._v("connect to case endpoint")])])])]),e._v(" "),t("h2",{attrs:{id:"importing-from-ctdl-asn-json-ld-graphs"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-ctdl-asn-json-ld-graphs"}},[e._v("#")]),e._v(" Importing From CTDL-ASN JSON-LD Graphs")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("URL Source")])])]),e._v(" "),t("li",[e._v("Set the input for "),t("em",[t("strong",[e._v("Paste URL Document Of Document")])]),e._v(" to the link to the CTDL-ASN JSON-LD graphs")]),e._v(" "),t("li",[e._v("Click on "),t("em",[t("strong",[e._v("import framework")])])])]),e._v(" "),t("h2",{attrs:{id:"importing-from-text"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#importing-from-text"}},[e._v("#")]),e._v(" Importing From Text")]),e._v(" "),t("ul",[t("li",[e._v("Click on "),t("em",[t("strong",[e._v("Paste Text")])]),e._v(" to input lists of competency names")]),e._v(" "),t("li",[e._v("Copy and paste from a document or start typing in the text area")]),e._v(" "),t("li",[e._v("Enter the name of the framework")]),e._v(" "),t("li",[e._v("List each competency on a separate line\n"),t("ul",[t("li",[e._v("One space indicates one level of indentation in the hierarchy")])])]),e._v(" "),t("li",[e._v("To the right of the text box, you will see a preview of the hierarchy you are creating. You can make any needed adjustments before importing")]),e._v(" "),t("li",[e._v("Click "),t("em",[t("strong",[e._v("import")])]),e._v(" when done to complete the immport process and view the framework in the editor")])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/33.896bb601.js.gz b/docs/assets/js/33.896bb601.js.gz new file mode 100644 index 000000000..4c7743490 Binary files /dev/null and b/docs/assets/js/33.896bb601.js.gz differ diff --git a/docs/assets/js/34.7ad9cf13.js b/docs/assets/js/34.119b4273.js similarity index 93% rename from docs/assets/js/34.7ad9cf13.js rename to docs/assets/js/34.119b4273.js index c5c0d9b34..08a564717 100644 --- a/docs/assets/js/34.7ad9cf13.js +++ b/docs/assets/js/34.119b4273.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{480:function(t,e){t.exports="data:image/png;base64,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"},481:function(t,e,a){t.exports=a.p+"assets/img/assertion-timeline.dc962444.png"},482:function(t,e,a){t.exports=a.p+"assets/img/assertion-timeline-delete.7113108d.png"},653:function(t,e,a){"use strict";a.r(e);var i=a(69),s=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"assertion-timeline"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assertion-timeline"}},[t._v("#")]),t._v(" Assertion Timeline")]),t._v(" "),e("p",[e("strong",[t._v("Assertion Timeline is only available to logged in users, ensure you are logged in to the application before continuing.")])]),t._v(" "),e("p",[t._v("To access the Assertion Timeline, click the button indicated below in the left navigation bar.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(480),alt:"Open Assertion Timeline"}})]),t._v(" "),e("p",[t._v("The timeline will display any assertions made by you, about you, or that have been shared with you.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(481),alt:"Assertion Timeline"}})]),t._v(" "),e("p",[t._v("You can click on any competency mentioned in the timeline to open the related framework.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(482),alt:"Deleting Assertions"}})]),t._v(" "),e("p",[t._v("You can also delete any assertions you've made directly from the assertion timeline.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{471:function(t,e){t.exports="data:image/png;base64,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"},472:function(t,e,a){t.exports=a.p+"assets/img/assertion-timeline.dc962444.png"},473:function(t,e,a){t.exports=a.p+"assets/img/assertion-timeline-delete.7113108d.png"},652:function(t,e,a){"use strict";a.r(e);var i=a(69),s=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"assertion-timeline"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assertion-timeline"}},[t._v("#")]),t._v(" Assertion Timeline")]),t._v(" "),e("p",[e("strong",[t._v("Assertion Timeline is only available to logged in users, ensure you are logged in to the application before continuing.")])]),t._v(" "),e("p",[t._v("To access the Assertion Timeline, click the button indicated below in the left navigation bar.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(471),alt:"Open Assertion Timeline"}})]),t._v(" "),e("p",[t._v("The timeline will display any assertions made by you, about you, or that have been shared with you.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(472),alt:"Assertion Timeline"}})]),t._v(" "),e("p",[t._v("You can click on any competency mentioned in the timeline to open the related framework.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(473),alt:"Deleting Assertions"}})]),t._v(" "),e("p",[t._v("You can also delete any assertions you've made directly from the assertion timeline.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/34.119b4273.js.gz b/docs/assets/js/34.119b4273.js.gz new file mode 100644 index 000000000..1b58f6555 Binary files /dev/null and b/docs/assets/js/34.119b4273.js.gz differ diff --git a/docs/assets/js/34.7ad9cf13.js.gz b/docs/assets/js/34.7ad9cf13.js.gz deleted file mode 100644 index 0c1dbedc2..000000000 Binary files a/docs/assets/js/34.7ad9cf13.js.gz and /dev/null differ diff --git a/docs/assets/js/35.2af3a928.js b/docs/assets/js/35.0ff4689f.js similarity index 91% rename from docs/assets/js/35.2af3a928.js rename to docs/assets/js/35.0ff4689f.js index 8201e6157..1efc0f4cc 100644 --- a/docs/assets/js/35.2af3a928.js +++ b/docs/assets/js/35.0ff4689f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{436:function(e,r,t){e.exports=t.p+"assets/img/directory-information-users.fda33476.png"},555:function(e,r,t){e.exports=t.p+"assets/img/directory-copy-link.84a16b04.png"},556:function(e,r,t){e.exports=t.p+"assets/img/directory-shareable-link.cc80078d.png"},660:function(e,r,t){"use strict";t.r(r);var i=t(69),o=Object(i.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"managing-users-and-sharing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing"}},[e._v("#")]),e._v(" Managing Users and Sharing")]),e._v(" "),r("p",[e._v("Directories, Frameworks, and Resources can be shared with other users either by sharing a link to the item or by adding owners and readers (with Admin or View privileges) to the item.")]),e._v(" "),r("p",[e._v("You can only manage users on an item if you are an owner (listed as "),r("em",[e._v("Admin")]),e._v(") for the item.")]),e._v(" "),r("h2",{attrs:{id:"sharing-a-link-to-a-directory-or-framework"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sharing-a-link-to-a-directory-or-framework"}},[e._v("#")]),e._v(" Sharing a Link to a Directory or Framework")]),e._v(" "),r("p",[e._v("To copy a link to a directory or framework:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the name of the item to show its Information on the right side panel.")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Details")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("copy link")])]),e._v(" "),r("ul",[r("li",[e._v("This copies the shareable link to your clipboard")])])])]),e._v(" "),r("p",[e._v("This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(555),alt:"Directory Management - Directories Copy Link"}})]),e._v(" "),r("h2",{attrs:{id:"managing-users-for-an-item"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-for-an-item"}},[e._v("#")]),e._v(" Managing Users for an Item")]),e._v(" "),r("p",[e._v("To control who can view+edit a directory, framework, or resource:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the item to show it in the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(".")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Users")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("manage users and privacy")])]),e._v(".")])]),e._v(" "),r("p",[r("img",{attrs:{src:t(436),alt:"Directory Management - Directories Shareable Link"}})]),e._v(" "),r("p",[e._v("A dialogue window shows options for adding Users or Groups to the item. You can:")]),e._v(" "),r("ul",[r("li",[e._v("View the current list of users with privileges ("),r("em",[e._v("Admin")]),e._v(" or "),r("em",[e._v("View")]),e._v(")")]),e._v(" "),r("li",[e._v("Add new users or organizations")]),e._v(" "),r("li",[e._v("Delete current users or organizations")])]),e._v(" "),r("p",[e._v("The dialogue has an option to set the item as "),r("em",[r("strong",[e._v("Public")])]),e._v(" or "),r("em",[r("strong",[e._v("Private")])])]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Public")]),e._v(" items will be viewable by all users\n"),r("ul",[r("li",[e._v("Public frameworks can be exported when opened")])])])]),e._v(" "),r("p",[e._v("For directories and frameworks, a shareable link shows at the top of the window and provides a button to copy the link to your clipboard. This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(556),alt:"Directory Management - Directories Shareable Link"}})])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{436:function(e,r,t){e.exports=t.p+"assets/img/directory-information-users.fda33476.png"},567:function(e,r,t){e.exports=t.p+"assets/img/directory-copy-link.84a16b04.png"},568:function(e,r,t){e.exports=t.p+"assets/img/directory-shareable-link.cc80078d.png"},661:function(e,r,t){"use strict";t.r(r);var i=t(69),o=Object(i.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"managing-users-and-sharing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing"}},[e._v("#")]),e._v(" Managing Users and Sharing")]),e._v(" "),r("p",[e._v("Directories, Frameworks, and Resources can be shared with other users either by sharing a link to the item or by adding owners and readers (with Admin or View privileges) to the item.")]),e._v(" "),r("p",[e._v("You can only manage users on an item if you are an owner (listed as "),r("em",[e._v("Admin")]),e._v(") for the item.")]),e._v(" "),r("h2",{attrs:{id:"sharing-a-link-to-a-directory-or-framework"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sharing-a-link-to-a-directory-or-framework"}},[e._v("#")]),e._v(" Sharing a Link to a Directory or Framework")]),e._v(" "),r("p",[e._v("To copy a link to a directory or framework:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the name of the item to show its Information on the right side panel.")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Details")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("copy link")])]),e._v(" "),r("ul",[r("li",[e._v("This copies the shareable link to your clipboard")])])])]),e._v(" "),r("p",[e._v("This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(567),alt:"Directory Management - Directories Copy Link"}})]),e._v(" "),r("h2",{attrs:{id:"managing-users-for-an-item"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-for-an-item"}},[e._v("#")]),e._v(" Managing Users for an Item")]),e._v(" "),r("p",[e._v("To control who can view+edit a directory, framework, or resource:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the item to show it in the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(".")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Users")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("manage users and privacy")])]),e._v(".")])]),e._v(" "),r("p",[r("img",{attrs:{src:t(436),alt:"Directory Management - Directories Shareable Link"}})]),e._v(" "),r("p",[e._v("A dialogue window shows options for adding Users or Groups to the item. You can:")]),e._v(" "),r("ul",[r("li",[e._v("View the current list of users with privileges ("),r("em",[e._v("Admin")]),e._v(" or "),r("em",[e._v("View")]),e._v(")")]),e._v(" "),r("li",[e._v("Add new users or organizations")]),e._v(" "),r("li",[e._v("Delete current users or organizations")])]),e._v(" "),r("p",[e._v("The dialogue has an option to set the item as "),r("em",[r("strong",[e._v("Public")])]),e._v(" or "),r("em",[r("strong",[e._v("Private")])])]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Public")]),e._v(" items will be viewable by all users\n"),r("ul",[r("li",[e._v("Public frameworks can be exported when opened")])])])]),e._v(" "),r("p",[e._v("For directories and frameworks, a shareable link shows at the top of the window and provides a button to copy the link to your clipboard. This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(568),alt:"Directory Management - Directories Shareable Link"}})])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/35.0ff4689f.js.gz b/docs/assets/js/35.0ff4689f.js.gz new file mode 100644 index 000000000..4879e0e73 Binary files /dev/null and b/docs/assets/js/35.0ff4689f.js.gz differ diff --git a/docs/assets/js/35.2af3a928.js.gz b/docs/assets/js/35.2af3a928.js.gz deleted file mode 100644 index b7ef73f4c..000000000 Binary files a/docs/assets/js/35.2af3a928.js.gz and /dev/null differ diff --git a/docs/assets/js/41.1b6c3bca.js.gz b/docs/assets/js/41.1b6c3bca.js.gz deleted file mode 100644 index da1df9391..000000000 Binary files a/docs/assets/js/41.1b6c3bca.js.gz and /dev/null differ diff --git a/docs/assets/js/41.1b6c3bca.js b/docs/assets/js/41.de2955e8.js similarity index 99% rename from docs/assets/js/41.1b6c3bca.js rename to docs/assets/js/41.de2955e8.js index bc5a51264..3ad3341db 100644 --- a/docs/assets/js/41.1b6c3bca.js +++ b/docs/assets/js/41.de2955e8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{634:function(e,t,a){e.exports=a.p+"assets/img/centralized-competency-profile.7c3bc92c.png"},720:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"assertion-processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processing"}},[e._v("#")]),e._v(" Assertion Processing")]),e._v(" "),t("p",[t("em",[e._v("Last updated 2018-12-13")])]),e._v(" "),t("h2",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("This page describes:")]),e._v(" "),t("ul",[t("li",[e._v("How Assertions (claims of competency made on behalf of an “entity”) are stored in CaSS")]),e._v(" "),t("li",[e._v("How third-party applications query CaSS to determine competencies held by an entity")]),e._v(" "),t("li",[e._v("How CaSS responds to such queries")]),e._v(" "),t("li",[e._v("How CaSS can be used as a more traditional “profile manager.”")]),e._v(" "),t("li",[e._v("How CaSS implements the ADL Total Learning Architecture “profile API.”")])]),e._v(" "),t("p",[e._v("This page describes the procedure CaSS currently uses to answer a query about a person’s competency and the procedure that is proposed for future releases. The form of the query is “Does subject hold competency C?”")]),e._v(" "),t("ul",[t("li",[e._v("The subject is the person whose competence is being queried")]),e._v(" "),t("li",[e._v("The competency C being queried is called the root competency")])]),e._v(" "),t("p",[e._v("This page only describes the algorithms, and does not address security, privacy, or the interaction of the assertion processing and query/response mechanisms with external systems.")]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("CaSS is designed to collect and provide information about a learner’s or employee’s competencies and skills to systems used in education, training, talent management, and workforce development. The simplest way to conceptualize the role of CaSS is as a “profile service” that collects, maintains, and publishes a list of the competencies that a learner or employee or job applicant has mastered (Figure 1). CaSS can operate in this mode, but this conceptualization fails to recognize the many real-world complexities and requirements surrounding the collection and determination of competencies. This section briefly discusses these as informative background.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(634),alt:"Image"}})]),e._v(" "),t("h3",{attrs:{id:"competency-articulation-via-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-articulation-via-relations"}},[e._v("#")]),e._v(" Competency Articulation via Relations")]),e._v(" "),t("p",[e._v("The first (and most obvious) requirement for sharing competency records among multiple systems is that they reference the same competencies or, barring that, have the ability to articulate different sets of competencies that address related skills, knowledge, and ability. The CaSS framework and competency services enable systems to reference common sets of competencies and enables relations to be defined among different competencies. However, it is impractical to expect that the systems using CaSS will be always be aware of the frameworks referenced by other such systems and, even if they are aware, that they will be able to use the relations in computations. It is therefore a requirement that CaSS be able to apply relations among competencies to competency data.")]),e._v(" "),t("h3",{attrs:{id:"granularity-and-roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#granularity-and-roll-up-rules"}},[e._v("#")]),e._v(" Granularity and Roll-up Rules")]),e._v(" "),t("p",[e._v("The second requirement for sharing competency records stems from use cases in which the competency frameworks used by one system are at a completely different level of granularity than those used by another system. For example, intelligent tutoring systems such as "),t("a",{attrs:{href:"https://www.carnegielearning.com/learning-solutions/software/cognitive-tutor/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Carnegie Learning’s cognitive tutors"),t("OutboundLink")],1),e._v(" track highly granular “knowledge components,” competency-enabled learning management systems such as "),t("a",{attrs:{href:"https://download.moodle.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Moodle 3.1"),t("OutboundLink")],1),e._v(" assign competencies to activities and assessments, and systems used for staffing and career management are generally concerned with much less granular job and workforce skills. For a network such as that idealized in Figure 1 on the previous page to make sense, an intelligent tutoring system must be able to report data at the level of knowledge components while an applicant tracking system (ATS) consumes them at the level of job skills. The CaSS framework and competency services have the ability to store “roll-up rules” and relations that can be used to determine how knowledge about mastery of more granular competencies can be used as evidence of mastery of less granular competencies, but it is again unreasonable to expect that the ATS will know about the relevant relations and roll-up rules, much less know how to compute with them. Moreover, even if every collaborating system did retrieve and perform such computations, it is unlikely that they would do so in a consistent manner. It is therefore a requirement that CaSS be able to apply relations and roll-up rules to compute the state of a competency from the reported state of other related competencies, and that it do so in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("h3",{attrs:{id:"confidence-evidence-and-validity"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#confidence-evidence-and-validity"}},[e._v("#")]),e._v(" Confidence, Evidence, and Validity")]),e._v(" "),t("p",[e._v("The third requirement for sharing competency records comes from use cases in which:")]),e._v(" "),t("ul",[t("li",[e._v("Multiple systems report data about an individual’s competency, which could be conflicting")]),e._v(" "),t("li",[e._v("Users have a desire to know how much they can trust data in an individual’s profile")]),e._v(" "),t("li",[e._v("Users want to examine evidence of competency, not just statements about competency")]),e._v(" "),t("li",[e._v("Data is time limited, as often occurs with certifications or qualifications")])]),e._v(" "),t("p",[e._v("All of these scenarios commonly arise in discussions about competencies with designers of education and training systems and proponents of competency-based approaches. It is therefore a requirement that CaSS be able to collect and report evidence, time limitations, and information on the confidence of an assertion about a learner’s competency. It is also a requirement that CaSS be able to resolve conflicting data in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("p",[e._v("Another phenomenon that is frequently mentioned and that is supported by cognitive science as well as real-world experience is that skills and knowledge can deteriorate or be lost over time unless they are practiced or reinforced. Although it is hard to find existing systems that take this into account when maintaining competency records, in designing CaSS it was considered a requirement that CaSS be able to associate decay functions with reported competencies.")]),e._v(" "),t("h3",{attrs:{id:"assertions-rather-than-records"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertions-rather-than-records"}},[e._v("#")]),e._v(" Assertions Rather than Records")]),e._v(" "),t("p",[e._v("Assessments can vary wildly with regard to "),t("a",{attrs:{href:"http://www.hr-guide.com/data/G362.htm",target:"_blank",rel:"noopener noreferrer"}},[e._v("reliability and validity"),t("OutboundLink")],1),e._v(". In most cases, the reliability and validity of an assessment will not be known, and even in the case of assessments vetted by professional psychometricians, it is naive to treat assessment results as proving that an individual possesses a given competency. Moreover, claims of competency collected by CaSS may not even be based on an assessment, e.g. they could be derived from self-declarations or made under the assumption that a learner who has completed an activity has mastered the skills and knowledge addressed by that activity. For this reason, CaSS takes the generally accepted view that information about the competencies held by an individual consists of competency assertions. This is particularly important in "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/High-stakes_testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("high-stakes settings"),t("OutboundLink")],1),e._v(", where making an unsupported claim that CaSS maintains an authoritative record of competencies could have undesirable consequences.")]),e._v(" "),t("h3",{attrs:{id:"negative-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#negative-assertions"}},[e._v("#")]),e._v(" Negative Assertions")]),e._v(" "),t("p",[e._v("Although traditional academic transcripts can include records of failing grades, the most commonly held view of a “competency profile” is that it lists the competencies that an individual holds and does not address the ones that are not held. Assertions, however, can be made to the effect that a test was not passed or that an individual failed to demonstrate a competency. Both "),t("a",{attrs:{href:"https://adlnet.gov/projects/scorm/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SCORM"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://adlnet.gov/projects/xapi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("XAPI"),t("OutboundLink")],1),e._v(" reporting mechanisms allow for this, as do many evaluation systems. It is therefore a requirement that CaSS receive and make both positive and negative assertions about an individual’s competencies.")]),e._v(" "),t("p",[e._v("This requirement is not without controversy. The ability to report that someone has demonstrate a lack of competency puts privacy and policies concerning the control of competency data in a new light. It is therefore a requirement that CaSS be configurable to at least not make negative assertions, regardless of whether it has collected any. It is also a requirement that CaSS take negative assertions into account when resolving conflicting data.")]),e._v(" "),t("h3",{attrs:{id:"privacy-and-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#privacy-and-security"}},[e._v("#")]),e._v(" Privacy and Security")]),e._v(" "),t("p",[e._v("The final major set of requirements concern privacy and security. Data about the competencies held by an individual can be highly sensitive data. Some basic considerations are:")]),e._v(" "),t("ul",[t("li",[e._v("Many laws and regulations require that assessment data, grades, and other competency profile information be properly safeguarded and be divulged only on a need-to-know basis and for specific purposes.")]),e._v(" "),t("li",[e._v("CaSS may operate in environments where portions of a learner’s competency profile are classified and non-public while other portions are unclassified and should be made available for the benefit of the learner. An example is a military profile where some skills and abilities are not shared with civilian organizations but where learners want other skills and abilities to be certified for future civilian employment and career management purposes.")]),e._v(" "),t("li",[e._v("In some use cases the mere fact that an individual has been assessed on or attempted to acquire a competency may be considered sensitive information and protected by privacy policies, just as privacy policies "),t("a",{attrs:{href:"http://www.ala.org/advocacy/intfreedom/librarybill/interpretations/qa-privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("protect the confidentiality of a user’s selection of reading materials"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("In other use cases, information should be exchanged openly within a network of collaborating systems, and in still other use cases, data on learning outcomes and competencies must be made available to researchers without revealing the identity of the subjects (or any other PII).")])]),e._v(" "),t("p",[e._v("More information is in the "),t("a",{attrs:{href:"TODOTODOTODO"}},[e._v("CaSS Privacy Manual")]),e._v(". From an assertion processing perspective, it is a requirement that CaSS implement a robust and flexible security and privacy framework that supports a wide range of policies, use cases, and requirements.")]),e._v(" "),t("h2",{attrs:{id:"definitions-and-assumptions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-assumptions"}},[e._v("#")]),e._v(" Definitions and Assumptions")]),e._v(" "),t("p",[e._v("The remainder of this document comprises the technical specifications for assertion processing in CaSS.")]),e._v(" "),t("h3",{attrs:{id:"definitions-and-notation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-notation"}},[e._v("#")]),e._v(" Definitions and Notation")]),e._v(" "),t("p",[t("strong",[e._v("Assertion")])]),e._v(" "),t("blockquote",[t("p",[e._v("An object with the properties defined in the "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("Assertion schema"),t("OutboundLink")],1),e._v(". The general form of an assertion is:")]),e._v(" "),t("p",[t("strong",[e._v("Agent A")]),e._v(" asserts at "),t("strong",[e._v("time T")]),e._v(" with "),t("strong",[e._v("validity through time V")]),e._v(" and with "),t("strong",[e._v("confidence p")]),e._v(" that "),t("strong",[e._v("subject S")]),e._v(" holds or does not hold "),t("strong",[e._v("competency C")]),e._v(" at "),t("strong",[e._v("level L")]),e._v(" based on associated "),t("strong",[e._v("evidence E")])]),e._v(" "),t("ul",[t("li",[e._v("p is a number in the closed interval [0,1]")]),e._v(" "),t("li",[e._v("T and V are datetime objects")]),e._v(" "),t("li",[e._v("E is a link to associated evidence")]),e._v(" "),t("li",[e._v("C is identified via a URL that points to a CaSS competency")]),e._v(" "),t("li",[e._v("A, S are CaSS identities")]),e._v(" "),t("li",[e._v("p, E, L, T, and V are all optional.")])]),e._v(" "),t("p",[e._v("The object model also supports an optional decay function, which is not used in the current release of CaSS.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Processor")])]),e._v(" "),t("blockquote",[t("p",[e._v("A component of a CaSS service that answers queries from providers, collects the information needed to answer those queries, and applies an appropriate processing algorithm to compute the answers. It is assumed that an assertion processor can gather the information it requires and can formulate and transmit responses to queries using CaSS APIs.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Provider")])]),e._v(" "),t("blockquote",[t("p",[e._v("A software application that can provide assertions. In this document, we assume that an assertion processor maintains a list of trusted assertion providers, which are referred to as the providers.")])]),e._v(" "),t("p",[t("strong",[e._v("Identities")])]),e._v(" "),t("blockquote",[t("p",[e._v("The public key portion of a CaSS identity. They securely and uniquely identify people, organizations, or software applications (see the "),t("RouterLink",{attrs:{to:"/guide/overview/#cass-security-framework"}},[e._v("CaSS Security Framework")]),e._v("). An individual can have multiple identities in CaSS.")],1)]),e._v(" "),t("p",[t("strong",[e._v("Processing Algorithm")])]),e._v(" "),t("blockquote",[t("p",[e._v("An algorithm that (potentially) considers relations, roll-up rules, and data from collected assertions to determine whether or not an identity holds a given competency and (potentially) associates a confidence, evidence, and other data from the assertion information model with that determination.")])]),e._v(" "),t("p",[t("strong",[e._v("Roll-up Rule")])]),e._v(" "),t("blockquote",[t("p",[e._v("A rule that defines a computation that produces a mastery estimate for a given competency based on mastery estimates for other competencies, see the "),t("a",{attrs:{href:"http://schema.cassproject.org/#RollupRule",target:"_blank",rel:"noopener noreferrer"}},[e._v("Roll-up Rule schema"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("strong",[e._v("Root Competency")])]),e._v(" "),t("blockquote",[t("p",[e._v("When an assertion processor is queried about a competency, that competency becomes the root competency. The processor may use information about other competencies as well.")])]),e._v(" "),t("h3",{attrs:{id:"supported-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-relations"}},[e._v("#")]),e._v(" Supported Relations")]),e._v(" "),t("p",[e._v("The following (and only the following) relations are currently supported by CaSS assertion processors:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Broadens/Narrows")]),e._v(" - B narrows A if B is more specific than A. Broadens and narrows are inverse relationships, i.e. A broadens B and is more general than B if and only if B narrows A and is more specific than A.")]),e._v(" "),t("li",[t("strong",[e._v("Requires")]),e._v(" - A requires B if A cannot be held without holding B. This is stronger than A broadens B in some models. The inverse is IsRequiredBy.")]),e._v(" "),t("li",[t("strong",[e._v("Equivalent")]),e._v(" - A is equivalent to B if they can be treated as the same competency for the purpose of mastery. Note that if A and B are in different frameworks, it is possible that A is equivalent to B in A’s framework (e.g. the State of Oregon considers Utah’s competency as equivalent) but not in B’s framework (the state of Utah does not consider Oregon’s competency to be equivalent.).")])]),e._v(" "),t("h2",{attrs:{id:"assertion-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-api"}},[e._v("#")]),e._v(" Assertion API")]),e._v(" "),t("p",[e._v("External systems query CaSS for information about an individual’s competency via the "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/AssertionProcessor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("following API"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("h3",{attrs:{id:"query-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#query-api"}},[e._v("#")]),e._v(" Query API")]),e._v(" "),t("div",{staticClass:"language-js extra-class"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function-variable function"}},[e._v("has")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("function")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token parameter"}},[e._v("subject"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" competency"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" level"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" context"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" additionalSignatures"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" success"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" ask"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" failure")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),t("ul",[t("li",[t("code",[e._v("subject")]),e._v(" - One or more identities that belong to an individual. (required).")]),e._v(" "),t("li",[t("code",[e._v("competency")]),e._v(" - The queried competency. (required)")]),e._v(" "),t("li",[t("code",[e._v("level")]),e._v(" - The queried level of the competency. (optional)")]),e._v(" "),t("li",[t("code",[e._v("context")]),e._v(" - The framework in which the competency is to be interpreted. (required)")]),e._v(" "),t("li",[t("code",[e._v("additionalSignatures")]),e._v(" - Additional, time limited, authorizations that can be granted for a single query. (Not currently used.)")]),e._v(" "),t("li",[t("code",[e._v("success")]),e._v(" - Callback method to retrieve the answer to a query when the query has been successfully processed.")]),e._v(" "),t("li",[t("code",[e._v("ask")]),e._v(" - If an assertion processor requires additional information, the “ask” parameter defines the method that the assertion processor should invoke to get this information. (optional)")]),e._v(" "),t("li",[t("code",[e._v("failure")]),e._v(" - The method to call if assertion processing fails.")])]),e._v(" "),t("h3",{attrs:{id:"storing-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#storing-assertions"}},[e._v("#")]),e._v(" Storing Assertions")]),e._v(" "),t("p",[e._v("External systems store assertions "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" in the CaSS repository using the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/"}},[e._v("CaSS Repository API")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"current-assertion-processing-algorithm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-assertion-processing-algorithm"}},[e._v("#")]),e._v(" Current Assertion Processing Algorithm")]),e._v(" "),t("h3",{attrs:{id:"step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[e._v("#")]),e._v(" STEP 1")]),e._v(" "),t("p",[e._v("The first step is to create a processing graph G for the root competency. CaSS does this by starting with the root node R and retrieving all relations to other competencies. Each such relation defines an edge in the graph with nodes representing the two related competencies. If the same competency appears in two relations, it is represented twice by two different nodes. The edges are labelled with the relations (i.e. A requires B, A isRequiredBy B, A broadens B, A narrows B, or A is equivalent to B). This process is then repeated for each node in the graph, adding any relations that have not previously been retrieved and is iterated until no more relations can be found.")]),e._v(" "),t("p",[e._v("The result is a tree G with root R.")]),e._v(" "),t("h3",{attrs:{id:"step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[e._v("#")]),e._v(" STEP 2")]),e._v(" "),t("p",[e._v("The next steps involve determining the values of the nodes. In this scheme, a node (representing a competency) can have four values:")]),e._v(" "),t("ul",[t("li",[e._v("T means that the competency is held")]),e._v(" "),t("li",[e._v("F means that the competency is not held")]),e._v(" "),t("li",[e._v("I means that the mastery status of the competency is indeterminate")]),e._v(" "),t("li",[e._v("U means that the mastery status of the competency is unknown")])]),e._v(" "),t("p",[e._v("The second step of the algorithm is to initialize all nodes with "),t("strong",[e._v("U")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"step-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[e._v("#")]),e._v(" STEP 3")]),e._v(" "),t("p",[e._v("The algorithm retrieves all assertions for the leaves of G.")]),e._v(" "),t("p",[e._v("In this algorithm, all assertions are treated as T (the competency is held) or F (the competency is not held).")]),e._v(" "),t("p",[e._v("All roll-up roles for the leaf nodes are also computed using assertions retrieved for all target competencies in the roll-up rule. Each roll-up rule is considered to be an assertion, but have the values I or U in addition to T or F.")]),e._v(" "),t("p",[e._v("The value of a node is set to:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("U")]),e._v(" if all assertions are U or no assertions exist")]),e._v(" "),t("li",[t("strong",[e._v("T")]),e._v(" if all assertions about that node are T or U")]),e._v(" "),t("li",[t("strong",[e._v("F")]),e._v(" if all assertions about that node are F or U")]),e._v(" "),t("li",[t("strong",[e._v("I")]),e._v(" otherwise")])]),e._v(" "),t("h3",{attrs:{id:"step-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[e._v("#")]),e._v(" STEP 4")]),e._v(" "),t("p",[e._v("The next step is to examine all parents of leaf nodes. In doing so, the values of each child of a node are considered assertions in the following way, where:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("P")]),e._v(" is the parent node")]),e._v(" "),t("li",[t("strong",[e._v("C")]),e._v(" is the child node")])]),e._v(" "),t("p",[e._v("Rules:")]),e._v(" "),t("ul",[t("li",[e._v("If P broadens C, and C = F, then P is asserted to be F (holding P implies holding C)")]),e._v(" "),t("li",[e._v("If P narrows C, and C = T, then P is asserted to be T (holding C implies holding P)")]),e._v(" "),t("li",[e._v("If P requires C, and C = F, then P is asserted to be F")]),e._v(" "),t("li",[e._v("If P is required by C, and C = T, then P is asserted to be T")]),e._v(" "),t("li",[e._v("If P is equivalent to C, the value of C is asserted for P (T, F or I)")])]),e._v(" "),t("p",[e._v("The values of all the parent nodes P are computed as in STEP 3 using direct assertions about the parent nodes, the assertions derived from all child nodes as above, and all roll-up rules. Equivalently, the leaf nodes are deleted, the assertions derived from them are retained, and STEP 3 is repeated.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("When a roll-up rule is applied to a node A, they only use direct assertions about the competencies in the rule. Roll-up rules can produce indeterminate or unknown results when data about the competencies in the rule are missing or conflicting. This behavior is determined by the definition of the rule.")])]),e._v(" "),t("h3",{attrs:{id:"step-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[e._v("#")]),e._v(" STEP 5")]),e._v(" "),t("p",[e._v("STEP 4 is repeated until the root node R is reached. The processing algorithm then returns the value of R.")]),e._v(" "),t("h3",{attrs:{id:"the-profile-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-profile-api"}},[e._v("#")]),e._v(" The Profile API")]),e._v(" "),t("p",[e._v("In addition to the Query API, CaSS implements a profile web service API that can be used to retrieve the type of learner profile depicted in Figure 1. This API is used by an external system to:")]),e._v(" "),t("ul",[t("li",[e._v("Determine whether an individual represented by a user ID holds a given competency. The API will return T if the answer is “"),t("em",[e._v("yes")]),e._v("” (as determined by the assertion processor) and F otherwise.")]),e._v(" "),t("li",[e._v("Retrieve a list of all competencies in a given framework held by an individual represented by a user ID.")]),e._v(" "),t("li",[e._v("Set the value of a competency. When this is done, all previous values are overwritten.")])]),e._v(" "),t("p",[e._v("This API can be invoked with processing turned on or off. When turned on, the assertion processor functions normally. When turned off, the value of a competency is determined only by the latests assertion made about that competency by an external system.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This Profile API was developed to implement the classic notion of a profile that collaborating systems in a closed network can use to read and write the mastery stati of the a shared set of competencies. It purposely circumvents the CaSS security framework.")])]),e._v(" "),t("h3",{attrs:{id:"roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roll-up-rules"}},[e._v("#")]),e._v(" Roll-up Rules")]),e._v(" "),t("p",[e._v("Roll-up rules in CaSS can currently be defined as nested "),t("strong",[e._v("AND")]),e._v("'s and "),t("strong",[e._v("OR")]),e._v("'s of a set of competencies. These are evaluated based on assertions about these competencies in the manner described in STEP 3 with the addition that a confidence threshold can be included. The syntax is shown in the following example:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("(\n [competency:A AND confidence:>0.6] AND\n [competency:B AND confidence:>0.6]\n) OR\n[competency:C AND confidence:>0.9] OR\n(\n [competency:D] AND [competency:C]\n)\n")])])]),t("p",[e._v("Where A, B, C, and D are URLs to competencies managed by CaSS.")]),e._v(" "),t("h2",{attrs:{id:"expected-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-changes"}},[e._v("#")]),e._v(" Expected Changes")]),e._v(" "),t("p",[e._v("The following changes and modifications are anticipated for future releases:")]),e._v(" "),t("ul",[t("li",[e._v("An assertion processor can keep a table of reputations that indicates how much it can rely on responses from each provider. A reputation is a number in the closed interval [0,1] with 0 meaning that the assertions from the provider are unreliable and 1 meaning the provider’s assertions are completely reliable. Best practices for determining or interpreting the value of a reputation are to be determined.")]),e._v(" "),t("li",[e._v("Future implementations may include reputations for agents as well.")]),e._v(" "),t("li",[e._v("Instead of creating duplicate nodes to create a tree, the processing graph will start out as a directed graph (A → B if A broadens or requires B) and cycles will be collapsed into equivalence classes represented by a single node. In this setup, each competency will be represented only once in the graph.")]),e._v(" "),t("li",[e._v("The value of each node will be a real number in the closed interval [-1,1]. Negative numbers indicate the belief that an identity does not hold a competency. The value derived from an assertion will be the product of the confidence and ±1 (-1 for a negative assertion and +1 for a positive assertion), which may additionally be adjusted based on reputation.")]),e._v(" "),t("li",[e._v("The graph will be processed depth first using a formula that weighs multiple assertions to derive a value.")]),e._v(" "),t("li",[e._v("The associated API will be configurable to convert values of the root node to scales such as 1 - 4 or a discrete grading system. This mimics computations such as “grade point average” and is compatible with the way that certain learning management systems view competency assertions.")]),e._v(" "),t("li",[e._v("We anticipate support for more sophisticated roll-up rules that can, for example, require that the sum of the confidences of multiple assertions exceed some threshold.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{634:function(e,t,a){e.exports=a.p+"assets/img/centralized-competency-profile.7c3bc92c.png"},718:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"assertion-processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processing"}},[e._v("#")]),e._v(" Assertion Processing")]),e._v(" "),t("p",[t("em",[e._v("Last updated 2018-12-13")])]),e._v(" "),t("h2",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("This page describes:")]),e._v(" "),t("ul",[t("li",[e._v("How Assertions (claims of competency made on behalf of an “entity”) are stored in CaSS")]),e._v(" "),t("li",[e._v("How third-party applications query CaSS to determine competencies held by an entity")]),e._v(" "),t("li",[e._v("How CaSS responds to such queries")]),e._v(" "),t("li",[e._v("How CaSS can be used as a more traditional “profile manager.”")]),e._v(" "),t("li",[e._v("How CaSS implements the ADL Total Learning Architecture “profile API.”")])]),e._v(" "),t("p",[e._v("This page describes the procedure CaSS currently uses to answer a query about a person’s competency and the procedure that is proposed for future releases. The form of the query is “Does subject hold competency C?”")]),e._v(" "),t("ul",[t("li",[e._v("The subject is the person whose competence is being queried")]),e._v(" "),t("li",[e._v("The competency C being queried is called the root competency")])]),e._v(" "),t("p",[e._v("This page only describes the algorithms, and does not address security, privacy, or the interaction of the assertion processing and query/response mechanisms with external systems.")]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("CaSS is designed to collect and provide information about a learner’s or employee’s competencies and skills to systems used in education, training, talent management, and workforce development. The simplest way to conceptualize the role of CaSS is as a “profile service” that collects, maintains, and publishes a list of the competencies that a learner or employee or job applicant has mastered (Figure 1). CaSS can operate in this mode, but this conceptualization fails to recognize the many real-world complexities and requirements surrounding the collection and determination of competencies. This section briefly discusses these as informative background.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(634),alt:"Image"}})]),e._v(" "),t("h3",{attrs:{id:"competency-articulation-via-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-articulation-via-relations"}},[e._v("#")]),e._v(" Competency Articulation via Relations")]),e._v(" "),t("p",[e._v("The first (and most obvious) requirement for sharing competency records among multiple systems is that they reference the same competencies or, barring that, have the ability to articulate different sets of competencies that address related skills, knowledge, and ability. The CaSS framework and competency services enable systems to reference common sets of competencies and enables relations to be defined among different competencies. However, it is impractical to expect that the systems using CaSS will be always be aware of the frameworks referenced by other such systems and, even if they are aware, that they will be able to use the relations in computations. It is therefore a requirement that CaSS be able to apply relations among competencies to competency data.")]),e._v(" "),t("h3",{attrs:{id:"granularity-and-roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#granularity-and-roll-up-rules"}},[e._v("#")]),e._v(" Granularity and Roll-up Rules")]),e._v(" "),t("p",[e._v("The second requirement for sharing competency records stems from use cases in which the competency frameworks used by one system are at a completely different level of granularity than those used by another system. For example, intelligent tutoring systems such as "),t("a",{attrs:{href:"https://www.carnegielearning.com/learning-solutions/software/cognitive-tutor/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Carnegie Learning’s cognitive tutors"),t("OutboundLink")],1),e._v(" track highly granular “knowledge components,” competency-enabled learning management systems such as "),t("a",{attrs:{href:"https://download.moodle.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Moodle 3.1"),t("OutboundLink")],1),e._v(" assign competencies to activities and assessments, and systems used for staffing and career management are generally concerned with much less granular job and workforce skills. For a network such as that idealized in Figure 1 on the previous page to make sense, an intelligent tutoring system must be able to report data at the level of knowledge components while an applicant tracking system (ATS) consumes them at the level of job skills. The CaSS framework and competency services have the ability to store “roll-up rules” and relations that can be used to determine how knowledge about mastery of more granular competencies can be used as evidence of mastery of less granular competencies, but it is again unreasonable to expect that the ATS will know about the relevant relations and roll-up rules, much less know how to compute with them. Moreover, even if every collaborating system did retrieve and perform such computations, it is unlikely that they would do so in a consistent manner. It is therefore a requirement that CaSS be able to apply relations and roll-up rules to compute the state of a competency from the reported state of other related competencies, and that it do so in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("h3",{attrs:{id:"confidence-evidence-and-validity"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#confidence-evidence-and-validity"}},[e._v("#")]),e._v(" Confidence, Evidence, and Validity")]),e._v(" "),t("p",[e._v("The third requirement for sharing competency records comes from use cases in which:")]),e._v(" "),t("ul",[t("li",[e._v("Multiple systems report data about an individual’s competency, which could be conflicting")]),e._v(" "),t("li",[e._v("Users have a desire to know how much they can trust data in an individual’s profile")]),e._v(" "),t("li",[e._v("Users want to examine evidence of competency, not just statements about competency")]),e._v(" "),t("li",[e._v("Data is time limited, as often occurs with certifications or qualifications")])]),e._v(" "),t("p",[e._v("All of these scenarios commonly arise in discussions about competencies with designers of education and training systems and proponents of competency-based approaches. It is therefore a requirement that CaSS be able to collect and report evidence, time limitations, and information on the confidence of an assertion about a learner’s competency. It is also a requirement that CaSS be able to resolve conflicting data in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("p",[e._v("Another phenomenon that is frequently mentioned and that is supported by cognitive science as well as real-world experience is that skills and knowledge can deteriorate or be lost over time unless they are practiced or reinforced. Although it is hard to find existing systems that take this into account when maintaining competency records, in designing CaSS it was considered a requirement that CaSS be able to associate decay functions with reported competencies.")]),e._v(" "),t("h3",{attrs:{id:"assertions-rather-than-records"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertions-rather-than-records"}},[e._v("#")]),e._v(" Assertions Rather than Records")]),e._v(" "),t("p",[e._v("Assessments can vary wildly with regard to "),t("a",{attrs:{href:"http://www.hr-guide.com/data/G362.htm",target:"_blank",rel:"noopener noreferrer"}},[e._v("reliability and validity"),t("OutboundLink")],1),e._v(". In most cases, the reliability and validity of an assessment will not be known, and even in the case of assessments vetted by professional psychometricians, it is naive to treat assessment results as proving that an individual possesses a given competency. Moreover, claims of competency collected by CaSS may not even be based on an assessment, e.g. they could be derived from self-declarations or made under the assumption that a learner who has completed an activity has mastered the skills and knowledge addressed by that activity. For this reason, CaSS takes the generally accepted view that information about the competencies held by an individual consists of competency assertions. This is particularly important in "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/High-stakes_testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("high-stakes settings"),t("OutboundLink")],1),e._v(", where making an unsupported claim that CaSS maintains an authoritative record of competencies could have undesirable consequences.")]),e._v(" "),t("h3",{attrs:{id:"negative-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#negative-assertions"}},[e._v("#")]),e._v(" Negative Assertions")]),e._v(" "),t("p",[e._v("Although traditional academic transcripts can include records of failing grades, the most commonly held view of a “competency profile” is that it lists the competencies that an individual holds and does not address the ones that are not held. Assertions, however, can be made to the effect that a test was not passed or that an individual failed to demonstrate a competency. Both "),t("a",{attrs:{href:"https://adlnet.gov/projects/scorm/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SCORM"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://adlnet.gov/projects/xapi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("XAPI"),t("OutboundLink")],1),e._v(" reporting mechanisms allow for this, as do many evaluation systems. It is therefore a requirement that CaSS receive and make both positive and negative assertions about an individual’s competencies.")]),e._v(" "),t("p",[e._v("This requirement is not without controversy. The ability to report that someone has demonstrate a lack of competency puts privacy and policies concerning the control of competency data in a new light. It is therefore a requirement that CaSS be configurable to at least not make negative assertions, regardless of whether it has collected any. It is also a requirement that CaSS take negative assertions into account when resolving conflicting data.")]),e._v(" "),t("h3",{attrs:{id:"privacy-and-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#privacy-and-security"}},[e._v("#")]),e._v(" Privacy and Security")]),e._v(" "),t("p",[e._v("The final major set of requirements concern privacy and security. Data about the competencies held by an individual can be highly sensitive data. Some basic considerations are:")]),e._v(" "),t("ul",[t("li",[e._v("Many laws and regulations require that assessment data, grades, and other competency profile information be properly safeguarded and be divulged only on a need-to-know basis and for specific purposes.")]),e._v(" "),t("li",[e._v("CaSS may operate in environments where portions of a learner’s competency profile are classified and non-public while other portions are unclassified and should be made available for the benefit of the learner. An example is a military profile where some skills and abilities are not shared with civilian organizations but where learners want other skills and abilities to be certified for future civilian employment and career management purposes.")]),e._v(" "),t("li",[e._v("In some use cases the mere fact that an individual has been assessed on or attempted to acquire a competency may be considered sensitive information and protected by privacy policies, just as privacy policies "),t("a",{attrs:{href:"http://www.ala.org/advocacy/intfreedom/librarybill/interpretations/qa-privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("protect the confidentiality of a user’s selection of reading materials"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("In other use cases, information should be exchanged openly within a network of collaborating systems, and in still other use cases, data on learning outcomes and competencies must be made available to researchers without revealing the identity of the subjects (or any other PII).")])]),e._v(" "),t("p",[e._v("More information is in the "),t("a",{attrs:{href:"TODOTODOTODO"}},[e._v("CaSS Privacy Manual")]),e._v(". From an assertion processing perspective, it is a requirement that CaSS implement a robust and flexible security and privacy framework that supports a wide range of policies, use cases, and requirements.")]),e._v(" "),t("h2",{attrs:{id:"definitions-and-assumptions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-assumptions"}},[e._v("#")]),e._v(" Definitions and Assumptions")]),e._v(" "),t("p",[e._v("The remainder of this document comprises the technical specifications for assertion processing in CaSS.")]),e._v(" "),t("h3",{attrs:{id:"definitions-and-notation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-notation"}},[e._v("#")]),e._v(" Definitions and Notation")]),e._v(" "),t("p",[t("strong",[e._v("Assertion")])]),e._v(" "),t("blockquote",[t("p",[e._v("An object with the properties defined in the "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("Assertion schema"),t("OutboundLink")],1),e._v(". The general form of an assertion is:")]),e._v(" "),t("p",[t("strong",[e._v("Agent A")]),e._v(" asserts at "),t("strong",[e._v("time T")]),e._v(" with "),t("strong",[e._v("validity through time V")]),e._v(" and with "),t("strong",[e._v("confidence p")]),e._v(" that "),t("strong",[e._v("subject S")]),e._v(" holds or does not hold "),t("strong",[e._v("competency C")]),e._v(" at "),t("strong",[e._v("level L")]),e._v(" based on associated "),t("strong",[e._v("evidence E")])]),e._v(" "),t("ul",[t("li",[e._v("p is a number in the closed interval [0,1]")]),e._v(" "),t("li",[e._v("T and V are datetime objects")]),e._v(" "),t("li",[e._v("E is a link to associated evidence")]),e._v(" "),t("li",[e._v("C is identified via a URL that points to a CaSS competency")]),e._v(" "),t("li",[e._v("A, S are CaSS identities")]),e._v(" "),t("li",[e._v("p, E, L, T, and V are all optional.")])]),e._v(" "),t("p",[e._v("The object model also supports an optional decay function, which is not used in the current release of CaSS.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Processor")])]),e._v(" "),t("blockquote",[t("p",[e._v("A component of a CaSS service that answers queries from providers, collects the information needed to answer those queries, and applies an appropriate processing algorithm to compute the answers. It is assumed that an assertion processor can gather the information it requires and can formulate and transmit responses to queries using CaSS APIs.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Provider")])]),e._v(" "),t("blockquote",[t("p",[e._v("A software application that can provide assertions. In this document, we assume that an assertion processor maintains a list of trusted assertion providers, which are referred to as the providers.")])]),e._v(" "),t("p",[t("strong",[e._v("Identities")])]),e._v(" "),t("blockquote",[t("p",[e._v("The public key portion of a CaSS identity. They securely and uniquely identify people, organizations, or software applications (see the "),t("RouterLink",{attrs:{to:"/guide/overview/#cass-security-framework"}},[e._v("CaSS Security Framework")]),e._v("). An individual can have multiple identities in CaSS.")],1)]),e._v(" "),t("p",[t("strong",[e._v("Processing Algorithm")])]),e._v(" "),t("blockquote",[t("p",[e._v("An algorithm that (potentially) considers relations, roll-up rules, and data from collected assertions to determine whether or not an identity holds a given competency and (potentially) associates a confidence, evidence, and other data from the assertion information model with that determination.")])]),e._v(" "),t("p",[t("strong",[e._v("Roll-up Rule")])]),e._v(" "),t("blockquote",[t("p",[e._v("A rule that defines a computation that produces a mastery estimate for a given competency based on mastery estimates for other competencies, see the "),t("a",{attrs:{href:"http://schema.cassproject.org/#RollupRule",target:"_blank",rel:"noopener noreferrer"}},[e._v("Roll-up Rule schema"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("strong",[e._v("Root Competency")])]),e._v(" "),t("blockquote",[t("p",[e._v("When an assertion processor is queried about a competency, that competency becomes the root competency. The processor may use information about other competencies as well.")])]),e._v(" "),t("h3",{attrs:{id:"supported-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-relations"}},[e._v("#")]),e._v(" Supported Relations")]),e._v(" "),t("p",[e._v("The following (and only the following) relations are currently supported by CaSS assertion processors:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Broadens/Narrows")]),e._v(" - B narrows A if B is more specific than A. Broadens and narrows are inverse relationships, i.e. A broadens B and is more general than B if and only if B narrows A and is more specific than A.")]),e._v(" "),t("li",[t("strong",[e._v("Requires")]),e._v(" - A requires B if A cannot be held without holding B. This is stronger than A broadens B in some models. The inverse is IsRequiredBy.")]),e._v(" "),t("li",[t("strong",[e._v("Equivalent")]),e._v(" - A is equivalent to B if they can be treated as the same competency for the purpose of mastery. Note that if A and B are in different frameworks, it is possible that A is equivalent to B in A’s framework (e.g. the State of Oregon considers Utah’s competency as equivalent) but not in B’s framework (the state of Utah does not consider Oregon’s competency to be equivalent.).")])]),e._v(" "),t("h2",{attrs:{id:"assertion-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-api"}},[e._v("#")]),e._v(" Assertion API")]),e._v(" "),t("p",[e._v("External systems query CaSS for information about an individual’s competency via the "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/AssertionProcessor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("following API"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("h3",{attrs:{id:"query-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#query-api"}},[e._v("#")]),e._v(" Query API")]),e._v(" "),t("div",{staticClass:"language-js extra-class"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function-variable function"}},[e._v("has")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("function")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token parameter"}},[e._v("subject"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" competency"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" level"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" context"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" additionalSignatures"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" success"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" ask"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" failure")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),t("ul",[t("li",[t("code",[e._v("subject")]),e._v(" - One or more identities that belong to an individual. (required).")]),e._v(" "),t("li",[t("code",[e._v("competency")]),e._v(" - The queried competency. (required)")]),e._v(" "),t("li",[t("code",[e._v("level")]),e._v(" - The queried level of the competency. (optional)")]),e._v(" "),t("li",[t("code",[e._v("context")]),e._v(" - The framework in which the competency is to be interpreted. (required)")]),e._v(" "),t("li",[t("code",[e._v("additionalSignatures")]),e._v(" - Additional, time limited, authorizations that can be granted for a single query. (Not currently used.)")]),e._v(" "),t("li",[t("code",[e._v("success")]),e._v(" - Callback method to retrieve the answer to a query when the query has been successfully processed.")]),e._v(" "),t("li",[t("code",[e._v("ask")]),e._v(" - If an assertion processor requires additional information, the “ask” parameter defines the method that the assertion processor should invoke to get this information. (optional)")]),e._v(" "),t("li",[t("code",[e._v("failure")]),e._v(" - The method to call if assertion processing fails.")])]),e._v(" "),t("h3",{attrs:{id:"storing-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#storing-assertions"}},[e._v("#")]),e._v(" Storing Assertions")]),e._v(" "),t("p",[e._v("External systems store assertions "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" in the CaSS repository using the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/"}},[e._v("CaSS Repository API")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"current-assertion-processing-algorithm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-assertion-processing-algorithm"}},[e._v("#")]),e._v(" Current Assertion Processing Algorithm")]),e._v(" "),t("h3",{attrs:{id:"step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[e._v("#")]),e._v(" STEP 1")]),e._v(" "),t("p",[e._v("The first step is to create a processing graph G for the root competency. CaSS does this by starting with the root node R and retrieving all relations to other competencies. Each such relation defines an edge in the graph with nodes representing the two related competencies. If the same competency appears in two relations, it is represented twice by two different nodes. The edges are labelled with the relations (i.e. A requires B, A isRequiredBy B, A broadens B, A narrows B, or A is equivalent to B). This process is then repeated for each node in the graph, adding any relations that have not previously been retrieved and is iterated until no more relations can be found.")]),e._v(" "),t("p",[e._v("The result is a tree G with root R.")]),e._v(" "),t("h3",{attrs:{id:"step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[e._v("#")]),e._v(" STEP 2")]),e._v(" "),t("p",[e._v("The next steps involve determining the values of the nodes. In this scheme, a node (representing a competency) can have four values:")]),e._v(" "),t("ul",[t("li",[e._v("T means that the competency is held")]),e._v(" "),t("li",[e._v("F means that the competency is not held")]),e._v(" "),t("li",[e._v("I means that the mastery status of the competency is indeterminate")]),e._v(" "),t("li",[e._v("U means that the mastery status of the competency is unknown")])]),e._v(" "),t("p",[e._v("The second step of the algorithm is to initialize all nodes with "),t("strong",[e._v("U")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"step-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[e._v("#")]),e._v(" STEP 3")]),e._v(" "),t("p",[e._v("The algorithm retrieves all assertions for the leaves of G.")]),e._v(" "),t("p",[e._v("In this algorithm, all assertions are treated as T (the competency is held) or F (the competency is not held).")]),e._v(" "),t("p",[e._v("All roll-up roles for the leaf nodes are also computed using assertions retrieved for all target competencies in the roll-up rule. Each roll-up rule is considered to be an assertion, but have the values I or U in addition to T or F.")]),e._v(" "),t("p",[e._v("The value of a node is set to:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("U")]),e._v(" if all assertions are U or no assertions exist")]),e._v(" "),t("li",[t("strong",[e._v("T")]),e._v(" if all assertions about that node are T or U")]),e._v(" "),t("li",[t("strong",[e._v("F")]),e._v(" if all assertions about that node are F or U")]),e._v(" "),t("li",[t("strong",[e._v("I")]),e._v(" otherwise")])]),e._v(" "),t("h3",{attrs:{id:"step-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[e._v("#")]),e._v(" STEP 4")]),e._v(" "),t("p",[e._v("The next step is to examine all parents of leaf nodes. In doing so, the values of each child of a node are considered assertions in the following way, where:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("P")]),e._v(" is the parent node")]),e._v(" "),t("li",[t("strong",[e._v("C")]),e._v(" is the child node")])]),e._v(" "),t("p",[e._v("Rules:")]),e._v(" "),t("ul",[t("li",[e._v("If P broadens C, and C = F, then P is asserted to be F (holding P implies holding C)")]),e._v(" "),t("li",[e._v("If P narrows C, and C = T, then P is asserted to be T (holding C implies holding P)")]),e._v(" "),t("li",[e._v("If P requires C, and C = F, then P is asserted to be F")]),e._v(" "),t("li",[e._v("If P is required by C, and C = T, then P is asserted to be T")]),e._v(" "),t("li",[e._v("If P is equivalent to C, the value of C is asserted for P (T, F or I)")])]),e._v(" "),t("p",[e._v("The values of all the parent nodes P are computed as in STEP 3 using direct assertions about the parent nodes, the assertions derived from all child nodes as above, and all roll-up rules. Equivalently, the leaf nodes are deleted, the assertions derived from them are retained, and STEP 3 is repeated.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("When a roll-up rule is applied to a node A, they only use direct assertions about the competencies in the rule. Roll-up rules can produce indeterminate or unknown results when data about the competencies in the rule are missing or conflicting. This behavior is determined by the definition of the rule.")])]),e._v(" "),t("h3",{attrs:{id:"step-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[e._v("#")]),e._v(" STEP 5")]),e._v(" "),t("p",[e._v("STEP 4 is repeated until the root node R is reached. The processing algorithm then returns the value of R.")]),e._v(" "),t("h3",{attrs:{id:"the-profile-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-profile-api"}},[e._v("#")]),e._v(" The Profile API")]),e._v(" "),t("p",[e._v("In addition to the Query API, CaSS implements a profile web service API that can be used to retrieve the type of learner profile depicted in Figure 1. This API is used by an external system to:")]),e._v(" "),t("ul",[t("li",[e._v("Determine whether an individual represented by a user ID holds a given competency. The API will return T if the answer is “"),t("em",[e._v("yes")]),e._v("” (as determined by the assertion processor) and F otherwise.")]),e._v(" "),t("li",[e._v("Retrieve a list of all competencies in a given framework held by an individual represented by a user ID.")]),e._v(" "),t("li",[e._v("Set the value of a competency. When this is done, all previous values are overwritten.")])]),e._v(" "),t("p",[e._v("This API can be invoked with processing turned on or off. When turned on, the assertion processor functions normally. When turned off, the value of a competency is determined only by the latests assertion made about that competency by an external system.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This Profile API was developed to implement the classic notion of a profile that collaborating systems in a closed network can use to read and write the mastery stati of the a shared set of competencies. It purposely circumvents the CaSS security framework.")])]),e._v(" "),t("h3",{attrs:{id:"roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roll-up-rules"}},[e._v("#")]),e._v(" Roll-up Rules")]),e._v(" "),t("p",[e._v("Roll-up rules in CaSS can currently be defined as nested "),t("strong",[e._v("AND")]),e._v("'s and "),t("strong",[e._v("OR")]),e._v("'s of a set of competencies. These are evaluated based on assertions about these competencies in the manner described in STEP 3 with the addition that a confidence threshold can be included. The syntax is shown in the following example:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("(\n [competency:A AND confidence:>0.6] AND\n [competency:B AND confidence:>0.6]\n) OR\n[competency:C AND confidence:>0.9] OR\n(\n [competency:D] AND [competency:C]\n)\n")])])]),t("p",[e._v("Where A, B, C, and D are URLs to competencies managed by CaSS.")]),e._v(" "),t("h2",{attrs:{id:"expected-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-changes"}},[e._v("#")]),e._v(" Expected Changes")]),e._v(" "),t("p",[e._v("The following changes and modifications are anticipated for future releases:")]),e._v(" "),t("ul",[t("li",[e._v("An assertion processor can keep a table of reputations that indicates how much it can rely on responses from each provider. A reputation is a number in the closed interval [0,1] with 0 meaning that the assertions from the provider are unreliable and 1 meaning the provider’s assertions are completely reliable. Best practices for determining or interpreting the value of a reputation are to be determined.")]),e._v(" "),t("li",[e._v("Future implementations may include reputations for agents as well.")]),e._v(" "),t("li",[e._v("Instead of creating duplicate nodes to create a tree, the processing graph will start out as a directed graph (A → B if A broadens or requires B) and cycles will be collapsed into equivalence classes represented by a single node. In this setup, each competency will be represented only once in the graph.")]),e._v(" "),t("li",[e._v("The value of each node will be a real number in the closed interval [-1,1]. Negative numbers indicate the belief that an identity does not hold a competency. The value derived from an assertion will be the product of the confidence and ±1 (-1 for a negative assertion and +1 for a positive assertion), which may additionally be adjusted based on reputation.")]),e._v(" "),t("li",[e._v("The graph will be processed depth first using a formula that weighs multiple assertions to derive a value.")]),e._v(" "),t("li",[e._v("The associated API will be configurable to convert values of the root node to scales such as 1 - 4 or a discrete grading system. This mimics computations such as “grade point average” and is compatible with the way that certain learning management systems view competency assertions.")]),e._v(" "),t("li",[e._v("We anticipate support for more sophisticated roll-up rules that can, for example, require that the sum of the confidences of multiple assertions exceed some threshold.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/41.de2955e8.js.gz b/docs/assets/js/41.de2955e8.js.gz new file mode 100644 index 000000000..7f21e0bcb Binary files /dev/null and b/docs/assets/js/41.de2955e8.js.gz differ diff --git a/docs/assets/js/47.f4953cab.js b/docs/assets/js/47.16ba776b.js similarity index 94% rename from docs/assets/js/47.f4953cab.js rename to docs/assets/js/47.16ba776b.js index b7297e36a..49999ea89 100644 --- a/docs/assets/js/47.f4953cab.js +++ b/docs/assets/js/47.16ba776b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{665:function(t,s,a){"use strict";a.r(s);var o=a(69),e=Object(o.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"organizations-groups-and-teams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#organizations-groups-and-teams"}},[t._v("#")]),t._v(" Organizations, Groups, and Teams")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),s("p",[t._v("This section is not applicable to Credential Engine instances of CAT.")])]),t._v(" "),s("p",[t._v("In CaSS Authoring Tools, user groups provide the capability to assign multiple users the ability to share permissions across an organization or team. Members of a group are granted access to any CaSS framework or competency that the group has been explicitly assigned. "),s("RouterLink",{attrs:{to:"/authoring/organizations-and-groups/~@img/users-and-groups/"}},[t._v("Please refer to the user and groups section")]),t._v(".")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{666:function(t,s,a){"use strict";a.r(s);var o=a(69),e=Object(o.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"organizations-groups-and-teams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#organizations-groups-and-teams"}},[t._v("#")]),t._v(" Organizations, Groups, and Teams")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),s("p",[t._v("This section is not applicable to Credential Engine instances of CAT.")])]),t._v(" "),s("p",[t._v("In CaSS Authoring Tools, user groups provide the capability to assign multiple users the ability to share permissions across an organization or team. Members of a group are granted access to any CaSS framework or competency that the group has been explicitly assigned. "),s("RouterLink",{attrs:{to:"/authoring/organizations-and-groups/~@img/users-and-groups/"}},[t._v("Please refer to the user and groups section")]),t._v(".")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/47.16ba776b.js.gz b/docs/assets/js/47.16ba776b.js.gz new file mode 100644 index 000000000..f0c3e697e Binary files /dev/null and b/docs/assets/js/47.16ba776b.js.gz differ diff --git a/docs/assets/js/47.f4953cab.js.gz b/docs/assets/js/47.f4953cab.js.gz deleted file mode 100644 index e2316381a..000000000 Binary files a/docs/assets/js/47.f4953cab.js.gz and /dev/null differ diff --git a/docs/assets/js/48.34518dac.js.gz b/docs/assets/js/48.34518dac.js.gz deleted file mode 100644 index 1d62437dc..000000000 Binary files a/docs/assets/js/48.34518dac.js.gz and /dev/null differ diff --git a/docs/assets/js/48.34518dac.js b/docs/assets/js/48.d6f5e5e8.js similarity index 99% rename from docs/assets/js/48.34518dac.js rename to docs/assets/js/48.d6f5e5e8.js index 859d43f40..51e632602 100644 --- a/docs/assets/js/48.34518dac.js +++ b/docs/assets/js/48.d6f5e5e8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{668:function(a,e,t){"use strict";t.r(e);var s=t(69),o=Object(s.a)({},(function(){var a=this,e=a._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"cass-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-configuration"}},[a._v("#")]),a._v(" CaSS Configuration")]),a._v(" "),e("p",[a._v("There are a number of environment variables that can be configured to change the ways that CaSS behaves.")]),a._v(" "),e("h2",{attrs:{id:"https"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#https"}},[a._v("#")]),a._v(" "),e("code",[a._v("HTTPS")])]),a._v(" "),e("p",[a._v("Should CaSS use HTTPS. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"elasticsearch-endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#elasticsearch-endpoint"}},[a._v("#")]),a._v(" "),e("code",[a._v("ELASTICSEARCH_ENDPOINT")])]),a._v(" "),e("p",[a._v("URL for the elastic search service. Defaults to "),e("code",[a._v("http://localhost:9200")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-loopback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-loopback"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_LOOPBACK")])]),a._v(" "),e("p",[a._v("URL for the CaSS API. Defaults to "),e("code",[a._v("http://localhost/api/")]),a._v(" or "),e("code",[a._v("https://localhost/api/")]),a._v(", depending on if https is enabled.")]),a._v(" "),e("h2",{attrs:{id:"cass-loopback-proxy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-loopback-proxy"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_LOOPBACK_PROXY")])]),a._v(" "),e("p",[a._v("Optional URL for the loopback proxy. Used when the endpoint that CaSS uses to talk to itself is different than how it represents itself, for example the loopback proxy may be on localhost.")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-enabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-enabled"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_ENABLED")])]),a._v(" "),e("p",[a._v("Should CaSS use OpenID Connect. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-issuer-base-url"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-issuer-base-url"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_ISSUER_BASE_URL")])]),a._v(" "),e("p",[a._v("URL for the OpenID Connect issuer, e.g. Keycloak. Defaults to "),e("code",[a._v("https://dev.keycloak.eduworks.com/auth/realms/test-realm/")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-client-id"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-client-id"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_CLIENT_ID")])]),a._v(" "),e("p",[a._v("ID of the client being used in OpenID Connect. Defaults to "),e("code",[a._v("cass")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-secret"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-secret"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_SECRET")])]),a._v(" "),e("p",[a._v("Secret key for the above client.")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-base-url"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-base-url"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_BASE_URL")])]),a._v(" "),e("p",[a._v("Base URL for login and logout API when using OpenID Connect. Defaults to "),e("code",[a._v("http://localhost/")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-jwt-enabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-jwt-enabled"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_JWT_ENABLED")])]),a._v(" "),e("p",[a._v("Should CaSS use JWT for authentication. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-jwt-secret"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-jwt-secret"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_JWT_SECRET")])]),a._v(" "),e("p",[a._v("Secet key for JWT. Defaults to "),e("code",[a._v("cass")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-jwt-algorithm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-jwt-algorithm"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_JWT_ALGORITHM")])]),a._v(" "),e("p",[a._v("JWT Algorithm to use. Defaults to "),e("code",[a._v("HS256")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-banner-message"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-banner-message"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_BANNER_MESSAGE")])]),a._v(" "),e("p",[a._v("Optional message to display in banners along the top and bottom of the CaSS Editor.")]),a._v(" "),e("h2",{attrs:{id:"cass-banner-text-color"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-banner-text-color"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_BANNER_TEXT_COLOR")])]),a._v(" "),e("p",[a._v("Optional color for the banner message text. Defaults to the CaSS Editor theme colors.")]),a._v(" "),e("h2",{attrs:{id:"cass-banner-background-color"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-banner-background-color"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_BANNER_BACKGROUND_COLOR")])]),a._v(" "),e("p",[a._v("Optional color for banner background. Defaults to the CaSS Editor theme colors.")]),a._v(" "),e("h2",{attrs:{id:"cass-external-endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-external-endpoint"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_EXTERNAL_ENDPOINT")])]),a._v(" "),e("p",[a._v("Optional URL for a CaSS instance to use as the endpoint for creating alignments/relations, instead of this CaSS instance.")]),a._v(" "),e("h2",{attrs:{id:"cass-replication-endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-replication-endpoint"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_REPLICATION_ENDPOINT")])]),a._v(" "),e("p",[a._v("Optional URL of another CaSS instance to replicate data to.")]),a._v(" "),e("h2",{attrs:{id:"cass-replication-ppk"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-replication-ppk"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_REPLICATION_PPK")])]),a._v(" "),e("p",[a._v("The key for the above replication endpoint.")]),a._v(" "),e("h2",{attrs:{id:"profile-repository-cache"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#profile-repository-cache"}},[a._v("#")]),a._v(" "),e("code",[a._v("PROFILE_REPOSITORY_CACHE")])]),a._v(" "),e("p",[a._v("Should CaSS cache computed profiles in a repository. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"profile-cache"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#profile-cache"}},[a._v("#")]),a._v(" "),e("code",[a._v("PROFILE_CACHE")])]),a._v(" "),e("p",[a._v("Should CaSS cache computed profiles in memory. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"profile-ppk"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#profile-ppk"}},[a._v("#")]),a._v(" "),e("code",[a._v("PROFILE_PPK")])]),a._v(" "),e("p",[a._v("Optional private key for CaSS to use when querying for a profile.")]),a._v(" "),e("h2",{attrs:{id:"default-plugins"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#default-plugins"}},[a._v("#")]),a._v(" "),e("code",[a._v("DEFAULT_PLUGINS")])]),a._v(" "),e("p",[a._v("Optional array of URLs to plugins to be made available within the CaSS Editor. If deployed at the same URL as CaSS, the base of the URL can be omitted: "),e("code",[a._v('["/my-feature"]')]),a._v(" is transformed to "),e("code",[a._v('"https://my-cass-instance/my-feature"')]),a._v(". Available in 1.5.6+.")]),a._v(" "),e("h2",{attrs:{id:"motd-message"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#motd-message"}},[a._v("#")]),a._v(" "),e("code",[a._v("MOTD_MESSAGE")])]),a._v(" "),e("p",[a._v("Optional message to display as a popup when users open the CaSS Editor.")]),a._v(" "),e("h2",{attrs:{id:"motd-title"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#motd-title"}},[a._v("#")]),a._v(" "),e("code",[a._v("MOTD_TITLE")])]),a._v(" "),e("p",[a._v("Optional title for the above message.")]),a._v(" "),e("h2",{attrs:{id:"disabled-adapters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#disabled-adapters"}},[a._v("#")]),a._v(" "),e("code",[a._v("DISABLED_ADAPTERS")])]),a._v(" "),e("p",[a._v("Optional comma separated list of adapters to disable in CaSS. Valid options include: "),e("code",[a._v("asn, case, ceasn, jsonld, badge, xapi, profile")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"max-connections"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#max-connections"}},[a._v("#")]),a._v(" "),e("code",[a._v("MAX_CONNECTIONS")])]),a._v(" "),e("p",[a._v("Optional limit on the number of concurrent connections to the CaSS server. Should be an integer value.")]),a._v(" "),e("h2",{attrs:{id:"log-filtered-categories"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#log-filtered-categories"}},[a._v("#")]),a._v(" "),e("code",[a._v("LOG_FILTERED_CATEGORIES")])]),a._v(" "),e("p",[a._v("Optional comma separated list of logging categories to disable. Valid options include: "),e("code",[a._v("sys, auth, msg, fs, net, stor, adap, prof")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"log-filtered-severities"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#log-filtered-severities"}},[a._v("#")]),a._v(" "),e("code",[a._v("LOG_FILTERED_SEVERITIES")])]),a._v(" "),e("p",[a._v("Optional comma separated list of logging severities to disable. Valid options include: "),e("code",[a._v("EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"log-filtered-messages"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#log-filtered-messages"}},[a._v("#")]),a._v(" "),e("code",[a._v("LOG_FILTERED_MESSAGES")])]),a._v(" "),e("p",[a._v("Optional comma separated list of specific log messages to disable.")]),a._v(" "),e("h2",{attrs:{id:"smtp-host"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-host"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_HOST")])]),a._v(" "),e("p",[a._v("Optional SMTP server to use in order to send emergency email warnings regarding the CaSS instance.")]),a._v(" "),e("h2",{attrs:{id:"smtp-port"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-port"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_PORT")])]),a._v(" "),e("p",[a._v("Optional SMTP port for the above SMTP server. Defaults to "),e("code",[a._v("587")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"smtp-user"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-user"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_USER")])]),a._v(" "),e("p",[a._v("Optional username for the above SMTP server.")]),a._v(" "),e("h2",{attrs:{id:"smtp-pass"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-pass"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_PASS")])]),a._v(" "),e("p",[a._v("Optional password for the above SMTP server.")]),a._v(" "),e("h2",{attrs:{id:"smtp-recipients"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-recipients"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_RECIPIENTS")])]),a._v(" "),e("p",[a._v("Optional comma separated list of email addresses which should receive email notifications from the above SMTP server.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{670:function(a,e,t){"use strict";t.r(e);var s=t(69),o=Object(s.a)({},(function(){var a=this,e=a._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"cass-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-configuration"}},[a._v("#")]),a._v(" CaSS Configuration")]),a._v(" "),e("p",[a._v("There are a number of environment variables that can be configured to change the ways that CaSS behaves.")]),a._v(" "),e("h2",{attrs:{id:"https"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#https"}},[a._v("#")]),a._v(" "),e("code",[a._v("HTTPS")])]),a._v(" "),e("p",[a._v("Should CaSS use HTTPS. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"elasticsearch-endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#elasticsearch-endpoint"}},[a._v("#")]),a._v(" "),e("code",[a._v("ELASTICSEARCH_ENDPOINT")])]),a._v(" "),e("p",[a._v("URL for the elastic search service. Defaults to "),e("code",[a._v("http://localhost:9200")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-loopback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-loopback"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_LOOPBACK")])]),a._v(" "),e("p",[a._v("URL for the CaSS API. Defaults to "),e("code",[a._v("http://localhost/api/")]),a._v(" or "),e("code",[a._v("https://localhost/api/")]),a._v(", depending on if https is enabled.")]),a._v(" "),e("h2",{attrs:{id:"cass-loopback-proxy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-loopback-proxy"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_LOOPBACK_PROXY")])]),a._v(" "),e("p",[a._v("Optional URL for the loopback proxy. Used when the endpoint that CaSS uses to talk to itself is different than how it represents itself, for example the loopback proxy may be on localhost.")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-enabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-enabled"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_ENABLED")])]),a._v(" "),e("p",[a._v("Should CaSS use OpenID Connect. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-issuer-base-url"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-issuer-base-url"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_ISSUER_BASE_URL")])]),a._v(" "),e("p",[a._v("URL for the OpenID Connect issuer, e.g. Keycloak. Defaults to "),e("code",[a._v("https://dev.keycloak.eduworks.com/auth/realms/test-realm/")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-client-id"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-client-id"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_CLIENT_ID")])]),a._v(" "),e("p",[a._v("ID of the client being used in OpenID Connect. Defaults to "),e("code",[a._v("cass")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-secret"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-secret"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_SECRET")])]),a._v(" "),e("p",[a._v("Secret key for the above client.")]),a._v(" "),e("h2",{attrs:{id:"cass-oidc-base-url"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-oidc-base-url"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_OIDC_BASE_URL")])]),a._v(" "),e("p",[a._v("Base URL for login and logout API when using OpenID Connect. Defaults to "),e("code",[a._v("http://localhost/")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-jwt-enabled"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-jwt-enabled"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_JWT_ENABLED")])]),a._v(" "),e("p",[a._v("Should CaSS use JWT for authentication. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-jwt-secret"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-jwt-secret"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_JWT_SECRET")])]),a._v(" "),e("p",[a._v("Secet key for JWT. Defaults to "),e("code",[a._v("cass")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-jwt-algorithm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-jwt-algorithm"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_JWT_ALGORITHM")])]),a._v(" "),e("p",[a._v("JWT Algorithm to use. Defaults to "),e("code",[a._v("HS256")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"cass-banner-message"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-banner-message"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_BANNER_MESSAGE")])]),a._v(" "),e("p",[a._v("Optional message to display in banners along the top and bottom of the CaSS Editor.")]),a._v(" "),e("h2",{attrs:{id:"cass-banner-text-color"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-banner-text-color"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_BANNER_TEXT_COLOR")])]),a._v(" "),e("p",[a._v("Optional color for the banner message text. Defaults to the CaSS Editor theme colors.")]),a._v(" "),e("h2",{attrs:{id:"cass-banner-background-color"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-banner-background-color"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_BANNER_BACKGROUND_COLOR")])]),a._v(" "),e("p",[a._v("Optional color for banner background. Defaults to the CaSS Editor theme colors.")]),a._v(" "),e("h2",{attrs:{id:"cass-external-endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-external-endpoint"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_EXTERNAL_ENDPOINT")])]),a._v(" "),e("p",[a._v("Optional URL for a CaSS instance to use as the endpoint for creating alignments/relations, instead of this CaSS instance.")]),a._v(" "),e("h2",{attrs:{id:"cass-replication-endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-replication-endpoint"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_REPLICATION_ENDPOINT")])]),a._v(" "),e("p",[a._v("Optional URL of another CaSS instance to replicate data to.")]),a._v(" "),e("h2",{attrs:{id:"cass-replication-ppk"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-replication-ppk"}},[a._v("#")]),a._v(" "),e("code",[a._v("CASS_REPLICATION_PPK")])]),a._v(" "),e("p",[a._v("The key for the above replication endpoint.")]),a._v(" "),e("h2",{attrs:{id:"profile-repository-cache"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#profile-repository-cache"}},[a._v("#")]),a._v(" "),e("code",[a._v("PROFILE_REPOSITORY_CACHE")])]),a._v(" "),e("p",[a._v("Should CaSS cache computed profiles in a repository. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"profile-cache"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#profile-cache"}},[a._v("#")]),a._v(" "),e("code",[a._v("PROFILE_CACHE")])]),a._v(" "),e("p",[a._v("Should CaSS cache computed profiles in memory. Defaults to "),e("code",[a._v("false")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"profile-ppk"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#profile-ppk"}},[a._v("#")]),a._v(" "),e("code",[a._v("PROFILE_PPK")])]),a._v(" "),e("p",[a._v("Optional private key for CaSS to use when querying for a profile.")]),a._v(" "),e("h2",{attrs:{id:"default-plugins"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#default-plugins"}},[a._v("#")]),a._v(" "),e("code",[a._v("DEFAULT_PLUGINS")])]),a._v(" "),e("p",[a._v("Optional array of URLs to plugins to be made available within the CaSS Editor. If deployed at the same URL as CaSS, the base of the URL can be omitted: "),e("code",[a._v('["/my-feature"]')]),a._v(" is transformed to "),e("code",[a._v('"https://my-cass-instance/my-feature"')]),a._v(". Available in 1.5.6+.")]),a._v(" "),e("h2",{attrs:{id:"motd-message"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#motd-message"}},[a._v("#")]),a._v(" "),e("code",[a._v("MOTD_MESSAGE")])]),a._v(" "),e("p",[a._v("Optional message to display as a popup when users open the CaSS Editor.")]),a._v(" "),e("h2",{attrs:{id:"motd-title"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#motd-title"}},[a._v("#")]),a._v(" "),e("code",[a._v("MOTD_TITLE")])]),a._v(" "),e("p",[a._v("Optional title for the above message.")]),a._v(" "),e("h2",{attrs:{id:"disabled-adapters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#disabled-adapters"}},[a._v("#")]),a._v(" "),e("code",[a._v("DISABLED_ADAPTERS")])]),a._v(" "),e("p",[a._v("Optional comma separated list of adapters to disable in CaSS. Valid options include: "),e("code",[a._v("asn, case, ceasn, jsonld, badge, xapi, profile")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"max-connections"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#max-connections"}},[a._v("#")]),a._v(" "),e("code",[a._v("MAX_CONNECTIONS")])]),a._v(" "),e("p",[a._v("Optional limit on the number of concurrent connections to the CaSS server. Should be an integer value.")]),a._v(" "),e("h2",{attrs:{id:"log-filtered-categories"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#log-filtered-categories"}},[a._v("#")]),a._v(" "),e("code",[a._v("LOG_FILTERED_CATEGORIES")])]),a._v(" "),e("p",[a._v("Optional comma separated list of logging categories to disable. Valid options include: "),e("code",[a._v("sys, auth, msg, fs, net, stor, adap, prof")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"log-filtered-severities"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#log-filtered-severities"}},[a._v("#")]),a._v(" "),e("code",[a._v("LOG_FILTERED_SEVERITIES")])]),a._v(" "),e("p",[a._v("Optional comma separated list of logging severities to disable. Valid options include: "),e("code",[a._v("EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"log-filtered-messages"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#log-filtered-messages"}},[a._v("#")]),a._v(" "),e("code",[a._v("LOG_FILTERED_MESSAGES")])]),a._v(" "),e("p",[a._v("Optional comma separated list of specific log messages to disable.")]),a._v(" "),e("h2",{attrs:{id:"smtp-host"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-host"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_HOST")])]),a._v(" "),e("p",[a._v("Optional SMTP server to use in order to send emergency email warnings regarding the CaSS instance.")]),a._v(" "),e("h2",{attrs:{id:"smtp-port"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-port"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_PORT")])]),a._v(" "),e("p",[a._v("Optional SMTP port for the above SMTP server. Defaults to "),e("code",[a._v("587")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"smtp-user"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-user"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_USER")])]),a._v(" "),e("p",[a._v("Optional username for the above SMTP server.")]),a._v(" "),e("h2",{attrs:{id:"smtp-pass"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-pass"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_PASS")])]),a._v(" "),e("p",[a._v("Optional password for the above SMTP server.")]),a._v(" "),e("h2",{attrs:{id:"smtp-recipients"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smtp-recipients"}},[a._v("#")]),a._v(" "),e("code",[a._v("SMTP_RECIPIENTS")])]),a._v(" "),e("p",[a._v("Optional comma separated list of email addresses which should receive email notifications from the above SMTP server.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/48.d6f5e5e8.js.gz b/docs/assets/js/48.d6f5e5e8.js.gz new file mode 100644 index 000000000..301e599f8 Binary files /dev/null and b/docs/assets/js/48.d6f5e5e8.js.gz differ diff --git a/docs/assets/js/49.cee9880b.js b/docs/assets/js/49.784dd7e3.js similarity index 99% rename from docs/assets/js/49.cee9880b.js rename to docs/assets/js/49.784dd7e3.js index 00af59afb..e28229674 100644 --- a/docs/assets/js/49.cee9880b.js +++ b/docs/assets/js/49.784dd7e3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{670:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cass-installation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-installation"}},[e._v("#")]),e._v(" CaSS Installation")]),e._v(" "),t("p",[e._v("This is the installation guide for a CaSS instance. If you're just looking to work with an existing CaSS instance, you may be looking for the CaSS Library. See the "),t("a",{attrs:{href:"/dev/links-and-references"}},[e._v("Links")]),e._v(" section for more information.")]),e._v(" "),t("h2",{attrs:{id:"system-requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirements"}},[e._v("#")]),e._v(" System Requirements")]),e._v(" "),t("ul",[t("li",[e._v("4 GB of ram (can work with 2 GB with additional configuration)\n"),t("ul",[t("li",[e._v("ElasticSearch 7: 2 GB (can be reduced to 1 GB)")])])]),e._v(" "),t("li",[e._v("At least 8 GB of hard drive space.")])]),e._v(" "),t("h2",{attrs:{id:"cass-version-requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-version-requirements"}},[e._v("#")]),e._v(" CaSS Version Requirements")]),e._v(" "),t("p",[e._v("Minimum CaSS version selection for inclusion of CaSS Authoring Tools should be "),t("strong",[e._v("1.3")])]),e._v(" "),t("h2",{attrs:{id:"cat-cass-installation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cat-cass-installation"}},[e._v("#")]),e._v(" CAT/CaSS Installation")]),e._v(" "),t("h3",{attrs:{id:"linux-debian-ubuntu-amazon-and-other-fedora-derivatives"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linux-debian-ubuntu-amazon-and-other-fedora-derivatives"}},[e._v("#")]),e._v(" Linux (Debian, Ubuntu, Amazon and other Fedora derivatives)")]),e._v(" "),t("p",[e._v("CaSS can be installed on linux through our Bash install script.")]),e._v(" "),t("p",[e._v("Install and Upgrade")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://raw.githubusercontent.com/cassproject/CASS/master/scripts/cassInstall.sh\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" +x cassInstall.sh\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" ./cassInstall.sh\n")])])]),t("h2",{attrs:{id:"docker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[e._v("#")]),e._v(" Docker")]),e._v(" "),t("p",[e._v("Images for CASS are kept in Docker Hub under "),t("a",{attrs:{href:"https://hub.docker.com/r/cassproject/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("cassproject/cass"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The following command will run the CaSS Standalone server with an interactive prompt and expose it on port 80 on the local machine.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" run "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-it")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-p80:80")]),e._v(" cassproject/cass\n")])])]),t("p",[e._v("Additionally, if you wish to use docker-compose or some other means of deploying CaSS in a constellation of servers, see "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/blob/master/docker-compose.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("this docker-compose file"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"windows"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#windows"}},[e._v("#")]),e._v(" Windows")]),e._v(" "),t("p",[e._v("Windows installation uses "),t("a",{attrs:{href:"https://chocolatey.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chocolatey"),t("OutboundLink")],1),e._v(" as a package manager. Chocolatey will be used to install all required CASS dependencies (maven, git, and elasticsearch).")]),e._v(" "),t("p",[e._v("If you would like to install these packages by hand or using another tool, please feel free.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://chocolatey.org/packages/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("CASS Package on Chocolatey"),t("OutboundLink")],1)]),e._v(" "),t("h3",{attrs:{id:"once"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#once"}},[e._v("#")]),e._v(" Once")]),e._v(" "),t("p",[e._v("From an elevated powershell:")]),e._v(" "),t("div",{staticClass:"language-batch extra-class"},[t("pre",{pre:!0,attrs:{class:"language-batch"}},[t("code",[t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("Set")]),e._v("-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("3072")]),e._v("; iex ((New-Object System.Net.WebClient")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(".DownloadString"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("'")]),e._v("https://community.chocolatey.org/install.ps1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("refreshenv")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("choco")]),e._v(" install "),t("span",{pre:!0,attrs:{class:"token parameter attr-name"}},[e._v("-y")]),e._v(" cass")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("refreshenv")])]),e._v("\n")])])]),t("p",[e._v("Go to services, start "),t("code",[e._v("elasticsearch-service-x64")]),e._v(" and set it to start automatically.")]),e._v(" "),t("h3",{attrs:{id:"install-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#install-upgrade"}},[e._v("#")]),e._v(" Install/Upgrade")]),e._v(" "),t("p",[e._v("Before upgrading, copy out the etc folder from the root directory of the CaSS installation. From an elevated command line:")]),e._v(" "),t("div",{staticClass:"language-batch extra-class"},[t("pre",{pre:!0,attrs:{class:"language-batch"}},[t("code",[t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("choco")]),e._v(" install "),t("span",{pre:!0,attrs:{class:"token parameter attr-name"}},[e._v("-y")]),e._v(" cass")]),e._v("\n")])])]),t("p",[e._v("Then copy the etc folder back in.")]),e._v(" "),t("h2",{attrs:{id:"setup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),t("ul",[t("li",[e._v("Set up a "),t("strong",[e._v("DNS endpoint")])]),e._v(" "),t("li",[e._v("Set up an "),t("strong",[e._v("HTTPS certificate")])]),e._v(" "),t("li",[e._v("Set up "),t("a",{attrs:{href:"https://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis",target:"_blank",rel:"noopener noreferrer"}},[e._v("IIS Reverse Proxy"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Reverse Proxy Endpoint: "),t("code",[e._v("https:/// -> http://localhost:8080/cass/")])])])]),e._v(" "),t("li",[e._v("In your firewall, deny access to ports "),t("code",[e._v("9200")]),e._v(" and "),t("code",[e._v("8080")]),e._v(" to all machines except localhost.")])]),e._v(" "),t("h2",{attrs:{id:"post-installation-checklist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#post-installation-checklist"}},[e._v("#")]),e._v(" Post-Installation Checklist")]),e._v(" "),t("ol",[t("li",[e._v("Ensure API is started and reachable through a desired endpoint")]),e._v(" "),t("li",[e._v("(e.g. "),t("code",[e._v("http://cass..org/api/custom/")]),e._v(").")]),e._v(" "),t("li",[e._v("Note that all objects created will use this endpoint in their permanent locator, so make sure!")]),e._v(" "),t("li",[e._v("Ensure Website is reachable through a desired endpoint")]),e._v(" "),t("li",[e._v("(e.g. "),t("code",[e._v("http://cass..org/")]),e._v(").")]),e._v(" "),t("li",[e._v("CASS attempts to auto-detect the endpoint for the server automatically. XSS or obscure endpoints may require additional configuration.")]),e._v(" "),t("li",[e._v("Set PM2 logs to rotate with the "),t("code",[e._v("npm run rotatelogs")]),e._v(" command. On Windows machines, we have found that it works better to change the rotatelogs command in the package.json file to "),t("code",[e._v("pm2 install @jessety/pm2-logrotate")]),e._v(" before running the npm command.")]),e._v(" "),t("li",[e._v("To get the process to restart when your Linux machine restarts, run "),t("code",[e._v("npm run pm2startup")]),e._v(", run the command the process tells you to, and run "),t("code",[e._v("npm run pm2save")]),e._v(". For Windows, an additional library is needed to configure this. We followed the instructions here: https://stackoverflow.com/a/42770772")])]),e._v(" "),t("h2",{attrs:{id:"testing-upgrade-and-installation-faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing-upgrade-and-installation-faq"}},[e._v("#")]),e._v(" Testing, upgrade, and installation FAQ")]),e._v(" "),t("ol",[t("li",[e._v("Most errors will occur due to a lack of connectivity with the appropriate endpoint. Use the Browser Development Tools to ensure that requests are going to the correct location.")]),e._v(" "),t("li",[e._v("Check to ensure the environment variable "),t("code",[e._v("CASS_LOOPBACK")]),e._v(" is set to the endpoint of the server.")]),e._v(" "),t("li",[e._v("Apache requires proxy_http to function. If Apache fails to start up, the proxy_http module may not be enabled. In HTTPD, this is called "),t("code",[e._v("mod_proxy_http")]),e._v(".")]),e._v(" "),t("li",[e._v("The installer will not modify a current install of the Apache/HTTPD Web Server if proxy settings are being used (even from a previous install).")]),e._v(" "),t("li",[e._v("When upgrading from 0.1.0 -- If you get the error "),t("code",[e._v("HTTP Status 404 - /cass-0.0.1/")])]),e._v(" "),t("li",[e._v("Alter the apache conf files to use ProxyPass / "),t("code",[e._v("http://localhost:8080/cass/")]),e._v(", not ProxyPass / "),t("code",[e._v("http://localhost:8080/cass-0.0.1/")])]),e._v(" "),t("li",[e._v("After an upgrade, database incompatibilities may occur. You may export and import data before upgrades using the following web services:\n"),t("ul",[t("li",[t("code",[e._v("http:///skyrepo/util/backup?secret=[contents of skyId.secret in etc folder]")])]),e._v(" "),t("li",[t("code",[e._v("http:///skyrepo/util/restore?secret=[contents of skyId.secret in etc folder]")])])])]),e._v(" "),t("li",[e._v("If you are upgrading ElasticSearch from version 5 to 7, you'll need to first upgrade to 6 and start CaSS. Keep an eye on the logs, and after the data has finished reindexing, you can upgrade to 7.")])]),e._v(" "),t("h2",{attrs:{id:"troubleshooting"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Is ElasticSearch running?")]),e._v(" "),t("ul",[t("li",[e._v("If not, start it manually and ensure the service is configured to start automatically on boot.")])])]),e._v(" "),t("li",[t("strong",[e._v("Is PM2 running?")]),e._v(" "),t("ul",[t("li",[e._v("If not, start it manually and ensure the service is configured to start automatically on boot.")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("http://:8080/cass/")]),e._v("?")]),e._v(" "),t("ul",[t("li",[e._v("Make sure there are no conflicts on port 8080.")]),e._v(" "),t("li",[e._v("Verify that PM2 is running.")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("http://:8080/cass/api/")]),e._v(" with a response “Service does not exist”?")]),e._v(" "),t("ul",[t("li",[e._v("If the request hangs, ensure ElasticSearch is running and that it started without error (check the logs).")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("http://:8080/cass/api/data?q=*")]),e._v(" and receive a valid response (empty list or data array depending on the data in the system)?")]),e._v(" "),t("ul",[t("li",[e._v("If the request hangs, ensure ElasticSearch is running and that it started without error (check the logs).")])])]),e._v(" "),t("li",[t("strong",[e._v("Access your local CASS installation via browser "),t("code",[e._v("http://:8080/cass/")]),e._v(", create a new user, and attempt to login.")]),e._v(" "),t("ul",[t("li",[e._v("Did the login complete?")]),e._v(" "),t("li",[e._v("Did the login icon in the left sidebar change to display your initials?")]),e._v(" "),t("li",[e._v("Did you gain new capabilities? (Assertions, Configuration -> Users and Groups)")]),e._v(" "),t("li",[e._v("If not, repeat the operations with browser developer tools enabled. Watch the network stream and ensure the ‘login’, ‘create’, and ‘commit’ requests and responses are occurring without incident.")])])]),e._v(" "),t("li",[t("strong",[e._v("Create a framework.")]),e._v(" "),t("ul",[t("li",[e._v("Did it appear on the screen?\n"),t("ul",[t("li",[e._v("If not, repeat the operation with browser developer tools enabled. Watch the network stream and ensure the framework creation POST occurred without incident.")])])])])]),e._v(" "),t("li",[t("strong",[e._v("Create a competency in the framework.")]),e._v(" "),t("ul",[t("li",[e._v("Did it appear in the framework?\n"),t("ul",[t("li",[e._v("If not, repeat the operation with browser developer tools enabled. Watch the network stream and ensure the competency creation POST occurred without incident.")])])]),e._v(" "),t("li",[e._v("Delete the competency and framework.")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("https:///")]),e._v(" and view the website?")]),e._v(" "),t("ul",[t("li",[e._v("If not, can you access "),t("code",[e._v("http:///")]),e._v(" (http vs. https) and view the website?\n"),t("ul",[t("li",[e._v("If so, verify the reverse proxy settings are applied to the HTTPS configuration.")]),e._v(" "),t("li",[e._v("If not, ensure the Apache2 server (or IIS) is working correctly (check the logs, debug the reverse proxy, etc.).")])])])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("https:///api/")]),e._v("and get “Service does not exist”?")]),e._v(" "),t("ul",[t("li",[e._v("If not, ensure the Apache2 server (or IIS) is working correctly (check the logs, debug the reverse proxy, etc.).")])])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{669:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"cass-installation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-installation"}},[e._v("#")]),e._v(" CaSS Installation")]),e._v(" "),t("p",[e._v("This is the installation guide for a CaSS instance. If you're just looking to work with an existing CaSS instance, you may be looking for the CaSS Library. See the "),t("a",{attrs:{href:"/dev/links-and-references"}},[e._v("Links")]),e._v(" section for more information.")]),e._v(" "),t("h2",{attrs:{id:"system-requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-requirements"}},[e._v("#")]),e._v(" System Requirements")]),e._v(" "),t("ul",[t("li",[e._v("4 GB of ram (can work with 2 GB with additional configuration)\n"),t("ul",[t("li",[e._v("ElasticSearch 7: 2 GB (can be reduced to 1 GB)")])])]),e._v(" "),t("li",[e._v("At least 8 GB of hard drive space.")])]),e._v(" "),t("h2",{attrs:{id:"cass-version-requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-version-requirements"}},[e._v("#")]),e._v(" CaSS Version Requirements")]),e._v(" "),t("p",[e._v("Minimum CaSS version selection for inclusion of CaSS Authoring Tools should be "),t("strong",[e._v("1.3")])]),e._v(" "),t("h2",{attrs:{id:"cat-cass-installation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cat-cass-installation"}},[e._v("#")]),e._v(" CAT/CaSS Installation")]),e._v(" "),t("h3",{attrs:{id:"linux-debian-ubuntu-amazon-and-other-fedora-derivatives"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linux-debian-ubuntu-amazon-and-other-fedora-derivatives"}},[e._v("#")]),e._v(" Linux (Debian, Ubuntu, Amazon and other Fedora derivatives)")]),e._v(" "),t("p",[e._v("CaSS can be installed on linux through our Bash install script.")]),e._v(" "),t("p",[e._v("Install and Upgrade")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://raw.githubusercontent.com/cassproject/CASS/master/scripts/cassInstall.sh\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" +x cassInstall.sh\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" ./cassInstall.sh\n")])])]),t("h2",{attrs:{id:"docker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[e._v("#")]),e._v(" Docker")]),e._v(" "),t("p",[e._v("Images for CASS are kept in Docker Hub under "),t("a",{attrs:{href:"https://hub.docker.com/r/cassproject/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("cassproject/cass"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The following command will run the CaSS Standalone server with an interactive prompt and expose it on port 80 on the local machine.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" run "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-it")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-p80:80")]),e._v(" cassproject/cass\n")])])]),t("p",[e._v("Additionally, if you wish to use docker-compose or some other means of deploying CaSS in a constellation of servers, see "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/blob/master/docker-compose.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("this docker-compose file"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"windows"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#windows"}},[e._v("#")]),e._v(" Windows")]),e._v(" "),t("p",[e._v("Windows installation uses "),t("a",{attrs:{href:"https://chocolatey.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Chocolatey"),t("OutboundLink")],1),e._v(" as a package manager. Chocolatey will be used to install all required CASS dependencies (maven, git, and elasticsearch).")]),e._v(" "),t("p",[e._v("If you would like to install these packages by hand or using another tool, please feel free.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://chocolatey.org/packages/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("CASS Package on Chocolatey"),t("OutboundLink")],1)]),e._v(" "),t("h3",{attrs:{id:"once"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#once"}},[e._v("#")]),e._v(" Once")]),e._v(" "),t("p",[e._v("From an elevated powershell:")]),e._v(" "),t("div",{staticClass:"language-batch extra-class"},[t("pre",{pre:!0,attrs:{class:"language-batch"}},[t("code",[t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("Set")]),e._v("-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("3072")]),e._v("; iex ((New-Object System.Net.WebClient")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(".DownloadString"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("'")]),e._v("https://community.chocolatey.org/install.ps1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("refreshenv")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("choco")]),e._v(" install "),t("span",{pre:!0,attrs:{class:"token parameter attr-name"}},[e._v("-y")]),e._v(" cass")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("refreshenv")])]),e._v("\n")])])]),t("p",[e._v("Go to services, start "),t("code",[e._v("elasticsearch-service-x64")]),e._v(" and set it to start automatically.")]),e._v(" "),t("h3",{attrs:{id:"install-upgrade"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#install-upgrade"}},[e._v("#")]),e._v(" Install/Upgrade")]),e._v(" "),t("p",[e._v("Before upgrading, copy out the etc folder from the root directory of the CaSS installation. From an elevated command line:")]),e._v(" "),t("div",{staticClass:"language-batch extra-class"},[t("pre",{pre:!0,attrs:{class:"language-batch"}},[t("code",[t("span",{pre:!0,attrs:{class:"token command"}},[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("choco")]),e._v(" install "),t("span",{pre:!0,attrs:{class:"token parameter attr-name"}},[e._v("-y")]),e._v(" cass")]),e._v("\n")])])]),t("p",[e._v("Then copy the etc folder back in.")]),e._v(" "),t("h2",{attrs:{id:"setup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setup"}},[e._v("#")]),e._v(" Setup")]),e._v(" "),t("ul",[t("li",[e._v("Set up a "),t("strong",[e._v("DNS endpoint")])]),e._v(" "),t("li",[e._v("Set up an "),t("strong",[e._v("HTTPS certificate")])]),e._v(" "),t("li",[e._v("Set up "),t("a",{attrs:{href:"https://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis",target:"_blank",rel:"noopener noreferrer"}},[e._v("IIS Reverse Proxy"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Reverse Proxy Endpoint: "),t("code",[e._v("https:/// -> http://localhost:8080/cass/")])])])]),e._v(" "),t("li",[e._v("In your firewall, deny access to ports "),t("code",[e._v("9200")]),e._v(" and "),t("code",[e._v("8080")]),e._v(" to all machines except localhost.")])]),e._v(" "),t("h2",{attrs:{id:"post-installation-checklist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#post-installation-checklist"}},[e._v("#")]),e._v(" Post-Installation Checklist")]),e._v(" "),t("ol",[t("li",[e._v("Ensure API is started and reachable through a desired endpoint")]),e._v(" "),t("li",[e._v("(e.g. "),t("code",[e._v("http://cass..org/api/custom/")]),e._v(").")]),e._v(" "),t("li",[e._v("Note that all objects created will use this endpoint in their permanent locator, so make sure!")]),e._v(" "),t("li",[e._v("Ensure Website is reachable through a desired endpoint")]),e._v(" "),t("li",[e._v("(e.g. "),t("code",[e._v("http://cass..org/")]),e._v(").")]),e._v(" "),t("li",[e._v("CASS attempts to auto-detect the endpoint for the server automatically. XSS or obscure endpoints may require additional configuration.")]),e._v(" "),t("li",[e._v("Set PM2 logs to rotate with the "),t("code",[e._v("npm run rotatelogs")]),e._v(" command. On Windows machines, we have found that it works better to change the rotatelogs command in the package.json file to "),t("code",[e._v("pm2 install @jessety/pm2-logrotate")]),e._v(" before running the npm command.")]),e._v(" "),t("li",[e._v("To get the process to restart when your Linux machine restarts, run "),t("code",[e._v("npm run pm2startup")]),e._v(", run the command the process tells you to, and run "),t("code",[e._v("npm run pm2save")]),e._v(". For Windows, an additional library is needed to configure this. We followed the instructions here: https://stackoverflow.com/a/42770772")])]),e._v(" "),t("h2",{attrs:{id:"testing-upgrade-and-installation-faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing-upgrade-and-installation-faq"}},[e._v("#")]),e._v(" Testing, upgrade, and installation FAQ")]),e._v(" "),t("ol",[t("li",[e._v("Most errors will occur due to a lack of connectivity with the appropriate endpoint. Use the Browser Development Tools to ensure that requests are going to the correct location.")]),e._v(" "),t("li",[e._v("Check to ensure the environment variable "),t("code",[e._v("CASS_LOOPBACK")]),e._v(" is set to the endpoint of the server.")]),e._v(" "),t("li",[e._v("Apache requires proxy_http to function. If Apache fails to start up, the proxy_http module may not be enabled. In HTTPD, this is called "),t("code",[e._v("mod_proxy_http")]),e._v(".")]),e._v(" "),t("li",[e._v("The installer will not modify a current install of the Apache/HTTPD Web Server if proxy settings are being used (even from a previous install).")]),e._v(" "),t("li",[e._v("When upgrading from 0.1.0 -- If you get the error "),t("code",[e._v("HTTP Status 404 - /cass-0.0.1/")])]),e._v(" "),t("li",[e._v("Alter the apache conf files to use ProxyPass / "),t("code",[e._v("http://localhost:8080/cass/")]),e._v(", not ProxyPass / "),t("code",[e._v("http://localhost:8080/cass-0.0.1/")])]),e._v(" "),t("li",[e._v("After an upgrade, database incompatibilities may occur. You may export and import data before upgrades using the following web services:\n"),t("ul",[t("li",[t("code",[e._v("http:///skyrepo/util/backup?secret=[contents of skyId.secret in etc folder]")])]),e._v(" "),t("li",[t("code",[e._v("http:///skyrepo/util/restore?secret=[contents of skyId.secret in etc folder]")])])])]),e._v(" "),t("li",[e._v("If you are upgrading ElasticSearch from version 5 to 7, you'll need to first upgrade to 6 and start CaSS. Keep an eye on the logs, and after the data has finished reindexing, you can upgrade to 7.")])]),e._v(" "),t("h2",{attrs:{id:"troubleshooting"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Is ElasticSearch running?")]),e._v(" "),t("ul",[t("li",[e._v("If not, start it manually and ensure the service is configured to start automatically on boot.")])])]),e._v(" "),t("li",[t("strong",[e._v("Is PM2 running?")]),e._v(" "),t("ul",[t("li",[e._v("If not, start it manually and ensure the service is configured to start automatically on boot.")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("http://:8080/cass/")]),e._v("?")]),e._v(" "),t("ul",[t("li",[e._v("Make sure there are no conflicts on port 8080.")]),e._v(" "),t("li",[e._v("Verify that PM2 is running.")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("http://:8080/cass/api/")]),e._v(" with a response “Service does not exist”?")]),e._v(" "),t("ul",[t("li",[e._v("If the request hangs, ensure ElasticSearch is running and that it started without error (check the logs).")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("http://:8080/cass/api/data?q=*")]),e._v(" and receive a valid response (empty list or data array depending on the data in the system)?")]),e._v(" "),t("ul",[t("li",[e._v("If the request hangs, ensure ElasticSearch is running and that it started without error (check the logs).")])])]),e._v(" "),t("li",[t("strong",[e._v("Access your local CASS installation via browser "),t("code",[e._v("http://:8080/cass/")]),e._v(", create a new user, and attempt to login.")]),e._v(" "),t("ul",[t("li",[e._v("Did the login complete?")]),e._v(" "),t("li",[e._v("Did the login icon in the left sidebar change to display your initials?")]),e._v(" "),t("li",[e._v("Did you gain new capabilities? (Assertions, Configuration -> Users and Groups)")]),e._v(" "),t("li",[e._v("If not, repeat the operations with browser developer tools enabled. Watch the network stream and ensure the ‘login’, ‘create’, and ‘commit’ requests and responses are occurring without incident.")])])]),e._v(" "),t("li",[t("strong",[e._v("Create a framework.")]),e._v(" "),t("ul",[t("li",[e._v("Did it appear on the screen?\n"),t("ul",[t("li",[e._v("If not, repeat the operation with browser developer tools enabled. Watch the network stream and ensure the framework creation POST occurred without incident.")])])])])]),e._v(" "),t("li",[t("strong",[e._v("Create a competency in the framework.")]),e._v(" "),t("ul",[t("li",[e._v("Did it appear in the framework?\n"),t("ul",[t("li",[e._v("If not, repeat the operation with browser developer tools enabled. Watch the network stream and ensure the competency creation POST occurred without incident.")])])]),e._v(" "),t("li",[e._v("Delete the competency and framework.")])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("https:///")]),e._v(" and view the website?")]),e._v(" "),t("ul",[t("li",[e._v("If not, can you access "),t("code",[e._v("http:///")]),e._v(" (http vs. https) and view the website?\n"),t("ul",[t("li",[e._v("If so, verify the reverse proxy settings are applied to the HTTPS configuration.")]),e._v(" "),t("li",[e._v("If not, ensure the Apache2 server (or IIS) is working correctly (check the logs, debug the reverse proxy, etc.).")])])])])]),e._v(" "),t("li",[t("strong",[e._v("Can you access "),t("code",[e._v("https:///api/")]),e._v("and get “Service does not exist”?")]),e._v(" "),t("ul",[t("li",[e._v("If not, ensure the Apache2 server (or IIS) is working correctly (check the logs, debug the reverse proxy, etc.).")])])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/49.784dd7e3.js.gz b/docs/assets/js/49.784dd7e3.js.gz new file mode 100644 index 000000000..c8b26194c Binary files /dev/null and b/docs/assets/js/49.784dd7e3.js.gz differ diff --git a/docs/assets/js/49.cee9880b.js.gz b/docs/assets/js/49.cee9880b.js.gz deleted file mode 100644 index 307ddaaac..000000000 Binary files a/docs/assets/js/49.cee9880b.js.gz and /dev/null differ diff --git a/docs/assets/js/50.afc9a393.js b/docs/assets/js/50.2356f2a6.js similarity index 92% rename from docs/assets/js/50.afc9a393.js rename to docs/assets/js/50.2356f2a6.js index 087ae60e8..6e1f2463c 100644 --- a/docs/assets/js/50.afc9a393.js +++ b/docs/assets/js/50.2356f2a6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{672:function(t,e,a){"use strict";a.r(e);var r=a(69),n=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("The CaSS Library allows you to programatically interact with a CaSS instance. These pages will walk you through the basics of using the library in whichever language or environment you choose.")]),t._v(" "),e("p",[t._v("Links for distributions of the library may be found in the "),e("RouterLink",{attrs:{to:"/dev/links-and-references/"}},[t._v("Links")]),t._v(" page inside the developer guide.")],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{671:function(t,e,a){"use strict";a.r(e);var r=a(69),n=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("The CaSS Library allows you to programatically interact with a CaSS instance. These pages will walk you through the basics of using the library in whichever language or environment you choose.")]),t._v(" "),e("p",[t._v("Links for distributions of the library may be found in the "),e("RouterLink",{attrs:{to:"/dev/links-and-references/"}},[t._v("Links")]),t._v(" page inside the developer guide.")],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/50.2356f2a6.js.gz b/docs/assets/js/50.2356f2a6.js.gz new file mode 100644 index 000000000..b6583ac97 Binary files /dev/null and b/docs/assets/js/50.2356f2a6.js.gz differ diff --git a/docs/assets/js/50.afc9a393.js.gz b/docs/assets/js/50.afc9a393.js.gz deleted file mode 100644 index eec7ee975..000000000 Binary files a/docs/assets/js/50.afc9a393.js.gz and /dev/null differ diff --git a/docs/assets/js/51.b250ec1f.js b/docs/assets/js/51.fef1f39a.js similarity index 99% rename from docs/assets/js/51.b250ec1f.js rename to docs/assets/js/51.fef1f39a.js index 21aeffb87..a0ec4a6f8 100644 --- a/docs/assets/js/51.b250ec1f.js +++ b/docs/assets/js/51.fef1f39a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{671:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"c"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#c"}},[t._v("#")]),t._v(" C#")]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("DANGER")]),t._v(" "),s("p",[t._v("Currently, there is no formal CASS library for C#. If you would like to contribute or begin developing one, see the "),s("RouterLink",{attrs:{to:"/dev/contributing/"}},[t._v("contributor section")]),t._v(" of this guide.")],1)]),t._v(" "),s("h2",{attrs:{id:"javascript-interpreter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript-interpreter"}},[t._v("#")]),t._v(" JavaScript Interpreter")]),t._v(" "),s("p",[t._v("Several JavaScript interpreters have been written for C#, however, it is unclear whether appropriate bindings exist. In theory, the CASS Libraries are compatible with any JavaScript environment, given access to functions like JQuery’s "),s("code",[t._v("$.ajax")]),t._v(" call.")]),t._v(" "),s("p",[t._v("This type of integration is desirable for continued expansion of supported languages for CASS.")]),t._v(" "),s("p",[s("strong",[t._v("If this is something you would like to pursue, please get in touch with the lead developer: fritz.ray@eduworks.com")])]),t._v(" "),s("h2",{attrs:{id:"consuming-data"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consuming-data"}},[t._v("#")]),t._v(" Consuming Data")]),t._v(" "),s("p",[t._v("If you are only intending to consume CASS data, the path is much simpler.")]),t._v(" "),s("ol",[s("li",[t._v("Create a helper method and fetch resources")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token return-type class-name"}},[t._v("Task"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("JsonObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("httpGetJsonObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Net"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Http"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("HttpClient")]),t._v(" hc "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("System"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Net"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Http"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("HttpClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" s "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" hc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetStringAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonObject")]),t._v(" root "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Windows"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Json"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("JsonValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Parse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("s"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" root"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ol",{attrs:{start:"2"}},[s("li",[t._v("Retrieve frameworks and competencies")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonObject")]),t._v(" obj "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("httpGetJsonObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" foo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNamedString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonObject")]),t._v(" obj2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("httpGetJsonObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNamedArray")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"competency"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nfoo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\\n"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" obj2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNamedString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",[s("li",[t._v("If you need to generate an RSA public/private keypair in C#, use NuGet to download a package called BouncyCastle")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Crypto")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Crypto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Generators")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("OpenSsl")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Security")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RsaKeyPairGenerator")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("RsaKeyPairGenerator")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Init")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("KeyGenerationParameters")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("SecureRandom")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsymmetricCipherKeyPair")]),t._v(" keys "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GenerateKeyPair")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TextWriter")]),t._v(" textWriter "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("StringWriter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PemWriter")]),t._v(" pemWriter "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("PemWriter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("textWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\npemWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("keys"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Private"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\npemWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Writer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Flush")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")])]),t._v(" privateKey "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" textWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{672:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"c"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#c"}},[t._v("#")]),t._v(" C#")]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("DANGER")]),t._v(" "),s("p",[t._v("Currently, there is no formal CASS library for C#. If you would like to contribute or begin developing one, see the "),s("RouterLink",{attrs:{to:"/dev/contributing/"}},[t._v("contributor section")]),t._v(" of this guide.")],1)]),t._v(" "),s("h2",{attrs:{id:"javascript-interpreter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript-interpreter"}},[t._v("#")]),t._v(" JavaScript Interpreter")]),t._v(" "),s("p",[t._v("Several JavaScript interpreters have been written for C#, however, it is unclear whether appropriate bindings exist. In theory, the CASS Libraries are compatible with any JavaScript environment, given access to functions like JQuery’s "),s("code",[t._v("$.ajax")]),t._v(" call.")]),t._v(" "),s("p",[t._v("This type of integration is desirable for continued expansion of supported languages for CASS.")]),t._v(" "),s("p",[s("strong",[t._v("If this is something you would like to pursue, please get in touch with the lead developer: fritz.ray@eduworks.com")])]),t._v(" "),s("h2",{attrs:{id:"consuming-data"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consuming-data"}},[t._v("#")]),t._v(" Consuming Data")]),t._v(" "),s("p",[t._v("If you are only intending to consume CASS data, the path is much simpler.")]),t._v(" "),s("ol",[s("li",[t._v("Create a helper method and fetch resources")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token return-type class-name"}},[t._v("Task"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("JsonObject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("httpGetJsonObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Net"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Http"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("HttpClient")]),t._v(" hc "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("System"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Net"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Http"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("HttpClient")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" s "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" hc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetStringAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonObject")]),t._v(" root "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Windows"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Json"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("JsonValue"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Parse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("s"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" root"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ol",{attrs:{start:"2"}},[s("li",[t._v("Retrieve frameworks and competencies")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonObject")]),t._v(" obj "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("httpGetJsonObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" foo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNamedString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("JsonObject")]),t._v(" obj2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("httpGetJsonObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNamedArray")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"competency"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nfoo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"\\n"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" obj2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNamedString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",[s("li",[t._v("If you need to generate an RSA public/private keypair in C#, use NuGet to download a package called BouncyCastle")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Crypto")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Crypto"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Generators")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("OpenSsl")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("using")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("Org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("BouncyCastle"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Security")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("RsaKeyPairGenerator")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("RsaKeyPairGenerator")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Init")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("KeyGenerationParameters")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("SecureRandom")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2048")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AsymmetricCipherKeyPair")]),t._v(" keys "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GenerateKeyPair")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TextWriter")]),t._v(" textWriter "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("StringWriter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PemWriter")]),t._v(" pemWriter "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constructor-invocation class-name"}},[t._v("PemWriter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("textWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\npemWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("keys"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Private"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\npemWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Writer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Flush")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")])]),t._v(" privateKey "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" textWriter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/51.b250ec1f.js.gz b/docs/assets/js/51.fef1f39a.js.gz similarity index 52% rename from docs/assets/js/51.b250ec1f.js.gz rename to docs/assets/js/51.fef1f39a.js.gz index b0be373ce..0a5eeb0bf 100644 Binary files a/docs/assets/js/51.b250ec1f.js.gz and b/docs/assets/js/51.fef1f39a.js.gz differ diff --git a/docs/assets/js/53.4a792ce6.js b/docs/assets/js/53.0e43b37a.js similarity index 99% rename from docs/assets/js/53.4a792ce6.js rename to docs/assets/js/53.0e43b37a.js index 928a71b9c..b803d4f78 100644 --- a/docs/assets/js/53.4a792ce6.js +++ b/docs/assets/js/53.0e43b37a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{680:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"javascript"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[t._v("#")]),t._v(" JavaScript")]),t._v(" "),s("p",[t._v("Here, we'll demo some of the CaSS Javascript Library features. To do this easily, we'll use the Developer Console in your web browser.")]),t._v(" "),s("h2",{attrs:{id:"browser"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#browser"}},[t._v("#")]),t._v(" Browser")]),t._v(" "),s("ol",[s("li",[t._v("Navigate "),s("a",{attrs:{href:"https://sandbox.cassproject.org/cass.example/framework.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(". Chrome is what this was built under, but any Javascript console should work. This sample page has the CaSS library loaded, meaning you'll be able to use it directly within the browser's console.")]),t._v(" "),s("li",[t._v("Open the Developer Tools (F12) and switch to the Console.")]),t._v(" "),s("li",[t._v("Clear the console using something resembling 🚫.")]),t._v(" "),s("li",[t._v("Type the following:")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"5"}},[s("li",[t._v("After a few seconds, an object should appear on the console with the framework data. Browse the data a bit before continuing.")])]),t._v(" "),s("p",[t._v("Now let’s do something a bit more interesting, and Create, Update, Read, then Delete a new competency.")]),t._v(" "),s("ol",[s("li",[t._v("First, we need an identity to work under. Type the following:")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids\n")])])]),s("ol",{attrs:{start:"2"}},[s("li",[t._v("If the array has identities in it, you’re good to go (skip to step 5). If not, you need to log in.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("m "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcRemoteIdentityManager")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("server "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Sets the identity server endpoint to the repository endpoint")]),t._v("\nm"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureFromServer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This retrieves username and password salts from the server.")]),t._v("\n")])])]),s("ol",{attrs:{start:"3"}},[s("li",[t._v("We can now begin the login process.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("m"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("startLogin")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Creates the hashes for storage and retrieval of keys.")]),t._v("\nm"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This retrieves the identities and encryption keys from the server.")]),t._v("\n")])])]),s("ol",{attrs:{start:"4"}},[s("li",[t._v("Now check again to make sure the identity is available for use.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids\n")])])]),s("ol",{attrs:{start:"5"}},[s("li",[t._v("Now let’s instantiate a new competency.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"6"}},[s("li",[t._v("Viewing the competency, we can see it has no owner, no id, nothing except for a type. This object is not ready to be saved. Let’s make it so.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This generates a new ID that sets the object’s home to sandbox.")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This adds us as the owner.")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"7"}},[s("li",[t._v("An object isn’t useful without data, so let’s populate it with some useful data.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Creating Competencies by hand using CASS."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Subject can create competencies using CASS in the Javascript Console."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"8"}},[s("li",[t._v("Lets examine our object one more time and then save it.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"9"}},[s("li",[t._v("Now navigate to your new object’s URL (in a new tab!)")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("open")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"10"}},[s("li",[t._v("Finally, delete the object.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"11"}},[s("li",[t._v("Refreshing the tab, the object has been deleted. However, the object is versioned, so if you perform the following, it will continue to exist. Examine the difference between the IDs. Note that the version portion of the URL will update automatically upon save. (compare it to the ID in step 6)")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Refers to the the immutable version of the object at that version.")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Refers to the latest version of the object.")]),t._v("\nwindow"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("open")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"12"}},[s("li",[t._v("Examine some of the other functions that exist and see how they operate.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("f "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcFramework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"javascript-library"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript-library"}},[t._v("#")]),t._v(" JavaScript Library")]),t._v(" "),s("p",[t._v("If you'd like to use the JavaScript library, there are several ways of obtaining (or linking to) it:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/cassproject/CaSS/tree/master/src/main/js",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("A "),s("a",{attrs:{href:"https://cdn.jsdelivr.net/gh/cassproject/cass@master/src/main/js/cass.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("CDN"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("NPM: npm install "),s("a",{attrs:{href:"https://www.npmjs.com/package/cassproject",target:"_blank",rel:"noopener noreferrer"}},[t._v("cassproject"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("Check out the Links page for a compilation of all relevant links in one location.")]),t._v(" "),s("p",[t._v("If you’re just looking to retrieve competencies or frameworks, here are some examples:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcFramework"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("alert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stringify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("framework"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nEcCompetency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Competency/onet:1.A.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("competency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("alert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stringify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("competency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("If you see the alert, you’re ready to go. Check out the other guides for more information.")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{675:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"javascript"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[t._v("#")]),t._v(" JavaScript")]),t._v(" "),s("p",[t._v("Here, we'll demo some of the CaSS Javascript Library features. To do this easily, we'll use the Developer Console in your web browser.")]),t._v(" "),s("h2",{attrs:{id:"browser"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#browser"}},[t._v("#")]),t._v(" Browser")]),t._v(" "),s("ol",[s("li",[t._v("Navigate "),s("a",{attrs:{href:"https://sandbox.cassproject.org/cass.example/framework.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(". Chrome is what this was built under, but any Javascript console should work. This sample page has the CaSS library loaded, meaning you'll be able to use it directly within the browser's console.")]),t._v(" "),s("li",[t._v("Open the Developer Tools (F12) and switch to the Console.")]),t._v(" "),s("li",[t._v("Clear the console using something resembling 🚫.")]),t._v(" "),s("li",[t._v("Type the following:")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"5"}},[s("li",[t._v("After a few seconds, an object should appear on the console with the framework data. Browse the data a bit before continuing.")])]),t._v(" "),s("p",[t._v("Now let’s do something a bit more interesting, and Create, Update, Read, then Delete a new competency.")]),t._v(" "),s("ol",[s("li",[t._v("First, we need an identity to work under. Type the following:")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids\n")])])]),s("ol",{attrs:{start:"2"}},[s("li",[t._v("If the array has identities in it, you’re good to go (skip to step 5). If not, you need to log in.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("m "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcRemoteIdentityManager")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("server "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Sets the identity server endpoint to the repository endpoint")]),t._v("\nm"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureFromServer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This retrieves username and password salts from the server.")]),t._v("\n")])])]),s("ol",{attrs:{start:"3"}},[s("li",[t._v("We can now begin the login process.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("m"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("startLogin")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Creates the hashes for storage and retrieval of keys.")]),t._v("\nm"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This retrieves the identities and encryption keys from the server.")]),t._v("\n")])])]),s("ol",{attrs:{start:"4"}},[s("li",[t._v("Now check again to make sure the identity is available for use.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids\n")])])]),s("ol",{attrs:{start:"5"}},[s("li",[t._v("Now let’s instantiate a new competency.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"6"}},[s("li",[t._v("Viewing the competency, we can see it has no owner, no id, nothing except for a type. This object is not ready to be saved. Let’s make it so.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This generates a new ID that sets the object’s home to sandbox.")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This adds us as the owner.")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"7"}},[s("li",[t._v("An object isn’t useful without data, so let’s populate it with some useful data.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Creating Competencies by hand using CASS."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Subject can create competencies using CASS in the Javascript Console."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"8"}},[s("li",[t._v("Lets examine our object one more time and then save it.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"9"}},[s("li",[t._v("Now navigate to your new object’s URL (in a new tab!)")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("open")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"10"}},[s("li",[t._v("Finally, delete the object.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"11"}},[s("li",[t._v("Refreshing the tab, the object has been deleted. However, the object is versioned, so if you perform the following, it will continue to exist. Examine the difference between the IDs. Note that the version portion of the URL will update automatically upon save. (compare it to the ID in step 6)")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Refers to the the immutable version of the object at that version.")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Refers to the latest version of the object.")]),t._v("\nwindow"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("open")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("ol",{attrs:{start:"12"}},[s("li",[t._v("Examine some of the other functions that exist and see how they operate.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("f "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcFramework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"javascript-library"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript-library"}},[t._v("#")]),t._v(" JavaScript Library")]),t._v(" "),s("p",[t._v("If you'd like to use the JavaScript library, there are several ways of obtaining (or linking to) it:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/cassproject/CaSS/tree/master/src/main/js",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("A "),s("a",{attrs:{href:"https://cdn.jsdelivr.net/gh/cassproject/cass@master/src/main/js/cass.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("CDN"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("NPM: npm install "),s("a",{attrs:{href:"https://www.npmjs.com/package/cassproject",target:"_blank",rel:"noopener noreferrer"}},[t._v("cassproject"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("Check out the Links page for a compilation of all relevant links in one location.")]),t._v(" "),s("p",[t._v("If you’re just looking to retrieve competencies or frameworks, here are some examples:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcFramework"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("alert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stringify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("framework"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nEcCompetency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Competency/onet:1.A.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("competency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("alert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("stringify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("competency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("If you see the alert, you’re ready to go. Check out the other guides for more information.")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/53.0e43b37a.js.gz b/docs/assets/js/53.0e43b37a.js.gz new file mode 100644 index 000000000..e23610da0 Binary files /dev/null and b/docs/assets/js/53.0e43b37a.js.gz differ diff --git a/docs/assets/js/53.4a792ce6.js.gz b/docs/assets/js/53.4a792ce6.js.gz deleted file mode 100644 index d6b1f6e4d..000000000 Binary files a/docs/assets/js/53.4a792ce6.js.gz and /dev/null differ diff --git a/docs/assets/js/55.9a50c992.js.gz b/docs/assets/js/55.9a50c992.js.gz deleted file mode 100644 index 53362c079..000000000 Binary files a/docs/assets/js/55.9a50c992.js.gz and /dev/null differ diff --git a/docs/assets/js/55.9a50c992.js b/docs/assets/js/55.e7808226.js similarity index 98% rename from docs/assets/js/55.9a50c992.js rename to docs/assets/js/55.e7808226.js index a2e6a8fe5..c2569916d 100644 --- a/docs/assets/js/55.9a50c992.js +++ b/docs/assets/js/55.e7808226.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{675:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"php"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#php"}},[t._v("#")]),t._v(" PHP")]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("DANGER")]),t._v(" "),s("p",[t._v("Currently, there is no formal CASS library for PHP. If you would like to contribute or begin developing one, see the contributor section of this guide. We welcome contributions in the form of PHP libraries. "),s("strong",[t._v("If this is something you would like to pursue, please get in touch with the lead developer: "),s("a",{attrs:{href:"mailto:fritz.ray@eduworks.com"}},[t._v("fritz.ray@eduworks.com")])])])]),t._v(" "),s("h2",{attrs:{id:"javascript"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[t._v("#")]),t._v(" Javascript")]),t._v(" "),s("p",[t._v("As PHP typically outputs data to a website, we recommend, if possible, doing processing client side using the CASS JavaScript Library. However, this may be impractical, as the server may have access to data that is not available to the client.")]),t._v(" "),s("h2",{attrs:{id:"consuming-data"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consuming-data"}},[t._v("#")]),t._v(" Consuming Data")]),t._v(" "),s("p",[t._v("If you are only intending to consume CASS data, the path is much simpler.")]),t._v(" "),s("ol",[s("li",[t._v("Fetch the resources and decode them as JSON, then use them normally")])]),t._v(" "),s("div",{staticClass:"language-php extra-class"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token php language-php"}},[s("span",{pre:!0,attrs:{class:"token delimiter important"}},[t._v("")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
    "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("foreach")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$json")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("competency")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$comp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
  • "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("json_decode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("file_get_contents")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$comp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("name")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
  • "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token delimiter important"}},[t._v("?>")])]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{676:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"php"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#php"}},[t._v("#")]),t._v(" PHP")]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("DANGER")]),t._v(" "),s("p",[t._v("Currently, there is no formal CASS library for PHP. If you would like to contribute or begin developing one, see the contributor section of this guide. We welcome contributions in the form of PHP libraries. "),s("strong",[t._v("If this is something you would like to pursue, please get in touch with the lead developer: "),s("a",{attrs:{href:"mailto:fritz.ray@eduworks.com"}},[t._v("fritz.ray@eduworks.com")])])])]),t._v(" "),s("h2",{attrs:{id:"javascript"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[t._v("#")]),t._v(" Javascript")]),t._v(" "),s("p",[t._v("As PHP typically outputs data to a website, we recommend, if possible, doing processing client side using the CASS JavaScript Library. However, this may be impractical, as the server may have access to data that is not available to the client.")]),t._v(" "),s("h2",{attrs:{id:"consuming-data"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#consuming-data"}},[t._v("#")]),t._v(" Consuming Data")]),t._v(" "),s("p",[t._v("If you are only intending to consume CASS data, the path is much simpler.")]),t._v(" "),s("ol",[s("li",[t._v("Fetch the resources and decode them as JSON, then use them normally")])]),t._v(" "),s("div",{staticClass:"language-php extra-class"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token php language-php"}},[s("span",{pre:!0,attrs:{class:"token delimiter important"}},[t._v("")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
    "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("foreach")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$json")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("competency")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$comp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
  • "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("json_decode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("file_get_contents")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$comp")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("name")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
  • "')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string double-quoted-string"}},[t._v('"
"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token delimiter important"}},[t._v("?>")])]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/55.e7808226.js.gz b/docs/assets/js/55.e7808226.js.gz new file mode 100644 index 000000000..04e8e3ea8 Binary files /dev/null and b/docs/assets/js/55.e7808226.js.gz differ diff --git a/docs/assets/js/56.daf83aa4.js b/docs/assets/js/56.46e8d2ac.js similarity index 98% rename from docs/assets/js/56.daf83aa4.js rename to docs/assets/js/56.46e8d2ac.js index 1a5e6deec..7015a0c41 100644 --- a/docs/assets/js/56.daf83aa4.js +++ b/docs/assets/js/56.46e8d2ac.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{676:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"contributing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing"}},[e._v("#")]),e._v(" Contributing")]),e._v(" "),t("p",[e._v("Thanks you for your interest in contributing to CaSS.")]),e._v(" "),t("p",[e._v("Additional governance documentation is available on the "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/community",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub Community Page"),t("OutboundLink")],1),e._v(" for CaSS.")]),e._v(" "),t("h2",{attrs:{id:"getting-started"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),t("p",[e._v("Before you contribute, please connect with the CaSS Project group by subscribing to the slack channel, joining the mailing lists, and joining the "),t("em",[e._v("#dev")]),e._v(" channel on Slack. Once you have joined the group, please introduce yourself by telling us who you are and what type of contributions you are interested in making. We welcome contributions of:")]),e._v(" "),t("ul",[t("li",[e._v("Issues")]),e._v(" "),t("li",[e._v("Tools or applications that use CaSS Libraries")]),e._v(" "),t("li",[e._v("Libraries or adapters that enable CaSS to integrate with third party applications")]),e._v(" "),t("li",[e._v("CaSS Project or CaSS Library code")]),e._v(" "),t("li",[e._v("Documentation and guides")])]),e._v(" "),t("p",[e._v("Please note that all contributions will be reviewed by the governance team or technical advisory group of the CaSS Project.")]),e._v(" "),t("h2",{attrs:{id:"getting-help"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getting-help"}},[e._v("#")]),e._v(" Getting Help")]),e._v(" "),t("p",[e._v("If you get stuck or find a problem, please file a GitHub and, for more immediate help, contact us via Slack or by emailing "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("us")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"development-stack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#development-stack"}},[e._v("#")]),e._v(" Development Stack")]),e._v(" "),t("p",[e._v("The CASS Library is a Javascript Library, and is available in "),t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.npmjs.com/package/cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("NPM"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://bower.io/search/?q=cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bower"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The preferred development environment is not specified, but we tend to use Visual Studio Code.")]),e._v(" "),t("h2",{attrs:{id:"governance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),t("ul",[t("li",[e._v("The CaSS Project is an open source community governed by "),t("a",{attrs:{href:"https://www.eduworks.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Eduworks Corporation"),t("OutboundLink")],1),e._v(' ("Eduworks").')]),e._v(" "),t("li",[e._v("The CaSS website, documentation, and GitHub project are managed by Eduworks.")]),e._v(" "),t("li",[e._v("The CaSS Project accepts contributions in the form of pull requests, communications, suggestions, documents, and issues via GitHub.")]),e._v(" "),t("li",[e._v("All contributors must sign a CaSS Project CLA prior to making any contribution outside of GitHub. The CaSS Project CLAs are similar to the Individual and Corporate Apache Contributor License Agreements. Please email "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("us")]),e._v(" for a CLA.")])]),e._v(" "),t("h2",{attrs:{id:"architecture"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),t("p",[e._v("The CaSS Architecture Slides document, available "),t("a",{attrs:{href:"https://docs.google.com/presentation/d/1P5SR93EPrxjbTRKfz70tmBXmmsH0JjxKvoZR-70UDsg",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", is a useful set of visualizations for understanding CaSS and its architecture.")]),e._v(" "),t("h2",{attrs:{id:"contributing-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing-2"}},[e._v("#")]),e._v(" Contributing")]),e._v(" "),t("p",[e._v("To contribute changes to CaSS, please clone the project to your GitHub and submit changes from your clone to the main project via Pull Requests. To contribute new libraries or software, please devolop the code on GitHub and assign your project to the CaSS Project Group when complete.")]),e._v(" "),t("p",[e._v("All contributions will be reviewed by Eduworks. Commits of accepted contributions will be made by Eduworks.")]),e._v(" "),t("p",[e._v("To contribute other resources, please contact "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("us")]),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{677:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"contributing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing"}},[e._v("#")]),e._v(" Contributing")]),e._v(" "),t("p",[e._v("Thanks you for your interest in contributing to CaSS.")]),e._v(" "),t("p",[e._v("Additional governance documentation is available on the "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/community",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub Community Page"),t("OutboundLink")],1),e._v(" for CaSS.")]),e._v(" "),t("h2",{attrs:{id:"getting-started"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),t("p",[e._v("Before you contribute, please connect with the CaSS Project group by subscribing to the slack channel, joining the mailing lists, and joining the "),t("em",[e._v("#dev")]),e._v(" channel on Slack. Once you have joined the group, please introduce yourself by telling us who you are and what type of contributions you are interested in making. We welcome contributions of:")]),e._v(" "),t("ul",[t("li",[e._v("Issues")]),e._v(" "),t("li",[e._v("Tools or applications that use CaSS Libraries")]),e._v(" "),t("li",[e._v("Libraries or adapters that enable CaSS to integrate with third party applications")]),e._v(" "),t("li",[e._v("CaSS Project or CaSS Library code")]),e._v(" "),t("li",[e._v("Documentation and guides")])]),e._v(" "),t("p",[e._v("Please note that all contributions will be reviewed by the governance team or technical advisory group of the CaSS Project.")]),e._v(" "),t("h2",{attrs:{id:"getting-help"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getting-help"}},[e._v("#")]),e._v(" Getting Help")]),e._v(" "),t("p",[e._v("If you get stuck or find a problem, please file a GitHub and, for more immediate help, contact us via Slack or by emailing "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("us")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"development-stack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#development-stack"}},[e._v("#")]),e._v(" Development Stack")]),e._v(" "),t("p",[e._v("The CASS Library is a Javascript Library, and is available in "),t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.npmjs.com/package/cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("NPM"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://bower.io/search/?q=cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bower"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The preferred development environment is not specified, but we tend to use Visual Studio Code.")]),e._v(" "),t("h2",{attrs:{id:"governance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#governance"}},[e._v("#")]),e._v(" Governance")]),e._v(" "),t("ul",[t("li",[e._v("The CaSS Project is an open source community governed by "),t("a",{attrs:{href:"https://www.eduworks.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Eduworks Corporation"),t("OutboundLink")],1),e._v(' ("Eduworks").')]),e._v(" "),t("li",[e._v("The CaSS website, documentation, and GitHub project are managed by Eduworks.")]),e._v(" "),t("li",[e._v("The CaSS Project accepts contributions in the form of pull requests, communications, suggestions, documents, and issues via GitHub.")]),e._v(" "),t("li",[e._v("All contributors must sign a CaSS Project CLA prior to making any contribution outside of GitHub. The CaSS Project CLAs are similar to the Individual and Corporate Apache Contributor License Agreements. Please email "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("us")]),e._v(" for a CLA.")])]),e._v(" "),t("h2",{attrs:{id:"architecture"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),t("p",[e._v("The CaSS Architecture Slides document, available "),t("a",{attrs:{href:"https://docs.google.com/presentation/d/1P5SR93EPrxjbTRKfz70tmBXmmsH0JjxKvoZR-70UDsg",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", is a useful set of visualizations for understanding CaSS and its architecture.")]),e._v(" "),t("h2",{attrs:{id:"contributing-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing-2"}},[e._v("#")]),e._v(" Contributing")]),e._v(" "),t("p",[e._v("To contribute changes to CaSS, please clone the project to your GitHub and submit changes from your clone to the main project via Pull Requests. To contribute new libraries or software, please devolop the code on GitHub and assign your project to the CaSS Project Group when complete.")]),e._v(" "),t("p",[e._v("All contributions will be reviewed by Eduworks. Commits of accepted contributions will be made by Eduworks.")]),e._v(" "),t("p",[e._v("To contribute other resources, please contact "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("us")]),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/56.46e8d2ac.js.gz b/docs/assets/js/56.46e8d2ac.js.gz new file mode 100644 index 000000000..b0dfdb366 Binary files /dev/null and b/docs/assets/js/56.46e8d2ac.js.gz differ diff --git a/docs/assets/js/56.daf83aa4.js.gz b/docs/assets/js/56.daf83aa4.js.gz deleted file mode 100644 index fc007dafc..000000000 Binary files a/docs/assets/js/56.daf83aa4.js.gz and /dev/null differ diff --git a/docs/assets/js/58.46d44f12.js.gz b/docs/assets/js/58.46d44f12.js.gz deleted file mode 100644 index ba731a909..000000000 Binary files a/docs/assets/js/58.46d44f12.js.gz and /dev/null differ diff --git a/docs/assets/js/58.46d44f12.js b/docs/assets/js/58.f742aaea.js similarity index 91% rename from docs/assets/js/58.46d44f12.js rename to docs/assets/js/58.f742aaea.js index 1324a5650..42f205c9d 100644 --- a/docs/assets/js/58.46d44f12.js +++ b/docs/assets/js/58.f742aaea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{677:function(t,e,o){"use strict";o.r(e);var s=o(69),a=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("These pages document ways of extending CaSS with other tools, e.g. working with Moodle. CaSS offers several pre-built adapters for some of these situations as well.")]),t._v(" "),e("p",[t._v("Be sure to check out the "),e("RouterLink",{attrs:{to:"/guide/interoperability/"}},[t._v("Interoperability Page")]),t._v(" in the High-Level Guide as well.")],1)])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{680:function(t,e,o){"use strict";o.r(e);var s=o(69),a=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("These pages document ways of extending CaSS with other tools, e.g. working with Moodle. CaSS offers several pre-built adapters for some of these situations as well.")]),t._v(" "),e("p",[t._v("Be sure to check out the "),e("RouterLink",{attrs:{to:"/guide/interoperability/"}},[t._v("Interoperability Page")]),t._v(" in the High-Level Guide as well.")],1)])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/58.f742aaea.js.gz b/docs/assets/js/58.f742aaea.js.gz new file mode 100644 index 000000000..f929c856b Binary files /dev/null and b/docs/assets/js/58.f742aaea.js.gz differ diff --git a/docs/assets/js/61.6c55878f.js.gz b/docs/assets/js/61.6c55878f.js.gz deleted file mode 100644 index a5b6c7afc..000000000 Binary files a/docs/assets/js/61.6c55878f.js.gz and /dev/null differ diff --git a/docs/assets/js/61.6c55878f.js b/docs/assets/js/61.f6645721.js similarity index 96% rename from docs/assets/js/61.6c55878f.js rename to docs/assets/js/61.f6645721.js index 77f48b1fa..af933eedd 100644 --- a/docs/assets/js/61.6c55878f.js +++ b/docs/assets/js/61.f6645721.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{682:function(a,t,s){"use strict";s.r(t);var e=s(69),r=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"credential-engine-asn"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credential-engine-asn"}},[a._v("#")]),a._v(" Credential Engine ASN")]),a._v(" "),t("p",[a._v("The CEASN Adapter converts CaSS Frameworks to and from "),t("a",{attrs:{href:"https://credreg.net/ctdlasn/handbook",target:"_blank",rel:"noopener noreferrer"}},[a._v("CTDL-ASN"),t("OutboundLink")],1),a._v(".")]),a._v(" "),t("p",[t("strong",[a._v("Endpoints")])]),a._v(" "),t("div",{staticClass:"language-hs extra-class"},[t("pre",{pre:!0,attrs:{class:"language-hs"}},[t("code",[t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("GET")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/<")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("framework")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("id")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Retrieve CTDL-ASN version of framework")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("POST")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Convert CTDL-ASN framework to CaSS Framework")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{683:function(a,t,s){"use strict";s.r(t);var e=s(69),r=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"credential-engine-asn"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credential-engine-asn"}},[a._v("#")]),a._v(" Credential Engine ASN")]),a._v(" "),t("p",[a._v("The CEASN Adapter converts CaSS Frameworks to and from "),t("a",{attrs:{href:"https://credreg.net/ctdlasn/handbook",target:"_blank",rel:"noopener noreferrer"}},[a._v("CTDL-ASN"),t("OutboundLink")],1),a._v(".")]),a._v(" "),t("p",[t("strong",[a._v("Endpoints")])]),a._v(" "),t("div",{staticClass:"language-hs extra-class"},[t("pre",{pre:!0,attrs:{class:"language-hs"}},[t("code",[t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("GET")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/<")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("framework")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("id")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Retrieve CTDL-ASN version of framework")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("POST")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Convert CTDL-ASN framework to CaSS Framework")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/61.f6645721.js.gz b/docs/assets/js/61.f6645721.js.gz new file mode 100644 index 000000000..6eac88fc3 Binary files /dev/null and b/docs/assets/js/61.f6645721.js.gz differ diff --git a/docs/assets/js/62.0a0bae63.js.gz b/docs/assets/js/62.0a0bae63.js.gz deleted file mode 100644 index a466e89a3..000000000 Binary files a/docs/assets/js/62.0a0bae63.js.gz and /dev/null differ diff --git a/docs/assets/js/62.0a0bae63.js b/docs/assets/js/62.2156f6ac.js similarity index 91% rename from docs/assets/js/62.0a0bae63.js rename to docs/assets/js/62.2156f6ac.js index ea8a49c61..6173de99c 100644 --- a/docs/assets/js/62.0a0bae63.js +++ b/docs/assets/js/62.2156f6ac.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{683:function(t,e,s){"use strict";s.r(e);var i=s(69),a=Object(i.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"ims-case"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-case"}},[this._v("#")]),this._v(" IMS CASE")]),this._v(" "),t("p",[this._v("The IMS CASE Adapter is an implementation of the IMS CASE Specification that converts CaSS Frameworks to and from CASE. The specification is described "),t("a",{attrs:{href:"http://www.imsglobal.org/activity/case",target:"_blank",rel:"noopener noreferrer"}},[this._v("here"),t("OutboundLink")],1),this._v(".")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{682:function(t,e,s){"use strict";s.r(e);var i=s(69),a=Object(i.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"ims-case"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-case"}},[this._v("#")]),this._v(" IMS CASE")]),this._v(" "),t("p",[this._v("The IMS CASE Adapter is an implementation of the IMS CASE Specification that converts CaSS Frameworks to and from CASE. The specification is described "),t("a",{attrs:{href:"http://www.imsglobal.org/activity/case",target:"_blank",rel:"noopener noreferrer"}},[this._v("here"),t("OutboundLink")],1),this._v(".")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/62.2156f6ac.js.gz b/docs/assets/js/62.2156f6ac.js.gz new file mode 100644 index 000000000..21780d55a Binary files /dev/null and b/docs/assets/js/62.2156f6ac.js.gz differ diff --git a/docs/assets/js/65.b8eda6f5.js b/docs/assets/js/65.31f0ec40.js similarity index 99% rename from docs/assets/js/65.b8eda6f5.js rename to docs/assets/js/65.31f0ec40.js index cecef16ce..f6f18b5ff 100644 --- a/docs/assets/js/65.b8eda6f5.js +++ b/docs/assets/js/65.31f0ec40.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{687:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"xapi-adapter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#xapi-adapter"}},[t._v("#")]),t._v(" xAPI Adapter")]),t._v(" "),s("p",[t._v("The xAPI Adapter reads an LRS and creates competency assertions about learners. It creates an assertion when there is a scored event that has both actor mailbox and an authority mailbox that match public individuals in the CaSS system. No verbs are filtered by default, but again, the statements must be scored. Also required is an alignment from the xAPI object ID to the competency.")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreativeWork"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"educationalAlignment"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AlignmentObject"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"alignmentType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teaches"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"targetUrl"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://army.mil/task/081-831-0033"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/data/schema.org.CreativeWork/ca22e231-0dc9-4368-85c7-4e37e96c710d/1525956177976"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://www.medtrng.com/blackboard/field_medical_card.htm"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"xapi-statement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#xapi-statement"}},[t._v("#")]),t._v(" xAPI Statement")]),t._v(" "),s("p",[t._v("The xAPI adapter requires the xapi statements have the following fields in order to create a competency assertion (where "),s("code",[t._v("// OR")]),t._v(" represents that the two surrounding properties are mutually exclusive):")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"actor"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OR")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"account"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"authority"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OR")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"account"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" <"),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" or "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(">"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OR")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"score"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"scaled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[t._v("#")]),t._v(" Configuration")]),t._v(" "),s("p",[t._v("There are two ways to configure the xAPI adapter:")]),t._v(" "),s("ul",[s("li",[s("em",[t._v("Forward")]),t._v(" statements to CaSS")]),t._v(" "),s("li",[t._v("Tell CaSS to "),s("em",[t._v("poll")]),t._v(" the xAPI endpoint for statements")])]),t._v(" "),s("h3",{attrs:{id:"forwarding-based"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#forwarding-based"}},[t._v("#")]),t._v(" Forwarding-Based")]),t._v(" "),s("p",[t._v("Forward entire statements to")]),t._v(" "),s("p",[s("code",[t._v("/api/xapi/statement")]),t._v("\nor\n"),s("code",[t._v("/api/xapi/statements")])]),t._v(" "),s("p",[t._v("for example:")]),t._v(" "),s("p",[s("code",[t._v("https://dev.cassproject.org/api/xapi/statement")])]),t._v(" "),s("p",[t._v("Depending on the LRS, /statements may be appended to the endpoint you provide. Check individual LRS documentation and logs.")]),t._v(" "),s("h3",{attrs:{id:"polling-based"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#polling-based"}},[t._v("#")]),t._v(" Polling-Based")]),t._v(" "),s("p",[t._v("If you have only one endpoint to connect, you can just edit "),s("code",[t._v("/etc/adapter.xapi.json")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"enabled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiAuth"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Basic ..."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiEndpoint"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/xapi/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiHostName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("If you wish to connect to multiple endpoints, you can pass in environment variables with the necessary information:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"XAPI_CONFIG_1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiAuth"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Basic ..."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiEndpoint"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/xapi/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiHostName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"XAPI_CONFIG_2"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiAuth"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Basic ..."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiEndpoint"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint2/xapi/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiHostName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint2/"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Endpoints")])]),t._v(" "),s("div",{staticClass:"language-hs extra-class"},[s("pre",{pre:!0,attrs:{class:"language-hs"}},[s("code",[s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("GET")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token hvariable"}},[t._v("api")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token hvariable"}},[t._v("xapi")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token hvariable"}},[t._v("tick")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("-- Process any unprocessed xAPI statements. Intended to be used with a cron job")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{686:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"xapi-adapter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#xapi-adapter"}},[t._v("#")]),t._v(" xAPI Adapter")]),t._v(" "),s("p",[t._v("The xAPI Adapter reads an LRS and creates competency assertions about learners. It creates an assertion when there is a scored event that has both actor mailbox and an authority mailbox that match public individuals in the CaSS system. No verbs are filtered by default, but again, the statements must be scored. Also required is an alignment from the xAPI object ID to the competency.")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreativeWork"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"educationalAlignment"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AlignmentObject"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"alignmentType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teaches"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"targetUrl"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://army.mil/task/081-831-0033"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/data/schema.org.CreativeWork/ca22e231-0dc9-4368-85c7-4e37e96c710d/1525956177976"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://www.medtrng.com/blackboard/field_medical_card.htm"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"xapi-statement"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#xapi-statement"}},[t._v("#")]),t._v(" xAPI Statement")]),t._v(" "),s("p",[t._v("The xAPI adapter requires the xapi statements have the following fields in order to create a competency assertion (where "),s("code",[t._v("// OR")]),t._v(" represents that the two surrounding properties are mutually exclusive):")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"actor"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OR")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"account"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"authority"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OR")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"account"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" <"),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" or "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(">"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// OR")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"score"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"scaled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[t._v("#")]),t._v(" Configuration")]),t._v(" "),s("p",[t._v("There are two ways to configure the xAPI adapter:")]),t._v(" "),s("ul",[s("li",[s("em",[t._v("Forward")]),t._v(" statements to CaSS")]),t._v(" "),s("li",[t._v("Tell CaSS to "),s("em",[t._v("poll")]),t._v(" the xAPI endpoint for statements")])]),t._v(" "),s("h3",{attrs:{id:"forwarding-based"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#forwarding-based"}},[t._v("#")]),t._v(" Forwarding-Based")]),t._v(" "),s("p",[t._v("Forward entire statements to")]),t._v(" "),s("p",[s("code",[t._v("/api/xapi/statement")]),t._v("\nor\n"),s("code",[t._v("/api/xapi/statements")])]),t._v(" "),s("p",[t._v("for example:")]),t._v(" "),s("p",[s("code",[t._v("https://dev.cassproject.org/api/xapi/statement")])]),t._v(" "),s("p",[t._v("Depending on the LRS, /statements may be appended to the endpoint you provide. Check individual LRS documentation and logs.")]),t._v(" "),s("h3",{attrs:{id:"polling-based"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#polling-based"}},[t._v("#")]),t._v(" Polling-Based")]),t._v(" "),s("p",[t._v("If you have only one endpoint to connect, you can just edit "),s("code",[t._v("/etc/adapter.xapi.json")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"enabled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiAuth"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Basic ..."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiEndpoint"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/xapi/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiHostName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("If you wish to connect to multiple endpoints, you can pass in environment variables with the necessary information:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"XAPI_CONFIG_1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiAuth"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Basic ..."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiEndpoint"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/xapi/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiHostName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint/"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"XAPI_CONFIG_2"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiAuth"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Basic ..."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiEndpoint"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint2/xapi/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"xapiHostName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://xapi.endpoint2/"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Endpoints")])]),t._v(" "),s("div",{staticClass:"language-hs extra-class"},[s("pre",{pre:!0,attrs:{class:"language-hs"}},[s("code",[s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("GET")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token hvariable"}},[t._v("api")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token hvariable"}},[t._v("xapi")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),s("span",{pre:!0,attrs:{class:"token hvariable"}},[t._v("tick")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("-- Process any unprocessed xAPI statements. Intended to be used with a cron job")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/65.b8eda6f5.js.gz b/docs/assets/js/65.31f0ec40.js.gz similarity index 94% rename from docs/assets/js/65.b8eda6f5.js.gz rename to docs/assets/js/65.31f0ec40.js.gz index a94e9c464..b2dd39a17 100644 Binary files a/docs/assets/js/65.b8eda6f5.js.gz and b/docs/assets/js/65.31f0ec40.js.gz differ diff --git a/docs/assets/js/66.7a4bd6f5.js.gz b/docs/assets/js/66.7a4bd6f5.js.gz deleted file mode 100644 index 6021e242f..000000000 Binary files a/docs/assets/js/66.7a4bd6f5.js.gz and /dev/null differ diff --git a/docs/assets/js/66.7a4bd6f5.js b/docs/assets/js/66.9f78183e.js similarity index 98% rename from docs/assets/js/66.7a4bd6f5.js rename to docs/assets/js/66.9f78183e.js index f3104d14f..35e8389e8 100644 --- a/docs/assets/js/66.7a4bd6f5.js +++ b/docs/assets/js/66.9f78183e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{686:function(e,t,a){"use strict";a.r(t);var o=a(69),r=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"other-schemas"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-schemas"}},[e._v("#")]),e._v(" Other Schemas")]),e._v(" "),t("p",[e._v("This page discusses how to work with other outside schemas.")]),e._v(" "),t("p",[e._v("CaSS Libraries includes "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.schema.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for schema.org"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.credentialengine.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for the Credential Engine (CTDL)"),t("OutboundLink")],1),e._v(". These expose large numbers of objects that are not related to competencies and frameworks and are included for convenience and to encourage interoperability.")]),e._v(" "),t("p",[e._v("Additionally, CaSS schemas may be extended with additional information. These same principles apply.")]),e._v(" "),t("h2",{attrs:{id:"concerns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#concerns"}},[e._v("#")]),e._v(" Concerns")]),e._v(" "),t("p",[e._v("While working with these other objects, several additional concerns must be taken into account:")]),e._v(" "),t("ul",[t("li",[e._v("CaSS objects (usually prefixed with "),t("code",[e._v("Ec")]),e._v(" such as "),t("code",[e._v("EcAssertion")]),e._v(") have helper functions and security/privacy expectations built into them. Though they may reference personally identifiable and sensitive information these mechanisms may not be built into objects belonging to another schema. It is extremely important to safeguard the security and privacy of the data contained within these objects, as by default, all information stored in CaSS is publicly discoverable and accessible.")]),e._v(" "),t("li",[e._v("When performing operations that generate data that is accessible to the internet, it is worthwhile to scan for other uses of the objects you have chosen and determine its compatibility with other others. Guidelines can be found at "),t("a",{attrs:{href:"https://developers.google.com/search/docs/data-types/articles",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google"),t("OutboundLink")],1),e._v(", and in so-called “Profiles” such as this one from "),t("a",{attrs:{href:"https://www.ibm.com/developerworks/rational/library/basic-profile-linked-data/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBM"),t("OutboundLink")],1),e._v(". Profiles can vary widely in scope and application but have been described as patterns of behavior around the population and use of common data objects for interoperability purposes. Profiles can also be found associated with "),t("a",{attrs:{href:"http://datainteroperability.org/research-activity-xapi-data-interoperability/xapi-profiles/",target:"_blank",rel:"noopener noreferrer"}},[e._v("other efforts"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"advantages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advantages"}},[e._v("#")]),e._v(" Advantages")]),e._v(" "),t("p",[e._v("Using the patterns of application development that CaSS enables the sharing of permissioned objects, cooperative data interaction, and rapid application development.")]),e._v(" "),t("h2",{attrs:{id:"future"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#future"}},[e._v("#")]),e._v(" Future")]),e._v(" "),t("p",[e._v("We expect that at some point in the future, the CaSS methodology will be generalized into its own set of frameworks with its own name.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{687:function(e,t,a){"use strict";a.r(t);var o=a(69),r=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"other-schemas"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-schemas"}},[e._v("#")]),e._v(" Other Schemas")]),e._v(" "),t("p",[e._v("This page discusses how to work with other outside schemas.")]),e._v(" "),t("p",[e._v("CaSS Libraries includes "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.schema.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for schema.org"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.credentialengine.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for the Credential Engine (CTDL)"),t("OutboundLink")],1),e._v(". These expose large numbers of objects that are not related to competencies and frameworks and are included for convenience and to encourage interoperability.")]),e._v(" "),t("p",[e._v("Additionally, CaSS schemas may be extended with additional information. These same principles apply.")]),e._v(" "),t("h2",{attrs:{id:"concerns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#concerns"}},[e._v("#")]),e._v(" Concerns")]),e._v(" "),t("p",[e._v("While working with these other objects, several additional concerns must be taken into account:")]),e._v(" "),t("ul",[t("li",[e._v("CaSS objects (usually prefixed with "),t("code",[e._v("Ec")]),e._v(" such as "),t("code",[e._v("EcAssertion")]),e._v(") have helper functions and security/privacy expectations built into them. Though they may reference personally identifiable and sensitive information these mechanisms may not be built into objects belonging to another schema. It is extremely important to safeguard the security and privacy of the data contained within these objects, as by default, all information stored in CaSS is publicly discoverable and accessible.")]),e._v(" "),t("li",[e._v("When performing operations that generate data that is accessible to the internet, it is worthwhile to scan for other uses of the objects you have chosen and determine its compatibility with other others. Guidelines can be found at "),t("a",{attrs:{href:"https://developers.google.com/search/docs/data-types/articles",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google"),t("OutboundLink")],1),e._v(", and in so-called “Profiles” such as this one from "),t("a",{attrs:{href:"https://www.ibm.com/developerworks/rational/library/basic-profile-linked-data/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBM"),t("OutboundLink")],1),e._v(". Profiles can vary widely in scope and application but have been described as patterns of behavior around the population and use of common data objects for interoperability purposes. Profiles can also be found associated with "),t("a",{attrs:{href:"http://datainteroperability.org/research-activity-xapi-data-interoperability/xapi-profiles/",target:"_blank",rel:"noopener noreferrer"}},[e._v("other efforts"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"advantages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advantages"}},[e._v("#")]),e._v(" Advantages")]),e._v(" "),t("p",[e._v("Using the patterns of application development that CaSS enables the sharing of permissioned objects, cooperative data interaction, and rapid application development.")]),e._v(" "),t("h2",{attrs:{id:"future"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#future"}},[e._v("#")]),e._v(" Future")]),e._v(" "),t("p",[e._v("We expect that at some point in the future, the CaSS methodology will be generalized into its own set of frameworks with its own name.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/66.9f78183e.js.gz b/docs/assets/js/66.9f78183e.js.gz new file mode 100644 index 000000000..f90cd152e Binary files /dev/null and b/docs/assets/js/66.9f78183e.js.gz differ diff --git a/docs/assets/js/72.e3bde7b4.js b/docs/assets/js/72.328ecaf8.js similarity index 99% rename from docs/assets/js/72.e3bde7b4.js rename to docs/assets/js/72.328ecaf8.js index 1749a4114..451ef109f 100644 --- a/docs/assets/js/72.e3bde7b4.js +++ b/docs/assets/js/72.328ecaf8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{693:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"level"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#level"}},[t._v("#")]),t._v(" Level")]),t._v(" "),a("blockquote",[a("p",[t._v("A "),a("strong",[t._v("Level")]),t._v(" is defined as a “a position on a real or imaginary scale of amount, quantity, extent, or quality.” In education, levels also have multiple meanings:")]),t._v(" "),a("ul",[a("li",[t._v("A level can represent a group of assumed knowledge, understanding, and ability to apply. For the subject area of carpentry, a beginner carpenter knows some set of skills, an intermediate carpenter knows more, and a master carpenter knows more. Because this level includes the acquisition of, and relationships to additional skills, this is typically represented by a separate competency.")]),t._v(" "),a("li",[t._v("A level can also represent a degree of performance. As the breadth of knowledge for an carpenter grows, so does their speed, quality, and understanding in a skill, knowledge, or ability. This can be thought of as a performance level, and is the type of level we typically identify in CASS.")])])]),t._v(" "),a("p",[t._v("Levels in CASS are used to make competencies measurable. Where a competency in walking may imply the ability to move, the performance levels that a shrimp and gazelle can demonstrate distinguish their capabilities greatly. Likewise, Bloom’s levels differentiate performance in skills and capability to apply knowledge.")]),t._v(" "),a("p",[t._v("Levels may be strongly coupled to the competencies that they measure, as in the speed an individual can run, but may also be generally applied, as in Bloom’s levels.")]),t._v(" "),a("h2",{attrs:{id:"creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10 mph"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The individual can run 10 miles per hour for several seconds."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Runner"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-level-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-level-to-a-framework"}},[t._v("#")]),t._v(" Adding a Level to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10 mph"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The individual can run 10 miles per hour for several seconds."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Runner"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the level such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-level-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-level-from-a-framework"}},[t._v("#")]),t._v(" Removing a Level from a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the level!")]),t._v("\n")])])]),a("h2",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),a("p",[t._v("EcLevel has a helper method that validates expected fields before saving.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("EcLevel has a helper method that deletes the level. This does NOT DELETE any objects referenced by the level.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),a("p",[t._v("EcLevel has a static helper method for retrieving a level, automatically decrypting it, automatically encrypting it on save, and casting it to the EcLevel object. The blocking version locks the thread while this occurs.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("level")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"search"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),a("p",[t._v("EcLevel has a static helper method for searching for Frameworks.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for levels")]),t._v("\nEcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcLevels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 levels related to a competency")]),t._v("\nEcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token template-string"}},[a("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('competency:"')]),a("span",{pre:!0,attrs:{class:"token interpolation"}},[a("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("${")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("}")])]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"')]),a("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcLevels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{694:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"level"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#level"}},[t._v("#")]),t._v(" Level")]),t._v(" "),a("blockquote",[a("p",[t._v("A "),a("strong",[t._v("Level")]),t._v(" is defined as a “a position on a real or imaginary scale of amount, quantity, extent, or quality.” In education, levels also have multiple meanings:")]),t._v(" "),a("ul",[a("li",[t._v("A level can represent a group of assumed knowledge, understanding, and ability to apply. For the subject area of carpentry, a beginner carpenter knows some set of skills, an intermediate carpenter knows more, and a master carpenter knows more. Because this level includes the acquisition of, and relationships to additional skills, this is typically represented by a separate competency.")]),t._v(" "),a("li",[t._v("A level can also represent a degree of performance. As the breadth of knowledge for an carpenter grows, so does their speed, quality, and understanding in a skill, knowledge, or ability. This can be thought of as a performance level, and is the type of level we typically identify in CASS.")])])]),t._v(" "),a("p",[t._v("Levels in CASS are used to make competencies measurable. Where a competency in walking may imply the ability to move, the performance levels that a shrimp and gazelle can demonstrate distinguish their capabilities greatly. Likewise, Bloom’s levels differentiate performance in skills and capability to apply knowledge.")]),t._v(" "),a("p",[t._v("Levels may be strongly coupled to the competencies that they measure, as in the speed an individual can run, but may also be generally applied, as in Bloom’s levels.")]),t._v(" "),a("h2",{attrs:{id:"creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10 mph"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The individual can run 10 miles per hour for several seconds."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Runner"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-level-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-level-to-a-framework"}},[t._v("#")]),t._v(" Adding a Level to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10 mph"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The individual can run 10 miles per hour for several seconds."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Runner"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the level such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-level-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-level-from-a-framework"}},[t._v("#")]),t._v(" Removing a Level from a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the level!")]),t._v("\n")])])]),a("h2",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),a("p",[t._v("EcLevel has a helper method that validates expected fields before saving.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("EcLevel has a helper method that deletes the level. This does NOT DELETE any objects referenced by the level.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),a("p",[t._v("EcLevel has a static helper method for retrieving a level, automatically decrypting it, automatically encrypting it on save, and casting it to the EcLevel object. The blocking version locks the thread while this occurs.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("level")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"search"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),a("p",[t._v("EcLevel has a static helper method for searching for Frameworks.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for levels")]),t._v("\nEcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcLevels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 levels related to a competency")]),t._v("\nEcLevel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token template-string"}},[a("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('competency:"')]),a("span",{pre:!0,attrs:{class:"token interpolation"}},[a("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("${")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("}")])]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"')]),a("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcLevels")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/72.e3bde7b4.js.gz b/docs/assets/js/72.328ecaf8.js.gz similarity index 96% rename from docs/assets/js/72.e3bde7b4.js.gz rename to docs/assets/js/72.328ecaf8.js.gz index 6b461cb44..e9417f56d 100644 Binary files a/docs/assets/js/72.e3bde7b4.js.gz and b/docs/assets/js/72.328ecaf8.js.gz differ diff --git a/docs/assets/js/76.50236a16.js.gz b/docs/assets/js/76.50236a16.js.gz deleted file mode 100644 index 76bbee470..000000000 Binary files a/docs/assets/js/76.50236a16.js.gz and /dev/null differ diff --git a/docs/assets/js/76.50236a16.js b/docs/assets/js/76.e3201684.js similarity index 99% rename from docs/assets/js/76.50236a16.js rename to docs/assets/js/76.e3201684.js index d0cc037aa..9f406a026 100644 --- a/docs/assets/js/76.50236a16.js +++ b/docs/assets/js/76.e3201684.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{698:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"delete"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[e._v("#")]),e._v(" Delete")]),e._v(" "),t("p",[e._v("To delete an object from a CaSS Repository:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s)://///")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" Type of the object in semi-reversed notation\n"),t("ul",[t("li",[e._v("(ex: "),t("em",[e._v("schema.eduworks.com.cass.0.1.framework")]),e._v(")")])])]),e._v(" "),t("li",[t("strong",[e._v("Id:")]),e._v(" GUID for the object\n"),t("ul",[t("li",[e._v("This identifier may differ from the value stored in the object’s @id field. This is used when registering data stored on another server.")]),e._v(" "),t("li",[e._v("For registering data retrieved from another server, a typical identifier for storage in CaSS is the MD5 hash of the @id field.")])])]),e._v(" "),t("li",[t("strong",[e._v("Version:")]),e._v(" Numerical indicator of the version, typically a last modified time in unix format.")])])]),e._v(" "),t("li",[t("p",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the deletion of the object. This must be stored in the "),t("code",[e._v("signatureSheet")]),e._v(" header field of the request. See the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/create/"}},[e._v("Create")]),e._v(" section for instructions to construct a valid signature.")],1)])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("signatureSheet (as header)"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"hE7H8vPa...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"expiry"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1463524950899")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Submit an HTTP(S) DELETE with the above URL.")])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("DELETE")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("signatureSheet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('[{"@owner":"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi37h/zxQLcndtVHxknaNTRkHuZF+xCE3oQWfsSEjsBNag6J4bA3t6u6LT1Bu8nvNXXN5P7FN8c+/n7P1166MEQLHfgJ6v2Nkg/90ym/PTUhsF4e/D23qRiPrknjKlOSgASTYBmF2f75f6NEUDRmU4cxLtYCbq9Nts35ZYw1uszr/jRcyGWHoBW8F08fk6Oaj/IGURi3vv2G24pYmanp+MOVkjPDvyOJJGDFTWgIFwqCgNPw1y2foRdyoLeGlJlv0svr11vvRY28tg+TKI5GeQZhC/rFiX/nlCFr3rBL6Go7zm1X86GwSxfrqwRszKhSI7vvcuUMn3reoJ1f2N1fE7QIDAQAB-----END PUBLIC KEY-----","@context":"http://schema.eduworks.com/ebac/0.1/","@signature":"bkxuN4Tsu7pyYt8LduFehmgyAcJkHMwvpayKLKnbqBk1KU4naPgqEy1v+NfdVsMVTn1wz5Obn7XcegL8Mds8aNijz/fVGjZrGHu5Vp+VTJoXvAAA6SdeYI2RygegVBlwBemCT+NFqMM6kws6zHndrPvkOa5sIdwUtmoriWaO3p4pzNWRxl4x2ziO95Ko4u3MTQ/d87xMCJLE5LuXZiadRknhPgJSGmuK7WBzaxmOS+4YM9Ju9HF6ywIvMIYKQk8pzRw+Y/23KuPxAxhyk+8CCA1XvVlUkUJaIu8Al24nQVO77MgeHzB1S9p0JaxodhqJgYD/DNri3tJ3uNQntpHhMQ==","@type":"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature","expiry":1463528926960,"server":"https://demo.cassproject.org/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0/1463528860831"}]')])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("X-Requested-With")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("XMLHttpRequest")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token response-status"}},[t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token status-code number"}},[e._v("200")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[e._v("OK")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Date")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Tue, 17 May 2016 23:48:00 GMT")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Apache-Coyote/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Methods")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("GET, PUT, POST, DELETE, OPTIONS")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Headers")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("cache-control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("private, no-cache, no-store")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("application/json")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Set-Cookie")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("JSESSIONID=F3292AE7080994683219BD9256C3E787; Path=/cass-0.0.1/; HttpOnly")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Keep-Alive")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("timeout=5, max=100")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Keep-Alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Transfer-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("chunked")])]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{700:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"delete"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[e._v("#")]),e._v(" Delete")]),e._v(" "),t("p",[e._v("To delete an object from a CaSS Repository:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s)://///")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" Type of the object in semi-reversed notation\n"),t("ul",[t("li",[e._v("(ex: "),t("em",[e._v("schema.eduworks.com.cass.0.1.framework")]),e._v(")")])])]),e._v(" "),t("li",[t("strong",[e._v("Id:")]),e._v(" GUID for the object\n"),t("ul",[t("li",[e._v("This identifier may differ from the value stored in the object’s @id field. This is used when registering data stored on another server.")]),e._v(" "),t("li",[e._v("For registering data retrieved from another server, a typical identifier for storage in CaSS is the MD5 hash of the @id field.")])])]),e._v(" "),t("li",[t("strong",[e._v("Version:")]),e._v(" Numerical indicator of the version, typically a last modified time in unix format.")])])]),e._v(" "),t("li",[t("p",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the deletion of the object. This must be stored in the "),t("code",[e._v("signatureSheet")]),e._v(" header field of the request. See the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/create/"}},[e._v("Create")]),e._v(" section for instructions to construct a valid signature.")],1)])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("signatureSheet (as header)"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"hE7H8vPa...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"expiry"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1463524950899")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Submit an HTTP(S) DELETE with the above URL.")])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("DELETE")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("signatureSheet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('[{"@owner":"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi37h/zxQLcndtVHxknaNTRkHuZF+xCE3oQWfsSEjsBNag6J4bA3t6u6LT1Bu8nvNXXN5P7FN8c+/n7P1166MEQLHfgJ6v2Nkg/90ym/PTUhsF4e/D23qRiPrknjKlOSgASTYBmF2f75f6NEUDRmU4cxLtYCbq9Nts35ZYw1uszr/jRcyGWHoBW8F08fk6Oaj/IGURi3vv2G24pYmanp+MOVkjPDvyOJJGDFTWgIFwqCgNPw1y2foRdyoLeGlJlv0svr11vvRY28tg+TKI5GeQZhC/rFiX/nlCFr3rBL6Go7zm1X86GwSxfrqwRszKhSI7vvcuUMn3reoJ1f2N1fE7QIDAQAB-----END PUBLIC KEY-----","@context":"http://schema.eduworks.com/ebac/0.1/","@signature":"bkxuN4Tsu7pyYt8LduFehmgyAcJkHMwvpayKLKnbqBk1KU4naPgqEy1v+NfdVsMVTn1wz5Obn7XcegL8Mds8aNijz/fVGjZrGHu5Vp+VTJoXvAAA6SdeYI2RygegVBlwBemCT+NFqMM6kws6zHndrPvkOa5sIdwUtmoriWaO3p4pzNWRxl4x2ziO95Ko4u3MTQ/d87xMCJLE5LuXZiadRknhPgJSGmuK7WBzaxmOS+4YM9Ju9HF6ywIvMIYKQk8pzRw+Y/23KuPxAxhyk+8CCA1XvVlUkUJaIu8Al24nQVO77MgeHzB1S9p0JaxodhqJgYD/DNri3tJ3uNQntpHhMQ==","@type":"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature","expiry":1463528926960,"server":"https://demo.cassproject.org/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0/1463528860831"}]')])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("X-Requested-With")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("XMLHttpRequest")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token response-status"}},[t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token status-code number"}},[e._v("200")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[e._v("OK")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Date")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Tue, 17 May 2016 23:48:00 GMT")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Apache-Coyote/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Methods")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("GET, PUT, POST, DELETE, OPTIONS")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Headers")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("cache-control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("private, no-cache, no-store")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("application/json")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Set-Cookie")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("JSESSIONID=F3292AE7080994683219BD9256C3E787; Path=/cass-0.0.1/; HttpOnly")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Keep-Alive")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("timeout=5, max=100")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Keep-Alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Transfer-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("chunked")])]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/76.e3201684.js.gz b/docs/assets/js/76.e3201684.js.gz new file mode 100644 index 000000000..71ffc3ecb Binary files /dev/null and b/docs/assets/js/76.e3201684.js.gz differ diff --git a/docs/assets/js/77.27258075.js b/docs/assets/js/77.e4e308b7.js similarity index 99% rename from docs/assets/js/77.27258075.js rename to docs/assets/js/77.e4e308b7.js index 5a15d1362..92635bcde 100644 --- a/docs/assets/js/77.27258075.js +++ b/docs/assets/js/77.e4e308b7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{699:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"get"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[e._v("#")]),e._v(" Get")]),e._v(" "),t("p",[t("em",[e._v("aka '"),t("strong",[e._v("READ")]),e._v("'")])]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s)://///")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Type "),t("em",[e._v("(Optional)")]),e._v(":")]),e._v(" Type of the object in semi-reversed notation\n"),t("ul",[t("li",[e._v("(ex: schema.eduworks.com.cass.0.1.framework)")]),e._v(" "),t("li",[e._v("Including this field, when possible, increases retrieval speed.")])])]),e._v(" "),t("li",[t("strong",[e._v("Id:")]),e._v(" Identifier of the object.\n"),t("ul",[t("li",[e._v("This identifier may differ from the value stored in the object’s @id field. This is used when registering data retrieved from another server.")])])]),e._v(" "),t("li",[t("strong",[e._v("Version "),t("em",[e._v("(Optional)")]),e._v(":")]),e._v(" Numerical indicator of the version, typically a last modified time in unix format. If omitted, the latest version.")])])]),e._v(" "),t("li",[t("p",[e._v("Should the object be defined in the schema as a protected type or have encrypted fields:")]),e._v(" "),t("ul",[t("li",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the retrieval of the object. This requires the method type of the HTTP request to be a POST. See the "),t("a",{attrs:{href:"TODOTODOTODO"}},[e._v("SignatureSheet Section")]),e._v(" for instructions to construct a valid signature.\n"),t("ul",[t("li",[e._v("Alternatively, you may keep the method type as GET and include the signature sheet in the signatureSheet header as JSON.")])])])])])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("signatureSheet (as multi part mime attachment or header)"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI ... QAB-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"hE7H8vPa...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"expiry"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1463524950899")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Submit an HTTP(S) GET with the above URL.")])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("GET")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/data/schema.eduworks.com.cass.0.1.competency/758bebae-c12e-4be2-89db-1fad7854546e/1456271061920")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Cache-Control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("max-age=0")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Upgrade-Insecure-Requests")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token response-status"}},[t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token status-code number"}},[e._v("200")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[e._v("OK")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Date")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Tue, 17 May 2016 22:48:54 GMT")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Apache-Coyote/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Methods")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("GET, PUT, POST, DELETE, OPTIONS")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Headers")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("cache-control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("private, no-cache, no-store")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("application/json")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Keep-Alive")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("timeout=5, max=100")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Keep-Alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Transfer-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("chunked")])]),e._v("\n")])])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the GET includes a signature as a multi-part POST, the method type must be POST.")]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("POST")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/data/schema.eduworks.com.cass.0.1.competency/93c19e2a-2306-45ac-86a6-67e73b8042a8")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Length")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("1233")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("multipart/form-data; boundary=----WebKitFormBoundaryzFvq2ZifKkR7nmQG")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n------WebKitFormBoundaryzFvq2ZifKkR7nmQG\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Disposition")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('form-data; name="signatureSheet"')])]),e._v('\n[\n {\n "@owner" : "-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----",\n "@context" : "http://schema.eduworks.com/ebac/0.1/",\n "@signature" : "eQOJt9...==",\n "@type" : "http://schema.eduworks.com/ebac/0.1/timeLimitedSignature",\n "expiry" : 1463525567195,\n "server" : "http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.competency/93c19e2a-2306-45ac-86a6-67e73b8042a8"\n }\n]\n------WebKitFormBoundaryzFvq2ZifKkR7nmQG--\n')])])])]),e._v(" "),t("ol",{attrs:{start:"4"}},[t("li",[t("p",[e._v("Receive a single JSON-LD object as a reply.")])]),e._v(" "),t("li",[t("p",[e._v("(Optional) Validate the object by verifying the signatures.")]),e._v(" "),t("ul",[t("li",[e._v("Select a signature, iterate over all owners.\n"),t("ul",[t("li",[e._v("Decode the owner public key.\n"),t("ul",[t("li",[e._v("The format is X.509 SubjectPublicKeyInfo/OpenSSL PEM public key.")])])]),e._v(" "),t("li",[e._v("Decode the signature.\n"),t("ul",[t("li",[e._v("The format is Base64.")])])]),e._v(" "),t("li",[e._v("Create a copy of the object.")]),e._v(" "),t("li",[e._v("Remove "),t("code",[e._v("@signature")]),e._v(", "),t("code",[e._v("@owner")]),e._v(", "),t("code",[e._v("@reader")]),e._v(", and "),t("code",[e._v("@id")]),e._v(" keys (and values) from the object.")]),e._v(" "),t("li",[e._v("Serialize the object in JSON format (UTF-8) with the keys sorted in UTF-8 string sort order and with no whitespace.")]),e._v(" "),t("li",[e._v("Verify the serialized object using a SHA1 digest of the serialized object, and RSA-2048 bit encryption.\n"),t("ul",[t("li",[e._v("Note the signature is Base64 encoded. Most RSA libraries require raw byte streams.")]),e._v(" "),t("li",[e._v("Note that if insufficient permissions were provided to retrieve the entire object, the signature will fail.")])])])])])])])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.competency/93c19e2a-2306-45ac-86a6-67e73b8042a8/1456271062644"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----\\r\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvheHGtT0Aw4d2xlHfWw5\\r\\nJq6VixsUoTMoF6P6v/wmNhO3TYpGfYYV6pP2t+wHRJXss8CANp0yjnd9GI0gxHGs\\r\\nBxEDj5ykRYu+iC1i4SKNRVPy3BR8AHaOkAnXZRhEKtK3yloHh/aDs/6xNgMyBiPB\\r\\nZ+msLuI/7B/ecIkA0qtITWZvx0V/qiApzTC+d60mYedI37rhfmqFNkJwz2aAkpbd\\r\\nsxsUvHB1bCUS3S1OC6DMCEWWCBY5V8UUbE/V8a5Bhwv6GJiA+u+LxvUCY6rsaEJs\\r\\nOFLuxfJWeAYlcq2DBkS3CUAzqJ/aJzJjG3l8+GfdUOfKVJAjKJXAUkrCAvJsJ4Bt\\r\\npwIDAQAB\\r\\n-----END PUBLIC KEY-----\\r\\n"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"SQFA2Ej14wK78/VS7buKtGwqeNkycYaQF/jJxXbFQcPBH9TjrimwHAON5P83sRyrMe3KnDI/EHUyzh2dnhy+clZzehMhJL+DHtA1lYfdBEC4wIYleIrRVsUslTtfmYz27ZvUX23jyzA2wLH55HxNxUqCAlSZVaLsm3f9i0JD+MVJohJQoJJqNnSSY9lS1JOpH07q4VdQWvU31t/AFTvLWY7Q6tCzKtEJYcH25fryEDY8cJ4uyGRgdNE8/a+2w31uYS9FKsCWzUY47neue807AlZk4JT0VppzxcI09PNKsHLOLaAVXexi2Vl8uWRztBBrES0CWw3br9cm7fQcxy9bWw=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1/competency"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"description"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"The ability to combine pieces of information to form general rules or conclusions (includes finding a relationship among seemingly unrelated events)."')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Inductive Reasoning"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{698:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"get"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[e._v("#")]),e._v(" Get")]),e._v(" "),t("p",[t("em",[e._v("aka '"),t("strong",[e._v("READ")]),e._v("'")])]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s)://///")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Type "),t("em",[e._v("(Optional)")]),e._v(":")]),e._v(" Type of the object in semi-reversed notation\n"),t("ul",[t("li",[e._v("(ex: schema.eduworks.com.cass.0.1.framework)")]),e._v(" "),t("li",[e._v("Including this field, when possible, increases retrieval speed.")])])]),e._v(" "),t("li",[t("strong",[e._v("Id:")]),e._v(" Identifier of the object.\n"),t("ul",[t("li",[e._v("This identifier may differ from the value stored in the object’s @id field. This is used when registering data retrieved from another server.")])])]),e._v(" "),t("li",[t("strong",[e._v("Version "),t("em",[e._v("(Optional)")]),e._v(":")]),e._v(" Numerical indicator of the version, typically a last modified time in unix format. If omitted, the latest version.")])])]),e._v(" "),t("li",[t("p",[e._v("Should the object be defined in the schema as a protected type or have encrypted fields:")]),e._v(" "),t("ul",[t("li",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the retrieval of the object. This requires the method type of the HTTP request to be a POST. See the "),t("a",{attrs:{href:"TODOTODOTODO"}},[e._v("SignatureSheet Section")]),e._v(" for instructions to construct a valid signature.\n"),t("ul",[t("li",[e._v("Alternatively, you may keep the method type as GET and include the signature sheet in the signatureSheet header as JSON.")])])])])])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("signatureSheet (as multi part mime attachment or header)"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI ... QAB-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"hE7H8vPa...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"expiry"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1463524950899")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Submit an HTTP(S) GET with the above URL.")])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("GET")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/data/schema.eduworks.com.cass.0.1.competency/758bebae-c12e-4be2-89db-1fad7854546e/1456271061920")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Cache-Control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("max-age=0")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Upgrade-Insecure-Requests")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token response-status"}},[t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token status-code number"}},[e._v("200")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[e._v("OK")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Date")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Tue, 17 May 2016 22:48:54 GMT")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Apache-Coyote/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Methods")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("GET, PUT, POST, DELETE, OPTIONS")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Headers")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("cache-control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("private, no-cache, no-store")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("application/json")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Keep-Alive")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("timeout=5, max=100")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Keep-Alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Transfer-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("chunked")])]),e._v("\n")])])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the GET includes a signature as a multi-part POST, the method type must be POST.")]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("POST")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/data/schema.eduworks.com.cass.0.1.competency/93c19e2a-2306-45ac-86a6-67e73b8042a8")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Length")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("1233")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("multipart/form-data; boundary=----WebKitFormBoundaryzFvq2ZifKkR7nmQG")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n------WebKitFormBoundaryzFvq2ZifKkR7nmQG\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Disposition")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('form-data; name="signatureSheet"')])]),e._v('\n[\n {\n "@owner" : "-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----",\n "@context" : "http://schema.eduworks.com/ebac/0.1/",\n "@signature" : "eQOJt9...==",\n "@type" : "http://schema.eduworks.com/ebac/0.1/timeLimitedSignature",\n "expiry" : 1463525567195,\n "server" : "http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.competency/93c19e2a-2306-45ac-86a6-67e73b8042a8"\n }\n]\n------WebKitFormBoundaryzFvq2ZifKkR7nmQG--\n')])])])]),e._v(" "),t("ol",{attrs:{start:"4"}},[t("li",[t("p",[e._v("Receive a single JSON-LD object as a reply.")])]),e._v(" "),t("li",[t("p",[e._v("(Optional) Validate the object by verifying the signatures.")]),e._v(" "),t("ul",[t("li",[e._v("Select a signature, iterate over all owners.\n"),t("ul",[t("li",[e._v("Decode the owner public key.\n"),t("ul",[t("li",[e._v("The format is X.509 SubjectPublicKeyInfo/OpenSSL PEM public key.")])])]),e._v(" "),t("li",[e._v("Decode the signature.\n"),t("ul",[t("li",[e._v("The format is Base64.")])])]),e._v(" "),t("li",[e._v("Create a copy of the object.")]),e._v(" "),t("li",[e._v("Remove "),t("code",[e._v("@signature")]),e._v(", "),t("code",[e._v("@owner")]),e._v(", "),t("code",[e._v("@reader")]),e._v(", and "),t("code",[e._v("@id")]),e._v(" keys (and values) from the object.")]),e._v(" "),t("li",[e._v("Serialize the object in JSON format (UTF-8) with the keys sorted in UTF-8 string sort order and with no whitespace.")]),e._v(" "),t("li",[e._v("Verify the serialized object using a SHA1 digest of the serialized object, and RSA-2048 bit encryption.\n"),t("ul",[t("li",[e._v("Note the signature is Base64 encoded. Most RSA libraries require raw byte streams.")]),e._v(" "),t("li",[e._v("Note that if insufficient permissions were provided to retrieve the entire object, the signature will fail.")])])])])])])])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.competency/93c19e2a-2306-45ac-86a6-67e73b8042a8/1456271062644"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----\\r\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvheHGtT0Aw4d2xlHfWw5\\r\\nJq6VixsUoTMoF6P6v/wmNhO3TYpGfYYV6pP2t+wHRJXss8CANp0yjnd9GI0gxHGs\\r\\nBxEDj5ykRYu+iC1i4SKNRVPy3BR8AHaOkAnXZRhEKtK3yloHh/aDs/6xNgMyBiPB\\r\\nZ+msLuI/7B/ecIkA0qtITWZvx0V/qiApzTC+d60mYedI37rhfmqFNkJwz2aAkpbd\\r\\nsxsUvHB1bCUS3S1OC6DMCEWWCBY5V8UUbE/V8a5Bhwv6GJiA+u+LxvUCY6rsaEJs\\r\\nOFLuxfJWeAYlcq2DBkS3CUAzqJ/aJzJjG3l8+GfdUOfKVJAjKJXAUkrCAvJsJ4Bt\\r\\npwIDAQAB\\r\\n-----END PUBLIC KEY-----\\r\\n"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"SQFA2Ej14wK78/VS7buKtGwqeNkycYaQF/jJxXbFQcPBH9TjrimwHAON5P83sRyrMe3KnDI/EHUyzh2dnhy+clZzehMhJL+DHtA1lYfdBEC4wIYleIrRVsUslTtfmYz27ZvUX23jyzA2wLH55HxNxUqCAlSZVaLsm3f9i0JD+MVJohJQoJJqNnSSY9lS1JOpH07q4VdQWvU31t/AFTvLWY7Q6tCzKtEJYcH25fryEDY8cJ4uyGRgdNE8/a+2w31uYS9FKsCWzUY47neue807AlZk4JT0VppzxcI09PNKsHLOLaAVXexi2Vl8uWRztBBrES0CWw3br9cm7fQcxy9bWw=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1/competency"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"description"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"The ability to combine pieces of information to form general rules or conclusions (includes finding a relationship among seemingly unrelated events)."')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Inductive Reasoning"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/77.27258075.js.gz b/docs/assets/js/77.e4e308b7.js.gz similarity index 96% rename from docs/assets/js/77.27258075.js.gz rename to docs/assets/js/77.e4e308b7.js.gz index 72d2e3b2f..1d8265380 100644 Binary files a/docs/assets/js/77.27258075.js.gz and b/docs/assets/js/77.e4e308b7.js.gz differ diff --git a/docs/assets/js/78.11067f4e.js.gz b/docs/assets/js/78.11067f4e.js.gz deleted file mode 100644 index 9ab3edb0f..000000000 Binary files a/docs/assets/js/78.11067f4e.js.gz and /dev/null differ diff --git a/docs/assets/js/78.11067f4e.js b/docs/assets/js/78.989c1285.js similarity index 99% rename from docs/assets/js/78.11067f4e.js rename to docs/assets/js/78.989c1285.js index 3dfef66b5..25191f9a3 100644 --- a/docs/assets/js/78.11067f4e.js +++ b/docs/assets/js/78.989c1285.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{700:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"search"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[e._v("#")]),e._v(" Search")]),e._v(" "),t("p",[e._v("To search for one or more objects in a CaSS Repository:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a search query according to the "),t("a",{attrs:{href:"https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Simple Query"),t("OutboundLink")],1),e._v(" format of ElasticSearch. "),t("code",[e._v('(@type:"http://schema.eduworks.com/cass/0.1/framework") AND ("O*NET")')])])]),e._v(" "),t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s):///sky/repo/search?q=")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("q:")]),e._v(" Search query (URL encoded).")])])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("https://sandbox.service.cassproject.org/sky/repo/search?q=(@type:%22http://schema.eduworks.com/cass/0.1/framework%22)\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[t("p",[e._v("Should the desired objects be defined in the schema as a protected type or have encrypted fields:")]),e._v(" "),t("ul",[t("li",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the retrieval of the object. This may be done in one of two ways:\n"),t("ul",[t("li",[e._v("Include the signature sheet as a Multi Part Mime attachment of the HTTP request, this requires the request be a POST.")]),e._v(" "),t("li",[e._v("Alternatively, you may include the signature sheet in a header and use the "),t("strong",[e._v("q")]),e._v(" URL parameter.")]),e._v(" "),t("li",[e._v("See the Put section for instructions to construct a valid signatureSheet signature.")])])])])]),e._v(" "),t("li",[t("p",[e._v("Submit a HTTP(S) GET with the above URL.")])])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("GET")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/sky/repo/search?q=(@type:%22http://schema.eduworks.com/cass/0.1/framework%22)")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Cache-Control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("max-age=0")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Upgrade-Insecure-Requests")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n")])])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Should the GET include a signatureSheet, the method type must be POST.")]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("POST")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/sky/repo/search")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Length")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("293")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("multipart/form-data; boundary=----WebKitFormBoundaryYUvs9MBlv0jPr3Lp")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n------WebKitFormBoundaryYUvs9MBlv0jPr3Lp\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Disposition")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('form-data; name="data"')])]),e._v('\n\n(@type:"http://schema.eduworks.com/cass/0.1/framework")\n------WebKitFormBoundaryYUvs9MBlv0jPr3Lp\n'),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Disposition")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('form-data; name="signatureSheet"')])]),e._v("\n\n[]\n------WebKitFormBoundaryYUvs9MBlv0jPr3Lp--\n")])])])]),e._v(" "),t("ol",{attrs:{start:"5"}},[t("li",[e._v("Receive a JSON Array with zero or more JSON-LD objects representing search results, up to 50.")])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("To retrieve additional objects, use the URL Parameter "),t("strong",[e._v("size")]),e._v(" to increase the size of the search results or "),t("strong",[e._v("start")]),e._v(" to perform paging.")])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/007c67a2-c3a1-4b38-b222-a47e3c6cef39/1461770282857"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI...-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Nj4vGM...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1/framework"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"description"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Test framework for SoarTech"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"SoarTech Test"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{699:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"search"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[e._v("#")]),e._v(" Search")]),e._v(" "),t("p",[e._v("To search for one or more objects in a CaSS Repository:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a search query according to the "),t("a",{attrs:{href:"https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Simple Query"),t("OutboundLink")],1),e._v(" format of ElasticSearch. "),t("code",[e._v('(@type:"http://schema.eduworks.com/cass/0.1/framework") AND ("O*NET")')])])]),e._v(" "),t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s):///sky/repo/search?q=")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("q:")]),e._v(" Search query (URL encoded).")])])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("https://sandbox.service.cassproject.org/sky/repo/search?q=(@type:%22http://schema.eduworks.com/cass/0.1/framework%22)\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[t("p",[e._v("Should the desired objects be defined in the schema as a protected type or have encrypted fields:")]),e._v(" "),t("ul",[t("li",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the retrieval of the object. This may be done in one of two ways:\n"),t("ul",[t("li",[e._v("Include the signature sheet as a Multi Part Mime attachment of the HTTP request, this requires the request be a POST.")]),e._v(" "),t("li",[e._v("Alternatively, you may include the signature sheet in a header and use the "),t("strong",[e._v("q")]),e._v(" URL parameter.")]),e._v(" "),t("li",[e._v("See the Put section for instructions to construct a valid signatureSheet signature.")])])])])]),e._v(" "),t("li",[t("p",[e._v("Submit a HTTP(S) GET with the above URL.")])])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("GET")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/sky/repo/search?q=(@type:%22http://schema.eduworks.com/cass/0.1/framework%22)")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Cache-Control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("max-age=0")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Upgrade-Insecure-Requests")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n")])])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Should the GET include a signatureSheet, the method type must be POST.")]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("POST")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/sky/repo/search")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("sandbox.service.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Length")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("293")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("multipart/form-data; boundary=----WebKitFormBoundaryYUvs9MBlv0jPr3Lp")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://sandbox.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n------WebKitFormBoundaryYUvs9MBlv0jPr3Lp\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Disposition")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('form-data; name="data"')])]),e._v('\n\n(@type:"http://schema.eduworks.com/cass/0.1/framework")\n------WebKitFormBoundaryYUvs9MBlv0jPr3Lp\n'),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Disposition")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('form-data; name="signatureSheet"')])]),e._v("\n\n[]\n------WebKitFormBoundaryYUvs9MBlv0jPr3Lp--\n")])])])]),e._v(" "),t("ol",{attrs:{start:"5"}},[t("li",[e._v("Receive a JSON Array with zero or more JSON-LD objects representing search results, up to 50.")])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("To retrieve additional objects, use the URL Parameter "),t("strong",[e._v("size")]),e._v(" to increase the size of the search results or "),t("strong",[e._v("start")]),e._v(" to perform paging.")])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/007c67a2-c3a1-4b38-b222-a47e3c6cef39/1461770282857"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI...-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Nj4vGM...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/cass/0.1/framework"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"description"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Test framework for SoarTech"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"SoarTech Test"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/78.989c1285.js.gz b/docs/assets/js/78.989c1285.js.gz new file mode 100644 index 000000000..b387b6ab1 Binary files /dev/null and b/docs/assets/js/78.989c1285.js.gz differ diff --git a/docs/assets/js/79.ed344833.js b/docs/assets/js/79.b36e0377.js similarity index 85% rename from docs/assets/js/79.ed344833.js rename to docs/assets/js/79.b36e0377.js index 698dac729..8777e676b 100644 --- a/docs/assets/js/79.ed344833.js +++ b/docs/assets/js/79.b36e0377.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{702:function(t,s,n){"use strict";n.r(s);var a=n(69),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"contacts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contacts"}},[this._v("#")]),this._v(" Contacts")]),this._v(" "),t("p",[this._v("TODO")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{701:function(t,s,n){"use strict";n.r(s);var a=n(69),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"contacts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contacts"}},[this._v("#")]),this._v(" Contacts")]),this._v(" "),t("p",[this._v("TODO")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/79.b36e0377.js.gz b/docs/assets/js/79.b36e0377.js.gz new file mode 100644 index 000000000..6c2497803 Binary files /dev/null and b/docs/assets/js/79.b36e0377.js.gz differ diff --git a/docs/assets/js/79.ed344833.js.gz b/docs/assets/js/79.ed344833.js.gz deleted file mode 100644 index b72b3f8a5..000000000 Binary files a/docs/assets/js/79.ed344833.js.gz and /dev/null differ diff --git a/docs/assets/js/80.b444a2d3.js b/docs/assets/js/80.f44ed10e.js similarity index 98% rename from docs/assets/js/80.b444a2d3.js rename to docs/assets/js/80.f44ed10e.js index cb0b4bf77..deefc561d 100644 --- a/docs/assets/js/80.b444a2d3.js +++ b/docs/assets/js/80.f44ed10e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{701:function(e,t,a){"use strict";a.r(t);var r=a(69),s=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[e._v("#")]),e._v(" Deployment")]),e._v(" "),t("p",[e._v("Here, we'll go into detail about everything to do with deploying for production.")]),e._v(" "),t("p",[e._v("CASS is both horizontally and vertically scalable, as well as highly resilient. It can be deployed on Windows or Linux platforms in single server environments, behind multiple load balanced servers or Virtual Machines.")]),e._v(" "),t("h2",{attrs:{id:"application-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#application-server"}},[e._v("#")]),e._v(" Application Server")]),e._v(" "),t("p",[e._v("CASS may be deployed with any Node.js process manager. "),t("strong",[e._v("PM2")]),e._v(" is the default process manager provided with an installation. CASS Application Servers are mostly stateless, with the exception of security credentials, which must be reachable from the working directory of the servlet container.")]),e._v(" "),t("p",[e._v("CASS generates several files upon startup and first use of adapters and features. As such, it is recommended that the user running the servlet container be allowed to modify the working directory of the servlet container.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Version of CaSS before 0.4 have certain compromises in place that prevent horizontal scaling. This is resolved in version 0.4.")])]),e._v(" "),t("h2",{attrs:{id:"database-scalability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#database-scalability"}},[e._v("#")]),e._v(" Database Scalability")]),e._v(" "),t("p",[e._v("CASS uses ElasticSearch as a search engine and object store.")]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Vertically Scalable")]),e._v(" with")]),e._v(" "),t("ul",[t("li",[e._v("Processors")]),e._v(" "),t("li",[e._v("Memory")]),e._v(" "),t("li",[e._v("I/O")])]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Horizontally Scalable")]),e._v(" by defining clusters. Consult the "),t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElasticSearch Documentation"),t("OutboundLink")],1),e._v(" to perform these operations.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Do not configure ElasticSearch to accept connections from the outside web, as this may expose encrypted information that is intended to be private.")])]),e._v(" "),t("h2",{attrs:{id:"web-server-proxy-load-balancing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#web-server-proxy-load-balancing"}},[e._v("#")]),e._v(" Web Server Proxy/Load Balancing")]),e._v(" "),t("p",[e._v("By default, the CASS Installation installs a web server ("),t("em",[e._v("Apache2 or HTTPD")]),e._v("), an application server ("),t("em",[e._v("PM2/Node")]),e._v("), and a database ("),t("em",[e._v("ElasticSearch")]),e._v("). The web server may be moved to another machine and scaled horizontally/vertically without issue.")]),e._v(" "),t("h2",{attrs:{id:"general-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#general-security"}},[e._v("#")]),e._v(" General Security")]),e._v(" "),t("p",[e._v("CASS uses two major layers of security:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Per-Object Security")]),e._v(" - The application that creates the data uses encryption to protect data from use by anyone, including the server owner")]),e._v(" "),t("li",[t("strong",[e._v("Server Security")]),e._v(" - Signed requests must be provided for the server to return encrypted information")])]),e._v(" "),t("p",[e._v('This two-layer strategy is called "'),t("strong",[e._v("No Knowledge")]),e._v('" Security or Privacy. It ensures the protection of a user’s data by having the server require both authentic requests to return data and mechanisms to decrypt the data that are not available on the server. This means that, by design, your server may store data that you cannot access.')])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{702:function(e,t,a){"use strict";a.r(t);var r=a(69),s=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[e._v("#")]),e._v(" Deployment")]),e._v(" "),t("p",[e._v("Here, we'll go into detail about everything to do with deploying for production.")]),e._v(" "),t("p",[e._v("CASS is both horizontally and vertically scalable, as well as highly resilient. It can be deployed on Windows or Linux platforms in single server environments, behind multiple load balanced servers or Virtual Machines.")]),e._v(" "),t("h2",{attrs:{id:"application-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#application-server"}},[e._v("#")]),e._v(" Application Server")]),e._v(" "),t("p",[e._v("CASS may be deployed with any Node.js process manager. "),t("strong",[e._v("PM2")]),e._v(" is the default process manager provided with an installation. CASS Application Servers are mostly stateless, with the exception of security credentials, which must be reachable from the working directory of the servlet container.")]),e._v(" "),t("p",[e._v("CASS generates several files upon startup and first use of adapters and features. As such, it is recommended that the user running the servlet container be allowed to modify the working directory of the servlet container.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Version of CaSS before 0.4 have certain compromises in place that prevent horizontal scaling. This is resolved in version 0.4.")])]),e._v(" "),t("h2",{attrs:{id:"database-scalability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#database-scalability"}},[e._v("#")]),e._v(" Database Scalability")]),e._v(" "),t("p",[e._v("CASS uses ElasticSearch as a search engine and object store.")]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Vertically Scalable")]),e._v(" with")]),e._v(" "),t("ul",[t("li",[e._v("Processors")]),e._v(" "),t("li",[e._v("Memory")]),e._v(" "),t("li",[e._v("I/O")])]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Horizontally Scalable")]),e._v(" by defining clusters. Consult the "),t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElasticSearch Documentation"),t("OutboundLink")],1),e._v(" to perform these operations.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Do not configure ElasticSearch to accept connections from the outside web, as this may expose encrypted information that is intended to be private.")])]),e._v(" "),t("h2",{attrs:{id:"web-server-proxy-load-balancing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#web-server-proxy-load-balancing"}},[e._v("#")]),e._v(" Web Server Proxy/Load Balancing")]),e._v(" "),t("p",[e._v("By default, the CASS Installation installs a web server ("),t("em",[e._v("Apache2 or HTTPD")]),e._v("), an application server ("),t("em",[e._v("PM2/Node")]),e._v("), and a database ("),t("em",[e._v("ElasticSearch")]),e._v("). The web server may be moved to another machine and scaled horizontally/vertically without issue.")]),e._v(" "),t("h2",{attrs:{id:"general-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#general-security"}},[e._v("#")]),e._v(" General Security")]),e._v(" "),t("p",[e._v("CASS uses two major layers of security:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Per-Object Security")]),e._v(" - The application that creates the data uses encryption to protect data from use by anyone, including the server owner")]),e._v(" "),t("li",[t("strong",[e._v("Server Security")]),e._v(" - Signed requests must be provided for the server to return encrypted information")])]),e._v(" "),t("p",[e._v('This two-layer strategy is called "'),t("strong",[e._v("No Knowledge")]),e._v('" Security or Privacy. It ensures the protection of a user’s data by having the server require both authentic requests to return data and mechanisms to decrypt the data that are not available on the server. This means that, by design, your server may store data that you cannot access.')])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/80.b444a2d3.js.gz b/docs/assets/js/80.f44ed10e.js.gz similarity index 93% rename from docs/assets/js/80.b444a2d3.js.gz rename to docs/assets/js/80.f44ed10e.js.gz index 475944336..cae70a55b 100644 Binary files a/docs/assets/js/80.b444a2d3.js.gz and b/docs/assets/js/80.f44ed10e.js.gz differ diff --git a/docs/assets/js/86.aba4ca7f.js b/docs/assets/js/86.5bb751e0.js similarity index 99% rename from docs/assets/js/86.aba4ca7f.js rename to docs/assets/js/86.5bb751e0.js index 3e63db205..6a0c818b4 100644 --- a/docs/assets/js/86.aba4ca7f.js +++ b/docs/assets/js/86.5bb751e0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{710:function(e,t,r){"use strict";r.r(t);var a=r(69),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"links-and-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#links-and-references"}},[e._v("#")]),e._v(" Links and References")]),e._v(" "),t("h2",{attrs:{id:"github"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#github"}},[e._v("#")]),e._v(" GitHub")]),e._v(" "),t("p",[e._v("Most CaSS-related tools will be found on our organization's "),t("a",{attrs:{href:"https://github.com/cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("CaSS itself can be located in this "),t("a",{attrs:{href:"https://github.com/cassproject/CASS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub Repo"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"cass-installation-bash-script"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-installation-bash-script"}},[e._v("#")]),e._v(" CaSS Installation Bash Script")]),e._v(" "),t("p",[e._v("An installation script for Linux systems can be found "),t("a",{attrs:{href:"https://raw.githubusercontent.com/cassproject/CASS/master/scripts/cassInstall.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(". Check out the Installation guide for more help.")]),e._v(" "),t("h2",{attrs:{id:"cass-project-website"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-project-website"}},[e._v("#")]),e._v(" CaSS Project Website")]),e._v(" "),t("p",[e._v("The primary CaSS website may be found at:")]),e._v(" "),t("p",[t("a",{attrs:{href:"http://cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cassproject.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"cass-library-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-library-api"}},[e._v("#")]),e._v(" CaSS Library API")]),e._v(" "),t("p",[e._v("The CaSS Library API allows you to work with data within a CaSS instance. It's highly recommended to use Node.js along with our NPM package.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("NPM"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/tree/master/src/main/js/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://cdn.jsdelivr.net/gh/cassproject/cass@master/src/main/js/cass.js",target:"_blank",rel:"noopener noreferrer"}},[e._v("CDN"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.cassproject.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"cass-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-schema"}},[e._v("#")]),e._v(" CaSS Schema")]),e._v(" "),t("p",[e._v("A 'schema' describes the organization/structure of a set of data.")]),e._v(" "),t("p",[e._v("The schema for CaSS objects is documented "),t("a",{attrs:{href:"http://schema.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", listing the data associated with each CaSS object. CaSS is built upon the pre-existing work done at "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sandbox"}},[e._v("#")]),e._v(" Sandbox")]),e._v(" "),t("p",[e._v("The sandbox is a public site hosting a CaSS instance where you may try CaSS without setting up a CaSS instance yourself, along with a CaSS Editor for easy viewing and editting. There are two sandboxes:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://sandbox.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest stable version"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://dev.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest unstable version"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"other-learning-resources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-learning-resources"}},[e._v("#")]),e._v(" Other Learning Resources")]),e._v(" "),t("p",[e._v("The following links are helpful resources for already-existing tools that CaSS utilizes, written by others:")]),e._v(" "),t("ul",[t("li",[e._v("ElasticSearch Simple Query String\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-simple-query-string-query.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 1"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://logz.io/blog/elasticsearch-queries/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 2"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[e._v("JSON-LD\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Website"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://www.linkeddatatools.com/introduction-json-ld",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial"),t("OutboundLink")],1)])])])]),e._v(" "),t("h2",{attrs:{id:"contact-us"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contact-us"}},[e._v("#")]),e._v(" Contact Us")]),e._v(" "),t("p",[e._v("Request access to the "),t("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),t("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),t("p",[e._v("You may also "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{709:function(e,t,r){"use strict";r.r(t);var a=r(69),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"links-and-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#links-and-references"}},[e._v("#")]),e._v(" Links and References")]),e._v(" "),t("h2",{attrs:{id:"github"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#github"}},[e._v("#")]),e._v(" GitHub")]),e._v(" "),t("p",[e._v("Most CaSS-related tools will be found on our organization's "),t("a",{attrs:{href:"https://github.com/cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("CaSS itself can be located in this "),t("a",{attrs:{href:"https://github.com/cassproject/CASS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub Repo"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"cass-installation-bash-script"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-installation-bash-script"}},[e._v("#")]),e._v(" CaSS Installation Bash Script")]),e._v(" "),t("p",[e._v("An installation script for Linux systems can be found "),t("a",{attrs:{href:"https://raw.githubusercontent.com/cassproject/CASS/master/scripts/cassInstall.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(". Check out the Installation guide for more help.")]),e._v(" "),t("h2",{attrs:{id:"cass-project-website"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-project-website"}},[e._v("#")]),e._v(" CaSS Project Website")]),e._v(" "),t("p",[e._v("The primary CaSS website may be found at:")]),e._v(" "),t("p",[t("a",{attrs:{href:"http://cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cassproject.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"cass-library-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-library-api"}},[e._v("#")]),e._v(" CaSS Library API")]),e._v(" "),t("p",[e._v("The CaSS Library API allows you to work with data within a CaSS instance. It's highly recommended to use Node.js along with our NPM package.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("NPM"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/tree/master/src/main/js/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://cdn.jsdelivr.net/gh/cassproject/cass@master/src/main/js/cass.js",target:"_blank",rel:"noopener noreferrer"}},[e._v("CDN"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.cassproject.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"cass-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-schema"}},[e._v("#")]),e._v(" CaSS Schema")]),e._v(" "),t("p",[e._v("A 'schema' describes the organization/structure of a set of data.")]),e._v(" "),t("p",[e._v("The schema for CaSS objects is documented "),t("a",{attrs:{href:"http://schema.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", listing the data associated with each CaSS object. CaSS is built upon the pre-existing work done at "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sandbox"}},[e._v("#")]),e._v(" Sandbox")]),e._v(" "),t("p",[e._v("The sandbox is a public site hosting a CaSS instance where you may try CaSS without setting up a CaSS instance yourself, along with a CaSS Editor for easy viewing and editting. There are two sandboxes:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://sandbox.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest stable version"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://dev.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest unstable version"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"other-learning-resources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-learning-resources"}},[e._v("#")]),e._v(" Other Learning Resources")]),e._v(" "),t("p",[e._v("The following links are helpful resources for already-existing tools that CaSS utilizes, written by others:")]),e._v(" "),t("ul",[t("li",[e._v("ElasticSearch Simple Query String\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-simple-query-string-query.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 1"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://logz.io/blog/elasticsearch-queries/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 2"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[e._v("JSON-LD\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Website"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://www.linkeddatatools.com/introduction-json-ld",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial"),t("OutboundLink")],1)])])])]),e._v(" "),t("h2",{attrs:{id:"contact-us"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contact-us"}},[e._v("#")]),e._v(" Contact Us")]),e._v(" "),t("p",[e._v("Request access to the "),t("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),t("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),t("p",[e._v("You may also "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/86.5bb751e0.js.gz b/docs/assets/js/86.5bb751e0.js.gz new file mode 100644 index 000000000..cf57deecf Binary files /dev/null and b/docs/assets/js/86.5bb751e0.js.gz differ diff --git a/docs/assets/js/86.aba4ca7f.js.gz b/docs/assets/js/86.aba4ca7f.js.gz deleted file mode 100644 index 34c9b5d20..000000000 Binary files a/docs/assets/js/86.aba4ca7f.js.gz and /dev/null differ diff --git a/docs/assets/js/87.13ca414d.js.gz b/docs/assets/js/87.13ca414d.js.gz deleted file mode 100644 index ddb715710..000000000 Binary files a/docs/assets/js/87.13ca414d.js.gz and /dev/null differ diff --git a/docs/assets/js/87.13ca414d.js b/docs/assets/js/87.c38b8cea.js similarity index 99% rename from docs/assets/js/87.13ca414d.js rename to docs/assets/js/87.c38b8cea.js index e6f449151..546ae3190 100644 --- a/docs/assets/js/87.13ca414d.js +++ b/docs/assets/js/87.c38b8cea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{709:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("The CASS Project encompasses a ground-to-cloud effort to build an open source system for managing and tracking human competence and competencies using Permissible "),t("a",{attrs:{href:"https://www.w3.org/standards/semanticweb/data",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Linked Data"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Data")]),e._v(" - CASS is data driven. There are very few Web Service APIs. Most of the functionality is located in the CASS Javascript Library. CASS data is stored in a repository similar to a "),t("a",{attrs:{href:"https://hostingdata.co.uk/nosql-database/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NoSQL"),t("OutboundLink")],1),e._v(" database.")]),e._v(" "),t("li",[t("strong",[e._v("Linked")]),e._v(" - CASS objects use URLs as IDs. References to these objects can be made by using the object’s ID/URL. Because of the nature of URLs, CASS objects can be uniquely identified across the globe.")]),e._v(" "),t("li",[t("strong",[e._v("Open")]),e._v(" - By default, all CASS data is public. Firewalls, whitelists, and other means are available to prevent this.")]),e._v(" "),t("li",[t("strong",[e._v("Permissible")]),e._v(" - CASS objects are permissioned through use of Public Key Infrastructure. Entities (systems, users, apps) are identified by independently verifiable, signed, public keys. Read permission is controlled via the use of encryption.")])]),e._v(" "),t("h2",{attrs:{id:"technologies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#technologies"}},[e._v("#")]),e._v(" Technologies")]),e._v(" "),t("h3",{attrs:{id:"client-side-reference-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#client-side-reference-implementation"}},[e._v("#")]),e._v(" Client-Side (Reference Implementation)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-editor",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Authoring Tool"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/CASS/tree/master/src/main/js/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Javascript Library"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://vuejs.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("vue.js"),t("OutboundLink")],1)])])])]),e._v(" "),t("h3",{attrs:{id:"server-side"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-side"}},[e._v("#")]),e._v(" Server-Side")]),e._v(" "),t("ul",[t("li",[e._v("[Node Process, managed by PM2] ("),t("a",{attrs:{href:"https://pm2.keymetrics.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("PM2"),t("OutboundLink")],1),e._v(" on port 8080)\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Javascript Library"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("[CaSS Repository] (https://github.com/cassproject/CASS)")])])])]),e._v(" "),t("h2",{attrs:{id:"data-model"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-model"}},[e._v("#")]),e._v(" Data Model")]),e._v(" "),t("p",[e._v("The CaSS schema is available "),t("a",{attrs:{href:"http://schema.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"cass-javascript-library"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-javascript-library"}},[e._v("#")]),e._v(" CaSS Javascript Library")]),e._v(" "),t("p",[e._v("The "),t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Javascript Library"),t("OutboundLink")],1),e._v(" is the easiest way to work with CaSS. It provides the code necessary to utilize all CaSS objects (not strictly necessary in very simple cases).")]),e._v(" "),t("h3",{attrs:{id:"cass-repository-skyrepo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-repository-skyrepo"}},[e._v("#")]),e._v(" CaSS Repository (SkyRepo)")]),e._v(" "),t("p",[e._v("The CaSS Repository is a "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Representational_state_transfer",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST"),t("OutboundLink")],1),e._v(" based "),t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON-LD"),t("OutboundLink")],1),e._v(" object store with "),t("em",[e._v("CRUD")]),e._v(", "),t("em",[e._v("Search")]),e._v(", "),t("em",[e._v("Permissioning")]),e._v(", and "),t("em",[e._v("Basic")]),e._v(" Identity Management functionality. It includes an extensible plugin infrastructure.")]),e._v(" "),t("ul",[t("li",[e._v("SkyRepo attempts to follow RESTful HTTP best practices.\n"),t("ul",[t("li",[e._v("The "),t("code",[e._v("GET")]),e._v(" operation is used to perform a "),t("strong",[e._v("READ")])]),e._v(" "),t("li",[e._v("The "),t("code",[e._v("POST")]),e._v(" and "),t("code",[e._v("PUT")]),e._v(" operations will "),t("strong",[e._v("CREATE")]),e._v(" or "),t("strong",[e._v("UPDATE")]),e._v(" an object")]),e._v(" "),t("li",[e._v("The "),t("code",[e._v("DELETE")]),e._v(" operation will "),t("strong",[e._v("DELETE")]),e._v(" an object")])])]),e._v(" "),t("li",[e._v("Search is available using the "),t("code",[e._v("?q=")]),e._v(" format and follows ElasticSearch Simple Query Strings guidelines.")]),e._v(" "),t("li",[e._v("Permissioning is applied for every query. Authentic requests are validated through the verification of “Signature Sheets” (a form of signed nonce+timestamp token sent with the request). OAuth-based permissioning is currently in development.\n"),t("ul",[t("li",[e._v("Encrypted objects are not returned without a valid signature sheet from an object owner or reader.")]),e._v(" "),t("li",[e._v("Objects, if owned, may not be updated without a valid signature sheet from the current object owner.")]),e._v(" "),t("li",[e._v("Objects, if owned, may not be deleted without a valid signature sheet from the current object owner.")]),e._v(" "),t("li",[e._v("Encrypted objects may be decrypted through use of the private key of one of the owners or readers.")]),e._v(" "),t("li",[e._v("Encrypted objects may be created through the use of a public key of the intended owner.")])])]),e._v(" "),t("li",[e._v("Basic Identity Management is a hashed username and hashed password based store for private keys. By default, CaSS Keys are generated client side and encrypted with a combination of the clear text username and password. As a result, the server owner does not have the capability to manage or recover a user’s keys.")])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("We encourage people to use a different identity management system.")])]),e._v(" "),t("h2",{attrs:{id:"looking-around"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#looking-around"}},[e._v("#")]),e._v(" Looking Around")]),e._v(" "),t("p",[e._v("For a more hands-on approach to understanding the specifics of CaSS, we should take a look at some data directly through your browser.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("All data may be accessed by your browser.")])]),e._v(" "),t("ol",[t("li",[e._v("Navigate "),t("a",{attrs:{href:"https://cassproject.github.io/cass-editor/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" in a new tab, open up a framework (like O*NET Expanded) and click the "),t("a",{attrs:{href:"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf",target:"_blank",rel:"noopener noreferrer"}},[e._v("URL"),t("OutboundLink")],1),e._v(" under the description.")]),e._v(" "),t("li",[e._v("You will then see the JSON-LD representation of the Competency Framework.")]),e._v(" "),t("li",[e._v("Under ‘"),t("em",[e._v("competency")]),e._v("’, there are many URL's. Click one to navigate to that competency.")]),e._v(" "),t("li",[e._v("Here, you will see fields like '"),t("em",[e._v("name")]),e._v("' and '"),t("em",[e._v("description")]),e._v("'. These, as you would expect, are properties of the object according to the schema defined at "),t("code",[e._v("@context")]),e._v(".")]),e._v(" "),t("li",[t("code",[e._v("*@id")]),e._v(", "),t("code",[e._v("@context")]),e._v(", and "),t("code",[e._v("@type")]),e._v(" are properties of the JSON-LD format.")]),e._v(" "),t("li",[t("code",[e._v("@owner")]),e._v(", "),t("code",[e._v("@reader")]),e._v(" (if it exists) and "),t("code",[e._v("@signature")]),e._v(" are properties of the KBAC extension to JSON-LD.")]),e._v(" "),t("li",[e._v("Everything that begins with "),t("code",[e._v("@")]),e._v(" can be thought of to be metadata properties, and everything else is data.")])]),e._v(" "),t("p",[e._v("If you would like to learn more about how JSON-LD works, you can visit "),t("a",{attrs:{href:"http://www.linkeddatatools.com/introduction-json-ld",target:"_blank",rel:"noopener noreferrer"}},[e._v("this tutorial series on Structured Data"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Hopefully, it is easy to imagine how a browser, scripting language, or other server would take advantage of this data. But reading data is of secondary importance to being able to find it. For that, we need search.")]),e._v(" "),t("ol",[t("li",[e._v("Navigate here in a new tab. This performs a search query with the query being "),t("code",[e._v("*")]),e._v(". Using "),t("a",{attrs:{href:"https://logz.io/blog/elasticsearch-queries/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElasticSearch Simple Query Strings"),t("OutboundLink")],1),e._v(", you can query in quite a few ways.")]),e._v(" "),t("li",[e._v("First, replace "),t("code",[e._v("*")]),e._v(" with "),t("code",[e._v("Addition")]),e._v(". This performs a full text search for "),t("em",[e._v("Addition")]),e._v(" in all fields.")]),e._v(" "),t("li",[e._v("Next, replace "),t("code",[e._v("Addition")]),e._v(" with "),t("code",[e._v("name:Addition")]),e._v(". This requires the term "),t("em",[e._v("Addition")]),e._v(" to appear in the "),t("em",[e._v("name")]),e._v(" field.")]),e._v(" "),t("li",[e._v("Next, replace "),t("code",[e._v("name:Addition")]),e._v(" with "),t("code",[e._v("tract")]),e._v(". This should come up with no results. By default, the search matches words, not strings segments. This can be overridden by using wildcards.")]),e._v(" "),t("li",[e._v("Try "),t("code",[e._v("*tract*")]),e._v(". This should come up with competencies that include terms such as "),t("em",[e._v("subtract")]),e._v(" and "),t("em",[e._v("contraction")]),e._v(".")]),e._v(" "),t("li",[e._v("Now try "),t("code",[e._v("name:*tract* AND description:*tract*")]),e._v(". This will return competencies that have "),t("em",[e._v("tract")]),e._v(" in both the name and description.")])]),e._v(" "),t("p",[e._v("This can be used to construct search queries that filter based on the owner of the object, user search terms, or by type.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{710:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("The CASS Project encompasses a ground-to-cloud effort to build an open source system for managing and tracking human competence and competencies using Permissible "),t("a",{attrs:{href:"https://www.w3.org/standards/semanticweb/data",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Linked Data"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Data")]),e._v(" - CASS is data driven. There are very few Web Service APIs. Most of the functionality is located in the CASS Javascript Library. CASS data is stored in a repository similar to a "),t("a",{attrs:{href:"https://hostingdata.co.uk/nosql-database/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NoSQL"),t("OutboundLink")],1),e._v(" database.")]),e._v(" "),t("li",[t("strong",[e._v("Linked")]),e._v(" - CASS objects use URLs as IDs. References to these objects can be made by using the object’s ID/URL. Because of the nature of URLs, CASS objects can be uniquely identified across the globe.")]),e._v(" "),t("li",[t("strong",[e._v("Open")]),e._v(" - By default, all CASS data is public. Firewalls, whitelists, and other means are available to prevent this.")]),e._v(" "),t("li",[t("strong",[e._v("Permissible")]),e._v(" - CASS objects are permissioned through use of Public Key Infrastructure. Entities (systems, users, apps) are identified by independently verifiable, signed, public keys. Read permission is controlled via the use of encryption.")])]),e._v(" "),t("h2",{attrs:{id:"technologies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#technologies"}},[e._v("#")]),e._v(" Technologies")]),e._v(" "),t("h3",{attrs:{id:"client-side-reference-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#client-side-reference-implementation"}},[e._v("#")]),e._v(" Client-Side (Reference Implementation)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-editor",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Authoring Tool"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/CASS/tree/master/src/main/js/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Javascript Library"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://vuejs.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("vue.js"),t("OutboundLink")],1)])])])]),e._v(" "),t("h3",{attrs:{id:"server-side"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-side"}},[e._v("#")]),e._v(" Server-Side")]),e._v(" "),t("ul",[t("li",[e._v("[Node Process, managed by PM2] ("),t("a",{attrs:{href:"https://pm2.keymetrics.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("PM2"),t("OutboundLink")],1),e._v(" on port 8080)\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Javascript Library"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("[CaSS Repository] (https://github.com/cassproject/CASS)")])])])]),e._v(" "),t("h2",{attrs:{id:"data-model"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-model"}},[e._v("#")]),e._v(" Data Model")]),e._v(" "),t("p",[e._v("The CaSS schema is available "),t("a",{attrs:{href:"http://schema.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"cass-javascript-library"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-javascript-library"}},[e._v("#")]),e._v(" CaSS Javascript Library")]),e._v(" "),t("p",[e._v("The "),t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Javascript Library"),t("OutboundLink")],1),e._v(" is the easiest way to work with CaSS. It provides the code necessary to utilize all CaSS objects (not strictly necessary in very simple cases).")]),e._v(" "),t("h3",{attrs:{id:"cass-repository-skyrepo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-repository-skyrepo"}},[e._v("#")]),e._v(" CaSS Repository (SkyRepo)")]),e._v(" "),t("p",[e._v("The CaSS Repository is a "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Representational_state_transfer",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST"),t("OutboundLink")],1),e._v(" based "),t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON-LD"),t("OutboundLink")],1),e._v(" object store with "),t("em",[e._v("CRUD")]),e._v(", "),t("em",[e._v("Search")]),e._v(", "),t("em",[e._v("Permissioning")]),e._v(", and "),t("em",[e._v("Basic")]),e._v(" Identity Management functionality. It includes an extensible plugin infrastructure.")]),e._v(" "),t("ul",[t("li",[e._v("SkyRepo attempts to follow RESTful HTTP best practices.\n"),t("ul",[t("li",[e._v("The "),t("code",[e._v("GET")]),e._v(" operation is used to perform a "),t("strong",[e._v("READ")])]),e._v(" "),t("li",[e._v("The "),t("code",[e._v("POST")]),e._v(" and "),t("code",[e._v("PUT")]),e._v(" operations will "),t("strong",[e._v("CREATE")]),e._v(" or "),t("strong",[e._v("UPDATE")]),e._v(" an object")]),e._v(" "),t("li",[e._v("The "),t("code",[e._v("DELETE")]),e._v(" operation will "),t("strong",[e._v("DELETE")]),e._v(" an object")])])]),e._v(" "),t("li",[e._v("Search is available using the "),t("code",[e._v("?q=")]),e._v(" format and follows ElasticSearch Simple Query Strings guidelines.")]),e._v(" "),t("li",[e._v("Permissioning is applied for every query. Authentic requests are validated through the verification of “Signature Sheets” (a form of signed nonce+timestamp token sent with the request). OAuth-based permissioning is currently in development.\n"),t("ul",[t("li",[e._v("Encrypted objects are not returned without a valid signature sheet from an object owner or reader.")]),e._v(" "),t("li",[e._v("Objects, if owned, may not be updated without a valid signature sheet from the current object owner.")]),e._v(" "),t("li",[e._v("Objects, if owned, may not be deleted without a valid signature sheet from the current object owner.")]),e._v(" "),t("li",[e._v("Encrypted objects may be decrypted through use of the private key of one of the owners or readers.")]),e._v(" "),t("li",[e._v("Encrypted objects may be created through the use of a public key of the intended owner.")])])]),e._v(" "),t("li",[e._v("Basic Identity Management is a hashed username and hashed password based store for private keys. By default, CaSS Keys are generated client side and encrypted with a combination of the clear text username and password. As a result, the server owner does not have the capability to manage or recover a user’s keys.")])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("We encourage people to use a different identity management system.")])]),e._v(" "),t("h2",{attrs:{id:"looking-around"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#looking-around"}},[e._v("#")]),e._v(" Looking Around")]),e._v(" "),t("p",[e._v("For a more hands-on approach to understanding the specifics of CaSS, we should take a look at some data directly through your browser.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("All data may be accessed by your browser.")])]),e._v(" "),t("ol",[t("li",[e._v("Navigate "),t("a",{attrs:{href:"https://cassproject.github.io/cass-editor/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" in a new tab, open up a framework (like O*NET Expanded) and click the "),t("a",{attrs:{href:"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/ce4c0e41-f24c-407d-95af-047bfee429bf",target:"_blank",rel:"noopener noreferrer"}},[e._v("URL"),t("OutboundLink")],1),e._v(" under the description.")]),e._v(" "),t("li",[e._v("You will then see the JSON-LD representation of the Competency Framework.")]),e._v(" "),t("li",[e._v("Under ‘"),t("em",[e._v("competency")]),e._v("’, there are many URL's. Click one to navigate to that competency.")]),e._v(" "),t("li",[e._v("Here, you will see fields like '"),t("em",[e._v("name")]),e._v("' and '"),t("em",[e._v("description")]),e._v("'. These, as you would expect, are properties of the object according to the schema defined at "),t("code",[e._v("@context")]),e._v(".")]),e._v(" "),t("li",[t("code",[e._v("*@id")]),e._v(", "),t("code",[e._v("@context")]),e._v(", and "),t("code",[e._v("@type")]),e._v(" are properties of the JSON-LD format.")]),e._v(" "),t("li",[t("code",[e._v("@owner")]),e._v(", "),t("code",[e._v("@reader")]),e._v(" (if it exists) and "),t("code",[e._v("@signature")]),e._v(" are properties of the KBAC extension to JSON-LD.")]),e._v(" "),t("li",[e._v("Everything that begins with "),t("code",[e._v("@")]),e._v(" can be thought of to be metadata properties, and everything else is data.")])]),e._v(" "),t("p",[e._v("If you would like to learn more about how JSON-LD works, you can visit "),t("a",{attrs:{href:"http://www.linkeddatatools.com/introduction-json-ld",target:"_blank",rel:"noopener noreferrer"}},[e._v("this tutorial series on Structured Data"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Hopefully, it is easy to imagine how a browser, scripting language, or other server would take advantage of this data. But reading data is of secondary importance to being able to find it. For that, we need search.")]),e._v(" "),t("ol",[t("li",[e._v("Navigate here in a new tab. This performs a search query with the query being "),t("code",[e._v("*")]),e._v(". Using "),t("a",{attrs:{href:"https://logz.io/blog/elasticsearch-queries/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElasticSearch Simple Query Strings"),t("OutboundLink")],1),e._v(", you can query in quite a few ways.")]),e._v(" "),t("li",[e._v("First, replace "),t("code",[e._v("*")]),e._v(" with "),t("code",[e._v("Addition")]),e._v(". This performs a full text search for "),t("em",[e._v("Addition")]),e._v(" in all fields.")]),e._v(" "),t("li",[e._v("Next, replace "),t("code",[e._v("Addition")]),e._v(" with "),t("code",[e._v("name:Addition")]),e._v(". This requires the term "),t("em",[e._v("Addition")]),e._v(" to appear in the "),t("em",[e._v("name")]),e._v(" field.")]),e._v(" "),t("li",[e._v("Next, replace "),t("code",[e._v("name:Addition")]),e._v(" with "),t("code",[e._v("tract")]),e._v(". This should come up with no results. By default, the search matches words, not strings segments. This can be overridden by using wildcards.")]),e._v(" "),t("li",[e._v("Try "),t("code",[e._v("*tract*")]),e._v(". This should come up with competencies that include terms such as "),t("em",[e._v("subtract")]),e._v(" and "),t("em",[e._v("contraction")]),e._v(".")]),e._v(" "),t("li",[e._v("Now try "),t("code",[e._v("name:*tract* AND description:*tract*")]),e._v(". This will return competencies that have "),t("em",[e._v("tract")]),e._v(" in both the name and description.")])]),e._v(" "),t("p",[e._v("This can be used to construct search queries that filter based on the owner of the object, user search terms, or by type.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/87.c38b8cea.js.gz b/docs/assets/js/87.c38b8cea.js.gz new file mode 100644 index 000000000..6438b4a20 Binary files /dev/null and b/docs/assets/js/87.c38b8cea.js.gz differ diff --git a/docs/assets/js/88.6b23657d.js.gz b/docs/assets/js/88.6b23657d.js.gz deleted file mode 100644 index 50da431cc..000000000 Binary files a/docs/assets/js/88.6b23657d.js.gz and /dev/null differ diff --git a/docs/assets/js/88.6b23657d.js b/docs/assets/js/88.a62461c5.js similarity index 99% rename from docs/assets/js/88.6b23657d.js rename to docs/assets/js/88.a62461c5.js index 4afe8e7de..7bdbec6e1 100644 --- a/docs/assets/js/88.6b23657d.js +++ b/docs/assets/js/88.a62461c5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{711:function(t,a,s){"use strict";s.r(a);var e=s(69),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"performance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performance"}},[t._v("#")]),t._v(" Performance")]),t._v(" "),a("p",[t._v("This page outlines performance concerns:")]),t._v(" "),a("ul",[a("li",[t._v("Bottlenecks")]),t._v(" "),a("li",[t._v("Optimizations we've implemented")]),t._v(" "),a("li",[t._v("Features you can use to quicken your application")])]),t._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),a("p",[t._v("When working with large numbers of CASS Objects, limitations of HTTP can become an issue. Browsers allowing only 2-8 simultaneous requests to a single server, the overhead of the TCP/HTTP connection, and individual callbacks per request can all have negative performance impacts. Here we discuss some strategies and methods for improving the performance of CASS calls.")]),t._v(" "),a("h2",{attrs:{id:"http-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#http-2"}},[t._v("#")]),t._v(" HTTP/2")]),t._v(" "),a("p",[a("strong",[t._v("HTTP/2")]),t._v(" and "),a("strong",[t._v("SPDY")]),t._v(" are "),a("em",[t._v("protocols")]),t._v(" based on HTTP that create a stream of requests over the same connection. Enabling HTTP/2 is possible on Apache and HTTPD, and is transparent to the user and developer.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("As of 2017, large volumes of requests going over HTTP/2 from Chrome to certain versions of Apache2 can still create seemingly random errors. Test this capability thoroughly.")])]),t._v(" "),a("h2",{attrs:{id:"signatures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#signatures"}},[t._v("#")]),t._v(" Signatures")]),t._v(" "),a("p",[t._v("Signatures are generated for each request that is sent to the server. Because this is a cryptographic function, it takes some time on both the client (to generate the signature) and the server (to validate the signature). If it is certain that the objects being retrieved are public, omitting signatures can help reduce a GET request overhead. This can be accomplished via the following:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("clearIdentities")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Log out")]),t._v("\nEcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("unsigned "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t sign any requests. Remember to turn this off.")]),t._v("\n")])])]),a("h2",{attrs:{id:"caching"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#caching"}},[t._v("#")]),t._v(" Caching")]),t._v(" "),a("p",[t._v("The CASS Libraries include a number of simple caches that can be used to store previously retrieved objects.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("These caches do not check the server to see if the objects or search results have been updated. This can result in outdated information.")])]),t._v(" "),a("p",[a("em",[t._v("Future: CASS now supports update streaming, which will intelligently invalidate caches in future versions.")])]),t._v(" "),a("h3",{attrs:{id:"crypto-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crypto-cache"}},[t._v("#")]),t._v(" Crypto Cache")]),t._v(" "),a("p",[t._v("When working with assertions, performance may be gained by enabling a Crypto Cache that caches decrypted data.")]),t._v(" "),a("p",[t._v("So this command:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcCrypto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("caching "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("affects methods with the pattern:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcAssertion"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("get"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcRsaOaep"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcRsaOaepAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcAesCtr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcAesCtrAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"object-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#object-cache"}},[t._v("#")]),t._v(" Object Cache")]),t._v(" "),a("p",[t._v("The object cache stores objects by their identifier/shortId. The standard fetch techniques all check this cache.")]),t._v(" "),a("p",[t._v("So this command:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("caching "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("affects methods with the pattern:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n")])])]),a("h3",{attrs:{id:"search-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search-cache"}},[t._v("#")]),t._v(" Search Cache")]),t._v(" "),a("p",[t._v("The search cache stores search results. So this command:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cachingSearch "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("affects methods with the pattern:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("search"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"batch-queries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-queries"}},[t._v("#")]),t._v(" Batch Queries")]),t._v(" "),a("p",[t._v("Batch Queries operate faster on both the client and the server, as they require a reduced number of signatures to be generated and verified, and the server can take advantage of multithreading without additional overhead.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" framework "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBlocking")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* ... */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nEcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("caching "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nrepo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("precache")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n framework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("concat")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("framework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relation"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Do something")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Precache will only fetch resources from the repository they are being invoked on. It is prudent to use caching and to attempt to re-fetch the object before use, in case it was not returned from the precache.")])]),t._v(" "),a("h2",{attrs:{id:"multiget"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multiget"}},[t._v("#")]),t._v(" Multiget")]),t._v(" "),a("p",[t._v("Multiget allows multiple CASS objects to be fetched with a single request.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("multiget")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n arrayOfObjectIds"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcRemoteLinkedData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcRemoteLinkedData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Cached values */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("The multiget function is capable of returning CASS objects of multiple types with the same request. Care should be given when working with this function to ensure all objects are of the expected type(s).")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{712:function(t,a,s){"use strict";s.r(a);var e=s(69),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"performance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#performance"}},[t._v("#")]),t._v(" Performance")]),t._v(" "),a("p",[t._v("This page outlines performance concerns:")]),t._v(" "),a("ul",[a("li",[t._v("Bottlenecks")]),t._v(" "),a("li",[t._v("Optimizations we've implemented")]),t._v(" "),a("li",[t._v("Features you can use to quicken your application")])]),t._v(" "),a("h2",{attrs:{id:"overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),a("p",[t._v("When working with large numbers of CASS Objects, limitations of HTTP can become an issue. Browsers allowing only 2-8 simultaneous requests to a single server, the overhead of the TCP/HTTP connection, and individual callbacks per request can all have negative performance impacts. Here we discuss some strategies and methods for improving the performance of CASS calls.")]),t._v(" "),a("h2",{attrs:{id:"http-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#http-2"}},[t._v("#")]),t._v(" HTTP/2")]),t._v(" "),a("p",[a("strong",[t._v("HTTP/2")]),t._v(" and "),a("strong",[t._v("SPDY")]),t._v(" are "),a("em",[t._v("protocols")]),t._v(" based on HTTP that create a stream of requests over the same connection. Enabling HTTP/2 is possible on Apache and HTTPD, and is transparent to the user and developer.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("As of 2017, large volumes of requests going over HTTP/2 from Chrome to certain versions of Apache2 can still create seemingly random errors. Test this capability thoroughly.")])]),t._v(" "),a("h2",{attrs:{id:"signatures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#signatures"}},[t._v("#")]),t._v(" Signatures")]),t._v(" "),a("p",[t._v("Signatures are generated for each request that is sent to the server. Because this is a cryptographic function, it takes some time on both the client (to generate the signature) and the server (to validate the signature). If it is certain that the objects being retrieved are public, omitting signatures can help reduce a GET request overhead. This can be accomplished via the following:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("clearIdentities")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Log out")]),t._v("\nEcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("unsigned "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t sign any requests. Remember to turn this off.")]),t._v("\n")])])]),a("h2",{attrs:{id:"caching"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#caching"}},[t._v("#")]),t._v(" Caching")]),t._v(" "),a("p",[t._v("The CASS Libraries include a number of simple caches that can be used to store previously retrieved objects.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("These caches do not check the server to see if the objects or search results have been updated. This can result in outdated information.")])]),t._v(" "),a("p",[a("em",[t._v("Future: CASS now supports update streaming, which will intelligently invalidate caches in future versions.")])]),t._v(" "),a("h3",{attrs:{id:"crypto-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crypto-cache"}},[t._v("#")]),t._v(" Crypto Cache")]),t._v(" "),a("p",[t._v("When working with assertions, performance may be gained by enabling a Crypto Cache that caches decrypted data.")]),t._v(" "),a("p",[t._v("So this command:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcCrypto"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("caching "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("affects methods with the pattern:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcAssertion"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("get"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcRsaOaep"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcRsaOaepAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcAesCtr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcAesCtrAsync"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("decrypt")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"object-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#object-cache"}},[t._v("#")]),t._v(" Object Cache")]),t._v(" "),a("p",[t._v("The object cache stores objects by their identifier/shortId. The standard fetch techniques all check this cache.")]),t._v(" "),a("p",[t._v("So this command:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("caching "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("affects methods with the pattern:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n")])])]),a("h3",{attrs:{id:"search-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search-cache"}},[t._v("#")]),t._v(" Search Cache")]),t._v(" "),a("p",[t._v("The search cache stores search results. So this command:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cachingSearch "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("affects methods with the pattern:")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("search"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h2",{attrs:{id:"batch-queries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-queries"}},[t._v("#")]),t._v(" Batch Queries")]),t._v(" "),a("p",[t._v("Batch Queries operate faster on both the client and the server, as they require a reduced number of signatures to be generated and verified, and the server can take advantage of multithreading without additional overhead.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" framework "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getBlocking")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* ... */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nEcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("caching "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nrepo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("precache")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n framework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("concat")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("framework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relation"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Do something")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Precache will only fetch resources from the repository they are being invoked on. It is prudent to use caching and to attempt to re-fetch the object before use, in case it was not returned from the precache.")])]),t._v(" "),a("h2",{attrs:{id:"multiget"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multiget"}},[t._v("#")]),t._v(" Multiget")]),t._v(" "),a("p",[t._v("Multiget allows multiple CASS objects to be fetched with a single request.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcRepository"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("multiget")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n arrayOfObjectIds"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcRemoteLinkedData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcRemoteLinkedData")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Cached values */")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("The multiget function is capable of returning CASS objects of multiple types with the same request. Care should be given when working with this function to ensure all objects are of the expected type(s).")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/88.a62461c5.js.gz b/docs/assets/js/88.a62461c5.js.gz new file mode 100644 index 000000000..f9cd43925 Binary files /dev/null and b/docs/assets/js/88.a62461c5.js.gz differ diff --git a/docs/assets/js/89.7be81469.js b/docs/assets/js/89.cabbbf27.js similarity index 99% rename from docs/assets/js/89.7be81469.js rename to docs/assets/js/89.cabbbf27.js index eabe34290..e6435de88 100644 --- a/docs/assets/js/89.7be81469.js +++ b/docs/assets/js/89.cabbbf27.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{712:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"kbac-specification"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kbac-specification"}},[t._v("#")]),t._v(" KBAC Specification")]),t._v(" "),s("p",[t._v("This document specifies how to implement "),s("strong",[t._v("Key-Based Access Control (KBAC)")]),t._v(", which is the security and access control framework used by CaSS. KBAC adds security and access control to JSON and JSON-LD objects. It uses mechanisms found in "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Public_key_infrastructure",target:"_blank",rel:"noopener noreferrer"}},[t._v("Public Key Infrastructure (PKI)"),s("OutboundLink")],1),t._v(" to federate identities, authenticate identities, provide authorization, and encrypt data.")]),t._v(" "),s("h3",{attrs:{id:"how-to-read-this-document"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-to-read-this-document"}},[t._v("#")]),t._v(" How to Read this Document")]),t._v(" "),s("p",[t._v("This document describes the data model, functions, and algorithms used to implement KBAC for security, authorization, and encryption. It is intended for developers with a working understanding of encryption and access to code libraries that can be used to perform common encryption tasks.")]),t._v(" "),s("h3",{attrs:{id:"overview"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),s("p",[t._v("KBAC has the following components:")]),t._v(" "),s("ol",[s("li",[t._v("A "),s("strong",[t._v("permission system")]),t._v(" that defines what operations an individual or system can perform on any object in CaSS.")]),t._v(" "),s("li",[t._v("An "),s("strong",[t._v("encryption-based enforcement system")]),t._v(" that enables end-to-end encryption. Cryptographic techniques are used to grant and deny read permissions and to validate the authenticity of objects or fields.")]),t._v(" "),s("li",[t._v("A set of "),s("strong",[t._v("conformance criteria")]),t._v(" (with various levels of conformance) that ensure that a conforming system follows adequate security procedures and respects permissions, including those that cannot be enforced via encryption.")])]),t._v(" "),s("p",[t._v("KBAC assumes that objects are expressed in JSON-LD and adds fields and encryption to these objects to accomplish 1 and 2. KBAC does not specify how and where JSON-LD objects are stored or transmitted but is compatible with "),s("em",[t._v("NoSQL")]),t._v(" and "),s("em",[t._v("SQL")]),t._v(" databases, with systems that store JSON-LD as objects in a document object model, and with both secure and insecure data transmission protocols (e.g. HTTP and HTTPS). CaSS instances (installed using the code available on GitHub) store objects in a NoSQL database as JSON-LD with KBAC extensions and encryption and conform to the policy requirements of KBAC.")]),t._v(" "),s("h2",{attrs:{id:"specification"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#specification"}},[t._v("#")]),t._v(" Specification")]),t._v(" "),s("h3",{attrs:{id:"encodings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#encodings"}},[t._v("#")]),t._v(" Encodings")]),t._v(" "),s("p",[t._v("In "),s("a",{attrs:{href:"https://www.json.org/json-en.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON"),s("OutboundLink")],1),t._v(', a string is a "'),s("em",[t._v("a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes.")]),t._v('" CaSS uses '),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/UTF-8",target:"_blank",rel:"noopener noreferrer"}},[t._v("UTF-8 encodings"),s("OutboundLink")],1),t._v(" of unicode characters. When necessary, "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Base64",target:"_blank",rel:"noopener noreferrer"}},[t._v("Base64 encoding"),s("OutboundLink")],1),t._v(" is used to convert sequences of bytes into strings.")]),t._v(" "),s("h3",{attrs:{id:"entities-and-identities"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#entities-and-identities"}},[t._v("#")]),t._v(" Entities and Identities")]),t._v(" "),s("p",[t._v("In KBAC, an "),s("strong",[t._v("Entity")]),t._v(" refers to a "),s("em",[t._v("person, organization, group,")]),t._v(" or "),s("em",[t._v("system")]),t._v(".")]),t._v(" "),s("p",[t._v("KBAC assigns identities to entities. KBAC assumes that real-world identities are defined and managed external to CaSS, e.g. via a "),s("strong",[t._v("Single Sign On (SSO)")]),t._v(" system, an enterprise directory service, "),s("strong",[t._v("OAUTH")]),t._v(", or some other means. In CaSS, an identity for an entity is a pair consisting of a public and private key in the sense of Public Key Infrastructure (PKI).")]),t._v(" "),s("p",[t._v("In this document's notation:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("publickey(entity)")]),t._v(" represents the public key portion of the identity (also called an "),s("strong",[t._v("Identifier")]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("identity(entity)")]),t._v(" represents the public/private key pair (also called the "),s("strong",[t._v("Identity")]),t._v(")")])]),t._v(" "),s("p",[t._v("CaSS should not store any identities that include PII.")]),t._v(" "),s("h3",{attrs:{id:"groups"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#groups"}},[t._v("#")]),t._v(" Groups")]),t._v(" "),s("p",[t._v("Identities can belong to groups. Groups are also representable by identities. CaSS assumes that an external service can validate whether an identity belongs to a given group.")]),t._v(" "),s("h3",{attrs:{id:"aes-encryption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#aes-encryption"}},[t._v("#")]),t._v(" AES encryption")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Advanced_Encryption_Standard",target:"_blank",rel:"noopener noreferrer"}},[t._v("AES encryption"),s("OutboundLink")],1),t._v(" (or AES) refers to the Advanced Encryption Standard as established by the "),s("a",{attrs:{href:"https://www.nist.gov/",target:"_blank",rel:"noopener noreferrer"}},[t._v("National Institute of Standards (NIST)"),s("OutboundLink")],1),t._v(". When applying KBAC, the same AES implementation should be used whenever encrypting or decrypting data. CaSS uses "),s("strong",[t._v("AES-256-CTR")]),t._v(" as defined in "),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc3686",target:"_blank",rel:"noopener noreferrer"}},[t._v("IETF RFC3686"),s("OutboundLink")],1),t._v(". This implementation uses a 32-byte secret that is separate from a 32-byte "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Initialization_vector",target:"_blank",rel:"noopener noreferrer"}},[t._v("initialization vector"),s("OutboundLink")],1),t._v(". In this document we will represent AES as two functions:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("ciphertext = aesEncrypt(plaintext, secret, iv)\nplaintext = aesDecrypt(ciphertext, secret, iv)\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),s("p",[t._v("Though plaintext will usually be a string, any ordered sequence of bytes may be passed in")])]),t._v(" "),s("h3",{attrs:{id:"rsa-encryption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rsa-encryption"}},[t._v("#")]),t._v(" RSA encryption")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://en.wikipedia.org/wiki/RSA_(cryptosystem)",target:"_blank",rel:"noopener noreferrer"}},[t._v("RSA encryption"),s("OutboundLink")],1),t._v(" refers to the asymmetric RSA encryption algorithm. CaSS uses a 2048-bit version of "),s("a",{attrs:{href:"https://www.inf.pucrs.br/~calazans/graduate/TPVLSI_I/RSA-oaep_spec.pdf",target:"_blank",rel:"noopener noreferrer"}},[t._v("RSA-OAEP"),s("OutboundLink")],1),t._v(" for encryption and decryption, and SHA1 with RSA for signing and verification. In this document we will represent the functions relevant to RSA encryption as:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("new unique public and private key pair = generateKeys()\nprivatekey = private key from PPK = privateKey(PPK)\npublickey = public key from PPK = publicKey(PPK)\nciphertext generated by applying RSA to plaintext (< 256 bytes) = rsaEncrypt(plaintext, privatekey)\nplaintext = rsaDecrypt(ciphertext, publickey)\nsignature = rsaSign(plaintext, privatekey)`\nrsaVerify(signature, publickey) is true ⇔ rsaSign(signature, publickey) is an identifiable signature that conforms to an agreed-upon format for signatures.\n")])])]),s("h3",{attrs:{id:"cryptographic-encodings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cryptographic-encodings"}},[t._v("#")]),t._v(" Cryptographic Encodings")]),t._v(" "),s("p",[t._v("Cryptographic objects shall be encoded in the following fashions prior to storage in JSON:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("object")]),t._v(" "),s("th",[t._v("encoding")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("secret")]),t._v(" "),s("td",[t._v("Base64")])]),t._v(" "),s("tr",[s("td",[t._v("iv")]),t._v(" "),s("td",[t._v("Base64")])]),t._v(" "),s("tr",[s("td",[t._v("privatekey")]),t._v(" "),s("td",[t._v("PKCS#8 encoding with whitespace removed")])]),t._v(" "),s("tr",[s("td",[t._v("publickey")]),t._v(" "),s("td",[t._v("PEM encoded SubjectPublicKeyInfo with whitespace removed")])]),t._v(" "),s("tr",[s("td",[t._v("ciphertext")]),t._v(" "),s("td",[t._v("Base64")])]),t._v(" "),s("tr",[s("td",[t._v("signature")]),t._v(" "),s("td",[t._v("SHA1 encoding before signature creation, Base64 encoding of the signature.")])])])]),t._v(" "),s("h3",{attrs:{id:"kbac-components"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kbac-components"}},[t._v("#")]),t._v(" KBAC Components")]),t._v(" "),s("p",[t._v("A KBAC-conformant object should implement the following JSON-LD fields, if applicable:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("@context")])]),t._v(" "),s("li",[s("code",[t._v("@type")])]),t._v(" "),s("li",[s("code",[t._v("@id")])])]),t._v(" "),s("p",[t._v("Definitions can be found in the "),s("a",{attrs:{href:"https://json-ld.org/spec/ED/json-ld-syntax/20120522/#syntax-tokens-and-keywords",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON-LD Specification"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("A KBAC-conformant JSON-LD object may contain the following fields:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("@owner")]),t._v(" "),s("ul",[s("li",[t._v("The public keys of entities who are allowed to edit or delete the object.")])])]),t._v(" "),s("li",[s("code",[t._v("@reader")]),t._v(" "),s("ul",[s("li",[t._v("The public keys of entities who are allowed to discover or read the object if the object is encrypted.")])])]),t._v(" "),s("li",[s("code",[t._v("@signature")]),t._v(" "),s("ul",[s("li",[t._v("A cryptographic signature that can be decrypted and validated using the public keys of identities listed in "),s("code",[t._v("@owner")]),t._v(" or "),s("code",[t._v("@reader")]),t._v(". (The ability to decrypt a signature with one of these public keys is prima facie evidence that the corresponding identity created the signature.)")])])])]),t._v(" "),s("p",[t._v("Each of these fields shall, in its natural state, be an array.")]),t._v(" "),s("h3",{attrs:{id:"kbac-identifiers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kbac-identifiers"}},[t._v("#")]),t._v(" KBAC Identifiers")]),t._v(" "),s("p",[t._v("A KBAC-conformant URL shall be a resolvable URL ("),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc1738",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC 1738"),s("OutboundLink")],1),t._v(", "),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc3986",target:"_blank",rel:"noopener noreferrer"}},[t._v("3986"),s("OutboundLink")],1),t._v(", etc.) composed of the following parts:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("protocol")]),t._v(" "),s("ul",[s("li",[t._v("http:// or https://")])])]),t._v(" "),s("li",[s("strong",[t._v("endpoint")]),t._v(" "),s("ul",[s("li",[t._v("hostname and path")])])]),t._v(" "),s("li",[s("strong",[t._v("type")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("@context")]),t._v(" + "),s("code",[t._v("@type")]),t._v(" with protocol removed and all sequences of symbols replaced with dots.\n"),s("ul",[s("li",[t._v("ex: "),s("code",[t._v("http://schema.cassproject.org/0.2/competency")]),t._v(" -> "),s("code",[t._v("schema.cassproject.org.0.2.competency")])])])])])]),t._v(" "),s("li",[s("strong",[t._v("unique identifier")]),t._v(" "),s("ul",[s("li",[t._v("May be a randomly generated GUID")]),t._v(" "),s("li",[t._v("May be a canonical identifier with at least one letter or symbol.")])])]),t._v(" "),s("li",[s("strong",[t._v("version")]),t._v(" "),s("em",[t._v("optional")]),t._v(" "),s("ul",[s("li",[t._v("Time the object was last modified in milliseconds since the epoch.")])])])]),t._v(" "),s("p",[t._v("When the version is omitted, the URL refers to the most recent version of the object.")]),t._v(" "),s("h2",{attrs:{id:"types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[t._v("#")]),t._v(" Types")]),t._v(" "),s("h3",{attrs:{id:"example-type-file"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-type-file"}},[t._v("#")]),t._v(" Example Type -- File")]),t._v(" "),s("p",[t._v("A functional example of a JSON-LD File object follows:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/general/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey1)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey2)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mimeType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"owners-and-signatures"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#owners-and-signatures"}},[t._v("#")]),t._v(" Owners and Signatures")]),t._v(" "),s("p",[t._v("The algorithm to annotate a JSON-LD object follows:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@reader"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("publickey4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey1)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey2)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The algorithm to prepare an object for signing follows:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n remove from object the fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Serialize to "),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("with")]),t._v(" zero whitespace "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("with")]),t._v(" fields "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("ASCII")]),t._v(" order"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n")])])]),s("p",[t._v("To verify an object:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signature1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("To sign an object:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" privatekey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("If an object is annotated with KBAC fields and being stored in a repository, the system storing the object:")]),t._v(" "),s("ol",[s("li",[t._v("Must provide a signatureSheet with a valid signature for at least one owner.")]),t._v(" "),s("li",[t._v("Must remove all invalid signatures.")]),t._v(" "),s("li",[t._v("Should append at least one valid signature to the object.")])]),t._v(" "),s("p",[t._v("The repository the object is being stored in:")]),t._v(" "),s("ol",[s("li",[t._v("Must validate all SignatureSheetSignatures in the SignatureSheet by:\n"),s("ul",[s("li",[t._v("Ensuring the expiry timestamp has not elapsed.")]),t._v(" "),s("li",[t._v("Ensuring that the server url pertains to this machine and, if it specifies an object identifier, the object being stored.")]),t._v(" "),s("li",[t._v("Ensuring the signature of the SignatureSheetSignature is valid.")])])]),t._v(" "),s("li",[t._v("If the object is being modified, must have at least one SignatureSheetSignature common with the unmodified object’s owner.")]),t._v(" "),s("li",[t._v("Must validate any signatures provided with the object.")])]),t._v(" "),s("p",[t._v("Any failure of any of these criteria shall result in an error.")]),t._v(" "),s("h3",{attrs:{id:"signaturesheetsignature"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaturesheetsignature"}},[t._v("#")]),t._v(" SignatureSheetSignature")]),t._v(" "),s("p",[t._v("A SignatureSheetSignature has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"expiry"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" long"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (unix timestamp)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"server"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" url\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("And is generated by:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createSignatureSheetSignature")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("expiryMilliseconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TimeLimitedSignature"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("publickey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("privatekey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"expiry"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("nowInUnixTime")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("expiryMilliseconds"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"server"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" serverUrl\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object remove @signature"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @signature1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @owner1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n expiry "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("nowInUnixTime")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("startsWith")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"signaturesheet"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaturesheet"}},[t._v("#")]),t._v(" SignatureSheet")]),t._v(" "),s("p",[t._v("A signature sheet is an array of SignatureSheetSignature:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("signatureSheetSignature1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheetSignature2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h3",{attrs:{id:"encryptedvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#encryptedvalue"}},[t._v("#")]),t._v(" EncryptedValue")]),t._v(" "),s("p",[t._v("EncryptedValue is an object that stores encrypted data. It has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@encryptedType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" @context + @type of the object encrypted. Optional.\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"secret"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("secret1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"payload"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ciphertext\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The following function specifies the object used to store a secret, iv, and other data for encryption:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encryptedSecret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"s"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"f"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"v"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"d"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toEncryptedValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EncryptedValue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@encryptedType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@reader"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"secret"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encryptedSecret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @owner1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encryptedSecret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @reader1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"payload"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Additionally:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Secret")]),t._v(" and "),s("strong",[t._v("IV")]),t._v(" should be randomly generated.")]),t._v(" "),s("li",[t._v("If "),s("code",[t._v("toEncryptedValue")]),t._v(" is encrypting an object, the value shall be the serialized object and field shall be omitted.")]),t._v(" "),s("li",[t._v("If "),s("code",[t._v("toEncryptedValue")]),t._v(" is encrypting a field of an object, the value shall be the value of the field, and field shall be the JSONPath dot-and-bracket notation of the field’s location.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromEncryptedValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("ppk1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("ppk2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" all i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" j"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"secret"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" stop on first decryption that results "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" a valid "),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),t._v(" object\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"plaintext"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("secretj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("privatekey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppki"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"s"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("secretj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("privatekey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppki"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" the result "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("of")]),t._v(" above"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("A repository must strip any EncryptedValue objects from search or get results if:")]),t._v(" "),s("ol",[s("li",[t._v("A signatureSheet is not provided with the request.")]),t._v(" "),s("li",[t._v("A signatureSheetSignature is invalid (based on the criteria given previously).")]),t._v(" "),s("li",[t._v("A signatureSheetSignature does not provide a public key matching a key in the @reader or @owner fields of the result under consideration.")])]),t._v(" "),s("h2",{attrs:{id:"identity-server-types-and-operations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#identity-server-types-and-operations"}},[t._v("#")]),t._v(" Identity Server, Types and Operations")]),t._v(" "),s("p",[t._v("It is common to use usernames and passwords in order to provide access to a system. In KBAC, a username and password may be used to store and retrieve credentials from a repository. The following types, functions and requirements provide a method of storing credentials in an encrypted fashion.")]),t._v(" "),s("h3",{attrs:{id:"credential"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#credential"}},[t._v("#")]),t._v(" Credential")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("Credential")]),t._v(" object stores a private key in an encrypted form and has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ppk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Additionally:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("Iv")]),t._v(" should be regenerated any time the value of ppk is changed.")]),t._v(" "),s("li",[s("code",[t._v("displayNameIv")]),t._v(" should be regenerated any time displayName is changed.")])]),t._v(" "),s("p",[t._v("A functional definition follows:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredential")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Credential"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"ppk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pem")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"contact"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact"}},[t._v("#")]),t._v(" Contact")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("Contact")]),t._v(" stores a public key in an encrypted form. It has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"sourceIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"source"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("A functional definition follows:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createContact")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" sourceIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" source")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Contact"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"pk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pem")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" displayNameIv\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"sourceIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" displayNameIv\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"source"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("source"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("sourceIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"credentials"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#credentials"}},[t._v("#")]),t._v(" Credentials")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("Credentials")]),t._v(" object stores public and private keys in an encrypted form. It has the following functional definition:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentials")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("Credential"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Contact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pad"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" token")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Contact"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Optional */")]),t._v(" token"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"credentials"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" Credential"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"contacts"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" Contact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"hashing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hashing"}},[t._v("#")]),t._v(" Hashing")]),t._v(" "),s("p",[t._v("The storage and retrieval of user credentials uses hashing. Each repository should generate a random hash, and systems using that repository should retrieve the following from the repository: the hash, the number of hashing iterations, and the length of the hash result.")]),t._v(" "),s("p",[t._v("In CaSS, "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/PBKDF2",target:"_blank",rel:"noopener noreferrer"}},[t._v("PBKDF2"),s("OutboundLink")],1),t._v(" using an "),s("strong",[t._v("HMAC SHA-1")]),t._v(" hash is used for hashing user credentials, defined by the following parameters and function:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Value")]),t._v(": string")]),t._v(" "),s("li",[s("strong",[t._v("Salt")]),t._v(": string")]),t._v(" "),s("li",[s("strong",[t._v("Iterations")]),t._v(": integer")]),t._v(" "),s("li",[s("strong",[t._v("Width")]),t._v(": integer, length of the resultant hash in bytes")])]),t._v(" "),s("p",[t._v("Additionally:")]),t._v(" "),s("ul",[s("li",[t._v("The number of iterations should be at least 5000.")]),t._v(" "),s("li",[t._v("The width of the result should be at least 32 bytes.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("hash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" salt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" width"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"operations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#operations"}},[t._v("#")]),t._v(" Operations")]),t._v(" "),s("h4",{attrs:{id:"prepare"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prepare"}},[t._v("#")]),t._v(" Prepare")]),t._v(" "),s("p",[t._v("The following function may be used to splice strings.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("splice")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("strings")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("let")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/*\n for all strings i and character positions j:\n [stringi,j,stringi+1,j,stringi+2,j,...] + [stringi,j+1,stringi+1,j+1,stringi+2,j+1] + ...\n */")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Any non-displayable characters are omitted.")]),t._v(" "),s("p",[t._v("Given the following:")]),t._v(" "),s("ul",[s("li",[t._v("Username")]),t._v(" "),s("li",[t._v("Password")]),t._v(" "),s("li",[t._v("UsernameSalt")]),t._v(" "),s("li",[t._v("PasswordSalt")]),t._v(" "),s("li",[t._v("SecretSalt")]),t._v(" "),s("li",[t._v("UsernameIterations")]),t._v(" "),s("li",[t._v("PasswordIterations")]),t._v(" "),s("li",[t._v("SecretIterations")]),t._v(" "),s("li",[t._v("UsernameWidth")]),t._v(" "),s("li",[t._v("PasswordWidth")]),t._v(" "),s("li",[t._v("SecretWidth")])]),t._v(" "),s("p",[t._v("The following functions hash a username and password, and provide a secret used to encrypt credentials:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("usernameHash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" usernameSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" usernameIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" usernameWidth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\npasswordHash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordWidth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsecretHash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("splice")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretWidth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("em",[t._v("secretHash")]),t._v(" is used as the secret in the encryption and decryption of Credential and Contact objects.")]),t._v(" "),s("h4",{attrs:{id:"fetch"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fetch"}},[t._v("#")]),t._v(" Fetch")]),t._v(" "),s("p",[t._v("To fetch a credential package from a server, construct a "),s("code",[t._v("CredentialRequest")]),t._v(" with the following functional definition:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentialRequest")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("usernameHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordHash")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CredentialRequest"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" usernameHash\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"password"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" passwordHash\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The submission of this request to a server should occur over HTTPS. The response will be a Credentials object.")]),t._v(" "),s("p",[t._v("On the server side, the repository must:")]),t._v(" "),s("ul",[s("li",[t._v("Create or Load "),s("em",[t._v("serverUrl, serverPpk, serverSecret, serverSalt, serverIterations, serverWidth")])])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("saltedId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("request")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverWidth\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetchResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("request")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/*\n fetch encryptedValue WHERE\n @id = request["username"] AND\n rsaDecrypt(\n encryptedValue["payload"],\n serverSecret,\n saltedId\n )["password"] = request["password"]\n */')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Then replace credentials["token"] with a new random token. */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Store the credentials with the new token in the same fashion as commitResponse. */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Return the result. */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"store"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#store"}},[t._v("#")]),t._v(" Store")]),t._v(" "),s("p",[t._v("To store a credential package in an identity server, create a "),s("code",[t._v("CredentialCommit")]),t._v(" using the following functional definition:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentialCommit")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("usernameHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" token"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Credentials"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Contacts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CredentialCommit"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" usernameHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"password"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" passwordHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" token"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"credentials"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentials")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Credentials"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Contacts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Credentials")]),t._v(" and "),s("strong",[t._v("Contacts")]),t._v(" should be created through the following parameterization:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredential")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// secretHash,")]),t._v("\n iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv,")]),t._v("\n ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Ppk of the user,")]),t._v("\n displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv,")]),t._v("\n displayName "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Display name for the user")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createContact")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Pk of the contact")]),t._v("\n secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// secretHash")]),t._v("\n iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv")]),t._v("\n displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv")]),t._v("\n sourceIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv")]),t._v("\n displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Display name of the contact")]),t._v("\n source"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Home server of the contact")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The submission of this request to a server should occur over HTTPS. The response will be a confirmation or error string.")]),t._v(" "),s("p",[t._v("The repository, upon receiving a credentialCommit shall:")]),t._v(" "),s("ul",[s("li",[t._v("Create or Load "),s("em",[t._v("serverUrl, serverPpk, serverSecret, serverSalt, serverIterations, serverWidth")])]),t._v(" "),s("li",[t._v("Execute the following functional definition:")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("commitResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isSuccessful")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetchResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetchResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" signatureSheet "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createSignatureSheetSignature")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serverPpk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" obj "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EncryptedValue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pkFromPpk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serverPpk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverPpk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"plaintext"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Store obj at saltedId(request) using signatureSheet */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"repository"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#repository"}},[t._v("#")]),t._v(" Repository")]),t._v(" "),s("p",[t._v("A KBAC repository is a "),s("strong",[t._v("REST-based")]),t._v(" repository, with its reference implementation built in "),s("strong",[t._v("LEVR")]),t._v(" using "),s("strong",[t._v("ElasticSearch")]),t._v(" for discovery, but may be implemented using different methods in different storage mediums such as "),s("em",[t._v("relational databases")]),t._v(", "),s("em",[t._v("triple stores")]),t._v(", or as "),s("em",[t._v("static files")]),t._v(".")]),t._v(" "),s("p",[t._v("The repository must follow these rules:")]),t._v(" "),s("ul",[s("li",[t._v("Search or Read requests shall hide "),s("code",[t._v("EncryptedValue")]),t._v(" objects if an owner or reader signature is not provided in a signature sheet and validated.")]),t._v(" "),s("li",[t._v("Objects may only be stored if a signature is provided that validates the written object.")]),t._v(" "),s("li",[t._v("Before writing an object to a repository, the repository shall ensure that a valid signature has been provided in a signature sheet that matches one of the owners provided in the object in the repository (if an object exists in the repository), and that the signature in the object is valid.")]),t._v(" "),s("li",[t._v("Before deleting an object from a repository, the repository shall ensure that a valid signature in a signature sheet has been provided and matches an owner of the object in the repository.")])]),t._v(" "),s("h3",{attrs:{id:"web-service-operation-pseudocode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#web-service-operation-pseudocode"}},[t._v("#")]),t._v(" Web Service Operation Pseudocode")]),t._v(" "),s("h4",{attrs:{id:"filter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#filter"}},[t._v("#")]),t._v(" Filter")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("filter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("let")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("++")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Remove result[i] and its children */")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@type "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EncryptedValue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" decryptable "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheet"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Unable to decrypt?")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("decryptable "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Delete result[i]; */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n remove from\n result0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n\n resultn and children "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("of")]),t._v(" resultn "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("where")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resultn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@type "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!==")]),t._v(" EncryptedValue unless\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheet0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("and")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resultn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"create"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create"}},[t._v("#")]),t._v(" Create")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("create")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* SELECT record FROM store WHERE record.@id = id */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@signature0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create object.@id = object */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"read"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#read"}},[t._v("#")]),t._v(" Read")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("filter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* SELECT record FROM store WHERE record.@id = id,signatureSheet */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"update"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update"}},[t._v("#")]),t._v(" Update")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@signature0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheet0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Store object.@id = object */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheets"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Delete object.@id */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("query"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("filter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Search for query, signatureSheet */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{711:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"kbac-specification"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kbac-specification"}},[t._v("#")]),t._v(" KBAC Specification")]),t._v(" "),s("p",[t._v("This document specifies how to implement "),s("strong",[t._v("Key-Based Access Control (KBAC)")]),t._v(", which is the security and access control framework used by CaSS. KBAC adds security and access control to JSON and JSON-LD objects. It uses mechanisms found in "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Public_key_infrastructure",target:"_blank",rel:"noopener noreferrer"}},[t._v("Public Key Infrastructure (PKI)"),s("OutboundLink")],1),t._v(" to federate identities, authenticate identities, provide authorization, and encrypt data.")]),t._v(" "),s("h3",{attrs:{id:"how-to-read-this-document"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#how-to-read-this-document"}},[t._v("#")]),t._v(" How to Read this Document")]),t._v(" "),s("p",[t._v("This document describes the data model, functions, and algorithms used to implement KBAC for security, authorization, and encryption. It is intended for developers with a working understanding of encryption and access to code libraries that can be used to perform common encryption tasks.")]),t._v(" "),s("h3",{attrs:{id:"overview"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),s("p",[t._v("KBAC has the following components:")]),t._v(" "),s("ol",[s("li",[t._v("A "),s("strong",[t._v("permission system")]),t._v(" that defines what operations an individual or system can perform on any object in CaSS.")]),t._v(" "),s("li",[t._v("An "),s("strong",[t._v("encryption-based enforcement system")]),t._v(" that enables end-to-end encryption. Cryptographic techniques are used to grant and deny read permissions and to validate the authenticity of objects or fields.")]),t._v(" "),s("li",[t._v("A set of "),s("strong",[t._v("conformance criteria")]),t._v(" (with various levels of conformance) that ensure that a conforming system follows adequate security procedures and respects permissions, including those that cannot be enforced via encryption.")])]),t._v(" "),s("p",[t._v("KBAC assumes that objects are expressed in JSON-LD and adds fields and encryption to these objects to accomplish 1 and 2. KBAC does not specify how and where JSON-LD objects are stored or transmitted but is compatible with "),s("em",[t._v("NoSQL")]),t._v(" and "),s("em",[t._v("SQL")]),t._v(" databases, with systems that store JSON-LD as objects in a document object model, and with both secure and insecure data transmission protocols (e.g. HTTP and HTTPS). CaSS instances (installed using the code available on GitHub) store objects in a NoSQL database as JSON-LD with KBAC extensions and encryption and conform to the policy requirements of KBAC.")]),t._v(" "),s("h2",{attrs:{id:"specification"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#specification"}},[t._v("#")]),t._v(" Specification")]),t._v(" "),s("h3",{attrs:{id:"encodings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#encodings"}},[t._v("#")]),t._v(" Encodings")]),t._v(" "),s("p",[t._v("In "),s("a",{attrs:{href:"https://www.json.org/json-en.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON"),s("OutboundLink")],1),t._v(', a string is a "'),s("em",[t._v("a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes.")]),t._v('" CaSS uses '),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/UTF-8",target:"_blank",rel:"noopener noreferrer"}},[t._v("UTF-8 encodings"),s("OutboundLink")],1),t._v(" of unicode characters. When necessary, "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Base64",target:"_blank",rel:"noopener noreferrer"}},[t._v("Base64 encoding"),s("OutboundLink")],1),t._v(" is used to convert sequences of bytes into strings.")]),t._v(" "),s("h3",{attrs:{id:"entities-and-identities"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#entities-and-identities"}},[t._v("#")]),t._v(" Entities and Identities")]),t._v(" "),s("p",[t._v("In KBAC, an "),s("strong",[t._v("Entity")]),t._v(" refers to a "),s("em",[t._v("person, organization, group,")]),t._v(" or "),s("em",[t._v("system")]),t._v(".")]),t._v(" "),s("p",[t._v("KBAC assigns identities to entities. KBAC assumes that real-world identities are defined and managed external to CaSS, e.g. via a "),s("strong",[t._v("Single Sign On (SSO)")]),t._v(" system, an enterprise directory service, "),s("strong",[t._v("OAUTH")]),t._v(", or some other means. In CaSS, an identity for an entity is a pair consisting of a public and private key in the sense of Public Key Infrastructure (PKI).")]),t._v(" "),s("p",[t._v("In this document's notation:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("publickey(entity)")]),t._v(" represents the public key portion of the identity (also called an "),s("strong",[t._v("Identifier")]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("identity(entity)")]),t._v(" represents the public/private key pair (also called the "),s("strong",[t._v("Identity")]),t._v(")")])]),t._v(" "),s("p",[t._v("CaSS should not store any identities that include PII.")]),t._v(" "),s("h3",{attrs:{id:"groups"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#groups"}},[t._v("#")]),t._v(" Groups")]),t._v(" "),s("p",[t._v("Identities can belong to groups. Groups are also representable by identities. CaSS assumes that an external service can validate whether an identity belongs to a given group.")]),t._v(" "),s("h3",{attrs:{id:"aes-encryption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#aes-encryption"}},[t._v("#")]),t._v(" AES encryption")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Advanced_Encryption_Standard",target:"_blank",rel:"noopener noreferrer"}},[t._v("AES encryption"),s("OutboundLink")],1),t._v(" (or AES) refers to the Advanced Encryption Standard as established by the "),s("a",{attrs:{href:"https://www.nist.gov/",target:"_blank",rel:"noopener noreferrer"}},[t._v("National Institute of Standards (NIST)"),s("OutboundLink")],1),t._v(". When applying KBAC, the same AES implementation should be used whenever encrypting or decrypting data. CaSS uses "),s("strong",[t._v("AES-256-CTR")]),t._v(" as defined in "),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc3686",target:"_blank",rel:"noopener noreferrer"}},[t._v("IETF RFC3686"),s("OutboundLink")],1),t._v(". This implementation uses a 32-byte secret that is separate from a 32-byte "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Initialization_vector",target:"_blank",rel:"noopener noreferrer"}},[t._v("initialization vector"),s("OutboundLink")],1),t._v(". In this document we will represent AES as two functions:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("ciphertext = aesEncrypt(plaintext, secret, iv)\nplaintext = aesDecrypt(ciphertext, secret, iv)\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),s("p",[t._v("Though plaintext will usually be a string, any ordered sequence of bytes may be passed in")])]),t._v(" "),s("h3",{attrs:{id:"rsa-encryption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rsa-encryption"}},[t._v("#")]),t._v(" RSA encryption")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://en.wikipedia.org/wiki/RSA_(cryptosystem)",target:"_blank",rel:"noopener noreferrer"}},[t._v("RSA encryption"),s("OutboundLink")],1),t._v(" refers to the asymmetric RSA encryption algorithm. CaSS uses a 2048-bit version of "),s("a",{attrs:{href:"https://www.inf.pucrs.br/~calazans/graduate/TPVLSI_I/RSA-oaep_spec.pdf",target:"_blank",rel:"noopener noreferrer"}},[t._v("RSA-OAEP"),s("OutboundLink")],1),t._v(" for encryption and decryption, and SHA1 with RSA for signing and verification. In this document we will represent the functions relevant to RSA encryption as:")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("new unique public and private key pair = generateKeys()\nprivatekey = private key from PPK = privateKey(PPK)\npublickey = public key from PPK = publicKey(PPK)\nciphertext generated by applying RSA to plaintext (< 256 bytes) = rsaEncrypt(plaintext, privatekey)\nplaintext = rsaDecrypt(ciphertext, publickey)\nsignature = rsaSign(plaintext, privatekey)`\nrsaVerify(signature, publickey) is true ⇔ rsaSign(signature, publickey) is an identifiable signature that conforms to an agreed-upon format for signatures.\n")])])]),s("h3",{attrs:{id:"cryptographic-encodings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cryptographic-encodings"}},[t._v("#")]),t._v(" Cryptographic Encodings")]),t._v(" "),s("p",[t._v("Cryptographic objects shall be encoded in the following fashions prior to storage in JSON:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("object")]),t._v(" "),s("th",[t._v("encoding")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("secret")]),t._v(" "),s("td",[t._v("Base64")])]),t._v(" "),s("tr",[s("td",[t._v("iv")]),t._v(" "),s("td",[t._v("Base64")])]),t._v(" "),s("tr",[s("td",[t._v("privatekey")]),t._v(" "),s("td",[t._v("PKCS#8 encoding with whitespace removed")])]),t._v(" "),s("tr",[s("td",[t._v("publickey")]),t._v(" "),s("td",[t._v("PEM encoded SubjectPublicKeyInfo with whitespace removed")])]),t._v(" "),s("tr",[s("td",[t._v("ciphertext")]),t._v(" "),s("td",[t._v("Base64")])]),t._v(" "),s("tr",[s("td",[t._v("signature")]),t._v(" "),s("td",[t._v("SHA1 encoding before signature creation, Base64 encoding of the signature.")])])])]),t._v(" "),s("h3",{attrs:{id:"kbac-components"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kbac-components"}},[t._v("#")]),t._v(" KBAC Components")]),t._v(" "),s("p",[t._v("A KBAC-conformant object should implement the following JSON-LD fields, if applicable:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("@context")])]),t._v(" "),s("li",[s("code",[t._v("@type")])]),t._v(" "),s("li",[s("code",[t._v("@id")])])]),t._v(" "),s("p",[t._v("Definitions can be found in the "),s("a",{attrs:{href:"https://json-ld.org/spec/ED/json-ld-syntax/20120522/#syntax-tokens-and-keywords",target:"_blank",rel:"noopener noreferrer"}},[t._v("JSON-LD Specification"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("A KBAC-conformant JSON-LD object may contain the following fields:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("@owner")]),t._v(" "),s("ul",[s("li",[t._v("The public keys of entities who are allowed to edit or delete the object.")])])]),t._v(" "),s("li",[s("code",[t._v("@reader")]),t._v(" "),s("ul",[s("li",[t._v("The public keys of entities who are allowed to discover or read the object if the object is encrypted.")])])]),t._v(" "),s("li",[s("code",[t._v("@signature")]),t._v(" "),s("ul",[s("li",[t._v("A cryptographic signature that can be decrypted and validated using the public keys of identities listed in "),s("code",[t._v("@owner")]),t._v(" or "),s("code",[t._v("@reader")]),t._v(". (The ability to decrypt a signature with one of these public keys is prima facie evidence that the corresponding identity created the signature.)")])])])]),t._v(" "),s("p",[t._v("Each of these fields shall, in its natural state, be an array.")]),t._v(" "),s("h3",{attrs:{id:"kbac-identifiers"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kbac-identifiers"}},[t._v("#")]),t._v(" KBAC Identifiers")]),t._v(" "),s("p",[t._v("A KBAC-conformant URL shall be a resolvable URL ("),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc1738",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC 1738"),s("OutboundLink")],1),t._v(", "),s("a",{attrs:{href:"https://tools.ietf.org/html/rfc3986",target:"_blank",rel:"noopener noreferrer"}},[t._v("3986"),s("OutboundLink")],1),t._v(", etc.) composed of the following parts:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("protocol")]),t._v(" "),s("ul",[s("li",[t._v("http:// or https://")])])]),t._v(" "),s("li",[s("strong",[t._v("endpoint")]),t._v(" "),s("ul",[s("li",[t._v("hostname and path")])])]),t._v(" "),s("li",[s("strong",[t._v("type")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("@context")]),t._v(" + "),s("code",[t._v("@type")]),t._v(" with protocol removed and all sequences of symbols replaced with dots.\n"),s("ul",[s("li",[t._v("ex: "),s("code",[t._v("http://schema.cassproject.org/0.2/competency")]),t._v(" -> "),s("code",[t._v("schema.cassproject.org.0.2.competency")])])])])])]),t._v(" "),s("li",[s("strong",[t._v("unique identifier")]),t._v(" "),s("ul",[s("li",[t._v("May be a randomly generated GUID")]),t._v(" "),s("li",[t._v("May be a canonical identifier with at least one letter or symbol.")])])]),t._v(" "),s("li",[s("strong",[t._v("version")]),t._v(" "),s("em",[t._v("optional")]),t._v(" "),s("ul",[s("li",[t._v("Time the object was last modified in milliseconds since the epoch.")])])])]),t._v(" "),s("p",[t._v("When the version is omitted, the URL refers to the most recent version of the object.")]),t._v(" "),s("h2",{attrs:{id:"types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[t._v("#")]),t._v(" Types")]),t._v(" "),s("h3",{attrs:{id:"example-type-file"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-type-file"}},[t._v("#")]),t._v(" Example Type -- File")]),t._v(" "),s("p",[t._v("A functional example of a JSON-LD File object follows:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/general/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"file"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey1)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey2)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mimeType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"owners-and-signatures"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#owners-and-signatures"}},[t._v("#")]),t._v(" Owners and Signatures")]),t._v(" "),s("p",[t._v("The algorithm to annotate a JSON-LD object follows:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@reader"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("publickey4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey1)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n rsaSign(toSignableObject(this)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("privatekey2)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The algorithm to prepare an object for signing follows:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n remove from object the fields"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n Serialize to "),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("with")]),t._v(" zero whitespace "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("with")]),t._v(" fields "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("ASCII")]),t._v(" order"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n")])])]),s("p",[t._v("To verify an object:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signature1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("To sign an object:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" privatekey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),s("p",[t._v("If an object is annotated with KBAC fields and being stored in a repository, the system storing the object:")]),t._v(" "),s("ol",[s("li",[t._v("Must provide a signatureSheet with a valid signature for at least one owner.")]),t._v(" "),s("li",[t._v("Must remove all invalid signatures.")]),t._v(" "),s("li",[t._v("Should append at least one valid signature to the object.")])]),t._v(" "),s("p",[t._v("The repository the object is being stored in:")]),t._v(" "),s("ol",[s("li",[t._v("Must validate all SignatureSheetSignatures in the SignatureSheet by:\n"),s("ul",[s("li",[t._v("Ensuring the expiry timestamp has not elapsed.")]),t._v(" "),s("li",[t._v("Ensuring that the server url pertains to this machine and, if it specifies an object identifier, the object being stored.")]),t._v(" "),s("li",[t._v("Ensuring the signature of the SignatureSheetSignature is valid.")])])]),t._v(" "),s("li",[t._v("If the object is being modified, must have at least one SignatureSheetSignature common with the unmodified object’s owner.")]),t._v(" "),s("li",[t._v("Must validate any signatures provided with the object.")])]),t._v(" "),s("p",[t._v("Any failure of any of these criteria shall result in an error.")]),t._v(" "),s("h3",{attrs:{id:"signaturesheetsignature"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaturesheetsignature"}},[t._v("#")]),t._v(" SignatureSheetSignature")]),t._v(" "),s("p",[t._v("A SignatureSheetSignature has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"expiry"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" long"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (unix timestamp)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"server"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" url\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("And is generated by:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createSignatureSheetSignature")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("expiryMilliseconds")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TimeLimitedSignature"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("publickey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("privatekey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"expiry"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("nowInUnixTime")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("expiryMilliseconds"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"server"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" serverUrl\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object remove @signature"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @signature1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @owner1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n expiry "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("nowInUnixTime")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("startsWith")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("server"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"signaturesheet"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#signaturesheet"}},[t._v("#")]),t._v(" SignatureSheet")]),t._v(" "),s("p",[t._v("A signature sheet is an array of SignatureSheetSignature:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("signatureSheetSignature1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheetSignature2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("h3",{attrs:{id:"encryptedvalue"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#encryptedvalue"}},[t._v("#")]),t._v(" EncryptedValue")]),t._v(" "),s("p",[t._v("EncryptedValue is an object that stores encrypted data. It has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@encryptedType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" @context + @type of the object encrypted. Optional.\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"secret"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("secret1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"payload"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" ciphertext\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The following function specifies the object used to store a secret, iv, and other data for encryption:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encryptedSecret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"s"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"f"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"v"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"d"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toEncryptedValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EncryptedValue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@encryptedType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@reader"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("publickey1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("publickey2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"secret"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encryptedSecret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @owner1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("encryptedSecret")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" field"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" @reader1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"payload"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Additionally:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Secret")]),t._v(" and "),s("strong",[t._v("IV")]),t._v(" should be randomly generated.")]),t._v(" "),s("li",[t._v("If "),s("code",[t._v("toEncryptedValue")]),t._v(" is encrypting an object, the value shall be the serialized object and field shall be omitted.")]),t._v(" "),s("li",[t._v("If "),s("code",[t._v("toEncryptedValue")]),t._v(" is encrypting a field of an object, the value shall be the value of the field, and field shall be the JSONPath dot-and-bracket notation of the field’s location.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromEncryptedValue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("ppk1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("ppk2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" all i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" j"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"secret"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" stop on first decryption that results "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" a valid "),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("JSON")]),t._v(" object\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n obj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"plaintext"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("secretj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("privatekey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppki"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"s"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("secretj"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("privatekey")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppki"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"v"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" the result "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("of")]),t._v(" above"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("A repository must strip any EncryptedValue objects from search or get results if:")]),t._v(" "),s("ol",[s("li",[t._v("A signatureSheet is not provided with the request.")]),t._v(" "),s("li",[t._v("A signatureSheetSignature is invalid (based on the criteria given previously).")]),t._v(" "),s("li",[t._v("A signatureSheetSignature does not provide a public key matching a key in the @reader or @owner fields of the result under consideration.")])]),t._v(" "),s("h2",{attrs:{id:"identity-server-types-and-operations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#identity-server-types-and-operations"}},[t._v("#")]),t._v(" Identity Server, Types and Operations")]),t._v(" "),s("p",[t._v("It is common to use usernames and passwords in order to provide access to a system. In KBAC, a username and password may be used to store and retrieve credentials from a repository. The following types, functions and requirements provide a method of storing credentials in an encrypted fashion.")]),t._v(" "),s("h3",{attrs:{id:"credential"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#credential"}},[t._v("#")]),t._v(" Credential")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("Credential")]),t._v(" object stores a private key in an encrypted form and has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ppk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Additionally:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("Iv")]),t._v(" should be regenerated any time the value of ppk is changed.")]),t._v(" "),s("li",[s("code",[t._v("displayNameIv")]),t._v(" should be regenerated any time displayName is changed.")])]),t._v(" "),s("p",[t._v("A functional definition follows:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredential")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Credential"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"ppk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pem")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"contact"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contact"}},[t._v("#")]),t._v(" Contact")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("Contact")]),t._v(" stores a public key in an encrypted form. It has the following fields:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"sourceIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"source"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" string\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("A functional definition follows:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createContact")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" sourceIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" source")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Contact"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"iv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" iv\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"pk"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pem")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayNameIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" displayNameIv\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"displayName"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"sourceIv"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" displayNameIv\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"source"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("source"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("sourceIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"credentials"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#credentials"}},[t._v("#")]),t._v(" Credentials")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("Credentials")]),t._v(" object stores public and private keys in an encrypted form. It has the following functional definition:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentials")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("Credential"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Contact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pad"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" token")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Contact"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Optional */")]),t._v(" token"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"credentials"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" Credential"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"contacts"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" Contact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"hashing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hashing"}},[t._v("#")]),t._v(" Hashing")]),t._v(" "),s("p",[t._v("The storage and retrieval of user credentials uses hashing. Each repository should generate a random hash, and systems using that repository should retrieve the following from the repository: the hash, the number of hashing iterations, and the length of the hash result.")]),t._v(" "),s("p",[t._v("In CaSS, "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/PBKDF2",target:"_blank",rel:"noopener noreferrer"}},[t._v("PBKDF2"),s("OutboundLink")],1),t._v(" using an "),s("strong",[t._v("HMAC SHA-1")]),t._v(" hash is used for hashing user credentials, defined by the following parameters and function:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Value")]),t._v(": string")]),t._v(" "),s("li",[s("strong",[t._v("Salt")]),t._v(": string")]),t._v(" "),s("li",[s("strong",[t._v("Iterations")]),t._v(": integer")]),t._v(" "),s("li",[s("strong",[t._v("Width")]),t._v(": integer, length of the resultant hash in bytes")])]),t._v(" "),s("p",[t._v("Additionally:")]),t._v(" "),s("ul",[s("li",[t._v("The number of iterations should be at least 5000.")]),t._v(" "),s("li",[t._v("The width of the result should be at least 32 bytes.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("hash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("value"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" salt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" iterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" width"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h3",{attrs:{id:"operations"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#operations"}},[t._v("#")]),t._v(" Operations")]),t._v(" "),s("h4",{attrs:{id:"prepare"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prepare"}},[t._v("#")]),t._v(" Prepare")]),t._v(" "),s("p",[t._v("The following function may be used to splice strings.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("splice")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("strings")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("let")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/*\n for all strings i and character positions j:\n [stringi,j,stringi+1,j,stringi+2,j,...] + [stringi,j+1,stringi+1,j+1,stringi+2,j+1] + ...\n */")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("Any non-displayable characters are omitted.")]),t._v(" "),s("p",[t._v("Given the following:")]),t._v(" "),s("ul",[s("li",[t._v("Username")]),t._v(" "),s("li",[t._v("Password")]),t._v(" "),s("li",[t._v("UsernameSalt")]),t._v(" "),s("li",[t._v("PasswordSalt")]),t._v(" "),s("li",[t._v("SecretSalt")]),t._v(" "),s("li",[t._v("UsernameIterations")]),t._v(" "),s("li",[t._v("PasswordIterations")]),t._v(" "),s("li",[t._v("SecretIterations")]),t._v(" "),s("li",[t._v("UsernameWidth")]),t._v(" "),s("li",[t._v("PasswordWidth")]),t._v(" "),s("li",[t._v("SecretWidth")])]),t._v(" "),s("p",[t._v("The following functions hash a username and password, and provide a secret used to encrypt credentials:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("usernameHash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" usernameSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" usernameIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" usernameWidth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\npasswordHash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordWidth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsecretHash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("splice")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("username"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretWidth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[s("em",[t._v("secretHash")]),t._v(" is used as the secret in the encryption and decryption of Credential and Contact objects.")]),t._v(" "),s("h4",{attrs:{id:"fetch"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fetch"}},[t._v("#")]),t._v(" Fetch")]),t._v(" "),s("p",[t._v("To fetch a credential package from a server, construct a "),s("code",[t._v("CredentialRequest")]),t._v(" with the following functional definition:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentialRequest")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("usernameHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordHash")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CredentialRequest"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" usernameHash\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"password"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" passwordHash\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The submission of this request to a server should occur over HTTPS. The response will be a Credentials object.")]),t._v(" "),s("p",[t._v("On the server side, the repository must:")]),t._v(" "),s("ul",[s("li",[t._v("Create or Load "),s("em",[t._v("serverUrl, serverPpk, serverSecret, serverSalt, serverIterations, serverWidth")])])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("saltedId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("request")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pbkdf2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverSalt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverIterations"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverWidth\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetchResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("request")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesDecrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/*\n fetch encryptedValue WHERE\n @id = request["username"] AND\n rsaDecrypt(\n encryptedValue["payload"],\n serverSecret,\n saltedId\n )["password"] = request["password"]\n */')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('/* Then replace credentials["token"] with a new random token. */')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Store the credentials with the new token in the same fashion as commitResponse. */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Return the result. */")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"store"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#store"}},[t._v("#")]),t._v(" Store")]),t._v(" "),s("p",[t._v("To store a credential package in an identity server, create a "),s("code",[t._v("CredentialCommit")]),t._v(" using the following functional definition:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentialCommit")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("usernameHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" passwordHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" token"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Credentials"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Contacts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CredentialCommit"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"username"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" usernameHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"password"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" passwordHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" token"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"credentials"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredentials")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Credentials"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" Contacts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" secretHash"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Credentials")]),t._v(" and "),s("strong",[t._v("Contacts")]),t._v(" should be created through the following parameterization:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createCredential")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// secretHash,")]),t._v("\n iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv,")]),t._v("\n ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Ppk of the user,")]),t._v("\n displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv,")]),t._v("\n displayName "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Display name for the user")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createContact")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Pk of the contact")]),t._v("\n secret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// secretHash")]),t._v("\n iv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv")]),t._v("\n displayNameIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv")]),t._v("\n sourceIv"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Random iv")]),t._v("\n displayName"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Display name of the contact")]),t._v("\n source"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Home server of the contact")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("...")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("The submission of this request to a server should occur over HTTPS. The response will be a confirmation or error string.")]),t._v(" "),s("p",[t._v("The repository, upon receiving a credentialCommit shall:")]),t._v(" "),s("ul",[s("li",[t._v("Create or Load "),s("em",[t._v("serverUrl, serverPpk, serverSecret, serverSalt, serverIterations, serverWidth")])]),t._v(" "),s("li",[t._v("Execute the following functional definition:")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("commitResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isSuccessful")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetchResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetchResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"token"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" signatureSheet "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("createSignatureSheetSignature")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serverPpk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" obj "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.cassproject.org/kbac/0.2/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EncryptedValue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pkFromPpk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("serverPpk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaSign")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverPpk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"plaintext"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("aesEncrypt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("request"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Store obj at saltedId(request) using signatureSheet */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"repository"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#repository"}},[t._v("#")]),t._v(" Repository")]),t._v(" "),s("p",[t._v("A KBAC repository is a "),s("strong",[t._v("REST-based")]),t._v(" repository, with its reference implementation built in "),s("strong",[t._v("LEVR")]),t._v(" using "),s("strong",[t._v("ElasticSearch")]),t._v(" for discovery, but may be implemented using different methods in different storage mediums such as "),s("em",[t._v("relational databases")]),t._v(", "),s("em",[t._v("triple stores")]),t._v(", or as "),s("em",[t._v("static files")]),t._v(".")]),t._v(" "),s("p",[t._v("The repository must follow these rules:")]),t._v(" "),s("ul",[s("li",[t._v("Search or Read requests shall hide "),s("code",[t._v("EncryptedValue")]),t._v(" objects if an owner or reader signature is not provided in a signature sheet and validated.")]),t._v(" "),s("li",[t._v("Objects may only be stored if a signature is provided that validates the written object.")]),t._v(" "),s("li",[t._v("Before writing an object to a repository, the repository shall ensure that a valid signature has been provided in a signature sheet that matches one of the owners provided in the object in the repository (if an object exists in the repository), and that the signature in the object is valid.")]),t._v(" "),s("li",[t._v("Before deleting an object from a repository, the repository shall ensure that a valid signature in a signature sheet has been provided and matches an owner of the object in the repository.")])]),t._v(" "),s("h3",{attrs:{id:"web-service-operation-pseudocode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#web-service-operation-pseudocode"}},[t._v("#")]),t._v(" Web Service Operation Pseudocode")]),t._v(" "),s("h4",{attrs:{id:"filter"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#filter"}},[t._v("#")]),t._v(" Filter")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("filter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("let")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("++")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Remove result[i] and its children */")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@type "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EncryptedValue"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" decryptable "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheet"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("result"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Unable to decrypt?")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("decryptable "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Delete result[i]; */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n remove from\n result0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n\n resultn and children "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("of")]),t._v(" resultn "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("where")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resultn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@type "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!==")]),t._v(" EncryptedValue unless\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheet0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("and")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("resultn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"create"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create"}},[t._v("#")]),t._v(" Create")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("create")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* SELECT record FROM store WHERE record.@id = id */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@signature0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Create object.@id = object */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"read"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#read"}},[t._v("#")]),t._v(" Read")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("filter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* SELECT record FROM store WHERE record.@id = id,signatureSheet */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"update"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update"}},[t._v("#")]),t._v(" Update")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("rsaVerify")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toSignableObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@signature0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheet0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" serverUrl"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Store object.@id = object */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("signatureSheetSignatureValid")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("signatureSheets"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("retrieve")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner0"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("j ∩ signatureSheetn"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("@owner"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Delete object.@id */")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h4",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("query"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" signatureSheet")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("filter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* Search for query, signatureSheet */")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/89.7be81469.js.gz b/docs/assets/js/89.cabbbf27.js.gz similarity index 98% rename from docs/assets/js/89.7be81469.js.gz rename to docs/assets/js/89.cabbbf27.js.gz index 676082af5..375cfb723 100644 Binary files a/docs/assets/js/89.7be81469.js.gz and b/docs/assets/js/89.cabbbf27.js.gz differ diff --git a/docs/assets/js/91.bdc660a1.js b/docs/assets/js/91.51e954d9.js similarity index 87% rename from docs/assets/js/91.bdc660a1.js rename to docs/assets/js/91.51e954d9.js index a91d122bd..b3408e32b 100644 --- a/docs/assets/js/91.bdc660a1.js +++ b/docs/assets/js/91.51e954d9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{715:function(t,s,e){"use strict";e.r(s);var a=e(69),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"about"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[this._v("#")]),this._v(" About")]),this._v(" "),t("p",[this._v("These pages offer tutorials for specific use-cases.")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{714:function(t,s,e){"use strict";e.r(s);var a=e(69),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"about"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[this._v("#")]),this._v(" About")]),this._v(" "),t("p",[this._v("These pages offer tutorials for specific use-cases.")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/91.bdc660a1.js.gz b/docs/assets/js/91.51e954d9.js.gz similarity index 61% rename from docs/assets/js/91.bdc660a1.js.gz rename to docs/assets/js/91.51e954d9.js.gz index 9c0cc35c5..fda948f8c 100644 Binary files a/docs/assets/js/91.bdc660a1.js.gz and b/docs/assets/js/91.51e954d9.js.gz differ diff --git a/docs/assets/js/92.036cef60.js b/docs/assets/js/92.fce7a4ef.js similarity index 99% rename from docs/assets/js/92.036cef60.js rename to docs/assets/js/92.fce7a4ef.js index ab88b7331..7e2ca22b3 100644 --- a/docs/assets/js/92.036cef60.js +++ b/docs/assets/js/92.fce7a4ef.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{714:function(t,s,e){"use strict";e.r(s);var a=e(69),n=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"align-assessments-to-competencies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#align-assessments-to-competencies"}},[t._v("#")]),t._v(" Align Assessments to Competencies")]),t._v(" "),s("p",[t._v("The functional alignment of assessment data to competency data requires the following:")]),t._v(" "),s("ol",[s("li",[t._v("A unique identifier for the assessment")]),t._v(" "),s("li",[t._v("A competency to be aligned to")]),t._v(" "),s("li",[t._v("A data pipeline that emits results from the assessment system")]),t._v(" "),s("li",[t._v("An alignment between the assessment and the competency")]),t._v(" "),s("li",[t._v("An adapter that listens for or watches the assessment system for new data and converts it into assertions")])]),t._v(" "),s("p",[t._v("With all requirements satisfied, the following should happen:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment system assesses a learner.")]),t._v(" "),s("li",[t._v("The assessment system emits a record (xAPI or otherwise) that identifies the learner, identifies the assessment or question, and provides a success/failure or score metric.")]),t._v(" "),s("li",[t._v("The assessment adapter receives the record.")]),t._v(" "),s("li",[t._v("The assessment adapter looks for alignments in CaSS by the assessment or question identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter looks up the student in CaSS by the learner’s identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter creates an assertion on behalf of the assessment system that asserts that the assessment system believes the learner holds or does not hold the aligned competency, and optionally provides a confidence based on the score. The assessment system’s record may or may not be attached as evidence.")])]),t._v(" "),s("p",[t._v("Let's dive deeper into each of these requirements.")]),t._v(" "),s("h2",{attrs:{id:"_1-a-unique-identifier-for-the-assessment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-a-unique-identifier-for-the-assessment"}},[t._v("#")]),t._v(" 1. A unique identifier for the assessment")]),t._v(" "),s("p",[t._v("This unique identifier may come from the originating system or may be generated by an intermediate system. For instance, in Moodle, a question emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/question/question.php?cmid=4&id=2")])]),t._v(" "),s("p",[t._v("and an assessment emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/mod/quiz/view.php?id=4")])]),t._v(" "),s("h2",{attrs:{id:"_2-a-competency-to-be-aligned-to"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-a-competency-to-be-aligned-to"}},[t._v("#")]),t._v(" 2. A competency to be aligned to")]),t._v(" "),s("p",[t._v("This competency should reasonably map to the assessment or assessment question. An assessment competency may have multiple competencies underneath it. This means that the assessment will implicitly make a statement about all of the competencies underneath the competency aligned.")]),t._v(" "),s("h2",{attrs:{id:"_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[t._v("#")]),t._v(" 3. A data pipeline that emits results from the assessment system")]),t._v(" "),s("p",[t._v("The data pipeline should emit, as a single record:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment or question ID")]),t._v(" "),s("li",[t._v("An identifier for the individual\n"),s("ul",[s("li",[t._v("This identifier, if an email, maps to a Person Object’s email address "),s("a",{attrs:{href:"https://schema.org/email",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("This identifier, if any other identifier, maps to a Person Object’s identifier "),s("a",{attrs:{href:"https://schema.org/identifier",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)])])]),t._v(" "),s("li",[t._v("A score, which represents pass, fail, or that can be bounded between 0-1")])]),t._v(" "),s("p",[t._v("As an example, here is an xAPI statement that does the above:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"authority"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Eduworks"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:cass@eduworks.com"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"stored"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T15:34:33.406Z"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"actor"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Fritz Ray"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:fritz.ray@eduworks.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"timestamp"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T16:33:34+01:00"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"version"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1.0.0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9f110754-817f-4207-a015-26044c78f436"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"score"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"raw"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.33333")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"min"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"max"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"scaled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0833325")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"completion"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"duration"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PT33S"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"verb"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/verbs/completed"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"display"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"completed"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"definition"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/activities/assessment"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Headset Use"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Activity"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"_4-an-alignment-between-the-assessment-and-the-competency"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_4-an-alignment-between-the-assessment-and-the-competency"}},[t._v("#")]),t._v(" 4. An alignment between the assessment and the competency")]),t._v(" "),s("p",[t._v("A resource or assessment alignment in CaSS looks like this:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreativeWork"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"educationalAlignment"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AlignmentObject"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"alignmentType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"targetUrl"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/data/schema.org.CreativeWork/ca22e231-0dc9-4368-85c7-4e37e96c710d/1525956177976"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("and is created using the following code:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CreativeWork")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (Ensure you have a repo defined in your code)")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("url "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AlignmentObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("alignmentType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("targetUrl "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("The CaSS Dashboard ("),s("strong",[t._v("cass-vlrc")]),t._v(") can do this. Navigate to the competency, click "),s("em",[t._v("Resources")]),t._v(", and use the URL of the assessment or question to create a new Resource.")])]),t._v(" "),s("h2",{attrs:{id:"_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[t._v("#")]),t._v(" 5. An adapter that listens for or watches the assessment system for new data and converts it into assertions")]),t._v(" "),s("p",[t._v("The CaSS "),s("a",{attrs:{href:"/dev/extending-cass/adapters/xapi"}},[t._v("xAPI Adapter")]),t._v(" does this.")]),t._v(" "),s("p",[t._v("Other CaSS adapters could be created that do this, as well as other code that can use the CaSS Library. To see details about how the CaSS xAPI Adapter does this, you can read the code "),s("a",{attrs:{href:"https://github.com/cassproject/CASS/blob/master/src/main/resources/c-adapter/xapi/xapi.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{715:function(t,s,e){"use strict";e.r(s);var a=e(69),n=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"align-assessments-to-competencies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#align-assessments-to-competencies"}},[t._v("#")]),t._v(" Align Assessments to Competencies")]),t._v(" "),s("p",[t._v("The functional alignment of assessment data to competency data requires the following:")]),t._v(" "),s("ol",[s("li",[t._v("A unique identifier for the assessment")]),t._v(" "),s("li",[t._v("A competency to be aligned to")]),t._v(" "),s("li",[t._v("A data pipeline that emits results from the assessment system")]),t._v(" "),s("li",[t._v("An alignment between the assessment and the competency")]),t._v(" "),s("li",[t._v("An adapter that listens for or watches the assessment system for new data and converts it into assertions")])]),t._v(" "),s("p",[t._v("With all requirements satisfied, the following should happen:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment system assesses a learner.")]),t._v(" "),s("li",[t._v("The assessment system emits a record (xAPI or otherwise) that identifies the learner, identifies the assessment or question, and provides a success/failure or score metric.")]),t._v(" "),s("li",[t._v("The assessment adapter receives the record.")]),t._v(" "),s("li",[t._v("The assessment adapter looks for alignments in CaSS by the assessment or question identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter looks up the student in CaSS by the learner’s identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter creates an assertion on behalf of the assessment system that asserts that the assessment system believes the learner holds or does not hold the aligned competency, and optionally provides a confidence based on the score. The assessment system’s record may or may not be attached as evidence.")])]),t._v(" "),s("p",[t._v("Let's dive deeper into each of these requirements.")]),t._v(" "),s("h2",{attrs:{id:"_1-a-unique-identifier-for-the-assessment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-a-unique-identifier-for-the-assessment"}},[t._v("#")]),t._v(" 1. A unique identifier for the assessment")]),t._v(" "),s("p",[t._v("This unique identifier may come from the originating system or may be generated by an intermediate system. For instance, in Moodle, a question emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/question/question.php?cmid=4&id=2")])]),t._v(" "),s("p",[t._v("and an assessment emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/mod/quiz/view.php?id=4")])]),t._v(" "),s("h2",{attrs:{id:"_2-a-competency-to-be-aligned-to"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-a-competency-to-be-aligned-to"}},[t._v("#")]),t._v(" 2. A competency to be aligned to")]),t._v(" "),s("p",[t._v("This competency should reasonably map to the assessment or assessment question. An assessment competency may have multiple competencies underneath it. This means that the assessment will implicitly make a statement about all of the competencies underneath the competency aligned.")]),t._v(" "),s("h2",{attrs:{id:"_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[t._v("#")]),t._v(" 3. A data pipeline that emits results from the assessment system")]),t._v(" "),s("p",[t._v("The data pipeline should emit, as a single record:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment or question ID")]),t._v(" "),s("li",[t._v("An identifier for the individual\n"),s("ul",[s("li",[t._v("This identifier, if an email, maps to a Person Object’s email address "),s("a",{attrs:{href:"https://schema.org/email",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("This identifier, if any other identifier, maps to a Person Object’s identifier "),s("a",{attrs:{href:"https://schema.org/identifier",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)])])]),t._v(" "),s("li",[t._v("A score, which represents pass, fail, or that can be bounded between 0-1")])]),t._v(" "),s("p",[t._v("As an example, here is an xAPI statement that does the above:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"authority"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Eduworks"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:cass@eduworks.com"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"stored"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T15:34:33.406Z"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"actor"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Fritz Ray"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:fritz.ray@eduworks.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"timestamp"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T16:33:34+01:00"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"version"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1.0.0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9f110754-817f-4207-a015-26044c78f436"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"score"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"raw"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.33333")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"min"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"max"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"scaled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0833325")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"completion"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"duration"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PT33S"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"verb"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/verbs/completed"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"display"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"completed"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"definition"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/activities/assessment"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Headset Use"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Activity"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"_4-an-alignment-between-the-assessment-and-the-competency"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_4-an-alignment-between-the-assessment-and-the-competency"}},[t._v("#")]),t._v(" 4. An alignment between the assessment and the competency")]),t._v(" "),s("p",[t._v("A resource or assessment alignment in CaSS looks like this:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreativeWork"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"educationalAlignment"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AlignmentObject"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"alignmentType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"targetUrl"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/data/schema.org.CreativeWork/ca22e231-0dc9-4368-85c7-4e37e96c710d/1525956177976"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("and is created using the following code:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CreativeWork")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (Ensure you have a repo defined in your code)")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("url "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AlignmentObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("alignmentType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("targetUrl "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("The CaSS Dashboard ("),s("strong",[t._v("cass-vlrc")]),t._v(") can do this. Navigate to the competency, click "),s("em",[t._v("Resources")]),t._v(", and use the URL of the assessment or question to create a new Resource.")])]),t._v(" "),s("h2",{attrs:{id:"_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[t._v("#")]),t._v(" 5. An adapter that listens for or watches the assessment system for new data and converts it into assertions")]),t._v(" "),s("p",[t._v("The CaSS "),s("a",{attrs:{href:"/dev/extending-cass/adapters/xapi"}},[t._v("xAPI Adapter")]),t._v(" does this.")]),t._v(" "),s("p",[t._v("Other CaSS adapters could be created that do this, as well as other code that can use the CaSS Library. To see details about how the CaSS xAPI Adapter does this, you can read the code "),s("a",{attrs:{href:"https://github.com/cassproject/CASS/blob/master/src/main/resources/c-adapter/xapi/xapi.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/92.036cef60.js.gz b/docs/assets/js/92.fce7a4ef.js.gz similarity index 96% rename from docs/assets/js/92.036cef60.js.gz rename to docs/assets/js/92.fce7a4ef.js.gz index a19109125..dac3e4b17 100644 Binary files a/docs/assets/js/92.036cef60.js.gz and b/docs/assets/js/92.fce7a4ef.js.gz differ diff --git a/docs/assets/js/95.33c6f6cf.js.gz b/docs/assets/js/95.33c6f6cf.js.gz deleted file mode 100644 index 49c62af94..000000000 Binary files a/docs/assets/js/95.33c6f6cf.js.gz and /dev/null differ diff --git a/docs/assets/js/95.33c6f6cf.js b/docs/assets/js/95.84304e54.js similarity index 99% rename from docs/assets/js/95.33c6f6cf.js rename to docs/assets/js/95.84304e54.js index 459a605c6..698f8b530 100644 --- a/docs/assets/js/95.33c6f6cf.js +++ b/docs/assets/js/95.84304e54.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{718:function(e,t,a){"use strict";a.r(t);var r=a(69),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"interoperability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#interoperability"}},[e._v("#")]),e._v(" Interoperability")]),e._v(" "),t("h2",{attrs:{id:"import-export"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#import-export"}},[e._v("#")]),e._v(" Import / Export")]),e._v(" "),t("p",[e._v("CaSS can interoperate with the following formats.")]),e._v(" "),t("p",[e._v("In CaSS, we distinguish between Importing and Registering frameworks and competencies. Importing creates a copy of a resource, changing the URI of the resource and assigning ownership to the importer. Registering acts more like a carbon copy, where all data is preserved (though the schema and format may change), including the URI. Registered objects are not intended to be modified.")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[t("strong",[e._v("Schema")])]),e._v(" "),t("th",[t("strong",[e._v("Format")])]),e._v(" "),t("th",[t("strong",[e._v("Import")])]),e._v(" "),t("th",[t("strong",[e._v("Register")])]),e._v(" "),t("th",[t("strong",[e._v("Export")])])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("CaSS")]),e._v(" "),t("td",[e._v("JSON-LD (native)")]),e._v(" "),t("td",[e._v("Yes")]),e._v(" "),t("td",[e._v("Yes")]),e._v(" "),t("td",[e._v("Yes")])]),e._v(" "),t("tr",[t("td",[e._v("CaSS")]),e._v(" "),t("td",[e._v("Turtle, nQuads, RDF/XML")]),e._v(" "),t("td",[e._v("Coming Soon")]),e._v(" "),t("td",[e._v("No")]),e._v(" "),t("td",[e._v("Yes (0.3)")])]),e._v(" "),t("tr",[t("td",[e._v("None")]),e._v(" "),t("td",[e._v("CSV")]),e._v(" "),t("td",[e._v("Yes (0.2)")]),e._v(" "),t("td",[e._v("Yes (0.3)")]),e._v(" "),t("td",[e._v("Yes (0.2)")])]),e._v(" "),t("tr",[t("td",[e._v("ASN")]),e._v(" "),t("td",[e._v("RDF/XML")]),e._v(" "),t("td",[e._v("Prototype (0.2)")]),e._v(" "),t("td",[e._v("Yes (0.3)")]),e._v(" "),t("td",[e._v("Yes (0.3)")])]),e._v(" "),t("tr",[t("td",[e._v("CTDL+ASN")]),e._v(" "),t("td",[e._v("JSON-LD")]),e._v(" "),t("td",[e._v("Yes (0.4)")]),e._v(" "),t("td",[e._v("Yes (0.4)")]),e._v(" "),t("td",[e._v("Yes (0.3)")])]),e._v(" "),t("tr",[t("td",[e._v("Medbiquitous")]),e._v(" "),t("td",[e._v("XML")]),e._v(" "),t("td",[e._v("Prototype (0.2)")]),e._v(" "),t("td",[e._v("Coming Soon")]),e._v(" "),t("td",[e._v("Coming Soon")])]),e._v(" "),t("tr",[t("td",[e._v("IMS CASE")]),e._v(" "),t("td",[e._v("JSON")]),e._v(" "),t("td",[e._v("Yes (0.4)")]),e._v(" "),t("td",[e._v("Prototype (0.3)")]),e._v(" "),t("td",[e._v("Yes (0.4)")])])])]),e._v(" "),t("h2",{attrs:{id:"library-integration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#library-integration"}},[e._v("#")]),e._v(" Library Integration")]),e._v(" "),t("p",[e._v("CaSS Libraries enable object models from other Open Linked Data providers.")]),e._v(" "),t("p",[t("strong",[e._v("Credential Transparency Description Language")])]),e._v(" "),t("ul",[t("li",[e._v("CaSS Libraries include the CTDL data model, and enable its use in CaSS enabled applications.")])]),e._v(" "),t("p",[t("strong",[e._v("Schema.org")])]),e._v(" "),t("ul",[t("li",[e._v("CaSS Libraries include the Schema.org data model, and enable its use in CaSS enabled applications.")])]),e._v(" "),t("h2",{attrs:{id:"adapters-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adapters-overview"}},[e._v("#")]),e._v(" Adapters Overview")]),e._v(" "),t("p",[e._v("CaSS Adapters are specialized pieces of code that provide interoperability between CaSS and other software. They exist in varying stages of completion, and each feature may be interpreted based on the following legend.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Future:")]),e._v(" Planned feature.")]),e._v(" "),t("li",[t("strong",[e._v("Alpha:")]),e._v(" Proven, requires code and additional configuration of CaSS to enable.")]),e._v(" "),t("li",[t("strong",[e._v("Beta:")]),e._v(" Working with no planned updates. May require code and additional configure to enable.")]),e._v(" "),t("li",[t("strong",[e._v("Release (blank):")]),e._v(" Working with no planned updates. Available for configuration via Competencies.us configuration.")])]),e._v(" "),t("h3",{attrs:{id:"achievement-standards-network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#achievement-standards-network"}},[e._v("#")]),e._v(" Achievement Standards Network")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can transparently operate using Achievement Standards Network formats, and provides endpoints for writing and reading ASN formatted frameworks.")])]),e._v(" "),t("h3",{attrs:{id:"credential-transparency-description-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credential-transparency-description-language"}},[e._v("#")]),e._v(" Credential Transparency Description Language")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can register resources stored in your CaSS instance with the Credential Engine Registry. "),t("em",[e._v("(Beta)")])]),e._v(" "),t("li",[e._v("CaSS can import frameworks in the CTDL-ASN format and schema.")]),e._v(" "),t("li",[e._v("CaSS can represent frameworks natively in the CTDL-ASN format and schema.")]),e._v(" "),t("li",[e._v("CaSS can import CSV spreadsheets that describe CTDL-ASN frameworks and competencies.")])]),e._v(" "),t("h3",{attrs:{id:"ims-competency-and-standards-exchange"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-competency-and-standards-exchange"}},[e._v("#")]),e._v(" IMS Competency and Standards Exchange")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can read and register frameworks stored in a IMS CASE API enabled repository, such as OpenSALT.")]),e._v(" "),t("li",[e._v("CaSS implements the IMS CASE API with the JSON-LD extension.")])]),e._v(" "),t("h3",{attrs:{id:"ims-open-badge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-open-badge"}},[e._v("#")]),e._v(" IMS Open Badge")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can, when populated with profile data (name, email), expose CaSS assertions as Open Badges, and send email to recipients of these badges. "),t("em",[e._v("(Beta)")])])]),e._v(" "),t("h3",{attrs:{id:"moodle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#moodle"}},[e._v("#")]),e._v(" Moodle")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can synchronize competencies to and from a Moodle instance.")]),e._v(" "),t("li",[e._v("CaSS can read statements of competence from Moodle and convert them into Competency Assertions. "),t("em",[e._v("(Future)")])])]),e._v(" "),t("h3",{attrs:{id:"o-net"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#o-net"}},[e._v("#")]),e._v(" O*Net")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can read the O*NET API and harvest Skills, Knowledge, Abilities, Work Styles, Tasks, Tools, Technologies, Work Activities, and Detailed Work Activities. "),t("em",[e._v("(Alpha)")])])]),e._v(" "),t("h3",{attrs:{id:"xapi"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#xapi"}},[e._v("#")]),e._v(" xAPI")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can monitor an xAPI Learning Record Store and automatically create Competency Assertions when a learner passes xAPI enabled learning activities.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{719:function(e,t,a){"use strict";a.r(t);var r=a(69),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"interoperability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#interoperability"}},[e._v("#")]),e._v(" Interoperability")]),e._v(" "),t("h2",{attrs:{id:"import-export"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#import-export"}},[e._v("#")]),e._v(" Import / Export")]),e._v(" "),t("p",[e._v("CaSS can interoperate with the following formats.")]),e._v(" "),t("p",[e._v("In CaSS, we distinguish between Importing and Registering frameworks and competencies. Importing creates a copy of a resource, changing the URI of the resource and assigning ownership to the importer. Registering acts more like a carbon copy, where all data is preserved (though the schema and format may change), including the URI. Registered objects are not intended to be modified.")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[t("strong",[e._v("Schema")])]),e._v(" "),t("th",[t("strong",[e._v("Format")])]),e._v(" "),t("th",[t("strong",[e._v("Import")])]),e._v(" "),t("th",[t("strong",[e._v("Register")])]),e._v(" "),t("th",[t("strong",[e._v("Export")])])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("CaSS")]),e._v(" "),t("td",[e._v("JSON-LD (native)")]),e._v(" "),t("td",[e._v("Yes")]),e._v(" "),t("td",[e._v("Yes")]),e._v(" "),t("td",[e._v("Yes")])]),e._v(" "),t("tr",[t("td",[e._v("CaSS")]),e._v(" "),t("td",[e._v("Turtle, nQuads, RDF/XML")]),e._v(" "),t("td",[e._v("Coming Soon")]),e._v(" "),t("td",[e._v("No")]),e._v(" "),t("td",[e._v("Yes (0.3)")])]),e._v(" "),t("tr",[t("td",[e._v("None")]),e._v(" "),t("td",[e._v("CSV")]),e._v(" "),t("td",[e._v("Yes (0.2)")]),e._v(" "),t("td",[e._v("Yes (0.3)")]),e._v(" "),t("td",[e._v("Yes (0.2)")])]),e._v(" "),t("tr",[t("td",[e._v("ASN")]),e._v(" "),t("td",[e._v("RDF/XML")]),e._v(" "),t("td",[e._v("Prototype (0.2)")]),e._v(" "),t("td",[e._v("Yes (0.3)")]),e._v(" "),t("td",[e._v("Yes (0.3)")])]),e._v(" "),t("tr",[t("td",[e._v("CTDL+ASN")]),e._v(" "),t("td",[e._v("JSON-LD")]),e._v(" "),t("td",[e._v("Yes (0.4)")]),e._v(" "),t("td",[e._v("Yes (0.4)")]),e._v(" "),t("td",[e._v("Yes (0.3)")])]),e._v(" "),t("tr",[t("td",[e._v("Medbiquitous")]),e._v(" "),t("td",[e._v("XML")]),e._v(" "),t("td",[e._v("Prototype (0.2)")]),e._v(" "),t("td",[e._v("Coming Soon")]),e._v(" "),t("td",[e._v("Coming Soon")])]),e._v(" "),t("tr",[t("td",[e._v("IMS CASE")]),e._v(" "),t("td",[e._v("JSON")]),e._v(" "),t("td",[e._v("Yes (0.4)")]),e._v(" "),t("td",[e._v("Prototype (0.3)")]),e._v(" "),t("td",[e._v("Yes (0.4)")])])])]),e._v(" "),t("h2",{attrs:{id:"library-integration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#library-integration"}},[e._v("#")]),e._v(" Library Integration")]),e._v(" "),t("p",[e._v("CaSS Libraries enable object models from other Open Linked Data providers.")]),e._v(" "),t("p",[t("strong",[e._v("Credential Transparency Description Language")])]),e._v(" "),t("ul",[t("li",[e._v("CaSS Libraries include the CTDL data model, and enable its use in CaSS enabled applications.")])]),e._v(" "),t("p",[t("strong",[e._v("Schema.org")])]),e._v(" "),t("ul",[t("li",[e._v("CaSS Libraries include the Schema.org data model, and enable its use in CaSS enabled applications.")])]),e._v(" "),t("h2",{attrs:{id:"adapters-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adapters-overview"}},[e._v("#")]),e._v(" Adapters Overview")]),e._v(" "),t("p",[e._v("CaSS Adapters are specialized pieces of code that provide interoperability between CaSS and other software. They exist in varying stages of completion, and each feature may be interpreted based on the following legend.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Future:")]),e._v(" Planned feature.")]),e._v(" "),t("li",[t("strong",[e._v("Alpha:")]),e._v(" Proven, requires code and additional configuration of CaSS to enable.")]),e._v(" "),t("li",[t("strong",[e._v("Beta:")]),e._v(" Working with no planned updates. May require code and additional configure to enable.")]),e._v(" "),t("li",[t("strong",[e._v("Release (blank):")]),e._v(" Working with no planned updates. Available for configuration via Competencies.us configuration.")])]),e._v(" "),t("h3",{attrs:{id:"achievement-standards-network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#achievement-standards-network"}},[e._v("#")]),e._v(" Achievement Standards Network")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can transparently operate using Achievement Standards Network formats, and provides endpoints for writing and reading ASN formatted frameworks.")])]),e._v(" "),t("h3",{attrs:{id:"credential-transparency-description-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credential-transparency-description-language"}},[e._v("#")]),e._v(" Credential Transparency Description Language")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can register resources stored in your CaSS instance with the Credential Engine Registry. "),t("em",[e._v("(Beta)")])]),e._v(" "),t("li",[e._v("CaSS can import frameworks in the CTDL-ASN format and schema.")]),e._v(" "),t("li",[e._v("CaSS can represent frameworks natively in the CTDL-ASN format and schema.")]),e._v(" "),t("li",[e._v("CaSS can import CSV spreadsheets that describe CTDL-ASN frameworks and competencies.")])]),e._v(" "),t("h3",{attrs:{id:"ims-competency-and-standards-exchange"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-competency-and-standards-exchange"}},[e._v("#")]),e._v(" IMS Competency and Standards Exchange")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can read and register frameworks stored in a IMS CASE API enabled repository, such as OpenSALT.")]),e._v(" "),t("li",[e._v("CaSS implements the IMS CASE API with the JSON-LD extension.")])]),e._v(" "),t("h3",{attrs:{id:"ims-open-badge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-open-badge"}},[e._v("#")]),e._v(" IMS Open Badge")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can, when populated with profile data (name, email), expose CaSS assertions as Open Badges, and send email to recipients of these badges. "),t("em",[e._v("(Beta)")])])]),e._v(" "),t("h3",{attrs:{id:"moodle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#moodle"}},[e._v("#")]),e._v(" Moodle")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can synchronize competencies to and from a Moodle instance.")]),e._v(" "),t("li",[e._v("CaSS can read statements of competence from Moodle and convert them into Competency Assertions. "),t("em",[e._v("(Future)")])])]),e._v(" "),t("h3",{attrs:{id:"o-net"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#o-net"}},[e._v("#")]),e._v(" O*Net")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can read the O*NET API and harvest Skills, Knowledge, Abilities, Work Styles, Tasks, Tools, Technologies, Work Activities, and Detailed Work Activities. "),t("em",[e._v("(Alpha)")])])]),e._v(" "),t("h3",{attrs:{id:"xapi"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#xapi"}},[e._v("#")]),e._v(" xAPI")]),e._v(" "),t("ul",[t("li",[e._v("CaSS can monitor an xAPI Learning Record Store and automatically create Competency Assertions when a learner passes xAPI enabled learning activities.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/95.84304e54.js.gz b/docs/assets/js/95.84304e54.js.gz new file mode 100644 index 000000000..26d7474ad Binary files /dev/null and b/docs/assets/js/95.84304e54.js.gz differ diff --git a/docs/assets/js/96.9607f832.js b/docs/assets/js/96.2e3e2822.js similarity index 99% rename from docs/assets/js/96.9607f832.js rename to docs/assets/js/96.2e3e2822.js index 70de61756..ba9ff54df 100644 --- a/docs/assets/js/96.9607f832.js +++ b/docs/assets/js/96.2e3e2822.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{719:function(e,a,t){"use strict";t.r(a);var o=t(69),s=Object(o.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("Welcome to the CaSS docs!")]),e._v(" "),a("p",[e._v("CaSS is a system for recording and managing competencies and assertions of competence. It serves as infrastructure for any project that requires defining or tracking the capabilities of people, and supports open data access, shared access, or proprietary access or a combination of the three.")]),e._v(" "),a("p",[e._v("In CaSS, how competencies function is defined by you or your organization with the broadest suggestion that they represent the capabilities of a person. If your organization is task centric, CaSS can hold tasks, subtasks, steps and other task-related items. If your organization is skill based, CaSS can hold skills, knowledge, abilities, etc. This is accomplished by associating a group of competencies with a formal configuration that determines what is tracked, the taxonomy, and all available properties.")]),e._v(" "),a("p",[e._v("In addition:")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is software managed by the CaSS Project, an open source project managed and supported by Eduworks.")]),e._v(" "),a("li",[e._v("CaSS was initially funded by the U.S. ADL Initiative to support the Total Learning Architecture, and has successfully transitioned from a research project into use by commercial and government entities.")]),e._v(" "),a("li",[e._v("CaSS uses the business friendly Apache 2.0 License.")]),e._v(" "),a("li",[e._v("Each piece of CaSS data has a unique URL that not only identifies it, but allows the data about the object to be retreived by any system, subject to security requirements.")]),e._v(" "),a("li",[e._v("CaSS uses Linked Open Data to support not only competencies, but the secure storage of any linked data object.")]),e._v(" "),a("li",[e._v("CaSS data is portable from one CaSS instance to another, allowing for the publishing and subscription of data across physical, logical, organizational, or standards-derived boundaries.")]),e._v(" "),a("li",[e._v("The CaSS Project publishes a CaSS Library which allows application developers to use CaSS to build software.")])]),e._v(" "),a("h2",{attrs:{id:"use-cases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-cases"}},[e._v("#")]),e._v(" Use Cases")]),e._v(" "),a("p",[e._v("Here are a couple ways that CaSS has been used.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is used by the Credential Engine as a competency framework repository to describe credentials.")]),e._v(" "),a("li",[e._v("CaSS is used in several Total Learning Architecture enabled ecosystems to transform xAPI data (what someone has done) into assertions of competence (claims about what a person knows) in order to enable adaptive learning models to understand the learner and recommend content.")])]),e._v(" "),a("h2",{attrs:{id:"example-use-case"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-use-case"}},[e._v("#")]),e._v(" Example Use Case")]),e._v(" "),a("p",[e._v("Let's imagine a hypothetical situation that would merit the use of CaSS. A business requires employees to go through lots of training. It would be useful to have a system that keeps track of each employee's progress.")]),e._v(" "),a("p",[e._v("Using CaSS for this will encompass all current and future needs for the project, and hopefully bring up some questions about how exactly this project will take form.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS will allow you to declare what exactly each training (aka competency) is")]),e._v(" "),a("li",[e._v("CaSS will allow any individual to make assertions about a user's progress. This includes not just being able to say whether someone can or cannot perform a task, but at what level they can perform at")]),e._v(" "),a("li",[e._v("CaSS will provide the tools for making sense of assertions, e.g. they may only be made by a supervisor, they may expire every 6 months, or there may be conflicts or complex interactions between assertions")]),e._v(" "),a("li",[e._v("CaSS will allow you to establish relations between competencies. For example, in order to be able to keep the shop clean, you must know how to both mop and either sweep or vacuum")]),e._v(" "),a("li",[e._v("CaSS will encrypt and provide permissioning for all stored data. Your coworker probably shouldn't be able to see how well you can perform a task, nor should they be able to modify the requirements for a task")])]),e._v(" "),a("p",[e._v("Realistically, CaSS is suitable for a much wider array of projects, however. Perhaps you'll require assertions about entire groups of people. Perhaps you're not tracking skills at all. CaSS allows assertions to be made on any competency, skill, knowledge, ability, trait, learning objective, learning outcome, or, really, anything you can think of.")]),e._v(" "),a("h2",{attrs:{id:"developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developers"}},[e._v("#")]),e._v(" Developers")]),e._v(" "),a("p",[e._v("If you're a developer, consider checking out the "),a("a",{attrs:{href:"/dev/overview"}},[e._v("Developer's Guide")]),e._v(" once you're familiar with the structure of CaSS to find more information on how to work with it. There you'll find tutorials, code references, API documentation, and helpful links to other resources such as our Github and CaSS Sandbox environment.")]),e._v(" "),a("h2",{attrs:{id:"explore-the-interfaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#explore-the-interfaces"}},[e._v("#")]),e._v(" Explore the interfaces")]),e._v(" "),a("h3",{attrs:{id:"cass-authoring-tools-ui"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cass-authoring-tools-ui"}},[e._v("#")]),e._v(" CaSS Authoring Tools UI")]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"/authoring-tool"}},[e._v("CaSS Authoring Tools")]),e._v(" provide easy to use User Interfaces for authoring and managing the data within a CaSS system. This is a more tangible way of working with CaSS without writing any code, and also a good way of testing the waters. Get started by creating a user account.")]),e._v(" "),a("h2",{attrs:{id:"join-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[e._v("#")]),e._v(" Join the community")]),e._v(" "),a("h3",{attrs:{id:"subscribe-to-our-slack-channel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#subscribe-to-our-slack-channel"}},[e._v("#")]),e._v(" Subscribe to our Slack Channel")]),e._v(" "),a("p",[e._v("Request access to the "),a("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),a("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),a("p",[e._v("You may also "),a("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{721:function(e,a,t){"use strict";t.r(a);var o=t(69),s=Object(o.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("Welcome to the CaSS docs!")]),e._v(" "),a("p",[e._v("CaSS is a system for recording and managing competencies and assertions of competence. It serves as infrastructure for any project that requires defining or tracking the capabilities of people, and supports open data access, shared access, or proprietary access or a combination of the three.")]),e._v(" "),a("p",[e._v("In CaSS, how competencies function is defined by you or your organization with the broadest suggestion that they represent the capabilities of a person. If your organization is task centric, CaSS can hold tasks, subtasks, steps and other task-related items. If your organization is skill based, CaSS can hold skills, knowledge, abilities, etc. This is accomplished by associating a group of competencies with a formal configuration that determines what is tracked, the taxonomy, and all available properties.")]),e._v(" "),a("p",[e._v("In addition:")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is software managed by the CaSS Project, an open source project managed and supported by Eduworks.")]),e._v(" "),a("li",[e._v("CaSS was initially funded by the U.S. ADL Initiative to support the Total Learning Architecture, and has successfully transitioned from a research project into use by commercial and government entities.")]),e._v(" "),a("li",[e._v("CaSS uses the business friendly Apache 2.0 License.")]),e._v(" "),a("li",[e._v("Each piece of CaSS data has a unique URL that not only identifies it, but allows the data about the object to be retreived by any system, subject to security requirements.")]),e._v(" "),a("li",[e._v("CaSS uses Linked Open Data to support not only competencies, but the secure storage of any linked data object.")]),e._v(" "),a("li",[e._v("CaSS data is portable from one CaSS instance to another, allowing for the publishing and subscription of data across physical, logical, organizational, or standards-derived boundaries.")]),e._v(" "),a("li",[e._v("The CaSS Project publishes a CaSS Library which allows application developers to use CaSS to build software.")])]),e._v(" "),a("h2",{attrs:{id:"use-cases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-cases"}},[e._v("#")]),e._v(" Use Cases")]),e._v(" "),a("p",[e._v("Here are a couple ways that CaSS has been used.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is used by the Credential Engine as a competency framework repository to describe credentials.")]),e._v(" "),a("li",[e._v("CaSS is used in several Total Learning Architecture enabled ecosystems to transform xAPI data (what someone has done) into assertions of competence (claims about what a person knows) in order to enable adaptive learning models to understand the learner and recommend content.")])]),e._v(" "),a("h2",{attrs:{id:"example-use-case"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-use-case"}},[e._v("#")]),e._v(" Example Use Case")]),e._v(" "),a("p",[e._v("Let's imagine a hypothetical situation that would merit the use of CaSS. A business requires employees to go through lots of training. It would be useful to have a system that keeps track of each employee's progress.")]),e._v(" "),a("p",[e._v("Using CaSS for this will encompass all current and future needs for the project, and hopefully bring up some questions about how exactly this project will take form.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS will allow you to declare what exactly each training (aka competency) is")]),e._v(" "),a("li",[e._v("CaSS will allow any individual to make assertions about a user's progress. This includes not just being able to say whether someone can or cannot perform a task, but at what level they can perform at")]),e._v(" "),a("li",[e._v("CaSS will provide the tools for making sense of assertions, e.g. they may only be made by a supervisor, they may expire every 6 months, or there may be conflicts or complex interactions between assertions")]),e._v(" "),a("li",[e._v("CaSS will allow you to establish relations between competencies. For example, in order to be able to keep the shop clean, you must know how to both mop and either sweep or vacuum")]),e._v(" "),a("li",[e._v("CaSS will encrypt and provide permissioning for all stored data. Your coworker probably shouldn't be able to see how well you can perform a task, nor should they be able to modify the requirements for a task")])]),e._v(" "),a("p",[e._v("Realistically, CaSS is suitable for a much wider array of projects, however. Perhaps you'll require assertions about entire groups of people. Perhaps you're not tracking skills at all. CaSS allows assertions to be made on any competency, skill, knowledge, ability, trait, learning objective, learning outcome, or, really, anything you can think of.")]),e._v(" "),a("h2",{attrs:{id:"developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developers"}},[e._v("#")]),e._v(" Developers")]),e._v(" "),a("p",[e._v("If you're a developer, consider checking out the "),a("a",{attrs:{href:"/dev/overview"}},[e._v("Developer's Guide")]),e._v(" once you're familiar with the structure of CaSS to find more information on how to work with it. There you'll find tutorials, code references, API documentation, and helpful links to other resources such as our Github and CaSS Sandbox environment.")]),e._v(" "),a("h2",{attrs:{id:"explore-the-interfaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#explore-the-interfaces"}},[e._v("#")]),e._v(" Explore the interfaces")]),e._v(" "),a("h3",{attrs:{id:"cass-authoring-tools-ui"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cass-authoring-tools-ui"}},[e._v("#")]),e._v(" CaSS Authoring Tools UI")]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"/authoring-tool"}},[e._v("CaSS Authoring Tools")]),e._v(" provide easy to use User Interfaces for authoring and managing the data within a CaSS system. This is a more tangible way of working with CaSS without writing any code, and also a good way of testing the waters. Get started by creating a user account.")]),e._v(" "),a("h2",{attrs:{id:"join-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[e._v("#")]),e._v(" Join the community")]),e._v(" "),a("h3",{attrs:{id:"subscribe-to-our-slack-channel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#subscribe-to-our-slack-channel"}},[e._v("#")]),e._v(" Subscribe to our Slack Channel")]),e._v(" "),a("p",[e._v("Request access to the "),a("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),a("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),a("p",[e._v("You may also "),a("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/96.2e3e2822.js.gz b/docs/assets/js/96.2e3e2822.js.gz new file mode 100644 index 000000000..4fac1cf8b Binary files /dev/null and b/docs/assets/js/96.2e3e2822.js.gz differ diff --git a/docs/assets/js/96.9607f832.js.gz b/docs/assets/js/96.9607f832.js.gz deleted file mode 100644 index ebdae450f..000000000 Binary files a/docs/assets/js/96.9607f832.js.gz and /dev/null differ diff --git a/docs/assets/js/app.9e0ca6b3.js b/docs/assets/js/app.7547a7f9.js similarity index 84% rename from docs/assets/js/app.9e0ca6b3.js rename to docs/assets/js/app.7547a7f9.js index 645dc1e4f..3466b2a2b 100644 --- a/docs/assets/js/app.9e0ca6b3.js +++ b/docs/assets/js/app.7547a7f9.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],c=t[1],u=t[2],f=0,p=[];f=n.length?s(void 0,!0):(e=r(n,o),t.index+=e.length,s(e,!1))}))},function(e,t,n){"use strict";var r=n(52),o=n(29);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(4),o=n(56),i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not a function")}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";var r=n(13).f,o=n(6),i=n(5)("toStringTag");e.exports=function(e,t,n){e&&!n&&(e=e.prototype),e&&!o(e,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(9),o=n(13),i=n(38);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r=n(3),o=n(171),i=n(172),a=n(132),s=n(25),c=n(24),u=n(5)("iterator"),l=a.values,f=function(e,t){if(e){if(e[u]!==l)try{s(e,u,l)}catch(t){e[u]=l}if(c(e,t,!0),o[t])for(var n in a)if(e[n]!==a[n])try{s(e,n,a[n])}catch(t){e[n]=a[n]}}};for(var p in o)f(r[p]&&r[p].prototype,p);f(i,"DOMTokenList")},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(49),a=n(262),s=o.WebAssembly,c=7!==new Error("e",{cause:7}).cause,u=function(e,t){var n={};n[e]=a(e,t,c),r({global:!0,constructor:!0,arity:1,forced:c},n)},l=function(e,t){if(s&&s[e]){var n={};n[e]=a("WebAssembly."+e,t,c),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:c},n)}};u("Error",(function(e){return function(t){return i(e,this,arguments)}})),u("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),u("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),u("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),u("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),u("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),u("URIError",(function(e){return function(t){return i(e,this,arguments)}})),l("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),l("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),l("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},function(e,t,n){var r=n(178),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){"use strict";var r=n(45),o=TypeError;e.exports=function(e){if(r(e))throw new o("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(97);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(297),o=n(300);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){"use strict";var r=n(0),o=n(100);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r,o,i,a=n(234),s=n(3),c=n(7),u=n(25),l=n(6),f=n(103),p=n(80),d=n(57),v=s.TypeError,h=s.WeakMap;if(a||f.state){var g=f.state||(f.state=new h);g.get=g.get,g.has=g.has,g.set=g.set,r=function(e,t){if(g.has(e))throw new v("Object already initialized");return t.facade=e,g.set(e,t),t},o=function(e){return g.get(e)||{}},i=function(e){return g.has(e)}}else{var m=p("state");d[m]=!0,r=function(e,t){if(l(e,m))throw new v("Object already initialized");return t.facade=e,u(e,m,t),t},o=function(e){return l(e,m)?e[m]:{}},i=function(e){return l(e,m)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(9),o=n(8),i=n(106),a=n(38),s=n(21),c=n(77),u=n(6),l=n(140),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=c(t),l)try{return f(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";var r,o=n(11),i=n(138),a=n(105),s=n(57),c=n(146),u=n(76),l=n(80),f=l("IE_PROTO"),p=function(){},d=function(e){return" + diff --git a/docs/authoring/assertions/assertion-timeline/index.html.gz b/docs/authoring/assertions/assertion-timeline/index.html.gz index 44342e749..d816a4234 100644 Binary files a/docs/authoring/assertions/assertion-timeline/index.html.gz and b/docs/authoring/assertions/assertion-timeline/index.html.gz differ diff --git a/docs/authoring/assertions/managing-assertions/index.html b/docs/authoring/assertions/managing-assertions/index.html index eb23124b3..234121daf 100644 --- a/docs/authoring/assertions/managing-assertions/index.html +++ b/docs/authoring/assertions/managing-assertions/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/assertions/managing-assertions/index.html.gz b/docs/authoring/assertions/managing-assertions/index.html.gz index 5c6dd333b..feefc4c69 100644 Binary files a/docs/authoring/assertions/managing-assertions/index.html.gz and b/docs/authoring/assertions/managing-assertions/index.html.gz differ diff --git a/docs/authoring/assertions/sharing-assertions/index.html b/docs/authoring/assertions/sharing-assertions/index.html index 450349b6a..30e5f657f 100644 --- a/docs/authoring/assertions/sharing-assertions/index.html +++ b/docs/authoring/assertions/sharing-assertions/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/assertions/sharing-assertions/index.html.gz b/docs/authoring/assertions/sharing-assertions/index.html.gz index 5999b543d..9a2838e55 100644 Binary files a/docs/authoring/assertions/sharing-assertions/index.html.gz and b/docs/authoring/assertions/sharing-assertions/index.html.gz differ diff --git a/docs/authoring/competency-and-framework-management/index.html b/docs/authoring/competency-and-framework-management/index.html index d42519e80..b3ebf5d44 100644 --- a/docs/authoring/competency-and-framework-management/index.html +++ b/docs/authoring/competency-and-framework-management/index.html @@ -20,7 +20,7 @@ - + @@ -49,6 +49,6 @@ →

- + diff --git a/docs/authoring/competency-and-framework-management/index.html.gz b/docs/authoring/competency-and-framework-management/index.html.gz index 7b0fb2b88..c4ce4388a 100644 Binary files a/docs/authoring/competency-and-framework-management/index.html.gz and b/docs/authoring/competency-and-framework-management/index.html.gz differ diff --git a/docs/authoring/competency-properties/index.html b/docs/authoring/competency-properties/index.html index 230e2e5ef..ad4efc1c5 100644 --- a/docs/authoring/competency-properties/index.html +++ b/docs/authoring/competency-properties/index.html @@ -20,7 +20,7 @@ - + @@ -46,6 +46,6 @@ →

- + diff --git a/docs/authoring/competency-properties/index.html.gz b/docs/authoring/competency-properties/index.html.gz index 6e17a7fc5..d380b23e4 100644 Binary files a/docs/authoring/competency-properties/index.html.gz and b/docs/authoring/competency-properties/index.html.gz differ diff --git a/docs/authoring/configuration/index.html b/docs/authoring/configuration/index.html index eaf5bed23..ccf533b82 100644 --- a/docs/authoring/configuration/index.html +++ b/docs/authoring/configuration/index.html @@ -20,7 +20,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/authoring/configuration/index.html.gz b/docs/authoring/configuration/index.html.gz index 5be72a9c0..d669dca91 100644 Binary files a/docs/authoring/configuration/index.html.gz and b/docs/authoring/configuration/index.html.gz differ diff --git a/docs/authoring/crosswalk-tool/index.html b/docs/authoring/crosswalk-tool/index.html index a51fe4f18..a003944ee 100644 --- a/docs/authoring/crosswalk-tool/index.html +++ b/docs/authoring/crosswalk-tool/index.html @@ -20,7 +20,7 @@ - + @@ -51,6 +51,6 @@ →

- + diff --git a/docs/authoring/crosswalk-tool/index.html.gz b/docs/authoring/crosswalk-tool/index.html.gz index 4b5e77118..66932913a 100644 Binary files a/docs/authoring/crosswalk-tool/index.html.gz and b/docs/authoring/crosswalk-tool/index.html.gz differ diff --git a/docs/authoring/default-users/index.html b/docs/authoring/default-users/index.html index 9c5f5253d..c55d2bcc0 100644 --- a/docs/authoring/default-users/index.html +++ b/docs/authoring/default-users/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/default-users/index.html.gz b/docs/authoring/default-users/index.html.gz index 1e765ddf7..f05e22556 100644 Binary files a/docs/authoring/default-users/index.html.gz and b/docs/authoring/default-users/index.html.gz differ diff --git a/docs/authoring/directory-management/index.html b/docs/authoring/directory-management/index.html index 5fe543cfe..5a2a2609a 100644 --- a/docs/authoring/directory-management/index.html +++ b/docs/authoring/directory-management/index.html @@ -20,7 +20,7 @@ - + @@ -53,6 +53,6 @@ →

- + diff --git a/docs/authoring/directory-management/index.html.gz b/docs/authoring/directory-management/index.html.gz index 217017964..bc3815577 100644 Binary files a/docs/authoring/directory-management/index.html.gz and b/docs/authoring/directory-management/index.html.gz differ diff --git a/docs/authoring/directory-sharing/index.html b/docs/authoring/directory-sharing/index.html index 61cc031a6..a05f6d659 100644 --- a/docs/authoring/directory-sharing/index.html +++ b/docs/authoring/directory-sharing/index.html @@ -20,7 +20,7 @@ - + @@ -42,6 +42,6 @@ →

- + diff --git a/docs/authoring/directory-sharing/index.html.gz b/docs/authoring/directory-sharing/index.html.gz index f575f1f63..07f86c7d0 100644 Binary files a/docs/authoring/directory-sharing/index.html.gz and b/docs/authoring/directory-sharing/index.html.gz differ diff --git a/docs/authoring/exporting-framework/index.html b/docs/authoring/exporting-framework/index.html index 8fe08a2b5..152409dee 100644 --- a/docs/authoring/exporting-framework/index.html +++ b/docs/authoring/exporting-framework/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/exporting-framework/index.html.gz b/docs/authoring/exporting-framework/index.html.gz index 7ee7f0eb2..10a87a324 100644 Binary files a/docs/authoring/exporting-framework/index.html.gz and b/docs/authoring/exporting-framework/index.html.gz differ diff --git a/docs/authoring/framework-properties/index.html b/docs/authoring/framework-properties/index.html index d49d3b227..c6475eeed 100644 --- a/docs/authoring/framework-properties/index.html +++ b/docs/authoring/framework-properties/index.html @@ -20,7 +20,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/authoring/framework-properties/index.html.gz b/docs/authoring/framework-properties/index.html.gz index 46a21eaed..5e41e903b 100644 Binary files a/docs/authoring/framework-properties/index.html.gz and b/docs/authoring/framework-properties/index.html.gz differ diff --git a/docs/authoring/getting-started/index.html b/docs/authoring/getting-started/index.html index a551989ed..c8aa5a9b3 100644 --- a/docs/authoring/getting-started/index.html +++ b/docs/authoring/getting-started/index.html @@ -20,7 +20,7 @@ - + @@ -69,6 +69,6 @@ →

- + diff --git a/docs/authoring/getting-started/index.html.gz b/docs/authoring/getting-started/index.html.gz index 7911e7861..bef9b34b0 100644 Binary files a/docs/authoring/getting-started/index.html.gz and b/docs/authoring/getting-started/index.html.gz differ diff --git a/docs/authoring/importing-framework/index.html b/docs/authoring/importing-framework/index.html index 448090dd4..d5e40dcc1 100644 --- a/docs/authoring/importing-framework/index.html +++ b/docs/authoring/importing-framework/index.html @@ -20,7 +20,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/authoring/importing-framework/index.html.gz b/docs/authoring/importing-framework/index.html.gz index c92a13127..5036182a3 100644 Binary files a/docs/authoring/importing-framework/index.html.gz and b/docs/authoring/importing-framework/index.html.gz differ diff --git a/docs/authoring/organizations-and-groups/index.html b/docs/authoring/organizations-and-groups/index.html index 68025b506..5bf75c62d 100644 --- a/docs/authoring/organizations-and-groups/index.html +++ b/docs/authoring/organizations-and-groups/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/organizations-and-groups/index.html.gz b/docs/authoring/organizations-and-groups/index.html.gz index 0c99eed71..d8b856fa4 100644 Binary files a/docs/authoring/organizations-and-groups/index.html.gz and b/docs/authoring/organizations-and-groups/index.html.gz differ diff --git a/docs/authoring/taxonomies/index.html b/docs/authoring/taxonomies/index.html index 0cdd0e192..05edb49f1 100644 --- a/docs/authoring/taxonomies/index.html +++ b/docs/authoring/taxonomies/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/taxonomies/index.html.gz b/docs/authoring/taxonomies/index.html.gz index 1af69d035..e03ede6fb 100644 Binary files a/docs/authoring/taxonomies/index.html.gz and b/docs/authoring/taxonomies/index.html.gz differ diff --git a/docs/authoring/users-and-groups/index.html b/docs/authoring/users-and-groups/index.html index 671897a4b..82aa29c0d 100644 --- a/docs/authoring/users-and-groups/index.html +++ b/docs/authoring/users-and-groups/index.html @@ -20,7 +20,7 @@ - + @@ -42,6 +42,6 @@ →

- + diff --git a/docs/authoring/users-and-groups/index.html.gz b/docs/authoring/users-and-groups/index.html.gz index fd4652144..1a75e9302 100644 Binary files a/docs/authoring/users-and-groups/index.html.gz and b/docs/authoring/users-and-groups/index.html.gz differ diff --git a/docs/dev/cass-configuration/index.html b/docs/dev/cass-configuration/index.html index ea0f63892..8ac987be7 100644 --- a/docs/dev/cass-configuration/index.html +++ b/docs/dev/cass-configuration/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/cass-configuration/index.html.gz b/docs/dev/cass-configuration/index.html.gz index 8ea13c30a..612a22f38 100644 Binary files a/docs/dev/cass-configuration/index.html.gz and b/docs/dev/cass-configuration/index.html.gz differ diff --git a/docs/dev/cass-installation/index.html b/docs/dev/cass-installation/index.html index 53f127633..a550ffc73 100644 --- a/docs/dev/cass-installation/index.html +++ b/docs/dev/cass-installation/index.html @@ -20,7 +20,7 @@ - + @@ -55,6 +55,6 @@ →

- + diff --git a/docs/dev/cass-installation/index.html.gz b/docs/dev/cass-installation/index.html.gz index 83d9aef50..9666f222a 100644 Binary files a/docs/dev/cass-installation/index.html.gz and b/docs/dev/cass-installation/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/csharp/index.html b/docs/dev/cass-library-hello-world/csharp/index.html index d9317225d..1aa852ff0 100644 --- a/docs/dev/cass-library-hello-world/csharp/index.html +++ b/docs/dev/cass-library-hello-world/csharp/index.html @@ -20,7 +20,7 @@ - + @@ -67,6 +67,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/csharp/index.html.gz b/docs/dev/cass-library-hello-world/csharp/index.html.gz index d73cd82e7..ae8374b7f 100644 Binary files a/docs/dev/cass-library-hello-world/csharp/index.html.gz and b/docs/dev/cass-library-hello-world/csharp/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/index.html b/docs/dev/cass-library-hello-world/index.html index 7f7d2d022..eb9322923 100644 --- a/docs/dev/cass-library-hello-world/index.html +++ b/docs/dev/cass-library-hello-world/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/index.html.gz b/docs/dev/cass-library-hello-world/index.html.gz index e88b00d1b..0f0dbac6d 100644 Binary files a/docs/dev/cass-library-hello-world/index.html.gz and b/docs/dev/cass-library-hello-world/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/java/index.html b/docs/dev/cass-library-hello-world/java/index.html index 62c1e2d60..01dab9397 100644 --- a/docs/dev/cass-library-hello-world/java/index.html +++ b/docs/dev/cass-library-hello-world/java/index.html @@ -20,7 +20,7 @@ - + @@ -234,6 +234,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/java/index.html.gz b/docs/dev/cass-library-hello-world/java/index.html.gz index 7e0b13e5e..dae883397 100644 Binary files a/docs/dev/cass-library-hello-world/java/index.html.gz and b/docs/dev/cass-library-hello-world/java/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/javascript/index.html b/docs/dev/cass-library-hello-world/javascript/index.html index f456e0275..0b5fee74e 100644 --- a/docs/dev/cass-library-hello-world/javascript/index.html +++ b/docs/dev/cass-library-hello-world/javascript/index.html @@ -20,7 +20,7 @@ - + @@ -86,6 +86,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/javascript/index.html.gz b/docs/dev/cass-library-hello-world/javascript/index.html.gz index 5dba61505..a20f27d30 100644 Binary files a/docs/dev/cass-library-hello-world/javascript/index.html.gz and b/docs/dev/cass-library-hello-world/javascript/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/node-js/index.html b/docs/dev/cass-library-hello-world/node-js/index.html index 0d61bfb51..a16c572c6 100644 --- a/docs/dev/cass-library-hello-world/node-js/index.html +++ b/docs/dev/cass-library-hello-world/node-js/index.html @@ -20,7 +20,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/node-js/index.html.gz b/docs/dev/cass-library-hello-world/node-js/index.html.gz index 81c9fc69b..002ed0934 100644 Binary files a/docs/dev/cass-library-hello-world/node-js/index.html.gz and b/docs/dev/cass-library-hello-world/node-js/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/php/index.html b/docs/dev/cass-library-hello-world/php/index.html index dcd0ff15a..4171e66fc 100644 --- a/docs/dev/cass-library-hello-world/php/index.html +++ b/docs/dev/cass-library-hello-world/php/index.html @@ -20,7 +20,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/php/index.html.gz b/docs/dev/cass-library-hello-world/php/index.html.gz index f36bcc390..a59bb42d7 100644 Binary files a/docs/dev/cass-library-hello-world/php/index.html.gz and b/docs/dev/cass-library-hello-world/php/index.html.gz differ diff --git a/docs/dev/contributing/index.html b/docs/dev/contributing/index.html index b53cce6eb..94098ebdb 100644 --- a/docs/dev/contributing/index.html +++ b/docs/dev/contributing/index.html @@ -20,7 +20,7 @@ - + @@ -37,6 +37,6 @@

- + diff --git a/docs/dev/contributing/index.html.gz b/docs/dev/contributing/index.html.gz index 1a6264706..cf8839db2 100644 Binary files a/docs/dev/contributing/index.html.gz and b/docs/dev/contributing/index.html.gz differ diff --git a/docs/dev/design-principles/index.html b/docs/dev/design-principles/index.html index dd9d9a3e7..d5a321c92 100644 --- a/docs/dev/design-principles/index.html +++ b/docs/dev/design-principles/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/design-principles/index.html.gz b/docs/dev/design-principles/index.html.gz index a60e47420..24d5131bc 100644 Binary files a/docs/dev/design-principles/index.html.gz and b/docs/dev/design-principles/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/asn/index.html b/docs/dev/extending-cass/adapters/asn/index.html index 9f03896c4..47c4508bb 100644 --- a/docs/dev/extending-cass/adapters/asn/index.html +++ b/docs/dev/extending-cass/adapters/asn/index.html @@ -20,7 +20,7 @@ - + @@ -45,6 +45,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/asn/index.html.gz b/docs/dev/extending-cass/adapters/asn/index.html.gz index fc2103f40..cdc438974 100644 Binary files a/docs/dev/extending-cass/adapters/asn/index.html.gz and b/docs/dev/extending-cass/adapters/asn/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/ceasn/index.html b/docs/dev/extending-cass/adapters/ceasn/index.html index a880c511c..7063728e1 100644 --- a/docs/dev/extending-cass/adapters/ceasn/index.html +++ b/docs/dev/extending-cass/adapters/ceasn/index.html @@ -20,7 +20,7 @@ - + @@ -45,6 +45,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/ceasn/index.html.gz b/docs/dev/extending-cass/adapters/ceasn/index.html.gz index bccb000d0..954a0f231 100644 Binary files a/docs/dev/extending-cass/adapters/ceasn/index.html.gz and b/docs/dev/extending-cass/adapters/ceasn/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/ims-case/index.html b/docs/dev/extending-cass/adapters/ims-case/index.html index 4df9ab668..5d08f0808 100644 --- a/docs/dev/extending-cass/adapters/ims-case/index.html +++ b/docs/dev/extending-cass/adapters/ims-case/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/ims-case/index.html.gz b/docs/dev/extending-cass/adapters/ims-case/index.html.gz index 884c6383b..ec5a6a0a5 100644 Binary files a/docs/dev/extending-cass/adapters/ims-case/index.html.gz and b/docs/dev/extending-cass/adapters/ims-case/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/ims-open-badge/index.html b/docs/dev/extending-cass/adapters/ims-open-badge/index.html index e6e9189b8..0b58830a2 100644 --- a/docs/dev/extending-cass/adapters/ims-open-badge/index.html +++ b/docs/dev/extending-cass/adapters/ims-open-badge/index.html @@ -20,7 +20,7 @@ - + @@ -51,6 +51,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz b/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz index bf5422ac8..6e26c4591 100644 Binary files a/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz and b/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/index.html b/docs/dev/extending-cass/adapters/index.html index 9f731befb..72aab9061 100644 --- a/docs/dev/extending-cass/adapters/index.html +++ b/docs/dev/extending-cass/adapters/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/index.html.gz b/docs/dev/extending-cass/adapters/index.html.gz index 9d21eac1f..4d88224ed 100644 Binary files a/docs/dev/extending-cass/adapters/index.html.gz and b/docs/dev/extending-cass/adapters/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/moodle/index.html b/docs/dev/extending-cass/adapters/moodle/index.html index 31c12bbb6..d5b9fa2ef 100644 --- a/docs/dev/extending-cass/adapters/moodle/index.html +++ b/docs/dev/extending-cass/adapters/moodle/index.html @@ -20,7 +20,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/moodle/index.html.gz b/docs/dev/extending-cass/adapters/moodle/index.html.gz index e2e3860df..61483b8b3 100644 Binary files a/docs/dev/extending-cass/adapters/moodle/index.html.gz and b/docs/dev/extending-cass/adapters/moodle/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/xapi/index.html b/docs/dev/extending-cass/adapters/xapi/index.html index ed9a846d4..2d2e4d611 100644 --- a/docs/dev/extending-cass/adapters/xapi/index.html +++ b/docs/dev/extending-cass/adapters/xapi/index.html @@ -20,7 +20,7 @@ - + @@ -106,6 +106,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/xapi/index.html.gz b/docs/dev/extending-cass/adapters/xapi/index.html.gz index 283b4867e..cb9864f02 100644 Binary files a/docs/dev/extending-cass/adapters/xapi/index.html.gz and b/docs/dev/extending-cass/adapters/xapi/index.html.gz differ diff --git a/docs/dev/extending-cass/index.html b/docs/dev/extending-cass/index.html index 4b0d136bc..d139ed187 100644 --- a/docs/dev/extending-cass/index.html +++ b/docs/dev/extending-cass/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/index.html.gz b/docs/dev/extending-cass/index.html.gz index fb2ae1555..fb48e426b 100644 Binary files a/docs/dev/extending-cass/index.html.gz and b/docs/dev/extending-cass/index.html.gz differ diff --git a/docs/dev/extending-cass/working-with-other-schemas/index.html b/docs/dev/extending-cass/working-with-other-schemas/index.html index 5dadd9c77..682efb7bc 100644 --- a/docs/dev/extending-cass/working-with-other-schemas/index.html +++ b/docs/dev/extending-cass/working-with-other-schemas/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/working-with-other-schemas/index.html.gz b/docs/dev/extending-cass/working-with-other-schemas/index.html.gz index cdf1cba6d..5e946806f 100644 Binary files a/docs/dev/extending-cass/working-with-other-schemas/index.html.gz and b/docs/dev/extending-cass/working-with-other-schemas/index.html.gz differ diff --git a/docs/dev/fundamentals/assertion-processing/index.html b/docs/dev/fundamentals/assertion-processing/index.html index cfdedbf33..fc7e69f6a 100644 --- a/docs/dev/fundamentals/assertion-processing/index.html +++ b/docs/dev/fundamentals/assertion-processing/index.html @@ -20,7 +20,7 @@ - + @@ -60,6 +60,6 @@ →

- + diff --git a/docs/dev/fundamentals/assertion-processing/index.html.gz b/docs/dev/fundamentals/assertion-processing/index.html.gz index 408d8c9a7..88ff33a6b 100644 Binary files a/docs/dev/fundamentals/assertion-processing/index.html.gz and b/docs/dev/fundamentals/assertion-processing/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/assertion/index.html b/docs/dev/fundamentals/cass-objects/assertion/index.html index ed2b9bd30..240f0065c 100644 --- a/docs/dev/fundamentals/cass-objects/assertion/index.html +++ b/docs/dev/fundamentals/cass-objects/assertion/index.html @@ -20,7 +20,7 @@ - + @@ -122,6 +122,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/assertion/index.html.gz b/docs/dev/fundamentals/cass-objects/assertion/index.html.gz index 876ba8c87..0b4851d6a 100644 Binary files a/docs/dev/fundamentals/cass-objects/assertion/index.html.gz and b/docs/dev/fundamentals/cass-objects/assertion/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/competency/index.html b/docs/dev/fundamentals/cass-objects/competency/index.html index 75d82964b..585f601c1 100644 --- a/docs/dev/fundamentals/cass-objects/competency/index.html +++ b/docs/dev/fundamentals/cass-objects/competency/index.html @@ -20,7 +20,7 @@ - + @@ -94,6 +94,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/competency/index.html.gz b/docs/dev/fundamentals/cass-objects/competency/index.html.gz index 1e426130e..2e5af60c7 100644 Binary files a/docs/dev/fundamentals/cass-objects/competency/index.html.gz and b/docs/dev/fundamentals/cass-objects/competency/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/framework/index.html b/docs/dev/fundamentals/cass-objects/framework/index.html index 702968fa2..007a07dc9 100644 --- a/docs/dev/fundamentals/cass-objects/framework/index.html +++ b/docs/dev/fundamentals/cass-objects/framework/index.html @@ -20,7 +20,7 @@ - + @@ -110,6 +110,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/framework/index.html.gz b/docs/dev/fundamentals/cass-objects/framework/index.html.gz index bca24a95b..ce6bf2695 100644 Binary files a/docs/dev/fundamentals/cass-objects/framework/index.html.gz and b/docs/dev/fundamentals/cass-objects/framework/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/index.html b/docs/dev/fundamentals/cass-objects/index.html index 6365ff5f6..414c2a171 100644 --- a/docs/dev/fundamentals/cass-objects/index.html +++ b/docs/dev/fundamentals/cass-objects/index.html @@ -20,7 +20,7 @@ - + @@ -75,6 +75,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/index.html.gz b/docs/dev/fundamentals/cass-objects/index.html.gz index e34f0b8c6..49398fe58 100644 Binary files a/docs/dev/fundamentals/cass-objects/index.html.gz and b/docs/dev/fundamentals/cass-objects/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/level/index.html b/docs/dev/fundamentals/cass-objects/level/index.html index 36f68530c..9d99b77f2 100644 --- a/docs/dev/fundamentals/cass-objects/level/index.html +++ b/docs/dev/fundamentals/cass-objects/level/index.html @@ -20,7 +20,7 @@ - + @@ -92,6 +92,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/level/index.html.gz b/docs/dev/fundamentals/cass-objects/level/index.html.gz index 7b2339ab1..1e5c5fc99 100644 Binary files a/docs/dev/fundamentals/cass-objects/level/index.html.gz and b/docs/dev/fundamentals/cass-objects/level/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/relation/index.html b/docs/dev/fundamentals/cass-objects/relation/index.html index 474df727b..c62203012 100644 --- a/docs/dev/fundamentals/cass-objects/relation/index.html +++ b/docs/dev/fundamentals/cass-objects/relation/index.html @@ -20,7 +20,7 @@ - + @@ -87,6 +87,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/relation/index.html.gz b/docs/dev/fundamentals/cass-objects/relation/index.html.gz index 0b298c78a..345f3ce62 100644 Binary files a/docs/dev/fundamentals/cass-objects/relation/index.html.gz and b/docs/dev/fundamentals/cass-objects/relation/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html index 730571421..772791f9b 100644 --- a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html +++ b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html @@ -20,7 +20,7 @@ - + @@ -33,6 +33,6 @@

# RollupRule

TODO

- + diff --git a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz index c2848e621..6946b9b29 100644 Binary files a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz and b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/create/index.html b/docs/dev/fundamentals/cass-repo-api/create/index.html index 5ce218f0f..a15b54001 100644 --- a/docs/dev/fundamentals/cass-repo-api/create/index.html +++ b/docs/dev/fundamentals/cass-repo-api/create/index.html @@ -20,7 +20,7 @@ - + @@ -143,6 +143,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/create/index.html.gz b/docs/dev/fundamentals/cass-repo-api/create/index.html.gz index 8e26e16f4..74e6cee36 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/create/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/create/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/delete/index.html b/docs/dev/fundamentals/cass-repo-api/delete/index.html index a2326e093..8482bcb81 100644 --- a/docs/dev/fundamentals/cass-repo-api/delete/index.html +++ b/docs/dev/fundamentals/cass-repo-api/delete/index.html @@ -20,7 +20,7 @@ - + @@ -78,6 +78,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz b/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz index e6d1121a6..a5539377f 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/get/index.html b/docs/dev/fundamentals/cass-repo-api/get/index.html index a6634e06e..189d94217 100644 --- a/docs/dev/fundamentals/cass-repo-api/get/index.html +++ b/docs/dev/fundamentals/cass-repo-api/get/index.html @@ -20,7 +20,7 @@ - + @@ -114,6 +114,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/get/index.html.gz b/docs/dev/fundamentals/cass-repo-api/get/index.html.gz index f116aca86..463f248cc 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/get/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/get/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/index.html b/docs/dev/fundamentals/cass-repo-api/index.html index 9dc146b6d..97480dcf4 100644 --- a/docs/dev/fundamentals/cass-repo-api/index.html +++ b/docs/dev/fundamentals/cass-repo-api/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/index.html.gz b/docs/dev/fundamentals/cass-repo-api/index.html.gz index 80544fce7..a609e1dfc 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/search/index.html b/docs/dev/fundamentals/cass-repo-api/search/index.html index 89ef46655..158d25927 100644 --- a/docs/dev/fundamentals/cass-repo-api/search/index.html +++ b/docs/dev/fundamentals/cass-repo-api/search/index.html @@ -20,7 +20,7 @@ - + @@ -84,6 +84,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/search/index.html.gz b/docs/dev/fundamentals/cass-repo-api/search/index.html.gz index 95fbbcafc..cbecf71ef 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/search/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/search/index.html.gz differ diff --git a/docs/dev/fundamentals/contacts/index.html b/docs/dev/fundamentals/contacts/index.html index a35ad0082..b6183ae3d 100644 --- a/docs/dev/fundamentals/contacts/index.html +++ b/docs/dev/fundamentals/contacts/index.html @@ -20,7 +20,7 @@ - + @@ -33,6 +33,6 @@

# Contacts

TODO

- + diff --git a/docs/dev/fundamentals/contacts/index.html.gz b/docs/dev/fundamentals/contacts/index.html.gz index 7f5dffd16..f67858f59 100644 Binary files a/docs/dev/fundamentals/contacts/index.html.gz and b/docs/dev/fundamentals/contacts/index.html.gz differ diff --git a/docs/dev/fundamentals/deployment/index.html b/docs/dev/fundamentals/deployment/index.html index f98d1124d..cd2fc8ea8 100644 --- a/docs/dev/fundamentals/deployment/index.html +++ b/docs/dev/fundamentals/deployment/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/fundamentals/deployment/index.html.gz b/docs/dev/fundamentals/deployment/index.html.gz index e774d0178..1615cf7d5 100644 Binary files a/docs/dev/fundamentals/deployment/index.html.gz and b/docs/dev/fundamentals/deployment/index.html.gz differ diff --git a/docs/dev/fundamentals/http-and-protocols/index.html b/docs/dev/fundamentals/http-and-protocols/index.html index 3704eeb68..256273b8a 100644 --- a/docs/dev/fundamentals/http-and-protocols/index.html +++ b/docs/dev/fundamentals/http-and-protocols/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/fundamentals/http-and-protocols/index.html.gz b/docs/dev/fundamentals/http-and-protocols/index.html.gz index 7fa5001c9..08a02a242 100644 Binary files a/docs/dev/fundamentals/http-and-protocols/index.html.gz and b/docs/dev/fundamentals/http-and-protocols/index.html.gz differ diff --git a/docs/dev/fundamentals/identities-and-login/index.html b/docs/dev/fundamentals/identities-and-login/index.html index 4adb96c43..d7b8d49e9 100644 --- a/docs/dev/fundamentals/identities-and-login/index.html +++ b/docs/dev/fundamentals/identities-and-login/index.html @@ -20,7 +20,7 @@ - + @@ -100,6 +100,6 @@ →

- + diff --git a/docs/dev/fundamentals/identities-and-login/index.html.gz b/docs/dev/fundamentals/identities-and-login/index.html.gz index 9f85aa0d1..fbec776fd 100644 Binary files a/docs/dev/fundamentals/identities-and-login/index.html.gz and b/docs/dev/fundamentals/identities-and-login/index.html.gz differ diff --git a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html index 572ac3a32..0d4257190 100644 --- a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html +++ b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html @@ -20,7 +20,7 @@ - + @@ -55,6 +55,6 @@ →

- + diff --git a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz index e9c038dc3..df9f0ee70 100644 Binary files a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz and b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz differ diff --git a/docs/dev/fundamentals/repositories/index.html b/docs/dev/fundamentals/repositories/index.html index 8cc7a88d5..2f6370f28 100644 --- a/docs/dev/fundamentals/repositories/index.html +++ b/docs/dev/fundamentals/repositories/index.html @@ -20,7 +20,7 @@ - + @@ -54,6 +54,6 @@ →

- + diff --git a/docs/dev/fundamentals/repositories/index.html.gz b/docs/dev/fundamentals/repositories/index.html.gz index d8ae8c360..8eccf35ca 100644 Binary files a/docs/dev/fundamentals/repositories/index.html.gz and b/docs/dev/fundamentals/repositories/index.html.gz differ diff --git a/docs/dev/fundamentals/search/index.html b/docs/dev/fundamentals/search/index.html index ca0ebf17b..cded7e3a5 100644 --- a/docs/dev/fundamentals/search/index.html +++ b/docs/dev/fundamentals/search/index.html @@ -20,7 +20,7 @@ - + @@ -63,6 +63,6 @@ →

- + diff --git a/docs/dev/fundamentals/search/index.html.gz b/docs/dev/fundamentals/search/index.html.gz index 52d0fae15..b285873c5 100644 Binary files a/docs/dev/fundamentals/search/index.html.gz and b/docs/dev/fundamentals/search/index.html.gz differ diff --git a/docs/dev/fundamentals/urls-and-linked-data/index.html b/docs/dev/fundamentals/urls-and-linked-data/index.html index 6374dbf3f..97bbd1387 100644 --- a/docs/dev/fundamentals/urls-and-linked-data/index.html +++ b/docs/dev/fundamentals/urls-and-linked-data/index.html @@ -20,7 +20,7 @@ - + @@ -48,6 +48,6 @@ →

- + diff --git a/docs/dev/fundamentals/urls-and-linked-data/index.html.gz b/docs/dev/fundamentals/urls-and-linked-data/index.html.gz index 60c19c7e8..f208d9f59 100644 Binary files a/docs/dev/fundamentals/urls-and-linked-data/index.html.gz and b/docs/dev/fundamentals/urls-and-linked-data/index.html.gz differ diff --git a/docs/dev/links-and-references/index.html b/docs/dev/links-and-references/index.html index ec109bb57..636387777 100644 --- a/docs/dev/links-and-references/index.html +++ b/docs/dev/links-and-references/index.html @@ -20,7 +20,7 @@ - + @@ -46,6 +46,6 @@ →

- + diff --git a/docs/dev/links-and-references/index.html.gz b/docs/dev/links-and-references/index.html.gz index e74700e43..e2ce251fd 100644 Binary files a/docs/dev/links-and-references/index.html.gz and b/docs/dev/links-and-references/index.html.gz differ diff --git a/docs/dev/overview/index.html b/docs/dev/overview/index.html index d5eb87426..fc7d65363 100644 --- a/docs/dev/overview/index.html +++ b/docs/dev/overview/index.html @@ -20,7 +20,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/dev/overview/index.html.gz b/docs/dev/overview/index.html.gz index c6e95c9fa..9e1750749 100644 Binary files a/docs/dev/overview/index.html.gz and b/docs/dev/overview/index.html.gz differ diff --git a/docs/dev/performance/index.html b/docs/dev/performance/index.html index eb893fb24..97134f5ea 100644 --- a/docs/dev/performance/index.html +++ b/docs/dev/performance/index.html @@ -20,7 +20,7 @@ - + @@ -70,6 +70,6 @@ →

- + diff --git a/docs/dev/performance/index.html.gz b/docs/dev/performance/index.html.gz index 20b31b1f2..e3e4842a1 100644 Binary files a/docs/dev/performance/index.html.gz and b/docs/dev/performance/index.html.gz differ diff --git a/docs/dev/security/kbac-specification/index.html b/docs/dev/security/kbac-specification/index.html index d987b5cf6..cf84654e3 100644 --- a/docs/dev/security/kbac-specification/index.html +++ b/docs/dev/security/kbac-specification/index.html @@ -20,7 +20,7 @@ - + @@ -330,6 +330,6 @@ →

- + diff --git a/docs/dev/security/kbac-specification/index.html.gz b/docs/dev/security/kbac-specification/index.html.gz index bcb76591a..e690010f7 100644 Binary files a/docs/dev/security/kbac-specification/index.html.gz and b/docs/dev/security/kbac-specification/index.html.gz differ diff --git a/docs/dev/security/kbac-threat-model/index.html b/docs/dev/security/kbac-threat-model/index.html index 93c96df9c..d6634aa0e 100644 --- a/docs/dev/security/kbac-threat-model/index.html +++ b/docs/dev/security/kbac-threat-model/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/security/kbac-threat-model/index.html.gz b/docs/dev/security/kbac-threat-model/index.html.gz index b0895116f..419a23521 100644 Binary files a/docs/dev/security/kbac-threat-model/index.html.gz and b/docs/dev/security/kbac-threat-model/index.html.gz differ diff --git a/docs/dev/tutorials/align-assessments-to-competencies/index.html b/docs/dev/tutorials/align-assessments-to-competencies/index.html index c317f6d81..b253c13ea 100644 --- a/docs/dev/tutorials/align-assessments-to-competencies/index.html +++ b/docs/dev/tutorials/align-assessments-to-competencies/index.html @@ -20,7 +20,7 @@ - + @@ -106,6 +106,6 @@ →

- + diff --git a/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz b/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz index 80ec70888..0988a439d 100644 Binary files a/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz and b/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz differ diff --git a/docs/dev/tutorials/align-resources-to-competencies/index.html b/docs/dev/tutorials/align-resources-to-competencies/index.html index d987587e8..80b97dd66 100644 --- a/docs/dev/tutorials/align-resources-to-competencies/index.html +++ b/docs/dev/tutorials/align-resources-to-competencies/index.html @@ -20,7 +20,7 @@ - + @@ -62,6 +62,6 @@ →

- + diff --git a/docs/dev/tutorials/align-resources-to-competencies/index.html.gz b/docs/dev/tutorials/align-resources-to-competencies/index.html.gz index 3eb622981..9b9aa10ee 100644 Binary files a/docs/dev/tutorials/align-resources-to-competencies/index.html.gz and b/docs/dev/tutorials/align-resources-to-competencies/index.html.gz differ diff --git a/docs/dev/tutorials/import-csv/index.html b/docs/dev/tutorials/import-csv/index.html index 1e30f7ac8..b0e1fcf34 100644 --- a/docs/dev/tutorials/import-csv/index.html +++ b/docs/dev/tutorials/import-csv/index.html @@ -20,7 +20,7 @@ - + @@ -102,6 +102,6 @@ →

- + diff --git a/docs/dev/tutorials/import-csv/index.html.gz b/docs/dev/tutorials/import-csv/index.html.gz index 7b0d4b158..db3c0024b 100644 Binary files a/docs/dev/tutorials/import-csv/index.html.gz and b/docs/dev/tutorials/import-csv/index.html.gz differ diff --git a/docs/dev/tutorials/index.html b/docs/dev/tutorials/index.html index 2d251409d..db8b9bba6 100644 --- a/docs/dev/tutorials/index.html +++ b/docs/dev/tutorials/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/tutorials/index.html.gz b/docs/dev/tutorials/index.html.gz index 78c88fe95..effb627ef 100644 Binary files a/docs/dev/tutorials/index.html.gz and b/docs/dev/tutorials/index.html.gz differ diff --git a/docs/guide/assertion-processing/index.html b/docs/guide/assertion-processing/index.html index a45dae0a6..ecfdfc326 100644 --- a/docs/guide/assertion-processing/index.html +++ b/docs/guide/assertion-processing/index.html @@ -20,7 +20,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/guide/assertion-processing/index.html.gz b/docs/guide/assertion-processing/index.html.gz index bc59f08bf..ead9508b7 100644 Binary files a/docs/guide/assertion-processing/index.html.gz and b/docs/guide/assertion-processing/index.html.gz differ diff --git a/docs/guide/interoperability/index.html b/docs/guide/interoperability/index.html index 1ed897730..2cebcd78f 100644 --- a/docs/guide/interoperability/index.html +++ b/docs/guide/interoperability/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/guide/interoperability/index.html.gz b/docs/guide/interoperability/index.html.gz index 30fcec45d..d58042198 100644 Binary files a/docs/guide/interoperability/index.html.gz and b/docs/guide/interoperability/index.html.gz differ diff --git a/docs/guide/introduction/index.html b/docs/guide/introduction/index.html index d0c87cf66..884c27832 100644 --- a/docs/guide/introduction/index.html +++ b/docs/guide/introduction/index.html @@ -20,7 +20,7 @@ - + @@ -37,6 +37,6 @@ →

- + diff --git a/docs/guide/introduction/index.html.gz b/docs/guide/introduction/index.html.gz index af27762fc..4010001e6 100644 Binary files a/docs/guide/introduction/index.html.gz and b/docs/guide/introduction/index.html.gz differ diff --git a/docs/guide/overview/index.html b/docs/guide/overview/index.html index 2e8717f97..92dcc4c58 100644 --- a/docs/guide/overview/index.html +++ b/docs/guide/overview/index.html @@ -20,7 +20,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/guide/overview/index.html.gz b/docs/guide/overview/index.html.gz index 7637ec1ee..1d2856cc8 100644 Binary files a/docs/guide/overview/index.html.gz and b/docs/guide/overview/index.html.gz differ diff --git a/docs/index.html b/docs/index.html index 803751246..09e6f27b1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@

- + diff --git a/docs/index.html.gz b/docs/index.html.gz index 606bc26a0..ac753ba7c 100644 Binary files a/docs/index.html.gz and b/docs/index.html.gz differ