Update Place
POST/api/places/updateplace
Tier: Public — stable, supported for third-party integration.
Full-replace update of a place's basic fields, template, extended properties, and hierarchy position.
Full-replace semantics: Name, Description, ParentPlaceId, PlaceCode, ExternalRef, and Gln are explicitly overwritten; PlaceType, Channel, and CurrentItemCount are overwritten via AutoMapper convention mapping (verified live — all three round-trip). Fields omitted from the request are nulled/zeroed on the entity, not left unchanged. A template change re-syncs the place's extended properties to the new template's schema.
Changing ParentPlaceId triggers a tenant-wide nested-set rebuild (can take
several seconds on a large tenant) and raises a hierarchy-updated event that
asynchronously refreshes visibility caches for place-filtered users. Setting a place's
ParentPlaceId to itself or to any of its own descendants is rejected
(InvalidOperation) — walking the proposed parent chain upward, mirroring the
Category hierarchy's cycle check. An unknown ParentPlaceId is not otherwise
existence-checked and succeeds validation-wise the same way creation does (see
PlaceController.CreatePlace(...)).
Request
Responses
- 200
- 400
- 401
- 403
The updated place, freshly re-fetched. See Places.PlaceDetailDto.
Unknown id (NotFound/"place"); ParentPlaceId is the place itself or one of
its own descendants (InvalidOperation, "ParentPlaceId would create a cycle");
or the same validator family as PlaceController.CreatePlace(...) (duplicate name/PlaceCode
excluding self, invalid template, invalid
Enums.PlaceType/Enums.Channel,
invalid extended properties).
Caller is not authenticated.
Caller does not have Update permission on the Place module.