Skip to content

Validator

Validates WhatsMyName JSON against a JSON Schema (see API Reference).

Basic Usage

import json
from pathlib import Path
from naminter import WMNValidator

# Load data and schema
with open("wmn-data.json", encoding="utf-8") as f:
    data = json.load(f)

with open("wmn-data-schema.json", encoding="utf-8") as f:
    schema = json.load(f)

# Create validator with schema
validator = WMNValidator(schema)

# Validate against JSON schema
schema_errors = validator.validate_schema(data)

# Validate with custom data rules
data_errors = WMNValidator.validate_data(data)

if schema_errors or data_errors:
    print(f"Validation failed:")
    for error in schema_errors:
        print(f"  Schema: {error.path}: {error.message}")
    for error in data_errors:
        print(f"  Data: {error.path}: {error.message}")
else:
    print("Validation passed!")

CLI Usage

The validator is also available via the CLI:

naminter validate \
    --local-schema wmn-data-schema.json \
    --local-data wmn-data.json

API Reference

naminter.core.validator.WMNValidator

WMNValidator(schema)

Validates WMN data against JSON Schema and custom rules.

Initialize validator with schema.

PARAMETER DESCRIPTION
schema

JSON Schema to validate against. Must not be empty.

TYPE: Mapping[str, Any]

RAISES DESCRIPTION
WMNSchemaError

If the provided schema is empty, invalid, or cannot be used.

validate_schema

validate_schema(data)

Validate data against JSON schema and return errors.

PARAMETER DESCRIPTION
data

WMN data to validate.

TYPE: Mapping[str, Any]

RETURNS DESCRIPTION
list[WMNError]

list[WMNError]: Schema validation errors, empty if valid.

validate_data staticmethod

validate_data(data)

Validate data fields with custom rules and return list of errors.

Performs code-based validation for license, authors, categories, duplicate site names, and individual site configurations (uri_check, post_body, headers, status codes, known usernames, etc.). Does not use JSON schema.

PARAMETER DESCRIPTION
data

WMN data to validate. This will not be modified.

TYPE: Mapping[str, Any]

RETURNS DESCRIPTION
list[WMNError]

list[WMNError]: Validation errors, empty if valid.