## Update or restore a rubric

`rubrics.update(strrubric_id, RubricUpdateParams**kwargs)  -> RubricResponse`

**patch** `/v5/rubrics/{rubric_id}`

Update a rubric's fields, or restore a previously archived rubric.

The request body is a discriminated union. Send `{"restore": true}` to restore
an archived rubric (clearing its archived state); send any other field set
(such as `title` or `tags`) to update those fields, carrying forward any field
not supplied. Both paths are append-only and produce a new version of the
rubric rather than mutating the existing row. Updating the fields of an
archived rubric is rejected — restore it first. Restoring a rubric that is not
archived is a no-op that returns it unchanged without creating a new version.

### Parameters

- `rubric_id: str`

- `rubric: Rubric`

  - `class RubricPartialRubricRequestBase: …`

    - `tags: Optional[Sequence[str]]`

      The tags associated with the entity

    - `title: Optional[str]`

      The rubric title

  - `class RestoreRequest: …`

    - `restore: Literal[true]`

      Set to true to restore the entity from the database.

      - `true`

### Returns

- `class RubricResponse: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by: Identity`

    The identity that created the entity.

    - `id: str`

    - `type: Literal["user", "service_account"]`

      - `"user"`

      - `"service_account"`

    - `object: Optional[Literal["identity"]]`

      - `"identity"`

  - `tags: Optional[List[str]]`

    The tags associated with the entity

  - `title: str`

  - `version: int`

  - `archived_at: Optional[datetime]`

  - `criteria: Optional[List[Criterion]]`

    Full criteria on get, summary (title + weight) on list

    - `class RubricCriteriaResponse: …`

      - `id: str`

      - `created_at: datetime`

      - `rubric_id: str`

      - `title: str`

      - `version: int`

      - `annotations: Optional[Dict[str, object]]`

      - `object: Optional[Literal["rubric_criteria"]]`

        - `"rubric_criteria"`

      - `weight: Optional[float]`

    - `class RubricCriteriaSummaryResponse: …`

      Slim criteria projection for list endpoints (title + weight only).

      - `title: str`

      - `weight: Optional[float]`

  - `object: Optional[Literal["rubric"]]`

    - `"rubric"`

  - `updated_at: Optional[datetime]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
rubric_response = client.rubrics.update(
    rubric_id="rubric_id",
    rubric={},
)
print(rubric_response.id)
```

#### Response

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "tags": [
    "string"
  ],
  "title": "title",
  "version": 0,
  "archived_at": "2019-12-27T18:11:19.117Z",
  "criteria": [
    {
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "rubric_id": "rubric_id",
      "title": "title",
      "version": 0,
      "annotations": {
        "foo": "bar"
      },
      "object": "rubric_criteria",
      "weight": 0
    }
  ],
  "object": "rubric",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```
