Skip to main content

PYTHON-MOLONI

Welcome to the Moloni API Client! This Python package provides a simple and flexible way to interact with the Moloni API. It supports a wide range of endpoints and allows you to manage your Moloni account programmatically.

Table of Contents

Features

  • Comprehensive Coverage: Supports all Moloni API endpoints.
  • Flexible Configuration: Easily configure and authenticate your requests.
  • Built-in Models: Utilize predefined Pydantic models for request validation.

Installation

You can install the Moloni API Client using pip:

pip install python-moloni

Documentation

Documentation is available here

Usage

Full Configuration

You can set up a fully configured client with all necessary authentication details:

from moloni.api.companies_client import CompaniesClient
from moloni.base import AuthConfig, MoloniBaseUrl
import logging

logger = logging.getLogger(__name__)

companies = CompaniesClient(
    environment=MoloniBaseUrl.PROD,
    auth_config=AuthConfig(
        client_id="your_client_id",
        client_secret="your_client_secret",
        username="your_username",  # Optional if refresh_token is set
        password="your_password",  # Optional if refresh_token is set
        refresh_token="your_refresh_token",  # Optional if username and password are set
    ),
    log_level="INFO",
    version="v1",
    validate=True,
)
logger.info(companies.get_all())

Models as Entrypoints

You can also use the predefined models as entrypoints to the API:

from moloni.api import CustomersGetBySearchModel
from moloni.base import AuthConfig, MoloniBaseUrl
from pprint import pprint

auth_config = AuthConfig(
    client_id="your_client_id",
    client_secret="your_client_secret",
    username="your_username",  # Optional if refresh_token is set
    password="your_password",  # Optional if refresh_token is set
    refresh_token="your_refresh_token",  # Optional if username and password are set
)

with CustomersGetBySearchModel(company_id=5, search="cafe").connect(
    auth_config=auth_config
) as api:
    pprint(api.request().payload)
    

Minimal Configuration

For a minimal setup, credentials can be passed via environment variables:

from moloni.api.companies_client import CompaniesClient
from moloni.api.products_client import ProductsClient, ProductsGetAllModel
import logging 

logger = logging.getLogger(__name__)

companies = CompaniesClient()
logger.info(companies.get_all())
products = ProductsClient()
logger.info(products.get_all(dict(company_id=5, category_id=8231525)))

product = products.insert(
    dict(
        company_id=5,
        category_id=123456,
        unit_id=134568,
        has_stock="0",
        name="Name",
        reference="Reference",
        price="10",
        type="1",
        taxes=[{"tax_id": 123455, "order": 0, "cumulative": 0}],
    )
)

#  or with a model

products_response = products.get_all(
    ProductsGetAllModel(company_id=5, category_id=8231525)
)

Credentials

Passing Credentials

You can pass your credentials directly in the code or via environment variables:

from moloni.base import AuthConfig

auth_config = AuthConfig(
    client_id='your_client_id',
    client_secret='your_client_secret',
    username='your_username',
    password='your_password',
    refresh_token='your_refresh_token'
)

Environment Variables

Alternatively, set the following environment variables:

export MOLONI_CLIENT_ID="your_client_id"
export MOLONI_CLIENT_SECRET="your_client_secret"
export MOLONI_REFRESH_TOKEN="your_refresh_token"
export MOLONI_USERNAME="your_username"
export MOLONI_PASSWORD="your_password"

API Response Handling

The API responses are encapsulated in an ApiResponse object, which provides methods to access the response payload and handle pagination.

Example:

response = companies.get_all()
print(response.payload)  # Access the JSON payload
print(response.status_code)  # Check the HTTP status code

try:
    next_page = response.next(qty=10)
    print("Fetching next page with:", next_page)
except NoMoreRecords:
    print("No more records to fetch.")

Supported Endpoints

This client supports the full list of Moloni API endpoints, including:

•	BankaccountsClient
•	BillsofladingClient
•	CompaniesClient
•	CustomersClient
•	InvoicesClient
•	ProductsClient
•	WarehousesClient

For a full list, please refer to the documentation.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Coverage


Disclaimer

We are not affiliated with Moloni, this is an unofficial wrapper to access their API. For more information, please visit their official website.

Metadata

Release files for python-moloni 0.3.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-moloni 0.3.15
File Size Uploaded
python-moloni-0.3.15.tar.gz 45.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-moloni 0.3.15
File Interpreter ABI Platform
python_moloni-0.3.15-py3-none-any.whl Python 3 none any Details

Total release size: 136.5 kB

Release files / python-moloni-0.3.15.tar.gz

Download URL python-moloni-0.3.15.tar.gz
Size 45.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e2cd150359d933909a82efd914d1fa52960c1c8c10ca696aa4c35456e9fe10d1
BLAKE2b-256 checksum
How to use checksums
404933916675eebb592898f047758b99ffa6621ea3cdc54664f9319fb541ae48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / python_moloni-0.3.15-py3-none-any.whl

Download URL python_moloni-0.3.15-py3-none-any.whl
Size 91.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f12ff2c3164c7e648e4cf3fc26a5eeebb0a3a3386868e94eb3c97ca1a42da9b
BLAKE2b-256 checksum
How to use checksums
4aa6ae0ca33a88ca98ecb8c673818495cabdbe60e864a9b0160e79d905ced319
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release history Release notifications | RSS feed

This release

0.3.15 This release

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.9

2 release files

0.1.5

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page