Getting started as a Cap Table Partner

1. Generate your own self signed JWT

For details on how to do this see Generating a JWT

2. Generate NPM signed JWT for API calls

Use the JWT from step #1 to generate the NPM issued JWT for making partner api calls:

curl --request POST 'https://sandbox.npmdev.net/api/partners/{partner_name}/oauth2/v1/token' \
     --header 'Authorization: Bearer {self_signed_jwt}'
{
  "token": "ey..."
}

Please note that depending on the issuer you're representing, what user is taking the action, as well as sometimes the action you're taking you may need to generate a new API JWT for each call since our JWTs only provide access for certain actions but not everything. You cannot get a JWT that gives you broad access to all issuer and on behalf of any user to our API, this is done deliberately to ensure making calls for the wrong issuer for example would be very hard to do by mistake.

3. Create a new issuer

Now you can try creating your own issuer, give the general contact info for an issuer admin associated with the issuer because in production what will happen here is NPM will reach out to this contact and setup their NPM account. Once their account is setup you can use it.

curl --request POST \
     --url https://sandbox.npmdev.net/api/partners/partner_name/initiate_onboarding \
     --header 'accept: application/json' \
     --header 'Authorization: Bearer {npm_signed_jwt}' \
     --header 'content-type: application/json' \
     --data '
{
  "issuer_admin_contact_info": {
    "email": {
      "email_type": "BUSINESS",
      "email_address": "[email protected]"
    },
    "phone": {
      "phone_type": "BUSINESS",
      "phone_number": "+1 555 123 1234"
    }
  },
  "issuer_legal_name": "Acme Co"
}
'
{
  "id": "18313c93-75a4-4dfe-addf-9fb35c825268"
}

You'll get back the ID generated for this issuer, don't lose this ID it is what you will use to reference this issuer going forward.

4. Query the onboarding status of this issuer you submitted

Now that you've created an issuer you can check its onboarding status

curl --request GET \
     --url https://sandbox.npmdev.net/api/partners/{partner_name}/issuer/{issuer_id_from_step_3}/status \
     --header 'Authorization: Bearer {npm_signed_jwt}' \
     --header 'accept: application/json'
{
    "legal_name": "Acme Co",
    "onboarding_status": "pending"
}