Metadata-Version: 2.1
Name: studipy
Version: 0.2.5
Summary: studip python api using JSONAPI
Home-page: https://github.com/FrederikRichter/studipy
License: MIT
Author: Frederik Richter
Requires-Python: >=3.12,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: pip (>=24.2,<25.0)
Requires-Dist: pydantic (>=2.7.4,<3.0.0)
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
Requires-Dist: requests (>=2.31.0,<3.0.0)
Project-URL: Repository, https://github.com/FrederikRichter/studipy
Description-Content-Type: text/markdown

[![PyPI Downloads](https://img.shields.io/pypi/dm/studipy.svg?label=PyPI%20downloads)](
https://pypi.org/project/studipy/)

# studipy - StudIP python API
StudIP Python API wrapper using StudIPs JSONAPI

Easy to use and strongly typed

# INSTALLATION
```
pip install --upgrade studipy
```

## From source
```
poetry build
pip install dist/....
```

# Usage - Example
```python
import studipy
import os
from dotenv import load_dotenv

load_dotenv()

username = os.getenv("STUDIP_LOGINNAME")
password = os.getenv("STUDIP_LOGINSECRET")
base_url = os.getenv("STUDIP_BASEURL")

# create a new client object
client = studipy.Client(username=username, password=password, base_url=base_url)

# get a list of Course objects (specified in types.py)
courses = client.Courses.get_courses()
for c in courses:
        print(c.title)
```

# Roadmap

## Authentication
- [x] Basic (Username, Password)
- [ ] Oauth

## Users
- [x] Get Users
- [x] Get Self
- [x] Search for Users

## Messages
- [x] Get Messages
- [x] Send Messages
- [x] Delete Messages
- [x] Mark Messages Read/Unread

## Files and Folders
- [x] Get Course Folders
- [x] Get Subfolders
- [x] Get Files in Folder
- [x] Upload Files
- [x] Delete Files
- [x] Change File Metadata
- [x] Change File Content
- [x] Download Files
- [x] Create Folders
- [x] Delete Folders
- [x] Mark files read
- [x] Move Folders/Files
- [ ] Copy Folders/Files (STALE)

## Calendar/Schedule
- [ ] View Calendar
- [x] Download Calendar ics
- [x] Get Schedule for current Semester
- [ ] Edit Calendar

## Plugins
You will have to implement custom plugins yourself. They might have registered JSONAPI routes, good luck

## Documentation
- [ ] Write Documentation
- [ ] Extend Examples

<table>
  <tr>
    <td><a href="https://www.paypal.me/FrederikRichter/"><img width="256" src="coffee.png" /><p align="center">Buy me a Coffee!</p></a></td>
  </tr>
</table>

