# sevDesk API Client (Inoffiziell)
Ein Python-Client für die sevDesk API, automatisch generiert aus der OpenAPI-Spezifikation. Dies ist notwendig, da sich die sevdesk-Spezifikation mit dem Standard OpenApi-Generator nicht parsen lässt.
## ⚠️ Wichtige Hinweise
- **Dies ist KEINE offizielle sevDesk Library**
- Ich arbeite nicht für sevDesk und bin nicht mit sevDesk verbunden
- **Nutzung auf eigene Gefahr**
- Keine Garantie für Funktionalität oder Vollständigkeit
- Bei Problemen mit Markenrechten oder dem Library-Namen kontaktieren Sie mich bitte
- Falls sich offizielle Vertreter von sevDesk am Namen der Library stören, bin ich bereit, diesen zu übertragen oder die Library unter einem anderen Namen zu veröffentlichen
## Installation
```bash
pip install sevdesk
```
## Anforderungen
- Python 3.8+
- pydantic
- requests
- pyyaml
- jinja2
## Verwendung
### Client initialisieren
```python
from sevdesk import Client
# API Token von sevDesk Dashboard holen
client = Client('your-api-token-here')
```
### Kontakte abrufen
```python
# Alle Kontakte abrufen
contacts = client.contact.getContacts()
for contact in contacts:
print(f"ID: {contact.id_}")
print(f"Name: {contact.name or f'{contact.surename} {contact.familyname}'}")
print(f"Kundennummer: {contact.customerNumber}")
print(f"Status: {contact.status}")
print("-" * 40)
```
### Neuen Kontakt erstellen
```python
from sevdesk.models.contact import Contact
from sevdesk.converters.category import Category
# Organisation erstellen
company = Contact(
name="Acme Corporation GmbH",
category=Category(id_=3, objectName="Category")
)
new_company = client.contact.createContact(body=company)
print(f"Organisation erstellt mit ID: {new_company.id_}")
# Person erstellen
person = Contact(
surename="Max",
familyname="Mustermann",
gender="m",
category=Category(id_=3, objectName="Category")
)
new_person = client.contact.createContact(body=person)
print(f"Person erstellt mit ID: {new_person.id_}")
```
### Rechnungen abrufen
```python
# Alle Rechnungen abrufen
invoices = client.invoice.getInvoices()
for invoice in invoices:
print(f"Rechnungsnummer: {invoice.invoiceNumber}")
print(f"Datum: {invoice.invoiceDate}")
print(f"Betrag: {invoice.sumGross} {invoice.currency}")
print(f"Status: {invoice.status}")
print("-" * 40)
```
### Angebote abrufen
```python
# Alle Angebote abrufen
orders = client.order.getOrders()
for order in orders:
print(f"Angebotsnummer: {order.orderNumber}")
print(f"Datum: {order.orderDate}")
print(f"Betrag: {order.sumGross} {order.currency}")
print(f"Status: {order.status}")
print("-" * 40)
```
### Kontakt aktualisieren
```python
from sevdesk.models.contactupdate import ContactUpdate
# Kontakt aktualisieren
update_data = ContactUpdate(
name="Neue Firma GmbH"
)
updated = client.contact.updateContact(contactId=123456, body=update_data)
print(f"Kontakt aktualisiert: {updated.name}")
```
### Kontakt löschen
```python
# Kontakt löschen
client.contact.deleteContact(contactId=123456)
print("Kontakt gelöscht")
```
## Verfügbare Controller
Der Client lädt automatisch alle verfügbaren Controller aus der OpenAPI-Spezifikation:
- `client.contact` - Kontaktverwaltung
- `client.invoice` - Rechnungsverwaltung
- `client.order` - Angebotsverwaltung
- `client.voucher` - Belegverwaltung
- `client.part` - Artikelverwaltung
- ... und viele mehr
Alle Endpoints sind als Methoden verfügbar und vollständig typisiert für IDE-Unterstützung.
## Code neu generieren
Falls sich die sevDesk API ändert:
```bash
# Neue openapi.yaml herunterladen
# Dann Generator ausführen:
python -m generator
```
Dies generiert automatisch:
- Models in `sevdeskapi/models/`
- Converter in `sevdeskapi/converters/`
- Controller in `sevdeskapi/controllers/`
Das wird zeitnah über Github Actions abgebildet!
## Lizenz / Haftungsausschluss
MIT License - Siehe LICENSE Datei
Raw data
{
"_id": null,
"home_page": null,
"name": "sevdesk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "sevdesk, api, client, accounting",
"author": "Claude, ChatGPT, Copilot",
"author_email": "Maximilian Clemens <maximilian.clemens@gamma.red>",
"download_url": "https://files.pythonhosted.org/packages/a2/b5/4821d8b2742bcfa30a83afe8a9696f60682e19556f6386c499f40fde1656/sevdesk-0.1.3.tar.gz",
"platform": null,
"description": "# sevDesk API Client (Inoffiziell)\n\nEin Python-Client f\u00fcr die sevDesk API, automatisch generiert aus der OpenAPI-Spezifikation. Dies ist notwendig, da sich die sevdesk-Spezifikation mit dem Standard OpenApi-Generator nicht parsen l\u00e4sst.\n\n## \u26a0\ufe0f Wichtige Hinweise\n\n- **Dies ist KEINE offizielle sevDesk Library**\n- Ich arbeite nicht f\u00fcr sevDesk und bin nicht mit sevDesk verbunden\n- **Nutzung auf eigene Gefahr**\n- Keine Garantie f\u00fcr Funktionalit\u00e4t oder Vollst\u00e4ndigkeit\n- Bei Problemen mit Markenrechten oder dem Library-Namen kontaktieren Sie mich bitte\n- Falls sich offizielle Vertreter von sevDesk am Namen der Library st\u00f6ren, bin ich bereit, diesen zu \u00fcbertragen oder die Library unter einem anderen Namen zu ver\u00f6ffentlichen\n\n## Installation\n\n```bash\npip install sevdesk\n```\n\n## Anforderungen\n\n- Python 3.8+\n- pydantic\n- requests\n- pyyaml\n- jinja2\n\n## Verwendung\n\n### Client initialisieren\n\n```python\nfrom sevdesk import Client\n\n# API Token von sevDesk Dashboard holen\nclient = Client('your-api-token-here')\n```\n\n### Kontakte abrufen\n\n```python\n# Alle Kontakte abrufen\ncontacts = client.contact.getContacts()\n\nfor contact in contacts:\n print(f\"ID: {contact.id_}\")\n print(f\"Name: {contact.name or f'{contact.surename} {contact.familyname}'}\")\n print(f\"Kundennummer: {contact.customerNumber}\")\n print(f\"Status: {contact.status}\")\n print(\"-\" * 40)\n```\n\n### Neuen Kontakt erstellen\n\n```python\nfrom sevdesk.models.contact import Contact\nfrom sevdesk.converters.category import Category\n\n# Organisation erstellen\ncompany = Contact(\n name=\"Acme Corporation GmbH\",\n category=Category(id_=3, objectName=\"Category\")\n)\nnew_company = client.contact.createContact(body=company)\nprint(f\"Organisation erstellt mit ID: {new_company.id_}\")\n\n# Person erstellen\nperson = Contact(\n surename=\"Max\",\n familyname=\"Mustermann\",\n gender=\"m\",\n category=Category(id_=3, objectName=\"Category\")\n)\nnew_person = client.contact.createContact(body=person)\nprint(f\"Person erstellt mit ID: {new_person.id_}\")\n```\n\n### Rechnungen abrufen\n\n```python\n# Alle Rechnungen abrufen\ninvoices = client.invoice.getInvoices()\n\nfor invoice in invoices:\n print(f\"Rechnungsnummer: {invoice.invoiceNumber}\")\n print(f\"Datum: {invoice.invoiceDate}\")\n print(f\"Betrag: {invoice.sumGross} {invoice.currency}\")\n print(f\"Status: {invoice.status}\")\n print(\"-\" * 40)\n```\n\n### Angebote abrufen\n\n```python\n# Alle Angebote abrufen\norders = client.order.getOrders()\n\nfor order in orders:\n print(f\"Angebotsnummer: {order.orderNumber}\")\n print(f\"Datum: {order.orderDate}\")\n print(f\"Betrag: {order.sumGross} {order.currency}\")\n print(f\"Status: {order.status}\")\n print(\"-\" * 40)\n```\n\n### Kontakt aktualisieren\n\n```python\nfrom sevdesk.models.contactupdate import ContactUpdate\n\n# Kontakt aktualisieren\nupdate_data = ContactUpdate(\n name=\"Neue Firma GmbH\"\n)\nupdated = client.contact.updateContact(contactId=123456, body=update_data)\nprint(f\"Kontakt aktualisiert: {updated.name}\")\n```\n\n### Kontakt l\u00f6schen\n\n```python\n# Kontakt l\u00f6schen\nclient.contact.deleteContact(contactId=123456)\nprint(\"Kontakt gel\u00f6scht\")\n```\n\n## Verf\u00fcgbare Controller\n\nDer Client l\u00e4dt automatisch alle verf\u00fcgbaren Controller aus der OpenAPI-Spezifikation:\n\n- `client.contact` - Kontaktverwaltung\n- `client.invoice` - Rechnungsverwaltung\n- `client.order` - Angebotsverwaltung\n- `client.voucher` - Belegverwaltung\n- `client.part` - Artikelverwaltung\n- ... und viele mehr\n\nAlle Endpoints sind als Methoden verf\u00fcgbar und vollst\u00e4ndig typisiert f\u00fcr IDE-Unterst\u00fctzung.\n\n## Code neu generieren\n\nFalls sich die sevDesk API \u00e4ndert:\n\n```bash\n# Neue openapi.yaml herunterladen\n# Dann Generator ausf\u00fchren:\npython -m generator\n```\n\nDies generiert automatisch:\n- Models in `sevdeskapi/models/`\n- Converter in `sevdeskapi/converters/`\n- Controller in `sevdeskapi/controllers/`\n\nDas wird zeitnah \u00fcber Github Actions abgebildet!\n\n## Lizenz / Haftungsausschluss\n\nMIT License - Siehe LICENSE Datei\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Python client for the sevDesk API, automatically generated from the OpenAPI specification",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/MaximilianClemens/python-sevdesk",
"Issues": "https://github.com/MaximilianClemens/python-sevdesk/issues",
"Repository": "https://github.com/MaximilianClemens/python-sevdesk"
},
"split_keywords": [
"sevdesk",
" api",
" client",
" accounting"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a2c759f72078f5795da56ac132efbafb756d1d68bf9c5a5bf045acc9139c8c35",
"md5": "8304c1026b54b824cac5fb60e2f2ebca",
"sha256": "892ef0af6e9b15211c3adc13def9d3add066e1e0ee09e30bb4e7ee72ab5b8ba9"
},
"downloads": -1,
"filename": "sevdesk-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8304c1026b54b824cac5fb60e2f2ebca",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 70858,
"upload_time": "2025-10-09T22:48:15",
"upload_time_iso_8601": "2025-10-09T22:48:15.655553Z",
"url": "https://files.pythonhosted.org/packages/a2/c7/59f72078f5795da56ac132efbafb756d1d68bf9c5a5bf045acc9139c8c35/sevdesk-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a2b54821d8b2742bcfa30a83afe8a9696f60682e19556f6386c499f40fde1656",
"md5": "f00760a733ccec6bd92e6c45c8baac98",
"sha256": "cfb19bab589060c7d35561057dc5d865e8d46928de5696249d3f492cffc1fdb8"
},
"downloads": -1,
"filename": "sevdesk-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "f00760a733ccec6bd92e6c45c8baac98",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 25595,
"upload_time": "2025-10-09T22:48:17",
"upload_time_iso_8601": "2025-10-09T22:48:17.187597Z",
"url": "https://files.pythonhosted.org/packages/a2/b5/4821d8b2742bcfa30a83afe8a9696f60682e19556f6386c499f40fde1656/sevdesk-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-09 22:48:17",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MaximilianClemens",
"github_project": "python-sevdesk",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "PyYAML",
"specs": []
},
{
"name": "jinja2",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "pydantic",
"specs": []
}
],
"lcname": "sevdesk"
}