Metadata-Version: 2.4
Name: qiita-v2-client
Version: 0.1.0
Summary: A typed Python wrapper for Qiita API v2
Keywords: qiita,api,wrapper,client
License-Expression: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Dist: requests>=2.31.0
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# pyqiita

[Qiita](http://qiita.com/) api v2 client for Python.

pyqiita provides a small typed wrapper around Qiita API v2. Responses are converted to dataclass models such as `User`, `Item`, `Comment`, and `Tag`.

## Installation

```bash
pip install qiita-v2-client
```

## Setup

Get your token from https://qiita.com/settings/tokens/new.

```python
from pyqiita import Qiita

qiita = Qiita(token="your access token")
```

You can also pass a custom endpoint, for example when using Qiita Team.

```python
qiita = Qiita(
    token="your access token",
    endpoint="https://your-team.qiita.com",
)
```

## Usage

```python
from pyqiita import APIError, Qiita

qiita = Qiita(token="your access token")

me = qiita.authenticated_user.get()
print(me.id, me.items_count)

page = qiita.items.list(query="tag:Python", per_page=10)
for item in page.items:
    print(item.title, item.url)

for item in qiita.items.iter(query="tag:Python", per_page=100):
    print(item.id)

try:
    user = qiita.users.get("qiita")
except APIError as exc:
    print(exc.status_code, exc.type, exc.message)
```

## Resources

- [Documentation](http://qiita.com/api/v2/docs)
- Token settings: https://qiita.com/settings/tokens/new

The client is organized by API resource.

```python
qiita.items.get(item_id)
qiita.items.create(title="...", body="...", tags=[{"name": "Python"}])
qiita.comments.get(comment_id)
qiita.comments.update(comment_id, body="...")
qiita.tags.get("Python")
qiita.tags.follow("Python")
qiita.users.get("qiita")
qiita.users.follow("user_id")
```

Available resource clients include:

- `access_tokens`
- `authenticated_user`
- `comments`
- `expanded_templates`
- `groups`
- `item_actions`
- `items`
- `posting_campaigns`
- `projects`
- `reactions`
- `tags`
- `team_access_tokens`
- `team_invitations`
- `teams`
- `templates`
- `users`

## Development

```bash
uv run pytest
uv build
```

## Samples

Example scripts are available in [samples](samples).

```bash
export QIITA_TOKEN="your access token"
uv run python samples/list_items.py
uv run python samples/authenticated_user.py
uv run python samples/search_users_and_tags.py
```

`samples/create_private_item.py` creates an actual private item on Qiita.

## License

MIT License. See [LICENSE](LICENSE).
