{
  "schemaVersion": "1.2",
  "portalOrigin": "https://portal.anyscape.jp",
  "accessModel": "portal-auth-broker",
  "authorizationEndpoint": "/api/auth/broker/start",
  "metadataEndpoint": "/api/auth/broker/metadata",
  "token": {
    "issuer": "anyscape-portal",
    "format": "payload.signature",
    "signingAlgorithm": "HMAC-SHA256",
    "ttlSeconds": 60,
    "requiredClaims": ["iss", "aud", "email", "iat", "exp"]
  },
  "appRoutes": {
    "start": "/auth/portal",
    "callback": "/auth/portal/callback"
  },
  "callbackQuery": {
    "allowedSingleKeys": ["state", "next"],
    "stateFormat": "base64url",
    "stateMinLength": 22,
    "stateMaxLength": 128,
    "legacyNextFormat": "same-origin-relative-path-and-query",
    "legacyNextDeprecated": true,
    "unknownKeysAllowed": false
  },
  "documentation": "https://portal.anyscape.jp/docs/connect-app",
  "aiGuide": "https://portal.anyscape.jp/llms.txt",
  "completionChecks": [
    "direct-url-protected",
    "portal-login-returns-to-app",
    "app-local-session-issued",
    "broker-token-removed-from-url",
    "public-routes-remain-public",
    "portal-and-app-validation-pass"
  ]
}
