From 21d387014ed063032fc26632f453531cc18e8e10 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 14 Oct 2026 11:21:14 +0000 Subject: [PATCH] Document personal collections and group membership creator - Add ownerId to the Collection schema (set for personal collections) - Accept the literal `personal` as collectionId on documents.create and documents.import to target the user's personal collection - Add createdBy (the user who created the membership) to GroupMembership Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01KmZTPgBVCuvWZG9mmnT2JJ --- spec3.json | 16 ++++++++++++---- spec3.yml | 21 +++++++++++++++++---- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/spec3.json b/spec3.json index 2bab87c..96464f4 100644 --- a/spec3.json +++ b/spec3.json @@ -3767,9 +3767,8 @@ }, "collectionId": { "type": "string", - "format": "uuid", "nullable": true, - "description": "Identifier for the collection to import into. One of collectionId or parentDocumentId is required." + "description": "Identifier for the collection to import into. One of collectionId or parentDocumentId is required. Pass the literal string `personal` to import into the authenticated user's personal collection." }, "parentDocumentId": { "type": "string", @@ -4698,9 +4697,8 @@ }, "collectionId": { "type": "string", - "format": "uuid", "nullable": true, - "description": "Identifier for the collection. Required to publish unless parentDocumentId is provided" + "description": "Identifier for the collection. Required to publish unless parentDocumentId is provided. Pass the literal string `personal` to create the document in the authenticated user's personal collection." }, "parentDocumentId": { "type": "string", @@ -12316,6 +12314,13 @@ "nullable": true, "description": "A string that represents an icon in the outline-icons package or an emoji" }, + "ownerId": { + "type": "string", + "nullable": true, + "description": "The identifier of the user who owns this collection when it is a personal collection. This is `null` for regular shared collections.", + "readOnly": true, + "format": "uuid" + }, "permission": { "$ref": "#/components/schemas/Permission" }, @@ -13930,6 +13935,9 @@ "format": "uuid", "nullable": true }, + "createdBy": { + "$ref": "#/components/schemas/User" + }, "createdAt": { "type": "string", "description": "The date and time that this membership was created.", diff --git a/spec3.yml b/spec3.yml index bf67820..d7aa1ef 100644 --- a/spec3.yml +++ b/spec3.yml @@ -2736,9 +2736,11 @@ paths: textbundle/textpack bundles are supported. collectionId: type: string - format: uuid nullable: true - description: Identifier for the collection to import into. One of collectionId or parentDocumentId is required. + description: Identifier for the collection to import into. One of + collectionId or parentDocumentId is required. Pass the literal + string `personal` to import into the authenticated user's + personal collection. parentDocumentId: type: string format: uuid @@ -3430,9 +3432,11 @@ paths: description: Color for the document icon (hex format) collectionId: type: string - format: uuid nullable: true - description: Identifier for the collection. Required to publish unless parentDocumentId is provided + description: Identifier for the collection. Required to publish + unless parentDocumentId is provided. Pass the literal string + `personal` to create the document in the authenticated user's + personal collection. parentDocumentId: type: string format: uuid @@ -8615,6 +8619,13 @@ components: type: string nullable: true description: A string that represents an icon in the outline-icons package or an emoji + ownerId: + type: string + nullable: true + description: The identifier of the user who owns this collection when it + is a personal collection. This is `null` for regular shared collections. + readOnly: true + format: uuid permission: "$ref": "#/components/schemas/Permission" templateManagement: @@ -9933,6 +9944,8 @@ components: readOnly: true format: uuid nullable: true + createdBy: + "$ref": "#/components/schemas/User" createdAt: type: string description: The date and time that this membership was created.