What's new in the Minikai API.

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.

sdksfixrelease

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.

minisskillsattachmentsrelease

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.

labelsfixrelease

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.

minisschema

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.

recordsfix

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.

minisschemarelease

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.

labelsrelease

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.

recordsschema

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.

recordsexportrelease

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.

attachmentsschema

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.

schema

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.

schemarelease

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.

skillsattachmentsschema

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.

schemarelease

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.

skills

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.

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.

records

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.

schema

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).

minis

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.

recordsrelations