{
    "API": "SNS Invoice Management API",
    "Version": "1.0.0",
    "LastUpdate": "2025-12-06",
    "Author": "SNS SOLUTIONS <contact@snsolutions.fr>",
    "Documentation": "https://invoiceapi.snsolutions.fr/swagger",
    "Disclaimer": "Ceci est une documentation succincte de l'API, veuillez utiliser le Swagger API pour en savoir plus... (lien ci-dessus | Authentification nécessaire).",
    "Authentication": "Basic HTTP Auth => Identifiants retournés par le endpoint /login après validation des identifiants utilisateur.",
    "entryPoints": {
        "login": {
            "post": [
                {
                    "url": "/login",
                    "body": {
                        "LoginUser": "Adresse mail",
                        "PwdUser": "Mot de passe"
                    },
                    "returns": "Les infos de l'utilisateur connecté avec les identifiants d'API (Basic HTTP à utiliser dans les headers de vos requêtes)"
                },
                {
                    "url": "/login/:id",
                    "authorization": "Basic",
                    "params": {
                        "id": "ID de l'utilisateur à vérifier"
                    },
                    "body": {
                        "LoginUser": "Adresse mail",
                        "idUser": "ID de l'utilisateur à vérifier"
                    },
                    "returns": "Les infos de l'utilisateur vérifié"
                }
            ]
        },
        "invoices": {
            "get": [
                {
                    "url": "/invoices",
                    "authorization": "Basic",
                    "query": {
                        "filterName": "FilterValue",
                        "filters": "One of (`idInvoices`, `fileInvoices`, `originInvoices`, `idLogsInvoices`, `createdInvoices`, `activeInvoices`)",
                        "obligatoire": false
                    },
                    "returns": "Liste des invoices correspondant au filtre"
                },
                {
                    "url": "/invoices/:id",
                    "authorization": "Basic",
                    "params": {
                        "id": "ID de l'invoice voulu",
                        "obligatoire": true
                    },
                    "query": {
                        "details": "[set|unset] => Inclure les détails de l'invoice (logs), obtenir les données associées à la création de l'invoice (ex: retour de l'API OVH Cloud ou email reçu...). Considéré comme true si présent.",
                        "obligatoire": false
                    },
                    "returns": "Informations de l'invoice demandée"
                }
            ],
            "post": [
                {
                    "url": "/invoices",
                    "authorization": "Basic",
                    "body": {
                        "invoice_file": "Fichier de la facture (PDF, JPG, PNG, DOCX, etc.)",
                        "originInvoices": "Origine de la facture",
                        "activeInvoices": [
                            0,
                            1
                        ]
                    },
                    "returns": "Les infos de l'invoice créée"
                }
            ],
            "put": [
                {
                    "url": "/invoices/:id",
                    "authorization": "Basic",
                    "params": {
                        "id": "Id de l'invoice à modifier"
                    },
                    "body": {
                        "originInvoices": "Origine de la facture",
                        "activeInvoices": [
                            0,
                            1
                        ]
                    },
                    "returns": "Les infos de l'invoice modifiée"
                }
            ],
            "delete": [
                {
                    "url": "/invoices/:id",
                    "authorization": "Basic",
                    "params": {
                        "id": "Id de l'invoice à supprimer"
                    },
                    "returns": "Les infos de l'invoice supprimée"
                }
            ]
        }
    },
    "cronTasks": {
        "mailBoxCollector": {
            "description": "Collecte les emails dans la boîte mail configurée puis enregistre les pièces jointes PDF dans le dossier des factures et log en base de données.",
            "schedule": "Toutes les 15 minutes (*/15 * * * *)",
            "enabled": true
        },
        "ovhCloudCollector": {
            "description": "Collecte les factures OVH Cloud via l'API OVH puis les enregistre les PDF dans le dossier et log en base de données.",
            "schedule": "Tous les jours à 2h du matin",
            "enabled": false
        }
    }
}