CredentialConnect API Documentation

Version 1.3
Last update: MAR 18 2025

Overview: CredentialConnect is an API that credential wallets or issuing platforms can use to enable individuals to connect their data to SmartResume, and to connect SmartResumes back to an individual's credential wallet.

CredentialConnect currently supports three ways for credential data to by synced between a credential issuer or credential wallet and SmartResume

  1. A job seeker initiated push of data from your platform to SmartResume in order to set up a SmartResume account, or add credentials to an existing account. (see example)
  2. An event initiated push of data from your platform to SmartResume in order to set up a SmartResume account, or to add credentials to an existing account.
  3. A job seeker initiated pull of data from your platform into their SmartResume account, initiated by the user on SmartResume's platform. (see example)
  4. CredentialConnect will also support a fourth use case for job seekers on SmartResume to push their resume back to your platform.

  5. A job seeker will be able to select "share my SmartResume", and then "share to wallet", selecting from a specific list of wallets. When they select their wallet we will initiate a push of their SmartResume to your platform.

CredentialConnect was developed to enable flexible and seamless user experiences and to form the foundation for bringing job search utility into credential wallets and issuing platforms.

Use case 1: A job seeker initiated push of data from your platform to SmartResume in order to set up a SmartResume account, or add credentials to an existing account.

In this use case SmartResume is presented as a value added service on your website, app or platform. We will partner with you to design a seamless experience for a user to discover SmartResume, understand our offering, and opt-in to sharing data to SmartResume in order to create a resume around their verifiable data. Here is a visual example of how this might look within a credential wallet:

When a user selects a prompt such as "Create a Resume" or "Build a SmartResume" we suggest taking them to a new screen that communicates what a SmartResume is. Here is sample language:

SmartResume is a tool to create a unique skills-first resume where your skills, accomplishments and qualifications can be verified in real time to those whom you grant access. Leverage your ____ credentials today to stand out to employers.

Click here to curate the credentials to share to SmartResume

You can then direct your user to curate a list of credentials to share to SmartResume, and have them click a button to complete the process. This button might say "Activate my free SmartResume" to make it clear to your job seekers that this service is free to them.

A click of this button will activate a secure API call from your server to SmartResume to upload the credentials to be imported along with any personal data for the user to help them seamlessly create an account (this data is optional and up to the discretion of our partners to share). This data is stored in an import holding area of the SmartResume system for use in the following steps:

  • A unique identifier is required for each individual credential submitted to ensure that any follow-up update uploads can be effectively managed and applied. Please note that if the unique identifier for a specific credential changes when an update occurs to that credential instance, then unique identifiers for both the recipient and credential type will also be required. Please contact SmartResume if this scenario matches your configuration so that we can work through the details.
  • Upon success of the previous API call, a temporary identifier token is returned from SmartResume which is used to indicate which set of uploaded credentials (from the previous step) are to be attached to the target SmartResume. Our partner redirects the user's browser to the SmartResume login/signup page along with this temporary identifier token returned from the API call above. This may look like: https://my.smartresume.com/createmyresume/{{identifier_token}}.
  • The user will either sign up for a new SmartResume account or log in to an existing account. If any personal user data was passed in through the earlier API call, it will be used to pre-populate the relevant fields on the sign up form.
  • Upon completion of the signup and onboarding process, or login completion, the user will reach the resume builder which will display the credentials supplied earlier loaded into the appropriate sections of their SmartResume. The user will be able to hide or delete any of these credentials from their SmartResume.

The API will provide fields to pass the following job seeker data. This information may be included in a Verifiable Presentation, or Comprehensive Learner Record, or populated in these API fields: (Optional: Used to pre-populate the SmartResume signup form)

  1. First name
  2. Last name
  3. Email
  4. Address
  5. Phone number

Credential data:

  1. We will accept OB3* or CLR2 data packages (JSON-LD)

Our API technical documentation for use case 1 is available in the API Implementation Guide in the next section.

Use case #2: An event initiated push of data from your platform to SmartResume in order to set up a SmartResume account, or to add credentials to an existing account.

This use case closely resembles use case #1. But instead of initiating this use case based on an individual credential holder taking action, the credential issuer will automate the sharing of data to SmartResume any time a new/updated credential is issued. The credential issuer will need to account for this in their terms of service and privacy policy so that it is clear to users that their data will be shared to SmartResume, but that this data will not be shared with any other parties unless the credential holder activates their SmartResume and either shares it directly with a third party or opts into a talent marketplace.

Upon the successful sharing of data SmartResume will return a temporary identifier token. Our partner can either direct the user to this login/signup page along with this temporary identifier token, or will direct the user to a generic SmartResume activation page.

Option 1 - A custom URL may look like: https://my.smartresume.com/createmyresume/{{identifier_token}}

Using the custom URL allows a credential holder to activate their resume without needing to "find it" by entering identifying information. In addition, existing SmartResume users may log into their existing SmartResume after which the associated credentials are attached to their SmartResume.

Option 2 - A generic SmartResume activation URL may look like (new users only): https:findmysmartresume.com/PartnerName

Please note that if you want to offer your credential holders the second option we will additionally require the user's first name, last name, and email address or student ID to be included in the API call so that the user can search for and find their credentials.

It should also be noted for Option 2 that in addition to a unique identifier being required for each individual credential instance, there will also need to be a unique identifier supplied for the credential recipient. This allows the new credential submissions to be correctly matched to any existing resume. SmartResume will present the newly-submitted credentials to the user and enable them to select the ones to be added to their resume.

Other than these differences, use case #2 involves the same API call as use case #1. Refer to the API Implementation Guide.

Use case 3: A job seeker initiated pull of data from your platform into their SmartResume account, initiated by the user on SmartResume's platform.

This use case begins on the SmartResume platform where we enable users to select from a list of options from where they would like to import data:

Once the user clicks on a selection we will send the user to your platform to an authenticated endpoint you will provide to us along with a SmartResume-generated recipient token. Once the user has authenticated their connection on your site (and, optionally, selected which credentials to share) you will transmit the selected credential data to SmartResume via the CredentialConnect API including the recipient token. On successful call completion, you will transfer control back to the user's resume builder upon which they are presented with the transmitted credentials for selection and inclusion on their resume. You will not need to populate any personal information in this API call, only the relevant credential data in OB3* or CLR2 form.

Format your API call to the endpoint we provide you to match the requirements outlined in the API Implementation Guide for use case 1.

SmartResume will then present the user with those credentials and enable them to select which ones to add to their resume.

To set this up please provide us with:

  • An authentication endpoint
  • A logo for the user to select to call your authentication endpoint

Use case #4: A job seeker will be able to select "share my SmartResume", and then "share to wallet", selecting from a specific list of wallets. When they select their wallet we will initiate a push of their SmartResume to your platform.

Technical documentation is not yet available for this capability.

SmartResume is committed to providing our users with a tool they can use in their job search anywhere they look for work. This is why every SmartResume is available to download as a PDF. And every PDF includes a QR code that an employer can scan to create a free account on SmartResume so they can access the "Smart" version of the resume to verify credentials. This is also why SmartResume has dedicated significant resources to the development of the Learning and Employment Record - Resume Standard from HR Open. Our hope is that this standard gains adoption so we can enable users to download a SmartResume in that format to use anywhere they apply to work. When supported, this format is more powerful than the PDF format because it can pass structured data and preserve Verifiable Credentials, Open Badges, and Comprehensive Learner Records in their native form.

We will develop a new capability to enable a job seeker to export their SmartResume data to a credential wallet. The user will be able to select "Share My SmartResume" from within the SmartResume builder. They will then be able to select either "Download as PDF" or "Share To My Wallet". When they select a wallet provider who uses Credential Connect we will push the user to that wallet along with a Verifiable Credential that contains that user's SmartResume as a PDF. This will allow the user to store their SmartResume in their wallet for future use and will time stamp the last time that SmartResume was generated.

Technical documentation is not yet available for this capability.

SkillSync is an extension of SmartResume's CredentialConnect API that enables SmartResumes to send skill data to our platform in addition to, or instead of, digital credentials. SmartResume enables partners to equip their job seekers with data about the skills they have, including:

  • The name of the skill
  • A level of skill
  • A category of skill
  • A description of the skill
  • Verification of that skill
  • Link to skill evidence

Here is a description of each field.

Skill name: The exact verbiage of the name of a skill as you want it to appear in the skills section of a user's resume. Skill name character count should not exceed 40 characters.

Level of skill: SmartResume supports four levels of skills: beginner, intermediate, advanced, and expert. You can include one of these levels of skills for any skill you sync to our platform. Users will be able to edit and change this level of skill if you do not treat the skill as "verified".

Category of skill: SmartResume supports four skill categories: specialized, technical, durable, and other. You can tag one skill with one category which will display on the resume. This information is not editable by job seekers.

Skill description: A description of the skill as is defined, aka a skill statement. This information will be revealed to anyone viewing a SmartResume when they click on the "detail" icon next to a skill name.

Skill verification: This enables you to treat the skill as verified. When you treat a skill as verified, a viewer of the resume can click on the "verified" pill next to the skill name to see who verified it and when. A job seeker cannot edit any field related to a skill that is verified.

Skill evidence link: For verified skills only, you can include a link to external evidence. We will then surface that link to that evidence when someone clicks to verify that skill.

Here are screenshots of the dynamic elements of skills that a viewer of the resume can interact with:

Note: JSON formatted to more closely align with OB3

SmartResume currently supports two API methods for uploading data from third parties. Using JSON schemas derived from 1EdTech examples and typical authorization flows, we provide the means for a SmartResume to be created with data from a partner with a variety of options, verifiable credentials, ready to be edited with the SmartResume Builder Interactive UI.

A partner must have access credentials provided by your SmartResume Account Manager before proceeding.

For the purpose of this example, we will use the following credentials.

Client ID: {ClientID}
Access Key: {AccessKey}

Reference the url https://mystage.smartresume.com/api/v1/token to obtain an authorization token.

The following example uses the Postman application to illustrate what parameters are expected.

Open the Body portion of Postman and select Form Data.

Add grant_type value client_credentials and scope value delete readonly replace as illustrated below. And make sure the type of call is POST as shown below.

Under the Authorization Tab select Basic Auth

Note: mystage is our development server used for testing implementations. A different URL will be provided for our Production environment upon release of the API.

Press the Send button. In the Body response, you will see you have a token. If you encounter an error instead, please double check the credentials, take screen shots, and contact andy@idatafy.com.

You will copy that token for pasting into the next API call. Note that it has a timeout value of one hour before the token expires.

Create a new tab in Postman.

Use URL https://mystage.smartresume.com/api/v1/credentials to upload credentials in the new tab.

under Authorization select Type Bearer Token as illustrated below and set the type to POST.

Use the token from the Token method you previously generated.

Under the Body section set the Type to RAW and paste in your JSON data record with the format provided below.

NOTE: The values below marked in BOLD are required.
{
    "@context": [
        "https://www.w3.org/ns/credentials/v2",
        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
        "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "recipienttoken": "",
    "recipient": {
        "id": "474989023199323",
        "givenName": "",
        "familyName": "",
        "additionalName": "",
        "email": "jsmith@institutionx.edu",
        "phone": "",
        "studentId": "",
        "signupOrganization": ""
    },
    "credentials": [
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "id": "351843720888468",
            "type":[
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "name": "Calculus w/Analytic Geometry I",
            "awardedDate": "Spring 2023",
            "activityEndDate": "",
            "issuedOn": "",
            "issuanceDate": "",
            "expirationDate": "",
            "credentialSubject": {
                "id": "1235143208848",
                "type": [
                    "AchievementSubject"
                ],
                "achievement": {
                    "id": "351843720888468",
                    "achievementType": "Course",
                    "name": "Calculus w/Analytic Geometry I",
                    "description": "Real numbers, limits and continuity, and differential and integral calculus of functions of 1 variable.",
                    "image": {
                        "id": ""
                    }
                }
            },
            "issuer": {
                "id": "123456789",
                "name": "Institution X",
                "email": "admissions@institutionx.edu",
                "url": "https://institutionx.edu",
                "image": {
                    "id": ""
                },
                "description": "Institution X, founded in 1925, is known for its beautiful campus and arts programs."
            }
        },
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "id": "369435906932892",
            "type":[
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "name": "Introduction to Psychology",
            "awardedDate": "Spring 2023",
            "activityEndDate": "",
            "issuedOn": "",
            "issuanceDate": "",
            "expirationDate": "",
            "credentialSubject": {
                "id": "1235143208848",
                "type": [
                    "AchievementSubject"
                ],
                "achievement": {
                    "id": "351843720888469",
                    "achievementType": "Course",
                    "name": "Introduction to Psychology",
                    "description": "Major areas of theory and research in psychology. Requires participation in department-sponsored research or an educationally equivalent alternative activity.",
                    "image": {
                        "id": ""
                    }
                }
            },
            "issuer": {
                "id": "123456789",
                "name": "Institution X",
                "email": "admissions@institutionx.edu",
                "url": "https://institutionx.edu",
                "image": {
                    "id": ""
                },
                "description": "Institution X, founded in 1925, is known for its beautiful campus and arts programs."
            }
        },
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "id": "369435906932893",
            "type":[
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "name": "First-Year Composition",
            "awardedDate": "Spring 2023",
            "activityEndDate": "",
            "issuedOn": "",
            "issuanceDate": "",
            "expirationDate": "",
            "credentialSubject": {
                "id": "1235143208848",
                "type": [
                    "AchievementSubject"
                ],
                "achievement": {
                    "id": "351843720888470",
                    "achievementType": "Course",
                    "name": "First-Year Composition",
                    "description": "Discovers, organizes and develops ideas in relation to the writer's purpose, subject and audience. Emphasizes modes of written discourse and effective use of rhetorical principles.",
                    "image": {
                        "id": ""
                    }
                }
            },
            "issuer": {
                "id": "123456789",
                "name": "Institution X",
                "email": "admissions@institutionx.edu",
                "url": "https://institutionx.edu",
                "image": {
                    "id": ""
                },
                "description": "Institution X, founded in 1925, is known for its beautiful campus and arts programs."
            }
        }
    ]
}

Adding SkillSync Data

Adding SkillSync Data is straightforward, use the JSON snippet below. Note that if Proof data is provided the credential is considered Verified, otherwise it is assumed self-asserted or similar unverified information.

Set credentialSubject.achievement.achievementType to "SkillsAndAbilities" to indicate that the base credential is only a "carrier" for the attached skills appearing under the credentialSubject.achievement.alignment section and should NOT be included in the import.

{
    "@context": [
        "https://www.w3.org/ns/credentials/v2",
        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
        "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "recipient": {
        "id": "12345",
        "givenName": "John",
        "familyName": "Sample",
        "additionalName": "Q",
        "email": "john.q.sample@somedomain.com",
        "phone": "",
        "studentId": "",
        "signupOrganization": ""
    },
    "credentials": [
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "awardedDate": "2025-02-14T17:07:16Z",
            "credentialSubject": {
                "achievement": {
                    "achievementType": "SkillsAndAbilities",
                    "criteria": {
                        "narrative": ""
                    },
                    "id": "urn:uuid:e112a3ac-42cf-4679-ba89-9e8d70b6ecc7",
                    "name": "Carrier Credential ",
                    "type": "Achievement",
                    "alignment": [
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Teaching",
                            "targetType": "Competency",
                            "targetDescription": "Teaching is a common skill that involves the transfer of knowledge, skills, and values from one person to another. It involves designing and delivering effective learning experiences that engage students and promote understanding. Effective teaching requires the ability to communicate clearly, listen actively, adapt to different learning styles, and provide constructive feedback. It is an important skill that is required across a wide range of professions and industries."
                        },
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Leadership",
                            "targetType": "Competency",
                            "targetDescription": "Leadership is a skill that is common among successful individuals in various fields. It involves the ability to motivate and guide a team towards achieving common goals. Good leadership qualities include effective communication, empathy, decision-making skills, adaptability, and vision. Leadership can be developed and honed through training, practice, and learning from others."
                        },
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Quality Management",
                            "targetType": "Competency",
                            "targetDescription": "Quality management is a specialized skill that involves ensuring that products and services meet or exceed customer expectations. This includes setting and adhering to standards, designing and implementing quality control measures, and continuously monitoring and improving processes. Quality management is crucial for businesses seeking to maintain customer satisfaction, increase efficiency, and stay competitive in their respective industries. It requires a combination of technical knowledge, analytical skills, and effective communication to succeed."
                        },
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Sales",
                            "targetType": "Competency",
                            "targetDescription": "Sales is the art of convincing people to buy products or services. 
                                It is a common skill that involves understanding the customer's needs, identifying pain points, and presenting a solution that addresses those issues. Salespeople must know how to communicate effectively, build trust with clients, negotiate deals, and close the sale. Success in sales requires persistence, creativity, and a willingness to learn and adapt to new situations."
                        }
                    ]
                },
                "type": [
                    "AchievementSubject"
                ]
            },
            "id": "urn:uuid:70b6ecc7-42cf-4679-ba89-9e8dd721a3ac",
            "issuer": {
                "id": "did:key:z6MkvabuhEZkoAy3UnUsh5fiwbDr8B6kunnVXL8TL5QYd1W5",
                "name": "Institution X"
            },
            "name": "Skills",
            "type": [
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "proof": [
                {
                    "type": "Ed25519Signature2020",
                    "created": "2025-02-14T17:07:18Z",
                    "verificationMethod": "did:key:y7mKvabuhEZkoAy3UnUsh5fiwbDr8B6kunnVXL8TL5QYd1W5#z6MkvabuhEZkoAy3UnUsh5fiwbDr8B6kunnVXL8TL5QYd1W5",
                    "proofPurpose": "assertionMethod",
                    "proofValue": "L3f7huNQcgBLFD9RZbmxca8kWypCUQffwtvZyx6rKXRFuC8VzeCajAN2AhD5yvYJ8VBnDecpFmnpLvtnscE2hFooJ"
                }
            ]
        }
    ]
}

Press SEND and you should see a record has been created and a 200 OK status.

Note that the response includes the redirect URL that allows the uploaded credentials to be accessed and claimed directly. Copy and paste the link in a browser and give it a try.

Case 3: Custom URL Integration for Credential Import

This section outlines the process for associating your logo with a custom URL on the SmartResume Import Credentials page and handling the subsequent API flow.

Process Overview

  1. URL Submission: Provide a URL to be linked with your logo on the SmartResume Import Credentials page. Note that the SmartResume user is already authenticated at this stage, so their identity is known.
  2. User Interaction: When a user selects your logo on the Import Credentials page, we redirect them to your provided URL, appending two query parameters:
    • recipientToken: A unique string identifying the authenticated SmartResume user.
    • redirectURL: The URL to which you should redirect the user after successfully processing the credentials.

    Example redirect URL:

    https://your-site.com/endpoint?recipientToken=abc123&redirectURL=https://smartresume.com/callback
  3. API Flow on Your Side:
    • Use the SmartResume API to obtain an authorization token.
    • Send the credentials to SmartResume as per the standard API flow, including the recipientToken value in the recipienttoken property of the JSON payload. This step is critical to associate the credentials with the correct SmartResume user, as the API call is typically made from a server-side process that may not have direct access to the browser session.

    Example JSON payload:

    {
      "credential": {...},
      "recipienttoken": "abc123"
    }
  4. Completion: After successfully sending the credentials, redirect the user to the provided redirectURL.

Important Notes

  • The recipientToken ensures that credentials are attached to the correct SmartResume user account. Omitting or incorrectly handling this parameter may result in credentials being misassociated.
  • Ensure your endpoint handles the redirect securely and validates the recipientToken and redirectURL parameters to prevent security vulnerabilities.

Refer to IMSGlobal Open Badges. Note that we require achievementType to map credentials to SmartResume® award types. https://www.imsglobal.org/spec/ob/v3p0/#org.1edtech.ob.v3p0.achievementtype.class

AchievementType Options

  • achievementType (default award type)
  • Achievement (Credentials)
  • ApprenticeshipCertificate (Experience)
  • Assertion (Credentials)
  • Assessment (Skills and Abilities)
  • Assignment (Education)
  • AssociateDegree (Education)
  • Award (Credentials)
  • BachelorDegree (Education)
  • Badge (Credentials)
  • ceasn:Competency (Skills and Abilities)
  • ceasn:CompetencyFramework (Skills and Abilities)
  • Certificate (Education)
  • CertificateOfCompletion (Education)
  • Certification (Certification)
  • ceterms:AcademicCertificate (Education)
  • ceterms:ApprenticeshipCertificate (Education)
  • ceterms:AssessmentProfile (Skills and Abilities)
  • ceterms:AssociateDegree (Education)
  • ceterms:AssociateOfAppliedArtsDegree (Education)
  • ceterms:AssociateOfAppliedScienceDegree (Education)
  • ceterms:AssociateOfArtsDegree (Education)
  • ceterms:AssociateOfScienceDegree (Education)
  • ceterms:BachelorDegree (Education)
  • ceterms:BachelorOfArtsDegree (Education)
  • ceterms:BachelorOfScienceDegree (Education)
  • ceterms:Badge (Credentials)
  • ceterms:BasicTechnicalCertificate (Education)
  • ceterms:Certificate (Education)
  • ceterms:CertificateOfCompletion (Education)
  • ceterms:CertificateOfParticipation (Education)
  • ceterms:Certification (Certification)
  • ceterms:Course (Relevant Coursework)
  • ceterms:Credential (Credentials)
  • ceterms:Degree (Education)
  • ceterms:DigitalBadge (Credentials)
  • ceterms:Diploma (Education)
  • ceterms:DoctoralDegree (Education)
  • ceterms:GeneralEducationDevelopment (Education)
  • ceterms:GeneralEducationLevel1Certificate (Education)
  • ceterms:GeneralEducationLevel2Certificate (Education)
  • ceterms:HigherEducationLevel1Certificate (Education)
  • ceterms:HigherEducationLevel2Certificate (Education)
  • ceterms:JourneymanCertificate (Education)
  • ceterms:LearningOpportunityProfile (Activities)
  • ceterms:LearningProgram (Education)
  • ceterms:License (Licenses)
  • ceterms:MasterCertificate (Education)
  • ceterms:MasterDegree (Education)
  • ceterms:MasterOfArtsDegree (Education)
  • ceterms:MasterOfScienceDegree (Education)
  • ceterms:MicroCredential (Credentials)
  • ceterms:OpenBadge (Credentials)
  • ceterms:PostBaccalaureateCertificate (Education)
  • ceterms:PostMasterCertificate (Education)
  • ceterms:PreApprenticeshipCertificate (Education)
  • ceterms:ProfessionalCertificate (Education)
  • ceterms:ProfessionalDoctorate (Education)
  • ceterms:ProficiencyCertificate (Education)
  • ceterms:QualityAssuranceCredential (Credentials)
  • ceterms:ResearchDoctorate (Education)
  • ceterms:SecondaryEducationCertificate (Education)
  • ceterms:SecondarySchoolDiploma (Education)
  • ceterms:SpecialistDegree (Education)
  • ceterms:TechnicalLevel1Certificate (Education)
  • ceterms:TechnicalLevel2Certificate (Education)
  • ceterms:TechnicalLevel3Certificate (Education)
  • ceterms:WorkBasedLearningCertificate (Education)
  • CoCurricular (Activities)
  • CommunityService (Experience)
  • Competency (Skills and Abilities)
  • Course (Relevant Coursework)
  • Credential (Credentials)
  • Degree (Education)
  • Diploma (Education)
  • DoctoralDegree (Education)
  • Fieldwork (Experience)
  • GeneralEducationDevelopment (Education)
  • JourneymanCertificate (Certification)
  • LearningProgram (Education)
  • License (Licenses)
  • MasterCertificate (Certification)
  • MasterDegree (Education)
  • Membership (Professional Affiliations)
  • Microcredential (Credentials)
  • ProfessionalDoctorate (Education)
  • QualityAssuranceCredential (Credentials)
  • ResearchDoctorate (Education)
  • SecondarySchoolDiploma (Education)

NOTE: The values below marked in BOLD are required.
{
    "@context": [
        "https://www.w3.org/ns/credentials/v2",
        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
        "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "recipienttoken": "",
    "recipient": {
        "id": "474989023199323",
        "givenName": "",
        "familyName": "",
        "additionalName": "",
        "email": "jsmith@institutionx.edu",
        "phone": "",
        "studentId": "",
        "signupOrganization": ""
    },
    "credentials": [
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "id": "351843720888468",
            "type":[
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "name": "Calculus w/Analytic Geometry I",
            "awardedDate": "Spring 2023",
            "activityEndDate": "",
            "issuedOn": "",
            "issuanceDate": "",
            "expirationDate": "",
            "credentialSubject": {
                "id": "1235143208848",
                "type": [
                    "AchievementSubject"
                ],
                "achievement": {
                    "id": "351843720888468",
                    "achievementType": "Course",
                    "name": "Calculus w/Analytic Geometry I",
                    "description": "Real numbers, limits and continuity, and differential and integral calculus of functions of 1 variable.",
                    "image": {
                        "id": ""
                    }
                }
            },
            "issuer": {
                "id": "123456789",
                "name": "Institution X",
                "email": "admissions@institutionx.edu",
                "url": "https://institutionx.edu",
                "image": {
                    "id": ""
                },
                "description": "Institution X, founded in 1925, is known for its beautiful campus and arts programs."
            }
        },
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "id": "369435906932892",
            "type":[
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "name": "Introduction to Psychology",
            "awardedDate": "Spring 2023",
            "activityEndDate": "",
            "issuedOn": "",
            "issuanceDate": "",
            "expirationDate": "",
            "credentialSubject": {
                "id": "1235143208848",
                "type": [
                    "AchievementSubject"
                ],
                "achievement": {
                    "id": "351843720888469",
                    "achievementType": "Course",
                    "name": "Introduction to Psychology",
                    "description": "Major areas of theory and research in psychology. Requires participation in department-sponsored research or an educationally equivalent alternative activity.",
                    "image": {
                        "id": ""
                    }
                }
            },
            "issuer": {
                "id": "123456789",
                "name": "Institution X",
                "email": "admissions@institutionx.edu",
                "url": "https://institutionx.edu",
                "image": {
                    "id": ""
                },
                "description": "Institution X, founded in 1925, is known for its beautiful campus and arts programs."
            }
        },
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "id": "369435906932893",
            "type":[
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "name": "First-Year Composition",
            "awardedDate": "Spring 2023",
            "activityEndDate": "",
            "issuedOn": "",
            "issuanceDate": "",
            "expirationDate": "",
            "credentialSubject": {
                "id": "1235143208848",
                "type": [
                    "AchievementSubject"
                ],
                "achievement": {
                    "id": "351843720888470",
                    "achievementType": "Course",
                    "name": "First-Year Composition",
                    "description": "Discovers, organizes and develops ideas in relation to the writer's purpose, subject and audience. Emphasizes modes of written discourse and effective use of rhetorical principles.",
                    "image": {
                        "id": ""
                    }
                }
            },
            "issuer": {
                "id": "123456789",
                "name": "Institution X",
                "email": "admissions@institutionx.edu",
                "url": "https://institutionx.edu",
                "image": {
                    "id": ""
                },
                "description": "Institution X, founded in 1925, is known for its beautiful campus and arts programs."
            }
        }
    ]
}

Adding SkillSync Data

Adding SkillSync Data is straightforward, use the JSON snippet below. Note that if Proof data is provided the credential is considered Verified, otherwise it is assumed self-asserted or similar unverified information.

Set credentialSubject.achievement.achievementType to "SkillsAndAbilities" to indicate that the base credential is only a "carrier" for the attached skills appearing under the credentialSubject.achievement.alignment section and should NOT be included in the import.

{
    "@context": [
        "https://www.w3.org/ns/credentials/v2",
        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
        "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "recipient": {
        "id": "12345",
        "givenName": "John",
        "familyName": "Sample",
        "additionalName": "Q",
        "email": "john.q.sample@somedomain.com",
        "phone": "",
        "studentId": "",
        "signupOrganization": ""
    },
    "credentials": [
        {
            "@context": [
                "https://www.w3.org/ns/credentials/v2",
                "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
                "https://w3id.org/security/suites/ed25519-2020/v1"
            ],
            "awardedDate": "2025-02-14T17:07:16Z",
            "credentialSubject": {
                "achievement": {
                    "achievementType": "SkillsAndAbilities",
                    "criteria": {
                        "narrative": ""
                    },
                    "id": "urn:uuid:e112a3ac-42cf-4679-ba89-9e8d70b6ecc7",
                    "name": "Carrier Credential ",
                    "type": "Achievement",
                    "alignment": [
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Teaching",
                            "targetType": "Competency",
                            "targetDescription": "Teaching is a common skill that involves the transfer of knowledge, skills, and values from one person to another. It involves designing and delivering effective learning experiences that engage students and promote understanding. Effective teaching requires the ability to communicate clearly, listen actively, adapt to different learning styles, and provide constructive feedback. It is an important skill that is required across a wide range of professions and industries."
                        },
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Leadership",
                            "targetType": "Competency",
                            "targetDescription": "Leadership is a skill that is common among successful individuals in various fields. It involves the ability to motivate and guide a team towards achieving common goals. Good leadership qualities include effective communication, empathy, decision-making skills, adaptability, and vision. Leadership can be developed and honed through training, practice, and learning from others."
                        },
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Quality Management",
                            "targetType": "Competency",
                            "targetDescription": "Quality management is a specialized skill that involves ensuring that products and services meet or exceed customer expectations. This includes setting and adhering to standards, designing and implementing quality control measures, and continuously monitoring and improving processes. Quality management is crucial for businesses seeking to maintain customer satisfaction, increase efficiency, and stay competitive in their respective industries. It requires a combination of technical knowledge, analytical skills, and effective communication to succeed."
                        },
                        {
                            "type": "Alignment",
                            "targetFramework": "INSTX",
                            "targetName": "Sales",
                            "targetType": "Competency",
                            "targetDescription": "Sales is the art of convincing people to buy products or services. 
                                It is a common skill that involves understanding the customer's needs, identifying pain points, and presenting a solution that addresses those issues. Salespeople must know how to communicate effectively, build trust with clients, negotiate deals, and close the sale. Success in sales requires persistence, creativity, and a willingness to learn and adapt to new situations."
                        }
                    ]
                },
                "type": [
                    "AchievementSubject"
                ]
            },
            "id": "urn:uuid:70b6ecc7-42cf-4679-ba89-9e8dd721a3ac",
            "issuer": {
                "id": "did:key:z6MkvabuhEZkoAy3UnUsh5fiwbDr8B6kunnVXL8TL5QYd1W5",
                "name": "Institution X"
            },
            "name": "Skills",
            "type": [
                "VerifiableCredential",
                "OpenBadgeCredential"
            ],
            "proof": [
                {
                    "type": "Ed25519Signature2020",
                    "created": "2025-02-14T17:07:18Z",
                    "verificationMethod": "did:key:y7mKvabuhEZkoAy3UnUsh5fiwbDr8B6kunnVXL8TL5QYd1W5#z6MkvabuhEZkoAy3UnUsh5fiwbDr8B6kunnVXL8TL5QYd1W5",
                    "proofPurpose": "assertionMethod",
                    "proofValue": "L3f7huNQcgBLFD9RZbmxca8kWypCUQffwtvZyx6rKXRFuC8VzeCajAN2AhD5yvYJ8VBnDecpFmnpLvtnscE2hFooJ"
                }
            ]
        }
    ]
}

Status CodeContent-Type HeaderContent TypeContent DescriptionContent Required
200 application/json GetOpenBadgeCredentialsResponse The set of OpenBadgeCredentials that meet the request parameters. Paging applies to the total number of OpenBadgeCredentials in the response. Required
400 application/json Imsx_StatusInfo As defined in [rfc9110], indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required
401 application/json Imsx_StatusInfo As defined in [rfc9110], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required
403 application/json Imsx_StatusInfo As defined in [rfc9110], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required
405 application/json Imsx_StatusInfo As defined in [rfc9110], indicating that the server does not allow the method. Required
500 application/json Imsx_StatusInfo As defined in [rfc9110]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required

Frequently Asked Questions

While Testing in MyStage.Smartresume.com,some of my testers never get the email from SmartResume to verify their email.

To prevent excessive emails during testing, we suppress outbound emails unless the address or domain is whitelisted with us. We generally whitelist the primary domain of the testing company, and can whitelist any other emails such as Joel4582B@yahoo.com upon request.

I issued an award to three testers, but only the first tester got it to show up on his SmartResume.

Each AwardID must be unique. What generally happens is the testing administrator generates a single award and distributes it to 3 testers. Our system sees the award come in and associates it with the user referenced in the transfer. The 2nd and 3rd testers don't see the award because tester 1 owns it. We do that check as a means of preventing users from claiming other people's credentials.

I'm confused about credentials, achievements and assertions. Which is which?

A credential is a class of achievement. It defines the properties/scope of a particular type of achievement such as “Master of Business Administration”. The unique identifier of this type of achievement would be the achievement id (credentialSubject.achievement.id). The achievement id will be consistent across all awarded instances of this achievement. An assertion is an individual instance of a credential. The unique identifier of an assertion is the assertion id (id). If 3 different credential holders are awarded the MBA credential example listed above, then each instance of the 3 MBA credentials would have a unique id assigned to them which is then used to uniquely identify the instance. But in each case, the achievement id would be the same across all 3 instances of the credential.

We capture and record both achievement and assertion id’s. The achievement id has its uses, most of which are informational, but a unique assertion id is crucial for reliably identifying a specific instance of an achievement so that any updates/revocations can later be made to it. It is also used to prohibit the same credential from being claimed on multiple SmartResumes which assists in preventing fraud. We do not catalog and track credential definitions from outside of SmartResume. So, it is not all problematic (in fact, it’s necessary) to provide all the credential details for each and every assertion submitted. This keeps things simple and encapsulated in case the requirements and/or scope of a credential evolves over time so that any older issuances do not get corrupted.

When I get a token during the API authorization process, how long is it valid?

Tokens expire after 60 minutes of inactivity, though this duration may change in future updates. To handle expiration gracefully, implement error handling in your application to detect expired token errors and obtain a new token before retrying the request. This ensures uninterrupted access and resilience against potential changes.

Achievement Types

We use the 1EdTech AchievementType categories to determine which section of a SmartResume a credential or award belongs in. For example, Education, Certifications, and so forth. Refer to the SmartResume JSON Credential documentation for the list and our current default mapping. It is relatively straightforward for us to customize this - simply tell us what you want one of the standard AchievementType's to map to instead.

If we receive an AchievementType we don't recognize - it pops an alert on our System Administration screen - if we can figure it out just by reading it we will generally assign it to a resume section. Otherwise, we'll get in touch and ask where you want it to go.

These are easily customized per SmartResume API user, just let us know!

My resumes are being created, but the Talent Marketplace landing page with custom logo is not appearing on the signup page

This usually means the credential arrived without the IssuerId value that was discussed during the set up process. It is very straightforward from our side - you tell us what IssuerID you're going to send us that indicates this credential "belongs" in the XYZ MarketPlace. On our side, we have a routing table that directs it there. Meaning, if you told us the ID value was going to be "Marketplace of Bob" we would send everything to the landing page we created for "Marketplace of Bob" If instead you send us an IssuerID that is "Bob" we just route that to generic landing page.

We literally don't care what the Issuerid is, so long as it is unique and consistent for your organization. It can be numeric, did.key, a string as above, whatever. We'll be happy to discuss options at any time.

How can we send additional name data such as middle name?

Just add the "Profile" type to the type array that includes "ClrSubject" and then the givenName, familyName, and additionalName fields are available to use.

{
    "@context": [
        "https://www.w3.org/ns/credentials/v2",
        "https://purl.imsglobal.org/spec/clr/v2p0/context-2.0.1.json",
        "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
        "https://purl.imsglobal.org/spec/ob/v3p0/extensions.json"
    ],
    "id": "http://example.edu/credentials/3732",
    "type": [
        "VerifiableCredential",
        "ClrCredential"
    ],
    "issuer": {
        "id": "https://example.edu/issuers/565049",
        "type": [
            "Profile"
        ],
        "name": "Example University"
    },
    "validFrom": "2010-01-01T00:00:00Z",
    "name": "Sample Transcript",
    "credentialSubject": {
        "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
        "type": [
            "ClrSubject",
            "Profile"
        ],
        "verifiableCredential": [],
        "givenName": "Steve",
        "familyName": "McSteve",
        "additionalName": "Stevey"
    },
    "credentialSchema": [
        {
            "id": "https://purl.imsglobal.org/spec/clr/v2p0/schema/json/clr_v2p0_clrcredential_schema.json",
            "type": "1EdTechJsonSchemaValidator2019"
        }
    ]
}

Please wait...