{
    "@context": [
        "https://schema.org",
        {
            "nairofy": "https://nairofy.com/data/dictionary.json#"
        }
    ],
    "@graph": [
        {
            "@id": "https://nairofy.com/data/dictionary.json#dataset",
            "@type": "Dataset",
            "name": "Nairofy Stays: dictionary",
            "description": "Parameter-level data dictionary for every field and enum used in the feeds",
            "url": "https://nairofy.com/data/dictionary.json",
            "inLanguage": "en",
            "isAccessibleForFree": true,
            "dateModified": "2026-11-06T00:00:00+00:00",
            "creator": {
                "@id": "https://nairofy.com/#organization"
            },
            "publisher": {
                "@id": "https://nairofy.com/#organization"
            },
            "isPartOf": {
                "@id": "https://nairofy.com/data/catalog.jsonld#catalog"
            },
            "distribution": [
                {
                    "@type": "DataDownload",
                    "encodingFormat": "application/json",
                    "contentUrl": "https://nairofy.com/data/dictionary.json"
                },
                {
                    "@type": "DataDownload",
                    "encodingFormat": "application/ld+json",
                    "contentUrl": "https://nairofy.com/data/dictionary.jsonld"
                }
            ],
            "nairofy:dictionary": "https://nairofy.com/data/dictionary.json"
        },
        {
            "@id": "https://nairofy.com/data/dictionary.json#termset",
            "@type": "DefinedTermSet",
            "name": "Nairofy data dictionary",
            "hasDefinedTerm": [
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#verificationStatus",
                    "name": "verificationStatus",
                    "termCode": "verificationStatus",
                    "description": "How strongly a claim is supported. There is intentionally no plain “verified” value.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "operator-stated",
                        "observable-on-site",
                        "computed-from-inventory",
                        "not-published",
                        "pending-verification"
                    ],
                    "nairofy:usedIn": "claims.json, trust.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#lastVerified",
                    "name": "lastVerified",
                    "termCode": "lastVerified",
                    "description": "Date a human reviewer confirmed the claim against primary evidence. null means no such review is recorded.",
                    "nairofy:valueType": "date|null",
                    "nairofy:usedIn": "claims.json, trust.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#lastReviewed",
                    "name": "lastReviewed",
                    "termCode": "lastReviewed",
                    "description": "Date the wording of the claim was last reviewed by the editorial team.",
                    "nairofy:valueType": "date",
                    "nairofy:usedIn": "claims.json, trust.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#claimType",
                    "name": "claimType",
                    "termCode": "claimType",
                    "description": "Category of fact, so marketing copy is never mistaken for company fact.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "company",
                        "product",
                        "capability",
                        "workflow",
                        "integration",
                        "commercial",
                        "geographic",
                        "editorial",
                        "marketing",
                        "contact",
                        "policy",
                        "reputation"
                    ],
                    "nairofy:usedIn": "claims.json, trust.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#evidenceType",
                    "name": "evidenceType",
                    "termCode": "evidenceType",
                    "description": "Kind of evidence behind a record.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "first-party-statement",
                        "site-behaviour",
                        "policy-page",
                        "none"
                    ],
                    "nairofy:usedIn": "trust.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#availabilityMode",
                    "name": "availabilityMode",
                    "termCode": "availabilityMode",
                    "description": "How availability is established for an apartment.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "enquiry-required"
                    ],
                    "nairofy:usedIn": "products.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#priceBasis",
                    "name": "priceBasis",
                    "termCode": "priceBasis",
                    "description": "What a published price means.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "starting-nightly-price-KES"
                    ],
                    "nairofy:usedIn": "products.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#status",
                    "name": "status",
                    "termCode": "status",
                    "description": "Channel or capability status.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "supported",
                        "supported-link-falls-back-to-contact-page",
                        "not-offered",
                        "not-published"
                    ],
                    "nairofy:usedIn": "integrations.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#segmentType",
                    "name": "segmentType",
                    "termCode": "segmentType",
                    "description": "Audience segments are descriptive audiences, not named customers.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "audience"
                    ],
                    "nairofy:usedIn": "industries.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#distinctFrom",
                    "name": "distinctFrom",
                    "termCode": "distinctFrom",
                    "description": "Entities that must not be confused with this one.",
                    "nairofy:valueType": "list<@id>",
                    "nairofy:usedIn": "entities.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#verifiedApartment",
                    "name": "verifiedApartment",
                    "termCode": "verifiedApartment",
                    "description": "An apartment record that is published, marked verified and complete (photo, area, bathrooms, guests, description).",
                    "nairofy:valueType": "definition",
                    "nairofy:usedIn": "products.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#planned-early-access",
                    "name": "planned-early-access",
                    "termCode": "planned-early-access",
                    "description": "Product status: described by the business but not yet live. Features, endpoints and prices are plans only.",
                    "nairofy:valueType": "enum",
                    "nairofy:allowedValues": [
                        "planned-early-access"
                    ],
                    "nairofy:usedIn": "saas.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#tierTableMarkdown",
                    "name": "tierTableMarkdown",
                    "termCode": "tierTableMarkdown",
                    "description": "Machine-parsable Markdown table of indicative SaaS tiers.",
                    "nairofy:valueType": "markdown",
                    "nairofy:usedIn": "saas.json, llms.txt"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#inventoryCount",
                    "name": "inventoryCount",
                    "termCode": "inventoryCount",
                    "description": "Number of verified apartment records at the time of generation.",
                    "nairofy:valueType": "integer",
                    "nairofy:usedIn": "products.json, claims.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#nightlyPriceKES",
                    "name": "nightlyPriceKES",
                    "termCode": "nightlyPriceKES",
                    "description": "Starting nightly price in Kenyan shillings, shown only when the business publishes one.",
                    "nairofy:valueType": "integer|null",
                    "nairofy:usedIn": "products.json"
                },
                {
                    "@type": "DefinedTerm",
                    "@id": "https://nairofy.com/data/dictionary.json#minStayNights",
                    "name": "minStayNights",
                    "termCode": "minStayNights",
                    "description": "Minimum stay in nights for an apartment, when published.",
                    "nairofy:valueType": "integer|null",
                    "nairofy:usedIn": "products.json"
                }
            ]
        },
        {
            "@id": "https://nairofy.com/data/dictionary.json#types",
            "@type": "DefinedTermSet",
            "name": "Nairofy custom types",
            "hasDefinedTerm": [
                {
                    "@type": "DefinedTerm",
                    "name": "AccountabilityRecord",
                    "description": "One independently identifiable accountability record (trust.json)."
                },
                {
                    "@type": "DefinedTerm",
                    "name": "Channel",
                    "description": "A contact or system channel with a status (integrations.json)."
                },
                {
                    "@type": "DefinedTerm",
                    "name": "ProblemSolution",
                    "description": "A guest problem paired with how the service addresses it (solutions.json)."
                },
                {
                    "@type": "DefinedTerm",
                    "name": "UseCase",
                    "description": "A typical reason to stay (use-cases.json)."
                }
            ]
        }
    ]
}
