NAV Navbar

Overview

Welcome to the MeasureOne API! Our API provides a modern, developer-friendly, RESTful interface to the MeasureOne platform. Our focus is on simplicity, predictability, and consistency of behavior so that you, the developer, can easily integrate our capabilities into your application.

The MeasureOne platform provides four core functions:

  1. Transcript Access
  2. Transcript Data Extraction
  3. Data Standardization
  4. Data Analytics and Metrics

Our API provides endpoints and tools to integrate these capabilities into your application.

We have attempted to provide examples and detailed documentation that should enable you to be up and running quickly, but if you need additional help as you go through integration, please reach out to us at help@measureone.com.

API Access and Protocols

Sample Request

curl "https://api.measureone.com/v2/transcripts/new"
-H "Authorization: bearer <YOUR_API_KEY>"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

Authenticate your account by including your secret key in API requests. To get your testing and production keys, please reach out to us at sales@measureone.com.

Authentication to the API is performed via OAuth2.0 and any API requests without authentication will fail.

The MeasureOne API uses POST requests to communicate and HTTP response codes to indicate status and errors. Unless explicitly specified, all responses come in standard JSON and all requests must include a Content-Type of application/json with a valid JSON body.

Header Parameters Values
Authorization bearer <YOUR_API_KEY>
Content-Type application/json
version 2020011001

Note: The current major version is 2020011001

Hosting

MeasureOne provides two API environments:

Environment Description Host Name
Staging Full API capabilities with a set of test data api-stg.measureone.com
Production Full production capabilities against live data api.measureone.com


API keys are environment specific. Using Staging API keys to access the Production environment or vice versa will generate an authorization error.

Versioning

The current major version of the MeasureOne API is 2020011001 and is passed as a request header while calling the API. If no version number is specified in the request header, the API will default to the version that was live when you first signed up for MeasureOne API keys.

Environment URL
Staging https://api-stg.measureone.com/v2/
Production https://api.measureone.com/v2/

We periodically release changes to our APIs. While we try to remain backward compatible, changes in our API may result in changes to the data or schema structures exposed in the current version. You can refer to the older version of our API here

Endpoints

MeasureOne endpoints are used to integrate transcript files, transcript data and transcript analytics into your workflow.

Resource Endpoint Purpose
Transcripts /transcripts/new

/transcripts/upload

/transcripts/get_by_id

/transcripts/get_digest_by_id

transcript/get_enrollment_summary

/transcripts/get_files
Create a transcript

Upload data for a new transcript

Get data for a transcript

Get the M1-DIGEST for a transcript

Get Enrollment Summary for a transcript

Download transcript files
Schools /schools/get Get the list of schools and related information
TranscriptLINK /transcriptlink/access_transcript

/transcriptlink/verify_mfa
Retrieves the transcript from the school's system

Authenticates the user through Multi-Factor-Authentication
Analytics /analytics/meritscore

/analytics/gradscore
Get the MeritScore a transcript

Get the GradScore a transcript

Sample Use Cases

This section gives you some brief use cases for using the API in your workflow. For complete details please see the full documentation.

Access Verified Transcript

Accessing student's academic record from the school is a cumbersome process. MeasureOne's TranscriptLINK makes it easy to access student's transcript directly from their university account.

One of the key advantages of TranscriptLINK is that establishes the provenance of the of the academic records since it is directly accessed from the school.

On successful retrieval of transcript, you can decide to download the file by calling /transcripts/get_files endpoint or use MeasureOne platform to extract the data and standardize the same as detailed in get extracted transcript data

Get extracted transcript data

One of the key features of the MeasureOne platform is extracting and standardizing data from transcript files, to provide a digital record for easy integration into applications. MeasureOne supports a wide range of file formats, HTML, PDF, rich text documents, MS Word, images, etc.

The MeasureOne API makes it very easy to integrate this processing into any application pipeline. After submitting the document a unique ID for the processing document will be returned.

Once transcript processing has been completed, a webhook notification will be initiated. On receiving this notification, customers call /transcripts/get_by_id with the corresponding transcript ID to get the processed transcript data.

Generate a MeritScore based on user-reported data

The MeritScore is a MeasureOne analytic that correlates credit performance to academic data. Depending on the location within the customer user experience, requesting the user to submit a full transcript may not be appropriate. An important example of such a use case would be a pre-approval stage at the top of a lending funnel. In these cases, using user-reported data to generate a score, which could later be verified by scoring the full transcript, is often the right design.

To address this use case, MeasureOne provides a "Digest" data type that enables customers to submit a summary of the transcript data, rather than the full transcript record itself. This summary is structured so as to be sufficient to generate a MeritScore.

The detailed flow to do this would then be as follows:

First, call /transcripts/new with source_data_type = "M1_DIGEST" and digest data fields in the source_data_value object. This creates a new transcript object and returns its transcript ID in the response.

Then, call /analytics/meritscore for that transcript ID, and you'll get the MeritScore in the response.

TranscriptLINK

Login Screen

MeasureOne TranscriptLINK is a drop-in module that provides a secure, elegant flow accessing student transcripts from Universities. TranscriptLINK makes it secure and easy for users to submit their transcripts to MeasureOne.

Once integrated, The user opts-in to provide their university login credentials and consent to access academic record from University website. Following which, the MeasureOne systems automatically retrieve the user’s transcript.

One of the key advantages of TranscriptLINK is that it ensures that the received information is submitted directly from the school site and is therefore tamper proof.

Integration

Sample Embed Code

<app-transcript-link access_key="5ca3dd-b22a-441c-beb0-6b1b28d9d" 
external_id="app_id" ></app-transcript-link>

TranscriptLINK can be integrated into your application flow through a widget provided by MeasureOne or by calling our APIs. Widget integration needs embed code and a javascript code.

User provides required details on the widget and submits the credentials. Following successful submission of credentials with parameters, MeasureOne confirms connection to user's University account with a success response back to the widget.

Following retrieval of a transcript, MeasureOne will trigger a webhook notification with external_id and transcript_id . It will initiate the transcript processing pipeline. Complete documentation of webhooks associated with the transcript processing pipeline are in the webhook section of this document.


Parameters

Parameters type Source Description
school_id string Widget MeasureOne provided unique identifier of the school. User selects school from the dropdown in the widget
username string Widget User name to login to user's University website where academic record can be accessed
password string Widget Password to authenticate and connect user's University account to MeasureOne
external_id string Customer Application A customer generated unique identifier of the user. It is part of the embed code
access_key string Customer Application MeasureOne provided API access_key. IT is part of the embed code

Access Transcript

Sample Request

curl "https://api.measureone.com/v2/transcriptlink/access_transcript"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json with the input parameters to access_transcript end point

{
 "external_id": "123445",
 "school_id": "sch_e3638c65-daf9-405a-b2d1-e87b3537af75",
 "username": "username",
 "password":"password"
}

Sample Response to access_transcript endpoint

{
    "session_id" : "tls_Cevp4Jw9CIsEeNjpgAAjy2EZt3R"
}

The following endpoints help in integrating TranscriptLINK without using the drop-in module.

POST /transcriptlink/access_transcript

The /transcriptlink/access_transcript endpoint retrieves the transcript from the school's system. The calling system will receive webhook notifications as the transcript moves through the pipeline

Parameters type Required? Description
school_id string Yes MeasureOne provided unique identifier of the school. The school information can be retrieved from /schools/get end point
username string Yes User name to login to user's University website where academic record can be accessed
password string Yes Password to authenticate and connect user's University account to MeasureOne
external_id string Yes A customer generated unique identifier of the user. It is part of the embed code


Response Payload
Response payload returns a session_id. Use HTTP codes to determine if multi-factor authentication is required or not

A 2xx status code indicates the request was received and processed successfully.

Status Code Description
200 OK - The request is successful
202 ACCEPTED - The request is Accepted and mfa is required to complete the authentication

A 4xx status code indicates that the request failed due to a client error. The response body generally includes error_code which can be used to take further action

Status Code Error Code(s) Description
400 MISSING_FIELDS The request failed. Generally due to missng attribute(s)
404 INVALID_CREDENTIALS
SCHOOL_NOT_FOUND
The request failed due to invalid credentials or invalid school_id

Verify MFA Token

Sample Request

curl "https://api.measureone.com/v2/transcriptlink/verify_mfa"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json with the input parameters to verify_mfa end point

{
   "session_id": "tls_Cevp4Jw9CIsEeNjpgAAjy2EZt3R",
   "mfa_token": "51622"
}

Sample Response to verify_mfa endpoint

{
   "session_id" : "tls_Cevp4Jw9CIsEeNjpgAAjy2EZt3R"
}

Many schools ask the user for multi-factor authentication. MeasureOne's TranscriptLINK module supports DUO MFA, if the school has it enabled. The user is expected to provide the One Time Password (OTP) that can be submitted for authenticating the user.

POST /transcriptlink/verify_mfa

The /transcriptlink/verify_mfa endpoint authenticates the user through Multi-Factor-Authentication

Parameters type Required? Description
session_id string Yes MeasureOne provided unique identifier of the session.
mfa_token string Yes One time password token for MFA



Response Payload

The API responds with session_id and HTTP code to indicate status of the mfa request.

A 2xx status code indicates the request was received and processed successfully.

Status Code Description
200 OK - The request is successful

A 4xx status code indicates that the request failed due to a client error. The response body generally includes error_code which can be used to take further action

Status Code Error Code(s) Description
400 MISSING_FIELDS
SESSION_NOT_FOUND
The request failed. Generally due to missng attribute(s) or session not found
404 INVALID_MFA_TOKEN The request failed due to invalid mfa token

Schools

The school resource provided by MeasureOne helps in integrating various functionalities around transcript processing with your application flow. MeasureOne maintains the latest list of schools, their access information and meta-data that you can seamlessly integrate.

Schools Endpoints

Get Schools List

sample_input.json for getting schools

{
  "filters":{
    "country_a2_code": "US"
  }
}

POST /schools/get


The following endpoints help in integrating TranscriptLINK without using the drop-in module.

Parameters type Required? Description
country_a2_code string Yes A2 Code of the country for which you want to fetch the list of schools.

Sample Response

[
{
   "m1_id": "sch_CV8e5Lsvv2S8Wjz9Bpwpr8lm9Ay",
   "name": "University of Michigan-Ann Arbor",
   "sis_url": "https://weblogin.umich.edu",
   "id":"170976",
   "id_type":"IPEDS UNIT ID"
},
{
   "m1_id": "sch_CV8e5DJnP9CJ3pN29BztWZv3KIw",
   "name": "Cuny Bernard M Baruch College",
   "sis_url": "https://home.cunyfirst.cuny.edu/",
   "id":"190512",
   "id_type":"IPEDS UNIT ID"
},
]


Response Payload List of schools in the country specified [School Object]

Transcripts

The Transcript resource is the core resource for the MeasureOne transcript object that represents a user's academic record for one program at a single institution.

The resource provides a CRUD-based interface to the transcript object.

Transcripts are created by submitting "source data". Once a transcript is submitted, MeasureOne initiates the data extraction and standardization process. Following this processing, the transcript is available for the full set of API operations, including scoring and other standard or custom analytics.

Depending on the source data type, the processing may require asynchronous communication, i.e., the processing response will happen at some time after the submission request. In the event of asynchronous communication, once processing of a transcript is complete you'll get a notification through our webhook system. At that point you can get all the processed data for the transcript using /transcripts/get_by_id, get processed Digest fields for the transcript using /transcripts/get_digest_by_id or pass the transcript to MeasureOne's /analytics resources.

Each Transcript resource should refer to a single program within a single institution. A user's academic record that spans multiple programs across multiple institutions should be submitted in separate transactions so that each Transcript resource follows the single-program per institution guideline. Not doing so will most likely result in errors in the extraction and normalization process.

Transcript Endpoints

Create Transcript

Sample Request

curl "https://api.measureone.com/v2/transcripts/new"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

POST /transcripts/new

The /transcripts/new endpoint creates a new transcript object for further processing or to generate analytics.

The request payload should include either a source_data_value object or a source_data_reference object.

If the attribute values for a transcript are known, send the source data inline in the request using the source_data_value object.

If the data is in a document, upload it using the /transcripts/upload endpoint or make it available at a remote location. A reference to the uploaded document should then be included in the request using the source_data_reference object.

sample_input.json with an Inline Source Data Payload

{
 "external_id": "ABCDECD",
 "source_data": [
   {
     "referrer": "USER",
     "source_data_type": "M1_DIGEST",
     "source_data_value": { 
                "degree_type": "BACHELORS",
                "years_in_school": 2.0,
                "min_grade": "D",
                "cgpa": 3.3,
                "last_term_gpa": 3.5,
                "credits_earned": 65.0
              }
   }
 ]
}


Request Payload: With Source Data Sent Inline

Attribute Type Required?
external_id string No
school_unit_id string No
source_data [object] Yes, include one source data object containing the complete academic record for the transcript. Multiple source data objects containing source_data_value attributes will result in an error.


source_data Object:

Attribute Type Required?
referrer string No
source_data_type string
ENUM
Yes, we currently support creating new transcripts with inline payloads in the M1_DIGEST format and M1_TRANSCRIPT format
source_data_value object Yes, in the M1_DIGEST schema or in the M1_TRANSCRIPT schema

sample_input.json with a reference to files uploaded Using /transcripts/upload

{
   "external_id": "ABCDECD",
   "school_unit_id": "420316",
   "source_data": [
      {
         "referrer": "USER",
         "source_data_type": "OTHER",
         "source_data_reference": {
            "uri": "m1://sdr_CaIGVqBRRpETI6fkCyUSpNHbHFo",
            "media_type": "application/pdf"
         }
      },
      {
         "referrer": "USER",
         "source_data_type": "OTHER",
         "source_data_reference": {
            "uri": "m1://sdr_DaKTVqBRRpEEI3fkCbUSpNHbkFm",
            "media_type": "application/pdf"
         }
      }
   ]
}

sample_input.json with a Reference to Files at a Remote Location

{
   "external_id": "ABCDECD",
   "school_unit_id": "420316",
   "source_data": [
      {
         "referrer": "USER",
         "source_data_type": "OTHER",
         "source_data_reference": {
            "uri": "sftp://john.doe:shah@examplesftp.net/path/to/directory/fileY.html",
            "media_type": "text/html"
         }
      },        
      {
         "referrer": "USER",
         "source_data_type": "OTHER",
         "source_data_reference": {
            "uri": "https://example.com/path/to/directory/file_name.extension?query_params1&query_param_2",
            "media_type": "text/html",
            "http_method": "POST",
            "http_headers": {
                "authorization" : "bearer 863268e5-82yr-927h-33ks-h6y82548d284",
                "customer_header": "customer_header_value"
            },
            "http_body": "ESCAPED%20STRING"
        }
      }
   ]
}



Request Payload: With a Reference to Source Data

Attribute Type Required?
external_id string No
school_unit_id string No
source_data [object] Yes, include one or more source data objects with references to documents that, when combined, provide a complete academic record for the transcript


source_data Object:

Attribute Type Required?
referrer string No
source_data_type string
ENUM
Yes, choose OTHER for all source data that isn't an M1_DIGEST or M1_TRANSCRIPT
source_data_reference object Yes


source_data_reference Object for Files Uploaded Using /transcripts/upload:

Attribute Type Required?
uri string Yes, include the m1 scheme uri returned in the response to /transcripts/upload
media_type string Yes


source_data_reference Object for Files Uploaded to a Remote Location:

Attribute Type Required?
uri string Yes
media_type string Yes
http_method string Required for HTTP/S requests
http_headers object Required for HTTP/S requests
http_body string Required for HTTP/S requests


Sample Response

{
   "id": "trc_Cevp4Jw9CIsEeNjpgAAjy2EZt3R",
   "processing_status": "IN_PROGRESS"
}


Response Payload

Transcript Object for the created transcript with the following attributes:

Attribute Type Description
id string ID of the created transcript
processing_status string COMPLETED for transcripts created with source data in inline payloads

IN-PROGRESS for transcripts created with source data in uploaded documents

Upload Transcript Data

Sample Request

curl "https://api.measureone.com/v2/transcripts/upload"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "version: 2020011001"
-F "files[]=@/path/to/fileX.pdf"
-F "files[]=@/path/to/fileY.pdf"
-X POST

Sample Response

[
   {
       "uri": "m1://sdr_CaIGVqBRRpETI6fkCyUSpNHbHFo",
       "file_name": "fileX.pdf",
       "created_at": 1561613398393                 
   },
   {
       "uri": "m1://sdr_DaKTVqBRRpEEI3fkCbUSpNHbkFm",
       "file_name": "fileY.pdf",
       "created_at": 1566455776896
   }
]


POST /transcripts/upload

The /transcripts/upload endpoint is used to upload documents containing source data for a new transcript.


Request Payload

Attribute Type Required?
files [files] Yes
Supported File Types: DOC, HTML, JPG, JSON, PDF, PNG, TIFF, TXT


Response Payload

Array of Source Data Reference Objects, one object for each uploaded document. The uri returned in the response should be used to link the uploaded documents to a new transcript, as in the example here.

Get Transcript

Sample Request

curl "https://api.measureone.com/v2/transcripts/get_by_id"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2"  
}

Sample Response when source_data_type is not M1_DIGEST

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
  "external_id": "ABCDECD",
  "school_unit_id": 151351,
  "source_data": [
    {
      "referrer": "TLINK_SCHOOL",
      "source_data_type": "OTHER",
      "source_data_reference": {
        "uri": "m1://sdr_1KXGeat97YnOR8AHM4AZWYOAcog",
        "media_type": "application/pdf",
        "file_name": "fileX.pdf",
        "created_at": 1556781221243
      }
    }
  ],
  "raw": {
  "transcript_date": "2019-12-18",
  "student_id": "10112ABCD",
  "student": {
    "first_name": "John",
    "last_name": "Doe",
    "middle_name": "N.",
    "prefix": "Mr.",
    "suffix": "Jr.",
    "full_name": "Doe,John N.",
    "former_first_name": "Johnny",
    "former_middle_name": "N.",
    "former_last_name": "Doe",
    "former_full_name": "Doe,Johnny N.",
    "former_suffix": "Jr.",
    "former_prefix": "Mr.",
    "date_of_birth": "1996-03-21",
    "ssn": "XXX-XX-3436",
    "email": "johndoe@example.com",
    "address": {
      "addr1": "3757  Farland Avenue",
      "addr2": "Village View Drive",
      "city": "Liberty Center",
      "state": "FL",
      "zipcode": "33901",
      "country": {
        "name": "United States",
        "a2_code": "US"
      }
    },
    "m1_id": "st_rette2SSjP3GvpVrs5HLol4xor2",
    "other_attributes": {

    }
  },
  "previous_academic_record": [
    {
      "name": "University Of California-Berkeley",
      "id_type": "IPEDS",
      "id": "110635",
      "address": {
        "addr1": "200 California Hall",
        "addr2": null,
        "city": "Berkeley",
        "state": "California",
        "zipcode": "94720",
        "country": {
          "name": "United States",
          "a2_code": "US"
        }
      },
      "start_date": "2014-08-20",
      "end_date": "2015-05-28",
      "degrees": [
        {
          "type": "BACHELORS",
          "status": "WITHDRAWN",
          "awarded_date": null,
          "description": "Bachelors of Science",
          "academic_summary": [
            {
              "credit_type": "SEMESTER",
              "level": "INSTITUTION",
              "cumulative": true,
              "gpa_credits": 27,
              "attempted": 27,
              "earned": 27,
              "gpa": 3.6667,
              "quality_points": 99
            }
          ],
          "field_of_study": [
            {
              "type": "MAJOR",
              "description": "Biology",
              "code_type": "CIP",
              "code": 26
            }
          ],
          "years_of_study": 1,
          "other_attributes": {

          }
        }
      ],
      "other_attributes": {

      }
    }
  ],
  "transcript_institution": {
    "name": "California State University-Bakersfield",
    "id_type": "IPEDS",
    "id": "110486",
    "address": {
      "addr1": "9001",
      "addr2": "Stockdale Hwy",
      "city": "Bakersfield",
      "state": "California",
      "zipcode": "93311",
      "country": {
        "name": "United States",
        "a2_code": "US"
      }
    },
    "other_attributes": {
      "college": null,
      "campus": "Bakersfield"
    }
  },
  "academic_summary": [
    {
      "credit_type": "SEMESTER",
      "level": "TOTAL",
      "cumulative": true,
      "gpa_credits": 91,
      "attempted": 127,
      "earned": 127,
      "gpa": 3.74,
      "quality_points": 341
    }
  ],
  "academic_sessions": [
    {
      "type": "SEMESTER",
      "name": "Fall 2014",
      "start_date": "2014-08-20",
      "end_date": "2014-12-22",
      "in_progress": false,
      "level": "Freshman",
      "honors": [
        "Dean's List"
      ],
      "curriculum_code_type": null,
      "curriculum_code": null,
      "curriculum_name": null,
      "academic_summary": [
        {
          "credit_type": "SEMESTER",
          "level": "TOTAL",
          "cumulative": true,
          "gpa_credits": 0,
          "attempted": 12,
          "earned": 12,
          "gpa": null,
          "quality_points": 0
        }
      ],
      "courses": [
        {
          "credit_basis": "TRANSFER",
          "honors_course": false,
          "repeated": false,
          "count_in_gpa": null,
          "code_type": null,
          "code": null,
          "id": "ENGL 1101",
          "name": "English Comp I",
          "instructional_setting": null,
          "credits": {
            "credit_type": "SEMESTER",
            "gpa_credits": 0,
            "attempted": 3,
            "earned": 3,
            "quality_points": 0,
            "grade_qualifier": null,
            "grade": "TA"
          },
          "start_date": "2014-08-20",
          "end_date": "2014-12-22",
          "other_attributes": {

          }
        }
      ],
      "degrees": [
        {
          "type": "BACHELORS",
          "status": "UNKNOWN",
          "awarded_date": null,
          "description": "Bachelors of Science",
          "academic_summary": [
            {
              "credit_type": "SEMESTER",
              "level": "TOTAL",
              "cumulative": true,
              "gpa_credits": 0,
              "attempted": 12,
              "earned": 12,
              "gpa": null,
              "quality_points": 0
            }
          ],
          "field_of_study": [
            {
              "type": "MAJOR",
              "description": "Biology",
              "code_type": "CIP",
              "code": 26
            }
          ],
          "years_of_study": null,
          "other_attributes": {

          }
        }
      ],
      "other_attributes": {

      }
    },
    {
      "type": "SEMESTER",
      "name": "Spring 2018",
      "start_date": "2018-01-04",
      "end_date": "2018-05-15",
      "in_progress": false,
      "level": "Senior",
      "honors": [
        "Dean's List"
      ],
      "curriculum_code_type": null,
      "curriculum_code": null,
      "curriculum_name": null,
      "academic_summary": [
        {
          "credit_type": "SEMESTER",
          "level": "TOTAL",
          "cumulative": true,
          "gpa_credits": 91,
          "attempted": 127,
          "earned": 127,
          "gpa": 3.74,
          "quality_points": 341
        }
      ],
      "courses": [
        {
          "credit_basis": "REGULAR_ENROLLMENT",
          "honors_course": false,
          "repeated": true,
          "count_in_gpa": true,
          "code_type": null,
          "code": null,
          "id": "CBIO 3800",
          "name": "Neurobiology",
          "instructional_setting": "REGULAR_CLASS",
          "credits": {
            "credit_type": "SEMESTER",
            "gpa_credits": 3,
            "attempted": 3,
            "earned": 3,
            "quality_points": 12,
            "grade_qualifier": null,
            "grade": "A"
          },
          "start_date": "2018-01-04",
          "end_date": "2018-05-15",
          "other_attributes": {

          }
        },
        {
          "credit_basis": "REGULAR_ENROLLMENT",
          "honors_course": false,
          "repeated": false,
          "count_in_gpa": null,
          "code_type": null,
          "code": null,
          "id": "CBIO 3400",
          "name": "Cell Biology",
          "instructional_setting": "REGULAR_CLASS",
          "credits": {
            "credit_type": "SEMESTER",
            "gpa_credits": 3,
            "attempted": 3,
            "earned": 3,
            "quality_points": 9,
            "grade_qualifier": null,
            "grade": "B"
          },
          "start_date": "2018-01-04",
          "end_date": "2018-05-15",
          "other_attributes": {

          }
        }
      ],
      "degrees": [
        {
          "type": "BACHELORS",
          "status": "AWARDED",
          "awarded_date": "2018-05-25",
          "description": "Bachelors of Science",
          "academic_summary": [
            {
              "credit_type": "SEMESTER",
              "level": "TOTAL",
              "cumulative": true,
              "gpa_credits": 91,
              "attempted": 127,
              "earned": 127,
              "gpa": 3.74,
              "quality_points": 341
            }
          ],
          "field_of_study": [
            {
              "type": "MAJOR",
              "description": "Biology",
              "code_type": null,
              "code": null
            }
          ],
          "years_of_study": 4,
          "other_attributes": {

          }
        }
      ],
      "other_attributes": {

      }
    }
  ]
},
"digest": {
    "degree_type": "BACHELORS",
    "years_in_school": 2,
    "min_grade": "D",
    "cgpa": 3.76,
    "last_term_gpa": 3.52,
    "credits_earned": 123
  },

  "processing_status": "COMPLETED",
  "created_at": 1556781225343,
  "updated_at": 1556781257964
}




Sample Response when source_data_type = "M1_DIGEST"

{
 "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
 "external_id": "ABCDECD",
 "source_data": [
   {
     "referrer": "USER",
     "source_data_type": "M1_DIGEST",
     "source_data_value": { 
                "degree_type": "BACHELORS",
                "years_in_school": 2,
                "min_grade": "D",
                "cgpa": 3.3,
                "last_term_gpa": 3.5,
                "credits_earned": 65
              }
   }
 ],
  "digest": {
    "degree_type": "BACHELORS",
    "years_in_school": 2,
    "min_grade": "D",
    "cgpa": 3.3,
    "last_term_gpa": 3.5,
    "credits_earned": 65
  }, 
 "processing_status": "COMPLETED",
 "created_at": 1556781225343,
 "updated_at": 1556781257964
}

POST /transcripts/get_by_id

The /transcripts/get_by_id endpoint allows developers to retrieve transcript metadata and transcript data fields. The endpoint can be used once the processing_status for a transcript is COMPLETE. It will return parsed transcript data as M1_TRANSCRIPT and M1_DIGEST object .

Request Payload

Attribute Type Required?
id string Yes


Response Payload

Transcript Object for the created transcript, in which the raw object is in the M1_TRANSCRIPT schema and digest object is in M1_DIGEST schema.

Get Enrollment Summary

Sample Request

curl "https://api.measureone.com/v2/transcripts/get_enrollment_summary"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2"  
}

Sample Response when source_data_type is not M1_DIGEST

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
  "external_id": "ABCDECD",
  "school_unit_id": 151351,
  "source_data": [
    {
      "referrer": "TLINK_SCHOOL",
      "source_data_type": "OTHER",
      "source_data_reference": {
        "uri": "m1://sdr_1KXGeat97YnOR8AHM4AZWYOAcog",
        "media_type": "application/pdf",
        "file_name": "fileX.pdf",
        "created_at": 1556781221243
      }
    }
  ],
  "enrollment_summary": {
    "transcript_date": "04/13/2016",
    "student_id": "10112ABCD",
    "student": {
      "first_name": "John",
      "last_name": "Doe",
      "middle_name": "N.",
      "prefix": "Mr.",
      "suffix": "Jr.",
      "full_name": "Doe,John N.",
      "former_first_name": "Johnny",
      "former_middle_name": "N.",
      "former_last_name": "Doe",
      "former_full_name": "Doe,Johnny N.",
      "former_suffix": "Jr.",
      "former_prefix": "Mr.",
      "date_of_birth": "1996-03-21",
      "ssn": "XXX-XX-3436",
      "email": "johndoe@example.com",
      "address": {
        "addr1": "3757  Farland Avenue",
        "addr2": "Village View Drive",
        "city": "Liberty Center",
        "state": "FL",
        "zipcode": "33901",
        "country": {
          "name": "United States",
          "a2_code": "US"
        }
      },
      "m1_id": "st_rette2SSjP3GvpVrs5HLol4xor2",
      "other_attributes": {

      }
    },
    "transcript_institution": {
      "name": "California State University-Bakersfield",
      "id_type": "IPEDS",
      "id": "110486",
      "address": {
        "addr1": "9001",
        "addr2": "Stockdale Hwy",
        "city": "Bakersfield",
        "state": "California",
        "zipcode": "93311",
        "country": {
          "name": "United States",
          "a2_code": "US"
        }
      },
      "other_attributes": {
        "college": null,
        "campus": "Bakersfield"
      }
    },
    "degrees": [
      {
        "type": "BACHELORS",
        "status": "AWARDED",
        "awarded_date": "2018-05-25",
        "description": "Bachelors of Science",
        "academic_summary": [
          {
            "credit_type": "SEMESTER",
            "level": "TOTAL",
            "cumulative": true,
            "gpa_credits": 91,
            "attempted": 127,
            "earned": 127,
            "gpa": 3.74,
            "quality_points": 341
          }
        ],
        "field_of_study": [
          {
            "type": "MAJOR",
            "description": "Biology",
            "code_type": null,
            "code": null
          }
        ],
        "years_of_study": 4,
        "other_attributes": {

        }
      }
    ],
    "academic_summary": [
      {
        "credit_type": "SEMESTER",
        "level": "TOTAL",
        "cumulative": true,
        "gpa_credits": 91,
        "attempted": 127,
        "earned": 127,
        "gpa": 3.74,
        "quality_points": 341
      }
    ],
    "academic_sessions": [
      {
        "type": "SEMESTER",
        "name": "Fall 2014",
        "start_date": "2014-08-20",
        "end_date": "2014-12-22",
        "in_progress": false,
        "level": "Freshman",
        "honors": [
          "Dean's List"
        ],
        "curriculum_code_type": null,
        "curriculum_code": null,
        "curriculum_name": null       

      },
      {
        "type": "SEMESTER",
        "name": "Spring 2018",
        "start_date": "2018-01-04",
        "end_date": "2018-05-15",
        "in_progress": false,
        "level": "Senior",
        "honors": [
          "Dean's List"
        ],
        "curriculum_code_type": null,
        "curriculum_code": null,
        "curriculum_name": null

      }
    ],
    "processing_status": "COMPLETED",
    "created_at": 1556781225343,
    "updated_at": 1556781257964
  }
}

POST /transcripts/get_enrollment_summary

The /transcripts/get_enrollment_summary endpoint allows developers to retrieve transcript metadata and a summary of the student’s enrollment for the submitted transcript. The endpoint can be used once the processing_status for a transcript is COMPLETE. It will return the ENROLLMENT_SUMMARY object.

Request Payload

Attribute Type Required?
id string Yes


Response Payload

Transcript Object for the created transcript, with an enrollment_summary object with verified fields from the transcript.

Get Digest

Sample Request

curl "https://api.measureone.com/v2/transcripts/get_digest_by_id"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2"  
}

Sample Response when source_data_type is not M1_DIGEST or M1_TRANSCRIPT

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
  "external_id": "ABCDECD",
  "school_unit_id": 151351,
  "source_data": [
    {
      "referrer": "M1_PORTAL_SCHOOL",
      "source_data_type": "OTHER",
      "source_data_reference": {
        "uri": "m1://sdr_1KXGeat97YnOR8AHM4AZWYOAcog",
        "media_type" : "application/pdf",
        "file_name": "fileX.pdf",
        "created_at": 1556781221243
      }
    }
  ],
  "digest": {
    "degree_type": "BACHELORS",
    "years_in_school": 2,
    "min_grade": "D",
    "cgpa": 3.76,
    "last_term_gpa": 3.52,
    "credits_earned": 123
  },

  "processing_status": "COMPLETED",
  "created_at": 1556781225343,
  "updated_at": 1556781257964
}

POST /transcripts/get_digest_by_id

The /transcripts/get_digest_by_id endpoint allows developers to retrieve transcript metadata and Digest fields. The endpoint can be used once a the processing_status for a transcript is COMPLETE. It will return the M1_DIGEST schema.

Request Payload

Attribute Type Required?
id string Yes


Response Payload

Transcript Object for the created transcript, in which the transcript information is presented in M1_DIGEST schema.

Get Transcript Files

Sample Request

curl "https://api.measureone.com/v2/transcripts/get_files?transcript_id=trc_CV39Blnq2MOHEE2eMQ9C9Cb2LOI" 
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070" 
-H "version: 2020011001"
-X GET --output transcripts.zip

Sample Success Response

File: transcripts.zip

Sample Error Response

{
  "error_code": "INVALID_CREDENTIALS",
  "http_code": 401,
  "request_id": "req_CRT8vDjmSiAynRPIK29CN38d3Pe",
  "error_message": "Unauthorized for the requested operation"
}

GET /transcripts/get_files

The /transcripts/get_files endpoint allows developers to download source data files associated with a transcript. The endpoint returns a ZIP file containing one file (in its original format) per data source for the transcript. This is available only when source data was provided in a document and not an inline payload.

Request Payload

Attribute Type Required?
id string Yes


Response Payload

When the HTTP response code is 200, the response is of type application/zip and returns a ZIP file containing source data files for the transcript. File name will be the transcript ID.

For all other response codes, the response is of type application/json and returns the standard Error object.

Analytics

The resource that provides MeasureOne scores and advance analytics on transcripts.

Send a transcript to an /analytics endpoint when its processing_status = "COMPLETED".

/analytics/meritscore returns MeasureOne's MeritScore for a transcript, a score indicative of default risk.

/analytics/gradscore returns MeasureOne's GradScore for a transcript, a score indicative of graduation likelihood.

MeritScore

Sample Request

curl "https://api.measureone.com/v2/analytics/meritscore"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json

{
  "transcripts": [
    {
      "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2"
    }
  ]
}

Sample Response

{
  "merit_score": 698,
  "aa_code_1": 3,
  "aa_code_2": 1,
  "aa_code_3": 4,
  "version": "v1.2"
}

POST /analytics/meritscore

Generate MeasureOne's MeritScore on a transcript.

The MeritScore can be computed on any transcript that has validated, non-null values for required M1_DIGEST fields and processing_status = "COMPLETED".

M1_DIGEST Attribute Required?
degree_type Yes
years_in_school Yes
min_grade Yes
cgpa Yes
last_term_gpa Yes
credits_earned Yes


Request Parameters

Attribute Type Description
transcripts [string] An array of transcript IDs to be scored

NOTE: MeasureOne currently supports scoring single transcripts and will return an error if more than one id is included in the request
id string MeasureOne generated transcript ID


Response Parameters

Attribute Type Description
merit_score decimal MeasureOne's MeritScore for the requested transcript
aa_code_1 integer First adverse action code that can be used for decline decisions
aa_code_2 integer Second adverse action code that can be used for decline decisions
aa_code_3 integer Third adverse action code that can be used for decline decisions


Adverse Action Reasons

Adverse Action Code Adverse Action Reason
1 Overall academic performance could be improved
2 Academic performance has concerning trend
3 Meaningful progress has not been made toward successful completion of studies
4 Academic performance is not steady and stable

GradScore

Sample Request

curl "https://api.measureone.com/v2/analytics/gradscore"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type: application/json"
-H "version: 2020011001"
-d "@sample_input.json"
-X POST

sample_input.json

{
  "transcripts": [
    {
      "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2"
    }
  ]
}

Sample Response

{
  "grad_score": 652,
  "aa_code_1": 2,
  "aa_code_2": 3,
  "aa_code_3": 1,
  "version": "v1.1"
}

POST /analytics/gradscore

Generate MeasureOne's GradScore on a transcript.

The GradScore can be computed on any transcript that has validated, non-null values for required M1_DIGEST fields and processing_status = "COMPLETED".

M1_DIGEST Attribute Required?
degree_type yes
years_in_school yes
min_grade yes
cgpa yes
last_term_gpa yes
credits_earned yes


Request Parameters

Attribute Type Description
transcripts [string] An array of transcript IDs to be scored
NOTE: MeasureOne currently supports scoring single transcripts and will return an error if more than one id is included in the request
id string MeasureOne generated transcript ID


Response Parameters

Attribute Data Type Description
grad_score decimal MeasureOne's GradScore for the requested transcript
aa_code_1 integer First adverse action code that can be used for decline decisions
aa_code_2 integer Second adverse action code that can be used for decline decisions
aa_code_3 integer Third adverse action code that can be used for decline decisions


Adverse Action Reasons

Adverse Action Code Adverse Action Reason
1 Overall academic performance could be improved
2 Academic performance has concerning trend
3 Meaningful progress has not been made toward successful completion of studies
4 Academic performance is not steady and stable

Type Definitions

School Schema

The school supported by MeasureOne

Attribute Type Description
m1_id string Unique ID of the school identified by MeasureOne
id string Externally recognized Identifier of the school
id_type String Type of externally recognized Identifier. E.g., IPEDS UNIT ID
sis_url string URL to the school's SIS, if available.
name string Name of the school

Transcript Schema

The core Transcript object.

Attribute Type Description
id string Transcript ID, read-only
external_id string A customer generated unique identifier linked to the transcript. Customers may have multiple transcripts linked to the same external_id
school_unit_id string UnitID (as reported in the IPEDS database) of the school and campus that the transcript belongs to
source_data [object] An array of Source Data objects, with one object per source of academic data within the transcript
processing_status string
Enum
Status of data extraction on the transcript, read only
Values: IN-PROGRESS, COMPLETED
raw object Object containing the information about the parsed transcript
digest object Object containing the information about the transcript in a digest format
created_at integer Timestamp for when the transcript was created, read-only
updated_at integer Timestamp for when the transcript was last updated, read-only

Source Data Schema

The Source Data object contains the underlying data for the transcript record. The source data serves as the input to the transcript processing pipeline, i.e., it is the data that is extracted and/or standardized, populating the resulting M1-TRANSCRIPT object. Transcript records can be created with source data from a variety of types, ranging from documents containing unstructured academic data to JSON-based MeasureOne types.

The source data can either be included inline within the source data payload or can be designated by a reference to a remote document containing the data. In the event the source data is inline, the data should be provided in the source_data_value attribute. In the event the data is provided by reference, the reference information is designated in the source_data_reference attribute. These two attributes are exclusive within a Source Data object, i.e., each Source Data object must contain one or the other, but not both. A Source Data object with both value and reference attributes will result in an error.

Attribute Type Description
referrer string Label used to identify the source of the transcript data
source_data_type string
Enum
Format of the source data
Values: M1_DIGEST, M1_TRANSCRIPT, OTHER
source_data_value object Object containing values for source data fields
source_data_reference object Reference information to a document specifying the source data

Source Data Reference Schema

Attribute Type Description
uri string URI scheme for a remote document. The supported schemes include the M1 scheme, an internal scheme used to refer to internal MeasureOne resources. See below for examples.
Supported Schemes: M1, HTTP, HTTPS, FTP, SFTP.
Format: scheme:[//authority]path[?query][#fragment]
media_type string Media type of the source data document
Supported Types: application/pdf, application/json, application/msword, image/jpeg, image/png, image/tiff, text/html, text/plain
http_method string HTTP/S request method
Values: GET, POST
http_headers object HTTP/S request header
http_body object HTTP/S request body
file_name string File name of document uploaded through the /transcripts/upload endpoint, read-only
created_at integer Timestamp for when document containing the source data was provided to MeasureOne, read-only

Source Data Types

MeasureOne supports transcript source data in a variety of formats as detailed in the table below.

Transcript Data Type Format Description
M1_DIGEST JSON
SCHEMA
A lean transcript format that includes select transcript data fields
M1_TRANSCRIPT JSON
SCHEMA
The MeasureOne full transcript payload
OTHER Use this type for all other transcript formats. A common use case for this type is for source data provided in a previously uploaded file containing data that is not M1_DIGEST or M1_TRANSCRIPT (e.g., a PDF or JPEG of a transcript). See below for examples.

M1-Digest Schema

Sample Payload

{ 
    "degree_type": "BACHELORS",
    "years_in_school": 2,
    "min_grade": "D",
    "cgpa": 3.3,
    "last_term_gpa": 3.5,
    "credits_earned": 65
}

The M1_DIGEST type provides a summary representation of a transcript record and includes key transcript attributes and statistics. The Digest format is structured to be sufficient for several MeasureOne transcript analytics, making it a useful format for creating and scoring transcripts based on user-reported data.

Attribute Type Description
degree_type string Granular level of study
Enum: HIGH-SCHOOL-DIPLOMA, ASSOCIATE, BACHELORS, MASTERS, MASTERS-RESEARCH, DOCTORAL, CERTIFICATE, DIPLOMA, NON-DEGREE, PROFESSIONAL, UNDERGRADUATE
years_in_school double Number of years that the student has been enrolled, including any breaks between enrollments
min_grade string Lowest grade earned on a course taken
Enum: A, B, C, D, F
cgpa double Weighted CGPA, in the 0 to 4 scale, for the combination of courses attended at the transcript-issuing school
last_term_gpa double GPA, in the 0 to 4 scale, for the last term of attendance
credits_earned double Total credits earned including transferred credits, converted to a standard semester credit hour system


M1-Transcript Schema


Sample Payload

{
  "transcript_date": "2019-12-18",
  "student_id": "10112ABCD",
  "student": {
    "first_name": "John",
    "last_name": "Doe",
    "middle_name": "N.",
    "prefix": "Mr.",
    "suffix": "Jr.",
    "full_name": "Doe,John N.",
    "former_first_name": "Johnny",
    "former_middle_name": "N.",
    "former_last_name": "Doe",
    "former_full_name": "Doe,Johnny N.",
    "former_suffix": "Jr.",
    "former_prefix": "Mr.",
    "date_of_birth": "1996-03-21",
    "ssn": "XXX-XX-3436",
    "email": "johndoe@example.com",
    "address": {
      "addr1": "3757  Farland Avenue",
      "addr2": "Village View Drive",
      "city": "Liberty Center",
      "state": "FL",
      "zipcode": "33901",
      "country": {
        "name": "United States",
        "a2_code": "US"
      }
    },
    "m1_id": "st_rette2SSjP3GvpVrs5HLol4xor2",
    "other_attributes": {

    }
  },
  "previous_academic_record": [
    {
      "name": "University Of California-Berkeley",
      "id_type": "IPEDS",
      "id": "110635",
      "address": {
        "addr1": "200 California Hall",
        "addr2": null,
        "city": "Berkeley",
        "state": "California",
        "zipcode": "94720",
        "country": {
          "name": "United States",
          "a2_code": "US"
        }
      },
      "start_date": "2014-08-20",
      "end_date": "2015-05-28",
      "degrees": [
        {
          "type": "BACHELORS",
          "status": "WITHDRAWN",
          "awarded_date": null,
          "description": "Bachelors of Science",
          "academic_summary": [
            {
              "credit_type": "SEMESTER",
              "level": "INSTITUTION",
              "cumulative": true,
              "gpa_credits": 27,
              "attempted": 27,
              "earned": 27,
              "gpa": 3.6667,
              "quality_points": 99
            }
          ],
          "field_of_study": [
            {
              "type": "MAJOR",
              "description": "Biology",
              "code_type": "CIP",
              "code": 26
            }
          ],
          "years_of_study": 1,
          "other_attributes": {

          }
        }
      ],
      "other_attributes": {

      }
    }
  ],
  "transcript_institution": {
    "name": "California State University-Bakersfield",
    "id_type": "IPEDS",
    "id": "110486",
    "address": {
      "addr1": "9001",
      "addr2": "Stockdale Hwy",
      "city": "Bakersfield",
      "state": "California",
      "zipcode": "93311",
      "country": {
        "name": "United States",
        "a2_code": "US"
      }
    },
    "other_attributes": {
      "college": null,
      "campus": "Bakersfield"
    }
  },
  "academic_summary": [
    {
      "credit_type": "SEMESTER",
      "level": "TOTAL",
      "cumulative": true,
      "gpa_credits": 91,
      "attempted": 127,
      "earned": 127,
      "gpa": 3.74,
      "quality_points": 341
    }
  ],
  "academic_sessions": [
    {
      "type": "SEMESTER",
      "name": "Fall 2014",
      "start_date": "2014-08-20",
      "end_date": "2014-12-22",
      "in_progress": false,
      "level": "Freshman",
      "honors": [
        "Dean's List"
      ],
      "curriculum_code_type": null,
      "curriculum_code": null,
      "curriculum_name": null,
      "academic_summary": [
        {
          "credit_type": "SEMESTER",
          "level": "TOTAL",
          "cumulative": true,
          "gpa_credits": 0,
          "attempted": 12,
          "earned": 12,
          "gpa": null,
          "quality_points": 0
        }
      ],
      "courses": [
        {
          "credit_basis": "TRANSFER",
          "honors_course": false,
          "repeated": false,
          "count_in_gpa": null,
          "code_type": null,
          "code": null,
          "id": "ENGL 1101",
          "name": "English Comp I",
          "instructional_setting": null,
          "credits": {
            "credit_type": "SEMESTER",
            "gpa_credits": 0,
            "attempted": 3,
            "earned": 3,
            "quality_points": 0,
            "grade_qualifier": null,
            "grade": "TA"
          },
          "start_date": "2014-08-20",
          "end_date": "2014-12-22",
          "other_attributes": {

          }
        }
      ],
      "degrees": [
        {
          "type": "BACHELORS",
          "status": "UNKNOWN",
          "awarded_date": null,
          "description": "Bachelors of Science",
          "academic_summary": [
            {
              "credit_type": "SEMESTER",
              "level": "TOTAL",
              "cumulative": true,
              "gpa_credits": 0,
              "attempted": 12,
              "earned": 12,
              "gpa": null,
              "quality_points": 0
            }
          ],
          "field_of_study": [
            {
              "type": "MAJOR",
              "description": "Biology",
              "code_type": "CIP",
              "code": 26
            }
          ],
          "years_of_study": null,
          "other_attributes": {

          }
        }
      ],
      "other_attributes": {

      }
    },
    {
      "type": "SEMESTER",
      "name": "Spring 2018",
      "start_date": "2018-01-04",
      "end_date": "2018-05-15",
      "in_progress": false,
      "level": "Senior",
      "honors": [
        "Dean's List"
      ],
      "curriculum_code_type": null,
      "curriculum_code": null,
      "curriculum_name": null,
      "academic_summary": [
        {
          "credit_type": "SEMESTER",
          "level": "TOTAL",
          "cumulative": true,
          "gpa_credits": 91,
          "attempted": 127,
          "earned": 127,
          "gpa": 3.74,
          "quality_points": 341
        }
      ],
      "courses": [
        {
          "credit_basis": "REGULAR_ENROLLMENT",
          "honors_course": false,
          "repeated": true,
          "count_in_gpa": true,
          "code_type": null,
          "code": null,
          "id": "CBIO 3800",
          "name": "Neurobiology",
          "instructional_setting": "REGULAR_CLASS",
          "credits": {
            "credit_type": "SEMESTER",
            "gpa_credits": 3,
            "attempted": 3,
            "earned": 3,
            "quality_points": 12,
            "grade_qualifier": null,
            "grade": "A"
          },
          "start_date": "2018-01-04",
          "end_date": "2018-05-15",
          "other_attributes": {

          }
        },
        {
          "credit_basis": "REGULAR_ENROLLMENT",
          "honors_course": false,
          "repeated": false,
          "count_in_gpa": null,
          "code_type": null,
          "code": null,
          "id": "CBIO 3400",
          "name": "Cell Biology",
          "instructional_setting": "REGULAR_CLASS",
          "credits": {
            "credit_type": "SEMESTER",
            "gpa_credits": 3,
            "attempted": 3,
            "earned": 3,
            "quality_points": 9,
            "grade_qualifier": null,
            "grade": "B"
          },
          "start_date": "2018-01-04",
          "end_date": "2018-05-15",
          "other_attributes": {

          }
        }
      ],
      "degrees": [
        {
          "type": "BACHELORS",
          "status": "AWARDED",
          "awarded_date": "2018-05-25",
          "description": "Bachelors of Science",
          "academic_summary": [
            {
              "credit_type": "SEMESTER",
              "level": "TOTAL",
              "cumulative": true,
              "gpa_credits": 91,
              "attempted": 127,
              "earned": 127,
              "gpa": 3.74,
              "quality_points": 341
            }
          ],
          "field_of_study": [
            {
              "type": "MAJOR",
              "description": "Biology",
              "code_type": null,
              "code": null
            }
          ],
          "years_of_study": 4,
          "other_attributes": {

          }
        }
      ],
      "other_attributes": {

      }
    }
  ]
}

The M1_TRANSCRIPT type is MeasureOne's standard format for representing transcript data.

Attribute Type Description
transcript_date string Date on which the transcript was issued.
transcript date should not be a future date
student_id string Unique, school-provided Student ID
student object Object with information about the student, as provided on the transcript
previous_academic_record [object] List of previous academic records provided on the transcript.
transcript_institution object Object with information about the institution for which the transcript was issued.
academic_summary [object] List of objects providing summary information at degree/institution/transfer level
academic_sessions [object] List of academic sessions provided on the transcript


Student Object:

Attribute Type Description
first_name string First name of the student
last_name string Last name of the student
middle_name string Middle name of the student
full_name string Full name of the student
prefix string Prefix to the name
suffix string Suffix to the name
former_first_name string Former first name
former_middle_name string Former middlename
former_last_name string Former last name
former_full_name string Former full name
former_suffix string Prefix to the former name
former_prefix string Suffix to the former name
date_of_birth string Birthdate of the student
date_of_birth should not be a future date
ssn string SSN of the student
email string Email address of the student, as provided on the transcript
address object Student's Address information as provided on the transcript


Address Object:

Attribute Type Description
addr1 string Address line 1
addr2 string Address line 2
Should be populated only if addr1 is populated
city string City
state string State
zipcode string Zipcode for the address
country object Country information


Country Object:

Attribute Type Description
name string Name of the country
a2_code string Alpha-2 code for the country from ISO 3166


Previous Academic Record Object: List of previous academic records provided on the transcript. Should have one of name or degrees for a valid record

Attribute Type Description
name string Name of the institution
id_type string ID Type of the institution
Enum IPEDS,FICE,OTHER`
id string Unique identifier of the institution e.g. Unit ID like 228246
start_date string Start date of the program
end_date string End date of the program
address object Address information of the institution
degrees [object] List of degrees found in this academic record.


Degrees Object: List of degrees found in this academic record. For current institution record, if the degree information is provided outside of academic session, the degree will be mapped to appropriate academic session based on awarded_date and sessnion's start and end date.

Attribute Type Description
type string Level of the degree.
Enum HIGH-SCHOOL-DIPLOMA, ASSOCIATE, BACHELORS, MASTERS, MASTERS-RESEARCH, DOCTORAL, CERTIFICATE, DIPLOMA, NON-DEGREE, PROFESSIONAL, UNDERGRADUATE, UNKNOWN
status string Status of the degree
Enum AWARDED, ENROLLED, WITHDRAWN, TERMINATED, UNKNOWN
awarded_date string Degree awarded date (for graduated students only)
description string Literal name of the degree as presented on the transcript
academic_summary [object] Summary information about the degree
field_of_study [object] List of objects with information about the field of study.


Field Of Study Object:

A field of study object contains information about a course or field of study associated with a degree
Enum: MAJOR,MINOR,CONCENTRATION A valid field_of_Study object must have values for type and description

Attribute Type Description
type string Type of study
Enum: MAJOR,MINOR,CONCENTRATION
description string : Name of the field of study
code_type string : Type of the code used for identifying the field of study E.g. CIP, HEGIS, OTHER
code string : Specifies the code for the field of study associated with the academic record.


Academic Summary Object:
Academic Summary for the context. Represents summary information at a degree or transcript or an academic session level A valid academic summary object must have values for credit_type and level and cumulative_summary

Attribute Type Description
credit_type string Type of credit used Enum: SEMESTER, QUARTER, UNITS, CLOCK_HOURS, CARNEGIE_UNITS, CONTINUING_EDUCATION_UNIT, OTHER
level string The level of the academic summary. Enum: INSTITUTION, TRANSFER, TOTAL
cumulative boolean Boolean indicating whether the summary is cumulative.
gpa_credits decimal Credits attempted on courses that are included in the GPA calculation
Should be a non negative number, if available
attempted decimal Credits attempted
Should be a non negative number, if available
earned decimal Credits earned
Should be a non negative number, if available
gpa decimal Grade Point Average
Should be a non negative number, if available
quality_points decimal Quality points for grade, used in GPA calculation
Should be a non negative number, if available


Transcript Institution Object:

Valid transcript_institution object must have id_type and id, preferred id_type is 'IPEDS'

Attribute Type Description
name string Name of the institution
id_type string Type of ID used to identify given institution E.g. IPEDS, FICE, OTHER
id string Unique identifier of the institute e.g. UNIT_ID of the institution as per IPEDS
address object Object with address information


Academic Sessions Object:

Represents an Academic Session / Term on a transcript. At least one academic session should be available. If academic session object is available then attribute 'type' and one of 'name'/ 'start_date'/ 'end_date' attributes should be available

Attribute Type Description
type string Type of session E.g. SEMESTER, TRIMESTER, QUARTER, FULL_YEAR, MINI_TERM, SUMMER_SESSION, UNKNOWN
name string Name of the session e.g. Fall 2012
start_date string Start Date of the session
end_date string End Date of the session
in_progress boolean Boolean indicating whether the session is in-progress at the time of transcript_date
level string Grade Level or Academic Level of the student for the session
honors [string] Academic honors or awards for the session
Eg: Cum Laude, Summa Cum Laude, Magna Cum Laude
curriculum_code_type string Type of the code used for identifying curriculum E.g. CIP, HEGIS, OTHER
curriculum_code string Code identifying the program in which the student is enrolled for this session
curriculum_name string Name of the program in which the student is enrolled for this session
academic_summary [object] Summary information about this academic session
courses [object] List of courses taken in this academic session.
At least one of the academic sessions should have courses object
degrees [object] List of degrees associated with this academic session.
At least one of the academic sessions should have degrees object


Course Object:

A valid course Object should have one of id or name

Attribute Type Description
credit_basis string Indicates the method of credits earned for the course
Enum: REGULAR_ENROLLMENT TRANSFER ADVANCED_PLACEMENT
honors_course boolean Indicates if it is honors course or not
repeated boolean If the course was repeated by the student
count_in_gpa boolean If the course performance is counted in gpa calculation or not
code_type string Code designating the system/method of code structure used for Identification Code used to describe the content of the course
Enum CIP, HEGIS, OTHER, UNKNOWN
code string Course code information as presented on the transcript
id string Course ID as presented on the transcript
name string Free-form name to describe the content of the course
instructional_setting string Type of instructional setting in which a program is provided
credits object Object with information related to credits for the course
start_date string Course start date
end_date string Course end date


Credits Object:

Attribute Type Description
credit_type string Type of credit used
Enum SEMESTER, QUARTER, UNITS, CLOCK_HOURS, CARNEGIE_UNITS, CONTINUING_EDUCATION_UNIT, OTHER, UNKNOWN
For a valid credits object, credit_type is mandatory
gpa_credits decimal Credits attempted on courses that are included in the GPA calculation
Should be a non negative number, if available
attempted decimal Credits attempted
Should be a non negative number, if available
earned decimal Credits earned
Should be a non negative number, if available
quality_points decimal Quality points for grade, used in GPA calculation
Should be a non negative number, if available
grade_qualifier string The grading scale used by an academic institution for the course
Should be a non negative number, if available
grade string Indicates the grade that a student received for participation in the course
Should be a non negative number, if available



Enrollment Summary Schema


Sample Payload

  "enrollment_summary": {
    "transcript_date": "04/13/2016",
    "student_id": "10112ABCD",
    "student": {
      "first_name": "John",
      "last_name": "Doe",
      "middle_name": "N.",
      "prefix": "Mr.",
      "suffix": "Jr.",
      "full_name": "Doe,John N.",
      "former_first_name": "Johnny",
      "former_middle_name": "N.",
      "former_last_name": "Doe",
      "former_full_name": "Doe,Johnny N.",
      "former_suffix": "Jr.",
      "former_prefix": "Mr.",
      "date_of_birth": "1996-03-21",
      "ssn": "XXX-XX-3436",
      "email": "johndoe@example.com",
      "address": {
        "addr1": "3757  Farland Avenue",
        "addr2": "Village View Drive",
        "city": "Liberty Center",
        "state": "FL",
        "zipcode": "33901",
        "country": {
          "name": "United States",
          "a2_code": "US"
        }
      },
      "m1_id": "st_rette2SSjP3GvpVrs5HLol4xor2",
      "other_attributes": {

      }
    },
    "transcript_institution": {
      "name": "California State University-Bakersfield",
      "id_type": "IPEDS",
      "id": "110486",
      "address": {
        "addr1": "9001",
        "addr2": "Stockdale Hwy",
        "city": "Bakersfield",
        "state": "California",
        "zipcode": "93311",
        "country": {
          "name": "United States",
          "a2_code": "US"
        }
      },
      "other_attributes": {
        "college": null,
        "campus": "Bakersfield"
      }
    },
    "degrees": [
      {
        "type": "BACHELORS",
        "status": "AWARDED",
        "awarded_date": "2018-05-25",
        "description": "Bachelors of Science",
        "academic_summary": [
          {
            "credit_type": "SEMESTER",
            "level": "TOTAL",
            "cumulative": true,
            "gpa_credits": 91,
            "attempted": 127,
            "earned": 127,
            "gpa": 3.74,
            "quality_points": 341
          }
        ],
        "field_of_study": [
          {
            "type": "MAJOR",
            "description": "Biology",
            "code_type": null,
            "code": null
          }
        ],
        "years_of_study": 4,
        "other_attributes": {

        }
      }
    ],
    "academic_summary": [
      {
        "credit_type": "SEMESTER",
        "level": "TOTAL",
        "cumulative": true,
        "gpa_credits": 91,
        "attempted": 127,
        "earned": 127,
        "gpa": 3.74,
        "quality_points": 341
      }
    ],
    "academic_sessions": [
      {
        "type": "SEMESTER",
        "name": "Fall 2014",
        "start_date": "2014-08-20",
        "end_date": "2014-12-22",
        "in_progress": false,
        "level": "Freshman",
        "honors": [
          "Dean's List"
        ],
        "curriculum_code_type": null,
        "curriculum_code": null,
        "curriculum_name": null


      },
      {
        "type": "SEMESTER",
        "name": "Spring 2018",
        "start_date": "2018-01-04",
        "end_date": "2018-05-15",
        "in_progress": false,
        "level": "Senior",
        "honors": [
          "Dean's List"
        ],
        "curriculum_code_type": null,
        "curriculum_code": null,
        "curriculum_name": null   

      }
    ]
  }

The Enrollment Summary type represents MeasureOne's summarized format for representing enrollment in given transcript.

Attribute Type Description
transcript_date string Date on which the transcript was issued.
transcript date should not be a future date
student_id string Unique, school-provided Student ID
student object Object with information about the student, as provided on the transcript
transcript_institution object Object with information about the institution for which the transcript was issued.
academic_summary [object] List of objects providing summary information at degree/institution level
degrees [object] List of degrees associated with this transcript.
academic_sessions [object] List of academic sessions provided on the transcript (without courses, degrees and academic summary)

Webhooks

MeasureOne uses webhooks to notify client applications of certain events. Whenever a notification event occurs we'll submit a POST to your designated webhook URL with information about the event. The webhook URL is configured as part of the onboarding process.

Webhook Security

MeasureOne's webhook supports OAuth 2.0 and Basic Auth for authorization. The API key configured during the setup of the webhook in the customer onboarding process, will be present in the Authorization header. In addition, the User-Agent for the requests will have the prefix M1-Webhook/.

Webhook Payload

Sample Webhook Payload

{
   "transcript_id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
   "external_id": "ABCDECD",
   "event": "transcript.created"
}
Attribute Type Description
transcript_id string MeasureOne generated transcript ID
external_id string A customer generated unique identifier linked to the transcript. Customers may have multiple transcripts linked to the same external_id.
event
DEFINITIONS
string
ENUM
Transcript events that trigger webhook notifications

Webhook Events

The current supported notification events are in the following table:

Event Description
transcript.created The transcript object has been created and is pending processing to extract data
"processing_status": "PENDING"
transcript.processed The transcript object has been processed and data is available to be pulled
"processing_status": "COMPLETED"

Responding to Webhooks

To acknowledge receipt of a webhook, your endpoint should return a 2xx HTTP status code. Any other information returned in the response headers or response body is ignored.

Status Codes

Sample Error Object

{
  "error_code": "INVALID_CREDENTIALS",
  "http_code": 401,
  "request_id": "req_CRT8vDjmSiAynRPIK29CN38d3Pe",
  "error_message": "Unauthorized to perform the requested operation"
}

MeasureOne uses standard HTTP response codes for success and failure notifications.


2xx Success

A 2xx status code indicates the request was received and processed successfully.

Status Code Description
200 OK - The request is successful


4xx Client Errors

A 4xx status code indicates that the request failed due to a client error. The response body generally includes more details about the failure.

Status Code Description
400 Bad Request - The request failed. This is most commonly the result of failing to include all required fields or failing validation on the object.
401 Unauthorized - Authentication with the API failed. Make sure you are using the correct API key.
403 Forbidden - You do not have permission to access the requested resource.
404 Not Found - The requested resource could not be found.
409 Conflict - The request failed due to a resource conflict. This can occur if you attempt to delete a resource that is needed for the functioning of other resources.


5xx Server Errors

A 5xx status codes is returned if something goes wrong on MeasureOne's end

Status Code Description
500 Internal Server Error - Something has gone wrong on MeasureOne's end while attempting to process the request. Our engineering team has been notified of the issue.