Skip to main content

Certificate API

The certificate API is used to create, manage, update, and remove certificate. As of now, it isn't authenticated. It functions as a REST API, supporting a variety of routes and methods.

All APIs are mounted on the /api route, including the certificate API. Unless states otherwise, all non-empty request bodies are expected to be be JSON.

The following routes and methods are supported in the certificate API.

/api/certificate

This route supports 3 methods: GET, POST, and DELETE.

GET

Retrieves the credential IDs of all certificates.

Request
GET /api/certificate
Response
{
"msg": "11 certificate(s) found!",
"count": 11,
"data": [
"e03a698d-e7a4-4a49-af72-7c90c8966a90",
"78966f20-0a4a-4f98-8634-bb2019d5dc94",
...,
"6b7ede30-6924-47f1-92cb-8f974d5f2dc3"
]
}

POST

Generates a new certificate.

Request
POST /api/certificate
Content-Type: application/json

{
"title": "My Certificate",
"template": "stock-best-award",
"values": [
{
"name": "name",
"value": "Param Siddharth"
},
{
"name": "Description",
"value": "This is a sample victory!"
},
{
"name": "signature",
"value": "Param"
}
]
}
Response
{
"msg": "Certificate created!",
"data": {
"title": "My Certificate",
"template": "stock-best-award",
"values": [
{
"value": "Param Siddharth",
"visible": true,
"name": "name"
},
{
"value": "Param",
"visible": true,
"name": "signature"
}
],
"date": "2021-07-22T15:55:11.094Z",
"uid": "126b8636-ccf9-4f78-b795-5a830c48a54e"
}
}

DELETE

Delete all/multiple certificates. Currently, this method only supports deleting ALL certificates.

Request
DETELE /api/certificate
Response
{
"msg": "All certificates deleted!",
"data": [
"e03a698d-e7a4-4a49-af72-7c90c8966a90",
"78966f20-0a4a-4f98-8634-bb2019d5dc94",
...,
"126b8636-ccf9-4f78-b795-5a830c48a54e"
],
"count": 12
}

/api/certificate/{uid}

This route is used for operations pertaining to the certificate identified by {uid}. It supports the GET, PATCH, and DELETE methods.

GET

Retrieves a particular certificate.

Request
GET /api/certificate/126b8636-ccf9-4f78-b795-5a830c48a54e
Response
{
"msg": "Certificate found!",
"data": {
"title": "My Certificate",
"template": "stock-best-award",
"values": [
{
"value": "Param Siddharth",
"visible": true,
"name": "name"
},
{
"value": "Param",
"visible": true,
"name": "signature"
}
],
"date": "2021-07-22T16:25:47.113Z",
"uid": "126b8636-ccf9-4f78-b795-5a830c48a54e"
}
}

PATCH

Update a particular certificate.

The request body is supposed to have an updated version of the same certificate. The untouched global properties of the certificate and the unchanged values may be omitted.

Request
PATCH /api/certificate/126b8636-ccf9-4f78-b795-5a830c48a54e
Content-Type: application/json

{
"title": "Your Certificate"
}
Response
{
"data": {
"title": "Your Certificate",
"template": "stock-best-award",
"values": [
{
"value": "Param Siddharth",
"visible": true,
"name": "name"
},
{
"value": "Param",
"visible": true,
"name": "signature"
}
],
"date": "2021-07-22T16:25:47.113Z",
"uid": "126b8636-ccf9-4f78-b795-5a830c48a54e"
},
"msg": "Certificate updated!"
}

DELETE

Deletes a particular certificate.

Request
DELETE /api/certificate/126b8636-ccf9-4f78-b795-5a830c48a54e
Response
{
"msg": "Certificate deleted!",
"data": {
"title": "Your Certificate",
"template": "stock-best-award",
"values": [
{
"value": "Param Siddharth",
"visible": true,
"name": "name"
},
{
"value": "Param",
"visible": true,
"name": "signature"
}
],
"date": "2021-07-22T16:25:47.113Z",
"uid": "126b8636-ccf9-4f78-b795-5a830c48a54e"
}
}

/api/certificate/{uid}/view

This route supports only GET requests and returns the rendered certificate identified by {uid}. The format is PNG by default. If the query parameter pdf is provided with any value, the certificate is rendered and returned as a PDF.

  • PNG:
    GET /api/certificate/126b8636-ccf9-4f78-b795-5a830c48a54e/preview
  • PDF:
    GET /api/certificate/126b8636-ccf9-4f78-b795-5a830c48a54e/preview?pdf

/api/certificate/bulk

This route supports only POST requests and is used to create certificates in bulk using the same template.

The incoming request body must be of the type multipart/form-data, containing the template name under the template key, and a CSV file under the list key.

Request
POST /api/certificate/bulk
Content-Type: multipart/form-data; boundary=biharsehoon

--biharsehoon
Content-Disposition: form-data; name="template"

stock-best-award
--biharsehoon
Content-Disposition: form-data; name="list"; filename="list.csv"
Content-Type: text/csv

name,Description,signature
Param Siddharth,This is a sample victory!,Param
Krishna Kabir Siddharth,This is a sample victory!,Param
Hans Lata,This is a sample appreciation!,Param
Santosh Kumar,This is a sample appreciation!,Param
--biharsehoon--
Response
{
"msg": "Certificates generated!",
"certificates": [
"3aece973-f572-40b9-8292-02d15bbf6ca0",
"6391f246-be6f-4360-9b57-a870db6dfa65",
"6845ce11-5545-4b01-9b6b-136710f7e632",
"bb644daa-e1f0-42bd-9806-a260125ac684"
],
"errors": [],
"template": "stock-best-award"
}