From adfdde07bb2b1e532f9864ab8cf8085ce2267c60 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Wed, 4 Sep 2024 08:30:08 -0400 Subject: [PATCH] ../assets/{asset_id}/ PUT: clarify that new asset is created "Update" implies inplace operations which is not the case here: if metadata is different, we get a new asset returned, hence there is really no "update" to an existing asset, but rather CoW style of operation on an asset upon change. --- dandiapi/api/views/asset.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dandiapi/api/views/asset.py b/dandiapi/api/views/asset.py index 814c98dea..ef335c16c 100644 --- a/dandiapi/api/views/asset.py +++ b/dandiapi/api/views/asset.py @@ -354,15 +354,16 @@ def create(self, request, versions__dandiset__pk, versions__version): request_body=AssetRequestSerializer, responses={200: AssetDetailSerializer}, manual_parameters=[VERSIONS_DANDISET_PK_PARAM, VERSIONS_VERSION_PARAM], - operation_summary='Update the metadata of an asset.', + operation_summary='Create an asset with updated metadata.', operation_description='User must be an owner of the associated dandiset.\ - Only draft versions can be modified.', + Only draft versions can be modified.\ + Old asset is returned if no updates to metadata are made.', ) @method_decorator( permission_required_or_403('owner', (Dandiset, 'pk', 'versions__dandiset__pk')) ) def update(self, request, versions__dandiset__pk, versions__version, **kwargs): - """Update the metadata of an asset.""" + """Create an asset with updated metadata.""" version: Version = get_object_or_404( Version.objects.select_related('dandiset'), dandiset__pk=versions__dandiset__pk,