SDK npm package is not published yet and API environments may be unavailable.View status
Ananke Trust

Templates

Templates define the structure, fields, validity rules, and presentment settings for Ananke Trust documents. Create them once, issue many documents from them.

What is a template?

A template is a reusable document schema that defines what fields a document contains, how it's presented, its document type, and its validity rules. When you issue a document, you reference a template and provide values for its fields.

Templates belong to a tenant and can be managed through the API or the Console.

Creating a template

SDK — Create a template
const template = await client.trust.templates.create({
  name: "Professional Certificate",
  documentTypeCode: "CERT",
  fields: [
    { key: "certNumber", label: "Certificate Number", type: "text", required: true },
    { key: "course",     label: "Course Name",        type: "text", required: true },
    { key: "grade",      label: "Grade",              type: "text", required: false },
    { key: "issueDate",  label: "Issue Date",         type: "date", required: true },
  ],
});

console.log(template.id);  // "tmpl-uuid"
curl — Create a template
curl -X POST https://api.anankelabs.net/v1/trust/templates \
  -H "x-api-key: ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Professional Certificate",
    "documentTypeCode": "CERT",
    "fields": [
      { "key": "certNumber", "label": "Certificate Number", "type": "text", "required": true },
      { "key": "course", "label": "Course Name", "type": "text", "required": true }
    ]
  }'

Template fields

PropertyTypeRequiredDescription
namestringYesDisplay name for the template.
documentTypeCodestringYesDocument type code from reference data (e.g. CERT, DIP).
fieldsarrayYesArray of field definitions.
descriptionstringNoInternal description for this template.

Field types

Each field in the template schema has these properties:

PropertyDescription
keyUnique identifier used when issuing documents.
labelHuman-readable label for the field.
typeField type: text, date, number, email, url.
requiredWhether the field must be provided at issuance time.

Template lifecycle

Templates have two states:

  • Active — Can be used to issue new documents.
  • Archived — Cannot be used for new issuance, but existing documents remain valid.
Archive and unarchive
// Archive — prevents new issuance
await client.trust.templates.archive(templateId, {
  reason: "Replaced by v2 template",
});

// Unarchive — re-enables issuance
await client.trust.templates.unarchive(templateId);

Updating templates

You can update a template's name, description, and fields. Changes apply to new issuances only — existing documents are not affected.

Update a template
await client.trust.templates.update(templateId, {
  name: "Professional Certificate v2",
  fields: [
    { key: "certNumber", label: "Certificate Number", type: "text", required: true },
    { key: "course",     label: "Course Name",        type: "text", required: true },
    { key: "grade",      label: "Final Grade",        type: "text", required: true },
  ],
});

Duplicating templates

Create a copy of an existing template. Useful for versioning or creating variants:

Duplicate a template
const copy = await client.trust.templates.duplicate(templateId);
console.log(copy.id);  // new template ID

Placement settings

Placement settings control how the Ananke Trust document embeds an Ananke TCode barcode (if enabled). These are set via a separate endpoint:

Set placement
await client.trust.templates.setPlacement(templateId, {
  placementTemplateId: "placement-uuid",
});

CSV field mapping

For bulk issuance, retrieve the CSV column mapping for a template to build your upload file:

Get CSV fields
const csvFields = await client.trust.templates.getCsvFields(templateId);
console.log(csvFields);
// [{ column: "certNumber", required: true }, { column: "course", required: true }, ...]

Next steps