Metadata-Version: 2.1
Name: mydata-client
Version: 0.1.2
Summary: Python interface for IARP's myDATA service
License: MPL-2.0
Author: Alex Pyrgiotis
Author-email: apyrgio@gmail.com
Requires-Python: >=3.9,<4.0
Classifier: License :: OSI Approved
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: click (>=8.1.7,<9.0.0)
Requires-Dist: qrcode (>=7.4.2,<8.0.0)
Requires-Dist: requests (>=2.31.0,<3.0.0)
Requires-Dist: rich (>=13.7.0,<14.0.0)
Requires-Dist: xsdata (>=24.1,<25.0)
Description-Content-Type: text/markdown

[![Supported Python Versions](https://img.shields.io/pypi/pyversions/mydata-client)](https://pypi.org/project/mydata-client/)
[![PyPI version](https://badge.fury.io/py/mydata-client.svg)](https://badge.fury.io/py/mydata-client)

# CLI / HTTP client for myDATA

This project allows users to interact with [myDATA](https://www.aade.gr/en/mydata)
("my Digital Accounting and Tax Application") either via a Python HTTP client or
from the CLI.

## Install

Install it with `pip`:

```
python -m pip install mydata-client
```

## Usage

> [!WARNING]
> The tool is not suitable yet for production use. We **strongly** suggest that
> you use it for experimenting only with the development sandbox that myDATA
> provides.

> [!NOTE]
> Oh, you may also find the docs a bit... lacking :grimacing:

If you want to interact programmatically with myDATA's API, you can use the HTTP
client under `mydata/client.py`. The Python dataclasses that bind to XML
documents can be found in the `mydata/models*` modules, depending on which
version of the API you want to use.

There is also a proof-of-concept CLI that you can use:

```
mydata --username <username> <command>
```

There are two command groups that you can invoke:

* The `api` command group, which is unopinionated and straight up hits the
  endpoint that you ask.
* The `invoice` command group, which is heavily opinionated and adds some helper
  commands to work with invoices. Basically, it's there to assist the list ->
  retrieve -> copy -> edit -> validate -> send lifecycle of an invoice.

## Building

Install [Poetry](https://python-poetry.org/). Then, install the project
dependencies:

```
poetry install
```

### Adding new XSD schemas

Whenever there's an API update, myDATA devs include the XML schemas for the
latest API. You can include them in the project as follows:

* Add the XML schemas under `schemas/<version>` dir. For example, for the 1.0.8
  XSDs, we added them with:

  ```
  cp -r '/path/to/version v1.0.8 XSDs' schemas/1.0.8
  ```

* Generate Python classes from the new XSDs. For example, for the 1.0.8 XSDs, we
  generated Python classes with:


  ```
  poetry run xsdata -ss single-package -ds Google -r schemas/1.0.8/ -p mydata.models_v1_0_8
  ```

* Generate Markdown documentation from the generated Python classes with:

  ```
  poetry run pydoc-markdown -m mydata.models_v1_0_8 --render-toc > docs/models_v1_0_8.md
  ```

## License

Licensed under MPL-2.0. Please read the [`NOTICE.md`](NOTICE.md) and
[`LICENSE`](LICENSE) files for the full copyright and license information.

## Useful links

* [myDATA REST API documentation](https://www.aade.gr/epiheiriseis/mydata-ilektronika-biblia-aade/mydata/tehnikes-prodiagrafes-ekdoseis-mydata)
* [myDATA developer sandbox](https://www.aade.gr/epiheiriseis/mydata-ilektronika-biblia-aade/mydata/dokimastiko-periballon)

