Save a private catalog item
Saves a file set as a private catalog item owned by the caller — the "My snippets" path. The item is immediately usable in any of the caller's own projects with no review, and invisible to every other user: it is not merely hidden from the list, it is not readable, installable, or deletable by anyone else. The status is always `private`; publishing is a separate review flow and this route deliberately does not offer it.
Saves a file set as a private catalog item owned by the caller — the "My snippets" path. The item is immediately usable in any of the caller's own projects with no review, and invisible to every other user: it is not merely hidden from the list, it is not readable, installable, or deletable by anyone else. The status is always private; publishing is a separate review flow and this route deliberately does not offer it.
Request Body
application/json
The snippet to save. files carries the file set; the item installs those exact files.
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/catalog/items" \ -H "Content-Type: application/json" \ -d '{ "kind": "template", "title": "string", "files": [ { "path": "string", "content": "string" } ] }'{ "id": "string", "kind": "template", "status": "official", "title": "string", "description": "string", "tags": [ "string" ], "installs": 0, "ownerId": "string", "version": "string", "usage": "string", "compatibleTemplates": [ "string" ], "dependencies": [ "string" ], "registryDependencies": [ "string" ], "files": [ { "path": "string", "content": "string" } ], "reviewNote": "string", "createdAt": "string", "updatedAt": "string", "versions": [ { "version": "string", "manifest": null, "registry": null, "reviewNote": "string", "createdAt": "string" } ]}Search the catalog GET
Returns the catalog items the caller may see: every public item (`official` or `community`), plus the caller's own `private` items. Filters — `kind`, `templateId`, `tag`, `q` — AND together. Results are ordered by install count, then by recency. There is no `status` filter, because visibility is not something a caller chooses: a private item is invisible to everyone but its owner whatever they ask for.
Read a catalog item GET
Returns one item with every published version. A private item owned by another user answers with the same 404 as an item that does not exist, so the response never confirms the existence of someone else's item.