---
title: "Upsert glossary terms (primers)"
method: PUT
path: "/v1/admin/glossary"
tags: ["Admin"]
---

# Upsert glossary terms (primers)

`PUT /v1/admin/glossary`

## Request

- Base URL: `http://api.technooptimist.io`
- URL: `http://api.technooptimist.io/v1/admin/glossary`
- Auth: HTTP bearer

One `SeedGlossaryTerm` or an array, upserted by slug. Illustrations are not set here: they come from the ink pipeline (packages/ink/out/glossary) via the seed loader, and an upsert keeps the stored drawing.

## Headers

- `x-routine-name` string: Name of the routine making the write; recorded as `routine:<name>` in the audit log.

## Request body

- union
  - object
    - `slug` string, required
    - `term` string, required
    - `aliases` string[]
    - `short` string, required
    - `points` string[], required
    - `frontiers` string[], required
    - `related` string[]
    - `seeAlso` object[]
      - `company` string, required
      - `program` string, required
  - object[]
    - `slug` string, required
    - `term` string, required
    - `aliases` string[]
    - `short` string, required
    - `points` string[], required
    - `frontiers` string[], required
    - `related` string[]
    - `seeAlso` object[]
      - `company` string, required
      - `program` string, required

## Response `200`

Upserted

- GlossaryWriteResult
  - `ok` true, required
  - `slugs` string[], required

## Other responses

- `401`: Missing or invalid credentials
- `403`: Credential lacks the required scope
- `404`: Not found
- `409`: Conflict
- `422`: Validation failed

---

[API](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api.md) · [All operations](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/llms.txt) · [OpenAPI document](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/revisions/b7bcde6a0f30?raw)
