Buzz API

Listing on/off state for domain scoring objectives

Follow
Matthew Marichiba

Hi, I'm accessing the new multi-outcome grading features for my client and I need help figuring out how to construct a domain's full list of enabled objectives. From what I can see, the multi-outcome objectives come from two places:

1) Inherited from a master list in our root domain which applies to all subdomains. (Ex: `cmd=listobjectivesets&domainid=//rootdomainprefix&query=/owner="SCORING`, which produces the inherited set of objectives)

2) Stored in the SCORING objective set in a specific domain.  (Ex: `cmd=listobjectivesets&domainid=//subdomainprefix&query=/owner="SCORING"`, which produced the set of domain-specific objectives)

What I don't see is where each outcome's on/off state is stored. Without that, I don't know which outcomes from both lists are actually relevant for courses created in a given domain. Can you tell me how to pull that from the API?

Thanks!

Matthew
www.productops.com

PS- Below is the data I'm talking about, as represented in the UI.

From Admin > Domains > Edit Settings > Course Options > Scoring Objectives:

From there, click Edit:

Comments (4)

Sort by
Brad Marshall
  • Agilix team member

Multi-outcome Scoring (MOS) objectives are stored as objectives as you have listed, but the flagging of them to be applicable to a domain are stored in the Domain Settings. The API command that retrieves this is GetDomainSettings. It performs a merge of all parent domains.

The visibility of the MOS objectives is stored in the settings.xml for Buzz. The on/off state is stored in the settings.xml with an attribute of remove-item="true". For example:

<scoring-objective-list>
<scoring-objective guid="******" color="#EB7928" />
<scoring-objective guid="******" remove-item="true" />
</scoring-objective-list> 
0 Comment actions Permalink
Matthew Marichiba

Thanks for the response, Brad. Unfortunately, I'm not seeing what you describe. Can you please take a look at my specific calls and tell me where I'm going wrong?

First, GetDomainSettings takes a path to the settings.xml file, which I think is always public/shadow/app/buzz/settings.xml. If there's another one, I haven't found it. So I use that.

In the GetDomainSettings result I see the list of inherited MOS objectives, but not the domain-specific ones. I don't see any evidence of the remove-item attribute you mentioned above. For example, f I disable one of the inherited objectives in the UI, then that objective simply does not show in GetDomainSettings. For example, I see the list below which correctly shows 4 enabled inherited MOS objectives (of 5 total), but my two domain-specific objectives (one of which is enabled) are nowhere.

<scoring-objective-list>
  <scoring-objective guid="cb5e9e81-..." color="#48aab0"/>
  <scoring-objective guid="4763a459-..." color="#AEE372"/>
  <scoring-objective guid="a15680ee-..." color="#ED9321"/>
  <scoring-objective guid="7b5d7d63-..." color="#9462D0"/>
</scoring-objective-list>
 
Here's the call: 
 
Help! Where are those darn domain-specific MOS objectives? Thanks!
Matthew

 

0 Comment actions Permalink
Brad Marshall
  • Agilix team member

The domain-specific settings, including the flagging of the MOS objectives, is a resource. For example:

https://api.agilixbuzz.com/cmd/getresource?&entityid=***&path=public/shadow/app/buzz/settings.xml

NOTE: Entity ID removed.

GetDomainSettings is the finalized product after having removed all items that have the "remove-item" attribute and merging a particular domain's settings with all parent domain's settings. 

 

0 Comment actions Permalink
Matthew Marichiba

The trick that got me working is using the POST method instead of GET to specify merge behavior. To correctly merge the objectives lists from the domain lineage, you have to specify the guid as the merge key in the POST content. At the time I write this, the docs for GetDomainSettings aren't super clear about how to post the key. What saved me was watching Buzz do the calls itself.

Here's what worked for me:

POST

cmd=getdomainsettings&domainid=//PREFIX&path=public/shadow/app/buzz/settings.xml

POST body:

<settings><scoring-objective-list key="guid" /></settings>

 

Thanks!

 

 

0 Comment actions Permalink
Please sign in to leave a comment.