# Use indicators as context

Keep reference periods, first capture dates and collection times separate.

## Discover a series

```curl
curl --fail-with-body --silent --show-error --max-time 30 "https://china-snapshot.com/api/series"
```

```python
import json
from urllib.request import Request, urlopen
request = Request('https://china-snapshot.com/api/series')
with urlopen(request, timeout=30) as response:
    data = json.load(response)
print(json.dumps(data, ensure_ascii=False))
```

```typescript
const response = await fetch("https://china-snapshot.com/api/series");
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
```

## Read releases

```curl
curl --fail-with-body --silent --show-error --max-time 30 "https://china-snapshot.com/api/datasets?dataset=indicators&mode=release&series=cpi-yoy&limit=5"
```

```python
import json
from urllib.request import Request, urlopen
request = Request('https://china-snapshot.com/api/datasets?dataset=indicators&mode=release&series=cpi-yoy&limit=5')
with urlopen(request, timeout=30) as response:
    data = json.load(response)
print(json.dumps(data, ensure_ascii=False))
```

```typescript
const response = await fetch("https://china-snapshot.com/api/datasets?dataset=indicators&mode=release&series=cpi-yoy&limit=5");
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
```

## Align the clocks
period is the economic reference period. collected_at is capture time in raw mode. release_date in release mode is the first-seen Beijing date, not the publisher's timestamp. first_seen_at and last_seen_at delimit retained capture history.

## Compare like with like
Use series_id, period and unit. Do not assume a repeated capture is a fresh release. revised is only meaningful for the release types where it is defined; null is not false. Adjacent policy, attention and market observations establish timing, not causation.
