The ModelVersion APIs improperly document the S3 URLs
The API documentation for ListModelVersions, CreateModelVersion and RetrieveModelVersion are misleading. All three endpoints make different statements on how s3_put_url and s3_url are set. In particular, CreateModelVersion states that s3_put_url is always null, then says that the response contains an S3 URL to upload the model version. Do you just upload to /dev/null?
From reading the code, it seems that on all ModelVersion endpoints, s3_put_url and s3_url are both returned only when the user has contributor access on the model. s3_put_url is set only when the model is not available, and s3_url is set only when the model is available. We can document this on the serializer fields directly instead of the operation descriptions.