Skip to main content

Official Moncreneau API client for Python

Project description

Moncreneau Python SDK

Official Moncreneau API client for Python.

PyPI version Python versions License: MIT

Installation

pip install moncreneau

Quick Start

from moncreneau import Moncreneau

client = Moncreneau('mk_live_YOUR_API_KEY')

# Create an appointment
appointment = client.appointments.create(
    department_id=5,  # Integer: ID du département
    date_time='2026-01-20T10:00:00',
    name='Jean Dupont'  # Nom du bénéficiaire
)

print(appointment['id'])  # 123

Documentation

Full documentation available at: https://moncreneau-docs.vercel.app/docs/v1/sdks/python

Features

  • ✅ Full type hints support
  • ✅ Automatic error handling
  • ✅ Webhook signature verification
  • ✅ Comprehensive documentation
  • ✅ Python 3.7+ support

Usage

Configuration

client = Moncreneau(
    api_key='mk_live_...',
    base_url='https://mc-prd.duckdns.org/api/v1',  # optional
    timeout=30  # optional, in seconds
)

Appointments

# Create
appointment = client.appointments.create(
    department_id=5,  # Integer: ID du département
    date_time='2026-01-20T10:00:00',
    name='Jean Dupont'  # Nom du bénéficiaire
)

# List
appointments = client.appointments.list(
    page=0,
    size=20,
    status='SCHEDULED'
)

# Retrieve
appointment = client.appointments.retrieve('appt_abc123')

# Cancel
client.appointments.cancel('appt_abc123')

Departments

# List departments
departments = client.departments.list()

# Get availability
availability = client.departments.get_availability(
    'dept_123',
    start_date='2026-01-20',
    end_date='2026-01-27'
)

Error Handling

from moncreneau import Moncreneau, MoncreneauError

try:
    appointment = client.appointments.create(...)
except MoncreneauError as error:
    print(f'Code: {error.code}')
    print(f'Message: {error.message}')
    print(f'Status: {error.status_code}')
    print(f'Details: {error.details}')

Webhooks

from moncreneau import Moncreneau

# In your Flask/Django/FastAPI endpoint
@app.route('/webhooks/moncreneau', methods=['POST'])
def webhook():
    signature = request.headers.get('X-Webhook-Signature')
    
    is_valid = Moncreneau.verify_webhook_signature(
        request.json,
        signature,
        os.getenv('WEBHOOK_SECRET')
    )
    
    if not is_valid:
        return 'Invalid signature', 401
    
    # Process webhook
    event = request.json
    print(f"Event type: {event['type']}")
    
    return 'OK', 200

Examples

Flask Application

from flask import Flask, request, jsonify
from moncreneau import Moncreneau, MoncreneauError
import os

app = Flask(__name__)
client = Moncreneau(os.getenv('MONCRENEAU_API_KEY'))

@app.route('/appointments', methods=['POST'])
def create_appointment():
    try:
        appointment = client.appointments.create(
            department_id=request.json['departmentId'],
            date_time=request.json['dateTime'],
            user_name=request.json['userName'],
            user_phone=request.json['userPhone']
        )
        return jsonify(appointment)
    except MoncreneauError as error:
        return jsonify({
            'error': error.code,
            'message': error.message
        }), error.status_code

Django View

from django.http import JsonResponse
from moncreneau import Moncreneau, MoncreneauError
import json
import os

client = Moncreneau(os.getenv('MONCRENEAU_API_KEY'))

def create_appointment(request):
    try:
        data = json.loads(request.body)
        appointment = client.appointments.create(
            department_id=data['departmentId'],
            date_time=data['dateTime'],
            user_name=data['userName'],
            user_phone=data['userPhone']
        )
        return JsonResponse(appointment)
    except MoncreneauError as error:
        return JsonResponse({
            'error': error.code,
            'message': error.message
        }, status=error.status_code)

Support

License

MIT © Moncreneau

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moncreneau-2.0.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moncreneau-2.0.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file moncreneau-2.0.0.tar.gz.

File metadata

  • Download URL: moncreneau-2.0.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for moncreneau-2.0.0.tar.gz
Algorithm Hash digest
SHA256 d88c2899ab92f713f7e12a7a3ba90434e2ddb1cd238ff9c48244c6f83bcc8106
MD5 a2626065c8feda6015c6afb01ff9e360
BLAKE2b-256 5ee82cf48b52291154c16dcce6a49eafbc56538d96ca49bb779510e41eb11751

See more details on using hashes here.

File details

Details for the file moncreneau-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: moncreneau-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for moncreneau-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4e4cd47f392c4bacba9d52b0098c03b4436e02cc3d99ed54c3a60a671453c6e
MD5 bdee8b6fe7a6e345821123df026e9acd
BLAKE2b-256 0f289c3d049e4b9220f7771d47a0c6d61fc60a83793485f6f9f71ed692889fb6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page