Each release also ships as a versioned minikai SDK for Python and TypeScript, so the version numbers below match the
SDK you install. We keep things backwards-compatible wherever we can, so pinning to a version is safe.
The Python and TypeScript SDKs build again
v1.17.1 Fixes the nullable model fields, LabelDto.rename and UpsertRecordDto.authorization among them, that made
both generated SDKs invalid code, so minikai publishes again for Python and TypeScript. Behaviour is unchanged, so
upgrading is safe.
Download a Mini's profile picture or a skill's asset
v1.18.0 Download the image behind a Mini’s profilePictureUrl, or the file behind a skill asset’s url. Both
fields always held a path, and now GET /Minis/{id}/profile-picture/{pictureId} and GET /Skills/{id}/assets/{assetId}
are in the API and the SDKs so you can call it. These and the record attachment download now hand you the file itself in
the SDKs, rather than a response with no type on it.
Deleting a label in use is refused instead of stranding it
v1.17.0 DELETE /Labels/{id} now returns a 409 while any record or Mini still carries the label, telling you how
many do. Records and Minis reference a label by name, so deleting one in use used to leave that name on them while
destroying the access grants attached to it. Clear the label off them first. A call that succeeds still returns 204
and the label disappears at once, but its grants are torn down in the background, so creating a label with the same name
straight after can be refused until that finishes.
Identify a Mini by NHS number
v1.16.0 Handles nhs as an identity kind so the NHS number a UK care provider knows a client by is stored and
searchable alongside the Australian schemes. It reads back on the Mini like any other identity.
Record filters reject a blank miniId with a 400
v1.15.0 Call GET /Records/filters/created-by, /updated-by or /states with a blank miniId and you get a 400
naming the field, where a blank value previously came back as a 500. All four /Records/filters/* operations now
document that 400, so it is typed in the SDKs.
Profile pictures are served from the API, and accept four image types
v1.13.0 POST /Minis/{id}/profile-picture returns the application path the picture is served from rather than an
internal storage location, and MiniDto.profilePictureUrl and SkillAssetDto.url carry the same style of path. Uploads
now accept image/jpeg, image/png, image/gif and image/webp only; SVG and TIFF are rejected with a 400, because
no browser paints either in an avatar.
Renaming a label moves its records and Minis
v1.14.0 Change a label’s name with PUT /api/v1/Labels/{id} and every record and Mini carrying it moves to the
new name, so nothing is left holding a name the label no longer answers to. The move runs in the background, so the
response carries a new rename field naming the previousName still being swept; it disappears once the move is done,
and GET /api/v1/Labels reports the same field while you wait. Its presence is the whole signal, so poll until it goes.
The processing record state is gone
v1.12.0 RecordState no longer has processing; a record is now active, draft, archived, or deleted, and
new records come back active straight away. If you branch on or filter by state, drop the processing case (it is
removed from RecordDto.state, the GET /Records states filter, and GET /Records/filters/states). Records created
under the old state come back as active, so nothing is left unreadable.
Export Records across multiple Minis
v1.11.0 New POST /api/v1/Records/export returns one CSV covering the Records of one or more Minis in a single
request. Send the Mini ids in the body (miniIds), with the same optional labels, states, startDate, endDate,
and sortDescending filters as before. Each row leads with Mini Name, Mini ID, and Record ID so you can tell
whose record is whose and feed the ids back into the API, and any Mini id outside your organisation or access is left
out.
Attachments no longer return uri
v1.10.0 Download an attachment with GET /api/v1/Records/{recordId}/attachments/{attachmentId}. The uri field on
each attachment is removed: it held a storage-relative filename you could not fetch. It was a required field, so
regenerate your SDK before upgrading.
See who authored a skill
v1.9.0 Read who created a skill from createdBy on the skill listing and detail responses, and who last changed it
from updatedBy on the detail response. Both carry a user id, and are null for skills written before authorship was
tracked.
Nullable schema representation updated
v1.8.1 Nullable properties that reference another schema now express null via an explicit enum: [null] branch in
their oneOf list, instead of a top-level nullable: true flag, from an OpenAPI generator upgrade. Behaviour is
unchanged and this is a safe upgrade.
Skill assets report their size
v1.8.0 Each skill asset now carries a size field (in bytes), so you can display or budget storage without
downloading the file first.
Explicit type on nullable enum fields
v1.6.1 Nullable enum fields now declare "type": "string" next to their oneOf reference in the spec, from an
OpenAPI generator upgrade. Behaviour is unchanged and this is a safe upgrade.
Restore an archived workspace skill
v1.7.0 Return an archived skill to active with POST /Skills/{id}/restore. The skill becomes available to the
workspace again and regains standard retention. Only archived skills can be restored.
Manage workspace skills
v1.6.0 Create, list, update and delete workspace skills via the new /Skills endpoints. Skills start as drafts,
activate on POST /Skills/drafts/{id}/submit, and carry assets uploaded through POST /Skills/{id}/assets. Listing
returns summaries of active skills (fetch a skill by id for its content and assets); workspace admins also see drafts
and archived skills.
Filter records by a content field
v1.5.4 Pass contentFilters=Key=Value on GET /Records to return only records whose content has that key set to
that value, and repeat the parameter to require several at once. The key matches exactly, the value case-insensitively.
Tidier nullable types in the spec
v1.5.2 Nullable fields now describe themselves more cleanly in the OpenAPI document. Nothing changes on the wire and the SDKs behave exactly as before.
Search Minis by client management ID
v1.5.1 A Mini’s identities can now carry a cms_id, the number your client management system uses, so you can look
a person up by it the same way you would by any other identifier. Available wherever you read or create Minis
(GET/POST /Minis and POST /Minis/external).
Records link both ways
v1.5.0 Relate one record to another and we add the matching link back on the other record for you, and keep the two
in sync as you add, change, or remove them. There are three new ways to describe a link, too: supersedes,
superseded-by, and duplicated-by.