Patent ID: 12205124

DETAILED DESCRIPTION

The present description is made with reference to the accompanying drawings, in which various example embodiments are shown. However, many different example embodiments may be used, and thus the description should not be construed as limited to the example embodiments set forth herein. Rather, these example embodiments are provided so that this disclosure will be thorough and complete. Various modifications to the exemplary embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the disclosure. For example, the following describes application of the invention to academic data, income data and employment data. Implementations of the invention, however, can extend to other consumer-permissioned data stored at a remote host in association with an individual user or account. Thus, this disclosure is not intended to be limited to the embodiments shown but is to be accorded the widest scope consistent with the principles and features disclosed herein.

The API, in some implementations, provides building blocks for developers to leverage source data, such as academic transcript data. For example, the API and associated functionality facilitate a variety of operations on academic data including enrollment verification, graduation or degree verification, transcript access, extraction of data from transcripts, normalization of data across academic institutions and predictive analytics based on academic data. In some implementations, the data processing system further includes proxy-based functionality that facilitates the retrieval of academic transcript data directly from academic institutions. In addition to transcripts, the API supports academic data provided directly by users, through a form-submission experience. This is particularly useful in instances where an application developer may desire to perform pre-screening based on user-reported information, with the intention of validating actual transcript data later in the process.

In some implementations, loan or credit application developers can leverage the data processing system to assist students and recently graduated students in their first steps into consumer “adulthood” by unlocking the value of their own academic data. These “emerging consumers” are starting their way in the workforce but of course have little to no work, credit or other meaningful commercial history. The result is that these individuals are regularly undervalued when looking to receive services and products from financial, insurance, employment, or educational institutions. The common thread in the consistent undervaluing of this population is the lack of data or lack of activity that would provide insights into our data-driven age. And yet, these emerging consumers 30 million in the US alone—have in fact achieved quite a bit. 70% have a college degree. 21% have advanced degrees, and almost all have generated some form of academic data. This data may be leveraged to benefit these consumers as they engage in activities such as get their first apartment, apply for a job, refinance their student loan, or apply for auto insurance.

A current problem is that academic data is inaccessible, inconsistent, and practically unusable by businesses or other enterprises outside of the particular academic institutions that maintain the data. The lack of common formats and standards, as well as the inherent variability between educational institutions, combined with the legitimate mismatch between the requirements of internal and external application developers, have raised huge barriers to innovation. The result is that young people are not able to benefit from their academic achievements at a time when they could most use that help.

As described below, the APIs allow developers to incorporate academic data (or other consumer-permissioned source data) natively into their applications in the same way that other data is integrated. In some implementations, a benefit of the academic data processing system is that data normalization allows for comparison of data across academic institutions. Normalizing academic data in this manner allows for the development of robust predictive models. These predictive models may, for example, address a given individual's credit performance or academic persistence rate, allowing institutions to better tailor the service they offer. For example, a so-called “MeritScore” may correlate academic transcript data to credit performance. A so-called “GradScore” may correlate transcript data to persistence rate (the likelihood that a given student will be enrolled 12 months from the time of measurement).

As discussed below, however, the functionality of consumer-permissioned data processing system may be augmented to access other types of source data, including income and employment data.

FIG.1illustrates a distributed system in which embodiments of the disclosure may operate. In embodiments, the distributed system may include data processing system104, one or more application servers106, one or more student information systems107, and one or more user clients108a-c. The foregoing components of the system communicate over network cloud102. Network cloud102comprises one or more telecommunications networks over which the various components of the system communicate. Network cloud102can include, without limitation, one or more of any of the following network types: local area networks, wide area networks, wireless cellular networks, cable networks, the internet, and the like.

Data processing system104, in some implementations, provides the operational and management hub for the system, maintaining (among other things) developer accounts and transcript and other consumer-permissioned data, as well as the consumer-permissioned data processing functionality described herein. Data processing system104comprises one or more servers105that communicates with application server106, student information system107and user clients108a-cover network102. The server(s)105are coupled locally or remotely to one or more databases, which may include one or more corpora of libraries including data such as image data, web site content, developer account data, user account data, transcript data, and the like. Student information system107, an example data source, is associated with an educational institution (e.g., college, university, etc.) and maintains enrollment and transcript data for a plurality of current and former students. In some implementations, the student information system107maintains user accounts for each student and, after authentication, allows access to enrollment and transcript data. In embodiments, the server(s)105, application server106, student information system107and user clients108a-ceach include at least one processor and at least one memory storing instructions that, when executed by the processor(s), perform the communications and other workflows described below according to embodiments of the disclosure. Other data sources may include payroll processing systems, utility providers, government information systems, and the like.

Data processing system104supports a set of APIs and associated functionality allowing application developers to develop distributed applications that leverage consumer-permissioned data, such as academic and/or employment data. In one implementation, the APIs support workflows directed to the extraction of consumer-permissioned academic data from one or more student information systems107. In some implementations, data processing system104acts as an information proxy supporting the conversion of the academic data into a processable form, the normalization or standardization of the academic data, the processing of academic data in relation to a defined purpose (such as an enrollment status or degree completion check), and/or the application of the academic data against one or more scoring models. The scoring models can use academic data associated with a particular user as an input to predict certain behaviors, such as credit activity or graduation success. In one implementation, the data processing system104supports Representational State Transfer (REST) APIs. In some implementations, data extraction involves a proxied communication session between a client device associated with a subject individual and a remote host (such as a student information system107) that contains source data relating to the subject individual.

Data processing system104offers a secure, API-based platform to power consumer-permissioned data sharing, providing a safe and transparent way for consumers to share data with third-party applications. In one implementation, data processing system104acts as a bridge between data sources containing the consumer's personal data and data recipients, such as financial institutions. Data sources are online systems that host the source data to be shared and that are accessible to the consumer. Example data sources are academic institutions, payroll processors, utility providers government systems and others. Data recipients are any third-party entity that the consumer wishes to share information with, often in return for a product or service that the data recipient is offering. Example recipients are lenders, marketers, background check companies, employers, recruiters, and others.

The APIs discussed herein allow application developers as a data recipient to integrate consumer-permissioned data into their workflows. Data processing system104does so by facilitating consent, access, acquisition, and delivery of your users' permissioned data. The basic workflow of consumer-permissioned sharing is as follows. First, a user provides consent to data processing system104to share specific personal information with a recipient entity. The user shares credentials with data processing system104providing access to data—called “source data”—that provides the information that they have consented to share with the data recipient. Data processing system104uses these credentials to connect that data source to its platform, access and acquire the source data. Data processing system104then processes the data and provides access to this source data through a set of service APIs.

There are several benefits to using the API. The API hides the complexity involved in the consumer-permissioned workflow behind a straightforward API so that application developers can focus on their applications and customer experience. The data processing system104handles user credentials obviating the need for the application developer to do so. Data processing system104handles consents from the user and ensure that the application developer only receives access to the consented information, freeing the developer from the need to worry about accessing consumer information improperly. Data processing system104also ensures the provenance of the shared data. The data is shared by the user, with their explicit consent, but without any ability to modify or tamper with it.

Application developers can leverage data processing system104to achieve a variety of use cases, such as student discounting, tenant screening, employment screening, insurance underwriting, education screening, and financial products (such as credit determinations). For example, data processing system104may be used to assess a candidate's academic qualification, academic history and/or student enrollment status. Data processing system104supports acquisition and processing of academic documents. By connecting the user's academic institution, data processing system104can use the shared transcripts and other educational data to provide an assessment or verification of educational data. This includes academic history, degree verification, student enrollment status or other similar data. Data processing system104can also be used for income or employment verification. For example, application developers may use data processing system104to extracting income information from paystubs, 1099s or other income-related documents to provides a comprehensive solution to assessing a given user's income. Data processing system104can also be used in connection with identity and fraud detection. By leveraging multiple items of consumer-permissioned data, data processing system104provides unique opportunities to customers to establish identity and protect against fraud. Data processing system104also offers predictive analytics for financial underwriting based on alternative data. As discussed below, data processing system104provides a MeritScore based on a proprietary predictive analytic that correlates credit performance to academic data. Using consumer-permissioned transcripts, data processing system104can provide a score that correlates the user's academic performance to credit default risk. This both reduces risk for a lender while opening up new credit opportunities for young borrowers.

In one implementation, data processing system104controls access to its functionality by maintaining developer accounts and using authentication and cryptographic protocols. For example, data processing system104may control access to the functionality corresponding to its API by requiring the inclusion of a cryptographic key (e.g., a secret key) in API requests. Data processing system104may use OAuth 2.0 or any other suitable authentication protocol to authenticate the requests. In one implementation, the API uses POST requests to communicate and HTTP response codes to indicate status and errors. In one implementation, 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. The following illustrates an example request:

curl ″https://api.measureone.com/v1/transcripts/new″-H ″Authorization: bearer <YOUR_API_KEY>″-H ″Content-Type: application/json″-H “version: 202011001”-d ″@sample_input.json″-X POST

Endpoints are used to facilitate integration of individual users, data sources, Items, Services, transcript files, transcript data and transcript analytics into an application workflow. Table 1 shows an example set of endpoints that data processing system104may support.

TABLE 1EndpointsResourceEndpointDescriptionAuthentication/auth/generate_access tokenGenerates an access token/auth/invalidateInvalidates an access token/auth/generate_public_tokenGenerates a public tokenInvitations/invitations/newCreates a new invitation/invitations/getGet the list of invitations based onthe filter criteria provided/invitations/get_by_idGet the details of an Invitation/invitations/expireExpire an InvitationIndividuals/individuals/newCreate a new individual/individuals/get_by_idGet details of an Individual/individuals/academic_accounts/newRegister a new academic account/individuals/get_academic_summaryGet Academic summary for an individual/individuals/get_enrollment_statusGet enrollment status for an individualSchools/schools/getGet/Search the list of schools andrelated informationItems/items/newCreate a new item/items/uploadUpload item document/items/get_by_idUpload item document/items/get_filesDownload the items uploaded via`/items/upload` APITranscripts/transcripts/newCreate a transcript/transcripts/uploadUpload data for a new transcript/transcripts/get_by_idGet data for a transcript/transcripts/get_digest_by_idGet data in digest form for a transcript/transcripts/get_filesDownload transcript filesAnalysis/analytics/meritscoreGet the MeritScore for a transcript/analytics/gradscoreGet the Gradscore for a transcript

Certain features of the data processing system104are directed to extracting and standardizing data from data sources (such as transcript files) to provide a digital record for easy integration into applications. Data processing system104may support a wide range of file formats, HTML, PDF, rich text documents, MS Word, images, etc. Data processing system104may support optical character recognition to extract text from image files. Data processing system104may also include parsing functionality to extract data from the transcript data to render the data analyzable and searchable for further processing. Data processing system104may also include functions and services to process the data for a defined purpose, such as an enrollment status. In some implementations, while data processing system104may access an entire transcript or other source data, it only returns to the requesting entity such information necessary for the defined (and consumer-permissioned) purpose, such as enrollment status.

Data processing system104facilitates the integration of this processing into a variety of different applications and workflows. In one implementation, after submitting the transcript document, the data processing system104generates a unique ID for the document and returns it to the requesting system. In some implementations, once transcript processing has been completed, a webhook or other notification may be initiated. On receiving this notification, an application may retrieve the processed transcript utilizing the API call/transcripts/get by id with the corresponding transcript ID to get the raw and/or standardized values for the transcript. In one implementation, standardized or normalized values are generated by applying a normalization file that maps attributes (or combinations of attributes) of the raw data received from a given academic institution to a standard, normalized form.

The following sets forth example data objects and endpoints supported by one possible implementation of data processing system104. In other implementations, data processing system104may support fewer or more data objects and endpoints.

Individuals

The Individual is a core resource that represents an individual user or consumer. In some implementations, an Individual object is created at the start of a workflow. Retrieved Items are associated with an Individual object. Almost all Service APIs take the Individual ID as a reference. To create a new Individual object, an HTTP POST (individuals/new, above) can be transmitted to data processing system104, which returns an identifier (individual id) associated with the created Individual object. The returned identifier may then be used in subsequent API calls to reference Items and Services.

The following illustrates example parameters and schemas for a request to create a new Individual object.

HEADER PARAMETERSversionnumberVersion number of the System API you wish tointegrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonexternal_idstring <= 45 charactersA customer generated unique identifier linked tothe individualfirst_namestring <= 45 charactersrequiredFirst name of the individualmiddle namestring <= 45 charactersMiddle name of the individuallast_namestring <= 45 charactersrequiredLast Name of the individualattending_namestringAttending name of the individualemail requiredstringEmail address of the individualprefixstring <= 5 charactersName prefixsuffixstring <= 5 charactersName suffixgenderstring <= 1 charactersGender of the individualdate of birthstring <MM/DD/YYYY>/(0[1-9]|1[012])[−∨.](0[1-9]|[12][0-9]|3[01 . . . Show patternDate of Birth of the individual in MM/DD/YYYY format.phone_numberstring <= 15 charactersPhone number of the individualaddressobject
Data Sources

Data Sources are network-addressable locations of Items. Individual users or consumers connect Data Sources and provide data processing system104with their credentials and consent so that data processing system104may retrieve Items (their data) from the Data Source to be subsequently shared with the requesting entity in a strictly permissioned way. Data Sources may be universities or other academic institutions, financial institutions, payroll systems, government records, and employer systems. Data processing system104, in one implementation, curates the list of Data Sources to ensure the provenance of the retrieved documents. Since not all Data Sources may be relevant to a given application, the API allows developers to configure and select the list of Data Sources that are displayed to an individual user.

The following shows example endpoints and associated request and response schemas related to Data Sources.

The datasources/init endpoint may be called to initiate a Data Source.

HEADER PARAMETERSversionnumberVersion number of the System API you wish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonnamestringName of the connection. If null, it will be the same asthe data source namedatasource_idstringrequiredUnique identifier of the data source identified by System.external_idanyA customer generated unique identifier linked to theindividual_idstring data sourcerequiredSystem provided unique identifier of individual
Responses

Successful Response 200

RESPONSE SCHEMA: application/jsonidstringUnique ID of the connectionsession_idstringSystem provided unique identifier of thesession for the connection

202: The request is Accepted and MFA is required to complete the authentication

RESPONSE SCHEMA: application/jsonidstringUnique ID of the connectionsession_idstringSystem provided unique identifier of the sessionfor the connection stringmfa_typestringValue: ″DUO″Type of MFA. Currently, System supports onlyDUOtype MFA.mfa_methodstringEnum: ″PASSCODE″ ″PHONE_CALL″ ″DUO_PUSH″Method of authentication for MFA. Duo currentlyprovides three methods to authenticate MFA request.
Connect to a Data Source (Datasources/Connect).

This endpoint initiates the connection to a Data Source, starting the workflow to access and acquire the consumer-permissioned Items.

HEADER PARAMETERSversionnumberVersion number of the System API you wish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonconnection _dstringrequiredUnique ID of the academic account identified by Systemsession_idstringrequiredUnique ID of the session identified by SystemcredentialsobjectCredentials to access the datasource
Responses
200: Successful Response

RESPONSE SCHEMA: application/jsonidstringUnique ID of the connectionsession_idstringSystem provided unique identifier of the sessionfor the connection
202: The request is Accepted and MFA is required to complete the authentication

RESPONSE SCHEMA: application/jsonidstringUnique ID of the connectionsession_idstringSystem provided unique identifier of the sessionfor the connectionmfa_typestringValue: ″DUO″Type of MFA. Currently, System supports onlyDUOtype MFA.mfa_methodstringEnum: ″PASSCODE″ ″PHONE_CALL″ ″DUO_PUSH″Method of authentication for MFA. Duo currently providesthree methods to authenticate MFA request.
Get/Search Data Sources (Datasources/Get)

A call to a datasources/get endpoint retrieves a list of Data Sources supported by data processing system104. The endpoint provides filtering that enables applications to limit the Data Source list to only those that are relevant to the user or application. For example, an educational verification application could limit the Data Sources to academic institutions.

HEADER PARAMETERSversionnumberVersion number of the System API you wish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typeany <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonfiltersobjectAllows filtering the list by different attributes
Responses
200
Successful Response

RESPONSE SCHEMA: application/jsonidstringUnique ID of the data source identified by SystemtypestringEnum: ″EDUCATION″ ″EMPLOYMENT″″INCOME″The type of data sourcestatusstringEnum: ″ACTIVE″ ″INACTIVE″″TEMPORARY_INACTIVE″Status of the datasourcedisplay_namestringDisplay name of the data sourcedescriptionstringDescription of the data source.profileobjectAdditional properties of the data source. This mayvary depending on the type of the data source.access_methodsArray of objectsFields required to access the data source.
Items and Services

Items are resources representing data shared by Individuals with data processing system104. The underlying document of an Item is called source data. These can be college transcripts, pay stubs, real estate titles, etc. Items are stored and information from them can be retrieved by application developers through Service API calls. The information in an Item is shared through the Service APIs according to the consumer permission. In some implementations, unless permissioned by the Individual, the Item data may not be shared directly with a requesting entity.

Submit a New Item (Items/New)

In some implementations, the usage of the items/new endpoint varies depending on its intended use and availability of information. The request payload may include either a source_data_value object or a source_data_reference object. Passing both as a part of the payload may result in processing errors. If the attribute values for a transcript are known, an API call may send the source data inline in the request using the source_data_value object. If the data is in a document, an API call may be made to upload it using the/items/upload endpoint or make it available at a remote location. A reference to the uploaded document may then be included in the request using the source_data_reference object.

HEADER PARAMETERSversionnumberVersion number of the System API you wish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>

REQUEST BODY SCHEMA: application/jsonindividual_idstringSystem generated unique identifier linked to the item. If this is notprovided, System will generate a new individual_id for given item.datasource_idstringUnique identifier of the datasource.source_data_typestringEnum: ″M1_ACADEMIC_RECORD″ ″M1_DIGEST″″M1_EMPLOYMENT_RECORD″″M1_INCOME_RECORD″″TRANSCRIPT_ FILE″″RENT_RECEIPT_FILE″″PAYSTUB_FILE″″W9_FILE″ ″UTILITY_BILL_FILE″The type of the source datasource_dataArray of Source Data Value (object) or Source Data Referencerequired(object) (Source Data Object)Source data object contains one complete academic record. Multiplesource data objects containing source_data_value will result in an error
Responses

200: Successful Response. An application may now call the endpoints to get desired information from a transcript.

RESPONSE SCHEMA: application/jsonidstringID of the created recordindividual_idstringUnique ID of the individual identified by Systemprocessing_statusstringEnum: ″IN_PROGRESS″ ″COMPLETED″
Upload Files

The/items/upload endpoint may be used to upload documents containing source data for a new item. In one implementation, supported file types include: Doc, HTML, JPG, JSON, PDF, PNG, TIFF, TIF, and TXT.

HEADER PARAMETERSversionnumberVersion number of the System API you wish tointegrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: APPLICATION/FORM-DATA-UPLOADfilesArray of stringsResponses

200: Successful Response

RESPONSE SCHEMA: APPLICATION/JSONuristringURI scheme for a remote document. Thesupported schemes include the M1 scheme, aninternal scheme used to refer to internal Systemresources. See below for examples.Supported Schemesare M1, HTTP, HTTPS, FTP, SFTP.Formatscheme:[//authority ]path[?query ][#fragment]processing_statusstringEnum: ″IN_PROGRESS″ ″COMPLETED″Processing status
Get Item Details

The items/get_by_id endpoint may be called to retrieve the details of an existing Item. The endpoint can be used once the processing_status for an Item is COMPLETED. It will return Item data in its response payload. If the processing of the Item is not yet complete, it will return the current status of the Item.

HEADER PARAMETERSversionnumberVersion number of the System API youwish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload.System accepts content inapplication/json format unless specified otherwise

REQUEST BODY SCHEMA: APPLICATION/JSONidstringrequired
Responses

200: Successful Response

RESPONSE SCHEMA: APPLICATION/JSONidstringUnique ID of the item identified by Systemcreated_atintegerTimestamp for when the item was createdupdated_atintegerTimestamp for when the item was last updatedindividual_idstringSystem generated unique identifier linked to the item. If this is notprovided, System will generate a new individual_id for given item.datasource_idstringUnique identifier of the datasource.source_data_typestringEnum: ″M1_ACADEMIC_RECORD″ ″M1_DIGEST″″M1_EMPLOYMENT_RECORD″ ″M1_INCOME_RECORD″″TRANSCRIPT_FILE″ ″RENT_RECEIPT_FILE″″PAYSTUB_FILE″ ″W9_FILE″ ″UTILITY_BILL_FILE″The type of the source_datasource_dataArray of Source Data Value (object) or Source Data Referencerequired(object) (Source Data Object)Source data object contains one complete academic record. Multiplesource data objects containing source_data_value will result in an errorprocessing_statusstringEnum: ″IN_PROGRESS″ ″COMPLETED″Processing status of the itemdataM1_TRANSCRIPT Schema (object) orM1_EMPLOYMENT_RECORD Schema (object) orM1_INCOME_RECORD Schema (object) or M1_DIGEST Schema(object)

As discussed above, data processing system104may also provide endpoints associated with one or more Services, such as returning enrollment status, an academic summary, income summary, employment status, and the like. The following provides example endpoints and message schemas for a set of example endpoints.

Get Academic Summary (Services/Get_Academic_Summary)

The services/get_academic_summary endpoint provides a summary of academic and educational data, including dates of attendance, degrees achieved, and other fields. The following shows example request and response payload schemas.

HEADER PARAMETERSversionNumber (Version number of the System API youwish to integrate.)Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonindividualobjectrequiredcallbackobject
Responses

200: Successful Response

RESPONSE SCHEMA: application/jsonindividualobjecttransaction_idstringUnique ID of this transaction.processing_statusstringEnum: ″COMPLETED″ ″ACQUIRING″″IN_PROGRESS″Processing status of the request. COMPLETED -System has finished processing of the request.ACQUIRING - We have received the requestand system is acquiring the academic summary.Note that if System requires any intervention fromour team, the status will update toIN_PROGRESS. IN_PROGRESS - We havereceived the request and our team isworking to process the academic summary.academic_summaryArray of objects (Academic Summary)
Get Enrollment Status (Services/Get_Enrollment_Status)

The services/get_enrollment_status endpoint provides an assessment of an individual user's enrollment status. In one implementation, data processing system104uses a set of heuristics applied to transcript data retrieved from a Data Source to make a final determination. These heuristics are summarized in Reason Codes as detailed in the following table. While data processing system104may access an entire transcript and/or other source data associated with an individual, it only returns to the recipient entity enough information to satisfy the purpose of the initial inquire, such as a Reason Code (or a Boolean value) indicating the user's current enrollment status.

Reason CodesCodeDescriptionMES_EXPLICIT_STATUSEnrollment Status explicitly availableon school websiteMES_CURRENTLY_ENROLLEDCurrently enrolled in a programMES_COURSE_IN_PRGOne or more courses in progressMES_COURSE_IN_PRG_DEG_AWD_LT_90One or more courses in progress butdegree awarded before 90 days of thedate available in the dataMES_LAST_TERM_LT_180Last term ended within 180 days ofdate available in the dataMES_LAST_TERM_LT_180_DEG_AWD_GT_270Last term ended within 180 days ofitem creation but degree awarded dateis greater than 270 daysMES_COURSE_IN_PRG_DEG_AWD_LT_60One or more courses in progress, butdegree awarded before 60 days ofitem creationMES_LAST_TERM_GT_180Last term ended greater than 180 daysof the date available in the dataMES_WITHDRAWNWithdrawn from all programsMES_INSUFFICIENT_DATAInsufficient Data

HEADER PARAMETERSversionnumberVersion number of the System API you wish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specified otherwise

REQUEST BODY SCHEMA: application/jsonindividualobjectrequired
Responses
200: Successful Response

RESPONSE SCHEMA: application/jsonindividualobjectprocessing_statusstringEnum: ″COMPLETED″″ACQUIRING″″IN_PROGRESS″Processing status of the request.COMPLETED- System has finishedprocessing of the request. ACQUIRING -We have received the request and systemis acquiring the enrollment status. Notethat if System requires any interventionfrom our team, the status will updateto IN_PROGRESS. IN_PROGRESS - Wehave received the request and our team isworking to process the enrollment status.transaction_idstringUnique identifier for this transaction.enrollment_statusArray of objects (Enrollment Status)
Get Income Summary (Services/Get_Income_Summary)

The services/get_income_summary retrieves a summary of an Individual's income based on the income related Items, including salary and other income related information, retrieved from a Data Source, such as a payroll processing system.

HEADER PARAMETERSversionnumberVersion number of the System API you wish tointegrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonindividualobjectrequiredcallbackobject
Responses
200: Successful Response

RESPONSE SCHEMA: application/jsonindividualobject (Individual)Object representing details of anIndividual identified by Systemtransaction_idstringUnique ID of this transaction.processing_statusstringEnum: ″COMPLETED″ ″ACQUIRING″Processing status of the request.COMPLETED - System has finishedprocessing of the request. ACQUIRING -We have received the request and systemis acquiring the academic summary.income_summaryArray of objects (Income Summary)
Get Employment Summary (Services/Get_Employment_Summary)

The services/get_employment_summary endpoint retrieves a summary of an Individual's employment based on employment related Items, including history and status, obtained from one or more Data Sources.

HEADER PARAMETERSversionnumberVersion number of the System API you wish tointegrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload. System acceptscontent in application/json format unless specifiedotherwise

REQUEST BODY SCHEMA: application/jsonindividualobjectrequiredcallbackobject
Responses
200: Successful Response

RESPONSE SCHEMA: application/jsonindividualobject (Individual)Object representing details of anIndividualtransaction_ididentified by System stringUnique ID of this transaction.processing_statusstringEnum: ″COMPLETED″ ″ACQUIRING″Processing status of the request.COMPLETED - System hasfinished processing of the request.ACQUIRING - We have received therequest and system is acquiring theacademic summary.employment_summaryArray of objects (Employment Summary)
Invitations

In one implementation, data processing system104offers a framework for initiating the consumer-permissioned data exchange using automatically generated invitations. These invitations contain unique links that refer the user back to a hosted portal in a personalized manner to initiate and complete the consumer-permissioned data exchange. These API endpoints provide a programmatic interface to this framework.

In one implementation, the invitations/new endpoint creates a new Invitation object.

HEADER PARAMETERSversionnumberVersion number of the System API youwish to integrate.Authorizationstring <bearer <API_KEY>>Authorization API KeyContent-typestring <application/json>Content-type of the request payload.System accepts content in application/jsonformat unless specified otherwise

REQUEST BODY SCHEMA: application/jsonindividual_idstringUnique ID of the Individual identifiedby SystemvaliditynumberValidity in seconds from the createdTimestamp. Default is 259200 seconds(3 days) from the created time stamp.link_onlybooleanBoolean indicating whether to sendcommunication to theIndividual or just generate a link.Default is false and System sends the EmailCommunication to the Individual.If false, individual_id is required.additional_messagestringAdditional message that you may want topass to the candidate in the invitation email.This attribute cannot be used whenlink_only is false.query_typeArray of stringsrequiredItems Value: ″ACADEMIC_SUMMARY″
Responses
200: Successful Response

RESPONSE SCHEMA: application/jsonidstringSystem recognized Unique ID of the Invitation

Data processing system104may also include APIs for retrieving a list of outstanding invitations, getting detailed information regarding an invitation, and/or expiring an invitation.

Transcripts

The Transcript resource is the main resource for the transcript object that represents a given user's academic record for one program at a single institution. The resource provides a CRUD-based interface to the transcript object. CRUD is an acronym for CREATE, READ, UPDATE, DELETE. Transcripts are created by submitting Items or “source data”, which is then extracted and/or normalized into standard definitions, such as those set forth in Appendix 1. Once a transcript is submitted, the data processing system104initiates 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 the processing of a transcript is complete, application server106may receive a notification through a webhook or other notification system implemented by data processing system104. At that point, an application server106may access 1) all the processed data for the transcript using the API supported by data processing system104, such as /transcripts/get_by_id, 2) processed Digest fields for the transcript using /transcripts/get digest by id, or 3) pass the transcript to/analytics resources hosted at data processing system104.

Each Transcript resource, in one implementation, generally refers to a single program within a single academic institution. A user's academic record that spans multiple programs across multiple institutions may be submitted in separate transactions so that each Transcript resource follows the single-program per institution guideline. Not doing so may result in errors in the extraction and normalization process.

The following provides certain type definitions that may be used in implementations of the data processing system104.

School Schema

Table 2A illustrates an example schema for a School object.

TABLE 2Aillustrates an example schema for a School object.AttributeTypeDescriptionidstringUnique ID of the school identified by Systemunit_idstringExternally recognized Identifier of the school.E.g., IPEDS UNIT IDsis_urlstringURL to the school's SIS, if available.namestringName of the school
Transcript Schema

Table 2B illustrates an example schema for a Transcript object.

TABLE 2BTranscript SchemaAttributeTypeDescriptionidstringTranscript ID, read-onlyexternal_idstringA customer-generated uniqueidentifier linked to the transcript.Customers may have multipletranscripts linked to the sameexternal_idschool_unit_idstringUnitID (as reported in theIPEDS database) of theschool and campus that thetranscript belongs tosource_data[object]An array of Source Data objects,with one object per source ofacademic data within the transcriptprocessing_statusstringStatus of data extraction on thetranscript, read onlyEnumValues: IN-PROGRESS,COMPLETEDrawobjectAn object containing the informationabout the parsed transcriptdigestobjectObject containing the informationabout the transcript in a digest formatcreated_atintegerTimestamp for when the transcriptwas created, read-onlyupdated_atintegerTimestamp for when the transcriptwas 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 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.

TABLE 3Source DataAttributeTypeDescriptionreferrerstringLabel used to identify the source ofthe transcript datasource_data_typestringFormat of the source dataENUMValues:M1_DIGEST,M1_TRANSCRIPT, OTHERsource_data_valueobjectObject containing values for sourcedata fieldssource_data_referenceobjectReference information to a documentspecifying the source data
Source Data Reference Schema

TABLE 4Source Data ReferenceAttributeTypeDescriptionuristringURI scheme for a remote document.The supported schemes include the M1 scheme,an internal scheme used to refer to internalSystem resources. Seebelowfor examples.SupportedSchemes:M1, HTTP, HTTPS,FTP, SFTP.Format:scheme:[//authority ]path[?query][#fragment]media_typestringMedia type of the source data documentSupportedTypes:application/pdf, application/json,application/msword, image/jpeg,image/png, image/tiff, text/html, text/plainhttp_methodstringHTTP/S request methodValues:GET, POSThttp_headersobjectHTTP/S request headerhttp_bodyobjectHTTP/S request bodyfile_namestringFile name of document uploaded throughthe/transcripts/upload endpoint, read-onlycreated_atintegerTimestamp for when document containing thesource date was provided to System, read-only
Source Data Types

Data processing system104supports transcript source data in a variety of formats as detailed in Table 5 below.

TABLE 5Source Data TypesTranscript DataTypeFormatDescriptionM1_DIGESTJSONA lean transcript format thatSCHEMAincludes select transcript data fieldsM1_TRANSCRIPTJSONThe System full transcript payloadSCHEMAOTHERUse this type for all other transcriptformats. A common use casefor this type is for source dataprovided in a previously uploadedfile containing data thatis not M1_DIGEST orM1_TRANSCRIPT (e.g., a PDFor JPEG of a transcript).
M1-Digest Schema

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 transcript analytics, making it a useful format for creating and scoring transcripts based on user-reported data. The following provides an example payload and schema for the Digest.

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

TABLE 6M1_DigestAttributeTypeDescriptiondegree_typestringGranular level of studyStandardizedValues:ASSOCIATE, BACHELORS,MASTERS, MASTERS-RESEARCH,DOCTORAL, CERTIFICATE,DIPLOMA, HIGH-SCHOOL-DIPLOMA,NON-DEGREEyears_in_schooldoubleNumber of years that the student has beenenrolled, including any breaks betweenenrollmentsmin_gradestringLowest grade earned on a course takenStandardizedValues:A, B, C, D, FcgpadoubleWeighted CGPA, in the 0 to 4 scale, for thecombination of courses attended atthe transcript-issuing schoollast_term_gpadoubleGPA, in the 0 to 4 scale, for the lastterm of attendancecredits_earneddoubleTotal credits earned including transferredcredits, converted to a standard semestercredit hour system
M1-Transcript Schema

The following sets forth a format for representing academic transcript data in an example standard format.

AttributeTypeDescriptiontranscript_datestringDate on which the transcript wasissued. transcript date should notbe a future datestudent_idstringUnique, school-providedStudent IDstudentobjectObject with information aboutthe student, as provided on thetranscriptprevious_academic_recordobjectList of previous academic recordsprovided on the transcript.transcript_institutionobjectObject with information aboutthe institution for which thetranscrip twas issued.academic_summaryobjectList of objects providingsummary information at degree/institution/transfer levelacademic_sessionsobjectList of academic sessionsprovided on the transcript
Student Object:

AttributeTypeDescriptionfirst_namestringFirst name of the studentlast_namestringLast name of the studentmiddle_namestringMiddle name of the studentfull_namestringFull name of the studentprefixstringPrefix to the namesuffixstringSuffix to the nameformer_first_namestringFormer first nameformer_middle_namestringFormer middle nameformer_last_namestringFormer last nameformer_full_namestringFormer full nameformer_suffixstringPrefix to the former nameformer_prefixstringSuffix to the former namedate_of_birthstringBirthdate of the student(date_of_birth should notbe a future date)ssnstringSSN of the studentemailstringEmail address of thestudent, as provided on thetranscriptaddressobjectStudent's Address informationas provided on the transcript
Address Object:

AttributeTypeDescriptionaddr1stringAddress line 1addr2stringAddress line 2Should be populatedonly if addr1 is populatedcitystringCitystatestringStatezipcodestringZipcode for the addresscountryobjectCountry information
Country Object:

AttributeTypeDescriptionnamestringName of the countrya2_codestringAlpha-2 code for the country fromISO 3166
Previous Academic Record Object: List of previous academic records provided on the transcript. This object should have one of name or degrees for a valid record.

AttributeTypeDescriptionnamestringName of the institutionid_typestringID Type of the institutionEnum IPEDS, FICE, OTHER{grave over ( )}idstringUnique identifier of the institutione.g., Unit ID like 228246start_datestringStart date of the programend_datestringEnd date of the programaddressobjectAddress information of the institutiondegreesobjectList 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 session's start and end date.

AttributeTypeDescriptiontypestringLevel of the degree.Enum HIGH-SCHOOL-DIPLOMA,ASSOCIATE, BACHELORS,MASTERS, MASTERS-RESEARCH, DOCTORAL,CERTIFICATE, DIPLOMA,NON-DEGREE, PROFESSIONAL,UNDERGRADUATE, UNKNOWNstatusstringStatus of the degreeEnum AWARDED, ENROLLED,WITHDRAWN, TERMINATED,UNKNOWNawarded_datestringDegree awarded date(for graduated students only)descriptionstringLiteral name of the degree aspresented on the transcriptacademic_summary[object]Summary information about thedegreefield_of_study[object]List of objects with informationabout 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—e.g.: MAJOR, MINOR, CONCENTRATION. A valid field of Study object must have values for type and description.

AttributeTypeDescriptiontypestringType of studySupported values:MAJOR,MINOR, CONCENTRATIONdescriptionstring: Name of the field of studycode_typestring: Type of the code used for identifying the field ofstudy E.g. CIP, HEGIS, OTHERcodestring: Specifies the code for the field of study associatedwith 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.

AttributeTypeDescriptioncredit_typestringType of credit used E.g. SEMESTER,QUARTER, UNITS, CLOCK-HOURS,CARNEGIE-UNITS, CONTINUING-EDUCATION-UNIT, OTHERlevelstringThe level of the academic summary.E.g. INSTITUTION, TRANSFER, TOTALcumulativebooleanBoolean indicating whether the summary iscumulative.gpa_creditsdecimalCredits attempted on courses that areincluded in the GPA calculationShould be a non-negative number, if availableattempteddecimalCredits attemptedShould be a non-negative number, if availableearneddecimalCredits earnedShould be a non-negative number, if availablegpadecimalGrade Point AverageShould be a non-negative number, if availablequality_pointsdecimalQuality points for grade, used in GPAcalculationShould 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’

AttributeTypeDescriptionnamestringName of the institutionid_typestringType of ID used to identify given institution E.g.IPEDS, FICE, OTHERidstringUnique identifier of the institute e.g. UNIT_ID of theinstitution as per IPEDSaddressobjectObject 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.

AttributeTypeDescriptiontypestringType of session E.g. SEMESTER, TRIMESTER,QUARTER, FULL-YEAR, MINI-TERM,SUMMER-SESSIONnamestringName of the session e.g. Fall 2012start_datestringStart Date of the sessionend_datestringEnd Date of the sessionin_progressbooleanBoolean indicating whether the session is in-progress at the time of transcript_datelevelstringGrade Level or Academic Level of the student forthe sessionhonors[string]Academic honors or awards for the sessionE.g.: Cum Laude, Summa Cum Laude, MagnaCum Laudecurriculum_code_typestringType of the code used for identifying curriculumE.g. CIP, HEGIS, OTHERcurriculum_codestringCode identifying the program in which thestudent i senrolled for this sessioncurriculum_namestringName of the program in which the student isenrolled for this sessionacademic_summary[object]Summary information about this academic sessioncourses[object]List of courses taken in this academic session.At least one of the academic sessions should havecourses objectdegrees[object]List of degrees associated with this academicsession.At least one of the academic sessions should havedegrees object
Course Object:
A valid course Object should have one of id or name

AttributeTypeDescriptioncredit_basisstringIndicates the method of credits earned for thecourse E.g.: REGULAR_ENROLLMENTTRANSFER ADVANCED_PLACEMENThonors_coursebooleanIndicates if it is honors course or notrepeatedbooleanIf the course was repeated by the studentcount_in_gpabooleanIf the course performance is counted in gpacalculation or notcode_typestringCode designating the system/method of codestructure used for Identification Code used todescribe the content of the courseEnum CIP, HEGIS, OTHERcodestringCourse code information as presented on thetranscriptidstringCourse ID as presented on the transcriptnamestringFree-form name to describe the content of thecourseinstructional_settingstringType of instructional setting in which aprogram is providedcreditsobjectObject with information related to creditsfor the coursestart_datestringCourse start dateend_datestringCourse end date
Credits Object:

AttributeTypeDescriptioncredit_typestringType of credit usedEnum SEMESTER, QUARTER, UNITS,CLOCK-HOURS, CARNEGIE-UNITS,CONTINUING-EDUCATION-UNIT,OTHER (For a valid credits object,credit_type is mandatory)gpa_creditsdecimalCredits attempted on courses that areincluded in the GPA calculation (Shouldbe a non-negative number, if available)attempteddecimalCredits attempted (Should be anon-negative number, if available)earneddecimalCredits earned (Should be a non-negative number, if available)quality_pointsdecimalQuality points for grade, used inGPA calculation (Should be anon-negative number, if available)grade_qualifierstringThe grading scale used by an academicinstitution or the course (Shouldbe a non-negative number,if available)gradestringIndicates the grade that a studentreceived for participation in the course(Should be a non-negative number,if available)
The following is example payload for a transcripts object.
Sample Payload
Enrollment Summary Schema
The Enrollment Summary type is a summarized format for representing enrollment in a given transcript.

AttributeTypeDescriptiontranscript_datestringDate on which the transcript wasissued. transcript date should notbe a future datestudent_idstringUnique, school-provided Student IDstudentobjectObject with information about thestudent, as provided on the transcripttranscript_institutionobjectObject with information about theinstitution for which the transcriptwas issued.academic_summary[object]List of objects providing summaryinformation at degree/institutionleveldegrees[object]List of degrees associated with thistranscript.academic_sessions[object]List of academic sessions providedonthe transcript (without courses,degrees and academic summary)
The following is an example payload for an enrollment summary object.
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”: “GRADUATED”,“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}]}
Schools

The school resource supported by data processing system104helps in integrating various functionalities around transcript processing with a developer application flow. Data processing system104maintains the latest list of schools, their access information and meta-data that developers can seamlessly integrate.

Schools Endpoints

Get Schools List

POST /schools/get

The following endpoints help in integrating M1LINK (see below) without using the drop-in module.

ParameterstypeRequired?Descriptiona2_codestringYesA2 Code of the country for whichyou want to fetch the list of schools.

The following is an example sample_input.json for getting schools.

{“a2_code”: “US”,}

Response Payload may be a list of schools in the country specified.

Sample Response

[{“m1_id”: “sch_CV8e5Lsvv2S8Wiz9Bpwpr81m9Ay”,“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”},]
Transcript Endpoints
Create Transcript
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, the application may send the source data inline in the request using the source_data_value object. If the data is in a document, the application may 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. The following is a sample request and schema for didactic purposes:

Sample Request

curl ″https://api.measureone.com/v1/transcripts/new″-H ″Authorization: bearer 536835b6-77ca-403d-88ef-b3c72580e070″-H ″Content-Type: application/json″-H “version: 2020011001”-d ″@sample_input.json″-X POST
Request Payload: With Source Data Sent Inline

AttributeTypeRequired?external_idstringNoschool_unit_idstringNosource_data[object]Yes, include one source data object containingthe complete academic record for the transcript.Multiple source data objects containingsource_data_value attributes willresult in an error.

AttributeTypeRequired?referrerstringNosource_data_typestringYes, we currently support creating newENUMtranscripts with inline payloads in theM1_DIGESTformatsource_data _valueobjectYes, in theM1_DIGESTschema
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_level”: “UNDERGRADUATE”“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 a Reference to Source Data

AttributeTypeRequired?external_idstringNoschool_unit_idstringNosource_data[object]Yes, include one or more source dataobjects with references to documentsthat, when combined, provide a completeacademic record for the transcriptsource_data Object:

AttributeTypeRequired?referrerstringNosource_data_typestringYes, choose OTHER for all source dataENUMthat isn't an M1_DIGEST orM1_TRANSCRIPTsource_data_referenceobjectYessource_data_reference Object for Files Uploaded Using/transcripts/upload:

AttributeTypeRequired?uristringYes, include the ml scheme uri returnedin the response to /transcripts/uploadmedia_typestringYes
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”: “ml://sdr_CaIGVqBRRpETI6fkCyUSpNHbHFo”,“media_type”: “application/pdf”}},{“referrer”: “USER”,“source_data_type”: “OTHER”,“source_data_reference”: {“uri”: “m1://sdr_DaKTVqBRRpEEI3fkCbUSpNHbkFm”,“media_type”: “application/pdf”}}]}source_data_reference Object for Files Uploaded to a Remote Location:

AttributeTypeRequired?uristringYesmedia_typestringYeshttp_methodstringRequired for HTTP/S requestshttp_headersobjectRequired for HTTP/S requestshttp_bodystringRequired for HTTP/S requests
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”}}]}
Response Payload

Data processing system104may create a transcript object for the created transcript with the following attributes:

AttributeTypeDescriptionidstringID of the created transcriptprocessing_statusstringCOMPLETED for transcripts createdwith source data in inline payloadsIN-PROGRESS for transcripts createdwith source data in uploaded documents
Sample Response

{“id”: “trc_Cevp4Jw9CIsEeNjpgAAjy2EZt3R”,“processing_status”: “IN_PROGRESS”}
Upload Transcript Data
POST /transcripts/upload

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

Request Payload

AttributeTypeRequired?files[files]YesSupported FileTypes: DOC, HTML, JPG, JSON,PDF, PNG, TIFF, TXT
Sample Request

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

The response payload may include an array of Source Data Reference Objects, one object for each uploaded document. The uri returned in the response may be used to link the uploaded documents to a new transcript, as in the example provided herein.

Sample Response

[{“uri”: “ml://sdr_CaIGVqBRRpETI6fkCyUSpNHbHFo”,“file_name”: “fileX.pdf”,“created_at”: 1561613398393},{“uri”: “m1://sdr_DaKTVqBRRpEEI3fkCbUSpNHbkFm”,“file_name”: “fileY.pdf”,“created_at”: 1566455776896}]
Get Transcript
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 raw values, standardized values and processing codes for all attributes in the M1_TRANSCRIPT schema.

Request Payload

AttributeTypeRequired?idstringYes
Sample Requestcurl “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”}
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.

Sample Response when source_data_type is not M1_DIGEST

Get Enrollment Summary

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 schema.

Request Payload

AttributeTypeRequired?idstringYes
Response Payload
Transcript Object for the created transcript, with an enrollment_summaryobject with verified fields from the transcript.
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 POSTsample_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”: “GRADUATED”,“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}}
Get Digest

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 the processing_status for a transcript is COMPLETE. It will return the M1_DIGEST schema.

Request Payload

AttributeTypeRequired?idstringYes
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_input.json

{“id”: “trc_TSEne2SSjP3GvpVrs5HLol4xor2”}
Response Payload

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

{“id”: “trc_TSEne2SSjP3GvpVrs5HLol4xor2”,“external_id”: “ABCDECD”,“school_unit_id”: 151351,“source_data”: [{“referrer”: “M1_PORTAL_SCHOOL”,“source_data_type”: “OTHER”,“source_data_reference”:“uri”: “ml://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}
Get Transcript Files
GET /transcripts/get files

The /transcripts/get files endpoint allows developers to download source data files associated with a transcript. The endpoint, in one implementation, 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

AttributeTypeRequired?idstringYes
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
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. The file name will be the transcript ID. For all other response codes, the response is of type application/json and returns a standard Error object.

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”}
Analytics

Developers may use the extracted and normalized transcript data to develop their own proprietary models. Data processing system104, in one implementation, also supports resources that provide analytics and scores based on transcript data. An application may send a transcript to an/analytics endpoint when its processing_status is “COMPLETED”. For example, a request to services/meritscore or /analytics/meritscore returns a MeritScore for a transcript, a score indicative of default credit risk. In another example, a request to services/gradscore or /analytics/gradscore returns a GradScore for a transcript, a score indicative of graduation likelihood. In one implementation, both scoring models are based on data sets and machine learning techniques that link academic achievement and future individual behavior (e.g., as consumers of credit and/or educational services). In addition to the raw and standardized transcript information, data processing system104may identify a set of derivative metrics during processing—such as the average number of courses completed in a given term, standardized grade point average, grade point average trend, and the like. The transcript statistics, such as average courses completed each term and number of courses, provide a first level of analysis of the transcript, increasing utility and accelerating decision-making. In one implementation, MeritScore may be based on federal student loan data and also include other credit history data. GradScore is based on academic data including graduation information. In either case, machine learning techniques—such as feature extraction, gradient boosting, ensembling, etc.—can be used to derive various aspects of academic transcript data that are significant to a target.

MeritScore and GradScore provide mechanisms for comparing individuals in a given dataset in that each individual score characterizes an approximate difference between individuals relative to a target behavior (such as credit default (MeritScore) or graduation (GradScore)). In one implementation, both scores are scaled such that a certain score corresponds to a selected good/bad odds ratio. A “points to double the odds” formula may be used to adjust the score based on the inputs. For example, in one implementation, a block of 40 points on the scoring scale corresponds to a doubling of the odds of a target event (e.g., default, graduation, etc.).

MeritScore

POST /analytics/meritscore or/services/meritscore

MeritScore is a scoring model that establishes predictive links between individualized academic data and credit performance. MeritScore enables financial institutions and credit providers with better decision-making tools when evaluating the credit-worthiness of individuals with limited financial history. MeritScore may be scaled similarly to a FICO score, providing a standard metric for comparison. In one implementation, the data processing system104derives an M1_DIGEST from a given transcript. The M1_DIGEST is the input to the scoring model. In the implementation described below, data processing system104may compute a MeritScore for any transcript that has validated, non-null values for required M1_DIGEST fields and processing_status=“COMPLETED”. The following sets forth example M1_DIGEST fields, as well as example request and response formats. As discussed herein, the M1_DIGEST fields can be received directly from users as part of a pre-screening process with later verification by obtaining transcript data directly from one or more academic institutions.

M1_DIGEST Attrib

M1_DIGEST AttributeRequired?degree_typeYesyears_in_schoolYesmin_gradeYescgpaYeslast_term_gpaYescredits_earnedYes
Request Parameters

AttributeTypeDescriptiontranscripts[string]An array of transcript IDs to be scoredNOTE: System currently supports scoringsingle transcripts and will return an errorif more than one id is included in the requestidstringSystem generated transcript ID
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”}]}
Response Parameters

Response ParametersAttributeTypeDescriptionmerit_scoredecimalSystem's MeritScore for the requestedtranscriptaa_code_1integerFirst adverse action code that can be usedfor decline decisionsaa_code_2integerSecond adverse action code that can beused for decline decisionsaa_code_3integerThird adverse action code that can beused for decline decisions
Adverse Action Reasons

Adverse Action ReasonsAdverseAction CodeAdverse Action Reason1Overall academic performance could be improved2Academic performance has concerning trend3Meaningful progress has not been madetoward successful completion of studies4Academic performance is not steady and stable
Sample Response

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

POST /analytics/gradscore

GradScore is a scoring model that establishes the relationship between historical transcript data and academic persistence. This proprietary score may be used as a metric for predicting a student's future academic performance, giving financial aid, admissions, and counseling professionals confidence in decisions on where to direct their limited institutional resources. The GradScore can be computed on any transcript that has validated, non-null values for required M1_DIGEST fields and processing_status=“COMPLETED”. The following sets forth example M1_DIGEST fields, as well as example request and response formats.

M1_DIGEST AttributeRequired?degree_typeyesyears_in_schoolyesmin_gradeyescgpayeslast_term_gpayescredits_earnedyes
Request Parameters

Request ParametersAttributeTypeDescriptiontranscripts[string]An array of transcript IDs to be scoredNOTE: System currently supports scoringsingle transcripts and will return an error ifmore than one id is included in the requestidstringSystem generated transcript ID
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”}
Response Parameters

Response ParametersDataAttributeTypeDescriptiongrad_scoredecimalSystem's GradScore for the requestedtranscriptaa_code_1integerFirst adverse action code that can beused for decline decisionsaa_code_2integerSecond adverse action code that can beused for decline decisionsaa_code_3integerThird adverse action code that can beused for decline decisions
Adverse Action Reasons
Adverse Action

CodeAdverse Action Reason1Overall academic performance could be improved2Academic performance has concerning trend3Meaningful progress has not been made towardsuccessful completion of studies4Academic performance is not steady and stable
Generate a MeritScore Based on User-Reported Data

The MeritScore is an 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 may be verified at a later time by scoring the full transcript, is often the right design.

To address this use case, data processing system104, as discussed above, 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.

In one example embodiment, 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 or /services/meritscore for that transcript ID, and you'll get the MeritScore in the response.

Webhooks

In one implementation, data processing system104uses webhooks to notify client applications of certain events. Whenever a notification event occurs, the data processing system104submits a POST to a developer-designated webhook URL with information about the event. The webhook URL may be configured as part of the developer onboarding process. In one implementation, the webhook notifications support OAuth 2.0 and Basic Auth for authorization. The API key configured during the setup of the webhook in the developer onboarding process, will be present in the Authorization header. In addition, the User-Agent for the requests will have the prefix M1-Webhook/.

Sample Webhook Payload

{“transcript_id”: “trc_TSEne2SSjP3GvpVrs5HLol4xor2”,“external_id”: “ABCDECD”,“event”: “transcript.created”}

AttributeTypeDescriptiontranscript_idstringSystem generated transcript IDexternal_idstringA customer-generated unique identifier linkedto the transcript. Customers may have multipletranscripts linked to the same external_id.eventstringTranscript events that triggerwebhook notifications
DEFINITIONS ENUM

The supported notification events are in the following table:

EventDescriptionacademic.account.authenticatedAn academic account for an individualhas been successfully authenticatedacademic.item.createdAn academic item(transcript/individual profile) hasbeen created and is pending processingto extract data “processing_status”:“IN_PROGRESS”transcript.createdThe transcript object has been createdand is pending processing to extractdata “processing_status”:“IN_PROGRESS”transcript.processedThe transcript object has beenprocessed and data is available to bepulled “processing_status”:“COMPLETED”academic.item.processedThe academic item has been processedand data is available to be pulled“processing_status”: “COMPLETED”transaction.processedThe transaction has been processedand data is available to be pulledunprocessable.entityRaised in the event of an item receivedby the system, such as a transcript,cannot be processed by the systemsession.rejectedThe LINK session cannot be processedsession.no_loginThe user cannot login to their schoolusing LINK

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

M1LINK

As described in more detailed below, data processing system104supports session proxy functionality by which source data associated with an individual user may be gathered in a manner that is permissioned by the user and that assures the provenance of the source data. In a particular implementation, data processing system104supports functionality allowing developers to retrieve transcript data directly from student information systems associated with one or more academic institutions. In some implementations, this retrieval functionality (M1LINK) can be integrated into a developer application flow through a widget provided by data processing system104or by calling APIs hosted by data processing system104. Widget integration may require embed code and JavaScript code. In one example workflow, a user provides required details on the widget and submits the credentials. Following successful submission of credentials with certain parameters (see below), data processing system104confirms a connection to user's academic account with a success response back to the widget. Following retrieval of a transcript, data processing system104may trigger a webhook notification with external id and transcript id.

The following is example embed code that may be used.

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

ParametersParameterstypeSourceDescriptionschool_idstringWidgetSystem provided uniqueidentifier of the school.User selects school fromthe dropdown in thewidgetuser_namestringWidgetUser name to login touser's University websitewhere academic recordcan be accessedpasswordstringWidgetPassword to authenticateand connect user'sUniversity account toSystemexternal_idstringCustomerA customer generatedApplicationunique identifier of theuser. It is part of theembed codeaccess_keystringCustomerSystem provided APIApplicationaccess_key. IT is part ofthe embed code
M1LINK Endpoints
Access Transcript.

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

POST /M1LINK/access_transcript

The /M1LINK/access transcript endpoint retrieves the transcript from the student information service107of a given academic institution. The calling system will receive webhook notifications as the transcript moves through the proxied session and data processing pipeline.

Sample Request

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

The following is sample_input.json with the input parameters to access transcript end point.

{“external_id”: “123445”,“school_id”: “sch_e3638c65-daf9-405a-b2d1-e87b3537af75”,“user_name”: “user_name”,“password”: “password”}

ParameterstypeReq'd?Descriptionschool_idstringYesA unique identifier of the school. Theschool information can be retrievedfrom/schools/get end point (seebelow)user_namestringYesUser name to login to user'sUniversity website where academicrecord can be accessedpasswordstringYesPassword to authenticate and connectuser's University account to Systemexternal_idstringYesA customer generated uniqueidentifier of the user. It is part of theembed code
Response Payload

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

Sample Response to Access Transcript Endpoint

{“session_id” : “tls_Cevp4Jw9CIsEeNjpgAAjy2EZt3R”}
2xx Success
A 2xx status code indicates the request was received and processed successfully.
Status

Status CodeDescription200OK-The request is successful202ACCEPTED-The request is Accepted and mfais required to complete the authentication
Verify MFA Token

Many academic institutions ask the user for multi-factor authentication. An example M1LINK module supports DUO MFA, if the institution has it enabled. The user is expected to provide the One-Time Password (OTP) that can be submitted for authenticating the user.

POST /M1LINK/verify_mfa

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

ParameterstypeRequired?Descriptionsession_idstringYesa provided uniqueidentifier of the session.mfa_tokenstringYesOne time password
Sample Request

curl “https://api.measureone.com/v2/M1LINK/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”}

FIG.2is a diagram illustrating the information flow among various system components during an example transcript (source data) retrieval process utilizing example M1LINK functionality. The example information flow may be initiated using the M1LINK APIs set forth above. In one implementation, a user, using a browser client202executing on user client108a, may access application server106and transmit a request that launches a transcript retrieval or other source data process. This request may cause application server106to transmit a response to browser client202that re-directs the browser client202to proxy front end204of data processing system104. The redirection messages may include identifiers associated with the user and the application server, as well as other information, such as session identifiers, security tokens, and the like. Proxy front end204may transmit a response to browser client202prompting for selection of an academic institution, such as a college or university. Data processing system104provides a predefined or curated selection of academic institutions. Data processing system104also stores corresponding network addresses (e.g., URLs) associated with these academic institutions. Data processing system104does not accept network addresses of systems that host source data directly from users in this process, thereby ensuring the provenance of the data source.

AsFIG.2illustrates, when the user uses browser client202to select an academic institution, browser client202transmits a request for a login page to the student information system107(or other system that hosts desired source data) associated with that academic institution (FIG.2, Step1). Receipt of the login request at proxy front end204causes the launch of a proxy browsing instance206(FIG.2, Step2), which transmits a request for a login page to the student information system107of the selected academic institution (FIG.2, Step3). The proxy browser instance206, in one implementation, is a browser engine running in a headless or headful mode and may be based on Puppeteer, a node library providing API control of a Chromium-based browser, such as the Chrome browser offered by Google, Inc. of Mountain View, California. The student information system107responds by transmitting the login page to proxy browser instance206(FIG.2, Step4). The proxy browser instance206processes the login page content to generate a document object model (DOM) representing the structured document content that is ordinarily displayed in the window of a browser (FIG.2, Step5). As part of this processing, the proxy browser instance206executes one or more code modules embedded in the content (such as JavaScript) that may cause modifications to the DOM. Proxy front end204prepares the content processed by the proxy browser instance206to be transmitted to browser client202(FIG.2, Step6). In one implementation, proxy front end204strips or removes scripts and other executable code from the processed version of the content and adds a synchronization code module208to the structured document content. Proxy front end204transmits the modified structured document content (including a copy of the HTML code for the currently rendered page and the iFrames within the currently rendered page) to the browser client (FIG.2, Step7). Still further, a mutation observer executing in connection with proxy browsing instance206monitors for changes to structured document content (which may occur due to script execution or I/O related events) and streams updated structured document content to the synchronization code module208.

The browser client202processes the structured document and renders it within a browser window displayed to the user. In this phase, the content displayed to the user may be a login page402prompting the user for user credentials to gain access to an account hosted on student information system107. SeeFIG.4. In one implementation, the synchronization code is an executable module (such as a JavaScript module) that establishes a Web Socket connection with proxy front end204and monitors for in-focus input/output (I/O) events related to the browser client202. Such in-focus I/O events can be data relating to movements of a mouse (or other I/O device) within the window of browser client202, mouse clicks on HTML elements, mouse-over events, touch events, and keyboard inputs. In one implementation, the synchronization code208streams event data associated with these I/O events to proxy front end204. Accordingly, as the user inputs credentials into the login page, the synchronization code208streams the credential information as a series of I/O events to proxy front end204(FIG.2, Step8a).

Proxy front end204provides the event data to proxy browser instance206, which uses the event data to replicate the user's interactions with the content rendered at browser client202in connection with the structured document processed at proxy browser instance206(FIG.2Step8b). A mutation observer monitors for changes to content maintained by proxy browser instance206(FIG.2, Step9) and launches a process that transmits updates to the content to browser client202(FIG.2, Step10). For example, an embedded JavaScript module executing in connection with the structured document maintained by proxy browser instance206may cause the structured document content to change. In another example, a user may mouse over a user interface element. This mouse-over event, when replicated at proxy browser instance206, may cause JavaScript embedded in the page to modify the DOM maintained by the proxy browser instance206to display a dropdown menu. The mutation observer detects these changes, causing proxy front end204to transmit an update message to synchronization code208over the Web Socket connection. The synchronization code208modifies the structured document processed by browser client202based on the changes specified in the update message. In another example, the I/O event data may cause proxy browser instance206to transmit an HTTP request to student information system107. The student information system107may respond with additional structured document content, such as a landing page after successful authentication. The mutation observer detects these changes and transmits them to synchronization code208as update messages for replication at browser client202. In one implementation, the update messages are JSON-encoded messages. In one implementation, if student information system transmits an entirely new page (e.g., a landing page) to proxy browser instance206, the processing can loop back to step5for the new page—e.g., where native scripts are executed and stripped, and synchronization code is inserted, before sending to browser client202and the mutation observer is reinitialized to observe for changes to the rendered version of the new page at proxy browser instance206.

Additionally, proxy front end204may insert other code modules that augment the functionality of the native content provided by student information system107. For example, asFIG.4illustrates, proxy front end204may insert widget code404that is not a part of the original page served by student information system107and provides a graphical overlay of one or more controls that facilitate the uploading of transcript data retrieved from student information system107. In the foregoing example, a user may authenticate to student information system107and access the user's transcript data. The transcript data may itself be in the form of a structured document, such as a portable document format (PDF) file or an HTML document. When the user has accessed the transcript, the controls provided by the shopping cart code404, when invoked, launches an automated process that retrieves the transcript data and stores it in a data store maintained by data processing system104for additional processing. In one implementation, the data processing system104uses the APIs discussed above to process the retrieved academic data. After the user logs out or otherwise terminates the session with student information system107, the browser client is redirected to application server106and the proxy browser instance206is also terminated. Any state information associated with the proxy browser instance206is also deleted so that no passwords or other information is maintained.

Other implementations are possible. For example, the interactions between browser client202and proxy front end204may occur within an iframe of an HTML page hosted by application server106, as opposed to a redirection workflow. In addition, the application server106may prompt the user for selection of the academic institution, which gets passed in the iframe or redirection process to proxy front end204.

Still further, as an example, a modified form of the proxy functionality described above may be used in connection with an automated process that accesses an identified student information system107and automatically retrieves information about the student that may include a student's profile, enrollment information and transcript data. In other words, after a user logs into student information system107, a script executing on proxy browser instance206may automatically navigate student information system107and retrieve the requisite transcript data.FIG.3illustrates an example workflow for automatically retrieving transcript data from a student information system107. AsFIG.3shows, in one implementation, after a user requests to retrieve a transcript, application server106may initiate the process by causing data processing system104to launch the proxy-based session described above (302).

As discussed above, the user may be presented with a login page prompting for user credentials, such as username and password. The login page may be served from either the student information system107or a different host than student information system107. If the login page is served from a different host, the user credentials are passed to proxy browser instance206as discussed above. In some implementations, the student information system107may implement a two-factor authentication process. In one implementation, if the user successfully authenticates (304), proxy front end204terminates the session between browser client202and proxy front end204(306). However, the session between proxy browser instance206and student information system107remains active. In the implementation shown, data processing system104determines whether it has a transcript access script associated with the academic institution corresponding to the student information system107(308). An access script, as discussed in more detail below, is a recorded set of I/O commands or coded instructions that proxy browser instance206implements to access and retrieve a transcript from student information system107. If an access script is available (308), proxy browser instance206executes the access script to access and retrieve the transcript data (312). If an access script is unavailable (308) or it fails to retrieve the transcript data, the proxy browser instance206session is added to a manual queue (310). While in the manual queue, the proxy browser instance206may transmit reload or refresh requests or otherwise transmit messages to student information system107in order to keep the session from timing out.

In one implementation, when a proxy browser instance206session is added to a queue, a notification is transmitted to an admin associated with data processing system104. When the admin responds to the notification, the user may login to the proxy browser instance206and manually control it in a manner described above to access and retrieve the transcript data. In one implementation, widget code may also be inserted to facilitate submission of the transcript as discussed above. After the user retrieves the transcript data, the session is terminated and the recording is stored for further analysis. As the admin user navigates, the I/O and clickstream events are recorded to generate an access script for the academic institution corresponding to the student information system107. The recorded events may include mouse positions, touch positions, keyboard strokes, mouseover events, JavaScript events, click events and the like. In implementations that use Puppeteer, the puppeteer instance can be used to control recording of browsing events during the session. The recorded events may be edited to generate the access script that can be later used in an automated process (312) in subsequent accesses. In one implementation, the analysis of the recording examines whether the recording can be used directly for future purposes or whether it should be converted into a program that may need looping or conditional logic. For example, looping or control logic may be needed when an individual has multiple transcripts and the list of transcripts is displayed in a dropdown menu. In such cases, the script may use a coded version of the recording.

Student information system107is merely one example of a possible host of source data. The foregoing proxied session functionality for accessing academic source data may also be used to retrieve other types of source data stored at remote hosts in association with individual users. For example, the proxied session functionality described above may be used in connection with payroll processing systems, government records systems, or any other network addressable system where a user's source data is hosted.

FIG.5illustrates an example of a computer system1100that may be used to execute program code stored in a non-transitory computer-readable medium (e.g., memory) in accordance with embodiments of the disclosure. Any of the servers105, user clients108a-c, and host clients106,107may incorporate the computer system architecture illustrated in the following description. The computer system includes an input/output subsystem1102, which may be used to interface with human users and/or other computer systems depending upon the application. The i/o subsystem1102may include, e.g., a keyboard, mouse, graphical user interface, touchscreen, or other interfaces for input, and, e.g., a LED or other flat screen display, or other interfaces for output, including application program interfaces (APIs). Other elements of embodiments of the disclosure, such as the prioritization engine may be implemented with a computer system like that of computer system1100.

Program code may be stored in non-transitory media such as persistent storage in secondary memory1110or main memory1108or both. Main memory1108may include volatile memory such as random access memory (RAM) or non-volatile memory such as read only memory (ROM), as well as different levels of cache memory for faster access to instructions and data. Secondary memory may include persistent storage such as solid-state drives, hard disk drives or optical disks. One or more processors1104reads program code from one or more non-transitory media and executes the code to enable the computer system to accomplish the methods performed by the embodiments herein. Those skilled in the art will understand that the processor(s) may ingest source code, and interpret or compile the source code into machine code that is understandable at the hardware gate level of the processor(s)1104. The processor(s)1104may include graphics processing units (GPUs) for handling computationally intensive tasks.

The processor(s)1104may communicate with external networks via one or more communications interfaces1107, such as a network interface card, WiFi transceiver, etc. A bus1105communicatively couples the i/o subsystem1102, the processor(s)1104, peripheral devices1106, communications interfaces1107, memory1108, and persistent storage1110. Embodiments of the disclosure are not limited to this representative architecture. Alternative embodiments may employ different arrangements and types of components, e.g., separate buses for input-output components and memory subsystems.

Those skilled in the art will understand that some or all of the elements of embodiments of the disclosure, and their accompanying operations, may be implemented wholly or partially by one or more computer systems including one or more processors and one or more memory systems like those of computer system1100. Some elements and functionality may be implemented locally and others may be implemented in a distributed fashion over a network through different servers, e.g., in client-server fashion, for example. In particular, server-side operations may be made available to multiple clients in a software as a service (SaaS) fashion.

Several features and aspects of the present invention have been illustrated and described in detail with reference to particular embodiments by way of example only, and not by way of limitation. Those of skill in the art will appreciate that alternative implementations and various modifications to the disclosed embodiments are within the scope and contemplation of the present disclosure. For example, implementations of the present invention can be applied to other types of consumer-permissioned data other than academic data, such as employment data, payroll data, membership data, and the like. Therefore, it is intended that the invention be considered as limited only by the scope of the appended claims.

APPENDIX 1

Overview

A standardization API converts data from heterogenous transcript formats into one standardized dataset. All academic transcripts contain similar data but are not easily comparable because of differences in the way institutions record, measure or define the data. Transcripts differ in their grading systems, credit systems, course types, GPA calculation rules, term structures and nomenclature. The underlying logic and standard values are based on insights from over 7000 individual transcripts and our database of school-specific information on grading policies and term structures.

Why Standardize?

1. Cleans and prepares the data for analysis: ensures uniformity in data types, scales/units, and categories for analysis across heterogenous transcripts2. Addresses data incompleteness: even if a field is not provided on a transcript, whenever possible it is imputed using available data and known relationships3. Enables comparative analysis: a comparable dataset levels the playing field for all students, ensures robustness of insights and leads to reliable decision-making
Interpreting Standardized Data:

The system provides Processing Codes for further information on the standardized value for a transcript.

Transcripts from non-US academic institutions can be standardized if the document is in English and can be reliably converted to US-equivalent grades and credits.

Standardization Guide

M1 Transcript Schema

AttributeDescriptionStandardized Valuetranscript_dateTranscript issuemm/dd/yyyydateschoolInstitution issuingFor US Post-SecondarytranscriptInstitutions: As appears inthe Integrated Post-SecondaryEducation DataSystem (IPEDS).For High Schools and ForeignInstitutions: As ontranscriptschool_student_idUnique schoolAs on Transcriptprovided student IDenrollmentsobjectSee Enrollment object
Enrollment

Standardized values of enrollment-level aggregates such as CGPA or credits earned are calculated using course-level information and MeasureOne's standardized treatment of grades, retaken courses, transfer terms, in-progress terms, missing credits, etc.

AttributeDescriptionStandardized Valueschool_enrollment_idUnique schoolAs on Transcriptprovidedenrollment IDenrollment_statusEnrollmentGRADUATED (can beENUMstatus as ofimputed), ENROLLEDtranscript date(can be imputed), RE-ENROLLED, LEAVE-OF-ABSENCE,TRANSFERRED-OUT-INTERNAL,TRANSFERRED-OUT-EXTERNAL, PROBATION,TERMINATED,WITHDRAWNgraduation_dateGraduationmm/dd/yyyyceremony datePopulated for graduatedstudents onlycollegeCollege nameAs on TranscriptcampusCampus nameAs on TranscriptdegreesobjectSeeDegreeobjectdegree_awarded_dateDegree awardedmm/dd/yyyydatePopulated for graduatedstudents onlymajorobjectSeeMajorobjectminorobjectSeeMinorobjecthonorsAcademic honorsAs on Transcriptor awards forcurrent degreeE.g.: Cum Laude,Summa CumLaude, MagnaCum Laudecredit_systemMethod ofFor Post-SecondaryrecordingPrograms: SEMESTERhours of studyCREDITS (1 course =E.g.: Semester3 credits)Credits, QuarterFor High Schools: UNITSCredits, Units,(1 course = 1 or 0.5 unit)Clock HourscreditsobjectSeeCreditsobjectinstitution_cgpaCGPA for gradedCalculated usingcourses taken atMeasureOne standardizedthe institutiongrade systemScale: 4-pointFormula: (Sum of QualityPoints)/(Sum of GPACredits) Definitionstransfer_cgpaCGPA fornulltransferred coursestotal_cgpaTotal CGPA forSee institution_cgpacurrent programNote: For total_CGPA,MeasureOne considers onlycourses taken at theinstitution on a graded basislast _attended_dateLast attended datemm/dd/yyyyat currentCan be imputed basedinstitutionfrom last term detailstermsobjectSeeTermobject

AttributeDescriptionStandardized Valueenrollment_statusEnrollmentGRADUATED (can be imputed), ENROLLEDENUMstatus as of(can be imputed), RE-ENROLLED, LEAVE-OF-transcript dateABSENCE, TRANSFERRED-OUT-INTERNAL, TRANSFERRED-OUT-EXTERNAL, PROBATION, TERMINATED,WITHDRAWNgraduation_dateGraduationmm/dd/yyyyceremony datePopulated for graduated students onlycollegeCollege nameAs on TranscriptcampusCampus nameAs on TranscriptdegreesobjectSeeDegreeobjectdegree_awarded_dateDegree awardedmm/dd/yyyydatePopulated for graduated students onlymajorobjectSeeMajorobjectminorobjectSeeMinorobject

AttributeDescriptionStandardized ValuehonorsAcademic honorsAs on Transcriptor awards forcurrent degreeE.g.: Cum Laude,Summa Cum Laude,Magna Cum Laudecredit_systemMethod of recordingFor Post-Secondary Programs: SEMESTERhours of studyCREDITS (1 course = 3 credits)E.g.: SemesterFor High Schools: UNITS (1 course = 1 orCredits, Quarter0.5 unit)Credits, Units, ClockHourscreditsobjectSeeCreditsobjectinstitution_cgpaCGPA for gradedCalculated using MeasureOne standardizedcoursesgrade systemScale: 4-point

AttributeDescriptionStandardized Valuetaken at theFormula: (Sum of Quality Points)/(Sum of GPAinstitutionCredits) Definitionstransfer_cgpaCGPA fornulltransferred coursestotal_cgpaTotal CGPA forSee institution_cgpacurrent programNote: For total_CGPA, MeasureOne considersonly courses taken at the institution on agraded basislast _attended_dateLast attended datemm/dd/yyyyat current institutionCan be imputed based from last term detailstermsobjectSeeTermobject
Degree

Each change in degree sought is listed as a separate object

AttributeDescriptionStandardized Valuedegree_levelAcademic level-Imputed based on Degree, Degree Type, ProgramENUMbroadName or Program PlancategoriesUNDERGRADUATE, GRADUATE, HIGH-SCHOOLdegree_typeAcademic level-Imputed based on Degree, Program Name or ProgramgranularPlanENUMcategoriesASSOCIATE, BACHELORS, MASTERS,MASTERS-RESEARCH, FIRST-PROFESSIONAL,DOCTORAL, CERTIFICATE/DIPLOMA,HIGH-SCHOOL-DIPLOMA, NON-DEGREEdegreeDegree type andAs on Transcriptarea of studyE.g.: Bachelorof Science, MAin Sociology, BAprogramDegree type,As on Transcriptbroad area ofstudy and subjectspecializationE.g.: Bachelorof Science inMicrobiology,

AttributeDescriptionStandardized ValueMA inEconomicsorderOrder in whichImputed from program and term informationdegrees were1 = current/most recent, 2 = previous, etc.sought (reversechronological)awardedWhether degree isImputed valueBOOLEANawarded as oftranscript date or no
Credits

For course-level data, priority is given to reported values when available. If credits earned are not recorded on the transcript, values are imputed based on a combination of credits attempted and grades. For credits attempted, earned and gpa_credits, range: 0-5.

For enrollment-level data, values are calculated using course-level values. For credits attempted, earned and gpa_credits, range: 0-130 (Undergraduate), 0-60 (Graduate), 0-50 (High School).

AttributeDescriptionStandardized ValueattemptedCredits attemptedUnits:For Post-Secondary institutions: SEMESTER

AttributeDescriptionStandardized ValueCREDITS orFor High Schools: UNITSearnedCredits earnedUnits:For Post-Secondary Institutions: SEMESTERCREDITS orFor High Schools: UNITSgpa_creditsCredits attempted onUnits:courses that are included inFor Post-Secondary Institutions: SEMESTERthe GPA calculationCREDITS orFor High Schools: UNITSquality_pointsNumerator for GPARange (Course): 0-20calculationRange (Enrollment, Undergraduate): 0-520Formula: CreditsRange (Enrollment, Graduate): 0-240Attempted × Grade PointsRange (Enrollment, High School): 0-200EarnedsourceSource of creditsCourse object: nullENUMEnrollmentobject: INSTITUTION, TRANSFER, TOTAL
Major

Each declared major or change in declared major is listed as a separate object

AttributeDescriptionStandardized ValuemajorSubject specialization for currentAs on TranscriptprogramconcentrationFurther specialization withinAs on TranscriptmajordepartmentDepartment offering the majorAs on TranscriptorderOrder of majors sought (reverseImputed from term dateschronological)1 = current/most recent,2 = previous, etc.
Minor

Each declared minor or change in declared minor is listed as a separate object

AttributeDescriptionStandardized ValueminorSecondary specialization forAs on Transcriptcurrent programorderOrder of minors soughtImputed from term dates(reverse chronological)1 = current/most recent,2 = previous, etc.
Term

Post-Secondary Institutions: Each enrolled term at the institution is a separate object.

High Schools: Each high school semester is one term object.

Transfer Terms: Courses taken at a previous institution and transferred in are listed as a separate term. There can be multiple transfer terms, one for each institution from which credits are transferred in.

Advanced Placement Terms: Advanced Placement or CLEP exams that count towards credit requirements are listed as a separate term.

AttributeDescriptionStandardized ValuenameName of term or semesterFALL <YYYY>,WINTER <YYYY>,SPRING <YYYY>,SUMMER <YYYY>Example: FA2018 is convertedto FALL 2018, SPR19 is convertedto SPRING 2019, etc.Note: This attribute is notstandardized for high schools ornon-US transcripts.start_date & end_dateStart & end dates of themm/dd/yyyyterm or semesterIf transcript has a Winter term:Fall: Oct. 1 to Dec. 31Winter: Jan. 2 to Mar. 31Spring: Apr. 1 to Jun. 30Summer: Jul. 1 to Sep. 30If transcript has no Winter term:Fall: Aug. 15 to Dec. 15Spring: Jan. 1 to May 15Summer: May 16 to Aug. 14

AttributeDescriptionStandardized ValueNote: This attribute is notstandardized for high schools ornon-US transcripts.transferWhether the term representstrue if credits listed for the termBOOLEANcredits transferred in from anwere transferred inearlier institutiontransferred_from_schoolFor transfer terms, institutionAs on Transcriptfrom which the credits weretransferredadvanced_placementWhether term representstrue if courses listed for the term areBOOLEANcredits earned via CollegeAP or CLEP examsBoard Advanced Placementor CLEP examsin_progressWhether term is in progressIf not provided, imputed based onBOOLEANas of transcript dategrades (″IP″ or not yet available)and/or term datescoursesobjectSeeCourseobject
Course

Each course listed on the transcript is one object

AttributeDescriptionStandardized ValuecodeCourse codeAs on TranscriptnameCourse nameAs on TranscriptcreditsobjectSee Credits objectgradingobjectSee Grading objectretakenWhether retaken intrue for each instance of a retaken courseSTRINGorder to improveNote: Credits on retaken courses are earned just once andgradegrades on all attempts are included in the standardized GPAcalculation. If earlier grade is not listed on the transcript, itis treated as a D.
Grading

For transcripts with non-standard grades, MeasureOne maps reported grades to standardized letter grades (see value below) using information from the following sources (listed in order of priority): 1. Transcript 2. School website 3. Country-level grade conversions (for non-US transcripts)

AttributeDescriptionStandardized Valuepass_failWhether evaluated on pass-Imputed based on gradesBOOLEANfail basis, i.e. non-gradedgrade_formatFormat of the grade, i.e.LETTERNumeric or Letter

AttributeDescriptionStandardized ValuevalueGrade earnedA, B, C, D - Passing grades on a graded courseENUMPlus/Minus grades (A+, B−) are standardized toa letter with no sign (A, B)F - Fail on a Graded CourseS - Satisfactory on a Pass-Fail Course (creditsare earned)U - Unsatisfactory on a Pass-Fail CourseP - Pass on a Pass-Fail Course (credits are notearned)NP - Not Passed on a Pass-Fail Course (creditsare not earned)WithdrawnWithdrawn-FailIncompleteIncomplete-FailRetakenIn-ProgressTransferOther GECI - Grade not included in GPA,Credits EarnedOther GECE - Grade not included in GPA,Credits Not EarnedAdvanced Placementgrade_pointsQuality points for grade, used4-point scale:in GPA calculationA = 4B = 3C = 2D = 1

AttributeDescriptionStandardized ValueF = 0W = 0For any given letter, all three possibilities i.e.,Plus, Minus and No-sign, have the same value