Api Experiments Update

Stamp server-controlled fields at save time — never by mutating ``request.data``. DRF's contract: ``post()`` → ``create()`` → ``serializer.is_valid()`` → ``perform_create(serializer)`` → ``serializer.save(**kwargs)``. Server values belong in that final ``save(**kwargs)`` — they override ``validated_data``, never pass through client validation, and don't need to be *writable* serializer fields. The matching serializer field becomes ``read_only=True`` (or is dropped from ``fields``), shrinking — not widening — the mass-assignment surface, and the immutable-``QueryDict`` (multipart) failure mode of the old ``request.data[...] =`` pattern disappears. Declare the fields to stamp as ``field -> fn(view) -> value`` maps:: class ExperimentV2sView(ServerStampedFieldsMixin, ...): create_stamped_fields = {"created_by": stamp_request_user_id} # + serializer: created_by = ...(read_only=True) FK columns: when the stamped value is an ``int`` and the field names a relation on the serializer's ``Meta.model``, the kwarg is rewritten to ``<field>_id`` so ``Model.objects.create`` accepts it (a raw ``int`` on the FK attribute itself would raise). Non-relation fields (``scorer`` = email) and instance values pass through unchanged. Cooperative composition: subclasses that need to stamp *additional* server values (e.g. ``OrganizationInjectionMixin`` stamping org/project) override ``get_create_save_kwargs`` / ``get_update_save_kwargs`` and merge onto ``super()`` — yielding exactly ONE ``serializer.save()`` per request (calling ``save()`` twice would re-run create/update side effects).

Authentication

AuthorizationBearer
JWT access token or Respan API key

Path parameters

idstringRequired

Request

This endpoint expects an object.
namestringRequired1-100 characters
organizationintegerRequired
idstringOptional1-100 characters
column_countintegerOptional-2147483648-2147483647
columnslist of anyOptional
created_atdatetimeOptional
row_countintegerOptional-2147483648-2147483647
rowslist of anyOptional
statusstringOptional<=100 characters
test_idstringOptional<=100 characters
updated_atdatetimeOptional
variableslist of stringsOptional
variable_definitionslist of anyOptional
starredbooleanOptional
projectstring or nullOptional>=1 character
tagslist of stringsOptional

Response

updaterstringRead-only
namestring<=100 characters
created_byintegerRead-only
organizationinteger
updated_byinteger or nullRead-only
idstring<=100 characters
column_countinteger-2147483648-2147483647
columnslist of any
created_atdatetime
row_countinteger-2147483648-2147483647
rowslist of any
statusstring<=100 characters
test_idstring<=100 characters
updated_atdatetime
variableslist of strings
variable_definitionslist of any
starredboolean
projectstring or null
tagslist of strings