Koskamo

Nitech MCP

This MCP server allows AI assistants to search the Nitech catalog for heating and sanitary parts, calculate quotes, create orders, and manage payments. It supports product discovery, cart management, and order tracking using private access tokens for secure operations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Nitech MCP logo, by NitechVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Nitech
MCP endpoint (Streamable HTTP)
https://mcp.nitech.fr/mcp
Vendor documentation

What you can do with it

  • Search for a product reference, price, and availability
  • Create a shopping cart and calculate shipping costs
  • Prepare payment via card, transfer, or check
  • Retrieve order status and payment results

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
nitech 0.1.0
MCP protocol
2025-06-18
Tools
11 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Catalogue, commandes et paiement autonome Nitech. create_order et prepare_payment exigent un récapitulatif et une confirmation explicite. Le client paie chez Scellius ; seule la notification serveur est une preuve bancaire. get_payment confirme le paiement et les effets métier. Pour le client, présenter les états acceptés simplement comme Paiement accepté, sans distinguer les étapes bancaires internes. get_order lit le suivi privé avec une preuve d’accès ; les données absentes restent indisponibles et aucune expédition ne se déduit du paiement. Un lien ou un retour navigateur ne valide rien. Réutiliser la même tentative en cas d’incertitude. Respecter les sources, dates et incertitudes ; une disponibilité ne constitue pas une réservation.

Tools

11 advertised

get_product
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lire le produit public Nitech courant par PID, y compris les produits hors vente historiquement publics. Textes, caractéristiques, appareils, éclatés, repères et documents conservent leur provenance ; une relation historique ou un contenu observé ne vaut pas qualification humaine.

get_product input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id"
  ],
  "properties": {
    "product_id": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "PID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette."
    }
  },
  "additionalProperties": false
}
get_product output schema
{
  "type": "object",
  "$defs": {
    "canonical": {
      "type": "object",
      "$defs": {
        "alias": {
          "type": "object",
          "required": [
            "value",
            "kind",
            "evidence"
          ],
          "properties": {
            "kind": {
              "enum": [
                "commercial_name",
                "spelling_variant"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "https": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://[^\\s]+$"
        },
        "image": {
          "type": "object",
          "required": [
            "url",
            "role",
            "mediaType",
            "evidence"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "pattern": "^https://[^\\s]+$"
            },
            "role": {
              "enum": [
                "primary",
                "secondary"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "mediaType": {
              "anyOf": [
                {
                  "enum": [
                    "image/jpeg",
                    "image/png",
                    "image/webp",
                    "image/avif"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "issue": {
          "type": "object",
          "required": [
            "code",
            "path",
            "severity",
            "message",
            "sourceRefs"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "path": {
              "type": "string",
              "pattern": "^/"
            },
            "message": {
              "type": "string",
              "minLength": 1
            },
            "severity": {
              "enum": [
                "info",
                "review_required",
                "publication_blocker"
              ]
            },
            "sourceRefs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "price": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unknown"
                  }
                }
              },
              "then": {
                "properties": {
                  "taxRate": {
                    "type": "null"
                  },
                  "amountHt": {
                    "type": "null"
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  },
                  "amountTtc": {
                    "type": "null"
                  },
                  "validUntil": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "observed"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "enum": [
                          "observed",
                          "validated"
                        ]
                      }
                    }
                  },
                  "amountTtc": {
                    "type": "string",
                    "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "validUntil": {
                    "type": "string"
                  }
                }
              },
              "else": {
                "properties": {
                  "validityEvidence": {
                    "type": "null"
                  }
                }
              },
              "then": {
                "properties": {
                  "validityEvidence": {
                    "$ref": "#/$defs/canonical/$defs/evidence"
                  }
                }
              }
            }
          ],
          "required": [
            "status",
            "amountTtc",
            "amountHt",
            "currency",
            "taxRate",
            "validUntil",
            "evidence",
            "validityEvidence"
          ],
          "properties": {
            "status": {
              "enum": [
                "observed",
                "unknown"
              ]
            },
            "taxRate": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]{0,2})(?:\\.[0-9]{1,2})?$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "amountHt": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "currency": {
              "const": "EUR"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "amountTtc": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validUntil": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validityEvidence": {
              "anyOf": [
                {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "stock": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "managed": {
                    "enum": [
                      false,
                      null
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "quantity": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "visibility": {
                    "const": "public"
                  }
                }
              },
              "then": {
                "properties": {
                  "quantity": {
                    "type": "null"
                  },
                  "rawQuantity": {
                    "type": "null"
                  }
                }
              }
            }
          ],
          "required": [
            "managed",
            "quantity",
            "rawQuantity",
            "visibility",
            "evidence"
          ],
          "properties": {
            "counted": {
              "type": "boolean"
            },
            "managed": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "quantity": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            },
            "visibility": {
              "enum": [
                "internal",
                "public"
              ]
            },
            "rawQuantity": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "source": {
          "type": "object",
          "allOf": [
            {
              "anyOf": [
                {
                  "properties": {
                    "url": {
                      "$ref": "#/$defs/canonical/$defs/https"
                    }
                  }
                },
                {
                  "properties": {
                    "artifactPath": {
                      "type": "string"
                    }
                  }
                },
                {
                  "properties": {
                    "kind": {
                      "const": "catalogue_read"
                    }
                  }
                },
                {
                  "properties": {
                    "kind": {
                      "const": "human_review"
                    }
                  }
                }
              ]
            },
            {
              "if": {
                "properties": {
                  "visibility": {
                    "const": "public"
                  }
                }
              },
              "then": {
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "catalogue_read",
                            "human_review"
                          ]
                        }
                      }
                    },
                    "else": {
                      "properties": {
                        "url": {
                          "$ref": "#/$defs/canonical/$defs/https"
                        }
                      }
                    },
                    "then": {
                      "type": "object"
                    }
                  }
                ],
                "properties": {
                  "artifactPath": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "kind": {
                    "const": "catalogue_read"
                  }
                }
              },
              "then": {
                "properties": {
                  "observedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                  }
                }
              }
            }
          ],
          "required": [
            "id",
            "kind",
            "url",
            "artifactPath",
            "locator",
            "observedOn",
            "observedAt",
            "visibility",
            "sha256"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "kind": {
              "enum": [
                "backoffice",
                "public_page",
                "manufacturer_document",
                "audit_record",
                "historical_capture",
                "catalogue_read",
                "human_review"
              ]
            },
            "sha256": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-fA-F0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "locator": {
              "type": "string",
              "minLength": 1
            },
            "observedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "observedOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "visibility": {
              "enum": [
                "public",
                "internal"
              ]
            },
            "artifactPath": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?!/)(?!.*\\.\\.)(?!.*\\\\)[A-Za-z0-9_./-]+$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "target": {
          "type": "object",
          "anyOf": [
            {
              "properties": {
                "productId": {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                }
              }
            },
            {
              "properties": {
                "reference": {
                  "type": "string",
                  "minLength": 1
                }
              }
            }
          ],
          "required": [
            "productId",
            "reference",
            "label"
          ],
          "properties": {
            "label": {
              "type": "string",
              "minLength": 1
            },
            "productId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reference": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "category": {
          "type": "object",
          "required": [
            "legacyId",
            "name",
            "evidence"
          ],
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyId": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "document": {
          "type": "object",
          "required": [
            "id",
            "kind",
            "title",
            "url",
            "mediaType",
            "scope",
            "contentInspection",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "kind": {
              "enum": [
                "manual",
                "technical_sheet",
                "certificate",
                "unknown",
                "user_manual",
                "installation_manual",
                "parts_diagram",
                "commercial",
                "other",
                "irrelevant"
              ]
            },
            "scope": {
              "type": "object",
              "required": [
                "type",
                "productId"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "product",
                    "related_appliance"
                  ]
                },
                "productId": {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                }
              },
              "additionalProperties": false
            },
            "title": {
              "type": "string",
              "minLength": 1
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "mediaType": {
              "anyOf": [
                {
                  "enum": [
                    "application/pdf",
                    "text/html",
                    "image/jpeg",
                    "image/png"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "reviewStatus": {
              "enum": [
                "relevant",
                "not_relevant",
                "unreadable",
                "wrong_appliance"
              ]
            },
            "contentInspection": {
              "enum": [
                "not_inspected",
                "partially_inspected",
                "inspected"
              ]
            },
            "confirmedAppliance": {
              "type": "string",
              "maxLength": 150
            }
          },
          "additionalProperties": false
        },
        "evidence": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "enum": [
                      "observed",
                      "inferred",
                      "validated"
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "sourceRefs": {
                    "minItems": 1
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unconfirmed"
                  }
                }
              },
              "then": {
                "properties": {
                  "confidence": {
                    "const": "unknown"
                  }
                }
              }
            }
          ],
          "required": [
            "status",
            "confidence",
            "sourceRefs",
            "note"
          ],
          "properties": {
            "note": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "enum": [
                "observed",
                "inferred",
                "unconfirmed",
                "validated"
              ]
            },
            "confidence": {
              "enum": [
                "high",
                "medium",
                "low",
                "unknown"
              ]
            },
            "sourceRefs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "relation": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "qualification": {
                    "const": "confirmed"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "validated"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "target",
            "qualification",
            "evidence"
          ],
          "properties": {
            "target": {
              "$ref": "#/$defs/canonical/$defs/target"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "qualification": {
              "enum": [
                "asserted",
                "confirmed",
                "unknown"
              ]
            }
          },
          "additionalProperties": false
        },
        "appliance": {
          "type": "object",
          "required": [
            "productId",
            "brand",
            "model",
            "reference"
          ],
          "properties": {
            "brand": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "model": {
              "type": "string",
              "minLength": 1
            },
            "productId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reference": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "statement": {
          "type": "object",
          "required": [
            "text",
            "evidence"
          ],
          "properties": {
            "text": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "identifier": {
          "type": "object",
          "required": [
            "kind",
            "value",
            "evidence"
          ],
          "properties": {
            "kind": {
              "enum": [
                "manufacturer_reference_displayed",
                "adaptable_reference",
                "legacy_public_sku",
                "gtin",
                "other",
                "nitech_reference",
                "former_reference",
                "supplier_reference",
                "unknown"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "measurement": {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "kind",
                "amount",
                "unit",
                "qualifier"
              ],
              "properties": {
                "kind": {
                  "const": "number"
                },
                "unit": {
                  "type": "string",
                  "minLength": 1
                },
                "amount": {
                  "type": "string",
                  "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
                },
                "qualifier": {
                  "enum": [
                    "exact",
                    "approximate"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "text",
                "unit",
                "interpretation"
              ],
              "properties": {
                "kind": {
                  "const": "text"
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                },
                "unit": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "interpretation": {
                  "enum": [
                    "literal",
                    "ambiguous"
                  ]
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "availability": {
          "type": "object",
          "required": [
            "status",
            "orderable",
            "observations",
            "evidence"
          ],
          "properties": {
            "status": {
              "enum": [
                "in_stock",
                "out_of_stock",
                "on_order",
                "preorder",
                "unknown",
                "conflicting",
                "on_request",
                "not_for_sale"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "orderable": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "observations": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/availabilityObservation"
              },
              "minItems": 0
            }
          },
          "additionalProperties": false
        },
        "explodedView": {
          "type": "object",
          "required": [
            "id",
            "appliance",
            "planUrl",
            "version",
            "documentIds",
            "occurrences",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "planUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "version": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "appliance": {
              "$ref": "#/$defs/canonical/$defs/appliance"
            },
            "documentIds": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "occurrences": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "productId",
                  "marker"
                ],
                "properties": {
                  "marker": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                  },
                  "productId": {
                    "type": "string",
                    "pattern": "^nitech:product:[1-9][0-9]*$"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            }
          },
          "additionalProperties": false
        },
        "compatibility": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "enum": [
                      "confirmed",
                      "incompatible"
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "validated"
                      }
                    }
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unknown"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "target",
            "status",
            "scope",
            "evidence"
          ],
          "properties": {
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "enum": [
                "asserted",
                "confirmed",
                "incompatible",
                "unknown",
                "conflicting",
                "verified",
                "inferred"
              ]
            },
            "target": {
              "$ref": "#/$defs/canonical/$defs/appliance"
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "verified_at": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "humanDecision": {
          "type": "object",
          "required": [
            "id",
            "outcome",
            "at",
            "sourceFingerprint",
            "sourceRef"
          ],
          "properties": {
            "at": {
              "type": "string",
              "format": "date-time",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
            },
            "id": {
              "type": "integer",
              "minimum": 1
            },
            "outcome": {
              "enum": [
                "relevant",
                "not_relevant",
                "unreadable",
                "wrong_appliance",
                "confirmed",
                "rejected",
                "qualified"
              ]
            },
            "sourceRef": {
              "type": "string",
              "pattern": "^human-decision-[1-9][0-9]*$"
            },
            "sourceFingerprint": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "additionalProperties": false
        },
        "relationGroup": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/relation"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "specification": {
          "type": "object",
          "required": [
            "key",
            "label",
            "value",
            "sourceText",
            "evidence"
          ],
          "properties": {
            "key": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "label": {
              "type": "string",
              "minLength": 1
            },
            "value": {
              "$ref": "#/$defs/canonical/$defs/measurement"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "sourceText": {
              "type": "string",
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "availabilityObservation": {
          "type": "object",
          "required": [
            "sourceRef",
            "channel",
            "reportedStatus",
            "rawValue"
          ],
          "properties": {
            "channel": {
              "enum": [
                "human",
                "jsonld",
                "backoffice"
              ]
            },
            "rawValue": {
              "type": "string",
              "minLength": 1
            },
            "sourceRef": {
              "type": "string",
              "minLength": 1
            },
            "reportedStatus": {
              "enum": [
                "in_stock",
                "out_of_stock",
                "on_order",
                "preorder",
                "for_sale",
                "unknown"
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "recordType": {
                "const": "source_snapshot"
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "snapshot_only"
                      },
                      "expiresAt": {
                        "type": "null"
                      }
                    }
                  }
                }
              },
              "visibility": {
                "properties": {
                  "record": {
                    "const": "internal"
                  },
                  "publication": {
                    "const": "not_approved"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "verification": {
                "properties": {
                  "status": {
                    "const": "pending_business_review"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "verification": {
                "properties": {
                  "verifiedAt": {
                    "type": "null"
                  },
                  "verifiedBy": {
                    "type": "null"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "verification": {
                "properties": {
                  "status": {
                    "const": "approved"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "verification": {
                "properties": {
                  "verifiedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                  },
                  "verifiedBy": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "const": "approved"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "recordType": {
                "const": "canonical_product"
              },
              "verification": {
                "properties": {
                  "status": {
                    "const": "approved"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "bounded"
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "expiresAt": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "record": {
                    "const": "public"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "enum": [
                      "approved",
                      "published_read_only"
                    ]
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.0"
              }
            }
          },
          "else": {
            "allOf": [
              {
                "if": {
                  "properties": {
                    "visibility": {
                      "properties": {
                        "record": {
                          "const": "preview"
                        }
                      }
                    }
                  }
                },
                "then": {
                  "properties": {
                    "recordType": {
                      "const": "canonical_product"
                    },
                    "visibility": {
                      "properties": {
                        "publication": {
                          "const": "not_approved"
                        }
                      }
                    },
                    "verification": {
                      "properties": {
                        "status": {
                          "const": "pending_business_review"
                        }
                      }
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "recordType": {
                      "const": "source_snapshot"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "offer": {
                      "properties": {
                        "freshness": {
                          "properties": {
                            "freshness_status": {
                              "const": "source_snapshot"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "recordType": {
                      "const": "canonical_product"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "offer": {
                      "properties": {
                        "freshness": {
                          "properties": {
                            "freshness_status": {
                              "enum": [
                                "not_certified",
                                "unknown",
                                "current_read"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            ],
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "source_snapshot"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "snapshot_only"
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "not_certified"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "observation_only"
                            },
                            "observed_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "unknown"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "observation_only"
                            },
                            "observed_at": {
                              "type": "null"
                            },
                            "verified_at": {
                              "type": "null"
                            }
                          }
                        }
                      }
                    ],
                    "required": [
                      "source_updated_at",
                      "observed_at",
                      "verified_at",
                      "freshness_status"
                    ],
                    "properties": {
                      "policy": {
                        "enum": [
                          "snapshot_only",
                          "observation_only"
                        ]
                      },
                      "expiresAt": {
                        "type": "null"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "enum": [
                          "in_stock",
                          "out_of_stock",
                          "unknown",
                          "on_request",
                          "not_for_sale"
                        ]
                      }
                    }
                  }
                }
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "allOf": [
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "enum": [
                                  "verified",
                                  "incompatible"
                                ]
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "evidence": {
                                "properties": {
                                  "status": {
                                    "const": "validated"
                                  }
                                }
                              },
                              "verified_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                              }
                            }
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "const": "inferred"
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "evidence": {
                                "properties": {
                                  "status": {
                                    "const": "inferred"
                                  },
                                  "sourceRefs": {
                                    "minItems": 1
                                  }
                                }
                              },
                              "verified_at": {
                                "type": "null"
                              }
                            }
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "const": "unknown"
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "verified_at": {
                                "type": "null"
                              }
                            }
                          }
                        }
                      ],
                      "required": [
                        "verified_at"
                      ],
                      "properties": {
                        "status": {
                          "enum": [
                            "verified",
                            "inferred",
                            "incompatible",
                            "unknown"
                          ]
                        },
                        "evidence": {
                          "properties": {
                            "sourceRefs": {
                              "minItems": 1
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "stock": {
                    "properties": {
                      "quantity": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    }
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "enum": [
                          "snapshot_only",
                          "bounded"
                        ]
                      },
                      "observed_at": {
                        "not": {}
                      },
                      "verified_at": {
                        "not": {}
                      },
                      "freshness_status": {
                        "not": {}
                      },
                      "source_updated_at": {
                        "not": {}
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "enum": [
                          "in_stock",
                          "out_of_stock",
                          "on_order",
                          "preorder",
                          "unknown",
                          "conflicting"
                        ]
                      }
                    }
                  }
                }
              },
              "provenance": {
                "properties": {
                  "sources": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "backoffice",
                            "public_page",
                            "manufacturer_document",
                            "audit_record",
                            "historical_capture"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "visibility": {
                "properties": {
                  "record": {
                    "enum": [
                      "internal",
                      "public"
                    ]
                  }
                }
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "status": {
                          "enum": [
                            "asserted",
                            "confirmed",
                            "incompatible",
                            "unknown",
                            "conflicting"
                          ]
                        },
                        "verified_at": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.0"
              }
            }
          },
          "then": {
            "properties": {
              "names": {
                "properties": {
                  "preferred": {
                    "type": "string"
                  }
                }
              },
              "references": {
                "properties": {
                  "identifiers": {
                    "minItems": 1
                  }
                }
              },
              "classification": {
                "properties": {
                  "brandLabel": {
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    }
                  },
                  "categoryPath": {
                    "minItems": 1
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "const": "published_read_only"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "recordType": {
                "const": "canonical_product"
              },
              "visibility": {
                "properties": {
                  "record": {
                    "const": "public"
                  }
                }
              },
              "verification": {
                "properties": {
                  "status": {
                    "const": "pending_business_review"
                  }
                }
              },
              "schemaVersion": {
                "enum": [
                  "0.1.1",
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "enum": [
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          },
          "else": {
            "properties": {
              "offer": {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "sale_status"
                      ]
                    },
                    {
                      "required": [
                        "order_mode"
                      ]
                    },
                    {
                      "required": [
                        "order_reason"
                      ]
                    },
                    {
                      "required": [
                        "review_reasons"
                      ]
                    }
                  ]
                },
                "properties": {
                  "stock": {
                    "not": {
                      "required": [
                        "counted"
                      ]
                    }
                  },
                  "freshness": {
                    "properties": {
                      "freshness_status": {
                        "not": {
                          "const": "current_read"
                        }
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "not": {
                          "const": "not_for_sale"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "required": [
                  "sale_status",
                  "order_mode",
                  "order_reason",
                  "review_reasons"
                ],
                "properties": {
                  "stock": {
                    "required": [
                      "counted"
                    ]
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "observation_only"
                      },
                      "observed_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "freshness_status": {
                        "const": "current_read"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "orderable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              },
              "recordType": {
                "const": "canonical_product"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.3"
              }
            }
          },
          "else": {
            "properties": {
              "documents": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manual",
                            "technical_sheet",
                            "certificate",
                            "unknown"
                          ]
                        },
                        "decision": {
                          "not": {}
                        },
                        "reviewStatus": {
                          "not": {}
                        },
                        "confirmedAppliance": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              },
              "provenance": {
                "properties": {
                  "sources": {
                    "items": {
                      "properties": {
                        "kind": {
                          "not": {
                            "const": "human_review"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "references": {
                "properties": {
                  "identifiers": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manufacturer_reference_displayed",
                            "adaptable_reference",
                            "legacy_public_sku",
                            "gtin",
                            "other"
                          ]
                        },
                        "decision": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              },
              "humanReview": {
                "not": {}
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "decision": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "required": [
              "humanReview"
            ]
          }
        }
      ],
      "title": "Nitech — produit canonique v0.1",
      "required": [
        "schemaVersion",
        "recordRevision",
        "recordType",
        "identity",
        "references",
        "names",
        "classification",
        "description",
        "specifications",
        "compatibilities",
        "relations",
        "offer",
        "images",
        "documents",
        "explodedViews",
        "provenance",
        "verification",
        "visibility"
      ],
      "properties": {
        "names": {
          "type": "object",
          "required": [
            "preferred",
            "aliases",
            "evidence"
          ],
          "properties": {
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/alias"
              },
              "minItems": 0
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "preferred": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "offer": {
          "type": "object",
          "required": [
            "context",
            "price",
            "stock",
            "availability",
            "delivery",
            "freshness"
          ],
          "properties": {
            "price": {
              "$ref": "#/$defs/canonical/$defs/price"
            },
            "stock": {
              "$ref": "#/$defs/canonical/$defs/stock"
            },
            "context": {
              "type": "object",
              "required": [
                "market",
                "channel",
                "seller",
                "shippingIncluded",
                "evidence"
              ],
              "properties": {
                "market": {
                  "const": "FR"
                },
                "seller": {
                  "const": "Nitech"
                },
                "channel": {
                  "const": "retail"
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "shippingIncluded": {
                  "const": false
                }
              },
              "additionalProperties": false
            },
            "delivery": {
              "type": "object",
              "required": [
                "text",
                "evidence"
              ],
              "properties": {
                "text": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "freshness": {
              "type": "object",
              "required": [
                "asOf",
                "policy",
                "expiresAt",
                "evidence"
              ],
              "properties": {
                "asOf": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "policy": {
                  "enum": [
                    "snapshot_only",
                    "bounded",
                    "observation_only"
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "expiresAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "observed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Heure réelle de lecture courante de la base Nitech."
                },
                "verified_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Instant de vérification métier de cette offre, distinct de sa lecture ; null en l'absence de vérification."
                },
                "freshness_status": {
                  "enum": [
                    "source_snapshot",
                    "not_certified",
                    "unknown",
                    "current_read"
                  ],
                  "description": "current_read : quantité courante observée ; aucun délai de fraîcheur inventé."
                },
                "source_updated_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Précision réelle de la source : date SQL conservée comme date, instant seulement si connu ; null si inconnu."
                }
              },
              "additionalProperties": false
            },
            "order_mode": {
              "enum": [
                "online",
                "contact_only",
                "disabled"
              ]
            },
            "sale_status": {
              "enum": [
                "on_sale",
                "not_on_sale"
              ]
            },
            "availability": {
              "$ref": "#/$defs/canonical/$defs/availability"
            },
            "order_reason": {
              "enum": [
                "not_for_sale",
                "sale_mode_undecided",
                "stock_not_counted",
                "untracked_orders_allowed",
                "stock_empty",
                "unavailable_orders_allowed",
                "stock_available"
              ]
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "enum": [
                  "stock_not_counted",
                  "sale_mode_undecided",
                  "on_sale_not_orderable"
                ]
              },
              "maxItems": 3,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "images": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/image"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "identity": {
          "type": "object",
          "required": [
            "id",
            "legacyPid",
            "kind",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^nitech:product:[1-9][0-9]*$"
            },
            "kind": {
              "enum": [
                "spare_part",
                "product",
                "appliance"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyPid": {
              "type": "integer",
              "minimum": 1
            }
          },
          "additionalProperties": false
        },
        "documents": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/document"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "relations": {
          "type": "object",
          "required": [
            "replaces",
            "replacedBy",
            "alternatives",
            "accessories"
          ],
          "properties": {
            "replaces": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "replacedBy": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "accessories": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "alternatives": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            }
          },
          "additionalProperties": false
        },
        "provenance": {
          "type": "object",
          "required": [
            "snapshotOn",
            "sourceModifiedOn",
            "sources",
            "issues"
          ],
          "properties": {
            "issues": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/issue"
              },
              "minItems": 0
            },
            "sources": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/source"
              },
              "minItems": 1
            },
            "snapshotOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "sourceModifiedOn": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "recordType": {
          "enum": [
            "source_snapshot",
            "canonical_product"
          ]
        },
        "references": {
          "type": "object",
          "required": [
            "merchantSku",
            "identifiers",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "identifiers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/identifier"
              },
              "minItems": 0
            },
            "merchantSku": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "visibility": {
          "type": "object",
          "required": [
            "record",
            "publication",
            "evidence"
          ],
          "properties": {
            "record": {
              "enum": [
                "internal",
                "public",
                "preview"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "publication": {
              "enum": [
                "not_approved",
                "approved",
                "published_read_only"
              ],
              "description": "published_read_only décrit la diffusion publique autorisée sans approbation de revue métier ; approved conserve son sens historique de publication après revue."
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/statement"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "humanReview": {
          "type": "object",
          "required": [
            "status",
            "productFingerprint",
            "reviewedFingerprint",
            "reviewedAt"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending",
                "reviewed"
              ]
            },
            "reviewedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "productFingerprint": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "reviewedFingerprint": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "verification": {
          "type": "object",
          "required": [
            "status",
            "verifiedAt",
            "verifiedBy"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending_business_review",
                "approved"
              ]
            },
            "verifiedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "verifiedBy": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "description": "Revue des assertions qualifiées (evidence.status=validated) et de leur publication examinée ; ne certifie pas chaque observation commerciale ultérieure. Une validation ne se transfère pas à une valeur/provenance modifiée.",
          "additionalProperties": false
        },
        "canonical_url": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://catalogue\\.nitech\\.fr/produits/[1-9][0-9]{0,9}$"
        },
        "explodedViews": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/explodedView"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "schemaVersion": {
          "enum": [
            "0.1.0",
            "0.1.1",
            "0.1.2",
            "0.1.3"
          ]
        },
        "classification": {
          "type": "object",
          "required": [
            "brandLabel",
            "manufacturer",
            "categoryPath",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "brandLabel": {
              "type": "object",
              "required": [
                "name",
                "evidence"
              ],
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "minLength": 1
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "categoryPath": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/category"
              },
              "minItems": 0
            },
            "manufacturer": {
              "type": "object",
              "required": [
                "name",
                "evidence"
              ],
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "recordRevision": {
          "type": "integer",
          "minimum": 1
        },
        "specifications": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/specification"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "compatibilities": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/compatibility"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        }
      },
      "description": "0.1.3 : qualifications humaines distinctes, liées à une source stable ; lecture commerciale courante inchangée.",
      "additionalProperties": false
    }
  },
  "oneOf": [
    {
      "type": "object",
      "required": [
        "product"
      ],
      "properties": {
        "product": {
          "allOf": [
            {
              "$ref": "#/$defs/canonical"
            },
            {
              "properties": {
                "recordType": {
                  "const": "canonical_product"
                },
                "visibility": {
                  "anyOf": [
                    {
                      "properties": {
                        "record": {
                          "const": "preview"
                        },
                        "publication": {
                          "const": "not_approved"
                        }
                      }
                    },
                    {
                      "properties": {
                        "record": {
                          "const": "public"
                        },
                        "publication": {
                          "const": "published_read_only"
                        }
                      }
                    }
                  ]
                },
                "schemaVersion": {
                  "enum": [
                    "0.1.1",
                    "0.1.2",
                    "0.1.3"
                  ]
                }
              }
            }
          ]
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[A-Z_]{3,64}$"
            },
            "message": {
              "type": "string",
              "maxLength": 500,
              "minLength": 1
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Generated by bin/build-mcp-schemas.py; authoritative product definitions remain in nitech-product-v0.1.schema.json."
}
get_product annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_offer
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lire l'offre canonique à l'heure d'observation : mise en vente, stock compté, disponibilité et autorisation de commande distinctes. Cette consultation ne réserve aucun stock ; la qualification métier de la fiche reste séparée.

get_offer input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id"
  ],
  "properties": {
    "product_id": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "PID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette."
    }
  },
  "additionalProperties": false
}
get_offer output schema
{
  "type": "object",
  "$defs": {
    "canonical": {
      "type": "object",
      "$defs": {
        "alias": {
          "type": "object",
          "required": [
            "value",
            "kind",
            "evidence"
          ],
          "properties": {
            "kind": {
              "enum": [
                "commercial_name",
                "spelling_variant"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "https": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://[^\\s]+$"
        },
        "image": {
          "type": "object",
          "required": [
            "url",
            "role",
            "mediaType",
            "evidence"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "pattern": "^https://[^\\s]+$"
            },
            "role": {
              "enum": [
                "primary",
                "secondary"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "mediaType": {
              "anyOf": [
                {
                  "enum": [
                    "image/jpeg",
                    "image/png",
                    "image/webp",
                    "image/avif"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "issue": {
          "type": "object",
          "required": [
            "code",
            "path",
            "severity",
            "message",
            "sourceRefs"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "path": {
              "type": "string",
              "pattern": "^/"
            },
            "message": {
              "type": "string",
              "minLength": 1
            },
            "severity": {
              "enum": [
                "info",
                "review_required",
                "publication_blocker"
              ]
            },
            "sourceRefs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "price": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unknown"
                  }
                }
              },
              "then": {
                "properties": {
                  "taxRate": {
                    "type": "null"
                  },
                  "amountHt": {
                    "type": "null"
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  },
                  "amountTtc": {
                    "type": "null"
                  },
                  "validUntil": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "observed"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "enum": [
                          "observed",
                          "validated"
                        ]
                      }
                    }
                  },
                  "amountTtc": {
                    "type": "string",
                    "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "validUntil": {
                    "type": "string"
                  }
                }
              },
              "else": {
                "properties": {
                  "validityEvidence": {
                    "type": "null"
                  }
                }
              },
              "then": {
                "properties": {
                  "validityEvidence": {
                    "$ref": "#/$defs/canonical/$defs/evidence"
                  }
                }
              }
            }
          ],
          "required": [
            "status",
            "amountTtc",
            "amountHt",
            "currency",
            "taxRate",
            "validUntil",
            "evidence",
            "validityEvidence"
          ],
          "properties": {
            "status": {
              "enum": [
                "observed",
                "unknown"
              ]
            },
            "taxRate": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]{0,2})(?:\\.[0-9]{1,2})?$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "amountHt": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "currency": {
              "const": "EUR"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "amountTtc": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validUntil": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validityEvidence": {
              "anyOf": [
                {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "stock": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "managed": {
                    "enum": [
                      false,
                      null
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "quantity": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "visibility": {
                    "const": "public"
                  }
                }
              },
              "then": {
                "properties": {
                  "quantity": {
                    "type": "null"
                  },
                  "rawQuantity": {
                    "type": "null"
                  }
                }
              }
            }
          ],
          "required": [
            "managed",
            "quantity",
            "rawQuantity",
            "visibility",
            "evidence"
          ],
          "properties": {
            "counted": {
              "type": "boolean"
            },
            "managed": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "quantity": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            },
            "visibility": {
              "enum": [
                "internal",
                "public"
              ]
            },
            "rawQuantity": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "source": {
          "type": "object",
          "allOf": [
            {
              "anyOf": [
                {
                  "properties": {
                    "url": {
                      "$ref": "#/$defs/canonical/$defs/https"
                    }
                  }
                },
                {
                  "properties": {
                    "artifactPath": {
                      "type": "string"
                    }
                  }
                },
                {
                  "properties": {
                    "kind": {
                      "const": "catalogue_read"
                    }
                  }
                },
                {
                  "properties": {
                    "kind": {
                      "const": "human_review"
                    }
                  }
                }
              ]
            },
            {
              "if": {
                "properties": {
                  "visibility": {
                    "const": "public"
                  }
                }
              },
              "then": {
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "catalogue_read",
                            "human_review"
                          ]
                        }
                      }
                    },
                    "else": {
                      "properties": {
                        "url": {
                          "$ref": "#/$defs/canonical/$defs/https"
                        }
                      }
                    },
                    "then": {
                      "type": "object"
                    }
                  }
                ],
                "properties": {
                  "artifactPath": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "kind": {
                    "const": "catalogue_read"
                  }
                }
              },
              "then": {
                "properties": {
                  "observedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                  }
                }
              }
            }
          ],
          "required": [
            "id",
            "kind",
            "url",
            "artifactPath",
            "locator",
            "observedOn",
            "observedAt",
            "visibility",
            "sha256"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "kind": {
              "enum": [
                "backoffice",
                "public_page",
                "manufacturer_document",
                "audit_record",
                "historical_capture",
                "catalogue_read",
                "human_review"
              ]
            },
            "sha256": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-fA-F0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "locator": {
              "type": "string",
              "minLength": 1
            },
            "observedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "observedOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "visibility": {
              "enum": [
                "public",
                "internal"
              ]
            },
            "artifactPath": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?!/)(?!.*\\.\\.)(?!.*\\\\)[A-Za-z0-9_./-]+$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "target": {
          "type": "object",
          "anyOf": [
            {
              "properties": {
                "productId": {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                }
              }
            },
            {
              "properties": {
                "reference": {
                  "type": "string",
                  "minLength": 1
                }
              }
            }
          ],
          "required": [
            "productId",
            "reference",
            "label"
          ],
          "properties": {
            "label": {
              "type": "string",
              "minLength": 1
            },
            "productId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reference": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "category": {
          "type": "object",
          "required": [
            "legacyId",
            "name",
            "evidence"
          ],
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyId": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "document": {
          "type": "object",
          "required": [
            "id",
            "kind",
            "title",
            "url",
            "mediaType",
            "scope",
            "contentInspection",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "kind": {
              "enum": [
                "manual",
                "technical_sheet",
                "certificate",
                "unknown",
                "user_manual",
                "installation_manual",
                "parts_diagram",
                "commercial",
                "other",
                "irrelevant"
              ]
            },
            "scope": {
              "type": "object",
              "required": [
                "type",
                "productId"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "product",
                    "related_appliance"
                  ]
                },
                "productId": {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                }
              },
              "additionalProperties": false
            },
            "title": {
              "type": "string",
              "minLength": 1
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "mediaType": {
              "anyOf": [
                {
                  "enum": [
                    "application/pdf",
                    "text/html",
                    "image/jpeg",
                    "image/png"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "reviewStatus": {
              "enum": [
                "relevant",
                "not_relevant",
                "unreadable",
                "wrong_appliance"
              ]
            },
            "contentInspection": {
              "enum": [
                "not_inspected",
                "partially_inspected",
                "inspected"
              ]
            },
            "confirmedAppliance": {
              "type": "string",
              "maxLength": 150
            }
          },
          "additionalProperties": false
        },
        "evidence": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "enum": [
                      "observed",
                      "inferred",
                      "validated"
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "sourceRefs": {
                    "minItems": 1
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unconfirmed"
                  }
                }
              },
              "then": {
                "properties": {
                  "confidence": {
                    "const": "unknown"
                  }
                }
              }
            }
          ],
          "required": [
            "status",
            "confidence",
            "sourceRefs",
            "note"
          ],
          "properties": {
            "note": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "enum": [
                "observed",
                "inferred",
                "unconfirmed",
                "validated"
              ]
            },
            "confidence": {
              "enum": [
                "high",
                "medium",
                "low",
                "unknown"
              ]
            },
            "sourceRefs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "relation": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "qualification": {
                    "const": "confirmed"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "validated"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "target",
            "qualification",
            "evidence"
          ],
          "properties": {
            "target": {
              "$ref": "#/$defs/canonical/$defs/target"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "qualification": {
              "enum": [
                "asserted",
                "confirmed",
                "unknown"
              ]
            }
          },
          "additionalProperties": false
        },
        "appliance": {
          "type": "object",
          "required": [
            "productId",
            "brand",
            "model",
            "reference"
          ],
          "properties": {
            "brand": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "model": {
              "type": "string",
              "minLength": 1
            },
            "productId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reference": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "statement": {
          "type": "object",
          "required": [
            "text",
            "evidence"
          ],
          "properties": {
            "text": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "identifier": {
          "type": "object",
          "required": [
            "kind",
            "value",
            "evidence"
          ],
          "properties": {
            "kind": {
              "enum": [
                "manufacturer_reference_displayed",
                "adaptable_reference",
                "legacy_public_sku",
                "gtin",
                "other",
                "nitech_reference",
                "former_reference",
                "supplier_reference",
                "unknown"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "measurement": {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "kind",
                "amount",
                "unit",
                "qualifier"
              ],
              "properties": {
                "kind": {
                  "const": "number"
                },
                "unit": {
                  "type": "string",
                  "minLength": 1
                },
                "amount": {
                  "type": "string",
                  "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
                },
                "qualifier": {
                  "enum": [
                    "exact",
                    "approximate"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "text",
                "unit",
                "interpretation"
              ],
              "properties": {
                "kind": {
                  "const": "text"
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                },
                "unit": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "interpretation": {
                  "enum": [
                    "literal",
                    "ambiguous"
                  ]
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "availability": {
          "type": "object",
          "required": [
            "status",
            "orderable",
            "observations",
            "evidence"
          ],
          "properties": {
            "status": {
              "enum": [
                "in_stock",
                "out_of_stock",
                "on_order",
                "preorder",
                "unknown",
                "conflicting",
                "on_request",
                "not_for_sale"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "orderable": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "observations": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/availabilityObservation"
              },
              "minItems": 0
            }
          },
          "additionalProperties": false
        },
        "explodedView": {
          "type": "object",
          "required": [
            "id",
            "appliance",
            "planUrl",
            "version",
            "documentIds",
            "occurrences",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "planUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "version": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "appliance": {
              "$ref": "#/$defs/canonical/$defs/appliance"
            },
            "documentIds": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "occurrences": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "productId",
                  "marker"
                ],
                "properties": {
                  "marker": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                  },
                  "productId": {
                    "type": "string",
                    "pattern": "^nitech:product:[1-9][0-9]*$"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            }
          },
          "additionalProperties": false
        },
        "compatibility": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "enum": [
                      "confirmed",
                      "incompatible"
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "validated"
                      }
                    }
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unknown"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "target",
            "status",
            "scope",
            "evidence"
          ],
          "properties": {
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "enum": [
                "asserted",
                "confirmed",
                "incompatible",
                "unknown",
                "conflicting",
                "verified",
                "inferred"
              ]
            },
            "target": {
              "$ref": "#/$defs/canonical/$defs/appliance"
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "verified_at": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "humanDecision": {
          "type": "object",
          "required": [
            "id",
            "outcome",
            "at",
            "sourceFingerprint",
            "sourceRef"
          ],
          "properties": {
            "at": {
              "type": "string",
              "format": "date-time",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
            },
            "id": {
              "type": "integer",
              "minimum": 1
            },
            "outcome": {
              "enum": [
                "relevant",
                "not_relevant",
                "unreadable",
                "wrong_appliance",
                "confirmed",
                "rejected",
                "qualified"
              ]
            },
            "sourceRef": {
              "type": "string",
              "pattern": "^human-decision-[1-9][0-9]*$"
            },
            "sourceFingerprint": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "additionalProperties": false
        },
        "relationGroup": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/relation"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "specification": {
          "type": "object",
          "required": [
            "key",
            "label",
            "value",
            "sourceText",
            "evidence"
          ],
          "properties": {
            "key": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "label": {
              "type": "string",
              "minLength": 1
            },
            "value": {
              "$ref": "#/$defs/canonical/$defs/measurement"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "sourceText": {
              "type": "string",
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "availabilityObservation": {
          "type": "object",
          "required": [
            "sourceRef",
            "channel",
            "reportedStatus",
            "rawValue"
          ],
          "properties": {
            "channel": {
              "enum": [
                "human",
                "jsonld",
                "backoffice"
              ]
            },
            "rawValue": {
              "type": "string",
              "minLength": 1
            },
            "sourceRef": {
              "type": "string",
              "minLength": 1
            },
            "reportedStatus": {
              "enum": [
                "in_stock",
                "out_of_stock",
                "on_order",
                "preorder",
                "for_sale",
                "unknown"
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "recordType": {
                "const": "source_snapshot"
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "snapshot_only"
                      },
                      "expiresAt": {
                        "type": "null"
                      }
                    }
                  }
                }
              },
              "visibility": {
                "properties": {
                  "record": {
                    "const": "internal"
                  },
                  "publication": {
                    "const": "not_approved"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "verification": {
                "properties": {
                  "status": {
                    "const": "pending_business_review"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "verification": {
                "properties": {
                  "verifiedAt": {
                    "type": "null"
                  },
                  "verifiedBy": {
                    "type": "null"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "verification": {
                "properties": {
                  "status": {
                    "const": "approved"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "verification": {
                "properties": {
                  "verifiedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                  },
                  "verifiedBy": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "const": "approved"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "recordType": {
                "const": "canonical_product"
              },
              "verification": {
                "properties": {
                  "status": {
                    "const": "approved"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "bounded"
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "expiresAt": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "record": {
                    "const": "public"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "enum": [
                      "approved",
                      "published_read_only"
                    ]
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.0"
              }
            }
          },
          "else": {
            "allOf": [
              {
                "if": {
                  "properties": {
                    "visibility": {
                      "properties": {
                        "record": {
                          "const": "preview"
                        }
                      }
                    }
                  }
                },
                "then": {
                  "properties": {
                    "recordType": {
                      "const": "canonical_product"
                    },
                    "visibility": {
                      "properties": {
                        "publication": {
                          "const": "not_approved"
                        }
                      }
                    },
                    "verification": {
                      "properties": {
                        "status": {
                          "const": "pending_business_review"
                        }
                      }
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "recordType": {
                      "const": "source_snapshot"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "offer": {
                      "properties": {
                        "freshness": {
                          "properties": {
                            "freshness_status": {
                              "const": "source_snapshot"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "recordType": {
                      "const": "canonical_product"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "offer": {
                      "properties": {
                        "freshness": {
                          "properties": {
                            "freshness_status": {
                              "enum": [
                                "not_certified",
                                "unknown",
                                "current_read"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            ],
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "source_snapshot"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "snapshot_only"
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "not_certified"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "observation_only"
                            },
                            "observed_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "unknown"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "observation_only"
                            },
                            "observed_at": {
                              "type": "null"
                            },
                            "verified_at": {
                              "type": "null"
                            }
                          }
                        }
                      }
                    ],
                    "required": [
                      "source_updated_at",
                      "observed_at",
                      "verified_at",
                      "freshness_status"
                    ],
                    "properties": {
                      "policy": {
                        "enum": [
                          "snapshot_only",
                          "observation_only"
                        ]
                      },
                      "expiresAt": {
                        "type": "null"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "enum": [
                          "in_stock",
                          "out_of_stock",
                          "unknown",
                          "on_request",
                          "not_for_sale"
                        ]
                      }
                    }
                  }
                }
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "allOf": [
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "enum": [
                                  "verified",
                                  "incompatible"
                                ]
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "evidence": {
                                "properties": {
                                  "status": {
                                    "const": "validated"
                                  }
                                }
                              },
                              "verified_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                              }
                            }
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "const": "inferred"
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "evidence": {
                                "properties": {
                                  "status": {
                                    "const": "inferred"
                                  },
                                  "sourceRefs": {
                                    "minItems": 1
                                  }
                                }
                              },
                              "verified_at": {
                                "type": "null"
                              }
                            }
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "const": "unknown"
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "verified_at": {
                                "type": "null"
                              }
                            }
                          }
                        }
                      ],
                      "required": [
                        "verified_at"
                      ],
                      "properties": {
                        "status": {
                          "enum": [
                            "verified",
                            "inferred",
                            "incompatible",
                            "unknown"
                          ]
                        },
                        "evidence": {
                          "properties": {
                            "sourceRefs": {
                              "minItems": 1
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "stock": {
                    "properties": {
                      "quantity": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    }
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "enum": [
                          "snapshot_only",
                          "bounded"
                        ]
                      },
                      "observed_at": {
                        "not": {}
                      },
                      "verified_at": {
                        "not": {}
                      },
                      "freshness_status": {
                        "not": {}
                      },
                      "source_updated_at": {
                        "not": {}
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "enum": [
                          "in_stock",
                          "out_of_stock",
                          "on_order",
                          "preorder",
                          "unknown",
                          "conflicting"
                        ]
                      }
                    }
                  }
                }
              },
              "provenance": {
                "properties": {
                  "sources": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "backoffice",
                            "public_page",
                            "manufacturer_document",
                            "audit_record",
                            "historical_capture"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "visibility": {
                "properties": {
                  "record": {
                    "enum": [
                      "internal",
                      "public"
                    ]
                  }
                }
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "status": {
                          "enum": [
                            "asserted",
                            "confirmed",
                            "incompatible",
                            "unknown",
                            "conflicting"
                          ]
                        },
                        "verified_at": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.0"
              }
            }
          },
          "then": {
            "properties": {
              "names": {
                "properties": {
                  "preferred": {
                    "type": "string"
                  }
                }
              },
              "references": {
                "properties": {
                  "identifiers": {
                    "minItems": 1
                  }
                }
              },
              "classification": {
                "properties": {
                  "brandLabel": {
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    }
                  },
                  "categoryPath": {
                    "minItems": 1
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "const": "published_read_only"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "recordType": {
                "const": "canonical_product"
              },
              "visibility": {
                "properties": {
                  "record": {
                    "const": "public"
                  }
                }
              },
              "verification": {
                "properties": {
                  "status": {
                    "const": "pending_business_review"
                  }
                }
              },
              "schemaVersion": {
                "enum": [
                  "0.1.1",
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "enum": [
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          },
          "else": {
            "properties": {
              "offer": {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "sale_status"
                      ]
                    },
                    {
                      "required": [
                        "order_mode"
                      ]
                    },
                    {
                      "required": [
                        "order_reason"
                      ]
                    },
                    {
                      "required": [
                        "review_reasons"
                      ]
                    }
                  ]
                },
                "properties": {
                  "stock": {
                    "not": {
                      "required": [
                        "counted"
                      ]
                    }
                  },
                  "freshness": {
                    "properties": {
                      "freshness_status": {
                        "not": {
                          "const": "current_read"
                        }
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "not": {
                          "const": "not_for_sale"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "required": [
                  "sale_status",
                  "order_mode",
                  "order_reason",
                  "review_reasons"
                ],
                "properties": {
                  "stock": {
                    "required": [
                      "counted"
                    ]
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "observation_only"
                      },
                      "observed_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "freshness_status": {
                        "const": "current_read"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "orderable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              },
              "recordType": {
                "const": "canonical_product"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.3"
              }
            }
          },
          "else": {
            "properties": {
              "documents": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manual",
                            "technical_sheet",
                            "certificate",
                            "unknown"
                          ]
                        },
                        "decision": {
                          "not": {}
                        },
                        "reviewStatus": {
                          "not": {}
                        },
                        "confirmedAppliance": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              },
              "provenance": {
                "properties": {
                  "sources": {
                    "items": {
                      "properties": {
                        "kind": {
                          "not": {
                            "const": "human_review"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "references": {
                "properties": {
                  "identifiers": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manufacturer_reference_displayed",
                            "adaptable_reference",
                            "legacy_public_sku",
                            "gtin",
                            "other"
                          ]
                        },
                        "decision": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              },
              "humanReview": {
                "not": {}
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "decision": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "required": [
              "humanReview"
            ]
          }
        }
      ],
      "title": "Nitech — produit canonique v0.1",
      "required": [
        "schemaVersion",
        "recordRevision",
        "recordType",
        "identity",
        "references",
        "names",
        "classification",
        "description",
        "specifications",
        "compatibilities",
        "relations",
        "offer",
        "images",
        "documents",
        "explodedViews",
        "provenance",
        "verification",
        "visibility"
      ],
      "properties": {
        "names": {
          "type": "object",
          "required": [
            "preferred",
            "aliases",
            "evidence"
          ],
          "properties": {
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/alias"
              },
              "minItems": 0
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "preferred": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "offer": {
          "type": "object",
          "required": [
            "context",
            "price",
            "stock",
            "availability",
            "delivery",
            "freshness"
          ],
          "properties": {
            "price": {
              "$ref": "#/$defs/canonical/$defs/price"
            },
            "stock": {
              "$ref": "#/$defs/canonical/$defs/stock"
            },
            "context": {
              "type": "object",
              "required": [
                "market",
                "channel",
                "seller",
                "shippingIncluded",
                "evidence"
              ],
              "properties": {
                "market": {
                  "const": "FR"
                },
                "seller": {
                  "const": "Nitech"
                },
                "channel": {
                  "const": "retail"
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "shippingIncluded": {
                  "const": false
                }
              },
              "additionalProperties": false
            },
            "delivery": {
              "type": "object",
              "required": [
                "text",
                "evidence"
              ],
              "properties": {
                "text": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "freshness": {
              "type": "object",
              "required": [
                "asOf",
                "policy",
                "expiresAt",
                "evidence"
              ],
              "properties": {
                "asOf": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "policy": {
                  "enum": [
                    "snapshot_only",
                    "bounded",
                    "observation_only"
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "expiresAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "observed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Heure réelle de lecture courante de la base Nitech."
                },
                "verified_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Instant de vérification métier de cette offre, distinct de sa lecture ; null en l'absence de vérification."
                },
                "freshness_status": {
                  "enum": [
                    "source_snapshot",
                    "not_certified",
                    "unknown",
                    "current_read"
                  ],
                  "description": "current_read : quantité courante observée ; aucun délai de fraîcheur inventé."
                },
                "source_updated_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Précision réelle de la source : date SQL conservée comme date, instant seulement si connu ; null si inconnu."
                }
              },
              "additionalProperties": false
            },
            "order_mode": {
              "enum": [
                "online",
                "contact_only",
                "disabled"
              ]
            },
            "sale_status": {
              "enum": [
                "on_sale",
                "not_on_sale"
              ]
            },
            "availability": {
              "$ref": "#/$defs/canonical/$defs/availability"
            },
            "order_reason": {
              "enum": [
                "not_for_sale",
                "sale_mode_undecided",
                "stock_not_counted",
                "untracked_orders_allowed",
                "stock_empty",
                "unavailable_orders_allowed",
                "stock_available"
              ]
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "enum": [
                  "stock_not_counted",
                  "sale_mode_undecided",
                  "on_sale_not_orderable"
                ]
              },
              "maxItems": 3,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "images": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/image"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "identity": {
          "type": "object",
          "required": [
            "id",
            "legacyPid",
            "kind",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^nitech:product:[1-9][0-9]*$"
            },
            "kind": {
              "enum": [
                "spare_part",
                "product",
                "appliance"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyPid": {
              "type": "integer",
              "minimum": 1
            }
          },
          "additionalProperties": false
        },
        "documents": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/document"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "relations": {
          "type": "object",
          "required": [
            "replaces",
            "replacedBy",
            "alternatives",
            "accessories"
          ],
          "properties": {
            "replaces": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "replacedBy": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "accessories": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "alternatives": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            }
          },
          "additionalProperties": false
        },
        "provenance": {
          "type": "object",
          "required": [
            "snapshotOn",
            "sourceModifiedOn",
            "sources",
            "issues"
          ],
          "properties": {
            "issues": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/issue"
              },
              "minItems": 0
            },
            "sources": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/source"
              },
              "minItems": 1
            },
            "snapshotOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "sourceModifiedOn": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "recordType": {
          "enum": [
            "source_snapshot",
            "canonical_product"
          ]
        },
        "references": {
          "type": "object",
          "required": [
            "merchantSku",
            "identifiers",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "identifiers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/identifier"
              },
              "minItems": 0
            },
            "merchantSku": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "visibility": {
          "type": "object",
          "required": [
            "record",
            "publication",
            "evidence"
          ],
          "properties": {
            "record": {
              "enum": [
                "internal",
                "public",
                "preview"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "publication": {
              "enum": [
                "not_approved",
                "approved",
                "published_read_only"
              ],
              "description": "published_read_only décrit la diffusion publique autorisée sans approbation de revue métier ; approved conserve son sens historique de publication après revue."
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/statement"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "humanReview": {
          "type": "object",
          "required": [
            "status",
            "productFingerprint",
            "reviewedFingerprint",
            "reviewedAt"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending",
                "reviewed"
              ]
            },
            "reviewedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "productFingerprint": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "reviewedFingerprint": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "verification": {
          "type": "object",
          "required": [
            "status",
            "verifiedAt",
            "verifiedBy"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending_business_review",
                "approved"
              ]
            },
            "verifiedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "verifiedBy": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "description": "Revue des assertions qualifiées (evidence.status=validated) et de leur publication examinée ; ne certifie pas chaque observation commerciale ultérieure. Une validation ne se transfère pas à une valeur/provenance modifiée.",
          "additionalProperties": false
        },
        "canonical_url": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://catalogue\\.nitech\\.fr/produits/[1-9][0-9]{0,9}$"
        },
        "explodedViews": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/explodedView"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "schemaVersion": {
          "enum": [
            "0.1.0",
            "0.1.1",
            "0.1.2",
            "0.1.3"
          ]
        },
        "classification": {
          "type": "object",
          "required": [
            "brandLabel",
            "manufacturer",
            "categoryPath",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "brandLabel": {
              "type": "object",
              "required": [
                "name",
                "evidence"
              ],
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "minLength": 1
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "categoryPath": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/category"
              },
              "minItems": 0
            },
            "manufacturer": {
              "type": "object",
              "required": [
                "name",
                "evidence"
              ],
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "recordRevision": {
          "type": "integer",
          "minimum": 1
        },
        "specifications": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/specification"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "compatibilities": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/compatibility"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        }
      },
      "description": "0.1.3 : qualifications humaines distinctes, liées à une source stable ; lecture commerciale courante inchangée.",
      "additionalProperties": false
    }
  },
  "oneOf": [
    {
      "type": "object",
      "allOf": [
        {
          "properties": {
            "offer": {
              "properties": {
                "stock": {
                  "properties": {
                    "quantity": {
                      "type": "null"
                    },
                    "rawQuantity": {
                      "type": "null"
                    }
                  }
                },
                "freshness": {
                  "required": [
                    "source_updated_at",
                    "observed_at",
                    "verified_at",
                    "freshness_status"
                  ],
                  "properties": {
                    "policy": {
                      "const": "observation_only"
                    },
                    "observed_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "freshness_status": {
                      "enum": [
                        "not_certified",
                        "current_read"
                      ]
                    }
                  }
                },
                "availability": {
                  "properties": {
                    "status": {
                      "enum": [
                        "in_stock",
                        "out_of_stock",
                        "unknown",
                        "on_request",
                        "not_for_sale"
                      ]
                    }
                  }
                }
              }
            },
            "visibility": {
              "anyOf": [
                {
                  "properties": {
                    "record": {
                      "const": "preview"
                    },
                    "publication": {
                      "const": "not_approved"
                    }
                  }
                },
                {
                  "properties": {
                    "record": {
                      "const": "public"
                    },
                    "publication": {
                      "const": "published_read_only"
                    }
                  }
                }
              ]
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "enum": [
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          },
          "else": {
            "properties": {
              "offer": {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "sale_status"
                      ]
                    },
                    {
                      "required": [
                        "order_mode"
                      ]
                    },
                    {
                      "required": [
                        "order_reason"
                      ]
                    },
                    {
                      "required": [
                        "review_reasons"
                      ]
                    }
                  ]
                },
                "properties": {
                  "stock": {
                    "not": {
                      "required": [
                        "counted"
                      ]
                    }
                  },
                  "freshness": {
                    "properties": {
                      "freshness_status": {
                        "not": {
                          "const": "current_read"
                        }
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "not": {
                          "const": "not_for_sale"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "required": [
                  "sale_status",
                  "order_mode",
                  "order_reason",
                  "review_reasons"
                ],
                "properties": {
                  "stock": {
                    "required": [
                      "counted"
                    ]
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "observation_only"
                      },
                      "observed_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "freshness_status": {
                        "const": "current_read"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "orderable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              },
              "recordType": {
                "const": "canonical_product"
              }
            }
          }
        }
      ],
      "required": [
        "schemaVersion",
        "identity",
        "references",
        "offer",
        "provenance",
        "verification",
        "visibility"
      ],
      "properties": {
        "offer": {
          "type": "object",
          "required": [
            "context",
            "price",
            "stock",
            "availability",
            "delivery",
            "freshness"
          ],
          "properties": {
            "price": {
              "$ref": "#/$defs/canonical/$defs/price"
            },
            "stock": {
              "$ref": "#/$defs/canonical/$defs/stock"
            },
            "context": {
              "type": "object",
              "required": [
                "market",
                "channel",
                "seller",
                "shippingIncluded",
                "evidence"
              ],
              "properties": {
                "market": {
                  "const": "FR"
                },
                "seller": {
                  "const": "Nitech"
                },
                "channel": {
                  "const": "retail"
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "shippingIncluded": {
                  "const": false
                }
              },
              "additionalProperties": false
            },
            "delivery": {
              "type": "object",
              "required": [
                "text",
                "evidence"
              ],
              "properties": {
                "text": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "freshness": {
              "type": "object",
              "required": [
                "asOf",
                "policy",
                "expiresAt",
                "evidence"
              ],
              "properties": {
                "asOf": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "policy": {
                  "enum": [
                    "snapshot_only",
                    "bounded",
                    "observation_only"
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "expiresAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "observed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Heure réelle de lecture courante de la base Nitech."
                },
                "verified_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Instant de vérification métier de cette offre, distinct de sa lecture ; null en l'absence de vérification."
                },
                "freshness_status": {
                  "enum": [
                    "source_snapshot",
                    "not_certified",
                    "unknown",
                    "current_read"
                  ],
                  "description": "current_read : quantité courante observée ; aucun délai de fraîcheur inventé."
                },
                "source_updated_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Précision réelle de la source : date SQL conservée comme date, instant seulement si connu ; null si inconnu."
                }
              },
              "additionalProperties": false
            },
            "order_mode": {
              "enum": [
                "online",
                "contact_only",
                "disabled"
              ]
            },
            "sale_status": {
              "enum": [
                "on_sale",
                "not_on_sale"
              ]
            },
            "availability": {
              "$ref": "#/$defs/canonical/$defs/availability"
            },
            "order_reason": {
              "enum": [
                "not_for_sale",
                "sale_mode_undecided",
                "stock_not_counted",
                "untracked_orders_allowed",
                "stock_empty",
                "unavailable_orders_allowed",
                "stock_available"
              ]
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "enum": [
                  "stock_not_counted",
                  "sale_mode_undecided",
                  "on_sale_not_orderable"
                ]
              },
              "maxItems": 3,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "identity": {
          "type": "object",
          "required": [
            "id",
            "legacyPid",
            "kind",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^nitech:product:[1-9][0-9]*$"
            },
            "kind": {
              "enum": [
                "spare_part",
                "product",
                "appliance"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyPid": {
              "type": "integer",
              "minimum": 1
            }
          },
          "additionalProperties": false
        },
        "provenance": {
          "type": "object",
          "required": [
            "snapshotOn",
            "sourceModifiedOn",
            "sources",
            "issues"
          ],
          "properties": {
            "issues": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/issue"
              },
              "minItems": 0
            },
            "sources": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/source"
              },
              "minItems": 1
            },
            "snapshotOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "sourceModifiedOn": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "references": {
          "type": "object",
          "required": [
            "merchantSku",
            "identifiers",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "identifiers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/identifier"
              },
              "minItems": 0
            },
            "merchantSku": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "visibility": {
          "type": "object",
          "required": [
            "record",
            "publication",
            "evidence"
          ],
          "properties": {
            "record": {
              "enum": [
                "internal",
                "public",
                "preview"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "publication": {
              "enum": [
                "not_approved",
                "approved",
                "published_read_only"
              ],
              "description": "published_read_only décrit la diffusion publique autorisée sans approbation de revue métier ; approved conserve son sens historique de publication après revue."
            }
          },
          "additionalProperties": false
        },
        "verification": {
          "type": "object",
          "required": [
            "status",
            "verifiedAt",
            "verifiedBy"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending_business_review",
                "approved"
              ]
            },
            "verifiedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "verifiedBy": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "description": "Revue des assertions qualifiées (evidence.status=validated) et de leur publication examinée ; ne certifie pas chaque observation commerciale ultérieure. Une validation ne se transfère pas à une valeur/provenance modifiée.",
          "additionalProperties": false
        },
        "schemaVersion": {
          "enum": [
            "0.1.1",
            "0.1.2",
            "0.1.3"
          ]
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[A-Z_]{3,64}$"
            },
            "message": {
              "type": "string",
              "maxLength": 500,
              "minLength": 1
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Generated by bin/build-mcp-schemas.py; authoritative product definitions remain in nitech-product-v0.1.schema.json."
}
get_offer annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_products
Advertised by the server during the last successful anonymous check.
Advertised read-only

Rechercher dans le catalogue actif par PID, référence observée, ancienne référence, désignation, marque ou appareil lié. Résultats courts et bornés ; conserver les incertitudes, puis appeler get_product par PID.

search_products input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "field": {
      "enum": [
        "auto",
        "pid",
        "nitech_reference",
        "manufacturer_reference",
        "former_reference",
        "designation",
        "brand",
        "model"
      ]
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "pattern": "^[^\\u0000-\\u001f\\u007f]*$",
      "maxLength": 120,
      "minLength": 1
    },
    "after_pid": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
search_products output schema
{
  "type": "object",
  "$defs": {},
  "oneOf": [
    {
      "type": "object",
      "required": [
        "query",
        "field",
        "scope",
        "status",
        "results",
        "limit",
        "next_after_pid",
        "observed_at",
        "uncertainties"
      ],
      "properties": {
        "field": {
          "enum": [
            "auto",
            "pid",
            "nitech_reference",
            "manufacturer_reference",
            "former_reference",
            "designation",
            "brand",
            "model"
          ]
        },
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 20,
          "minimum": 1
        },
        "query": {
          "type": "string",
          "maxLength": 120
        },
        "scope": {
          "const": "active_catalogue"
        },
        "status": {
          "enum": [
            "exact",
            "possible",
            "no_match",
            "too_vague",
            "uncertain"
          ]
        },
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "product_id",
              "designation",
              "references",
              "brand",
              "associated_models",
              "match_type",
              "qualification_status",
              "uncertainties",
              "source"
            ],
            "properties": {
              "brand": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000,
                "minLength": 1
              },
              "source": {
                "type": "object",
                "required": [
                  "kind",
                  "product_id",
                  "observed_at"
                ],
                "properties": {
                  "kind": {
                    "const": "catalogue_read"
                  },
                  "product_id": {
                    "type": "integer",
                    "maximum": 2147483647,
                    "minimum": 1
                  },
                  "observed_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "additionalProperties": false
              },
              "match_type": {
                "enum": [
                  "exact",
                  "probable",
                  "partial"
                ]
              },
              "product_id": {
                "type": "integer",
                "maximum": 2147483647,
                "minimum": 1
              },
              "references": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "value",
                    "kind",
                    "source"
                  ],
                  "properties": {
                    "kind": {
                      "enum": [
                        "catalogue_reference",
                        "manufacturer_reference",
                        "former_reference",
                        "internal_reference",
                        "unknown"
                      ]
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 2000,
                      "minLength": 1
                    },
                    "source": {
                      "type": "object",
                      "required": [
                        "kind",
                        "product_id",
                        "observed_at"
                      ],
                      "properties": {
                        "kind": {
                          "const": "catalogue_read"
                        },
                        "product_id": {
                          "type": "integer",
                          "maximum": 2147483647,
                          "minimum": 1
                        },
                        "observed_at": {
                          "type": "string",
                          "format": "date-time"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 40
              },
              "designation": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000,
                "minLength": 1
              },
              "canonical_url": {
                "type": "string",
                "format": "uri",
                "pattern": "^https://catalogue\\.nitech\\.fr/produits/[1-9][0-9]{0,9}$"
              },
              "uncertainties": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z_]{3,80}$"
                },
                "maxItems": 12
              },
              "associated_models": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "product_id",
                    "designation",
                    "reference",
                    "reference_kind",
                    "relation"
                  ],
                  "properties": {
                    "relation": {
                      "const": "catalogue_appliance_link"
                    },
                    "reference": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "maxLength": 2000,
                      "minLength": 1
                    },
                    "product_id": {
                      "type": "integer",
                      "maximum": 2147483647,
                      "minimum": 1
                    },
                    "designation": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "maxLength": 2000,
                      "minLength": 1
                    },
                    "reference_kind": {
                      "const": "catalogue_reference"
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 5
              },
              "qualification_status": {
                "enum": [
                  "pilot_qualified",
                  "provisional"
                ]
              }
            },
            "additionalProperties": false
          },
          "maxItems": 20
        },
        "observed_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "format": "date-time"
        },
        "uncertainties": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z_]{3,80}$"
          },
          "maxItems": 12
        },
        "next_after_pid": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "maximum": 2147483647,
          "minimum": 1
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[A-Z_]{3,64}$"
            },
            "message": {
              "type": "string",
              "maxLength": 500,
              "minLength": 1
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
search_products annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_product_documents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lire les seuls documents connus et publiables du produit ou de ses appareils liés, avec leur type et les contrôles humains applicables à leur source. Les autres contenus restent à vérifier ; aucune qualification n'est déduite automatiquement.

get_product_documents input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product_id"
  ],
  "properties": {
    "product_id": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "PID interne du catalogue actif. PID1843 est le pilote qualifié ; les autres projections restent provisoires en recette."
    }
  },
  "additionalProperties": false
}
get_product_documents output schema
{
  "type": "object",
  "$defs": {
    "canonical": {
      "type": "object",
      "$defs": {
        "alias": {
          "type": "object",
          "required": [
            "value",
            "kind",
            "evidence"
          ],
          "properties": {
            "kind": {
              "enum": [
                "commercial_name",
                "spelling_variant"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "https": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://[^\\s]+$"
        },
        "image": {
          "type": "object",
          "required": [
            "url",
            "role",
            "mediaType",
            "evidence"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "pattern": "^https://[^\\s]+$"
            },
            "role": {
              "enum": [
                "primary",
                "secondary"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "mediaType": {
              "anyOf": [
                {
                  "enum": [
                    "image/jpeg",
                    "image/png",
                    "image/webp",
                    "image/avif"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "issue": {
          "type": "object",
          "required": [
            "code",
            "path",
            "severity",
            "message",
            "sourceRefs"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "path": {
              "type": "string",
              "pattern": "^/"
            },
            "message": {
              "type": "string",
              "minLength": 1
            },
            "severity": {
              "enum": [
                "info",
                "review_required",
                "publication_blocker"
              ]
            },
            "sourceRefs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "price": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unknown"
                  }
                }
              },
              "then": {
                "properties": {
                  "taxRate": {
                    "type": "null"
                  },
                  "amountHt": {
                    "type": "null"
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  },
                  "amountTtc": {
                    "type": "null"
                  },
                  "validUntil": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "observed"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "enum": [
                          "observed",
                          "validated"
                        ]
                      }
                    }
                  },
                  "amountTtc": {
                    "type": "string",
                    "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "validUntil": {
                    "type": "string"
                  }
                }
              },
              "else": {
                "properties": {
                  "validityEvidence": {
                    "type": "null"
                  }
                }
              },
              "then": {
                "properties": {
                  "validityEvidence": {
                    "$ref": "#/$defs/canonical/$defs/evidence"
                  }
                }
              }
            }
          ],
          "required": [
            "status",
            "amountTtc",
            "amountHt",
            "currency",
            "taxRate",
            "validUntil",
            "evidence",
            "validityEvidence"
          ],
          "properties": {
            "status": {
              "enum": [
                "observed",
                "unknown"
              ]
            },
            "taxRate": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]{0,2})(?:\\.[0-9]{1,2})?$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "amountHt": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "currency": {
              "const": "EUR"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "amountTtc": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?:0|[1-9][0-9]*)\\.[0-9]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validUntil": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validityEvidence": {
              "anyOf": [
                {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "stock": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "managed": {
                    "enum": [
                      false,
                      null
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "quantity": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "visibility": {
                    "const": "public"
                  }
                }
              },
              "then": {
                "properties": {
                  "quantity": {
                    "type": "null"
                  },
                  "rawQuantity": {
                    "type": "null"
                  }
                }
              }
            }
          ],
          "required": [
            "managed",
            "quantity",
            "rawQuantity",
            "visibility",
            "evidence"
          ],
          "properties": {
            "counted": {
              "type": "boolean"
            },
            "managed": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "quantity": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            },
            "visibility": {
              "enum": [
                "internal",
                "public"
              ]
            },
            "rawQuantity": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "source": {
          "type": "object",
          "allOf": [
            {
              "anyOf": [
                {
                  "properties": {
                    "url": {
                      "$ref": "#/$defs/canonical/$defs/https"
                    }
                  }
                },
                {
                  "properties": {
                    "artifactPath": {
                      "type": "string"
                    }
                  }
                },
                {
                  "properties": {
                    "kind": {
                      "const": "catalogue_read"
                    }
                  }
                },
                {
                  "properties": {
                    "kind": {
                      "const": "human_review"
                    }
                  }
                }
              ]
            },
            {
              "if": {
                "properties": {
                  "visibility": {
                    "const": "public"
                  }
                }
              },
              "then": {
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "catalogue_read",
                            "human_review"
                          ]
                        }
                      }
                    },
                    "else": {
                      "properties": {
                        "url": {
                          "$ref": "#/$defs/canonical/$defs/https"
                        }
                      }
                    },
                    "then": {
                      "type": "object"
                    }
                  }
                ],
                "properties": {
                  "artifactPath": {
                    "type": "null"
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "kind": {
                    "const": "catalogue_read"
                  }
                }
              },
              "then": {
                "properties": {
                  "observedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                  }
                }
              }
            }
          ],
          "required": [
            "id",
            "kind",
            "url",
            "artifactPath",
            "locator",
            "observedOn",
            "observedAt",
            "visibility",
            "sha256"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "kind": {
              "enum": [
                "backoffice",
                "public_page",
                "manufacturer_document",
                "audit_record",
                "historical_capture",
                "catalogue_read",
                "human_review"
              ]
            },
            "sha256": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-fA-F0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "locator": {
              "type": "string",
              "minLength": 1
            },
            "observedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "observedOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "visibility": {
              "enum": [
                "public",
                "internal"
              ]
            },
            "artifactPath": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(?!/)(?!.*\\.\\.)(?!.*\\\\)[A-Za-z0-9_./-]+$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "target": {
          "type": "object",
          "anyOf": [
            {
              "properties": {
                "productId": {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                }
              }
            },
            {
              "properties": {
                "reference": {
                  "type": "string",
                  "minLength": 1
                }
              }
            }
          ],
          "required": [
            "productId",
            "reference",
            "label"
          ],
          "properties": {
            "label": {
              "type": "string",
              "minLength": 1
            },
            "productId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reference": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "category": {
          "type": "object",
          "required": [
            "legacyId",
            "name",
            "evidence"
          ],
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyId": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "document": {
          "type": "object",
          "required": [
            "id",
            "kind",
            "title",
            "url",
            "mediaType",
            "scope",
            "contentInspection",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "kind": {
              "enum": [
                "manual",
                "technical_sheet",
                "certificate",
                "unknown",
                "user_manual",
                "installation_manual",
                "parts_diagram",
                "commercial",
                "other",
                "irrelevant"
              ]
            },
            "scope": {
              "type": "object",
              "required": [
                "type",
                "productId"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "product",
                    "related_appliance"
                  ]
                },
                "productId": {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                }
              },
              "additionalProperties": false
            },
            "title": {
              "type": "string",
              "minLength": 1
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "mediaType": {
              "anyOf": [
                {
                  "enum": [
                    "application/pdf",
                    "text/html",
                    "image/jpeg",
                    "image/png"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "reviewStatus": {
              "enum": [
                "relevant",
                "not_relevant",
                "unreadable",
                "wrong_appliance"
              ]
            },
            "contentInspection": {
              "enum": [
                "not_inspected",
                "partially_inspected",
                "inspected"
              ]
            },
            "confirmedAppliance": {
              "type": "string",
              "maxLength": 150
            }
          },
          "additionalProperties": false
        },
        "evidence": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "enum": [
                      "observed",
                      "inferred",
                      "validated"
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "sourceRefs": {
                    "minItems": 1
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unconfirmed"
                  }
                }
              },
              "then": {
                "properties": {
                  "confidence": {
                    "const": "unknown"
                  }
                }
              }
            }
          ],
          "required": [
            "status",
            "confidence",
            "sourceRefs",
            "note"
          ],
          "properties": {
            "note": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "enum": [
                "observed",
                "inferred",
                "unconfirmed",
                "validated"
              ]
            },
            "confidence": {
              "enum": [
                "high",
                "medium",
                "low",
                "unknown"
              ]
            },
            "sourceRefs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "relation": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "qualification": {
                    "const": "confirmed"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "validated"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "target",
            "qualification",
            "evidence"
          ],
          "properties": {
            "target": {
              "$ref": "#/$defs/canonical/$defs/target"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "qualification": {
              "enum": [
                "asserted",
                "confirmed",
                "unknown"
              ]
            }
          },
          "additionalProperties": false
        },
        "appliance": {
          "type": "object",
          "required": [
            "productId",
            "brand",
            "model",
            "reference"
          ],
          "properties": {
            "brand": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "model": {
              "type": "string",
              "minLength": 1
            },
            "productId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^nitech:product:[1-9][0-9]*$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reference": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "statement": {
          "type": "object",
          "required": [
            "text",
            "evidence"
          ],
          "properties": {
            "text": {
              "type": "string",
              "minLength": 1
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "identifier": {
          "type": "object",
          "required": [
            "kind",
            "value",
            "evidence"
          ],
          "properties": {
            "kind": {
              "enum": [
                "manufacturer_reference_displayed",
                "adaptable_reference",
                "legacy_public_sku",
                "gtin",
                "other",
                "nitech_reference",
                "former_reference",
                "supplier_reference",
                "unknown"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "measurement": {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "kind",
                "amount",
                "unit",
                "qualifier"
              ],
              "properties": {
                "kind": {
                  "const": "number"
                },
                "unit": {
                  "type": "string",
                  "minLength": 1
                },
                "amount": {
                  "type": "string",
                  "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
                },
                "qualifier": {
                  "enum": [
                    "exact",
                    "approximate"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "text",
                "unit",
                "interpretation"
              ],
              "properties": {
                "kind": {
                  "const": "text"
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                },
                "unit": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "interpretation": {
                  "enum": [
                    "literal",
                    "ambiguous"
                  ]
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "availability": {
          "type": "object",
          "required": [
            "status",
            "orderable",
            "observations",
            "evidence"
          ],
          "properties": {
            "status": {
              "enum": [
                "in_stock",
                "out_of_stock",
                "on_order",
                "preorder",
                "unknown",
                "conflicting",
                "on_request",
                "not_for_sale"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "orderable": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "observations": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/availabilityObservation"
              },
              "minItems": 0
            }
          },
          "additionalProperties": false
        },
        "explodedView": {
          "type": "object",
          "required": [
            "id",
            "appliance",
            "planUrl",
            "version",
            "documentIds",
            "occurrences",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9-]*$"
            },
            "planUrl": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uri",
                  "pattern": "^https://[^\\s]+$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "version": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "appliance": {
              "$ref": "#/$defs/canonical/$defs/appliance"
            },
            "documentIds": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "occurrences": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "productId",
                  "marker"
                ],
                "properties": {
                  "marker": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                  },
                  "productId": {
                    "type": "string",
                    "pattern": "^nitech:product:[1-9][0-9]*$"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            }
          },
          "additionalProperties": false
        },
        "compatibility": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "status": {
                    "enum": [
                      "confirmed",
                      "incompatible"
                    ]
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "validated"
                      }
                    }
                  }
                }
              }
            },
            {
              "if": {
                "properties": {
                  "status": {
                    "const": "unknown"
                  }
                }
              },
              "then": {
                "properties": {
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "target",
            "status",
            "scope",
            "evidence"
          ],
          "properties": {
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "enum": [
                "asserted",
                "confirmed",
                "incompatible",
                "unknown",
                "conflicting",
                "verified",
                "inferred"
              ]
            },
            "target": {
              "$ref": "#/$defs/canonical/$defs/appliance"
            },
            "decision": {
              "$ref": "#/$defs/canonical/$defs/humanDecision"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "verified_at": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "humanDecision": {
          "type": "object",
          "required": [
            "id",
            "outcome",
            "at",
            "sourceFingerprint",
            "sourceRef"
          ],
          "properties": {
            "at": {
              "type": "string",
              "format": "date-time",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
            },
            "id": {
              "type": "integer",
              "minimum": 1
            },
            "outcome": {
              "enum": [
                "relevant",
                "not_relevant",
                "unreadable",
                "wrong_appliance",
                "confirmed",
                "rejected",
                "qualified"
              ]
            },
            "sourceRef": {
              "type": "string",
              "pattern": "^human-decision-[1-9][0-9]*$"
            },
            "sourceFingerprint": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "additionalProperties": false
        },
        "relationGroup": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/relation"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "specification": {
          "type": "object",
          "required": [
            "key",
            "label",
            "value",
            "sourceText",
            "evidence"
          ],
          "properties": {
            "key": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "label": {
              "type": "string",
              "minLength": 1
            },
            "value": {
              "$ref": "#/$defs/canonical/$defs/measurement"
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "sourceText": {
              "type": "string",
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "availabilityObservation": {
          "type": "object",
          "required": [
            "sourceRef",
            "channel",
            "reportedStatus",
            "rawValue"
          ],
          "properties": {
            "channel": {
              "enum": [
                "human",
                "jsonld",
                "backoffice"
              ]
            },
            "rawValue": {
              "type": "string",
              "minLength": 1
            },
            "sourceRef": {
              "type": "string",
              "minLength": 1
            },
            "reportedStatus": {
              "enum": [
                "in_stock",
                "out_of_stock",
                "on_order",
                "preorder",
                "for_sale",
                "unknown"
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "recordType": {
                "const": "source_snapshot"
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "snapshot_only"
                      },
                      "expiresAt": {
                        "type": "null"
                      }
                    }
                  }
                }
              },
              "visibility": {
                "properties": {
                  "record": {
                    "const": "internal"
                  },
                  "publication": {
                    "const": "not_approved"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "verification": {
                "properties": {
                  "status": {
                    "const": "pending_business_review"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "verification": {
                "properties": {
                  "verifiedAt": {
                    "type": "null"
                  },
                  "verifiedBy": {
                    "type": "null"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "verification": {
                "properties": {
                  "status": {
                    "const": "approved"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "verification": {
                "properties": {
                  "verifiedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                  },
                  "verifiedBy": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "const": "approved"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "recordType": {
                "const": "canonical_product"
              },
              "verification": {
                "properties": {
                  "status": {
                    "const": "approved"
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "bounded"
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "properties": {
                      "expiresAt": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "record": {
                    "const": "public"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "enum": [
                      "approved",
                      "published_read_only"
                    ]
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.0"
              }
            }
          },
          "else": {
            "allOf": [
              {
                "if": {
                  "properties": {
                    "visibility": {
                      "properties": {
                        "record": {
                          "const": "preview"
                        }
                      }
                    }
                  }
                },
                "then": {
                  "properties": {
                    "recordType": {
                      "const": "canonical_product"
                    },
                    "visibility": {
                      "properties": {
                        "publication": {
                          "const": "not_approved"
                        }
                      }
                    },
                    "verification": {
                      "properties": {
                        "status": {
                          "const": "pending_business_review"
                        }
                      }
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "recordType": {
                      "const": "source_snapshot"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "offer": {
                      "properties": {
                        "freshness": {
                          "properties": {
                            "freshness_status": {
                              "const": "source_snapshot"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "recordType": {
                      "const": "canonical_product"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "offer": {
                      "properties": {
                        "freshness": {
                          "properties": {
                            "freshness_status": {
                              "enum": [
                                "not_certified",
                                "unknown",
                                "current_read"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            ],
            "properties": {
              "offer": {
                "properties": {
                  "freshness": {
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "source_snapshot"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "snapshot_only"
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "not_certified"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "observation_only"
                            },
                            "observed_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "freshness_status": {
                              "const": "unknown"
                            }
                          }
                        },
                        "then": {
                          "properties": {
                            "policy": {
                              "const": "observation_only"
                            },
                            "observed_at": {
                              "type": "null"
                            },
                            "verified_at": {
                              "type": "null"
                            }
                          }
                        }
                      }
                    ],
                    "required": [
                      "source_updated_at",
                      "observed_at",
                      "verified_at",
                      "freshness_status"
                    ],
                    "properties": {
                      "policy": {
                        "enum": [
                          "snapshot_only",
                          "observation_only"
                        ]
                      },
                      "expiresAt": {
                        "type": "null"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "enum": [
                          "in_stock",
                          "out_of_stock",
                          "unknown",
                          "on_request",
                          "not_for_sale"
                        ]
                      }
                    }
                  }
                }
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "allOf": [
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "enum": [
                                  "verified",
                                  "incompatible"
                                ]
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "evidence": {
                                "properties": {
                                  "status": {
                                    "const": "validated"
                                  }
                                }
                              },
                              "verified_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                              }
                            }
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "const": "inferred"
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "evidence": {
                                "properties": {
                                  "status": {
                                    "const": "inferred"
                                  },
                                  "sourceRefs": {
                                    "minItems": 1
                                  }
                                }
                              },
                              "verified_at": {
                                "type": "null"
                              }
                            }
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "status": {
                                "const": "unknown"
                              }
                            }
                          },
                          "then": {
                            "properties": {
                              "verified_at": {
                                "type": "null"
                              }
                            }
                          }
                        }
                      ],
                      "required": [
                        "verified_at"
                      ],
                      "properties": {
                        "status": {
                          "enum": [
                            "verified",
                            "inferred",
                            "incompatible",
                            "unknown"
                          ]
                        },
                        "evidence": {
                          "properties": {
                            "sourceRefs": {
                              "minItems": 1
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "properties": {
                  "stock": {
                    "properties": {
                      "quantity": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    }
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "enum": [
                          "snapshot_only",
                          "bounded"
                        ]
                      },
                      "observed_at": {
                        "not": {}
                      },
                      "verified_at": {
                        "not": {}
                      },
                      "freshness_status": {
                        "not": {}
                      },
                      "source_updated_at": {
                        "not": {}
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "enum": [
                          "in_stock",
                          "out_of_stock",
                          "on_order",
                          "preorder",
                          "unknown",
                          "conflicting"
                        ]
                      }
                    }
                  }
                }
              },
              "provenance": {
                "properties": {
                  "sources": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "backoffice",
                            "public_page",
                            "manufacturer_document",
                            "audit_record",
                            "historical_capture"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "visibility": {
                "properties": {
                  "record": {
                    "enum": [
                      "internal",
                      "public"
                    ]
                  }
                }
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "status": {
                          "enum": [
                            "asserted",
                            "confirmed",
                            "incompatible",
                            "unknown",
                            "conflicting"
                          ]
                        },
                        "verified_at": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.0"
              }
            }
          },
          "then": {
            "properties": {
              "names": {
                "properties": {
                  "preferred": {
                    "type": "string"
                  }
                }
              },
              "references": {
                "properties": {
                  "identifiers": {
                    "minItems": 1
                  }
                }
              },
              "classification": {
                "properties": {
                  "brandLabel": {
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    }
                  },
                  "categoryPath": {
                    "minItems": 1
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "visibility": {
                "properties": {
                  "publication": {
                    "const": "published_read_only"
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "recordType": {
                "const": "canonical_product"
              },
              "visibility": {
                "properties": {
                  "record": {
                    "const": "public"
                  }
                }
              },
              "verification": {
                "properties": {
                  "status": {
                    "const": "pending_business_review"
                  }
                }
              },
              "schemaVersion": {
                "enum": [
                  "0.1.1",
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "enum": [
                  "0.1.2",
                  "0.1.3"
                ]
              }
            }
          },
          "else": {
            "properties": {
              "offer": {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "sale_status"
                      ]
                    },
                    {
                      "required": [
                        "order_mode"
                      ]
                    },
                    {
                      "required": [
                        "order_reason"
                      ]
                    },
                    {
                      "required": [
                        "review_reasons"
                      ]
                    }
                  ]
                },
                "properties": {
                  "stock": {
                    "not": {
                      "required": [
                        "counted"
                      ]
                    }
                  },
                  "freshness": {
                    "properties": {
                      "freshness_status": {
                        "not": {
                          "const": "current_read"
                        }
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "status": {
                        "not": {
                          "const": "not_for_sale"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "offer": {
                "required": [
                  "sale_status",
                  "order_mode",
                  "order_reason",
                  "review_reasons"
                ],
                "properties": {
                  "stock": {
                    "required": [
                      "counted"
                    ]
                  },
                  "freshness": {
                    "properties": {
                      "policy": {
                        "const": "observation_only"
                      },
                      "observed_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "freshness_status": {
                        "const": "current_read"
                      }
                    }
                  },
                  "availability": {
                    "properties": {
                      "orderable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              },
              "recordType": {
                "const": "canonical_product"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "schemaVersion": {
                "const": "0.1.3"
              }
            }
          },
          "else": {
            "properties": {
              "documents": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manual",
                            "technical_sheet",
                            "certificate",
                            "unknown"
                          ]
                        },
                        "decision": {
                          "not": {}
                        },
                        "reviewStatus": {
                          "not": {}
                        },
                        "confirmedAppliance": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              },
              "provenance": {
                "properties": {
                  "sources": {
                    "items": {
                      "properties": {
                        "kind": {
                          "not": {
                            "const": "human_review"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "references": {
                "properties": {
                  "identifiers": {
                    "items": {
                      "properties": {
                        "kind": {
                          "enum": [
                            "manufacturer_reference_displayed",
                            "adaptable_reference",
                            "legacy_public_sku",
                            "gtin",
                            "other"
                          ]
                        },
                        "decision": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              },
              "humanReview": {
                "not": {}
              },
              "compatibilities": {
                "properties": {
                  "items": {
                    "items": {
                      "properties": {
                        "decision": {
                          "not": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "then": {
            "required": [
              "humanReview"
            ]
          }
        }
      ],
      "title": "Nitech — produit canonique v0.1",
      "required": [
        "schemaVersion",
        "recordRevision",
        "recordType",
        "identity",
        "references",
        "names",
        "classification",
        "description",
        "specifications",
        "compatibilities",
        "relations",
        "offer",
        "images",
        "documents",
        "explodedViews",
        "provenance",
        "verification",
        "visibility"
      ],
      "properties": {
        "names": {
          "type": "object",
          "required": [
            "preferred",
            "aliases",
            "evidence"
          ],
          "properties": {
            "aliases": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/alias"
              },
              "minItems": 0
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "preferred": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "offer": {
          "type": "object",
          "required": [
            "context",
            "price",
            "stock",
            "availability",
            "delivery",
            "freshness"
          ],
          "properties": {
            "price": {
              "$ref": "#/$defs/canonical/$defs/price"
            },
            "stock": {
              "$ref": "#/$defs/canonical/$defs/stock"
            },
            "context": {
              "type": "object",
              "required": [
                "market",
                "channel",
                "seller",
                "shippingIncluded",
                "evidence"
              ],
              "properties": {
                "market": {
                  "const": "FR"
                },
                "seller": {
                  "const": "Nitech"
                },
                "channel": {
                  "const": "retail"
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "shippingIncluded": {
                  "const": false
                }
              },
              "additionalProperties": false
            },
            "delivery": {
              "type": "object",
              "required": [
                "text",
                "evidence"
              ],
              "properties": {
                "text": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "freshness": {
              "type": "object",
              "required": [
                "asOf",
                "policy",
                "expiresAt",
                "evidence"
              ],
              "properties": {
                "asOf": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "policy": {
                  "enum": [
                    "snapshot_only",
                    "bounded",
                    "observation_only"
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                },
                "expiresAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "observed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Heure réelle de lecture courante de la base Nitech."
                },
                "verified_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Instant de vérification métier de cette offre, distinct de sa lecture ; null en l'absence de vérification."
                },
                "freshness_status": {
                  "enum": [
                    "source_snapshot",
                    "not_certified",
                    "unknown",
                    "current_read"
                  ],
                  "description": "current_read : quantité courante observée ; aucun délai de fraîcheur inventé."
                },
                "source_updated_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Précision réelle de la source : date SQL conservée comme date, instant seulement si connu ; null si inconnu."
                }
              },
              "additionalProperties": false
            },
            "order_mode": {
              "enum": [
                "online",
                "contact_only",
                "disabled"
              ]
            },
            "sale_status": {
              "enum": [
                "on_sale",
                "not_on_sale"
              ]
            },
            "availability": {
              "$ref": "#/$defs/canonical/$defs/availability"
            },
            "order_reason": {
              "enum": [
                "not_for_sale",
                "sale_mode_undecided",
                "stock_not_counted",
                "untracked_orders_allowed",
                "stock_empty",
                "unavailable_orders_allowed",
                "stock_available"
              ]
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "enum": [
                  "stock_not_counted",
                  "sale_mode_undecided",
                  "on_sale_not_orderable"
                ]
              },
              "maxItems": 3,
              "uniqueItems": true
            }
          },
          "additionalProperties": false
        },
        "images": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/image"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "identity": {
          "type": "object",
          "required": [
            "id",
            "legacyPid",
            "kind",
            "evidence"
          ],
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^nitech:product:[1-9][0-9]*$"
            },
            "kind": {
              "enum": [
                "spare_part",
                "product",
                "appliance"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "legacyPid": {
              "type": "integer",
              "minimum": 1
            }
          },
          "additionalProperties": false
        },
        "documents": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/document"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "relations": {
          "type": "object",
          "required": [
            "replaces",
            "replacedBy",
            "alternatives",
            "accessories"
          ],
          "properties": {
            "replaces": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "replacedBy": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "accessories": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            },
            "alternatives": {
              "$ref": "#/$defs/canonical/$defs/relationGroup"
            }
          },
          "additionalProperties": false
        },
        "provenance": {
          "type": "object",
          "required": [
            "snapshotOn",
            "sourceModifiedOn",
            "sources",
            "issues"
          ],
          "properties": {
            "issues": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/issue"
              },
              "minItems": 0
            },
            "sources": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/source"
              },
              "minItems": 1
            },
            "snapshotOn": {
              "type": "string",
              "format": "date",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "sourceModifiedOn": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "recordType": {
          "enum": [
            "source_snapshot",
            "canonical_product"
          ]
        },
        "references": {
          "type": "object",
          "required": [
            "merchantSku",
            "identifiers",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "identifiers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/identifier"
              },
              "minItems": 0
            },
            "merchantSku": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "visibility": {
          "type": "object",
          "required": [
            "record",
            "publication",
            "evidence"
          ],
          "properties": {
            "record": {
              "enum": [
                "internal",
                "public",
                "preview"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "publication": {
              "enum": [
                "not_approved",
                "approved",
                "published_read_only"
              ],
              "description": "published_read_only décrit la diffusion publique autorisée sans approbation de revue métier ; approved conserve son sens historique de publication après revue."
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/statement"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "humanReview": {
          "type": "object",
          "required": [
            "status",
            "productFingerprint",
            "reviewedFingerprint",
            "reviewedAt"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending",
                "reviewed"
              ]
            },
            "reviewedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "productFingerprint": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "reviewedFingerprint": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "verification": {
          "type": "object",
          "required": [
            "status",
            "verifiedAt",
            "verifiedBy"
          ],
          "properties": {
            "status": {
              "enum": [
                "pending_business_review",
                "approved"
              ]
            },
            "verifiedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T.*(?:Z|[+-]\\d{2}:\\d{2})$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "verifiedBy": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "description": "Revue des assertions qualifiées (evidence.status=validated) et de leur publication examinée ; ne certifie pas chaque observation commerciale ultérieure. Une validation ne se transfère pas à une valeur/provenance modifiée.",
          "additionalProperties": false
        },
        "canonical_url": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://catalogue\\.nitech\\.fr/produits/[1-9][0-9]{0,9}$"
        },
        "explodedViews": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/explodedView"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "schemaVersion": {
          "enum": [
            "0.1.0",
            "0.1.1",
            "0.1.2",
            "0.1.3"
          ]
        },
        "classification": {
          "type": "object",
          "required": [
            "brandLabel",
            "manufacturer",
            "categoryPath",
            "evidence"
          ],
          "properties": {
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            },
            "brandLabel": {
              "type": "object",
              "required": [
                "name",
                "evidence"
              ],
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "minLength": 1
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            },
            "categoryPath": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/category"
              },
              "minItems": 0
            },
            "manufacturer": {
              "type": "object",
              "required": [
                "name",
                "evidence"
              ],
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "evidence": {
                  "$ref": "#/$defs/canonical/$defs/evidence"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "recordRevision": {
          "type": "integer",
          "minimum": 1
        },
        "specifications": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/specification"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        },
        "compatibilities": {
          "type": "object",
          "allOf": [
            {
              "if": {
                "properties": {
                  "coverage": {
                    "const": "not_assessed"
                  }
                }
              },
              "then": {
                "properties": {
                  "items": {
                    "maxItems": 0
                  },
                  "evidence": {
                    "properties": {
                      "status": {
                        "const": "unconfirmed"
                      }
                    }
                  }
                }
              }
            }
          ],
          "required": [
            "coverage",
            "scope",
            "items",
            "evidence"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/canonical/$defs/compatibility"
              },
              "minItems": 0
            },
            "scope": {
              "type": "string",
              "minLength": 1
            },
            "coverage": {
              "enum": [
                "not_assessed",
                "partial",
                "reviewed_scope"
              ]
            },
            "evidence": {
              "$ref": "#/$defs/canonical/$defs/evidence"
            }
          },
          "additionalProperties": false
        }
      },
      "description": "0.1.3 : qualifications humaines distinctes, liées à une source stable ; lecture commerciale courante inchangée.",
      "additionalProperties": false
    }
  },
  "oneOf": [
    {
      "type": "object",
      "required": [
        "product_id",
        "qualification_status",
        "status",
        "documents",
        "withheld_count",
        "verified_document_count",
        "observed_at",
        "uncertainties"
      ],
      "properties": {
        "status": {
          "enum": [
            "documents_available",
            "no_public_documents"
          ]
        },
        "documents": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "document_id",
              "document_type",
              "title",
              "filename",
              "url",
              "scope",
              "sources",
              "document_date",
              "version",
              "verification_status",
              "verified_at",
              "previous_content_inspection",
              "publication"
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "pattern": "^https://www\\.(?:direct-chaudiere\\.com|nitech-negoce\\.com)/img/produits/(?:p_pdf|p_eclates)/[^/?#]+$"
              },
              "scope": {
                "type": "object",
                "required": [
                  "type",
                  "productId"
                ],
                "properties": {
                  "type": {
                    "enum": [
                      "product",
                      "related_appliance"
                    ]
                  },
                  "productId": {
                    "type": "string",
                    "pattern": "^nitech:product:[1-9][0-9]*$"
                  }
                },
                "additionalProperties": false
              },
              "title": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 1
              },
              "sources": {
                "type": "array",
                "items": {
                  "$ref": "#/$defs/canonical/$defs/source"
                },
                "maxItems": 10
              },
              "version": {
                "type": "null"
              },
              "filename": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 1
              },
              "document_id": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 1
              },
              "publication": {
                "const": "public_link"
              },
              "verified_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "format": "date-time"
              },
              "document_date": {
                "type": "null"
              },
              "document_type": {
                "enum": [
                  "manual",
                  "technical_sheet",
                  "certificate",
                  "unknown",
                  "user_manual",
                  "installation_manual",
                  "parts_diagram",
                  "commercial",
                  "other",
                  "irrelevant"
                ]
              },
              "verification_status": {
                "enum": [
                  "not_reverified",
                  "human_verified"
                ]
              },
              "previous_content_inspection": {
                "enum": [
                  "not_inspected",
                  "partially_inspected",
                  "inspected"
                ]
              }
            },
            "additionalProperties": false
          },
          "maxItems": 403
        },
        "product_id": {
          "type": "integer",
          "maximum": 2147483647,
          "minimum": 1
        },
        "observed_at": {
          "type": "string",
          "format": "date-time"
        },
        "uncertainties": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z_]{3,80}$"
          },
          "maxItems": 12
        },
        "withheld_count": {
          "type": "integer",
          "maximum": 403,
          "minimum": 0
        },
        "qualification_status": {
          "enum": [
            "pilot_qualified",
            "provisional"
          ]
        },
        "verified_document_count": {
          "type": "integer",
          "maximum": 403,
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[A-Z_]{3,64}$"
            },
            "message": {
              "type": "string",
              "maxLength": 500,
              "minLength": 1
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
get_product_documents annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_compatibility_evidence
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrouver les preuves publiables pièce/appareil du pilote. verified exige une décision humaine active liée à la preuve exacte, au SHA, à la page et au repère courants. stale_source impose une nouvelle vérification. Les scores ne sont pas des probabilités de compatibilité.

find_compatibility_evidence input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "part",
    "appliance"
  ],
  "properties": {
    "part": {
      "type": "string",
      "pattern": "^[A-Za-z0-9.-]+$",
      "maxLength": 80,
      "minLength": 1
    },
    "appliance": {
      "type": "string",
      "pattern": "^[A-Za-z0-9.-]+$",
      "maxLength": 80,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
find_compatibility_evidence output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "allOf": [
        {
          "if": {
            "properties": {
              "compatibility": {
                "const": "verified"
              }
            }
          },
          "then": {
            "properties": {
              "evidence": {
                "contains": {
                  "type": "object",
                  "required": [
                    "status",
                    "human_decision_id",
                    "validated_at"
                  ],
                  "properties": {
                    "status": {
                      "const": "validated"
                    },
                    "validated_at": {
                      "type": "string",
                      "minLength": 1
                    },
                    "human_decision_id": {
                      "type": "integer",
                      "minimum": 1
                    }
                  }
                },
                "minItems": 1
              },
              "human_validation_status": {
                "const": "confirmed"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "compatibility": {
                "const": "rejected"
              }
            }
          },
          "then": {
            "properties": {
              "human_validation_status": {
                "const": "rejected"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "compatibility": {
                "enum": [
                  "candidate",
                  "unknown"
                ]
              }
            }
          },
          "then": {
            "properties": {
              "human_validation_status": {
                "const": "not_validated"
              }
            }
          }
        }
      ],
      "required": [
        "compatibility",
        "conclusion",
        "part",
        "appliance",
        "evidence",
        "human_validation_status"
      ],
      "properties": {
        "part": {
          "type": "object",
          "required": [
            "pid",
            "reference"
          ],
          "properties": {
            "pid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "minimum": 1
            },
            "reference": {
              "type": "string",
              "maxLength": 80
            }
          },
          "additionalProperties": false
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "evidence_id",
              "document_id",
              "sha256",
              "physical_page",
              "printed_page",
              "marker",
              "observed_reference",
              "status",
              "source_uri"
            ],
            "properties": {
              "bbox": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 4,
                    "minItems": 4
                  }
                ]
              },
              "marker": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000
              },
              "reason": {
                "type": "string",
                "maxLength": 2000
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "status": {
                "enum": [
                  "candidate",
                  "validated",
                  "rejected",
                  "invalidated"
                ]
              },
              "excerpt": {
                "type": "string",
                "maxLength": 2000
              },
              "part_pid": {
                "type": "integer",
                "minimum": 1
              },
              "appliance": {
                "type": "string",
                "maxLength": 2000
              },
              "confidence": {
                "type": "number",
                "maximum": 1,
                "minimum": 0
              },
              "source_uri": {
                "type": "string",
                "format": "uri",
                "pattern": "^https://www\\.(?:direct-chaudiere\\.com|nitech-negoce\\.com)/img/produits/(?:p_pdf|p_eclates)/[A-Za-z0-9._%-]+#page=[1-9][0-9]*$"
              },
              "document_id": {
                "type": "string",
                "maxLength": 2000
              },
              "evidence_id": {
                "type": "string",
                "maxLength": 2000
              },
              "manufacturer": {
                "type": "string",
                "maxLength": 2000
              },
              "printed_page": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000
              },
              "validated_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000
              },
              "document_code": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000
              },
              "physical_page": {
                "type": "integer",
                "maximum": 200,
                "minimum": 1
              },
              "relation_type": {
                "type": "string",
                "maxLength": 2000
              },
              "engine_version": {
                "type": "string",
                "maxLength": 2000
              },
              "schema_version": {
                "type": "string",
                "maxLength": 2000
              },
              "figure_or_table": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000
              },
              "document_version": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "maxLength": 2000
              },
              "extraction_method": {
                "type": "string",
                "maxLength": 2000
              },
              "human_decision_id": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "minimum": 1
              },
              "appliance_observed": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "maxItems": 30
              },
              "observed_reference": {
                "type": "string",
                "maxLength": 2000
              },
              "observed_designation": {
                "type": "string",
                "maxLength": 2000
              }
            },
            "additionalProperties": false
          },
          "maxItems": 30
        },
        "appliance": {
          "type": "object",
          "required": [
            "pid",
            "reference"
          ],
          "properties": {
            "pid": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "minimum": 1
            },
            "reference": {
              "type": "string",
              "maxLength": 80
            }
          },
          "additionalProperties": false
        },
        "conclusion": {
          "type": "string",
          "maxLength": 2000
        },
        "compatibility": {
          "enum": [
            "verified",
            "candidate",
            "rejected",
            "unknown",
            "stale_source"
          ]
        },
        "human_validation_status": {
          "enum": [
            "confirmed",
            "rejected",
            "not_validated"
          ]
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string",
              "pattern": "^[A-Z_]{3,64}$"
            },
            "message": {
              "type": "string",
              "maxLength": 500,
              "minLength": 1
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
find_compatibility_evidence annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
quote_cart_shipping
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculer le port actuel depuis les produits, profils et zones Nitech relus à chaque appel. Entrées : pays, code postal requis pour la France, product_id et quantity. Limites : 30 lignes, 100 unités par produit, 300 au total. Renvoie HT, TVA, TTC, zone, groupes tarifaires et politique observée. Ce résultat n’est pas une réservation ; aucune commande n’est créée ; montant à relire lors d’une future commande. Le calcul commercial des boutiques reste autoritaire.

quote_cart_shipping input schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/quote-cart-shipping-input-v0.1.schema.json",
  "type": "object",
  "title": "Calculer le port actuel Nitech",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "destination",
    "lines"
  ],
  "properties": {
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "product_id",
          "quantity"
        ],
        "properties": {
          "quantity": {
            "type": "integer",
            "maximum": 100,
            "minimum": 1
          },
          "product_id": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 30,
      "minItems": 1
    },
    "destination": {
      "type": "object",
      "required": [
        "country_code"
      ],
      "properties": {
        "postal_code": {
          "type": "string",
          "pattern": "^[A-Za-z0-9 -]*$",
          "maxLength": 12
        },
        "country_code": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$"
        }
      },
      "additionalProperties": false
    }
  },
  "description": "Lecture seule. Code postal requis pour la France. 30 lignes, 100 unités par produit, 300 unités au total. Aucun prix, poids ou profil fourni par le client.",
  "additionalProperties": false
}
quote_cart_shipping output schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/quote-cart-shipping-output-v0.1.schema.json",
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "schema_version",
        "status",
        "policy_version",
        "effective_from",
        "effective_from_basis",
        "observed_at",
        "currency",
        "destination",
        "zone",
        "lines",
        "parcels",
        "parcel_count",
        "parcel_basis",
        "rules_applied",
        "shipping_amount_ht",
        "tax_rate",
        "tax_basis",
        "shipping_amount_ttc",
        "warnings",
        "result_is_reservation",
        "order_created",
        "must_recheck_at_order",
        "commercial_authority",
        "notice",
        "read_only"
      ]
    },
    {
      "required": [
        "error"
      ],
      "maxProperties": 1
    }
  ],
  "title": "Port courant ou erreur bornée, sans création commerciale",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [],
  "properties": {
    "zone": {
      "type": "object",
      "required": [
        "id",
        "label",
        "default_amount_ht"
      ],
      "properties": {
        "id": {
          "type": "integer"
        },
        "label": {
          "type": "string",
          "maxLength": 160
        },
        "default_amount_ht": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
        }
      },
      "additionalProperties": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "enum": [
            "EMPTY_CART",
            "INVALID_QUANTITY",
            "INVALID_ARGUMENTS",
            "PRODUCT_NOT_AVAILABLE",
            "INCOMPLETE_LOGISTICS_PROFILE",
            "DESTINATION_NOT_SERVED",
            "ZONE_UNDETERMINED",
            "CURRENT_RULE_UNSUPPORTED",
            "SOURCE_UNAVAILABLE",
            "BACKEND_ACCESS_DENIED",
            "BACKEND_TIMEOUT",
            "BACKEND_UNAVAILABLE",
            "BACKEND_RESPONSE_INVALID",
            "BACKEND_RESPONSE_TOO_LARGE",
            "CANONICAL_INVALID",
            "CANONICAL_UNAVAILABLE"
          ],
          "type": "string"
        },
        "message": {
          "type": "string",
          "maxLength": 240,
          "minLength": 1
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "product_id",
          "quantity",
          "unit_amount_ht",
          "pricing_mode",
          "individual_parcel"
        ],
        "properties": {
          "quantity": {
            "type": "integer"
          },
          "product_id": {
            "type": "integer"
          },
          "pricing_mode": {
            "enum": [
              "zone_default",
              "free",
              "no_shipping",
              "special_rate"
            ],
            "type": "string"
          },
          "unit_amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
          },
          "individual_parcel": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 30,
      "minItems": 1
    },
    "notice": {
      "const": "Ce résultat ne constitue pas une réservation. Aucune commande n’est créée. Le montant devra être relu lors d’une future commande. Le calcul commercial des boutiques Nitech reste autoritaire."
    },
    "status": {
      "const": "quoted"
    },
    "parcels": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "lines",
          "amount_ht"
        ],
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "kind": {
            "enum": [
              "shared",
              "dedicated"
            ],
            "type": "string"
          },
          "lines": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "product_id",
                "quantity"
              ],
              "properties": {
                "quantity": {
                  "type": "integer",
                  "maximum": 100,
                  "minimum": 1
                },
                "product_id": {
                  "type": "integer",
                  "maximum": 2147483647,
                  "minimum": 1
                }
              },
              "additionalProperties": false
            },
            "maxItems": 30
          },
          "amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 300
    },
    "currency": {
      "const": "EUR"
    },
    "tax_rate": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 300
      },
      "maxItems": 20
    },
    "read_only": {
      "type": "object",
      "required": [
        "business_writes",
        "source",
        "consistency"
      ],
      "properties": {
        "source": {
          "const": "current_nitech_read_only_session"
        },
        "consistency": {
          "const": "best_effort_myisam"
        },
        "business_writes": {
          "const": 0
        }
      },
      "additionalProperties": false
    },
    "tax_basis": {
      "const": "current_order_column_default"
    },
    "destination": {
      "type": "object",
      "required": [
        "country_code",
        "postal_code"
      ],
      "properties": {
        "postal_code": {
          "type": "string",
          "maxLength": 12
        },
        "country_code": {
          "type": "string",
          "pattern": "^[A-Z]{2}$"
        }
      },
      "additionalProperties": false
    },
    "observed_at": {
      "type": "string",
      "format": "date-time"
    },
    "parcel_basis": {
      "const": "tariff_groups_not_certified_physical_packing"
    },
    "parcel_count": {
      "type": "integer",
      "maximum": 300,
      "minimum": 0
    },
    "order_created": {
      "const": false
    },
    "rules_applied": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100
      },
      "maxItems": 20
    },
    "effective_from": {
      "type": "string",
      "format": "date-time"
    },
    "policy_version": {
      "type": "string",
      "pattern": "^nitech-current-[a-f0-9]{16}$"
    },
    "schema_version": {
      "const": "1.0"
    },
    "shipping_amount_ht": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
    },
    "shipping_amount_ttc": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
    },
    "commercial_authority": {
      "const": "nitech_storefront"
    },
    "effective_from_basis": {
      "const": "controlled_observation_start_only; actual_historical_activation_date_unproven"
    },
    "must_recheck_at_order": {
      "const": true
    },
    "result_is_reservation": {
      "const": false
    }
  },
  "additionalProperties": false
}
quote_cart_shipping annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
quote_cart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Préparer un devis complet du panier depuis les offres et le port Nitech actuels. Pays et code postal selon la zone, product_id et quantity seulement. 30 lignes distinctes, 100 unités par ligne, 300 au total, 8 Kio. Doublons refusés. Lecture seule sans panier, réservation, commande ni paiement. Toute ligne invalide bloque les totaux. Offres et port à relire lors de la commande ; checkout des boutiques autoritaire.

quote_cart input schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/quote-cart-input-v0.1.schema.json",
  "type": "object",
  "title": "Préparer un devis complet Nitech en lecture seule",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "destination",
    "lines"
  ],
  "properties": {
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "product_id",
          "quantity"
        ],
        "properties": {
          "quantity": {
            "type": "integer"
          },
          "product_id": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 30,
      "minItems": 0
    },
    "destination": {
      "type": "object",
      "required": [
        "country_code"
      ],
      "properties": {
        "postal_code": {
          "type": "string",
          "pattern": "^[A-Za-z0-9 -]*$",
          "maxLength": 12
        },
        "country_code": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$"
        }
      },
      "additionalProperties": false
    }
  },
  "description": "30 lignes distinctes, 100 unités par ligne, 300 unités au total, 8192 octets JSON. Doublons refusés. Panier vide et quantité invalide : erreurs structurées. France : code postal requis. Aucune donnée personnelle ni donnée commerciale client.",
  "additionalProperties": false
}
quote_cart output schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/quote-cart-output-v0.1.schema.json",
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "errors"
        ]
      },
      "required": [
        "currency",
        "lines",
        "shipping",
        "shipping_tax_amount",
        "products_amount_ht",
        "products_amount_ttc",
        "shipping_amount_ht",
        "shipping_amount_ttc",
        "grand_total_ht",
        "grand_total_ttc",
        "tax_breakdown",
        "products_rounding_adjustment_ttc",
        "rounding",
        "warnings"
      ],
      "properties": {
        "status": {
          "const": "quoted"
        }
      }
    },
    {
      "required": [
        "errors"
      ],
      "properties": {
        "status": {
          "enum": [
            "not_quotable",
            "source_unavailable"
          ]
        }
      },
      "maxProperties": 5
    }
  ],
  "title": "Devis complet courant ou erreurs explicites sans totaux partiels",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "schema_version",
    "status",
    "expires_at",
    "scope"
  ],
  "properties": {
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "product_id",
          "public_reference",
          "designation",
          "canonical_url",
          "quantity",
          "unit_amount_ht",
          "unit_amount_ttc",
          "tax_rate",
          "line_amount_ht",
          "line_amount_ttc",
          "availability",
          "orderable",
          "order_mode",
          "offer_observed_at"
        ],
        "properties": {
          "quantity": {
            "type": "integer",
            "maximum": 100,
            "minimum": 1
          },
          "tax_rate": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,2})(\\.[0-9]{1,6})?$"
          },
          "orderable": {
            "const": true
          },
          "order_mode": {
            "const": "online"
          },
          "product_id": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 1
          },
          "designation": {
            "type": "string",
            "maxLength": 4000
          },
          "availability": {
            "enum": [
              "in_stock",
              "out_of_stock",
              "unknown"
            ],
            "type": "string"
          },
          "canonical_url": {
            "type": "string",
            "pattern": "^https://catalogue\\.nitech\\.fr/produits/[1-9][0-9]{0,9}$"
          },
          "line_amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "unit_amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "line_amount_ttc": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "unit_amount_ttc": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "public_reference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 300
              },
              {
                "type": "null"
              }
            ]
          },
          "offer_observed_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 30,
      "minItems": 1
    },
    "scope": {
      "type": "object",
      "required": [
        "reservation_created",
        "cart_saved",
        "order_created",
        "stock_reserved",
        "payment_created",
        "must_recheck_offers_and_shipping_at_order",
        "commercial_authority"
      ],
      "properties": {
        "cart_saved": {
          "const": false
        },
        "order_created": {
          "const": false
        },
        "stock_reserved": {
          "const": false
        },
        "payment_created": {
          "const": false
        },
        "reservation_created": {
          "const": false
        },
        "commercial_authority": {
          "const": "nitech_storefront_checkout"
        },
        "must_recheck_offers_and_shipping_at_order": {
          "const": true
        }
      },
      "additionalProperties": false
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code",
          "message",
          "retryable",
          "line_index",
          "product_id"
        ],
        "properties": {
          "code": {
            "enum": [
              "EMPTY_CART",
              "DUPLICATE_PRODUCT_ID",
              "INVALID_QUANTITY",
              "INVALID_ARGUMENTS",
              "REQUEST_TOO_LARGE",
              "PRODUCT_NOT_FOUND",
              "PRODUCT_NOT_PUBLIC",
              "PRODUCT_NOT_ON_SALE",
              "PRODUCT_NOT_ORDERABLE",
              "PRICE_UNAVAILABLE",
              "CURRENCY_MISMATCH",
              "DESTINATION_NOT_SERVED",
              "ZONE_UNDETERMINED",
              "INCOMPLETE_LOGISTICS_PROFILE",
              "CURRENT_RULE_UNSUPPORTED",
              "OFFER_SOURCE_UNAVAILABLE",
              "SHIPPING_SOURCE_UNAVAILABLE",
              "SOURCE_UNAVAILABLE",
              "BACKEND_ACCESS_DENIED"
            ],
            "type": "string"
          },
          "message": {
            "type": "string",
            "maxLength": 240
          },
          "retryable": {
            "type": "boolean"
          },
          "line_index": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 29,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "product_id": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 2147483647,
                "minimum": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "maxItems": 60,
      "minItems": 1
    },
    "status": {
      "enum": [
        "quoted",
        "not_quotable",
        "source_unavailable"
      ],
      "type": "string"
    },
    "currency": {
      "const": "EUR"
    },
    "rounding": {
      "const": "half_up_line_display_and_combined_taxable_base_per_rate; explicit_residual"
    },
    "shipping": {
      "type": "object",
      "required": [
        "schema_version",
        "status",
        "policy_version",
        "effective_from",
        "effective_from_basis",
        "observed_at",
        "currency",
        "destination",
        "zone",
        "lines",
        "parcels",
        "parcel_count",
        "parcel_basis",
        "rules_applied",
        "shipping_amount_ht",
        "tax_rate",
        "tax_basis",
        "shipping_amount_ttc",
        "warnings",
        "result_is_reservation",
        "order_created",
        "must_recheck_at_order",
        "commercial_authority",
        "notice",
        "read_only"
      ],
      "properties": {
        "zone": {
          "type": "object",
          "required": [
            "id",
            "label",
            "default_amount_ht"
          ],
          "properties": {
            "id": {
              "type": "integer"
            },
            "label": {
              "type": "string",
              "maxLength": 160
            },
            "default_amount_ht": {
              "type": "string",
              "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
            }
          },
          "additionalProperties": false
        },
        "lines": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "product_id",
              "quantity",
              "unit_amount_ht",
              "pricing_mode",
              "individual_parcel"
            ],
            "properties": {
              "quantity": {
                "type": "integer"
              },
              "product_id": {
                "type": "integer"
              },
              "pricing_mode": {
                "enum": [
                  "zone_default",
                  "free",
                  "no_shipping",
                  "special_rate"
                ],
                "type": "string"
              },
              "unit_amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
              },
              "individual_parcel": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 30,
          "minItems": 1
        },
        "notice": {
          "const": "Ce résultat ne constitue pas une réservation. Aucune commande n’est créée. Le montant devra être relu lors d’une future commande. Le calcul commercial des boutiques Nitech reste autoritaire."
        },
        "status": {
          "const": "quoted"
        },
        "parcels": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "kind",
              "lines",
              "amount_ht"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 80
              },
              "kind": {
                "enum": [
                  "shared",
                  "dedicated"
                ],
                "type": "string"
              },
              "lines": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "product_id",
                    "quantity"
                  ],
                  "properties": {
                    "quantity": {
                      "type": "integer",
                      "maximum": 100,
                      "minimum": 1
                    },
                    "product_id": {
                      "type": "integer",
                      "maximum": 2147483647,
                      "minimum": 1
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 30
              },
              "amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 300
        },
        "currency": {
          "const": "EUR"
        },
        "tax_rate": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 300
          },
          "maxItems": 20
        },
        "read_only": {
          "type": "object",
          "required": [
            "business_writes",
            "source",
            "consistency"
          ],
          "properties": {
            "source": {
              "const": "current_nitech_read_only_session"
            },
            "consistency": {
              "const": "best_effort_myisam"
            },
            "business_writes": {
              "const": 0
            }
          },
          "additionalProperties": false
        },
        "tax_basis": {
          "const": "current_order_column_default"
        },
        "destination": {
          "type": "object",
          "required": [
            "country_code",
            "postal_code"
          ],
          "properties": {
            "postal_code": {
              "type": "string",
              "maxLength": 12
            },
            "country_code": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            }
          },
          "additionalProperties": false
        },
        "observed_at": {
          "type": "string",
          "format": "date-time"
        },
        "parcel_basis": {
          "const": "tariff_groups_not_certified_physical_packing"
        },
        "parcel_count": {
          "type": "integer",
          "maximum": 300,
          "minimum": 0
        },
        "order_created": {
          "const": false
        },
        "rules_applied": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxItems": 20
        },
        "effective_from": {
          "type": "string",
          "format": "date-time"
        },
        "policy_version": {
          "type": "string",
          "pattern": "^nitech-current-[a-f0-9]{16}$"
        },
        "schema_version": {
          "const": "1.0"
        },
        "shipping_amount_ht": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
        },
        "shipping_amount_ttc": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,8})\\.[0-9]{2}$"
        },
        "commercial_authority": {
          "const": "nitech_storefront"
        },
        "effective_from_basis": {
          "const": "controlled_observation_start_only; actual_historical_activation_date_unproven"
        },
        "must_recheck_at_order": {
          "const": true
        },
        "result_is_reservation": {
          "const": false
        }
      },
      "additionalProperties": false
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 300
      },
      "maxItems": 21
    },
    "expires_at": {
      "type": "null"
    },
    "tax_breakdown": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "tax_rate",
          "products_amount_ht",
          "products_tax_amount",
          "shipping_amount_ht",
          "shipping_tax_amount",
          "taxable_amount_ht",
          "tax_amount",
          "line_tax_sum",
          "rounding_adjustment_ttc"
        ],
        "properties": {
          "tax_rate": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,2})(\\.[0-9]{1,6})?$"
          },
          "tax_amount": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "line_tax_sum": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "taxable_amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "products_amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "shipping_amount_ht": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "products_tax_amount": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "shipping_tax_amount": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          },
          "rounding_adjustment_ttc": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
          }
        },
        "additionalProperties": false
      },
      "maxItems": 31,
      "minItems": 1
    },
    "grand_total_ht": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "schema_version": {
      "const": "1.0"
    },
    "grand_total_ttc": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "products_amount_ht": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "shipping_amount_ht": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "products_amount_ttc": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "shipping_amount_ttc": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "shipping_tax_amount": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    },
    "products_rounding_adjustment_ttc": {
      "type": "string",
      "pattern": "^-?(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
    }
  },
  "additionalProperties": false
}
quote_cart annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_order
Advertised by the server during the last successful anonymous check.
Advertised destructive

Créer une vraie commande Nitech dans le canal MCP autonome, sans boutique Web ni paiement. Appeler d’abord avec confirmation.confirmed=false pour présenter au client les articles, adresses, montant et conditions. Après son accord explicite, rappeler avec la même clé UUID, le token retourné, confirmed=true, confirmed_at, proof_reference et terms_version. Prix, stock, port et conditions sont revérifiés. Un changement exige un nouveau récapitulatif. Conserver la même clé et les mêmes arguments pour toute reprise, y compris après timeout ou résultat incertain ; ne jamais créer une nouvelle clé pour contourner pending ou un conflit. 30 lignes, 100 unités par ligne, 300 au total, 32 Kio. Ne déclenche ni paiement, facture, e-mail ni réservation. Si web_resume.status=available, proposer au client le choix parmi les quatre liens privés de boutique, valables sept jours : ils ouvrent le même caddie et conservent son origine MCP. La reprise Web est facultative.

create_order input schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/create-order-input-v0.1.schema.json",
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "idempotency_key",
    "interaction_id",
    "customer",
    "billing_address",
    "shipping_address",
    "lines",
    "confirmation"
  ],
  "properties": {
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "product_id",
          "quantity"
        ],
        "properties": {
          "quantity": {
            "type": "integer",
            "maximum": 100,
            "minimum": 1
          },
          "product_id": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 30,
      "minItems": 1
    },
    "customer": {
      "type": "object",
      "required": [
        "email",
        "phone"
      ],
      "properties": {
        "email": {
          "type": "string",
          "format": "email",
          "maxLength": 80,
          "minLength": 1
        },
        "phone": {
          "type": "string",
          "pattern": "^[+0-9 ()/.-]{5,30}$",
          "maxLength": 30,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "confirmation": {
      "type": "object",
      "required": [
        "confirmed"
      ],
      "properties": {
        "token": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+\\.[a-f0-9]{64}$",
          "maxLength": 1024,
          "minLength": 1
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_at": {
          "type": "string",
          "format": "date-time",
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$",
          "maxLength": 20,
          "minLength": 20
        },
        "terms_version": {
          "type": "string",
          "const": "livraison-2026-10-08-v1"
        },
        "proof_reference": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_.:-]+$",
          "maxLength": 128,
          "minLength": 8
        }
      },
      "additionalProperties": false
    },
    "interaction_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.:-]+$",
      "maxLength": 128,
      "minLength": 8
    },
    "billing_address": {
      "type": "object",
      "required": [
        "first_name",
        "last_name",
        "address_line1",
        "postal_code",
        "city",
        "country_code"
      ],
      "properties": {
        "city": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1
        },
        "company": {
          "type": "string",
          "maxLength": 120,
          "minLength": 0
        },
        "last_name": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        },
        "first_name": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        },
        "postal_code": {
          "type": "string",
          "pattern": "^[A-Za-z0-9 -]+$",
          "maxLength": 12,
          "minLength": 1
        },
        "country_code": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "maxLength": 2,
          "minLength": 2
        },
        "address_line1": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "address_line2": {
          "type": "string",
          "maxLength": 200,
          "minLength": 0
        }
      },
      "additionalProperties": false
    },
    "idempotency_key": {
      "type": "string",
      "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$",
      "maxLength": 36,
      "minLength": 36
    },
    "shipping_address": {
      "type": "object",
      "required": [
        "first_name",
        "last_name",
        "address_line1",
        "postal_code",
        "city",
        "country_code"
      ],
      "properties": {
        "city": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1
        },
        "company": {
          "type": "string",
          "maxLength": 120,
          "minLength": 0
        },
        "last_name": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        },
        "first_name": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        },
        "postal_code": {
          "type": "string",
          "pattern": "^[A-Za-z0-9 -]+$",
          "maxLength": 12,
          "minLength": 1
        },
        "country_code": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "maxLength": 2,
          "minLength": 2
        },
        "address_line1": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "address_line2": {
          "type": "string",
          "maxLength": 200,
          "minLength": 0
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
create_order output schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/create-order-output-v0.1.schema.json",
  "type": "object",
  "allOf": [
    {
      "if": {
        "properties": {
          "status": {
            "const": "confirmation_required"
          }
        }
      },
      "then": {
        "required": [
          "confirmation",
          "summary",
          "order_created",
          "payment_created"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "status": {
            "const": "created"
          }
        }
      },
      "then": {
        "required": [
          "order_id",
          "reference",
          "state",
          "origin",
          "currency",
          "amount_to_pay",
          "payment_created",
          "replayed"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "status": {
            "enum": [
              "pending",
              "rejected",
              "unknown"
            ]
          }
        }
      },
      "then": {
        "required": [
          "error"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "status": {
            "const": "pending"
          }
        }
      },
      "then": {
        "required": [
          "operation_reference"
        ]
      }
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "schema_version",
    "status"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retry_same_key"
      ],
      "properties": {
        "code": {
          "type": "string",
          "pattern": "^[A-Z0-9_]+$",
          "maxLength": 80,
          "minLength": 1
        },
        "message": {
          "type": "string",
          "maxLength": 1000,
          "minLength": 1
        },
        "retry_same_key": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "state": {
      "enum": [
        "awaiting_payment",
        "paid",
        "payment_accepted",
        "payment_captured",
        "payment_status_unknown",
        "cancelled"
      ]
    },
    "origin": {
      "const": "MCP"
    },
    "status": {
      "enum": [
        "confirmation_required",
        "created",
        "pending",
        "rejected",
        "unknown"
      ]
    },
    "summary": {
      "type": "object",
      "required": [
        "customer",
        "billing_address",
        "shipping_address",
        "lines",
        "currency",
        "products_amount_ht",
        "shipping_amount_ht",
        "grand_total_ht",
        "amount_to_pay",
        "tax_breakdown",
        "terms_text",
        "terms_notice"
      ],
      "properties": {
        "lines": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "product_id",
              "public_reference",
              "designation",
              "quantity",
              "unit_amount_ht",
              "unit_amount_ttc",
              "tax_rate",
              "line_amount_ht",
              "line_amount_ttc"
            ],
            "properties": {
              "quantity": {
                "type": "integer",
                "maximum": 100,
                "minimum": 1
              },
              "tax_rate": {
                "type": "string",
                "maxLength": 16,
                "minLength": 1
              },
              "product_id": {
                "type": "integer",
                "maximum": 2147483647,
                "minimum": 1
              },
              "designation": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "line_amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
                "maxLength": 16,
                "minLength": 1
              },
              "unit_amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
                "maxLength": 16,
                "minLength": 1
              },
              "line_amount_ttc": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
                "maxLength": 16,
                "minLength": 1
              },
              "unit_amount_ttc": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
                "maxLength": 16,
                "minLength": 1
              },
              "public_reference": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "maxItems": 30,
          "minItems": 1
        },
        "currency": {
          "const": "EUR"
        },
        "customer": {
          "type": "object",
          "required": [
            "email",
            "phone"
          ],
          "properties": {
            "email": {
              "type": "string",
              "format": "email",
              "maxLength": 80,
              "minLength": 1
            },
            "phone": {
              "type": "string",
              "pattern": "^[+0-9 ()/.-]{5,30}$",
              "maxLength": 30,
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "terms_text": {
          "type": "string",
          "maxLength": 1000,
          "minLength": 1
        },
        "terms_notice": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 1
        },
        "amount_to_pay": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
          "maxLength": 16,
          "minLength": 1
        },
        "tax_breakdown": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "tax_rate",
              "products_amount_ht",
              "products_tax_amount",
              "shipping_amount_ht",
              "shipping_tax_amount",
              "taxable_amount_ht",
              "tax_amount",
              "line_tax_sum",
              "rounding_adjustment_ttc"
            ],
            "properties": {
              "tax_rate": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,2})(\\.[0-9]{1,6})?$"
              },
              "tax_amount": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "line_tax_sum": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "taxable_amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "products_amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "shipping_amount_ht": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "products_tax_amount": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "shipping_tax_amount": {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              },
              "rounding_adjustment_ttc": {
                "type": "string",
                "pattern": "^-?(0|[1-9][0-9]{0,13})\\.[0-9]{2}$"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 31,
          "minItems": 1
        },
        "grand_total_ht": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
          "maxLength": 16,
          "minLength": 1
        },
        "billing_address": {
          "type": "object",
          "required": [
            "first_name",
            "last_name",
            "address_line1",
            "postal_code",
            "city",
            "country_code"
          ],
          "properties": {
            "city": {
              "type": "string",
              "maxLength": 100,
              "minLength": 1
            },
            "company": {
              "type": "string",
              "maxLength": 120,
              "minLength": 0
            },
            "last_name": {
              "type": "string",
              "maxLength": 80,
              "minLength": 1
            },
            "first_name": {
              "type": "string",
              "maxLength": 80,
              "minLength": 1
            },
            "postal_code": {
              "type": "string",
              "pattern": "^[A-Za-z0-9 -]+$",
              "maxLength": 12,
              "minLength": 1
            },
            "country_code": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "maxLength": 2,
              "minLength": 2
            },
            "address_line1": {
              "type": "string",
              "maxLength": 200,
              "minLength": 1
            },
            "address_line2": {
              "type": "string",
              "maxLength": 200,
              "minLength": 0
            }
          },
          "additionalProperties": false
        },
        "shipping_address": {
          "type": "object",
          "required": [
            "first_name",
            "last_name",
            "address_line1",
            "postal_code",
            "city",
            "country_code"
          ],
          "properties": {
            "city": {
              "type": "string",
              "maxLength": 100,
              "minLength": 1
            },
            "company": {
              "type": "string",
              "maxLength": 120,
              "minLength": 0
            },
            "last_name": {
              "type": "string",
              "maxLength": 80,
              "minLength": 1
            },
            "first_name": {
              "type": "string",
              "maxLength": 80,
              "minLength": 1
            },
            "postal_code": {
              "type": "string",
              "pattern": "^[A-Za-z0-9 -]+$",
              "maxLength": 12,
              "minLength": 1
            },
            "country_code": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "maxLength": 2,
              "minLength": 2
            },
            "address_line1": {
              "type": "string",
              "maxLength": 200,
              "minLength": 1
            },
            "address_line2": {
              "type": "string",
              "maxLength": 200,
              "minLength": 0
            }
          },
          "additionalProperties": false
        },
        "products_amount_ht": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
          "maxLength": 16,
          "minLength": 1
        },
        "shipping_amount_ht": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
          "maxLength": 16,
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "currency": {
      "const": "EUR"
    },
    "order_id": {
      "type": "integer",
      "minimum": 1
    },
    "replayed": {
      "type": "boolean"
    },
    "reference": {
      "type": "string",
      "maxLength": 32,
      "minLength": 1
    },
    "web_resume": {
      "oneOf": [
        {
          "type": "object",
          "required": [
            "status",
            "shops"
          ],
          "properties": {
            "shops": {
              "type": "array",
              "maxItems": 0
            },
            "status": {
              "const": "unavailable"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "status",
            "expires_at",
            "shops"
          ],
          "properties": {
            "shops": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "shop",
                  "label",
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "pattern": "^https://www\\.(direct-chaudiere\\.com/boutique/|nitech-negoce\\.com/panier/|douchetherapy\\.com/noindex/order/|eausanitaire\\.com/boutique/caddie/)\\?mcp_resume=m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}$",
                    "maxLength": 2048,
                    "minLength": 1
                  },
                  "shop": {
                    "enum": [
                      "d_chau",
                      "n_nego",
                      "d_ther",
                      "e_sani"
                    ]
                  },
                  "label": {
                    "type": "string",
                    "maxLength": 80,
                    "minLength": 1
                  }
                },
                "additionalProperties": false
              },
              "maxItems": 4,
              "minItems": 4
            },
            "status": {
              "const": "available"
            },
            "expires_at": {
              "type": "string",
              "format": "date-time"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "confirmation": {
      "type": "object",
      "required": [
        "token",
        "expires_at",
        "quote_digest",
        "terms_version"
      ],
      "properties": {
        "token": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+\\.[a-f0-9]{64}$",
          "maxLength": 1024,
          "minLength": 1
        },
        "expires_at": {
          "type": "string",
          "format": "date-time"
        },
        "quote_digest": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$",
          "maxLength": 64,
          "minLength": 64
        },
        "terms_version": {
          "type": "string",
          "const": "livraison-2026-10-08-v1"
        }
      },
      "additionalProperties": false
    },
    "amount_to_pay": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]{0,7})\\.[0-9]{2}$",
      "maxLength": 16,
      "minLength": 1
    },
    "order_created": {
      "type": "boolean",
      "const": false
    },
    "schema_version": {
      "const": "1.0"
    },
    "payment_created": {
      "type": "boolean",
      "const": false
    },
    "operation_reference": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "maxLength": 64,
      "minLength": 64
    }
  },
  "additionalProperties": false
}
create_order annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
get_payment
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrouver le même caddie MCP, son montant accepté, les trois moyens card/transfer/cheque, le moyen choisi, les instructions et son état bancaire Scellius. payment_page fournit une URL privée stable du caddie, sans date d'expiration, commune aux trois moyens ; elle reste consultable après paiement. Le jeton p2 de cette page peut remplacer le jeton mcp_resume pour les appels suivants. awaiting_receipt signifie attente du règlement et ne prouve aucun paiement. Fournir cart_id et cart_access : le jeton mcp_resume privé obtenu dans un lien web_resume de create_order ou du BO. Ne jamais fournir un simple numéro comme preuve d’accès. NOT_PREPARED et PREPARED ne prouvent aucun paiement. Pour le client, AUTHORISED, AUTHORISED_TO_VALIDATE et CAPTURED se présentent simplement comme Paiement accepté ; ne pas détailler les étapes bancaires internes. business_effects et status signalent les réconciliations. Ne pas payer à nouveau en cas d’incertitude.

get_payment input schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/get-payment-input-v0.1.schema.json",
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "cart_id",
    "cart_access"
  ],
  "properties": {
    "cart_id": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1
    },
    "cart_access": {
      "type": "string",
      "pattern": "^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$",
      "maxLength": 1024
    }
  },
  "additionalProperties": false
}
get_payment output schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/get-payment-output-v0.1.schema.json",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "notice",
        "accepted_amount",
        "bank_observed_at",
        "currency",
        "settlement_received",
        "schema_version",
        "cart_id",
        "bank_reference",
        "bank_status",
        "origin",
        "captured",
        "status",
        "reference",
        "cart_state",
        "action",
        "business_effects",
        "amount_to_pay",
        "attempt_id"
      ],
      "properties": {
        "action": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "object",
              "required": [
                "type",
                "url",
                "expires_at",
                "provider"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "pattern": "^https://mcp\\.nitech\\.fr/payments/(?:start\\?attempt=[a-f0-9]{32}&token=[a-f0-9]{64}|choose\\?cart_id=[1-9][0-9]*&access=p2\\.[0-7]\\.[a-f0-9]{64})$"
                },
                "type": {
                  "const": "open_secure_payment"
                },
                "provider": {
                  "const": "Scellius / La Banque Postale"
                },
                "expires_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "postal_address",
                "amount",
                "payee",
                "reference",
                "currency",
                "bic",
                "iban",
                "payment_method",
                "receipt_status",
                "type",
                "deadline",
                "rib_url",
                "reference_instruction",
                "bank"
              ],
              "properties": {
                "bic": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "bank": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "iban": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": {
                  "const": "payment_instructions"
                },
                "payee": {
                  "type": "string",
                  "minLength": 1
                },
                "amount": {
                  "type": "string",
                  "pattern": "^[0-9]+\\.[0-9]{2}$"
                },
                "rib_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "currency": {
                  "const": "EUR"
                },
                "deadline": {
                  "type": "string"
                },
                "reference": {
                  "type": "string"
                },
                "payment_method": {
                  "enum": [
                    "cheque",
                    "transfer"
                  ]
                },
                "postal_address": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "receipt_status": {
                  "const": "awaiting_receipt"
                },
                "reference_instruction": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "notice": {
          "type": "string"
        },
        "origin": {
          "const": "MCP"
        },
        "status": {
          "enum": [
            "ok",
            "confirmation_required",
            "reconciliation_required"
          ]
        },
        "cart_id": {
          "type": "integer",
          "maximum": 2147483647,
          "minimum": 1
        },
        "captured": {
          "type": "boolean"
        },
        "currency": {
          "const": "EUR"
        },
        "reference": {
          "type": "string",
          "pattern": "^MCP-[1-9][0-9]*$"
        },
        "attempt_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "cart_state": {
          "type": "integer"
        },
        "bank_status": {
          "enum": [
            "NOT_PREPARED",
            "PREPARED",
            "INITIAL",
            "WAITING_FOR_PAYMENT",
            "WAITING_AUTHORISATION",
            "WAITING_AUTHORISATION_TO_VALIDATE",
            "UNDER_VERIFICATION",
            "AUTHORISED_TO_VALIDATE",
            "AUTHORISED",
            "CAPTURED",
            "CAPTURE_FAILED",
            "REFUSED",
            "ABANDONED",
            "CANCELLED",
            "EXPIRED",
            "SUSPENDED"
          ]
        },
        "bank_history": {
          "type": "object",
          "required": [
            "operations",
            "debit",
            "refunded",
            "net",
            "reduced_before_capture",
            "cancelled",
            "commercial_review_required",
            "pending_events",
            "next_action",
            "events"
          ],
          "properties": {
            "net": {
              "type": "string",
              "pattern": "^-?[0-9]+\\.[0-9]{2}$"
            },
            "debit": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "events": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "event_id",
                  "received_at",
                  "source",
                  "disposition",
                  "fact"
                ],
                "properties": {
                  "fact": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "source": {
                    "type": "string"
                  },
                  "event_id": {
                    "type": "string"
                  },
                  "disposition": {
                    "type": "string"
                  },
                  "received_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "additionalProperties": false
              }
            },
            "refunded": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "cancelled": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "operations": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "bank_uuid",
                  "original_attempt",
                  "operation",
                  "status",
                  "amount",
                  "initial_amount",
                  "bank_created_at",
                  "event_id"
                ],
                "properties": {
                  "amount": {
                    "type": "string",
                    "pattern": "^[0-9]+\\.[0-9]{2}$"
                  },
                  "status": {
                    "type": "string"
                  },
                  "event_id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  "bank_uuid": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{32}$"
                  },
                  "operation": {
                    "enum": [
                      "DEBIT",
                      "CREDIT"
                    ]
                  },
                  "initial_amount": {
                    "type": "string",
                    "pattern": "^[0-9]+\\.[0-9]{2}$"
                  },
                  "bank_created_at": {
                    "type": "string",
                    "pattern": "^[0-9]{14}$"
                  },
                  "original_attempt": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{32}$"
                  }
                },
                "additionalProperties": false
              }
            },
            "next_action": {
              "type": "string"
            },
            "pending_events": {
              "type": "integer",
              "minimum": 0
            },
            "reduced_before_capture": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "commercial_review_required": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "payment_page": {
          "type": "string",
          "pattern": "^https://mcp\\.nitech\\.fr/payments/choose\\?cart_id=[1-9][0-9]*&access="
        },
        "amount_to_pay": {
          "type": "string",
          "pattern": "^[0-9]+\\.[0-9]{2}$"
        },
        "bank_reference": {
          "type": [
            "string",
            "null"
          ]
        },
        "delivery_state": {
          "enum": [
            null,
            "LEGACY_UNKNOWN",
            "UNISSUED",
            "ISSUED",
            "RELEASED_UNISSUED"
          ]
        },
        "payment_method": {
          "enum": [
            null,
            "card",
            "transfer",
            "cheque"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "payment_status": {
          "enum": [
            "not_selected",
            "pending",
            "awaiting_receipt",
            "accepted",
            "captured",
            "reconciliation_required"
          ],
          "type": "string"
        },
        "schema_version": {
          "const": "2.0"
        },
        "accepted_amount": {
          "type": "string",
          "pattern": "^[0-9]+\\.[0-9]{2}$"
        },
        "bank_observed_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "business_effects": {
          "enum": [
            "complete",
            "pending",
            "not_started"
          ]
        },
        "requested_method": {
          "enum": [
            "card",
            "transfer",
            "cheque"
          ],
          "type": "string"
        },
        "available_methods": {
          "type": "array",
          "items": {
            "enum": [
              "card",
              "transfer",
              "cheque"
            ]
          },
          "uniqueItems": true
        },
        "handoff_available": {
          "type": "boolean"
        },
        "confirmation_token": {
          "type": "string",
          "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$"
        },
        "settlement_received": {
          "const": false
        },
        "method_change_allowed": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
get_payment annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
prepare_payment
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Préparer le moyen de paiement du même caddie MCP : payment_method=card, transfer ou cheque. Pour virement/chèque, confirmer enregistre seulement c_stat=3 et c_moyp=3/2 et renvoie les instructions existantes : aucun règlement reçu, stock, e-mail ou facture. Une carte en cours/incertaine ou une commande déjà prise en compte interdit un autre moyen. Pour la carte, préparer le paiement autonome Scellius. Appeler avec confirmed=false, cart_access, expected_amount, currency=EUR et une clé UUID pour présenter le montant au client. Uniquement après son accord explicite, rappeler confirmed=true avec confirmation_token et proof_reference. Renvoyer payment_page ou action.url au client : URL stable sans expiration (expires_at=null). La préparation UNISSUED peut attendre ; le formulaire bancaire est daté et marqué ISSUED seulement au départ explicite du client. Les confirmations temporaires sont renouvelées derrière la page. Une session ISSUED ou LEGACY_UNKNOWN reste protégée jusqu'au résultat authentifié ; ne jamais inventer une expiration bancaire. Le client saisit sa carte uniquement chez Scellius. Aucun envoi de carte ou authentification via MCP. Répétitions et clés différentes retrouvent la même tentative ; aucun nouvel essai automatique après un refus, une expiration ou une incertitude. Après REFUSED, ABANDONED ou EXPIRED authentifié par le serveur, demander un nouveau récapitulatif avec une nouvelle clé et retry_of=attempt_id, puis recueillir un nouvel accord explicite. get_payment donne la preuve serveur et les effets métier. Un lien ne valide pas le paiement.

prepare_payment input schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/prepare-payment-input-v0.1.schema.json",
  "type": "object",
  "allOf": [
    {
      "if": {
        "properties": {
          "confirmed": {
            "const": true
          }
        }
      },
      "then": {
        "required": [
          "confirmation_token",
          "proof_reference"
        ]
      }
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "cart_id",
    "cart_access",
    "expected_amount",
    "currency",
    "confirmed",
    "idempotency_key"
  ],
  "properties": {
    "cart_id": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1
    },
    "currency": {
      "const": "EUR"
    },
    "retry_of": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$"
    },
    "confirmed": {
      "type": "boolean"
    },
    "cart_access": {
      "type": "string",
      "pattern": "^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$",
      "maxLength": 1024
    },
    "payment_method": {
      "enum": [
        "card",
        "transfer",
        "cheque"
      ],
      "type": "string",
      "default": "card"
    },
    "expected_amount": {
      "type": "string",
      "pattern": "^[0-9]{1,8}\\.[0-9]{2}$"
    },
    "idempotency_key": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    },
    "proof_reference": {
      "type": "string",
      "maxLength": 160,
      "minLength": 1
    },
    "confirmation_token": {
      "type": "string",
      "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$"
    }
  },
  "additionalProperties": false
}
prepare_payment output schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/prepare-payment-output-v0.1.schema.json",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "notice",
        "accepted_amount",
        "bank_observed_at",
        "currency",
        "settlement_received",
        "schema_version",
        "cart_id",
        "bank_reference",
        "bank_status",
        "origin",
        "captured",
        "status",
        "reference",
        "cart_state",
        "action",
        "business_effects",
        "amount_to_pay",
        "attempt_id"
      ],
      "properties": {
        "action": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "object",
              "required": [
                "type",
                "url",
                "expires_at",
                "provider"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "pattern": "^https://mcp\\.nitech\\.fr/payments/(?:start\\?attempt=[a-f0-9]{32}&token=[a-f0-9]{64}|choose\\?cart_id=[1-9][0-9]*&access=p2\\.[0-7]\\.[a-f0-9]{64})$"
                },
                "type": {
                  "const": "open_secure_payment"
                },
                "provider": {
                  "const": "Scellius / La Banque Postale"
                },
                "expires_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "postal_address",
                "amount",
                "payee",
                "reference",
                "currency",
                "bic",
                "iban",
                "payment_method",
                "receipt_status",
                "type",
                "deadline",
                "rib_url",
                "reference_instruction",
                "bank"
              ],
              "properties": {
                "bic": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "bank": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "iban": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": {
                  "const": "payment_instructions"
                },
                "payee": {
                  "type": "string",
                  "minLength": 1
                },
                "amount": {
                  "type": "string",
                  "pattern": "^[0-9]+\\.[0-9]{2}$"
                },
                "rib_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "currency": {
                  "const": "EUR"
                },
                "deadline": {
                  "type": "string"
                },
                "reference": {
                  "type": "string"
                },
                "payment_method": {
                  "enum": [
                    "cheque",
                    "transfer"
                  ]
                },
                "postal_address": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "receipt_status": {
                  "const": "awaiting_receipt"
                },
                "reference_instruction": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "notice": {
          "type": "string"
        },
        "origin": {
          "const": "MCP"
        },
        "status": {
          "enum": [
            "ok",
            "confirmation_required",
            "reconciliation_required"
          ]
        },
        "cart_id": {
          "type": "integer",
          "maximum": 2147483647,
          "minimum": 1
        },
        "captured": {
          "type": "boolean"
        },
        "currency": {
          "const": "EUR"
        },
        "reference": {
          "type": "string",
          "pattern": "^MCP-[1-9][0-9]*$"
        },
        "attempt_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "cart_state": {
          "type": "integer"
        },
        "bank_status": {
          "enum": [
            "NOT_PREPARED",
            "PREPARED",
            "INITIAL",
            "WAITING_FOR_PAYMENT",
            "WAITING_AUTHORISATION",
            "WAITING_AUTHORISATION_TO_VALIDATE",
            "UNDER_VERIFICATION",
            "AUTHORISED_TO_VALIDATE",
            "AUTHORISED",
            "CAPTURED",
            "CAPTURE_FAILED",
            "REFUSED",
            "ABANDONED",
            "CANCELLED",
            "EXPIRED",
            "SUSPENDED"
          ]
        },
        "bank_history": {
          "type": "object",
          "required": [
            "operations",
            "debit",
            "refunded",
            "net",
            "reduced_before_capture",
            "cancelled",
            "commercial_review_required",
            "pending_events",
            "next_action",
            "events"
          ],
          "properties": {
            "net": {
              "type": "string",
              "pattern": "^-?[0-9]+\\.[0-9]{2}$"
            },
            "debit": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "events": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "event_id",
                  "received_at",
                  "source",
                  "disposition",
                  "fact"
                ],
                "properties": {
                  "fact": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "source": {
                    "type": "string"
                  },
                  "event_id": {
                    "type": "string"
                  },
                  "disposition": {
                    "type": "string"
                  },
                  "received_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "additionalProperties": false
              }
            },
            "refunded": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "cancelled": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "operations": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "bank_uuid",
                  "original_attempt",
                  "operation",
                  "status",
                  "amount",
                  "initial_amount",
                  "bank_created_at",
                  "event_id"
                ],
                "properties": {
                  "amount": {
                    "type": "string",
                    "pattern": "^[0-9]+\\.[0-9]{2}$"
                  },
                  "status": {
                    "type": "string"
                  },
                  "event_id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  "bank_uuid": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{32}$"
                  },
                  "operation": {
                    "enum": [
                      "DEBIT",
                      "CREDIT"
                    ]
                  },
                  "initial_amount": {
                    "type": "string",
                    "pattern": "^[0-9]+\\.[0-9]{2}$"
                  },
                  "bank_created_at": {
                    "type": "string",
                    "pattern": "^[0-9]{14}$"
                  },
                  "original_attempt": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{32}$"
                  }
                },
                "additionalProperties": false
              }
            },
            "next_action": {
              "type": "string"
            },
            "pending_events": {
              "type": "integer",
              "minimum": 0
            },
            "reduced_before_capture": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "commercial_review_required": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "payment_page": {
          "type": "string",
          "pattern": "^https://mcp\\.nitech\\.fr/payments/choose\\?cart_id=[1-9][0-9]*&access="
        },
        "amount_to_pay": {
          "type": "string",
          "pattern": "^[0-9]+\\.[0-9]{2}$"
        },
        "bank_reference": {
          "type": [
            "string",
            "null"
          ]
        },
        "delivery_state": {
          "enum": [
            null,
            "LEGACY_UNKNOWN",
            "UNISSUED",
            "ISSUED",
            "RELEASED_UNISSUED"
          ]
        },
        "payment_method": {
          "enum": [
            null,
            "card",
            "transfer",
            "cheque"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "payment_status": {
          "enum": [
            "not_selected",
            "pending",
            "awaiting_receipt",
            "accepted",
            "captured",
            "reconciliation_required"
          ],
          "type": "string"
        },
        "schema_version": {
          "const": "2.0"
        },
        "accepted_amount": {
          "type": "string",
          "pattern": "^[0-9]+\\.[0-9]{2}$"
        },
        "bank_observed_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "business_effects": {
          "enum": [
            "complete",
            "pending",
            "not_started"
          ]
        },
        "requested_method": {
          "enum": [
            "card",
            "transfer",
            "cheque"
          ],
          "type": "string"
        },
        "available_methods": {
          "type": "array",
          "items": {
            "enum": [
              "card",
              "transfer",
              "cheque"
            ]
          },
          "uniqueItems": true
        },
        "handoff_available": {
          "type": "boolean"
        },
        "confirmation_token": {
          "type": "string",
          "pattern": "^[0-9]{10}\\.[a-f0-9]{64}$"
        },
        "settlement_received": {
          "const": false
        },
        "method_change_allowed": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
prepare_payment annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
get_order
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lire une commande privée avec cart_id et cart_access (m1 privé ou p2 permanent). Le numéro seul ne suffit jamais. Reprend la même vérification d’accès que get_payment. Lecture seule : état de commande, paiement serveur, bordereaux et quantités documentées, déclaration de départ, transporteur explicitement renseigné. Un bordereau ne prouve pas la préparation physique ; une déclaration de départ ne prouve pas la livraison. Numéro/lien de suivi absents de ces sources : null et unavailable explicites. Ne rien déduire du paiement sur l’expédition. Ne pas recréer ni repayer en cas d’incertitude.

get_order input schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/get-order-input-v0.1.schema.json",
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "cart_id",
    "cart_access"
  ],
  "properties": {
    "cart_id": {
      "type": "integer",
      "maximum": 2147483647,
      "minimum": 1
    },
    "cart_access": {
      "type": "string",
      "pattern": "^(?:m1\\.[A-Za-z0-9_-]+\\.[a-f0-9]{64}|p2\\.[0-7]\\.[a-f0-9]{64})$",
      "maxLength": 1024
    }
  },
  "additionalProperties": false
}
get_order output schema
{
  "$id": "https://catalogue.nitech.fr/schemas/mcp/get-order-output-v0.1.schema.json",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "schema_version",
        "status",
        "observed_at",
        "cart_id",
        "reference",
        "order",
        "payment",
        "preparation",
        "shipment",
        "unavailable",
        "sources"
      ],
      "properties": {
        "order": {
          "type": "object",
          "required": [
            "state_code",
            "state"
          ],
          "properties": {
            "state": {
              "enum": [
                "cart",
                "accepted",
                "cancelled",
                "awaiting_payment",
                "unavailable"
              ],
              "type": "string"
            },
            "state_code": {
              "type": "integer"
            }
          },
          "additionalProperties": false
        },
        "status": {
          "const": "ok"
        },
        "cart_id": {
          "type": "integer",
          "maximum": 2147483647,
          "minimum": 1
        },
        "payment": {
          "type": "object",
          "required": [
            "status",
            "bank_status",
            "bank_observed_at",
            "payment_status",
            "payment_method",
            "accepted_amount",
            "currency",
            "captured",
            "settlement_received",
            "business_effects",
            "notice"
          ],
          "properties": {
            "notice": {
              "type": "string"
            },
            "status": {
              "enum": [
                "ok",
                "confirmation_required",
                "reconciliation_required"
              ]
            },
            "captured": {
              "type": "boolean"
            },
            "currency": {
              "const": "EUR"
            },
            "bank_status": {
              "enum": [
                "NOT_PREPARED",
                "PREPARED",
                "INITIAL",
                "WAITING_FOR_PAYMENT",
                "WAITING_AUTHORISATION",
                "WAITING_AUTHORISATION_TO_VALIDATE",
                "UNDER_VERIFICATION",
                "AUTHORISED_TO_VALIDATE",
                "AUTHORISED",
                "CAPTURED",
                "CAPTURE_FAILED",
                "REFUSED",
                "ABANDONED",
                "CANCELLED",
                "EXPIRED",
                "SUSPENDED"
              ]
            },
            "payment_method": {
              "enum": [
                null,
                "card",
                "transfer",
                "cheque"
              ],
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "payment_status": {
              "enum": [
                "not_selected",
                "pending",
                "awaiting_receipt",
                "accepted",
                "captured",
                "reconciliation_required"
              ],
              "type": "string"
            },
            "accepted_amount": {
              "type": "string",
              "pattern": "^[0-9]+\\.[0-9]{2}$"
            },
            "bank_observed_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "business_effects": {
              "enum": [
                "complete",
                "pending",
                "not_started"
              ]
            },
            "settlement_received": {
              "const": false
            }
          },
          "additionalProperties": false
        },
        "sources": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxItems": 5,
          "minItems": 5
        },
        "shipment": {
          "type": "object",
          "required": [
            "status",
            "departure_record",
            "carrier",
            "tracking_number",
            "tracking_url",
            "delivered_at",
            "notice"
          ],
          "properties": {
            "notice": {
              "type": "string",
              "maxLength": 500
            },
            "status": {
              "enum": [
                "unavailable",
                "departure_recorded"
              ],
              "type": "string"
            },
            "carrier": {
              "anyOf": [
                {
                  "const": "GLS"
                },
                {
                  "type": "null"
                }
              ]
            },
            "delivered_at": {
              "type": "null"
            },
            "tracking_url": {
              "type": "null"
            },
            "tracking_number": {
              "type": "null"
            },
            "departure_record": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 500
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "reference": {
          "type": "string",
          "maxLength": 100
        },
        "observed_at": {
          "type": "string",
          "format": "date-time"
        },
        "preparation": {
          "type": "object",
          "required": [
            "status",
            "ordered_quantity",
            "documented_quantity",
            "delivery_documents",
            "notice"
          ],
          "properties": {
            "notice": {
              "type": "string",
              "maxLength": 500
            },
            "status": {
              "enum": [
                "unavailable",
                "partially_documented",
                "documented"
              ],
              "type": "string"
            },
            "ordered_quantity": {
              "type": "integer",
              "minimum": 0
            },
            "delivery_documents": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "reference",
                  "date"
                ],
                "properties": {
                  "date": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 10
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reference": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 20
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "maxItems": 99
            },
            "documented_quantity": {
              "type": "integer",
              "minimum": 0
            }
          },
          "additionalProperties": false
        },
        "unavailable": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxItems": 7,
          "uniqueItems": true
        },
        "schema_version": {
          "const": "1.0"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "properties": {
            "code": {
              "enum": [
                "BACKEND_ACCESS_DENIED",
                "INVALID_ARGUMENTS",
                "CART_ACCESS_DENIED",
                "ORDER_SOURCE_UNAVAILABLE",
                "CANONICAL_INVALID",
                "CANONICAL_UNAVAILABLE"
              ],
              "type": "string"
            },
            "message": {
              "type": "string",
              "maxLength": 500
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
get_order annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1387 ms
95th percentile latency
1387 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1387 ms · metadata changed · 11 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http nitech-mcp https://mcp.nitech.fr/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add nitech-mcp --url https://mcp.nitech.fr/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable nitech-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "nitech-mcp": {
      "url": "https://mcp.nitech.fr/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "nitech-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.nitech.fr/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start nitech-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "nitech-mcp": {
      "type": "http",
      "url": "https://mcp.nitech.fr/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http nitech-mcp https://mcp.nitech.fr/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "nitech-mcp": {
      "url": "https://mcp.nitech.fr/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "nitech-mcp": {
      "serverUrl": "https://mcp.nitech.fr/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Nitech MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Nitech MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing