{
  "openapi": "3.1.1",
  "info": {
    "title": "Dry Sky public knowledge exports",
    "version": "2026-10-22",
    "description": "Read-only snapshots of the existing public JSON exports. This interface does not accept customer submissions or execute tools. Evidence scope and reuse terms apply; no fixed rate limit or uptime commitment is published."
  },
  "servers": [
    {
      "url": "https://dry-sky.com"
    }
  ],
  "security": [],
  "externalDocs": {
    "url": "https://dry-sky.com/discovery/api/"
  },
  "paths": {
    "/okf/entity.json": {
      "get": {
        "operationId": "read_entity",
        "summary": "Company record",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "identity",
                    "person",
                    "profiles",
                    "sourceIds",
                    "serviceAreasAreOffices",
                    "unknowns"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "identity": {
                      "type": "object"
                    },
                    "person": {
                      "type": "object"
                    },
                    "profiles": {
                      "type": "array",
                      "items": {}
                    },
                    "sourceIds": {
                      "type": "array",
                      "items": {}
                    },
                    "serviceAreasAreOffices": {
                      "type": "boolean"
                    },
                    "unknowns": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "identity": {
                    "id": "https://dry-sky.com/#org",
                    "name": "Dry Sky Roofing",
                    "legalName": "Dry Sky Roofing, LLC",
                    "url": "https://dry-sky.com/",
                    "foundingDate": "2016-09-27",
                    "telephone": "+1-704-412-3636",
                    "address": {
                      "streetAddress": "1502 S Cannon Blvd",
                      "addressLocality": "Kannapolis",
                      "addressRegion": "NC",
                      "postalCode": "28083",
                      "addressCountry": "US"
                    },
                    "description": "Founded in 2016, Dry Sky Roofing is a family-owned roofing contractor based in Kannapolis, North Carolina, serving the Concord, Kannapolis, and Charlotte region.",
                    "logo": "/media/performance/dry-sky-logo-260.webp",
                    "image": "/media/og-image-roofing.webp"
                  },
                  "person": {
                    "id": "https://dry-sky.com/about#jimmy-hopkins",
                    "name": "Jimmy Hopkins",
                    "jobTitle": "Owner and Managing Member",
                    "image": "/media/about/jimmy-hopkins.png"
                  },
                  "profiles": [
                    {
                      "id": "bbb",
                      "name": "BBB business profile",
                      "url": "https://www.bbb.org/us/nc/kannapolis/profile/roofing-contractors/dry-sky-roofing-llc-0473-542652"
                    },
                    {
                      "id": "angi",
                      "name": "Angi reviews",
                      "url": "https://www.angi.com/companylist/us/nc/kannapolis/dry-sky-roofing-llc-reviews-1.htm"
                    },
                    {
                      "id": "homeadvisor",
                      "name": "HomeAdvisor profile",
                      "url": "https://www.homeadvisor.com/rated.DrySkyRoofingLLC.59664343.html"
                    },
                    {
                      "id": "guildquality",
                      "name": "GuildQuality surveys",
                      "url": "https://www.guildquality.com/profile/dry-sky-roofing-llc"
                    },
                    {
                      "id": "owens-corning",
                      "name": "Owens Corning contractor profile",
                      "url": "https://www.owenscorning.com/en-us/roofing/contractors/contractor-profile/222652"
                    },
                    {
                      "id": "google-maps",
                      "name": "Google Maps and reviews",
                      "url": "https://www.google.com/maps/place/Dry+Sky+Roofing/@35.4738099,-80.6112263,17z/data=!3m1!4b1!4m6!3m5!1s0x885408f56c93b733:0x64dbd358cc3a0b3a!8m2!3d35.4738099!4d-80.6112263!16s%2Fg%2F11cspjmy7_"
                    },
                    {
                      "id": "facebook",
                      "name": "Facebook",
                      "url": "https://www.facebook.com/DrySkyRoofing/"
                    },
                    {
                      "id": "youtube",
                      "name": "YouTube",
                      "url": "https://www.youtube.com/@dryskyroofing"
                    },
                    {
                      "id": "instagram",
                      "name": "Instagram",
                      "url": "https://www.instagram.com/dryskyroofing/"
                    },
                    {
                      "id": "linkedin",
                      "name": "LinkedIn",
                      "url": "https://www.linkedin.com/company/dry-sky-roofing"
                    }
                  ],
                  "sourceIds": [
                    "bbb",
                    "company-site"
                  ],
                  "serviceAreasAreOffices": false,
                  "unknowns": [
                    {
                      "id": "project-credentials",
                      "statement": "Current license and insurance documents for a specific project are not included in this bundle. Request the applicable documents from the team."
                    },
                    {
                      "id": "manufacturer-tier",
                      "statement": "The contractor profile link is provided; no current manufacturer tier is independently asserted here."
                    },
                    {
                      "id": "response-availability",
                      "statement": "No fixed response time, emergency schedule, price or warranty term is established by this bundle."
                    },
                    {
                      "id": "profile-address",
                      "statement": "The GuildQuality page observed on October 22, 2026 still displayed 700 N Cannon Blvd Ste 102. The current business record uses 1502 S Cannon Blvd; the older profile address is not another office."
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_entity",
        "summary": "Headers for Company record",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/services/catalog.json": {
      "get": {
        "operationId": "read_services",
        "summary": "Service catalog",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "services"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "services": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "services": [
                    {
                      "slug": "roof-replacement",
                      "name": "Roof Replacement",
                      "description": "Residential roof replacement with inspection findings, material options, written scope, installation and cleanup planning.",
                      "url": "https://dry-sky.com/services/roof-replacement/",
                      "concept": "services/roof-replacement.md",
                      "sourceId": "service-roof-replacement"
                    },
                    {
                      "slug": "roof-repair",
                      "name": "Roof Repair",
                      "description": "Roof inspections and repair planning for leaks, damaged shingles and storm concerns.",
                      "url": "https://dry-sky.com/services/roof-repair/",
                      "concept": "services/roof-repair.md",
                      "sourceId": "service-roof-repair"
                    },
                    {
                      "slug": "gutters",
                      "name": "Gutter Installation",
                      "description": "Gutter installation and repair planning for roof runoff and drainage around the home.",
                      "url": "https://dry-sky.com/services/gutters/",
                      "concept": "services/gutters.md",
                      "sourceId": "service-gutters"
                    },
                    {
                      "slug": "siding",
                      "name": "Siding Installation",
                      "description": "Siding installation and replacement for the exterior of the home.",
                      "url": "https://dry-sky.com/services/siding/",
                      "concept": "services/siding.md",
                      "sourceId": "service-siding"
                    },
                    {
                      "slug": "windows",
                      "name": "Window Replacement",
                      "description": "Energy-efficient window replacement with attention to fit and exterior finishing.",
                      "url": "https://dry-sky.com/services/windows/",
                      "concept": "services/windows.md",
                      "sourceId": "service-windows"
                    },
                    {
                      "slug": "skylights",
                      "name": "Skylight Installation",
                      "description": "Skylight installation and repair with attention to flashing and the surrounding roof.",
                      "url": "https://dry-sky.com/services/skylights/",
                      "concept": "services/skylights.md",
                      "sourceId": "service-skylights"
                    },
                    {
                      "slug": "commercial",
                      "name": "Commercial Roofing",
                      "description": "Flat and low-slope roofing inspections, repair and replacement planning for commercial buildings.",
                      "url": "https://dry-sky.com/services/commercial/",
                      "concept": "services/commercial.md",
                      "sourceId": "service-commercial"
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_services",
        "summary": "Headers for Service catalog",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/localities/localities.json": {
      "get": {
        "operationId": "read_localities",
        "summary": "Locality directory",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "serviceAreasAreOffices",
                    "localities"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "serviceAreasAreOffices": {
                      "type": "boolean"
                    },
                    "localities": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "serviceAreasAreOffices": false,
                  "localities": [
                    {
                      "slug": "concord-kannapolis",
                      "question": "Which office should I start with?",
                      "copy": "Kannapolis crosses a county boundary. City guidance routes building-code inspections to Cabarrus County, including the Rowan portions of Kannapolis, with a separate exception for the Rowan ETJ. Start with the exact address and proposed work so the office can confirm the right route.",
                      "sourceIds": [
                        "kannapolis"
                      ],
                      "checklist": [
                        "Property address and whether it is inside city limits or an ETJ",
                        "Repair, replacement or structural changes in the written scope",
                        "Material changes and any property-specific exterior restrictions"
                      ],
                      "name": "Concord & Kannapolis",
                      "url": "https://dry-sky.com/locations/concord-kannapolis/",
                      "concept": "localities/concord-kannapolis.md",
                      "sourceId": "area-concord-kannapolis"
                    },
                    {
                      "slug": "charlotte",
                      "question": "Is my home in a local historic district?",
                      "copy": "For a home in a Charlotte local historic district, consult the city’s Certificate of Appropriateness guidance before changing exterior materials. Historic review and county building permits answer different questions. Describe the roof material, color and scope when asking the relevant office what applies.",
                      "sourceIds": [
                        "charlotte-historic"
                      ],
                      "checklist": [
                        "Street address and local historic-district status",
                        "Existing and proposed roof materials and color",
                        "Any association documents you want considered when planning the work"
                      ],
                      "name": "Charlotte",
                      "url": "https://dry-sky.com/locations/charlotte/",
                      "concept": "localities/charlotte.md",
                      "sourceId": "area-charlotte"
                    },
                    {
                      "slug": "lake-norman",
                      "question": "Which side of the lake is the property on?",
                      "copy": "Lake Norman spans Catawba, Iredell, Lincoln and Mecklenburg counties. Use the street address and town to find the responsible office; “Lake Norman” alone is not a permit jurisdiction. Share that same address with Dry Sky to confirm service availability and scheduling.",
                      "sourceIds": [
                        "lake-four-counties"
                      ],
                      "checklist": [
                        "Property address, town and county",
                        "Roof, gutter and exterior concerns to inspect together",
                        "Access details and any association review documents"
                      ],
                      "name": "Lake Norman",
                      "url": "https://dry-sky.com/locations/lake-norman/",
                      "concept": "localities/lake-norman.md",
                      "sourceId": "area-lake-norman"
                    },
                    {
                      "slug": "gastonia",
                      "question": "Does the project start with city zoning or county permitting?",
                      "copy": "Gastonia directs construction permitting to Gaston County and provides a guide for when city zoning approval comes first. Use that guide with the actual work description, especially if the project changes more than the roof covering. Confirm the route before committing to an installation date.",
                      "sourceIds": [
                        "gastonia-permits"
                      ],
                      "checklist": [
                        "Address and written description of the proposed work",
                        "Any structural or exterior changes beyond replacing materials",
                        "City or county guidance received for this property"
                      ],
                      "name": "Gastonia",
                      "url": "https://dry-sky.com/locations/gastonia/",
                      "concept": "localities/gastonia.md",
                      "sourceId": "area-gastonia"
                    },
                    {
                      "slug": "hickory",
                      "question": "Who can route a Hickory project?",
                      "copy": "Hickory’s Permit Center helps route project questions, and the city identifies Catawba County as the building-code authority within Hickory jurisdiction. Have the property address ready so staff can confirm the correct office and any plans needed for the proposed work.",
                      "sourceIds": [
                        "hickory-permit"
                      ],
                      "checklist": [
                        "Property address and confirmed jurisdiction",
                        "Whether work includes decking or other structural changes",
                        "Roof, siding, window or gutter work included in the scope"
                      ],
                      "name": "Hickory",
                      "url": "https://dry-sky.com/locations/hickory/",
                      "concept": "localities/hickory.md",
                      "sourceId": "area-hickory"
                    },
                    {
                      "slug": "statesville",
                      "question": "Does exterior review belong in the project plan?",
                      "copy": "Statesville’s Historic Preservation Commission publishes design standards and application resources. If historic review may apply to your property, ask city staff about proposed roof or exterior changes. Keep that conversation alongside any building-permit questions directed to Iredell County.",
                      "sourceIds": [
                        "statesville-historic"
                      ],
                      "checklist": [
                        "Property address and any historic designation",
                        "Existing and proposed exterior materials",
                        "Written scope and the review steps confirmed for the property"
                      ],
                      "name": "Statesville",
                      "url": "https://dry-sky.com/locations/statesville/",
                      "concept": "localities/statesville.md",
                      "sourceId": "area-statesville"
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_localities",
        "summary": "Headers for Locality directory",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/profiles/directory.json": {
      "get": {
        "operationId": "read_profiles",
        "summary": "Profile directory",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "profiles",
                    "limits"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "profiles": {
                      "type": "array",
                      "items": {}
                    },
                    "limits": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "profiles": [
                    {
                      "id": "bbb",
                      "name": "BBB business profile",
                      "url": "https://www.bbb.org/us/nc/kannapolis/profile/roofing-contractors/dry-sky-roofing-llc-0473-542652",
                      "sourceId": "bbb"
                    },
                    {
                      "id": "angi",
                      "name": "Angi reviews",
                      "url": "https://www.angi.com/companylist/us/nc/kannapolis/dry-sky-roofing-llc-reviews-1.htm",
                      "sourceId": "angi"
                    },
                    {
                      "id": "homeadvisor",
                      "name": "HomeAdvisor profile",
                      "url": "https://www.homeadvisor.com/rated.DrySkyRoofingLLC.59664343.html",
                      "sourceId": "homeadvisor"
                    },
                    {
                      "id": "guildquality",
                      "name": "GuildQuality surveys",
                      "url": "https://www.guildquality.com/profile/dry-sky-roofing-llc",
                      "sourceId": "guildquality"
                    },
                    {
                      "id": "owens-corning",
                      "name": "Owens Corning contractor profile",
                      "url": "https://www.owenscorning.com/en-us/roofing/contractors/contractor-profile/222652",
                      "sourceId": "owens-corning"
                    },
                    {
                      "id": "google-maps",
                      "name": "Google Maps and reviews",
                      "url": "https://www.google.com/maps/place/Dry+Sky+Roofing/@35.4738099,-80.6112263,17z/data=!3m1!4b1!4m6!3m5!1s0x885408f56c93b733:0x64dbd358cc3a0b3a!8m2!3d35.4738099!4d-80.6112263!16s%2Fg%2F11cspjmy7_",
                      "sourceId": "google-maps"
                    },
                    {
                      "id": "facebook",
                      "name": "Facebook",
                      "url": "https://www.facebook.com/DrySkyRoofing/",
                      "sourceId": "facebook"
                    },
                    {
                      "id": "youtube",
                      "name": "YouTube",
                      "url": "https://www.youtube.com/@dryskyroofing",
                      "sourceId": "youtube"
                    },
                    {
                      "id": "instagram",
                      "name": "Instagram",
                      "url": "https://www.instagram.com/dryskyroofing/",
                      "sourceId": "instagram"
                    },
                    {
                      "id": "linkedin",
                      "name": "LinkedIn",
                      "url": "https://www.linkedin.com/company/dry-sky-roofing",
                      "sourceId": "linkedin"
                    }
                  ],
                  "limits": [
                    {
                      "id": "manufacturer-tier",
                      "statement": "The contractor profile link is provided; no current manufacturer tier is independently asserted here."
                    },
                    {
                      "id": "profile-address",
                      "statement": "The GuildQuality page observed on October 22, 2026 still displayed 700 N Cannon Blvd Ste 102. The current business record uses 1502 S Cannon Blvd; the older profile address is not another office."
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_profiles",
        "summary": "Headers for Profile directory",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/faqs/faqs.json": {
      "get": {
        "operationId": "read_faqs",
        "summary": "Frequently asked questions",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "faqs"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "faqs": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "faqs": [
                    {
                      "id": "company-location",
                      "question": "Where is Dry Sky Roofing based?",
                      "answer": "Dry Sky Roofing lists 1502 S Cannon Blvd, Kannapolis, NC 28083 as its business address.",
                      "sourceIds": [
                        "bbb",
                        "company-site"
                      ]
                    },
                    {
                      "id": "service-options",
                      "question": "What services does Dry Sky offer?",
                      "answer": "Roof replacement, roof repair, gutters, siding, windows, skylights and commercial roofing. Discuss the work needed for your property with the team.",
                      "sourceIds": [
                        "service-roof-replacement",
                        "service-roof-repair",
                        "service-gutters",
                        "service-siding",
                        "service-windows",
                        "service-skylights",
                        "service-commercial"
                      ]
                    },
                    {
                      "id": "service-availability",
                      "question": "Can Dry Sky help at my address?",
                      "answer": "The website has guides for Concord and Kannapolis, Charlotte, Lake Norman, Gastonia, Hickory and Statesville. Contact the team with your address to confirm availability.",
                      "sourceIds": [
                        "area-concord-kannapolis",
                        "area-charlotte",
                        "area-lake-norman",
                        "area-gastonia",
                        "area-hickory",
                        "area-statesville"
                      ]
                    },
                    {
                      "id": "planning",
                      "question": "Where should I start with local project requirements?",
                      "answer": "Use the exact property address and written work description when contacting the responsible local office. The official links in this portal are starting points, not a permit determination.",
                      "sourceIds": [
                        "kannapolis",
                        "charlotte-historic",
                        "lake-four-counties",
                        "gastonia-permits",
                        "hickory-permit",
                        "statesville-historic"
                      ]
                    },
                    {
                      "id": "financing",
                      "question": "Where can I find financing information?",
                      "answer": "Read the public financing page for the supplied plans, lender application link and full program disclosure.",
                      "sourceIds": [
                        "financing-page"
                      ]
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_faqs",
        "summary": "Headers for Frequently asked questions",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/sources/ledger.json": {
      "get": {
        "operationId": "read_ledger",
        "summary": "Source ledger",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "sources",
                    "unknowns"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {}
                    },
                    "unknowns": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "sources": [
                    {
                      "id": "bbb",
                      "title": "BBB business profile",
                      "url": "https://www.bbb.org/us/nc/kannapolis/profile/roofing-contractors/dry-sky-roofing-llc-0473-542652",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "Dry Sky Roofing, LLC; 1502 S Cannon Blvd, Kannapolis; (704) 412-3636; started September 27, 2016; Jimmy Hopkins, Managing Member; BBB accreditation and A+ letter grade.",
                      "limit": "Publisher business record, not an independent state license or legal-standing determination."
                    },
                    {
                      "id": "guildquality",
                      "title": "GuildQuality company profile",
                      "url": "https://www.guildquality.com/profile/dry-sky-roofing-llc",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "Business name, website and telephone match Dry Sky. Profile still lists 700 N Cannon Blvd Ste 102.",
                      "limit": "Known address discrepancy. Retain as identity/review profile; never use its old address as current NAP."
                    },
                    {
                      "id": "kannapolis",
                      "title": "Kannapolis inspection jurisdiction",
                      "url": "https://www.kannapolisnc.gov/Business/Starting-a-Business",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "Building code inspections are handled by Cabarrus County, including Rowan portions of Kannapolis, with a Rowan ETJ exception.",
                      "limit": "General business guidance. Does not determine whether an individual roof scope needs a permit."
                    },
                    {
                      "id": "charlotte-historic",
                      "title": "Charlotte Certificate of Appropriateness",
                      "url": "https://www.charlottenc.gov/Growth-and-Development/Planning-and-Development/Historic-District/Certificate-of-Appropriateness",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "The city provides Certificate of Appropriateness guidance for exterior work within local historic districts.",
                      "limit": "Address and work-specific review; no blanket reroof approval or exemption is asserted."
                    },
                    {
                      "id": "lake-four-counties",
                      "title": "NC DNCR: creation of Lake Norman",
                      "url": "https://www.dncr.nc.gov/blog/2016/09/28/creation-lake-norman-altered-landscape",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "Lake Norman is in Catawba, Iredell, Lincoln and Mecklenburg counties.",
                      "limit": "Geographic context, not a statement of service availability or permit jurisdiction for every parcel."
                    },
                    {
                      "id": "gastonia-permits",
                      "title": "Gastonia permits and inspections",
                      "url": "https://gastonianc.gov/doing-business/permits-inspections.html",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "Construction permits moved to Gaston County in August 2022; city zoning approval may be part of the route. The city links a scope-specific process guide.",
                      "limit": "Use the linked guide and responsible office for the actual property and work; not every roof repair is assigned the same process."
                    },
                    {
                      "id": "hickory-permit",
                      "title": "Hickory Permit Center",
                      "url": "https://www.hickorync.gov/permit-center",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "The city identifies Catawba County as building-code enforcement within Hickory jurisdiction and offers its Permit Center for project routing.",
                      "limit": "Confirm jurisdiction using the actual address, not a mailing-city label."
                    },
                    {
                      "id": "statesville-historic",
                      "title": "Statesville Historic Preservation Commission",
                      "url": "https://www.statesvillenc.net/statesville-historic-preservation-commission",
                      "authority": "primary-source-statement",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Public publisher page read; scope limited to the statement below.",
                      "supports": "City commission publishes design standards, code guidance and application resources for historic preservation review.",
                      "limit": "Resource direction only; no determination that a particular roof is in a district or requires approval."
                    },
                    {
                      "id": "company-site",
                      "title": "Dry Sky Roofing website",
                      "url": "https://dry-sky.com/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved site artifact and public operator website.",
                      "supports": "Founded in 2016, Dry Sky Roofing is a family-owned roofing contractor based in Kannapolis, North Carolina, serving the Concord, Kannapolis, and Charlotte region.",
                      "limit": "Operator description; not an independent license or insurance determination."
                    },
                    {
                      "id": "service-roof-replacement",
                      "title": "Roof Replacement — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/roof-replacement/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Residential roof replacement with inspection findings, material options, written scope, installation and cleanup planning.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "service-roof-repair",
                      "title": "Roof Repair — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/roof-repair/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Roof inspections and repair planning for leaks, damaged shingles and storm concerns.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "service-gutters",
                      "title": "Gutter Installation — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/gutters/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Gutter installation and repair planning for roof runoff and drainage around the home.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "service-siding",
                      "title": "Siding Installation — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/siding/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Siding installation and replacement for the exterior of the home.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "service-windows",
                      "title": "Window Replacement — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/windows/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Energy-efficient window replacement with attention to fit and exterior finishing.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "service-skylights",
                      "title": "Skylight Installation — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/skylights/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Skylight installation and repair with attention to flashing and the surrounding roof.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "service-commercial",
                      "title": "Commercial Roofing — Dry Sky Roofing",
                      "url": "https://dry-sky.com/services/commercial/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public service page.",
                      "supports": "Flat and low-slope roofing inspections, repair and replacement planning for commercial buildings.",
                      "limit": "Scope, price, availability and warranty documents are confirmed for the individual project."
                    },
                    {
                      "id": "area-concord-kannapolis",
                      "title": "Concord & Kannapolis service-area page",
                      "url": "https://dry-sky.com/locations/concord-kannapolis/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public locality page.",
                      "supports": "Dry Sky publishes a service-area guide for Concord & Kannapolis.",
                      "limit": "A service-area guide is not a branch office or a guarantee of availability at every address."
                    },
                    {
                      "id": "area-charlotte",
                      "title": "Charlotte service-area page",
                      "url": "https://dry-sky.com/locations/charlotte/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public locality page.",
                      "supports": "Dry Sky publishes a service-area guide for Charlotte.",
                      "limit": "A service-area guide is not a branch office or a guarantee of availability at every address."
                    },
                    {
                      "id": "area-lake-norman",
                      "title": "Lake Norman service-area page",
                      "url": "https://dry-sky.com/locations/lake-norman/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public locality page.",
                      "supports": "Dry Sky publishes a service-area guide for Lake Norman.",
                      "limit": "A service-area guide is not a branch office or a guarantee of availability at every address."
                    },
                    {
                      "id": "area-gastonia",
                      "title": "Gastonia service-area page",
                      "url": "https://dry-sky.com/locations/gastonia/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public locality page.",
                      "supports": "Dry Sky publishes a service-area guide for Gastonia.",
                      "limit": "A service-area guide is not a branch office or a guarantee of availability at every address."
                    },
                    {
                      "id": "area-hickory",
                      "title": "Hickory service-area page",
                      "url": "https://dry-sky.com/locations/hickory/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public locality page.",
                      "supports": "Dry Sky publishes a service-area guide for Hickory.",
                      "limit": "A service-area guide is not a branch office or a guarantee of availability at every address."
                    },
                    {
                      "id": "area-statesville",
                      "title": "Statesville service-area page",
                      "url": "https://dry-sky.com/locations/statesville/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public locality page.",
                      "supports": "Dry Sky publishes a service-area guide for Statesville.",
                      "limit": "A service-area guide is not a branch office or a guarantee of availability at every address."
                    },
                    {
                      "id": "angi",
                      "title": "Angi reviews",
                      "url": "https://www.angi.com/companylist/us/nc/kannapolis/dry-sky-roofing-llc-reviews-1.htm",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "homeadvisor",
                      "title": "HomeAdvisor profile",
                      "url": "https://www.homeadvisor.com/rated.DrySkyRoofingLLC.59664343.html",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "owens-corning",
                      "title": "Owens Corning contractor profile",
                      "url": "https://www.owenscorning.com/en-us/roofing/contractors/contractor-profile/222652",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "google-maps",
                      "title": "Google Maps and reviews",
                      "url": "https://www.google.com/maps/place/Dry+Sky+Roofing/@35.4738099,-80.6112263,17z/data=!3m1!4b1!4m6!3m5!1s0x885408f56c93b733:0x64dbd358cc3a0b3a!8m2!3d35.4738099!4d-80.6112263!16s%2Fg%2F11cspjmy7_",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "facebook",
                      "title": "Facebook",
                      "url": "https://www.facebook.com/DrySkyRoofing/",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "youtube",
                      "title": "YouTube",
                      "url": "https://www.youtube.com/@dryskyroofing",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "instagram",
                      "title": "Instagram",
                      "url": "https://www.instagram.com/dryskyroofing/",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "linkedin",
                      "title": "LinkedIn",
                      "url": "https://www.linkedin.com/company/dry-sky-roofing",
                      "authority": "operator-attested",
                      "observedAt": null,
                      "method": "Profile link retained from the approved business inventory or footer; current provider content not independently rechecked.",
                      "supports": "Operator-published identity/profile link.",
                      "limit": "Do not infer a current rating, review count, credential tier or address from inclusion in this directory."
                    },
                    {
                      "id": "contact-page",
                      "title": "Contact Dry Sky Roofing",
                      "url": "https://dry-sky.com/contact/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved public contact page.",
                      "supports": "Contact the team about the property, project scope and scheduling.",
                      "limit": "The knowledge bundle does not accept bookings or submit project requests."
                    },
                    {
                      "id": "financing-page",
                      "title": "GreenSky financing information",
                      "url": "https://dry-sky.com/financing/",
                      "authority": "operator-attested",
                      "observedAt": "2026-10-22T21:04:57Z",
                      "method": "Approved September 17 financing page.",
                      "supports": "The public financing page contains the supplied plan details and program disclosure.",
                      "limit": "Terms and approval are controlled by the lender; this bundle does not quote or calculate financing."
                    }
                  ],
                  "unknowns": [
                    {
                      "id": "project-credentials",
                      "statement": "Current license and insurance documents for a specific project are not included in this bundle. Request the applicable documents from the team."
                    },
                    {
                      "id": "manufacturer-tier",
                      "statement": "The contractor profile link is provided; no current manufacturer tier is independently asserted here."
                    },
                    {
                      "id": "response-availability",
                      "statement": "No fixed response time, emergency schedule, price or warranty term is established by this bundle."
                    },
                    {
                      "id": "profile-address",
                      "statement": "The GuildQuality page observed on October 22, 2026 still displayed 700 N Cannon Blvd Ste 102. The current business record uses 1502 S Cannon Blvd; the older profile address is not another office."
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_ledger",
        "summary": "Headers for Source ledger",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/sources.json": {
      "get": {
        "operationId": "read_sources",
        "summary": "Source index",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "revision",
                    "generated",
                    "sourceLedger",
                    "sources"
                  ],
                  "properties": {
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "sourceLedger": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-resources-generator",
                    "at": "2026-10-22T21:04:57Z"
                  },
                  "sourceLedger": "https://dry-sky.com/okf/sources/ledger.json",
                  "sources": [
                    {
                      "id": "bbb",
                      "resource": "https://www.bbb.org/us/nc/kannapolis/profile/roofing-contractors/dry-sky-roofing-llc-0473-542652",
                      "title": "BBB business profile",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "guildquality",
                      "resource": "https://www.guildquality.com/profile/dry-sky-roofing-llc",
                      "title": "GuildQuality company profile",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "kannapolis",
                      "resource": "https://www.kannapolisnc.gov/Business/Starting-a-Business",
                      "title": "Kannapolis inspection jurisdiction",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "charlotte-historic",
                      "resource": "https://www.charlottenc.gov/Growth-and-Development/Planning-and-Development/Historic-District/Certificate-of-Appropriateness",
                      "title": "Charlotte Certificate of Appropriateness",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "lake-four-counties",
                      "resource": "https://www.dncr.nc.gov/blog/2016/09/28/creation-lake-norman-altered-landscape",
                      "title": "NC DNCR: creation of Lake Norman",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "gastonia-permits",
                      "resource": "https://gastonianc.gov/doing-business/permits-inspections.html",
                      "title": "Gastonia permits and inspections",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "hickory-permit",
                      "resource": "https://www.hickorync.gov/permit-center",
                      "title": "Hickory Permit Center",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "statesville-historic",
                      "resource": "https://www.statesvillenc.net/statesville-historic-preservation-commission",
                      "title": "Statesville Historic Preservation Commission",
                      "authority": "primary-source-statement"
                    },
                    {
                      "id": "company-site",
                      "resource": "https://dry-sky.com/",
                      "title": "Dry Sky Roofing website",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-roof-replacement",
                      "resource": "https://dry-sky.com/services/roof-replacement/",
                      "title": "Roof Replacement — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-roof-repair",
                      "resource": "https://dry-sky.com/services/roof-repair/",
                      "title": "Roof Repair — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-gutters",
                      "resource": "https://dry-sky.com/services/gutters/",
                      "title": "Gutter Installation — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-siding",
                      "resource": "https://dry-sky.com/services/siding/",
                      "title": "Siding Installation — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-windows",
                      "resource": "https://dry-sky.com/services/windows/",
                      "title": "Window Replacement — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-skylights",
                      "resource": "https://dry-sky.com/services/skylights/",
                      "title": "Skylight Installation — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "service-commercial",
                      "resource": "https://dry-sky.com/services/commercial/",
                      "title": "Commercial Roofing — Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "area-concord-kannapolis",
                      "resource": "https://dry-sky.com/locations/concord-kannapolis/",
                      "title": "Concord & Kannapolis service-area page",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "area-charlotte",
                      "resource": "https://dry-sky.com/locations/charlotte/",
                      "title": "Charlotte service-area page",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "area-lake-norman",
                      "resource": "https://dry-sky.com/locations/lake-norman/",
                      "title": "Lake Norman service-area page",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "area-gastonia",
                      "resource": "https://dry-sky.com/locations/gastonia/",
                      "title": "Gastonia service-area page",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "area-hickory",
                      "resource": "https://dry-sky.com/locations/hickory/",
                      "title": "Hickory service-area page",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "area-statesville",
                      "resource": "https://dry-sky.com/locations/statesville/",
                      "title": "Statesville service-area page",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "angi",
                      "resource": "https://www.angi.com/companylist/us/nc/kannapolis/dry-sky-roofing-llc-reviews-1.htm",
                      "title": "Angi reviews",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "homeadvisor",
                      "resource": "https://www.homeadvisor.com/rated.DrySkyRoofingLLC.59664343.html",
                      "title": "HomeAdvisor profile",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "owens-corning",
                      "resource": "https://www.owenscorning.com/en-us/roofing/contractors/contractor-profile/222652",
                      "title": "Owens Corning contractor profile",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "google-maps",
                      "resource": "https://www.google.com/maps/place/Dry+Sky+Roofing/@35.4738099,-80.6112263,17z/data=!3m1!4b1!4m6!3m5!1s0x885408f56c93b733:0x64dbd358cc3a0b3a!8m2!3d35.4738099!4d-80.6112263!16s%2Fg%2F11cspjmy7_",
                      "title": "Google Maps and reviews",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "facebook",
                      "resource": "https://www.facebook.com/DrySkyRoofing/",
                      "title": "Facebook",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "youtube",
                      "resource": "https://www.youtube.com/@dryskyroofing",
                      "title": "YouTube",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "instagram",
                      "resource": "https://www.instagram.com/dryskyroofing/",
                      "title": "Instagram",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "linkedin",
                      "resource": "https://www.linkedin.com/company/dry-sky-roofing",
                      "title": "LinkedIn",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "contact-page",
                      "resource": "https://dry-sky.com/contact/",
                      "title": "Contact Dry Sky Roofing",
                      "authority": "operator-attested"
                    },
                    {
                      "id": "financing-page",
                      "resource": "https://dry-sky.com/financing/",
                      "title": "GreenSky financing information",
                      "authority": "operator-attested"
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_sources",
        "summary": "Headers for Source index",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    },
    "/okf/manifest.json": {
      "get": {
        "operationId": "read_manifest",
        "summary": "Bundle manifest",
        "responses": {
          "200": {
            "description": "Current public JSON snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "okfVersion",
                    "bundle",
                    "revision",
                    "generated",
                    "files",
                    "hashScope",
                    "discovery"
                  ],
                  "properties": {
                    "okfVersion": {
                      "type": "string"
                    },
                    "bundle": {
                      "type": "string"
                    },
                    "revision": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "object"
                    },
                    "files": {
                      "type": "array",
                      "items": {}
                    },
                    "hashScope": {
                      "type": "string"
                    },
                    "discovery": {
                      "type": "object"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "okfVersion": "0.2",
                  "bundle": "https://dry-sky.com/okf/index.md",
                  "revision": "2026-10-22",
                  "generated": {
                    "by": "process:drysky-discovery-generator",
                    "at": "2026-10-23T00:22:17Z"
                  },
                  "files": [
                    {
                      "path": "entities/dry-sky-roofing.md",
                      "mediaType": "text/markdown",
                      "sha256": "786364c2e959fb6920567375410b2f1977843e03e10c57718d70f4f9b1a76c06"
                    },
                    {
                      "path": "entities/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "4dc8e18448bd0d0ec92427a778ce723bc29673f042d9d68948ccbda9ce5eef9c"
                    },
                    {
                      "path": "entity.json",
                      "mediaType": "application/json",
                      "sha256": "05b3ae757b30d31e8a1450007ce5be56198923129474b80b27480ce6fc09f574"
                    },
                    {
                      "path": "faqs/answers.md",
                      "mediaType": "text/markdown",
                      "sha256": "37dbb6debf83b39a2c60eeefc56f45b320300a1a6cf2bf160696058f8addc2a6"
                    },
                    {
                      "path": "faqs/faqs.json",
                      "mediaType": "application/json",
                      "sha256": "b202b542bb98bf48af9654d86e5bdd8ad5fd81ad1e4acb0e4d345b26ec36529c"
                    },
                    {
                      "path": "faqs/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "1b4ee650e4e88bed809a74776169c39dccaa0f2dc4941546e0a610ca9d104c4f"
                    },
                    {
                      "path": "governance/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "844194900374439a10790e11e1d1106977eaa6073de69c9eafd00d74986574b4"
                    },
                    {
                      "path": "governance/scope.md",
                      "mediaType": "text/markdown",
                      "sha256": "f34eba007f8dfe614ebd4e6b58924b44c50e07bd94a23639f0eee63bfebd1a20"
                    },
                    {
                      "path": "index.html",
                      "mediaType": "text/html",
                      "sha256": "5dfc17ca7a7be841c93c9e126ed847f5bf8850126f7e1f7e4705378efd8271d3"
                    },
                    {
                      "path": "index.md",
                      "mediaType": "text/markdown",
                      "sha256": "f7cef483f529091f8770d8a8bc0885235a72f9ae6c416185c1fe61d205be002f"
                    },
                    {
                      "path": "localities/charlotte.md",
                      "mediaType": "text/markdown",
                      "sha256": "60c52408cc88e8c34901be6a4446452c64b3dddef5bffa30c734edc50c5e0036"
                    },
                    {
                      "path": "localities/concord-kannapolis.md",
                      "mediaType": "text/markdown",
                      "sha256": "79c6f6dfd93ef2306b81fd8fed140ab51c2d525b3621133134833f5d356cdceb"
                    },
                    {
                      "path": "localities/gastonia.md",
                      "mediaType": "text/markdown",
                      "sha256": "cdbffbb20fd713494a07d7917c41da2b6c67bb7f6368ade2b555cb95d5f180d7"
                    },
                    {
                      "path": "localities/hickory.md",
                      "mediaType": "text/markdown",
                      "sha256": "3e25907282126bf717e82faac2c88e1e93f9f9661536111be5f2c99902f5695c"
                    },
                    {
                      "path": "localities/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "68ae5022045c84d3cdef4bb7859f38055ccaf10d7fa3badac7de8c0f429a9a1c"
                    },
                    {
                      "path": "localities/lake-norman.md",
                      "mediaType": "text/markdown",
                      "sha256": "ba0b9b53ffc47e488892aae42d6e245926455f08f31e1e7093e72e6f0450369f"
                    },
                    {
                      "path": "localities/localities.json",
                      "mediaType": "application/json",
                      "sha256": "9126a4a8e281a593e050bef9b2de152b0395861e31b835d19b25159ec1d61ed5"
                    },
                    {
                      "path": "localities/statesville.md",
                      "mediaType": "text/markdown",
                      "sha256": "1388d4946cfc4dabc3837c4afacc2372ed8886918a944667feff6821eec9b468"
                    },
                    {
                      "path": "log.md",
                      "mediaType": "text/markdown",
                      "sha256": "ad641cb115f069c171607313c3441ab76beeec2bdb7eacce25e7b4f6f18de539"
                    },
                    {
                      "path": "md.yaml",
                      "mediaType": "application/yaml",
                      "sha256": "4f81cb2fbe72d624a7ecc7bce8ff562910ae2a663ccfd459dc7f3694002495ad"
                    },
                    {
                      "path": "profiles/directory.json",
                      "mediaType": "application/json",
                      "sha256": "a69c18a8a11cbd2072b10949e0bc401ada6cc81d3a5a9ae5833308fe4ab572a2"
                    },
                    {
                      "path": "profiles/directory.md",
                      "mediaType": "text/markdown",
                      "sha256": "95c13262cdb8eb22d70ddc50991013028925ef7929632fc131672001932b6da2"
                    },
                    {
                      "path": "profiles/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "2998c32ec6b301887b73f6fdf17a6c1a018c17fec9c1c75dd72eabcb3bb14ada"
                    },
                    {
                      "path": "services/catalog.json",
                      "mediaType": "application/json",
                      "sha256": "9513f202893157f9e72cfff74c74f1753458b51ce2afbcecc52c5f826173a38a"
                    },
                    {
                      "path": "services/commercial.md",
                      "mediaType": "text/markdown",
                      "sha256": "d471622f5d4154ba05afc33556b801dc846477c75fa8c7262e3bb8eec4cccac2"
                    },
                    {
                      "path": "services/gutters.md",
                      "mediaType": "text/markdown",
                      "sha256": "327ad735f6d8e2b756615c1b39cd0233716051f9e5220aadbd1b9ade47ec7a7e"
                    },
                    {
                      "path": "services/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "d4a9d3ea69de7e0eb0c1c03a1566ffbe977b164686a3e119ad3a8b42b661e980"
                    },
                    {
                      "path": "services/roof-repair.md",
                      "mediaType": "text/markdown",
                      "sha256": "de3004b66444d547478954710c44f558bb449a1f079dde839baa3d0b6391d540"
                    },
                    {
                      "path": "services/roof-replacement.md",
                      "mediaType": "text/markdown",
                      "sha256": "610867bfab4e2a7c13a457bc0f13d2d38de358ae1180315c97a447e8ce845812"
                    },
                    {
                      "path": "services/siding.md",
                      "mediaType": "text/markdown",
                      "sha256": "d171cd9b92fbf6c087592cfc839f26116e67083f44061fbd0ead034b29f3af19"
                    },
                    {
                      "path": "services/skylights.md",
                      "mediaType": "text/markdown",
                      "sha256": "2d43e729247f46b6c3010a5966e4756af68cf3c6cad4b8178da11397bdf4d5c3"
                    },
                    {
                      "path": "services/windows.md",
                      "mediaType": "text/markdown",
                      "sha256": "b92fe2667cd2f56c7ca186f5bb604dda3021139db1426ef81b5d7cd2a45310e4"
                    },
                    {
                      "path": "sources/index.md",
                      "mediaType": "text/markdown",
                      "sha256": "edf9e2017c6f9e03e4ff51ea97eb4ef927b2c0526b4383d97d7610afb86872d3"
                    },
                    {
                      "path": "sources/ledger.json",
                      "mediaType": "application/json",
                      "sha256": "2316a9a88d05e4a570661d241c7dac3a9cb1fe9d116410324f2f77d7c8acc91a"
                    },
                    {
                      "path": "sources/ledger.md",
                      "mediaType": "text/markdown",
                      "sha256": "bc8b7324abdc0482d7c0e2ae2889106bc253f3604fb642499c06a32070da8236"
                    },
                    {
                      "path": "sources.json",
                      "mediaType": "application/json",
                      "sha256": "2cc74dae07571a5e9e9fc07a2e4da20eb6b7cbc5e2b1758213862a1c32ce9828"
                    }
                  ],
                  "hashScope": "Files in this bundle, excluding this manifest to avoid a self-reference. The HTML rendering differs between preview and production candidate.",
                  "discovery": {
                    "index": "https://dry-sky.com/.well-known/okf-index.md",
                    "apiCatalog": "https://dry-sky.com/.well-known/api-catalog",
                    "openapi": "https://dry-sky.com/discovery/openapi.json",
                    "agentDiscovery": "https://dry-sky.com/.well-known/agent-discovery.json"
                  }
                }
              }
            }
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "No published resource exists at this path."
          },
          "default": {
            "description": "Infrastructure, HTTP method, or rate-limit response. No success payload is promised."
          }
        }
      },
      "head": {
        "operationId": "head_manifest",
        "summary": "Headers for Bundle manifest",
        "responses": {
          "200": {
            "description": "Resource headers, without a response body."
          },
          "304": {
            "description": "Not modified; no response body."
          },
          "404": {
            "description": "Resource not found."
          },
          "default": {
            "description": "Other HTTP response; no body."
          }
        }
      }
    }
  }
}
