{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/lexio-rent/json-schema/lexio-rent-lead-time-tier-schema.json",
  "title": "LeadTimeTier",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/lexio-rent-tarification-api-openapi.yml#/components/schemas/LeadTimeTier",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Identifiant du palier."
    },
    "label": {
      "type": "string",
      "maxLength": 100,
      "description": "Libellé du palier."
    },
    "minLeadDays": {
      "type": "integer",
      "minimum": 0,
      "maximum": 3650,
      "description": "Délai minimal, en jours, entre la date du devis (sans devis : la création de la location) et le jour du départ, inclus."
    },
    "maxLeadDays": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 3650
        },
        {
          "type": "null"
        }
      ],
      "description": "Délai maximal, en jours, inclus ; null : sans borne haute."
    },
    "priceFactors": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "seasonSlug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[a-z0-9_]+$",
            "description": "Saison (`GET /seasons`)."
          },
          "priceFactor": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "Coefficient du prix journalier dans cette saison : 0,95 = −5 %, 1,1 = +10 %. Au plus 4 décimales."
          }
        },
        "required": [
          "seasonSlug",
          "priceFactor"
        ]
      },
      "description": "Une entrée par saison de l’organisation, dans l’ordre de `GET /seasons`."
    },
    "isActive": {
      "type": "boolean",
      "description": "false : palier conservé mais non appliqué."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Dernière modification."
    }
  },
  "required": [
    "id",
    "label",
    "minLeadDays",
    "maxLeadDays",
    "priceFactors",
    "isActive",
    "updatedAt"
  ]
}