Skip to main content
Liaison

Setting Up the CAS API to Deliver Data for Updated Applications

During the application cycle, there are many instances where applications may be updated. The instructions below will help you set up the CAS API to deliver application data in response to these updates. Since there is no dedicated standard Slate Source Format for these events, you'll need to choose how to process application update events. Below you'll find considerations to help you decide, along with a standard CAS API subscription to use as a base for meeting your needs.

Once implemented, these instructions will accomplish the following:
•    Delivery of CAS applications to Slate when applicants make updates to their applications.

What Counts as an Update to an Application?

Almost every action an applicant takes on the application is considered an update. Each CAS has its own configuration for which update events will trigger delivery by the CAS API, so you may observe differences in behaviors across different CASs. Here's a listing of representative actions that trigger updates:

  • An applicant enters or changes responses in a section of the application and clicks Save and Continue
  • An official test score is matched to an application
  • An application's status changes (e.g. from "Received" to "Complete")

When to Capture Application Updates and How to Load Them

The CAS API's DataHold feature makes it possible to set up your CAS API subscription to only deliver files for applications in certain statuses. The application statuses specified in a CAS API subscription will be excluded from delivery. For example, a CAS API subscription with "dataHold":"InProgress" will not deliver files for applications in the In Progress application status.

It is a best practice to only deliver data that you intend to use in some concrete business process. To properly configure your CAS API subscription for updates, it is important to start by thinking through the business process you intend to support. Ask yourself:

  • What am I trying to do with application data?
  • What kinds of updates do I need to capture to do that?

For example, if you want applicants to maintain their contact information in the CAS instead of in your system, you might want to receive all updates from CAS after application submission so you always have the latest contact information. Our Application Locking Behavior guide provides more information on what an applicant may change after submitting their application.

Once you've identified what you intend to do with application update data, you'll need to determine how to load that data to Slate.

  • The All CAS by Liaison - Applications standard Source Format will create and update Slate application records. If your business process involves updating existing applications, then use this Source Format.
  • The All CAS by Liaison - In Progress Applications standard Source Format will create and update person-scoped Slate "Inquiry" records. If your business process involves keeping track of updates on your Slate Inquiries to tailor your communications, then use this Source Format.

 Creating a CAS API Subscription

You may use any tool for interacting with HTTPS endpoints to create your subscription. Here are some popular options:

  • cURL: A command-line tool for interacting with HTTPS endpoints available out of the box in most operating systems.
  • Coding languages: Versatile and powerful languages with a variety of tools for interacting with HTTPS endpoints, such as Python, Java, Perl, C#, and JavaScript.
  • Postman: A graphic user interface for interacting with HTTPS endpoints.

To create a CAS API subscription:

  1. Select the target environment:
  2. Authenticate:
    • Hit the POST /v1/auth/token endpoint.
      • Send in username and password in the body of the request.
      • Send the API key as a header with key “x-api-key”.
    • The token retrieved must be passed in all subsequent requests as a header with key “Authorization.” Pass this token in addition to your API key. Authorization tokens are valid for 1 hour after generation.
  3. Retrieve identifiers. These will be provided at account creation and are used in the URL string parameters.
    • Application Form: A CAS/cycle combination of interest (e.g. “CSDCAS 20-21”, “BusinessCAS 19-20”.)
    • Organization: An identifier unique to the institution within a CAS.
  4. Create the subscription. Use the POST /v1/applicationForms/:applicationFormId/organizations/:organizationId/subscriptions endpoint. This subscription is created at the organization scope, which means that any time an event occurs on any application to any program at your organization, a payload will be delivered to the Slate SFTP by the CAS API. Subscribing at the organization scope means that you can freely add, open, and close CAS programs knowing that the application data and documents will be delivered to Slate.
    • URL string parameters: applicationFormId, organizationId
    • Add the relevant applicationFormId and organizationId values, referring to the values delivered to you upon CAS API account creation.
    • Subscribe to each CAS separately. If you are interested in integrating applications from 3 different CASs to Slate, then you will need to create 3 CAS API subscriptions.
    • Submit a CAS API subscription creation request. This subscription delivers application data in response to updates made by applicants. Specifying a DataHold setting will allow you to control when update events will trigger delivery of application data. The most common application update use cases are listed in the table below, along with the relevant DataHold setting to use in the CAS API subscription:

Application Statuses Excluded

DataHold Setting

When to Use This DataHold Setting

InProgress

 

 

"dataHold": "InProgress"

 

 

When you want to receive application data in response to every update AFTER an applicant submits

 

 

Undelivered, OnHold, ConductReview, Manual, Redirected, Received, Complete, Verified

 

 

"dataHold": "Undelivered,OnHold,ConductReview,Manual,Redirected,Received,Complete,Verified"

 

 

When you want to receive application data in response to every update BEFORE an applicant submits

 

 

InProgress, Received

 

 

"dataHold": "InProgress,Received"

 

 

When you want to receive application data in response to every update AFTER an applicant's application becomes "Complete"

 

 

Undelivered, OnHold, ConductReview, Manual, Redirected, Complete, Verified

 

 

"dataHold": "Undelivered,OnHold,ConductReview,Manual,Redirected,Complete,Verified"

 

 

When you want to receive application data in response to every update BEFORE an applicant's application becomes "Complete"

 

 

InProgress, Received, Complete

 

 

"dataHold": "InProgress,Received,Complete"

 

 

When you want to receive application data in response to every update AFTER an applicant's application becomes "Verified"

 

 

Undelivered, OnHold, ConductReview, Manual, Redirected, Verified

 

 

"dataHold": "Undelivered,OnHold,ConductReview,Manual,Redirected,Verified"

 

 

When you want to receive application data in response to every update BEFORE an applicant's application becomes "Verified"

 

 

InProgress, Undelivered, OnHold, ConductReview, Manual, Redirected, Complete, Verified

 

 

"dataHold": "InProgress,Undelivered,OnHold,ConductReview,Manual,Redirected,Complete,Verified"

 

 

When you want to receive application data in response to every update ONLY when an application is in "Received" (AFTER submission and BEFORE completion)

 

 

InProgress, Undelivered, OnHold, ConductReview, Manual, Redirected, Verified

 

 

"dataHold": "InProgress,Undelivered,OnHold,ConductReview,Manual,Redirected,Verified"

 

 

When you want to receive application data in response to every update ONLY when an application is in "Received" or "Complete" (AFTER submission and BEFORE Verification)

 

 

 Your request should be as follows. Remember to replace our [SAMPLE TEXT APPEARING IN BRACKETS] with the appropriate values.

POST /v1/applicationForms/[THE TARGET APPLICATIONFORMID >> CAS+CYCLE]/organizations/[THE RELEVANT ORGANIZATIONID FOR YOUR INSTITUTION WITHIN THAT CAS+CYCLE]/subscriptions
Authorization: [A VALID AUTHORIZATION TOKEN RETRIEVED FROM POST /v1/auth/token]
Content-Type: application/json
x-api-key: [YOUR CAS API KEY]
Host: [THE APPROPRIATE CAS API ROOT URL: PRODUCTION – api.liaisonedu.com, PRELAUNCH – api.prelaunch.liaisonedu.com]
{
"notificationEmailAddress": "[ENTER A MONITORED EMAIL ADDRESS TO RECEIVE NOTIFICATIONS ABOUT YOUR SUBSCRIPTIONS]",
"subscriptionDetails": [
{
"destinationType": "SFTP",
"event": "application.updated",
"dataHold": "[ENTER APPLICATION STATUSES TO EXCLUDE FROM DELIVERY - SEE NOTES IN THIS ARTICLE]",
"responseLevel": "program",
"responseType": "fullResponse",
"responseOptions": "expand=all,contentType=text/csv,columnSeparator=COMMA,csvHeaderTruncationSize=4,csvShortName=question",
"apiVersion": "v2",
"sftpDestination": {
"sftpHost": "ft.technolutions.net",
"sftpPort": 22,
"sftpUser": "[ENTER SFTP USERNAME HERE]",
"sftpPassword": "[ENTER SFTP PASSWORD HERE]",
"sftpBaseDirectory": "/incoming/liaison/[ENTER CAS NAME HERE]/data/",
"sftpPathTemplate": "casapi-app-updated_<instanceId>_<organizationId>_<programId>_<applicationId>_<casApplicantId>.csv"
}
}
]
}

For more information, also see the Slate Knowledge Base.

  • Was this article helpful?