{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/housingfax-com/json-schema/housingfax-com-get-products-output-schema.json",
  "title": "GetProductsOutput",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/housingfax-com-api-openapi.json#/components/schemas/GetProductsOutput",
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.3.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "productMode": {
      "type": "string",
      "enum": [
        "commercial",
        "free"
      ]
    },
    "currency": {
      "type": "string",
      "const": "EUR"
    },
    "vatIncluded": {
      "type": "boolean",
      "const": true
    },
    "priceNote": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    },
    "products": {
      "minItems": 1,
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tier": {
            "type": "string",
            "enum": [
              "free",
              "simple",
              "complete"
            ]
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "priceCents": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "price": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "requiresBuildingConditionRecord": {
            "type": "boolean"
          },
          "format": {
            "type": "string",
            "enum": [
              "redacted_web_preview",
              "web_and_pdf"
            ]
          },
          "emailRequired": {
            "type": "boolean"
          },
          "orderChannel": {
            "type": "string",
            "enum": [
              "agent_api",
              "web"
            ]
          }
        },
        "required": [
          "tier",
          "name",
          "priceCents",
          "price",
          "description",
          "requiresBuildingConditionRecord",
          "format",
          "emailRequired",
          "orderChannel"
        ],
        "additionalProperties": false
      }
    },
    "upgrade": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": "string",
              "const": "simple"
            },
            "to": {
              "type": "string",
              "const": "complete"
            },
            "priceCents": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            "price": {
              "type": "string",
              "minLength": 1,
              "maxLength": 600
            }
          },
          "required": [
            "from",
            "to",
            "priceCents",
            "price"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "freeReportLimits": {
      "type": "object",
      "properties": {
        "perEmail": {
          "type": "object",
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            "windowDays": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            }
          },
          "required": [
            "count",
            "windowDays"
          ],
          "additionalProperties": false
        },
        "note": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        },
        "agentChannelPerDay": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "note"
      ],
      "additionalProperties": false
    },
    "capacity": {
      "type": "object",
      "properties": {
        "maxActiveClients": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "clientIdleSeconds": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "maxReportsInProgressPerClient": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "note": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        }
      },
      "required": [
        "maxActiveClients",
        "clientIdleSeconds",
        "maxReportsInProgressPerClient",
        "note"
      ],
      "additionalProperties": false
    },
    "consent": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        },
        "statementSha256": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "termsVersion": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16
        },
        "termsUrl": {
          "type": "string",
          "maxLength": 400,
          "pattern": "^https:\\/\\/[^\\s]+$"
        },
        "agentContractingTermsUrl": {
          "type": "string",
          "maxLength": 400,
          "pattern": "^https:\\/\\/[^\\s]+$"
        },
        "privacyUrl": {
          "type": "string",
          "maxLength": 400,
          "pattern": "^https:\\/\\/[^\\s]+$"
        }
      },
      "required": [
        "text",
        "statementSha256",
        "termsVersion",
        "termsUrl",
        "privacyUrl"
      ],
      "additionalProperties": false
    },
    "checksCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pricingUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "orderUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "exampleReportUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "disclaimer": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "currency",
    "vatIncluded",
    "priceNote",
    "products",
    "consent",
    "checksCount",
    "pricingUrl",
    "orderUrl",
    "exampleReportUrl",
    "disclaimer"
  ],
  "additionalProperties": false
}