Introduction
Penn Foster's (PF) integration APIs allow partners and clients to interact with our systems and services through a set of REST endpoints (resources) which provide services like learner enrollment, learner progression, and organization information.
Documentation Version: 2.0.0 (Last updated on 11-09-2021)
Version History
Environments
The APIs are hosted in 3 different environments as listed below:
- Test: https://tst-api-gateway.pennfoster.edu
- Staging: https://stg-api-gateway.pennfoster.edu
- Production: https://api-gateway.pennfoster.edu
Each environment also provides a Swagger page by attaching swagger/ui/index
to the URL.
Email [email protected]
to request a Developer Key.
API Endpoints
- All API endpoints use role based security.
- All API access is over HTTPS.
- All boolean values should be passed as true/false.
- For POST and PUT requests, parameters can be sent using standard HTML form encoding.
- Optionally, POST and PUT requests may be sent in JSON format. The content-type of the request must be set to application/json in this case.
Authentication
Example OAuth Request:
POST https://environment-url/oauth/token
// Request Headers
Authorization: {auth_key}
// Request Body
grant_type=client_credentials&api_key={api_key}
Response (JSON)
{
"access_token": "<access_token>",
"token_type": "bearer",
"expires_in": "<expiration_secs>"
}
Penn Foster uses the OAuth 2.0 authentication/authorization mechanism. Before making any requests, PF will provide you with the following parameters for each environment.
Parameter | Description | Required |
---|---|---|
grant_type | client_credentials | Yes |
client_id | The client_id for your registered application and environment | Yes |
client_secret | The client_secret for your registered application and environment | Yes |
api_key | The api_key for your registered application and environment | Yes |
auth_key | For convenience the auth_key is a base64 encoded client_id:client_secret | No |
Penn Foster expects for the API token to be included in all API requests to the server in a header that looks like the following:
Authorization: Bearer secretToken
Organizations
Organizations are in a 3 tier hierarchy:
- Organization ID (also referred to as Parent ID)
- Location ID
- Client ID
Each Organization ID can have 1 or many Location IDs. Each Location ID can have 1 or many Client IDs.
Last updated on 11-09-2021
Get All Organizations
Example Get All Organizations Request:
GET https://environment-url/api/v3/b2b/organizations/{organization_id}
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"organization_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
},
"locations": [
{
"organization_id": 0,
"location_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
},
"clients": [
{
"organization_id": 0,
"location_id": 0,
"client_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
}
}
]
}
],
"errors": [
{
"error_code": "string",
"message": "string"
}
],
"links": [
{
"href": "string",
"rel": "string",
"method": "string"
}
]
}
Get All Organization Information.
HTTP Request
GET /organizations/{organization_id}
Get Organizations by Location
Example Get Organizations info by Location Request:
GET https://environment-url/api/v3/b2b/organizations/{organization_id}/locations/{location_id}
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"organization_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
},
"locations": [
{
"organization_id": 0,
"location_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
},
"clients": [
{
"organization_id": 0,
"location_id": 0,
"client_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
}
}
]
}
],
"errors": [
{
"error_code": "string",
"message": "string"
}
],
"links": [
{
"href": "string",
"rel": "string",
"method": "string"
}
]
}
Get Organizations information by a specific Location ID.
HTTP Request
GET /organizations/{organization_id}/location/{location_id}
Get Organizations by Client
Example Get Organizations info by Location and Client Request:
GET https://environment-url/api/v3/b2b/organizations/{organization_id}/locations/{location_id}/clients/{client_id}
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"organization_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
},
"locations": [
{
"organization_id": 0,
"location_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
},
"clients": [
{
"organization_id": 0,
"location_id": 0,
"client_id": 0,
"type": "string",
"name": "string",
"status": "string",
"address": {
"address_1": "string",
"address_2": "string",
"address_3": "string",
"address_4": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country": "string"
}
}
]
}
],
"errors": [
{
"error_code": "string",
"message": "string"
}
],
"links": [
{
"href": "string",
"rel": "string",
"method": "string"
}
]
}
Get Organizations information by a specific Location and Client ID.
HTTP Request
GET /organizations/{organization_id}/location/{location_id}/client/{client_id}
Leads
Create a Lead
POST https://environment-url/api/v3/b2b/leads
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
// Request Body
[
[
{
"required_info": {
"organization_id": 143738,
"location_id": 247319,
"client_id": 333813,
"program_id": "00787105",
"first_name": "Herman",
"last_name": "Munster",
"date_of_birth": "01/01/1963",
"phone_number": "5701234567",
"email_address": "[email protected]",
"contact_email_address": "[email protected]"
},
"optional_info": {
"gender": "M",
"alternate_id": "6a535c93-dd15-41d7-8c8d-a097a83857e9",
"address": {
"address_1": "1313 Mockingbird Lane",
"address_2": "",
"address_3": "",
"address_4": "",
"city": "Mockingbird Heights",
"state": "CA",
"postal_code": "90210",
"country": "USA"
}
}
}
]
]
Response (JSON)
[
{
"lead_id": "123456",
"lead_status": "X",
"errors": [],
"links": []
}
]
Create a new Lead in the Penn Foster system. A lead is used when there is a workflow required before a person can be enrolled at Penn Foster.
Last updated on 11-09-2021
HTTP Request
POST /leads
This post expects an array of Lead Objects. The maximum length of the array is 20 per request.
Lead Object Required Fields
Parameter | Size | Description |
---|---|---|
organization_id | 6 | Unique ID for an organization. |
location_id | 6 | Unique ID for location under an organization. |
client_id | 6 | Unique ID for client under an organization/location. |
program_id | 15 | Program to enroll person into. PF will provide this data. |
first_name | 40 | Learner first name. Will remove any non-alphabetic characters. |
last_name | 40 | Learner last name. Will remove any non-alphabetic characters. |
date_of_birth | 8 | Learner Date of birth. Format mmddyyyy , non-numeric values will be removed. |
phone_number | 20 | Learner phone number. Format 18001234567 , non-numeric values will be removed. |
email_address | 40 | Learner email address. Must have an @ and a . . |
contact_email_address | 40 | Patrtner Admin email address. Must have an @ and a . . |
Lead Object Optional Fields
Parameter | Size | Description |
---|---|---|
gender | 1 | M = Male, F = Female, U = Unknown. |
alternate_id | 75 | Unique id for learner on 3rd party system. |
address_1 | 40 | Street address line 1. |
address_2 | 40 | Street address line 2. |
address_3 | 40 | Street address line 3. |
address_4 | 40 | Street address line 4. |
city | 25 | City. |
state | 3 | Expecting 2 character state. |
postal_code | 12 | Expecting a 5 digit code. |
country | 3 | Expecting a 3 digit country code. |
Response Object
The response will be an object or an array of objects depending on the request.
Name | Description |
---|---|
lead_id | A system generated ID for lead. |
lead_status | X = Success. E = Error. |
errors | Error with particular Lead object. See Errors. |
links | Not currently populated. |
Learners
At Penn Foster a person participating in 1 or more courses is referred to as a Learner. Historically, we referred to Learners as Students, therefore, you will see a Learner is given a Student ID
once enrolled at Penn Foster.
Last updated on 11-09-2021
Create a Learner
Example Create a new Learner Request:
POST https://environment-url/api/v4/b2b/learners
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
// Request Body
[
{
"enrollment_type":"B2BENRICH",
"transaction_guid":"13e1fee8-c3c3-40dd-bfa8-9e672d87658f",
"sales_rep":"",
"po_number":"PO_P0_LDUVTZGZMB",
"order_number":"",
"start_date":"2021-10-28T00:00:00",
"expiration_date":"2021-10-28T00:00:00",
"notes":"This note is limited to 74 characters.",
"hold_codes":"",
"user_info":{
"user_name":"ZLPSBYDTUGXBNNVHUTIB",
"phone_number":"",
"email_address":"[email protected]",
},
"organization_info":{
"organization_id":141982,
"location_id":244648,
"client_id":329209,
"contact_email_address":"[email protected]",
"ship_to_location":false,
"primary_contact_name":"Herman Munster",
"primary_contact_email":"[email protected]",
"completion_document_shipping_preference":"EML",
},
"addressbook_info":{
"learner_id":0,
},
"learner_info":{
"first_name":"Joe",
"last_name":"Smith",
"gender": "M",
"date_of_birth":"",
"email_address":"[email protected]",
"phone_number":"123456789",
"phone_type":"H",
"secondary_phone_number":"123456789",
"secondary_phone_type":"C",
"alternate_id":"83957d62-7436-4260-8f6b-783f64721fdb",
"last_grade_completed":12,
"address":{
"address_1":"999 18th st",
"address_2":"",
"address_3":"",
"address_4":"",
"city":"Denver",
"state":"CO",
"postal_code":"80202",
"country":"USA"
}
},
"program_info":{
"program_id":"999999999",
"modules_all_open":false,
"modules":[
:{
"id":"IRCP1B",
"name":"",
},
{
"id":"IRCP1B",
"name":"",
},
]
},
"payment_info":{
"base_price":1000,
"discount":0,
"net_price": 1000,
"organization_percent":100,
"organization_amount":0,
"location_percent":100,
"location_amount":0,
"client_percent":100,
"client_amount":0,
"learner_percent":100,
"learner_amount":0,
"down_payment":100,
"monthly_payment":100,
"number_of_payments":8,
"final_payment":100,
"auto_pay":true,
"company_down_payment_amount":100,
"company_installment_amount":100,
"company_number_of_installments":10,
"company_last_payment_amount":0,
"shipping_info":{
"number_of_packages":"6",
"instructions":"",
"organization_shipping_charge_amount":2005910215,
"student_shipping_charge_amount":300,
},
"account_info":{
"payment_type":"6",
"ach_type":"",
"account_number":"30481639521990154293935910215",
"routing_number":"",
"cc_exp_month":"10",
"cc_exp_year":"21",
"cc_cvv":"1234",
"first_name":"Lilian"
"last_name":"Munster"
"save_for_future_use":false,
"billing_phone_number":""
"billing_address":{
"address_1":"1313 Mockingbird Lane",
"address_2":"",
"city":"Mockingbird Heights",
"state_province":"CA",
"postal_code":"90210",
"country":"USA"
}
}
},
"high_school_attestation_info":{
"is_certified":true,
"high_school_type":"HS",
"name_on_diploma":"Student Name"
"graduation_date":"09/2021"
"high_school_name":"Fake High School",
"address":{
"address_1":"999 18th st",
"address_2":"",
"address_4":"",
"city":"Denver",
"state":"CO",
"postal_code":"80202",
"country":"USA"
}
}
}
]
Response (JSON)
[
{
"enrollment_status": "X",
"order_number": "51775",
"learner_id": "56012279",
"reference_id": "ABC0001",
"errors": [],
"links": []
}
]
Create a new Learner in the Penn Foster system. Typically referred to as an Enrollment.
HTTP Request
POST /learners
This post expects an array of Learner objects. The maximum length of the array is 20 per request.
Learner Object Required Fields
Parameter | Type | Size | Description | Required |
---|---|---|---|---|
enrollment_type | String | 8 | User Id for the Enrollment | Yes |
transaction_guid | String | 36 | Transaction Id used for the Enrollment | Optional |
sales_rep | String | 8 | Sales representative id | Optional |
po_number | String | 75 | Purchase Order | Optional |
order_number | String | 75 | Order Number | Optional |
start_date | Date | Program Start Date, Format is YYYYMMDD | Optional | |
expiration_date | Date | Course Expiration Date, Format is YYYYMMDD | Optional | |
notes | String | 74 | Additional Notes | Optional |
hold_codes | String | 10 | Can send out five hold codes, each hold code 2 chars | Optional |
user_info.username | String | 40 | SalesForce Username | Optional |
user_info.phone_number | String | 15 | SalesForce User Phone | Optional |
user_info.email_address | String | 8 | SalesForce User Email Address | Optional |
organization_info.organization_id | String | 8 | Organization Number | Required |
organization_info.location_id | String | 8 | Location Number | Required |
organization_info.client_id | String | 8 | Client Number | Required |
organization_info.contact_email_address | String | 60 | Organization Email Address used for Enrollment | Required |
organization_info.ship_to_location | boolean | If SHIPTOLOC is a "Y", then materials will be sent to the Location. | Optional | |
organization_info.primary_contact_name | String | 40 | Address Book information, Contact Name | Optional |
organization_info .completion_document_shipping_preference |
String | 3 | How Ship Completion Documents ? EML -- Email Completion Docs SML -- Print & Mail Completion Docs | Required |
addressbook_info.learner_id | int | 8 | Blank for new enrollments/Previous student id for re-enrollment. | Required/Otional |
learner_info.first_name | String | 40 | Learner's First Name | Required |
learner_info.last_name | String | 40 | Learner's Last Name | Required |
learner_info.gender | String | 1 | Must be "M", "F" or "U" | Required |
learner_info.date_of_birth | String | 8 | Learner's Date of Birth | Optional |
learner_info.email_address | String | 60 | Learner's Primary Email Address | Required |
learner_info.phone_number | String | 60 | Learner's Primary Contact Number | Required |
learner_info.phone_type | String | 1 | Alternate Phone Type, Must be "H", "C" or "W". "H" – Home, "C" – Cell, "W" – Work, | No |
learner_info.secondary_phone_number | String | 20 | Alternate Contact Number | Optional |
learner_info.secondary_phone_type | String | 1 | Alternate Phone Type, Must be "H", "C" or "W". "H" – Home, "C" – Cell, "W" – Work, | Optional |
learner_info.address.address_1 | String | 60 | Address Line 1 | Required |
learner_info.address.address_2 | String | 60 | Address Line 2 | Optional |
learner_info.address.address_3 | String | 60 | Address Line 3 | Optional |
learner_info.address.address_4 | String | 60 | Address Line 4 | Optional |
learner_info.address.city | String | 25 | City | Required |
learner_info.address.state | String | 3 | State | Required |
learner_info.address.postal_code | String | 12 | Postal Code | Required |
learner_info.address.country | String | 3 | Country | Required |
program_info.program_id | String | 8 | Program Id for the Enrollment | Required |
program_info.modules | Array of Modules | Modules to be used with Program | Optional | |
payment_info | Object | Payment Information | Optional | |
high_school_attestation_info | Object | High School Attestation Information | Optional |
Response Object
The response will be an object or an array of objects depending on the request.
Name | Description |
---|---|
enrollment_status | X = Success. E = Error. |
order_number | A system generated order number for this particular learner object. |
student_id | Student ID (Learner ID) generated after successful enrollment. |
reference_id | Reference ID generated after successful enrollment. |
errors | Error with particular object. See Errors. |
links | Not currently populated. |
Get Learners by Organization
Example Get Learner Info Request:
GET https://environment-url/api/v4/b2b/learners?organization_id=141982&rows_per_page=10&page_number=1
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"page_number": 1,
"page_count": 75,
"record_count": 746,
"results":
{
"organization_id": 141982,
"location_id": 244648,
"client_id": 329209,
"learner_id": "52975707",
"cost_center": "2020",
"branch_id": "12345",
"alternate_id": "ThisCouldBeAnyTypeOfData",
"alternate_location_id": "ABCDEFGHIJ-123456789",
"alternate_client_id": "JIHGGFEDCBA-123456789",
"first_name": "First",
"last_name": "Last",
"email_address": "[email protected]",
"program_id": "TES01105",
"program_name": "SOFT SKILLS",
"active_status": "Active", //Active, Inactive, Graduated, Canceled
"date_enrolled": "07/18/2018",
"date_last_active": "07/18/2018",
"date_completed": "07/18/2018",
"expiration_date": "07/18/2019"
},
{
"organization_id": 141982,
"location_id": 244648,
"client_id": 329209,
"learner_id": "52975707",
"cost_center": "2020",
"branch_id": "12345",
"alternate_id": "ThisCouldBeAnyTypeOfData",
"alternate_location_id": "ABCDEFGHIJ-123456789",
"alternate_client_id": "JIHGGFEDCBA-123456789",
"first_name": "First",
"last_name": "Last",
"email_address": "[email protected]",
"program_id": "TES01105",
"program_name": "SOFT SKILLS",
"active_status": "Active", //Active, Inactive, Graduated, Canceled
"date_enrolled": "07/18/2018",
"date_last_active": "07/18/2018",
"date_completed": "07/18/2018",
"expiration_date": "07/18/2019"
},
...
}
Get all learners by Organization ID
.
Will return a dictionary of learner objects.
HTTP Request
GET /learners?organization_id={organization_id}
URL Parameters
Parameter | Size | Required | Description |
---|---|---|---|
organization_id | 6 | Yes | Unique ID for an organization. |
location_id | 6 | No | Unique ID for location under an organization. |
alternate_location_id | 6 | No | 3rd party unique ID for location under an organization. |
client_id | 6 | No | Unique ID for client under an organization/location. |
alternate_client_id | 6 | No | 3rd party unique ID for client under an organization/location. |
page_number | 5 | No | If using pagination specify the page number you want returned. |
rows_per_page | 5 | No | If using pagination specify the number of records per page. |
Get Learners by Alternate ID
Example Get Learner by Alternate ID Request:
GET https://environment-url/api/v4/b2b/learners/6d5f84ed-2fad-4e09-b8bb-e50fac2d00f7
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"page_number": 1,
"page_count": 75,
"record_count": 746,
"results":
{
"organization_id": 141982,
"location_id": 244648,
"client_id": 329209,
"learner_id": "52975707",
"cost_center": "2020",
"branch_id": "12345",
"alternate_id": "ThisCouldBeAnyTypeOfData",
"alternate_location_id": "ABCDEFGHIJ-123456789",
"alternate_client_id": "JIHGGFEDCBA-123456789",
"first_name": "First",
"last_name": "Last",
"email_address": "[email protected]",
"program_id": "TES01105",
"program_name": "SOFT SKILLS",
"active_status": "Active", //Active, Inactive, Graduated, Canceled
"date_enrolled": "07/18/2018",
"date_last_active": "07/18/2018",
"date_completed": "07/18/2018",
"expiration_date": "07/18/2019"
},
{
"organization_id": 141982,
"location_id": 244648,
"client_id": 329209,
"learner_id": "52975707",
"cost_center": "2020",
"branch_id": "12345",
"alternate_id": "ThisCouldBeAnyTypeOfData",
"alternate_location_id": "ABCDEFGHIJ-123456789",
"alternate_client_id": "JIHGGFEDCBA-123456789",
"first_name": "First",
"last_name": "Last",
"email_address": "[email protected]",
"program_id": "TES01105",
"program_name": "SOFT SKILLS",
"active_status": "Active", //Active, Inactive, Graduated, Canceled
"date_enrolled": "07/18/2018",
"date_last_active": "07/18/2018",
"date_completed": "07/18/2018",
"expiration_date": "07/18/2019"
},
...
}
Get learners by Alternate ID
.
Will return a dictionary of learner objects.
HTTP Request
GET /learners?alternate_id={alternate_id}
URL Parameters
Parameter | Size | Required | Description |
---|---|---|---|
alternate_id | 75 | Yes | 3rd party unique ID for a learner. |
organization_id | 6 | No | Unique ID for an organization. |
location_id | 6 | No | Unique ID for location under an organization. |
alternate_location_id | 6 | No | 3rd party unique ID for location under an organization. |
client_id | 6 | No | Unique ID for client under an organization/location. |
alternate_client_id | 6 | No | 3rd party unique ID for client under an organization/location. |
page_number | 5 | No | If using pagination specify the page number you want returned. |
rows_per_page | 5 | No | If using pagination specify the number of records per page. |
Get Learners by Student ID
Example Get Learner by Student ID Request:
GET https://environment-url/api/v4/b2b/learners/52975707
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"organization_id": 141982,
"location_id": 244648,
"client_id": 329209,
"learner_id": "52975707",
"cost_center": "2020",
"branch_id": "12345",
"alternate_id": "ThisCouldBeAnyTypeOfData",
"alternate_location_id": "ABCDEFGHIJ-123456789",
"alternate_client_id": "JIHGGFEDCBA-123456789",
"first_name": "First",
"last_name": "Last",
"email_address": "[email protected]",
"program_id": "TES01105",
"program_name": "SOFT SKILLS",
"active_status": "Active", //Active, Inactive, Graduated, Canceled
"date_enrolled": "07/18/2018",
"date_last_active": "07/18/2018",
"date_completed": "07/18/2018",
"expiration_date": "07/18/2019"
}
Get learners by Student ID
.
Will return one learner object.
HTTP Request
GET /learners?student_id={student_id}
Cancel Learners
Example Cancel Learner Request:
POST https://environment-url/api/v4/b2b/learners/cancel
// Request Headers
Authorization: Bearer <token>
Content-type: application/json
Response (JSON)
{
"resource_id": 100,
"organization_id": 123456,
"location_id": 247319,
"client_id": 333813,
"student_id": 5123456,
"alternate_id": "[email protected]",
"program_id": "00787105"
}
Create a request to cancel a learner. Please note this is only a request to cancel a learner. The Penn Foster team will need to execute the request in order for the learner to be officially cancelled in the system.
A learner can be cancelled by Student ID
or Alternate ID
.
HTTP Request
POST /learners/{student_id}/cancel
URL Parameters
An Alternate ID
or Student ID
is required.
If an Alternate ID
is provided, then a Program ID
is required.
Parameter | Size | Description |
---|---|---|
student_id | 8 | Unique ID for for Learner at Penn Foster. |
alternate_id | 75 | Unique ID for 3rd party. |
program_id | 8 | Specific Program ID to cancel for Learner/Alternate ID. |
Errors
HTTP Errors
All errors will send back an additional JSON message.
Error Code | Meaning |
---|---|
400 | Bad Request |
401 | Unauthorized |
404 | Not Found |
500 | Internal Server Error |
503 | Service Unavailable |
Penn Foster System Codes
Error Code | Meaning |
---|---|
E601400001 | Country is invalid |
E601400002 | Country is required |
E602500001 | Employee Id is required |
E602500002 | Student already has an active enrollment |
E602600001 | Invalid student email address. |
E604000001 | Zip code must be entered |
E604100001 | Email address must be entered |
E604100002 | Invalid email address |
E604200001 | Invalid phone type |
E604300001 | Phone number must be entered when there is a phone type |
E607100001 | Invalid parent id |
E607200001 | Invalid location id |
E607300001 | Invalid client id |
E607400001 | Student name must be entered |
E607700001 | Address line 1 must be entered |
E607700002 | Action code is invalid |
E607800001 | City must be entered |
E607900001 | Invalid state code |
E608600001 | Alternate id alrady exists |
E608600002 | Alternate id is required |
E614400001 | Invalid product code |
E614400002 | Invalid module or lesson |
E614400003 | Module or lesson is obsolete |
E614400005 | Product code already exists for student |
E614400006 | Product code is not active or current - field IMSRP3 on F4101LB |
E999999001 | Order is currently being processed by: |