bymundi API

Update a catalog entry

PATCH/v1/catalog/entities/{entityId}

Edits a catalog entry, as the Catalog's drawer does. Send only what changes: content MERGES into the entry's (an absent field stays; send the empty value — "", [] or null where allowed — to clear one). images REPLACES the list: send it to reorder, re-describe (alt) or remove photos, or to attach an image uploaded through this API (by assetId); it cannot add an external URL. Move the entry in the tree with content.partOf. The kind never changes. Pass the updatedAt you read, exactly as you read it, as expectedUpdatedAt to refuse a stale write with a 409. Undo with POST /changes/{changeId}/revert.

content fields by kind — use exactly these names; an unknown field is refused. text fields accept plain text (one paragraph per line). partOf is the parent entry's id: a punto hangs from a destino; nothing hangs from a punto. Every kind also takes: category: string, features: string[], altNames: string[], estado: borrador|migrado|revisado|publicado|obsoleto, verifiedAt: string (pattern)|null, source: string, reviewNotes: string.

Permissions: catalog:write · Kind: write · Cost: 1 unit · MCP tool update_catalog_entity

Undoable: the response carries Bymundi-Change-Id; revert it with POST /v1/changes/{changeId}/revert.

Path parameters

Field Type Required Description
entityId uuid yes

Body

Field Type Required Description
name string max 200 chars
placeId string The Google place id. Required for alojamiento. max 300 chars
cityKey string A normalized city key; derived from the name when absent. max 200 chars
place object Where it is. The Google place id goes in placeId, not here.
place.lat number | null
place.lng number | null
place.formattedAddress string max 500 chars
content object The kind's own fields — see the list in the description.
tags string[] Lowercased and de-duplicated; at most 12. max 12 items
externalId string Your system's id for this entry (e.g. a supplier's product code). Unique among the agency's live entries; "" clears it. max 200 chars
images object[] The entry's whole photo list, in order. max 30 items
images[].assetId uuid An image of this entry, or one uploaded through this API.
images[].url string An image of this entry, by the url it already has. max 2000 chars
images[].alt string A description of the photo for screen readers. max 300 chars
expectedUpdatedAt datetime The entry's updatedAt as you read it.

Response 200

Field Type Required Description
object "catalog_entity" yes
id uuid yes
kind "destino" | "punto" | "alojamiento" | "actividad" | "servicio" yes
name string yes
placeId string yes
cityKey string yes
externalId string yes
place object yes
images object[] yes
tags string[] yes
origin "human" | "ai" | "api" | "import" yes
content object yes
updatedAt string yes
deletedAt string | null yes

Errors

Errors are problem details. Besides the refusals described above, any call like this one can return: