All pages
Powered by GitBook
1 of 1

Loading...

Integration Guide

Expected User Flow

This is the expected user flow for third party platforms looking to integrate OCAs into their ecosystem. At this moment, OCAs can only be issued to an OCID account, therefore it is important that the OCID Connect portion is set up on your platform before any issuance happens.

1. Requesting for an OC Developer Account

We have just launched the OC Developer portal hoping to scale up the capability of self-served integration for developers and partners. Head to to create an OCID if you have not already done so. If you are building on behalf of an organisation, we strongly recommend that you create a separate OCID <organisationName>.edu that will be used to request for production API key.

Once you've done so, prepare the following information and head to and apply for a developer account with your OCID. It will take typically 3-5 working days for review, alternatively you can reach out to @lewlian on telegram to expedite your approval if needed.

2. Setting up your Open Campus ID (Sandbox)

A sandbox environment can be activated in the SDK for development purposes. Please find the full guide for Open Campus ID Connect integration

When you have completed the integration on production, you should have a “Connect with OCID” that allows you to:

  • Create a new OCID

  • Login and connect an existing OCID

Before you move on to the next segment, it is recommended that you generate two OCID accounts:

  1. Issuer’s OCID: This is the OCID account that will be requesting for Issuer permission and also become the Issuing entity for OCAs later. This should be the OCID that already has access to the developer portal

  2. User’s OCID: This is the OCID account that will be receiving the OCA and view them on the OCID Dashboard.

2. Issuing Open Campus Achievements/Badges (Sandbox)

Update: You no longer require a sandbox OCID to test the staging endpoint. You can use your actual production OCID for both staging and production OCA testing. Make sure you have a valid OCID from

On a high level, a Sandbox Issuer’s API Key will be needed to issue an OCA/OCB with the sandbox API endpoint provided. To obtain it, please head to and login with the OCID account registered as a developer. Click on "OCA API Keys".

Select "Request staging key" and allow a few minutes for your keys to be generated in the backend.

Once your staging API keys are generated, you should be able to see the two parameters that you need for integration:

  • Staging API Key

  • DID String

Authorization

Once your obtained an API Key from the dashboard, you can use your API Key in the HTTP POST header for authorization:

a. Staging endpoint for OCA Issuance:

Body Params (JSON)

If you have followed the , holderOcId will refer to the User’s OCID that you generated in the previous segment. If you only have one OCID generated you may also issue an OCA to the issuer’s account.

Sample Body (raw JSON):

name
type
example

If you wish to find out more about the specifications for each of the properties in the body params, please refer to . You will also find the recommended image dimensions for OCAs there.

OCID Dashboard

Once you have successfully issued the OCA to a holder’s OCID, there are two ways that you can view the OCA:

  1. Logging in to the Open Campus ID Dashboard in the sandbox environment using the holder’s account at

  2. View the holder’s public profile at https://id.sandbox.opencampus.xyz/public/credentials?username=<OC_ID>

b. Staging endpoint for OCB Issuance

Body Params (JSON)

For OC Badges, it is largely similar to OC Achievements but you will need to specify collectionSymbol as ocbadge otherwise it will default to OCA issuance. You may also issue OC Badges directly to wallets instead of OCIDs by changing holderOcId to holderAddress

Sample Body for issuance to OCID (raw JSON):

Sample Body for issuance to wallet (raw JSON):

⚠️ For Yuzu x OC Badge Season 3 participating Dapps. Only OC badges issued to wallets are eligible for Yuzu points, please ensure that you are following the body params below for issuance to wallet.

CredentialPayload

name
type
example

For Yuzu x OC Badge Season 3 participating Dapps. Please ensure that name in credentialPayload matches the Badge Name in your badge submission form

3. Preparing for Production

In order to ensure that third party integrations are successful and did not deviate too much from the intended flow of how OCAs should be issued, we require teams to do a recording of their integrated flow on the sandbox environment and submit to the Open Campus team via the form below. Please reach out to @kittyvo and @lewlian to escalate your review process.

To promote the sandbox environment to production, you will need:

  1. Request for Issuer’s production API Key

    1. Complete and submit this to the Open Campus team

    2. Once this is approved, you will be informed and able to view your API Key and DID Key for production from the OC Developer Dashboard

Secure your API Key safely, your API Key is tied to your issuer identity and losing your API Key means allowing others to issue Achievements on your behalf.

  • Then replace with the production issuance endpoint

  • credentialPayload

    object

    holderOcId

    string

    bob.edu

    credentialPayload

    object

    https://auth.opencampus.xyz/login
    https://developers.opencampus.xyz/login
    here
    https://auth.opencampus.xyz/login
    https://developers.opencampus.xyz
    guide
    API Specifications
    https://id.sandbox.opencampus.xyz
    form
    Onboarding form for developer account
    Post application screen (pending approval)
    OC Developer Dashboard
    Before generating OCA Staging API Keys
    After generating OCA Staging API Keys
    POST <https://api.vc.opencampus.xyz/issuer/vc>
    Header: { X-API-KEY: <your api key> }
    POST https://api.vc.staging.opencampus.xyz/issuer/vc
    {
    	"credentialPayload": { ... },
    	"holderOcId": "bob.edu"
    }
    {"validFrom": "2023-12-10T16:00:00.000Z",
        "awardedDate": "2023-12-10T16:00:00.000Z",
        "description": "An achievement for achieving outstanding results in mathematics course",
        "credentialSubject": {
            "name": "John Doe",
            "type": "Person",
            "email": "[email protected]",
            "image": "https://img.freepik.com/premium-vector/gold-medal-with-gold-ribbon-that-says-gold_1134661-43944.jpg",
            "profileUrl": "https://mycourse.xyz/profile/johndoe",
            "achievement": {
                "name": "Gold Medal Achievements",
                "identifier": "tt:1111222333",
                "description": "Reached 200 points in the intermediate mathematics",
                "achievementType": "Achievement"
            }
        }
    }
    POST https://api.vc.staging.opencampus.xyz/issuer/vc
    {
        "credentialPayload": { ... },
        "collectionSymbol": "ocbadge",
        "holderOcId": "bob.edu"
    }
    {
        "credentialPayload": { ... },
        "collectionSymbol": "ocbadge",
        "holderAddress": "0xabcD12345..."
    {
        "validFrom": "2023-12-10T16:00:00.000Z",
        "awardedDate": "2023-12-10T16:00:00.000Z",
        "description": "Season 3 Badge from XXXSwap",
        "credentialSubject": {
            "type": "Person",
            "image": "https://img.freepik.com/premium-vector/gold-medal-with-gold-ribbon-that-says-gold_1134661-43944.jpg",
            "profileUrl": "https://mycourse.xyz/profile/johndoe",
            "achievement": {
                "name": "LiquidityKing",
                "identifier": "tt:1111222333",
                "description": "transacting more than $100 in value on Sailfish",
                "achievementType": "Badge"
    		    },
    }