# Create Clean Room Asset Review

Launch stage: Beta

`POST /api/2.0/clean-rooms/{clean_room_name}/assets/{asset_type}/{name}/reviews`

Submit an asset review

API scopes: cleanrooms

## Path parameters

- `clean_room_name` (string, optional)
  Name of the clean room
- `name` (string, optional)
  Name of the asset
- `asset_type` (string, optional)
  Asset type. Can either be NOTEBOOK_FILE or JAR_ANALYSIS.
  Possible values: `ASSET_TYPE_UNSPECIFIED`, `TABLE`, `NOTEBOOK_FILE`, `VOLUME`, `VIEW`, `FOREIGN_TABLE`, `JAR_ANALYSIS`

## Request body

- `notebook_review` (object, required)
  - `etag` (string, optional)
    Etag identifying the notebook version
  - `review_state` (string, optional)
    Review outcome
    Possible values: `NOTEBOOK_REVIEW_STATE_UNSPECIFIED`, `APPROVED`, `REJECTED`, `PENDING`
  - `comment` (string, optional)
    Review comment
    Example: `Code looks wrong`
    Constraints: `<= 500 characters`
- `jar_analysis_review` (object, required)
  - `etag` (string, optional)
    Etag identifying the jar analysis version, with its value being a hash of an internally-generated UUID
  - `review_state` (string, optional)
    Review outcome
    Possible values: `JAR_ANALYSIS_REVIEW_STATE_UNSPECIFIED`, `APPROVED`, `REJECTED`, `PENDING`
  - `comment` (string, optional)
    Review comment
    Example: `Code looks wrong`
    Constraints: `<= 500 characters`

## Returns

- `notebook_reviews` (array of object, optional)
  All existing notebook approvals or rejections
  - `reviewer_collaborator_alias` (string, optional)
    Collaborator alias of the reviewer
  - `created_at_millis` (int64, optional)
    When the review was submitted, in epoch milliseconds
  - `review_state` (string, optional)
    Review outcome
    Possible values: `NOTEBOOK_REVIEW_STATE_UNSPECIFIED`, `APPROVED`, `REJECTED`, `PENDING`
  - `comment` (string, optional)
    Review comment
    Example: `Code looks wrong`
    Constraints: `<= 500 characters`
  - `review_sub_reason` (string, optional)
    Specified when the review was not explicitly made by a user
    Possible values: `NOTEBOOK_REVIEW_SUB_REASON_UNSPECIFIED`, `BACKFILLED`, `AUTO_APPROVED`
- `jar_analysis_reviews` (array of object, optional)
  All existing jar analysis approvals or rejections
  - `reviewer_collaborator_alias` (string, optional, Public Preview)
    collaborator alias of the reviewer
  - `created_at_millis` (int64, optional, Public Preview)
    timestamp of when the review was submitted
  - `review_state` (string, optional, Public Preview)
    review outcome
    Possible values: `JAR_ANALYSIS_REVIEW_STATE_UNSPECIFIED`, `APPROVED`, `REJECTED`, `PENDING`
  - `comment` (string, optional, Public Preview)
    review comment
    Example: `Not ready to run yet`
    Constraints: `<= 500 characters`
  - `review_sub_reason` (string, optional, Public Preview)
    specified when the review was not explicitly made by a user
    Possible values: `JAR_ANALYSIS_REVIEW_SUB_REASON_UNSPECIFIED`, `AUTO_APPROVED`
- `notebook_review_state` (string, required)
  Top-level status derived from all reviews
  Possible values: `NOTEBOOK_REVIEW_STATE_UNSPECIFIED`, `APPROVED`, `REJECTED`, `PENDING`
- `jar_analysis_review_state` (string, required)
  top-level status derived from all reviews
  Possible values: `JAR_ANALYSIS_REVIEW_STATE_UNSPECIFIED`, `APPROVED`, `REJECTED`, `PENDING`

## Response

```json
{
  "notebook_reviews": [
    {
      "reviewer_collaborator_alias": "string",
      "created_at_millis": 0,
      "review_state": "string",
      "comment": "Code looks wrong",
      "review_sub_reason": "string"
    }
  ],
  "jar_analysis_reviews": [
    {
      "reviewer_collaborator_alias": "string",
      "created_at_millis": 0,
      "review_state": "string",
      "comment": "Not ready to run yet",
      "review_sub_reason": "string"
    }
  ],
  "notebook_review_state": "string",
  "jar_analysis_review_state": "string"
}
```

