API Abonnements

Cet objet représente les abonnements du site Le Temps.

Endpoints disponibles

Recherche d’abonnements
Détail d’un abonnement
Créer un abonnement
Modifier un abonnement
Mettre fin à un abonnement

Recherche d’abonnements

URL : https://www.letemps.ch/api/subscriptions
Type d’appel : GET

ParamètreTypeObligatoireCommentaireExemple
erp_idstringNonLTABO987654321
Exemple d'appel
https://www.letemps.ch/api/subscriptions?erp_id=LTABO987654321
⚠️
La recherche doit contenir ce paramètre, sinon elle renverra un message d’erreur

L’appel renvoie un statut 200 à partir du moment où elle s’effectue correctement, même s’il ne trouve pas de résultats. Il renvoie un statut 400 si aucun paramètre de recherche valable n’a été trouvé.
Si la requête est valable il renvoie également un tableau subscriptions contenant les objets trouvés, sinon il renvoie un code d’erreur.

Réponse correcte
{
    "subscriptions": [
        {
            "id": 654321,
            "erp_id": "LTABO987654321",
            "name": "Digital - Abonnement annuel",
            "code": "DIGITAL-ANNUEL",
            "start_date": "2024-01-01",
            "end_date": "2024-12-31",
            "user_id": 123456,
            "invoices": [
                {
                    "id": 567,
                    "code": "ADIGI240101",
                    "total": "120.0",
                    "creation_date": "2024-01-01",
                    "due_date": "2024-02-01",
                    "status": "paid",
                    "paid_amount": "120.0",
                    "remaining_amount": "0.0"
                }
            ]
        },
        {...}
    ]
}

ou

Réponse erronnée
{
    "code": "no_param"
}

Détail d’un abonnement

URL : https://www.letemps.ch/api/subscriptions/:id
Type d’appel : GET

ParamètreTypeObligatoireExemple
id (dans l’url directement)integerOui654321
Exemple d'appel
https://www.letemps.ch/api/subscriptions/654321

L’appel renvoie un statut 200 si l’abonnement a bien été trouvé, ou un statut 404 en cas d’échec.
Si l’abonnement a été trouvé il renvoie également un objet subscription, sinon il renvoie un code d’erreur.

Réponse correcte
{
    "subscription": {
        "id": 654321,
        "erp_id": "LTABO987654321",
        "name": "Digital - Abonnement annuel",
        "code": "DIGITAL-ANNUEL",
        "start_date": "2024-01-01",
        "end_date": "2024-12-31",
        "user_id": 123456,
        "invoices": [
            {
                "id": 567,
                "code": "ADIGI240101",
                "total": "120.0",
                "creation_date": "2024-01-01",
                "due_date": "2024-02-01",
                "status": "paid",
                "paid_amount": "120.0",
                "remaining_amount": "0.0"
            }
        ]
    }
}

ou

Réponse erronnée
{
    "code": "not_found"
}

Créer un abonnement

URL : https://www.letemps.ch/api/subscriptions
Type d’appel : POST

L’appel doit se faire en POST, et contenir un objet json subscription.
Cet objet doit/peut contenir les propriétés suivantes :

PropriétéTypeObligatoireExempleCommentaire
user_idintegerOui123456
contractstringOuiDIGITAL-ANNUELDoit correspondre à un code contrat disponible sur la plateforme
start_datestringOui01/01/2025
reseller_idintegerNon234567Votre id de revendeur
sponsorship_quantityintegerNon2
additional_print_quantityIntegerNon1
offerstringNonLT20ANSDoit correspondre à une offre valide sur la palteforme
Exemple d'appel : https://www.letemps.ch/api/subscriptions
{
    "subscription": {
        "user_id": 123456,
        "contract": "DIGITAL-ANNUEL",
        "start_date": "01/08/2025",
        "reseller_id": 234567,
        "sponsorship_quantity": 2,
        "additional_print_quantity": 1,
        "offer": ""
    }
}

L’appel renvoie un statut 200 si l’abonnement a bien été créé. Autrement il renvoie un statut d’erreur en cas d’échec.
Si l’abonnement a bien été créé il renvoie également un objet subscription, sinon il renvoie un code d’erreur et éventuellement des précisions sur l’erreur.

Réponse correcte
{
    {
        "subscription": {
            "id": 654321,
            "erp_id": null,
            "name": "Digital - Abonnement annuel",
            "code": "DIGITAL-ANNUEL",
            "start_date": "2025-08-01",
            "end_date": "2026-07-31",
            "user_id": 123456,
            "invoices": []
        }
  }
}

En cas de problème une de ces erreurs sera indiquée :

Code HTTPCode erreurExplicationCommentaire
400invalid_dataLes données envoyées sont incorrectes (mal formatées ?)
422no_user_id_providedAucun nœud user_id na été fourni
422user_not_foundAucun utilisateur ne correspond à l’id fourni
422contract_not_foundAucun contrat n’a été trouvé avec ce code
422reseller_not_foundUn identifiant de revendeur a été fourni mais ne correspond à aucun revendeur enregistré
422offer_not_foundUn code d’offre a été indiqué mais ne correspond à aucun revendeur enregistré
422not_processableUne erreur bloque la créationun second nœud details (Array) donnera des précisions sur la raison de l’erreur

Par exemple :

Exemple de réponse incorrecte
{
    "code": "not_processable",
    "details": [
        "start_date n'est pas valide"
    ]
}

Modifier un abonnement

URL : https://www.letemps.ch/api/subscriptions/:id
Type d’appel : PATCH

L’appel doit se faire en PATCH, et contenir un objet json subscription.
Cet objet peut contenir les propriétés suivantes :

PropriétéTypeObligatoireExempleCommentaire
end_datestringOui01/01/2026
Exemple d'appel : https://www.letemps.ch/api/subscriptions/654321
{
    "subscription": {
        "end_date": "01/01/2026"
    }
}

L’appel renvoie un statut 200 si l’abonnement a bien été modifié. Autrement il renvoie un statut d’erreur en cas d’échec.
Si l’abonnement a bien été modifié il renvoie également un objet subscription avec toutes les données à jour, sinon il renvoie un code d’erreur et éventuellement des précisions sur l’erreur.

Réponse correcte
{
    "subscription": {
        "id": 654321,
        "erp_id": null,
        "name": "Digital - Abonnement annuel",
        "code": "DIGITAL-ANNUEL",
        "start_date": "2025-08-01",
        "end_date": "2026-01-01",
        "user_id": 123456,
        "invoices": []
    }
}

En cas de problème une de ces erreurs sera indiquée :

Code HTTPCode erreurExplicationCommentaire
400invalid_dataLes données envoyées sont incorrectes (mal formatées ?)
404not_foundL’id de l’abonnement fourni n’a pas été trouvé
422not_processableUne erreur bloque la modificationun second nœud details (Array) donnera des précisions sur la raison de l’erreur

Par exemple :

Exemple de réponse incorrecte
{
    "code": "not_processable",
    "details": [
        "Date de fin n'est pas valide"
    ]
}

Mettre fin à un abonnement

URL : https://www.letemps.ch/api/subscriptions/:id/terminate
Type d’appel : PATCH

L’appel doit se faire en PATCH, et n’a besoin d’aucun paramètre supplémentaire.

L’appel renvoie un statut 200 si l’abonnement a bien été terminé. Autrement il renvoie un statut d’erreur en cas d’échec.
Si l’abonnement a bien été terminé il renvoie également un objet subscription avec toutes les données à jour, sinon il renvoie un code d’erreur et éventuellement des précisions sur l’erreur.

Réponse correcte
{
    "subscription": {
        "id": 654321,
        "erp_id": null,
        "name": "Digital - Abonnement annuel",
        "code": "DIGITAL-ANNUEL",
        "start_date": "2025-08-01",
        "end_date": "<DATE D'HIER>",
        "user_id": 123456,
        "invoices": []
    }
}

En cas de problème une de ces erreurs sera indiquée :

Code HTTPCode erreurExplicationCommentaire
400invalid_dataLes données envoyées sont incorrectes (mal formatées ?)
404not_foundL’id de l’abonnement fourni n’a pas été trouvé

Par exemple :

Exemple de réponse incorrecte
{
    "code": "not_found"
}