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 three core functions:

  1. Transcript Access and Retrieval
  2. Transcript Data Extraction and Standardization
  3. 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 support@measureone.com.

API Access and Protocols

Sample Request

curl "https://api.measureone.com/v1/transcripts/new"
-H "Authorization: bearer <YOUR_API_KEY>"
-H "Content-Type:application/json"
-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 support@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

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 v1 and is passed in the URL to call MeasureOne endpoints as follows:

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

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.

Endpoints

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

Resource Endpoint Purpose
Transcripts /transcripts/new

/transcripts/get_by_id

/transcripts/get_files
Create a transcript

Get data for a transcript

Download transcript files
Analytics /analytics/meritscore Score 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.

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 all the raw and standardized values for the transcript.

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.

Transcript Portal

The MeasureOne Transcript Portal is an embeddable web front-end that provides a complete user experience for accessing and submitting transcripts and/or academic data information to the MeasureOne platform. The Transcript Portal is designed to be embedded in your application flow and has a wide range of configuration options that ensure that the experience matches your branding and UX preferences.

The Transcript Portal access model is "opt-in". After the user provides consent, he/she is directed to their school's transcript access site. After entering their credentials, they are guided through a simple experience to capture and submit their transcript data.

The following picture illustrates the Transcript Portal flow:

Transcript Portal flow

One of the advantages of the Transcript Portal is that it ensures that the received information is submitted directly from the school site and is therefore tamper proof. Nonetheless, the Transcript Portal also offers a configuration to allow users to submit external documents (e.g., documents from their device). Documents submitted in this manner will be tagged so, to distinguish from the direct school submissions.

Portal Integration

To have your users submit transcripts directly from their school site, you should redirect them from your site to the Portal using a redirection URL. The structure of this URL is

https://<customername>.measureone.com/start?info=<ENCRYPTED_STRING>

where start?info=<ENCRYPTED_STRING> is an optional element that and may be used to pass one or more of the Redirection Parameters as defined below.

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

Following this notification, to retrieve transcript files submitted by your users, call /transcripts/get_files with the corresponding transcript ID.

Redirection Parameters

Parameters passed in the redirection URL must be encrypted using AES/CBC/PKCS5Padding and encoded to Base64 format. The secret encryption key is established during the MeasureOne onboarding process.

Parameter Data Type Sample Value Description
external_id string "ABCDECD" A customer generated unique identifier like an Application ID or Reference ID, that MeasureOne will attach to the submitted transcripts, for the customer to link them back to the right user.
Portal Impact: Avoid having the user input identifiers in the Portal
school_unit_id integer 151351 UnitID (as reported in the IPEDS database) of the school and campus for which a transcript needs to be submitted.
Portal Impact: Skip school name input in the Portal
degree_type string
ENUM
"UNDERGRADUATE" Include this in the redirection URL, if the user is required to submit older transcripts along with their current or most recent transcript.
Portal Impact: Skip input in the portal
Values: UNDERGRADUATE, GRADUATE

Transcripts

The Transcript resource is the core resource for the MeasureOne transcript object that represents a user's academic record. The resource provides a CRUD-based interface to the transcript object.

Transcripts are created by submitting "source data", which is then extracted and/or normalized into MeasureOne's standard definitions. The source data can be one of several types, including digital payloads, structured documents (e.g., PDF, HTML), or images.

Once a transcript file is submitted, MeasureOne initiates the data extraction and standardization process. Following this processing, the transcript is available in digital form and can be used for a variety of 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 comnunication, once processing of a transcript file is complete you'll get a notification through our webhook system. At that point you can then get all the processed data for the transcript using /transcripts/get_by_id or pass the transcript to MeasureOne's /analytics resources.

Transcript Schema

The core Transcript object.

Attribute Type Description
id string 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.
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
Values: PENDING, COMPLETED
processed_data object A JSON object that adopts MeasureOne's M1 Transcript schema, and for each attribute in the schema, provides raw data values extracted from the transcript file and standardized values that conform to MeasureOne's standard definitions
created_at integer Timestamp for when the transcript was created
updated_at integer Timestamp for when the transcript was last updated

Source Data Schema

The Source Data object contains the raw source data for the transcript record. The source data serves as the input to the transcript processing pipeline, i.e., it is the source data that is extracted and standardized. The source data can be one of several types, including digital payloads, structured documents, and images. When transcript data is broken up over multiple documents, each document has its own source data object.

Attribute Type Description
id string Transcript source data ID
referrer string A label that may be used to identify the source of the transcript data. When the Transcript Portal is used to create transcripts, this field helps identify direct school submissions versus files uploaded by the user.
source_data_type string
ENUM
Format of the incoming transcript data
Values: M1_DIGEST, M1_TRANSCRIPT, TRANSCRIPT_FILE
source_data_value object A JSON object containing values for transcript fields in either the M1_DIGEST or M1_TRANSCRIPT format
created_at integer Timestamp for when the data source was added to the transcript

Transcript Data Types

MeasureOne supports transcript 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 standardized transcript payload
TRANSCRIPT_FILE File
HTML, PDF, Rich text, MS Word, Images
File-based transmission of the transcript data

M1 Digest Schema

Sample Payload

{ 
    "degree_type": "BACHELORS",
    "years_in_school": 2.0,
    "min_grade": "D",
    "cgpa": 3.3,
    "last_term_gpa": 3.5,
    "credits_earned": 65.0
}

The M1_DIGEST object provides a summary representation of a transcript record. The digest format is structured to be sufficient for several MeasureOne transcript analytics, making it a useful format for scoring user-reported data.

Attribute Type Description
degree_type string
ENUM
Level of study
Values: HIGH SCHOOL, ASSOCIATES, BACHELORS, MASTERS, DOCTORAL, UNDERGRADUATE CERTIFICATE, GRADUATE CERTIFICATE, NON-DEGREE
years_in_school double Number of years that the student has been enrolled, including any breaks between enrollments
min_grade string
ENUM
Lowest grade earned on a course taken
Values: 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 and accepted transfer courses
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 credit hour system


M1 Transcript Schema


Sample Payload

{
    "transcript_date": "04/13/2015",
    "school": "University of California, Berkeley",
    "student_id": "10112ABCD",
    "enrollments": [
        {
            "enrollment_id": "TE13072058",
            "enrollment_status": "Graduated",
            "graduation_date": "05/27/2015",
            "college": "College of Science & Technology",
            "degrees": [
                {
                    "degree": "Bachelor of Science",
                    "degree_level": "Undergraduate",
                    "degree_type": "Bachelors",
                    "order": 1,
                    "status": "Awarded"
                },
                {
                    "degree": "Bachelor of Arts",
                    "degree_level": "Undergraduate",
                    "degree_type": "Bachelors",
                    "order": 2,
                    "status": "Sought"
                }
            ],
            "degree_awarded_date": "08/17/2015",
            "majors": [
                {
                    "major": "Biology",
                    "concentration": "Molecular Biology",
                    "department": "LifeScience",
                    "order": 1
                },
                {
                    "major": "Health Science",
                    "department": "LifeScience",
                    "order": 2
                }
            ],
            "minors": [
                {
                    "minor": "Musical Theatre",
                    "order": 1
                },
                {
                    "minor": "Animal Science",
                    "order": 2
                }
            ],
            "program": "Biology",
            "honors": [
                "Summa Cum Laude",
                "2013 Phi Theta Kappa (PTK) All-California Academic Team"
            ],
            "credit_system": "Credits",
            "credits": [
                {
                    "attempted": 121,
                    "earned": 101,
                    "gpa_credits": 101,
                    "quality_points": 379.76,
                    "source": "INSTITUTION"
                },
                {
                    "attempted": 0,
                    "earned": 22,
                    "gpa_credits": 0,
                    "quality_points": 0,
                    "source": "TRANSFER"
                },
                {
                    "attempted": 121,
                    "earned": 123,
                    "gpa_credits": 101,
                    "quality_points": 379.76,
                    "source": "TOTAL"
                }
            ],
            "advanced_placement_credits": 4,
            "institution_cgpa": 3.76,
            "transfer_cgpa": 0,
            "total_cgpa": 3.76,
            "last_attended_date": "06/17/2015",
            "terms": [
                {
                    "name": "FALL 2012",
                    "start_date": "10/01/2012",
                    "end_date": "12/31/2012",
                    "transfer": true,
                    "advanced_placement": true,
                    "in_progress": false,
                    "courses": [
                        {
                            "code": "BIOL 1100",
                            "name": "Prin of Biology I",
                            "credits": {
                                "attempted": 0,
                                "earned": 4,
                                "gpa_credits": "0",
                                "quality_points": 0
                            },
                            "grading": {
                                "pass_fail": false,
                                "grade_format": "Letter",
                                "value": "T",
                                "grade_points": 0
                            },
                            "retaken": false
                        }
                    ]
                },
                {
                    "name": "Spring 2013",
                    "start_date": "04/01/2013",
                    "end_date": "06/30/2013",
                    "transfer": true,
                    "transferred_from_school": "Trident Tech College",
                    "advanced_placement": false,
                    "in_progress": false,
                    "courses": [
                        {
                            "code": "BIOL 210",
                            "name": "Cell Biology",
                            "credits": {
                                "attempted": 0,
                                "earned": 5,
                                "gpa_credits": 0,
                                "quality_points": 0
                            },
                            "grading": {
                                "pass_fail": false,
                                "grade_format": "Letter",
                                "value": "T",
                                "grade_points": 0
                            },
                            "retaken": false
                        }
                    ]
                },
                {
                    "name": "Fall 2013",
                    "start_date": "10/01/2013",
                    "end_date": "12/31/2013",
                    "transfer": false,
                    "advanced_placement": false,
                    "in_progress": false,
                    "courses": [
                        {
                            "code": "BIOL 1236",
                            "name": "Microbiology I",
                            "credits": {
                                "attempted": 3,
                                "earned": 3,
                                "gpa_credits": 3,
                                "quality_points": 12
                            },
                            "grading": {
                                "pass_fail": false,
                                "grade_format": "Letter",
                                "value": "A",
                                "grade_points": 4
                            },
                            "retaken": false
                        },
                        {
                            "code": "MUS 22121",
                            "name": "MUSIC AS A WORLD PHENOMENON",
                            "credits": {
                                "attempted": 3,
                                "earned": 3,
                                "gpa_credits": 3,
                                "quality_points": 9
                            },
                            "grading": {
                                "pass_fail": false,
                                "grade_format": "Letter",
                                "value": "B",
                                "grade_points": 3
                            },
                            "retaken": false
                        }
                    ]
                }
            ]
        }
    ]
}

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

Attribute Type Description
transcript_date string
MM/DD/YYYY
Date as of which the student's academic information was recorded on the transcript
school string Name of the academic institution that issued the transcript
student_id string Student's school-provided identification number
enrollments object Each enrollment contains information pertaining to a single degree. One transcript can have multiple enrollments for multiple degrees.


Enrollments Object:

Attribute Type Description
enrollment_id string Unique, school-provided identification number(s) for the student's enrollment record(s) associated with the degree(s) recorded on the transcript
enrollment_status string Registration status of the student i.e. graduated, enrolled, withdrawn, suspended, on probation, leave, etc.
graduation_date string
MM/DD/YYYY
Date on which the student walked the stage at the convocation ceremony
college string Sub-unit of the school, such as a college within a university
campus string In the case of institutions with multiple campuses, this field specifies which campus the student attended
degrees object Object contains information on the student's degree and whether the degree sought changed over time
degree_awarded_date string
MM/DD/YYYY
Date on which the degree is approved by the school and offically awarded to the student
majors object Object contains information on major at the enrollment level and historical changes, if any
minors object Object contains information on minor at the enrollment level and historical changes, if any
program string Specific degree that the combination of courses on the transcript leads to. Example: BS in Microbiology
honors string Indicates the level of distinction with which the student earned the degree based on school-defined criteria for distinctive performance
credit_system string
ENUM
The measurement system for recording the contact time that the student was taught by professors, either through lectures or lab time.
Values: CREDITS, CLOCK HOURS, UNITS
credits object Object contains information on total credits at the enrollment level i.e. aggregated across all terms and courses
advanced_placement_credits decimal Transfer credits accepted by the school for a student's high scores on College Board Advanced Placement exams
institution_cgpa decimal Weighted CGPA for all courses attended in the transcript-issuing school
transfer_cgpa decimal Weighted CGPA for all courses attended in previous transferred-from schools and accepted by the transcript-issuing school
total_cgpa decimal Weighted CGPA for the combination of courses attended at the transcript-issuing school and accepted transfer courses
last_attended_date string
MM/DD/YYYY
Student's last date of attendance for the enrollment
terms object Object contains term-wise information


Degrees Object:

Attribute Type Description
degree string Specifies the degree type and discipline. Example: Bachelor of Science, Master of Arts, etc.
degree_level string
ENUM
Level of study
Values: UNDERGRADUATE, GRADUATE
degree_type string
ENUM
Granular level of study
Values: HIGH SCHOOL, ASSOCIATES, BACHELORS, MASTERS, PH.D., CERTIFICATE, NON-DEGREE
order integer In case the student ever changed their degree sought, this field is a reverse-chronological order indicator where 1 is the most recent degree sought (or awarded, depending on the status field), 2 is the earlier degree sought and so on
status string
ENUM
Indicates whether the degree is already awarded, currently being sought or one that was sought in the past before the student sought some other degree. This field is deduced from the transcript.
Values: AWARDED, SOUGHT


Credits Object:

Attribute Type Description
attempted decimal Sum of credits attemped across all terms, including transfer terms if any
earned decimal Sum of credits earned across all terms and courses, including transfer terms if any
gpa_credits decimal Used as a denominator for GPA calculation, this is the sum of credits attempted across only those courses that count towards the GPA. For example, Pass-Fail and Withdrawn courses are not included, and retaken courses are considered only once.
quality_points decimal Total of points assigned to each letter grade earned across all graded courses
source string
ENUM
Indicator to identify credits earned at the school that issued the transcript versus those transferred from the student's previous school(s).
Values: INSTITUTION, TRANSFER, TOTAL


Majors Object:

Attribute Type Description
major string Specialized primary focus of study
concentration string Specialized area of study within the major
department string Sub-unit of the school or college that offers the major
order integer In case the student ever changed their major, this field is a reverse-chronological indicator where 1 is the most recent major declared, 2 is the earlier major declared and so on


Minors Object:

Attribute Type Description
minor string Specialized secondary focus of study
order integer In case the student ever changed their minor, this field is a reverse-chronological indicator where 1 is the most recent minor declared, 2 is the earlier minor declared and so on


Terms Object:

Attribute Type Description
name string School-provided term name
start_date string
MM/DD/YYYY
School provided term start date
end_date string
MM/DD/YYYY
School provided term end date
transfer boolean Indicates whether the block of credits represents a transferred term i.e. student attended and earned credits in another institution, the transferred_from_school
transferred_from_school string In case of a transfer term, name of the institution where the student earned their transfer credits
advanced_placement boolean Indicates whether the block of credits/courses were accepted for a student's high scores on College Board Advanced Placement exams
in_progress boolean Indicates whether the term is either currently in progress
courses object Object contains course-wise information


Courses Object:

Attribute Type Description
code string School-provided course code
name string School-provided course name
credits object Object contains credits-related information for each course
grading object Object contains grade-related information for each course
retaken boolean Indicates whether the course was retaken


Grading Object:

Attribute Type Description
pass_fail boolean Indicates whether the student opted to be evaluated for the course on a pass-fail basis. This field is deduced from the transcript.
grade_format string
ENUM
Indicates whether the grade is NUMERIC or LETTER format. This field is deduced from the transcript.
value string Grade that the student received on the course
grade_points decimal School-specific points associated with the grade

Create Transcript

Sample Request

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

sample_input.json when source_data_type = "M1_DIGEST"

{
 "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
              }
   }
 ]
}

Sample Response

{
 "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
 "external_id": "ABCDECD",
 "source_data": [
   {
     "id": "tsd_1KXGeat97YnOR8AHM4AZWYOAcog",
     "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
              },
     "created_at": 1556781225343
   }
 ],
 "processing_status": "COMPLETE",
 "created_at": 1556781225343,
 "updated_at": 1556781257964
}

POST /transcripts/new

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

Note: The current version of the /transcripts/new endpoint only supports the M1_DIGEST source data type. Creating transcripts based on other source data types, e.g., files or images, is only supported through the Transcript Portal.


Request Payload

Attribute Type Required?
external_id string yes
school_unit_id string no
source_data [object] yes


source_data Object in the Request Payload:

Attribute Type Required?
referrer string no
source_data_type string
ENUM
yes, currently must be M1_DIGEST
source_data_value object yes, currently only an M1_DIGEST object


Response Payload

Transcript Object for the created transcript.

Get Transcript

Sample Request

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

sample_input.json

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2"  
}

Sample Response when source_data_type = "TRANSCRIPT_FILE"

{
  "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
  "external_id": "ABCDECD",
  "school_unit_id": 151351,
  "source_data": [
    {
      "id": "tsd_1KXGeat97YnOR8AHM4AZWYOAcog",
      "referrer": "M1_PORTAL_SCHOOL",
      "source_data_type": "TRANSCRIPT_FILE",
      "source_data_value": null,
      "created_at": 1556781225343
    }
  ],
  "processed_data": {
    "transcript_date": {"r": "2016-04-13", "s": "04/13/2016"},
    "school": {"r": "UCB", "s": "University of California, Berkeley"},
    "student_id": {"r": "10112ABCD", "s": "10112ABCD"},
    "enrollments": [
      {
        "enrollment_id": {"r": "TE13072058", "s": "TE13072058"},
        "enrollment_status": {"r": "PERM OUT - Graduate", "s": "Graduated"},
        "graduation_date": {"r": "2015/05/27", "s": "05/27/2015"},
        "college": {"r": "College of Science & Technology", "s": "College of Science & Technology"},
        "degrees": [
            {
                "degree": {"r": "BS", "s": "Bachelor of Science"},
                "degree_level": {"r": null, "s": "Undergraduate"},
                "degree_type": {"r": null, "s": "Bachelors"},
                "order": {"r": 1, "s": 1},
                "status": {"r": "Awarded", "s": "Awarded"}
            },
            {
                "degree": {"r": "Bach. of Arts", "s": "Bachelor of Arts"},
                "degree_level": {"r": null, "s": "Undergraduate"},
                "degree_type": {"r": null, "s": "Bachelors"},
                "order": {"r": 2, "s": 2},
                "status": {"r": "Sought", "s": "Sought"}
            }
        ],
        "degree_awarded_date": {"r": "2015/08/17", "s": "08/17/2015"},
        "majors": [
            {
                "major": {"r": "Biology", "s": "Biology"},
                "concentration": {"r": "Molecular Biology", "s": "Molecular Biology"},
                "department": {"r": "LifeScience (Biology)", "s": "LifeScience"},
                "order": {"r": 1, "s": 1}
            },
            {
                "major": {"r": "Health Science", "s": "Health Science"},
                "department": {"r": "LifeScience", "s": "LifeScience"},
                "order": {"r": 2, "s": 2}
            }
        ],
        "minors": [
            {
                "minor": {"r": "Musical Theatre", "s": "Musical Theatre"},
                "order": {"r": 1, "s": 1}
            },
            {
                "minor": {"r": "Animal Science", "s": "Animal Science"},
                "order": {"r": 2, "s": 2}
            }
        ],
        "program": {"r": "Biology BS", "s": "Biology"},
        "honors": [
            {"r": "Summa Cum Laude", "s": "Summa Cum Laude"},
            {"r": "2013 Phi Theta Kappa (PTK) All-California Academic Team", "s": "2013 Phi Theta Kappa (PTK) All-California Academic Team", "pcode": 701}
        ],
        "credit_system": {"r": "Credits", "s": "Credits"},
        "credits": [
            {
                "attempted": {"r": 121, "s": 121},
                "earned": {"r": 101, "s": 101},
                "gpa_credits": {"r": 101, "s": 101},
                "quality_points": {"r": 9494, "s": 379.76},
                "source": {"r": "INSTITUTION", "s": "INSTITUTION"}
            },
            {
                "attempted": {"r": 0, "s": 0},
                "earned": {"r": 22, "s": 22},
                "gpa_credits": {"r": 0, "s": 0},
                "quality_points": {"r": 0, "s": 0},
                "source": {"r": "TRANSFER", "s": "TRANSFER"}
            },
            {
                "attempted": {"r": 121, "s": 121},
                "earned": {"r": 123, "s": 123},
                "gpa_credits": {"r": 101, "s": 101},
                "quality_points": {"r": 9494, "s": 379.76},
                "source": {"r": "TOTAL", "s": "TOTAL"}
            }
        ],
        "advanced_placement_credits": {"r": null, "s": 4},
        "institution_cgpa": {"r": 94, "s": 3.76},
        "transfer_cgpa": {"r": 0, "s": 0},
        "total_cgpa": {"r": 94, "s": 3.76},
        "last_attended_date": {"r": "2015/06/17", "s": "06/17/2015"},
        "terms": [
            {
                "name": {"r": "2012 Fall", "s": "FALL 2012"},
                "start_date": {"r": null, "s": "10/01/2012"},
                "end_date": {"r": null, "s": "12/31/2012"},
                "transfer": {"r": true, "s": true},
                "advanced_placement": {"r": true, "s": true},
                "in_progress": {"r": null, "s": false},
                "courses": [
                  {
                    "code": {"r": "BIOL 1100", "s": "BIOL 1100"},
                    "name": {"r": "Prin of Biology I", "s": "Prin of Biology I"},
                    "credits": {
                        "attempted": {"r": 0, "s": 0},
                        "earned": {"r": 4, "s": 4},
                        "gpa_credits": {"r": null, "s": 0},
                        "quality_points": {"r": 0, "s": 0}
                    },
                    "grading": {
                        "pass_fail": {"r": null, "s": false},
                        "grade_format": {"r": "Letter", "s": "Letter"},
                        "value": {"r": "T", "s": "Transfer"},
                        "grade_points": {"r": null, "s": 0}
                    },
                    "retaken": {"r": null, "s": false}
                  }
                ]   
            },
            {
                "name": {"r": "2013 Spring", "s": "SPRING 2013"},
                "start_date": {"r": null, "s": "04/01/2013"},
                "end_date": {"r": null, "s": "06/30/2013"},
                "transfer": {"r": true, "s": true},
                "transferred_from_school": {"r": "Trident Tech College", "s": "Trident Tech College", "pcode": 702},
                "advanced_placement": {"r": null, "s": false},
                "in_progress": {"r": null, "s": false},
                "courses": [
                  {
                    "code": {"r": "BIOL 201", "s": "BIOL 210"},
                    "name": {"r": "Cell Biology", "s": "Cell Biology"},
                    "credits": {
                        "attempted": {"r": 0, "s": 0},
                        "earned": {"r": 5, "s": 5},
                        "gpa_credits": {"r": null, "s": 0},
                        "quality_points": {"r": 0, "s": 0}
                    },
                    "grading": {
                        "pass_fail": {"r": null, "s": false},
                        "grade_format": {"r": "Letter", "s": "Letter"},
                        "value": {"r": "TR", "s": "Transfer"},
                        "grade_points": {"r": null, "s": 0}
                    },
                    "retaken": {"r": null, "s": false}
                  }
              ]
            },
            {
                "name": {"r": "2013 Fall", "s": "FALL 2013"},
                "start_date": {"r": null, "s": "10/01/2013"},
                "end_date": {"r": null, "s": "12/31/2013"},
                "transfer": {"r": false, "s": false},
                "advanced_placement": {"r": null, "s": false},
                "in_progress": {"r": null, "s": false},
                "courses": [
                  {
                    "code": {"r": "BIOL 1236", "s": "BIOL 1236"},
                    "name": {"r": "Microbiology I", "s": "Microbiology I"},
                    "credits": {
                        "attempted": {"r": 3, "s": 3},
                        "earned": {"r": null, "s": 3},
                        "gpa_credits": {"r": 3, "s": 3},
                        "quality_points": {"r": 285, "s": 12}
                    },
                    "grading": {
                        "pass_fail": {"r": null, "s": false},
                        "grade_format": {"r": "Numeric", "s": "Letter"},
                        "value": {"r": "95", "s": "A"},
                        "grade_points": {"r": null, "s": 4}
                    },
                    "retaken": {"r": null, "s": false}
                  },
                  {
                    "code": {"r": "MUS 22121", "s": "MUS 22121"},
                    "name": {"r": "MUSIC AS A WORLD PHENOMENON", "s": "MUSIC AS A WORLD PHENOMENON"},
                    "credits": {
                        "attempted": {"r": 3, "s": 3},
                        "earned": {"r": null, "s": 3},
                        "gpa_credits": {"r": 3, "s": 3},
                        "quality_points": {"r": 255, "s": 9}
                    },
                    "grading": {
                        "pass_fail": {"r": null, "s": false},
                        "grade_format": {"r": "Numeric", "s": "Letter"},
                        "value": {"r": "85", "s": "B"},
                        "grade_points": {"r": null, "s": 3}
                    },
                    "retaken": {"r": null, "s": false}
                  }
                ]   
            }
        ]
      }
    ]
  },
  "processing_status": "COMPLETE",
  "created_at": 1556781225343,
  "updated_at": 1556781257964
}




Sample Response when source_data_type = "M1_DIGEST"

{
 "id": "trc_TSEne2SSjP3GvpVrs5HLol4xor2",
 "external_id": "ABCDECD",
 "source_data": [
   {
     "id": "tsd_1KXGeat97YnOR8AHM4AZWYOAcog",
     "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
              },
     "created_at": 1556781225343
   }
 ],
 "processing_status": "COMPLETE",
 "created_at": 1556781225343,
 "updated_at": 1556781257964
}

POST /transcripts/get_by_id

The /transcripts/get_by_id endpoint allows developers to retrieve transcript metadata and academic data fields. The endpoint can be used once a transcript file has been processed by MeasureOne, and will return raw and standardized values for the processed transcript.

Request Payload

Attribute Data Type Required?
id string yes
verbose_pcodes boolean no
DEFAULT: false


Response Payload

The Transcript Response Object is the object that is returned by the API after a transcript record has been created and processed. It shares the same attribute structure as the M1 Transcript schema. However, the value structure is an object that provides processing context. In particular, it provides the as reported raw, and MeasureOne computed standardized values for the attribute. The types of these values will match the types of the attribute in the M1 Transcript schema.

The value object structure for each attribute is as follows:

Attribute Description
r Raw value, as reported on the transcript
s Standardized value that follows MeasureOne's standard definition for the attribute
pcode A MeasureOne processing code that provides further information about the standardized value. See here for processing code definitions. By default, no 9xx (OK) level processing codes are returned. Use verbose_pcodes = true in the request to include detailed 9xx level codes in the response.


Processing Codes

9xx OK

A 9xx processing code indicates that the standardized value is OK to use.

Status Code Description
901 Confirmed Value - A standardized attribute for which the standardized value matched the raw value
902 Standard Value Computed - A standardized attribute for which the standardized value was computed from raw transcript values
903 Non-standardized Attribute - Known non-standardized attribute. The attribute is an identifier, name or a similar field, that does not required standardization. Raw value copied to standardized value


800 Conditional OK

An 800 processing code indicates that a standardized attribute where MeasureOne used certain pre-defined assumptions to compute the standardized value. For more details on the MeasureOne standardization process, please contact support@measureone.com


7xx Raw Value Copied

A 7xx processing code indicates that MeasureOne does not have a standardized value for the attribute, and the raw value was copied into the standardized value.

Status Code Description
701 Insufficient Information - Known attribute for which there was insufficient information available on the transcript to provide a standardized value
702 Attributed Not Supported - Unsupported or unknown attribute

Get Transcript Files

Sample Request

curl "https://api.measureone.com/v1/transcripts/get_files?transcript_id=trc_CV39Blnq2MOHEE2eMQ9C9Cb2LOI" 
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070" 
-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_type = "TRANSCRIPT_FILE".

Request Payload

Attribute Data 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 the transcript.

MeritScore

Sample Request

curl "https://api.measureone.com/v1/analytics/meritscore"
-H "Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070"
-H "Content-Type:application/json"
-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 Data Type Description
transcripts [string] An array of transcript IDs to be included in the score
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
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

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 either 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 Data 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
transcript.processed The transcript object has been processed and data is available to be pulled

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.