# Read a deal's lifecycle stage

One deal's CONTRACT and FUNDING tracks: each track's current state and the history of moves that got it there. Read it before asking for a move — `post_definitions_key_rows_rowId_contract` and `post_definitions_key_rows_rowId_funding` both refuse a move that is not legal from where the track stands. A deal id from another workspace is a 404, never an empty track. Deals page only.

Access class: `def:read`.

## Endpoint

`GET /v1/definitions/{key}/rows/{rowId}/lifecycle`

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| key | path | string | Yes |
| rowId | path | string | Yes |
| body | query | null | No |
| params | query | object | No |
| query | query | object | No |

## Responses

### 200

the action's answer

Content type: `application/json`.

```json
{
  "data": {
    "contract": {
      "history": [
        "string"
      ],
      "status": "string"
    },
    "funding": {
      "history": [
        "string"
      ],
      "status": "string"
    }
  }
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
