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.
- 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.
You can install the Moloni API Client using pip:
pip install python-moloniDocumentation is available here
You can set up a fully configured client with all necessary authentication details:
frommoloni.api.companies_clientimportCompaniesClientfrommoloni.baseimportAuthConfig, MoloniBaseUrlimportlogginglogger=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 setpassword="your_password", # Optional if refresh_token is setrefresh_token="your_refresh_token", # Optional if username and password are set
),
log_level="INFO",
version="v1",
validate=True,
)
logger.info(companies.get_all())You can also use the predefined models as entrypoints to the API:
frommoloni.apiimportCustomersGetBySearchModelfrommoloni.baseimportAuthConfig, MoloniBaseUrlfrompprintimportpprintauth_config=AuthConfig(
client_id="your_client_id",
client_secret="your_client_secret",
username="your_username", # Optional if refresh_token is setpassword="your_password", # Optional if refresh_token is setrefresh_token="your_refresh_token", # Optional if username and password are set
)
withCustomersGetBySearchModel(company_id=5, search="cafe").connect(
auth_config=auth_config
) asapi:
pprint(api.request().payload)
For a minimal setup, credentials can be passed via environment variables:
frommoloni.api.companies_clientimportCompaniesClientfrommoloni.api.products_clientimportProductsClient, ProductsGetAllModelimportlogginglogger=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 modelproducts_response=products.get_all(
ProductsGetAllModel(company_id=5, category_id=8231525)
)You can pass your credentials directly in the code or via environment variables:
frommoloni.baseimportAuthConfigauth_config=AuthConfig(
client_id='your_client_id',
client_secret='your_client_secret',
username='your_username',
password='your_password',
refresh_token='your_refresh_token'
)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"The API responses are encapsulated in an ApiResponse object, which provides methods to access the response payload and handle pagination.
response=companies.get_all()
print(response.payload) # Access the JSON payloadprint(response.status_code) # Check the HTTP status codetry:
next_page=response.next(qty=10)
print("Fetching next page with:", next_page)
exceptNoMoreRecords:
print("No more records to fetch.")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.
This project is licensed under the MIT License. See the LICENSE file for details.
We are not affiliated with Moloni, this is an unofficial wrapper to access their API. For more information, please visit their official website.