Instructure Developer Documentation Portal
Community
  • Introduction
  • Services
    • Elevate Standards Alignment - AB Connect API
      • Introduction
        • Authentication
        • Addressing Object Properties
        • Requesting Additional Properties in the Response
        • Filtering Using ODATA Like Statements
        • Sorting
        • Facets
        • Paging Data
        • Call Throttling
        • Working with Related Object
        • Error Responses
        • Character Set Support
        • How To Articles, Recommendations and Suggestions
        • Examples
        • Using AB Connect's Embeddable Widgets
      • Reference
        • Standards
        • Standard Collections
        • Events
        • Topics
        • Concepts
        • Assets
        • Asset Definitions
        • Asset Collections
        • Managing and Predicting Relationships
        • Providers
    • Canvas LMS
      • Basics
        • GraphQL
        • API Change Log
        • SIS IDs
        • Pagination
        • Throttling
        • Compound Documents
        • File Uploads
        • API Endpoint Attributes
        • Masquerading
      • OAuth2
        • OAuth2 Overview
        • OAuth2 Endpoints
        • Developer Keys
      • Resources
        • Access Tokens
        • Account Calendars
        • Account Domain Lookups
        • Account Notifications
        • Account Reports
        • Accounts
        • Accounts (LTI)
        • Admins
        • Analytics
        • Announcement External Feeds
        • Announcements
        • API Token Scopes
        • Appointment Groups
        • Assignment Extensions
        • Assignment Groups
        • Assignments
        • Authentication Providers
        • Authentications Log
        • Blackout Dates
        • BlockEditorTemplate
        • Blueprint Courses
        • Bookmarks
        • Brand Configs
        • Calendar Events
        • Collaborations
        • CommMessages
        • Communication Channels
        • Conferences
        • Content Exports
        • Content Migrations
        • Content Security Policy Settings
        • Content Shares
        • Conversations
        • Course Audit log
        • Course Pace
        • Course Quiz Extensions
        • Course Reports
        • Courses
        • Custom Gradebook Columns
        • Developer Key Account Bindings
        • Developer Keys
        • Discussion Topics
        • Enrollment Terms
        • Enrollments
        • ePortfolios
        • ePub Exports
        • Error Reports
        • External Tools
        • Favorites
        • Feature Flags
        • Files
        • Grade Change Log
        • Gradebook History
        • Grading Period Sets
        • Grading Periods
        • Grading Standards
        • Group Categories
        • Groups
        • History
        • InstAccess tokens
        • JWTs
        • Late Policy
        • Learning Object Dates
        • Line Items
        • LiveAssessments
        • Logins
        • LTI Launch Definitions
        • LTI Registrations
        • LTI Resource Links
        • Media Objects
        • Moderated Grading
        • Modules
        • Names and Role
        • New Quiz Items
        • New Quizzes
        • New Quizzes Accommodations
        • New Quizzes Reports
        • Notification Preferences
        • Originality Reports
        • Outcome Groups
        • Outcome Imports
        • Outcome Results
        • Outcomes
        • Pages
        • Peer Reviews
        • Planner
        • Poll Sessions
        • PollChoices
        • Polls
        • PollSubmissions
        • Proficiency Ratings
        • Progress
        • Public JWK
        • Quiz Assignment Overrides
        • Quiz Extensions
        • Quiz IP Filters
        • Quiz Question Groups
        • Quiz Questions
        • Quiz Reports
        • Quiz Statistics
        • Quiz Submission Events
        • Quiz Submission Files
        • Quiz Submission Questions
        • Quiz Submission User List
        • Quiz Submissions
        • Quizzes
        • Result
        • Roles
        • Rubrics
        • Sandboxes
        • Score
        • Search
        • Sections
        • Services
        • Shared Brand Configs
        • SIS Import Errors
        • SIS Imports
        • SIS Integration
        • Smart Search
        • Submission Comments
        • Submissions
        • Tabs
        • Temporary Enrollment Pairings
        • User Observees
        • Users
        • What If Grades
      • Outcomes
        • Outcomes CSV Format
      • Group Categories
        • Group Categories CSV Format
      • SIS
        • SIS CSV Format
      • External Tools
        • LTI
          • Introduction
          • Registration
          • Launch Overview
          • Configuring
          • Variable Substitutions
          • Deep Linking
          • Grading
          • Provisioning
          • PostMessage
          • Platform Notification Service
          • Placements
            • Placements Overview
            • Navigation
            • Homework Submission
            • Editor Button
            • Migration Selection
            • Link Selection (Modules)
            • Assignment Selection
            • Collaborations
        • xAPI
        • Canvas Roles
        • Plagiarism Detection Platform
          • Overview
          • Plagiarism Detection Platform Assignments
          • Plagiarism Detection Platform Users
          • Plagiarism Detection Submissions
          • Webhooks Subscriptions for Plagiarism Platform
          • JWT Access Tokens
      • Data Services
        • Live Events
          • Overview
            • Introduction
            • Setup
            • Caliper
            • Metadata
          • Event Format
            • Canvas
              • Account
              • Asset
              • Assignment
              • Attachment
              • Content
              • Conversation
              • Course
              • Discussion
              • Enrollment
              • Grade
              • Group
              • Learning
              • Logged
              • Module
              • Outcome
              • Outcomes
              • Plagiarism
              • Quiz
              • Rubric
              • Sis
              • Submission
              • Syllabus
              • User
              • Wiki
            • Caliper IMS 1.1
              • Assessment
              • Basic
              • Forum
              • Grading
              • Navigation Events
              • Session
    • Catalog
      • APIs
        • Analytics
        • Bulk Enrollments
        • Catalogs
        • Certificates
        • Completed Certificates
        • Courses
        • Email Domain Set
        • Enrollments
        • Orders
        • Programs
        • Progresses
        • Tags
        • User Registrations
        • Users
        • Waitlist Applicants
    • Credentials
      • Getting Started
      • Authentication
        • Password-Based Authentication
        • Authorization Code-Based Authentication
      • Pagination
      • APIs
        • Assertions
        • Backpack
        • Badgeclasses
        • Issuers
        • Organizations
        • Users
      • Release Notes
    • Data Access Platform
      • Key Concepts
      • Data Formats
      • Rate Limits & Policies
      • Datasets
        • Namespaces
          • canvas
            • canvas types
          • canvas_logs
          • catalog
        • Additional Notes
        • Entity Relationship Diagram
      • Query API
        • Authentication
        • Reference
      • Command Line (DAP CLI)
        • Getting Started
        • Secure Connection
        • Reference
          • dap snapshot
          • dap incremental
          • dap list
          • dap schema
          • dap initdb
          • dap syncdb
          • dap dropdb
      • Client Library
        • Examples
        • Reference
      • Release Notes
      • Status
    • DataSync
      • Interop API
      • Interop Data API
      • Grades Exchange API
      • OneRoster API
      • Platform API
    • Instructure Media
      • API Reference
        • Captions
        • Collection
        • Courses
        • Group
        • Insights
        • Media
        • Media Upload
        • Ping
        • Professional Captioning
        • Tags
        • Transfer Media
        • User
    • Quizzes
      • Quiz API
Powered by GitBook

Copyright © 2008-2024 Instructure, Inc. All rights reserved. Various trademarks held by their respective owners.

On this page

Was this helpful?

  1. Services
  2. Elevate Standards Alignment - AB Connect API
  3. Reference

Asset Collections

When there is a need to quickly identify and refer to a filtered collection of assets, the "Asset Collection" is what provides a solution. Asset Collection stores the filters object with a name and a guid as reference.

  • The "filters" is a JSON object that stores "assetType" and "facets". Searching filters are generated from this object to narrow down the result set the client wants to use.

  • The "name" identifies the asset collection in human readable format.

  • The "guid" identifies the asset collection in machine readable format.

The "filters" object

The "filters" object stores the filtering expression for the asset collection. This stores facets and asset types which helps to filter to only the desired assets.

Here is a formal description about the filters object. For a practical explanation see the example below.

  • filters (object, required) - JSON API object for filters object containing various fields like: assetType and facets.

    • assetType (string) - The Asset type defines the Asset's structure and is setup by in Academic Benchmarks an Administrative User.

    • facets (array) - List of facets derived from the Asset Definition.

      • (object)

        • label (string) - Name of the facet. Derived from Asset Definition: data[n].attributes.properties[m].label

        • id (string) - Same as label.

        • field (object) - The field object for the property. Derived from Asset Definition: data[n].attributes.properties[m].field.

          • name (string) - The API-recognized name for the entity you are filtering by. This is the property you would use when asking for facets.

          • id (string) - API identifier for the field which uniquely identifies the entity being filtered by. This is the property you would use when constructing your filter statement as the key field.

        • facet (object) - The facets object for the property. Derived from Asset Definition: data.[n].attributes.properties.[m].facet

          • name (string) - The API Identifier for the human-readable property in the facets response.

          • id (GUID) - The API Identifier for the entity-unique property in the facets response. This is the property you would use when constructing your filter statement and thus must correspond with the values in this entity’s field.id.

        • selectedFilters (array) - The list of selected values for the queries.

          • (object) - This objects holds the elements to which the facid.id refers.

            • data (object) - The object details for this facet item. See the definition of the object for the specific facet for details, but they all have at least the descr and guid.

              • descr (string) - Facet value text.

              • guid (GUID) - Facet value GUID.

              • code (string) - Facet value code name.

Asset filtering expression

Filtering an asset query by a "field" and different "values" in AB API looks like this:

    filter[asset] = field_1 in (value_A, value_B)

With multiple fields it look like this:

    filter[asset] = field_1 in (value_A, value_B) and field_2 in (value_C, value_D)

Similar filters are created from the filters object. The left side of the query is the same. On the right side the expressions divided by the and are generated from the filters.facets list elements. The field_1 and field_2 are defined by field.id. The "values" are those items in the selectedFilters object which have the object-path defined in the facet.id. If facet.id == "a.b" then the values will be selectedFilters[i].a.b.

Example to build a "filter expression" from the "filters" object

Here is a filters object. Let's see how filter expression can be generated from it step-by-step:

        "filters": {
          "assetType": "NLP_MHE",
          "facets": [
            {
              "label": "Grade",
              "id": "Grade",

              "field": {
                "name": "education_levels.grades",
                "id": "education_levels.grades.guid"
              },
              "facet": {
                "name": "data.descr",
                "id": "data.guid"
              },
              "selectedFilters": [
                {
                  "data": {
                    "descr": "Kindergarten",
                    "guid": "F1F9FA12-3B53-11E0-A421-F4B24952E9DF",
                    "code": "K",
                    "seq": 20
                  }
                },
                {
                  "data": {
                    "descr": "9th Grade",
                    "guid": "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22",
                    "code": "9",
                    "seq": 20,
                  }
                },
              ],
            },
            {
              "id": "Subject",
              "label": "Subject",
              "field": {
                "name": "disciplines.subjects",
                "id": "disciplines.subjects.ids"
              },
              "facet": {
                "name": "data.descr",
                "id": "data.guid"
              },
              "selectedFilters": [
                {
                  "data": {
                    "descr": "Mathematics",
                    "guid": "495E9DFF-3B53-11E0-B042-C4B222F1FB2F",
                    "code": "MATH"
                  },
                  "count": 2488
                }
              ]
            }
          ]
        }

The left side of the expression starts with filter[asset] =. There are two elements in the filters.facets array, so there will be two expressions on the right side. For example expressions expr_1 and expr_2. These are the basis of the filtering. The expr_1 is built up from filters.facets[0] and the expr_2 is built up from filters.facets[1].

    filter[asset] = expr_1 and expr_2

Expressions are built up from a "field" and set of "values". The filter will give back those assets which have given the "values" on the given "field".

    expr: field in (values)

Let's find the "field" values. In the JSON object the "field" is defined by field.id.

facets[0].field.id = "education_levels.grades.guid"`
facets[1].field.id = "disciplines.subjects.ids"

Substitute these as "fields" into the filter expression.

    filter[asset] = education_levels.grades.guid in (values_1) and disciplines.subjects.ids in (values_2)

Let's find the "values". The variables' names that are holding the "values" are defined by the facet.id. The "values" are those items in the selectedFilters object which have the object-path defined in the facet.id.

The variable for "values_1" is facet.id = "data.guid". Let's gather the values from selectedFilters.data.guid and generate the "values_1".

    selectedFilters[0].data.guid = "F1F9FA12-3B53-11E0-A421-F4B24952E9DF"
    selectedFilters[1].data.guid = "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22"
    ==> 
    values_1 = "F1F9FA12-3B53-11E0-A421-F4B24952E9DF", "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22"

The variable for "values_2" is facet.id = "data.guid". Let's gather the values from selectedFilters.data.guid and generate the "values_2".

    selectedFilters[0].data.guid = "495E9DFF-3B53-11E0-B042-C4B222F1FB2F"
    ==> 
    values_2 = "495E9DFF-3B53-11E0-B042-C4B222F1FB2F"

Finally substitute the "values" into the filter expression:

    filter[asset] = education_levels.grades in ("F1F9FA12-3B53-11E0-A421-F4B24952E9DF", "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22") and disciplines.subjects.ids in ("495E9DFF-3B53-11E0-B042-C4B222F1FB2F")

This example will filter only those assets which are in the grade: "Kindergarten" or "9th Grade" and are in the subject: "Mathematics".

Asset Collection

When there is a need to quickly identify and refer to a filtered collection of assets, the "Asset Collection" is what provides a solution. Asset Collection stores the filters object with a name and a guid as reference.

List All Asset Collections

  • To list Asset Collections the partner has access to, send a GET to the endpoint.

  • To find an Asset Collection by exact name, send a GET to the endpoint with the collection_name parameter. This gives back only the case sensitive exact match if there is any.

  • To search Asset Collections by name, send a GET to the endpoint with the search_collection_name parameter. This search uses case insensitive partial matching.

Create a new Asset Collection

To create an Asset Collection within the AB Connects system, you send a POST request to the endpoint. The body of the POST contains the Asset Collection definition in JSON format.

The response will be the same as a GET by GUID request for the created Asset Collection. See in the "Retrieving the Details of an Asset Collection".

Working with Assets Collection

Retrieving the Details of an Asset Collection

To get the Asset Collections you've created, call the endpoint with a GET while supplying the AB GUID for the Asset Collection. To retrieve the GUID, use the list and search functionality.

Modifying an Asset Collection

To update an Asset Collection, send a PATCH to the Asset Collection URL (with GUID) sending JSON in the body similar to that in the create statement. The JSON body only needs to contain the attributes that need to be updated. You can update the name, filters or advanced_search fields for the Asset Collection. You can update only one of these or all.

The response will contain the modified Asset Collection just as it would be in a GET by GUID request for the created Asset Collection. See in the "Retrieving Assets Collection".

Deleting an Asset Collection

To delete an Asset Collection you've created, send a DELETE the endpoint while supplying the AB GUID for the Asset Collection. If you have the name for the Asset Collection but not the AB GUID, see the section on searching for Asset Collections.

PreviousAsset DefinitionsNextManaging and Predicting Relationships

Last updated 7 months ago

Was this helpful?

get
Query parameters
partner.idstringRequired

Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account.

auth.signaturestringRequired

Signature for the request authorization.

auth.expiresstringRequired

Expiration timestamp for the authorization.

fields[asset_collections]stringOptional

comma separated list of field names

filter[asset_collections]stringOptional

an ODATA-like query string used to filter

sort[asset_collections]stringOptional

a comma separated list of property names specifying the sort order of the returned results

limitnumberOptional

The page size for the response dataset. limit must be 100 or less.

offsetnumberOptional

How far into the dataset you are paging

Responses
200
OK
application/json
400
Bad Request
application/json
401
Authentication Error
application/json
get
GET /rest/v4.1/asset_collections HTTP/1.1
Host: api.abconnect.instructure.com
Accept: */*
{
  "links": {
    "self": "text",
    "first": "text",
    "last": "text",
    "next": "text",
    "prev": "text"
  },
  "meta": {
    "took": 1,
    "limit": 1,
    "count": 1,
    "offset": 1
  },
  "data": [
    {
      "guid": "text",
      "name": "text",
      "filters": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "advanced_search": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    }
  ]
}
get
Path parameters
guidstringRequired

guid of specified asset collection

Query parameters
partner.idstringRequired

Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account.

auth.signaturestringRequired

Signature for the request authorization.

auth.expiresstringRequired

Expiration timestamp for the authorization.

fields[asset_collections]stringOptional

comma separated list of field names

Responses
200
OK
application/json
400
Bad Request
application/json
401
Authentication Error
application/json
404
Entity not found
application/json
get
GET /rest/v4.1/asset_collections/{guid} HTTP/1.1
Host: api.abconnect.instructure.com
Accept: */*
{
  "links": {
    "self": "text"
  },
  "meta": {
    "took": 1
  },
  "data": {
    "guid": "text",
    "name": "text",
    "filters": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    },
    "advanced_search": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}
  • The "filters" object
  • Asset filtering expression
  • Example to build a "filter expression" from the "filters" object
  • Asset Collection
  • List All Asset Collections
  • GET/asset_collections
  • Create a new Asset Collection
  • POST/asset_collections
  • Working with Assets Collection
  • Retrieving the Details of an Asset Collection
  • GET/asset_collections/{guid}
  • Modifying an Asset Collection
  • Deleting an Asset Collection
post
Query parameters
partner.idstringRequired

Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account.

auth.signaturestringRequired

Signature for the request authorization.

auth.expiresstringRequired

Expiration timestamp for the authorization.

Body
Responses
201
Created
application/json
400
Bad Request
application/json
401
Authentication Error
application/json
409
Conflict
application/json
422
Unprocessable content
application/json
post
POST /rest/v4.1/asset_collections HTTP/1.1
Host: api.abconnect.instructure.com
Content-Type: application/json
Accept: */*
Content-Length: 58

{
  "data": {
    "name": "text",
    "filters": {},
    "advanced_search": {}
  }
}
{
  "links": {
    "self": "text"
  },
  "meta": {
    "took": 1
  },
  "data": {
    "guid": "text",
    "name": "text",
    "filters": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    },
    "advanced_search": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}