# Options

# Lister les options

Permet de récupérer la liste des options d'un programme.

# Requête HTTP

GET https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options

# Paramètres d'URL

Nom de la clé Description
{tenantKey} Clé de l'espace client - Détails
{programId} ID du programme

# Paramètres de requête

Nom du paramètre Description Exemple Format des données Valeur par défaut
page Numéro de la page à afficher 1 1
per_page Nombre d'enregistrements par page 20 50 Entre 1 et 100 50

Détails sur la pagination

# curl

curl --location --request GET 'https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options?page=1&per_page=50' \
    --header 'Accept: application/json' \
    --header 'X-API-Key: VOTRE_CLE_API'

# Body de réponse

DETAILS
{
    "success": true,
    "message": null,
    "data": [
        {
            "id": 2363,
            "lead_id": 72923,
            "owner": {
                "id": 1,
                "fullname": "Jean Dupont",
                "shortname": "J. Dupont",
                "email": "jean.dupont@promoteur.fr"
            },
            "status": "option",
            "option_lifespan": null,
            "estimated_availability": null,
            "expires_at": "2024-02-12T16:15:48.000000Z",
            "canceled_at": null,
            "vat_rate": 20,
            "price_including_vat": 221000,
            "contacts": [
                {
                    "id": 74895,
                    "lead_id": 72923,
                    "name": "Gilbert",
                    "firstname": "André",
                    "display_name": "André Gilbert",
                    "email1": null,
                    "email2": null,
                    "phone1": "+33600000000",
                    "phone2": null,
                    "legal_entity": false,
                    "company_name": null,
                    "legal_status": null,
                    "city": null,
                    "zipcode": null,
                    "created_at": "2024-02-12T15:48:53.000000Z",
                    "updated_at": "2024-02-12T15:48:53.000000Z",
                    "last_interaction_at": "2024-02-12T15:48:53.000000Z"
                }
            ],
            "lots": [
                {
                    "id": 872,
                    "reference": "10",
                    "type": "apartment",
                    "typology": "T2",
                    "subtype": null,
                    "vat_rate": 20,
                    "discount_including_vat": null,
                    "price_excluding_vat": 184166.67,
                    "price_including_vat": 221000,
                    "discounted_price_including_vat": 221000,
                    "status": "available",
                    "updated_at": "2024-02-12T16:12:43.000000Z"
                },
                {
                    "id": 1276,
                    "reference": "P46",
                    "type": "parking",
                    "typology": "underground",
                    "subtype": null,
                    "vat_rate": 20,
                    "discount_including_vat": 0,
                    "price_excluding_vat": 0,
                    "price_including_vat": 0,
                    "discounted_price_including_vat": 0,
                    "status": "available",
                    "updated_at": "2024-02-12T16:12:43.000000Z"
                }
            ]
        }
    ],
    "links": {
        "first": "https://api.adlead.immo/v1/client-a/programs/1/options?page=1",
        "last": "https://api.adlead.immo/v1/client-a/programs/1/options?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "https://api.adlead.immo/v1/client-a/programs/1/options?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "https://api.adlead.immo/v1/client-a/programs/1/options",
        "per_page": 50,
        "to": 1,
        "total": 1
    }
}

# Consulter la fiche d'une option

Permet de récupérer la fiche d'une option

# Requête HTTP

GET https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options/{optionId}

# Paramètres d'URL

Nom de la clé Description
{tenantKey} Clé de l'espace client - Détails
{programId} ID du programme
{optionId} ID de l'option

# curl

curl --location --request GET 'https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options/{optionId}' \
    --header 'Accept: application/json' \
    --header 'X-API-Key: VOTRE_CLE_API'

# Body de réponse

DETAILS
{
    "success": true,
    "message": null,
    "data": {
        "id": 2363,
        "lead_id": 72923,
        "owner": {
            "id": 1,
            "fullname": "Jean Dupont",
            "shortname": "J. Dupont",
            "email": "jean.dupont@promoteur.fr"
        },
        "status": "option",
        "option_lifespan": null,
        "estimated_availability": null,
        "expires_at": "2024-02-12T16:15:48.000000Z",
        "canceled_at": null,
        "vat_rate": 20,
        "price_including_vat": 221000,
        "contacts": [
            {
                "id": 74895,
                "lead_id": 72923,
                "name": "Gilbert",
                "firstname": "André",
                "display_name": "André Gilbert",
                "email1": null,
                "email2": null,
                "phone1": "+33600000000",
                "phone2": null,
                "legal_entity": false,
                "company_name": null,
                "legal_status": null,
                "city": null,
                "zipcode": null,
                "created_at": "2024-02-12T15:48:53.000000Z",
                "updated_at": "2024-02-12T15:48:53.000000Z",
                "last_interaction_at": "2024-02-12T15:48:53.000000Z"
            }
        ],
        "lots": [
            {
                "id": 872,
                "reference": "10",
                "type": "apartment",
                "typology": "T2",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 184166.67,
                "price_including_vat": 221000,
                "discounted_price_including_vat": 221000,
                "status": "available",
                "updated_at": "2024-02-12T16:12:43.000000Z"
            },
            {
                "id": 1276,
                "reference": "P46",
                "type": "parking",
                "typology": "underground",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": 0,
                "price_excluding_vat": 0,
                "price_including_vat": 0,
                "discounted_price_including_vat": 0,
                "status": "available",
                "updated_at": "2024-02-12T16:12:43.000000Z"
            }
        ]
    }
}

# Créer une option

Permet de récupérer la fiche d'une option

# Requête HTTP

POST https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options

# Paramètres d'URL

Nom de la clé Description
{tenantKey} Clé de l'espace client - Détails
{programId} ID du programme

# curl

curl --location --request POST 'https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options' \
    --header 'Accept: application/json' \
    --header 'X-API-Key: VOTRE_CLE_API'

# Paramètres de Body

# Schéma

Champ Type Description Requis Exemple Format des données
lead_id int ID du lead associé Oui 406
owner_id int ID du propriétaire Parfois1 100
lots array Liste des lots à optionner Oui [{"id": 864}, {"id": 1232}] Un lot principal doit être présent
vat_rate float Taux de TVA appliquée (en %) Oui 20 5.5 20 0
comment string Commentaire

(1) Requis uniquement si votre accès API n'est pas associé à un utilisateur

IMPORTANT

Votre option doit obligatoirement comporter un lot principal.

Un seul lot principal est autorisé par option, si vous souhaitez optionner plusieurs lots principaux, vous devez créer autant d'option que de lots principaux.

# Exemple

{
  "lead_id": 72923,
  "owner_id": 100,
  "lots": [
    {
      "id": 864
    },
    {
      "id": 1232
    }
  ],
  "vat_rate": 20,
  "comment": "Option posée via API"
}

# Body de réponse

# Option créée avec succès

DETAILS
{
    "success": true,
    "message": "Option créée",
    "body": "L'option #2365 a été créée.",
    "data": {
        "id": 2365,
        "lead_id": 72923,
        "owner": {
            "id": 1,
            "fullname": "Jean Dupont",
            "shortname": "J. Dupont",
            "email": "jean.dupont@promoteur.fr"
        },
        "status": "option-pending",
        "option_lifespan": 96,
        "estimated_availability": {
            "available_at": "2024-02-20T16:45:00.000000Z",
            "expires_at": "2024-02-24T16:45:00.000000Z",
            "rank": 2
        },
        "expires_at": null,
        "canceled_at": null,
        "vat_rate": 20,
        "price_including_vat": 288416,
        "contacts": [
            {
                "id": 74895,
                "lead_id": 72923,
                "name": "Gilbert",
                "firstname": "André",
                "display_name": "André Gilbert",
                "email1": null,
                "email2": null,
                "phone1": "+33600000000",
                "phone2": null,
                "legal_entity": false,
                "company_name": null,
                "legal_status": null,
                "city": null,
                "zipcode": null,
                "created_at": "2024-02-12T15:48:53.000000Z",
                "updated_at": "2024-02-12T15:48:53.000000Z",
                "last_interaction_at": "2024-02-12T15:48:53.000000Z"
            }
        ],
        "lots": [
            {
                "id": 864,
                "reference": "2",
                "type": "apartment",
                "typology": "T2",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 216180,
                "price_including_vat": 259416,
                "discounted_price_including_vat": 259416,
                "status": "option",
                "updated_at": "2024-02-12T16:45:36.000000Z"
            },
            {
                "id": 1232,
                "reference": "P2",
                "type": "parking",
                "typology": "underground",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 24166.67,
                "price_including_vat": 29000,
                "discounted_price_including_vat": 29000,
                "status": "option",
                "updated_at": "2024-02-12T16:45:36.000000Z"
            }
        ]
    }
}

# Lot indisponible

DETAILS
{
    "success": false,
    "message": "Lot indisponible",
    "body": "Le lot 2 ne peut pas être optionné.",
    "data": {
        "optionable_at": "2024-02-16T16:45:00.000000Z",
        "estimated_availablity": "2024-02-20T16:45:00.000000Z",
        "options_in_queue": 2
    },
    "errors": null
}
Champ Type Description Exemple Format des données
optionable_at string Date estimée à laquelle le lot sera optionable 2020-09-04T10:20:04.000000Z ISO 8601
estimated_availablity string Date estimée à laquelle l'option prendra effet (en cas de création) 2020-09-04T10:20:04.000000Z ISO 8601
options_in_queue int Options de rangs existantes 2

# Jumelage des lots non-respecté

DETAILS
{
    "success": false,
    "message": "Lot jumelé manquant",
    "body": "Le respect de le jumelage est obligatoire pour ce programme, le lot P2 (#1232) jumelé à l'un des lots est manquant.",
    "data": null,
    "errors": null
}

# Lot principal manquant

DETAILS
{
    "success": false,
    "message": "Erreur : Lot principal manquant",
    "body": "Il est obligatoire de renseigner un lot principal.",
    "data": null,
    "errors": null
}

# Plusieurs lots principaux spécifiés

DETAILS
{
    "success": false,
    "message": "Erreur : Plusieurs lots principaux spécifiés",
    "body": "Un seul lot principal est autorisé.",
    "data": null,
    "errors": null
}

# Modifier une option

Permet de modifier une option

# Requête HTTP

POST https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options/{optionId}

# Paramètres d'URL

Nom de la clé Description
{tenantKey} Clé de l'espace client - Détails
{programId} ID du programme
{optionId} ID de l'option

# curl

curl --location --request PUT 'https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options/{optionId}' \
    --header 'Accept: application/json' \
    --header 'X-API-Key: VOTRE_CLE_API'

# Paramètres de Body

# Schéma

Champ Type Description Requis Exemple Format des données
owner_id int ID du propriétaire Parfois1 100
prolongation_hours int Durée en heures de la prolongation Oui 72

(1) Requis uniquement si votre accès API n'est pas associé à un utilisateur

# Exemple

{
  "prolongation_hours" : 72
}

# Body de réponse

# Option modifiée avec succès

DETAILS
{
    "success": true,
    "message": "Option mise à jour",
    "body": "L'option #2365 a été mise à jour.",
    "data": {
        "id": 2365,
        "lead_id": 72923,
        "owner": {
            "id": 1,
            "fullname": "Jean Dupont",
            "shortname": "J. Dupont",
            "email": "jean.dupont@promoteur.fr"
        },
        "status": "option",
        "option_lifespan": 168,
        "estimated_availability": null,
        "expires_at": "2024-02-27T16:45:00.000000Z",
        "canceled_at": null,
        "vat_rate": 20,
        "price_including_vat": 288416,
        "contacts": [
            {
                "id": 74895,
                "lead_id": 72923,
                "name": "Gilbert",
                "firstname": "André",
                "display_name": "André Gilbert",
                "email1": null,
                "email2": null,
                "phone1": "+33600000000",
                "phone2": null,
                "legal_entity": false,
                "company_name": null,
                "legal_status": null,
                "city": null,
                "zipcode": null,
                "created_at": "2024-02-12T15:48:53.000000Z",
                "updated_at": "2024-02-12T15:48:53.000000Z",
                "last_interaction_at": "2024-02-12T15:48:53.000000Z"
            }
        ],
        "lots": [
            {
                "id": 864,
                "reference": "2",
                "type": "apartment",
                "typology": "T2",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 216180,
                "price_including_vat": 259416,
                "discounted_price_including_vat": 259416,
                "status": "option",
                "updated_at": "2024-02-12T16:45:36.000000Z"
            },
            {
                "id": 1232,
                "reference": "P2",
                "type": "parking",
                "typology": "underground",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 24166.67,
                "price_including_vat": 29000,
                "discounted_price_including_vat": 29000,
                "status": "option",
                "updated_at": "2024-02-12T16:45:36.000000Z"
            }
        ]
    }
}

# Option annulée ou expirée

DETAILS
{
    "success": false,
    "message": "Option annulée ou expirée",
    "body": "Cette option a été annulée ou a déjà expiré.",
    "data": null,
    "errors": null
}

# Options en attente

DETAILS
{
    "success": false,
    "message": "Options en attente",
    "body": "Impossible de prolonger l'option car d'autres options de rang sont en attente.",
    "data": null,
    "errors": null
}

# Durée de prolongation trop élevée

DETAILS
{
    "success": false,
    "message": "Durée de prolongation trop élevée",
    "body": "Impossible de prolonger l'option au-delà de la limite autorisée (X heures).",
    "data": null,
    "errors": null
}

# Option déjà prolongée

DETAILS
{
    "success": false,
    "message": "Option déjà prolongée",
    "body": "Impossible de prolonger l'option car cette dernière a déjà fait l'objet d'une prolongation.",
    "data": null,
    "errors": null
}

# Annuler une option

Permet d'annuler une option active.

# Requête HTTP

DELETE https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options/{optionId}

# Paramètres d'URL

Nom de la clé Description
{tenantKey} Clé de l'espace client - Détails
{programId} ID du programme
{optionId} ID de l'option

# curl

curl --location --request DELETE 'https://api.adlead.immo/v1/{tenantKey}/programs/{programId}/options/{optionId}' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Content-Length: ###' \
    --header 'X-API-Key: VOTRE_CLE_API' \ 

# Paramètres de Body

# Schéma

Champ Type Description Requis Exemple Format des données
owner_id int ID du propriétaire Parfois1 100

(1) Requis uniquement si votre accès API n'est pas associé à un utilisateur

# Body de réponse

# Option annulée avec succès

DETAILS
{
    "success": true,
    "message": "Option annulée",
    "body": "L'option #2365 a été annulée.",
    "data": {
        "id": 2365,
        "lead_id": 72923,
        "owner": {
            "id": 1,
            "fullname": "Jean Dupont",
            "shortname": "J. Dupont",
            "email": "jean.dupont@promoteur.fr"
        },
        "status": "option-canceled",
        "option_lifespan": 96,
        "estimated_availability": null,
        "expires_at": null,
        "canceled_at": "2024-02-18T10:18:23.000000Z",
        "vat_rate": 20,
        "price_including_vat": 288416,
        "contacts": [
            {
                "id": 74895,
                "lead_id": 72923,
                "name": "Gilbert",
                "firstname": "André",
                "display_name": "André Gilbert",
                "email1": null,
                "email2": null,
                "phone1": "+33600000000",
                "phone2": null,
                "legal_entity": false,
                "company_name": null,
                "legal_status": null,
                "city": null,
                "zipcode": null,
                "created_at": "2024-02-12T15:48:53.000000Z",
                "updated_at": "2024-02-12T15:48:53.000000Z",
                "last_interaction_at": "2024-02-12T15:48:53.000000Z"
            }
        ],
        "lots": [
            {
                "id": 864,
                "reference": "2",
                "type": "apartment",
                "typology": "T2",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 216180,
                "price_including_vat": 259416,
                "discounted_price_including_vat": 259416,
                "status": "available",
                "updated_at": "2024-02-12T16:45:36.000000Z"
            },
            {
                "id": 1232,
                "reference": "P2",
                "type": "parking",
                "typology": "underground",
                "subtype": null,
                "vat_rate": 20,
                "discount_including_vat": null,
                "price_excluding_vat": 24166.67,
                "price_including_vat": 29000,
                "discounted_price_including_vat": 29000,
                "status": "available",
                "updated_at": "2024-02-12T16:45:36.000000Z"
            }
        ]
    }
}

# Modèle

# Option

Champ Type Description Exemple Format des données
id int ID de l'option 1
lead_id int ID du lead associé 406
owner_id deprecated int ID du propriétaire ⚠️ déprécié Déprécié : Utiliser le champ owner
owner object Utilisateur propriétaire
status string Statut de l'option option-pending Accéder au tableau
option_lifespan int Durée de validité de l'option (en heure) 96
estimated_availability object Dans le cas d'une option en attente, date estimée à laquelle l'option devient active Accéder au tableau
expires_at string Date d'expiration de l'option 2020-09-04T10:20:04.000000Z ISO 8601
canceled_at string Date d'annulation de l'option 2020-09-04T10:20:04.000000Z ISO 8601
vat_rate float Taux de TVA appliquée (en %) 20 5.5 20 0
price_including_vat float Prix de vente total (TVA et remise incluses) 188882.23
contacts array Liste du ou des acquéreurs Accéder au tableau
lots array Liste du ou des lots optionnés Accéder au tableau

# Disponibilité estimée

Uniquement dans le cas d'une option en attente

Champ Type Description Exemple Format des données
available_at string Date estimée à laquelle l'option deviendra active 2020-09-04T10:20:04.000000Z ISO 8601
expires_at string Date estimée à laquelle l'option expirera 2020-09-04T10:20:04.000000Z ISO 8601
rank int Rang de l'option 2

# Lot optionné

Champ Type Description Exemple Format des données
id int ID du lot 1
reference string Référence unique du lot A01
type string Type de bien apartment Accéder au tableau
typology string Typologie du bien T2 Accéder au tableau
subtype string Sous-type du bien Accéder au tableau
vat_rate string Taux de TVA (si mixte) 20
discount_including_vat float Remise TTC 2000
price_excluding_vat float Prix de vente HT 166666.67
price_including_vat float Prix de vente TTC 200000
discounted_price_including_vat float Prix de vente TTC (remise incluse) 198000
status string Statut du lot option Accéder au tableau
updated_at string Dernière mise à jour 2020-09-04T10:20:04.000000Z ISO 8601

# Annexes

# Statuts

Liste des statuts des options

DETAILS
[
  {
    "key": "option",
    "name": "Option active"
  },
  {
    "key": "option-pending",
    "name": "Option en attente (option de rang)"
  },
  {
    "key": "option-expired",
    "name": "Option expirée"
  },
  {
    "key": "option-canceled",
    "name": "Option annulée"
  }
]