SchCP sandbox

scheduling.json

https://chairly.example/m/fades-on-queen/scheduling.json
Raw JSON ← Fades on Queen
operator-asserted: No website; listed by the Chairly booking platform (operator-asserted, flagged to the human).
{
  "schcp": "0.4",
  "host": {
    "id": "fades-on-queen",
    "name": "Fades on Queen",
    "timezone": "America/Toronto",
    "phone": "+1-416-555-0177"
  },
  "endpoint": "https://chairly.example/m/fades-on-queen/schcp/v0",
  "operator": {
    "domain": "chairly.example",
    "name": "Chairly"
  },
  "keys": [
    {
      "kty": "OKP",
      "crv": "Ed25519",
      "x": "LOdAknGDdrDQyVZWeSh_6jmOU4385-FzZH35U8sV72U",
      "kid": "fades-on-queen-2026-10",
      "use": "sig"
    }
  ],
  "services": [
    {
      "id": "haircut",
      "name": "Haircut",
      "duration": "PT30M",
      "price": {
        "amount": "40.00",
        "currency": "CAD"
      },
      "requires": [
        {
          "resource_type": "barber",
          "selectable": true
        }
      ],
      "booking_window": {
        "min_notice": "PT30M",
        "opens": {
          "days_ahead": 30,
          "at": "10:00"
        }
      }
    },
    {
      "id": "beard-trim",
      "name": "Beard trim",
      "duration": "PT20M",
      "buffer_after": "PT10M",
      "price": {
        "amount": "25.00",
        "currency": "CAD"
      },
      "requires": [
        {
          "resource_type": "barber",
          "selectable": true
        }
      ]
    },
    {
      "id": "cut-and-beard",
      "name": "Haircut + beard",
      "duration": "PT45M",
      "buffer_after": "PT15M",
      "price": {
        "amount": "60.00",
        "currency": "CAD"
      },
      "requires": [
        {
          "resource_type": "barber",
          "selectable": true
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "marcus",
      "name": "Marcus",
      "resource_type": "barber"
    },
    {
      "id": "priya",
      "name": "Priya",
      "resource_type": "barber"
    }
  ],
  "policies": {
    "retention": "P180D",
    "holds": {
      "max_ttl": "PT5M",
      "max_active_per_agent": 2,
      "requires_mandate": true,
      "max_active_unproven": 6,
      "max_active_per_attester": 6
    },
    "waitlist": {
      "offer_ttl": "PT15M",
      "max_entries_per_agent": 2
    },
    "tentative": {
      "max_confirm_within": "PT24H"
    },
    "walk_in_reserve": {
      "resource_type": "barber",
      "keep": 1,
      "days": [
        "sat"
      ]
    },
    "confirmation": "instant"
  },
  "capabilities": [
    "availability",
    "holds",
    "bookings",
    "cancel",
    "change_offers",
    "webhooks",
    "proposals",
    "closed_mandates",
    "attestations",
    "all_in_totals",
    "waitlist",
    "participants"
  ],
  "auth": {
    "request_signing": "rfc9421-ed25519",
    "mandates": [
      "schcp-mandate+jwt",
      "dc+sd-jwt"
    ]
  },
  "trust": {
    "attesters": [
      {
        "id": "phonecheck.example",
        "name": "PhoneCheck",
        "keys": [
          {
            "kty": "OKP",
            "crv": "Ed25519",
            "x": "YvB8MybNzV3qnHtkbqt4BpZB2Arl1fyKSXYgYa0BrSQ",
            "kid": "phonecheck.example-2026"
          }
        ]
      }
    ]
  }
}