At this level
ai.newnal.illi.media ยท 10- ai.newnal.illi.media.defs defs Full media snapshot; additional fields are allowed and retained.
- ai.newnal.illi.media.deleteItem procedure The author deletes an item; the PDN garbage-collects its blobs.
- ai.newnal.illi.media.getItem query Family-only original item. Device sessions are denied with OriginalAccessDenied.
- ai.newnal.illi.media.getOriginal query Server-to-server only. Media fetches an active registered original using a media service JWT with this method as lxm. The response streams the PDN blob with Content-Type and Content-Length. An original whose deletion is in progress answers 503 OriginalUnavailable (retry later); only a missing, deleted or unregistered original answers 404 NotFound, which media treats as final.
- ai.newnal.illi.media.getTodayUploadCount query Persisted photo originals on the current date in the family timezone, including pending/failed/cancelled media registration. Same-file duplicate uploads count once; videos and deleted originals are excluded. Includes remaining uploads to the ten-photo new-work condition.
- ai.newnal.illi.media.listItems query Family-only original album, newest by takenAt. Device sessions are denied with OriginalAccessDenied.
- ai.newnal.illi.media.receiveArtworkEvent procedure Server-to-server only. Called by the Newnal media service with a service JWT (`iss` = the configured media DID, `lxm` = this method). Apps must not call it.
- ai.newnal.illi.media.receiveAssetEvent procedure Server-to-server only. Called by the Newnal media service with a service JWT (`iss` = the configured media DID, `lxm` = this method). Apps must not call it.
- ai.newnal.illi.media.updateItem procedure Only the uploader updates people, note and the manual capture time. takenAt sets a capture time with an offset; clearTakenAt true clears the correction; sending both, or takenAt null, is InvalidRequest; omitting both keeps it. Works already composed keep their composition; the saved values reach the media service for later works. AI fields cannot be edited.
- ai.newnal.illi.media.uploadItem procedure Upload one photo or video. multipart/form-data parts: homeId, file, timezone?, people? (JSON array of {name, relationship?}, at most 20 people), note? (at most 300 graphemes), takenAt? (offset-bearing timestamp). Unknown parts are ignored. A manual takenAt is queued after registration through updateUserInput. Otherwise capture time comes from file metadata, then upload time. Same-file content in one home returns the existing active original across uploaders, ignoring the new people/note/takenAt