{
  "@context": {
    "@vocab": "https://apphandoff.com/schema#",
    "schema": "https://schema.org/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "dcterms": "http://purl.org/dc/terms/",
    "apphandoff": "https://apphandoff.com/schema#",
    "InboundEmailDelivery": "apphandoff:InboundEmailDelivery",
    "timestamp": {
      "@id": "apphandoff:timestamp",
      "@type": "xsd:string"
    },
    "token": {
      "@id": "apphandoff:token",
      "@type": "xsd:string"
    },
    "signature": {
      "@id": "apphandoff:signature",
      "@type": "xsd:string"
    },
    "from": {
      "@id": "apphandoff:from",
      "@type": "xsd:string"
    },
    "recipient": {
      "@id": "apphandoff:recipient",
      "@type": "xsd:string"
    },
    "subject": {
      "@id": "apphandoff:subject",
      "@type": "xsd:string"
    },
    "stripped-text": {
      "@id": "apphandoff:stripped-text",
      "@type": "xsd:string"
    },
    "body-plain": {
      "@id": "apphandoff:body-plain",
      "@type": "xsd:string"
    },
    "Message-Id": {
      "@id": "apphandoff:Message-Id",
      "@type": "xsd:string"
    },
    "CronLifecycleSweepResult": "apphandoff:CronLifecycleSweepResult",
    "ok": {
      "@id": "apphandoff:ok",
      "@type": "xsd:boolean"
    },
    "dryRun": {
      "@id": "apphandoff:dryRun",
      "@type": "xsd:boolean"
    },
    "scanned": {
      "@id": "apphandoff:scanned",
      "@type": "xsd:integer"
    },
    "acted": {
      "@id": "apphandoff:acted",
      "@type": "xsd:integer"
    },
    "skipped": {
      "@id": "apphandoff:skipped",
      "@type": "xsd:integer"
    },
    "errors": {
      "@id": "apphandoff:errors",
      "@type": "xsd:integer"
    },
    "truncated": {
      "@id": "apphandoff:truncated",
      "@type": "xsd:boolean"
    },
    "samples": {
      "@id": "apphandoff:samples",
      "@container": "@list"
    },
    "CronStaleInProgressResult": "apphandoff:CronStaleInProgressResult",
    "dry_run": {
      "@id": "apphandoff:dry_run",
      "@type": "xsd:boolean"
    },
    "closing_line_close": {
      "@id": "apphandoff:closing_line_close",
      "@type": "@id"
    },
    "in_progress_return": {
      "@id": "apphandoff:in_progress_return",
      "@type": "@id"
    },
    "stale_archive": {
      "@id": "apphandoff:stale_archive",
      "@type": "@id"
    },
    "agent_notification_retention": {
      "@id": "apphandoff:agent_notification_retention"
    },
    "CronMergeBackstopResult": "apphandoff:CronMergeBackstopResult",
    "catchUp": {
      "@id": "apphandoff:catchUp",
      "@type": "xsd:boolean"
    },
    "pages": {
      "@id": "apphandoff:pages",
      "@type": "xsd:integer"
    },
    "nextCursor": {
      "@id": "apphandoff:nextCursor",
      "@type": "xsd:string"
    },
    "earlierSweeps": {
      "@id": "apphandoff:earlierSweeps",
      "@container": "@list"
    },
    "repair": {
      "@id": "apphandoff:repair"
    },
    "sweep": {
      "@id": "apphandoff:sweep"
    },
    "prSweep": {
      "@id": "apphandoff:prSweep"
    },
    "CronTicketEmailDigestResult": "apphandoff:CronTicketEmailDigestResult",
    "sent": {
      "@id": "apphandoff:sent",
      "@type": "xsd:integer"
    },
    "CronSignupNotifyResult": "apphandoff:CronSignupNotifyResult",
    "claimed": {
      "@id": "apphandoff:claimed",
      "@type": "xsd:integer"
    },
    "failed": {
      "@id": "apphandoff:failed",
      "@type": "xsd:integer"
    },
    "CronStalledSignupNudgeResult": "apphandoff:CronStalledSignupNudgeResult",
    "would_claim": {
      "@id": "apphandoff:would_claim",
      "@type": "xsd:integer"
    },
    "unknown": {
      "@id": "apphandoff:unknown",
      "@type": "xsd:integer"
    },
    "deferred": {
      "@id": "apphandoff:deferred",
      "@type": "xsd:integer"
    },
    "ContextCaptureTicket": "apphandoff:ContextCaptureTicket",
    "id": {
      "@id": "apphandoff:id",
      "@type": "xsd:string"
    },
    "number": {
      "@id": "apphandoff:number",
      "@type": "xsd:integer"
    },
    "title": {
      "@id": "apphandoff:title",
      "@type": "xsd:string"
    },
    "status": {
      "@id": "apphandoff:status",
      "@type": "xsd:string"
    },
    "stage": {
      "@id": "apphandoff:stage",
      "@type": "xsd:string"
    },
    "priority": {
      "@id": "apphandoff:priority",
      "@type": "xsd:string"
    },
    "revision": {
      "@id": "apphandoff:revision",
      "@type": "xsd:dateTime"
    },
    "updatedAt": {
      "@id": "apphandoff:updatedAt",
      "@type": "xsd:dateTime"
    },
    "portalUrl": {
      "@id": "apphandoff:portalUrl",
      "@type": "@id"
    },
    "resolutionType": {
      "@id": "apphandoff:resolutionType",
      "@type": "xsd:string"
    },
    "survivingTicketRef": {
      "@id": "apphandoff:survivingTicketRef",
      "@type": "xsd:string"
    },
    "AgentRunEvent": "apphandoff:AgentRunEvent",
    "run_id": {
      "@id": "apphandoff:run_id",
      "@type": "xsd:string"
    },
    "project_id": {
      "@id": "apphandoff:project_id",
      "@type": "xsd:string"
    },
    "billing_account_id": {
      "@id": "apphandoff:billing_account_id",
      "@type": "xsd:string"
    },
    "type": {
      "@id": "apphandoff:type",
      "@type": "xsd:string"
    },
    "payload": {
      "@id": "apphandoff:payload"
    },
    "created_at": {
      "@id": "apphandoff:created_at",
      "@type": "xsd:dateTime"
    },
    "AgentRun": "apphandoff:AgentRun",
    "plan_id": {
      "@id": "apphandoff:plan_id",
      "@type": "xsd:string"
    },
    "milestone_id": {
      "@id": "apphandoff:milestone_id",
      "@type": "xsd:string"
    },
    "lane_key": {
      "@id": "apphandoff:lane_key",
      "@type": "xsd:string"
    },
    "role": {
      "@id": "apphandoff:role",
      "@type": "xsd:string"
    },
    "ticket_ids": {
      "@id": "apphandoff:ticket_ids",
      "@container": "@list"
    },
    "state": {
      "@id": "apphandoff:state",
      "@type": "xsd:string"
    },
    "phase": {
      "@id": "apphandoff:phase",
      "@type": "xsd:string"
    },
    "worker_id": {
      "@id": "apphandoff:worker_id",
      "@type": "xsd:string"
    },
    "claimed_at": {
      "@id": "apphandoff:claimed_at",
      "@type": "xsd:dateTime"
    },
    "lease_expires_at": {
      "@id": "apphandoff:lease_expires_at",
      "@type": "xsd:dateTime"
    },
    "last_heartbeat": {
      "@id": "apphandoff:last_heartbeat",
      "@type": "xsd:dateTime"
    },
    "started_at": {
      "@id": "apphandoff:started_at",
      "@type": "xsd:dateTime"
    },
    "finished_at": {
      "@id": "apphandoff:finished_at",
      "@type": "xsd:dateTime"
    },
    "worktree_path": {
      "@id": "apphandoff:worktree_path",
      "@type": "xsd:string"
    },
    "branch": {
      "@id": "apphandoff:branch",
      "@type": "xsd:string"
    },
    "pr_url": {
      "@id": "apphandoff:pr_url",
      "@type": "xsd:string"
    },
    "last_log_line": {
      "@id": "apphandoff:last_log_line",
      "@type": "xsd:string"
    },
    "external_ref": {
      "@id": "apphandoff:external_ref"
    },
    "stall_flagged_at": {
      "@id": "apphandoff:stall_flagged_at",
      "@type": "xsd:string"
    },
    "self_report_state": {
      "@id": "apphandoff:self_report_state",
      "@type": "xsd:string"
    },
    "shipping_started_at": {
      "@id": "apphandoff:shipping_started_at",
      "@type": "xsd:string"
    },
    "attention_reason": {
      "@id": "apphandoff:attention_reason",
      "@type": "xsd:string"
    },
    "attestation": {
      "@id": "apphandoff:attestation"
    },
    "updated_at": {
      "@id": "apphandoff:updated_at",
      "@type": "xsd:dateTime"
    },
    "OAuthRefreshTokenGrant": "apphandoff:OAuthRefreshTokenGrant",
    "grant_type": {
      "@id": "apphandoff:grant_type",
      "@type": "xsd:string"
    },
    "refresh_token": {
      "@id": "apphandoff:refresh_token",
      "@type": "xsd:string"
    },
    "client_id": {
      "@id": "apphandoff:client_id",
      "@type": "xsd:string"
    },
    "resource": {
      "@id": "apphandoff:resource",
      "@type": "@id"
    },
    "OAuthAuthorizationCodeGrant": "apphandoff:OAuthAuthorizationCodeGrant",
    "code": {
      "@id": "apphandoff:code",
      "@type": "xsd:string"
    },
    "redirect_uri": {
      "@id": "apphandoff:redirect_uri",
      "@type": "xsd:string"
    },
    "code_verifier": {
      "@id": "apphandoff:code_verifier",
      "@type": "xsd:string"
    },
    "DevEvent": "apphandoff:DevEvent",
    "sessionId": {
      "@id": "apphandoff:sessionId",
      "@type": "xsd:string"
    },
    "data": {
      "@id": "apphandoff:data"
    },
    "ts": {
      "@id": "apphandoff:ts",
      "@type": "xsd:dateTime"
    },
    "ApiError": "apphandoff:ApiError",
    "error": {
      "@id": "apphandoff:error",
      "@type": "xsd:string"
    },
    "fieldErrors": {
      "@id": "apphandoff:fieldErrors"
    },
    "issues": {
      "@id": "apphandoff:issues",
      "@container": "@list"
    },
    "retryAfter": {
      "@id": "apphandoff:retryAfter",
      "@type": "xsd:decimal"
    },
    "OAuthTokenError": "apphandoff:OAuthTokenError",
    "error_description": {
      "@id": "apphandoff:error_description",
      "@type": "xsd:string"
    },
    "error_code": {
      "@id": "apphandoff:error_code",
      "@type": "xsd:string"
    },
    "GitHubAuthErrorResponse": "apphandoff:GitHubAuthErrorResponse",
    "reconnect": {
      "@id": "apphandoff:reconnect",
      "@type": "xsd:boolean"
    },
    "RepositoryHealth": "apphandoff:RepositoryHealth",
    "projectId": {
      "@id": "apphandoff:projectId",
      "@type": "xsd:string"
    },
    "repository": {
      "@id": "apphandoff:repository",
      "@type": "xsd:string"
    },
    "errorClass": {
      "@id": "apphandoff:errorClass",
      "@type": "xsd:string"
    },
    "firstObservedAt": {
      "@id": "apphandoff:firstObservedAt",
      "@type": "xsd:dateTime"
    },
    "lastObservedAt": {
      "@id": "apphandoff:lastObservedAt",
      "@type": "xsd:dateTime"
    },
    "repairUrl": {
      "@id": "apphandoff:repairUrl",
      "@type": "@id"
    },
    "blockedSyncCount": {
      "@id": "apphandoff:blockedSyncCount",
      "@type": "xsd:integer"
    },
    "ProjectRepoInput": "apphandoff:ProjectRepoInput",
    "repoSlug": {
      "@id": "apphandoff:repoSlug",
      "@type": "xsd:string"
    },
    "appSubDir": {
      "@id": "apphandoff:appSubDir",
      "@type": "xsd:string"
    },
    "ProjectSummary": "apphandoff:ProjectSummary",
    "name": {
      "@id": "apphandoff:name",
      "@type": "xsd:string"
    },
    "frontendRepo": {
      "@id": "apphandoff:frontendRepo",
      "@type": "xsd:string"
    },
    "sourceRepo": {
      "@id": "apphandoff:sourceRepo",
      "@type": "xsd:string"
    },
    "targetRepo": {
      "@id": "apphandoff:targetRepo",
      "@type": "xsd:string"
    },
    "backendRepo": {
      "@id": "apphandoff:backendRepo",
      "@type": "xsd:string"
    },
    "repos": {
      "@id": "apphandoff:repos",
      "@container": "@list"
    },
    "outputDestination": {
      "@id": "apphandoff:outputDestination",
      "@type": "xsd:string"
    },
    "createdAt": {
      "@id": "apphandoff:createdAt",
      "@type": "xsd:dateTime"
    },
    "lastActivityAt": {
      "@id": "apphandoff:lastActivityAt",
      "@type": "xsd:dateTime"
    },
    "runCount": {
      "@id": "apphandoff:runCount",
      "@type": "xsd:integer"
    },
    "successCount": {
      "@id": "apphandoff:successCount",
      "@type": "xsd:integer"
    },
    "latestRunStatus": {
      "@id": "apphandoff:latestRunStatus",
      "@type": "xsd:string"
    },
    "latestRunDate": {
      "@id": "apphandoff:latestRunDate",
      "@type": "xsd:dateTime"
    },
    "confidenceScore": {
      "@id": "apphandoff:confidenceScore",
      "@type": "xsd:decimal"
    },
    "routeCount": {
      "@id": "apphandoff:routeCount",
      "@type": "xsd:integer"
    },
    "ssrBlockerCount": {
      "@id": "apphandoff:ssrBlockerCount",
      "@type": "xsd:integer"
    },
    "sourceAhead": {
      "@id": "apphandoff:sourceAhead",
      "@type": "xsd:boolean"
    },
    "PrioritizationTicket": "apphandoff:PrioritizationTicket",
    "closed": {
      "@id": "apphandoff:closed",
      "@type": "xsd:boolean"
    },
    "PrioritizationTopic": "apphandoff:PrioritizationTopic",
    "short_name": {
      "@id": "apphandoff:short_name",
      "@type": "xsd:string"
    },
    "band": {
      "@id": "apphandoff:band",
      "@type": "xsd:string"
    },
    "outcome": {
      "@id": "apphandoff:outcome",
      "@type": "xsd:string"
    },
    "grouping_reason": {
      "@id": "apphandoff:grouping_reason",
      "@type": "xsd:string"
    },
    "sort_order": {
      "@id": "apphandoff:sort_order",
      "@type": "xsd:integer"
    },
    "tickets": {
      "@id": "apphandoff:tickets",
      "@container": "@list"
    },
    "PrioritizationView": "apphandoff:PrioritizationView",
    "derivation": {
      "@id": "apphandoff:derivation"
    },
    "topics": {
      "@id": "apphandoff:topics",
      "@container": "@list"
    },
    "PrioritizationRunStarted": "apphandoff:PrioritizationRunStarted",
    "PrioritizationProgress": "apphandoff:PrioritizationProgress",
    "detail": {
      "@id": "apphandoff:detail",
      "@type": "xsd:string"
    },
    "stale": {
      "@id": "apphandoff:stale",
      "@type": "xsd:boolean"
    },
    "HandoffTicket": "apphandoff:HandoffTicket",
    "source": {
      "@id": "apphandoff:source",
      "@type": "xsd:string"
    },
    "description": {
      "@id": "apphandoff:description",
      "@type": "xsd:string"
    },
    "request_type": {
      "@id": "apphandoff:request_type",
      "@type": "xsd:string"
    },
    "blocking": {
      "@id": "apphandoff:blocking",
      "@type": "xsd:boolean"
    },
    "merge_sha": {
      "@id": "apphandoff:merge_sha",
      "@type": "xsd:string"
    },
    "deployed_at": {
      "@id": "apphandoff:deployed_at",
      "@type": "xsd:dateTime"
    },
    "deploy_failed_at": {
      "@id": "apphandoff:deploy_failed_at",
      "@type": "xsd:dateTime"
    },
    "resolution_type": {
      "@id": "apphandoff:resolution_type",
      "@type": "xsd:string"
    },
    "reported_by_user_id": {
      "@id": "apphandoff:reported_by_user_id",
      "@type": "xsd:string"
    },
    "suggested_resolution": {
      "@id": "apphandoff:suggested_resolution",
      "@type": "xsd:string"
    },
    "implementation_notes": {
      "@id": "apphandoff:implementation_notes",
      "@type": "xsd:string"
    },
    "resolution_note": {
      "@id": "apphandoff:resolution_note",
      "@type": "xsd:string"
    },
    "resolved_at": {
      "@id": "apphandoff:resolved_at",
      "@type": "xsd:dateTime"
    },
    "evidence": {
      "@id": "apphandoff:evidence"
    },
    "category": {
      "@id": "apphandoff:category",
      "@type": "xsd:string"
    },
    "severity": {
      "@id": "apphandoff:severity",
      "@type": "xsd:string"
    },
    "suggested_backend_change": {
      "@id": "apphandoff:suggested_backend_change",
      "@type": "xsd:string"
    },
    "summary": {
      "@id": "apphandoff:summary",
      "@type": "xsd:string"
    },
    "ticket_ref": {
      "@id": "apphandoff:ticket_ref",
      "@type": "xsd:string"
    },
    "EnrichedRepo": "apphandoff:EnrichedRepo",
    "full_name": {
      "@id": "apphandoff:full_name",
      "@type": "xsd:string"
    },
    "private": {
      "@id": "apphandoff:private",
      "@type": "xsd:boolean"
    },
    "html_url": {
      "@id": "apphandoff:html_url",
      "@type": "@id"
    },
    "language": {
      "@id": "apphandoff:language",
      "@type": "xsd:string"
    },
    "kind": {
      "@id": "apphandoff:kind",
      "@type": "xsd:string"
    },
    "reason": {
      "@id": "apphandoff:reason",
      "@type": "xsd:string"
    },
    "ScopeSurveyQuestion": "apphandoff:ScopeSurveyQuestion",
    "options": {
      "@id": "apphandoff:options",
      "@container": "@list"
    },
    "proposal": {
      "@id": "apphandoff:proposal",
      "@type": "xsd:string"
    },
    "ScopeSurveyAnswer": "apphandoff:ScopeSurveyAnswer",
    "question_id": {
      "@id": "apphandoff:question_id",
      "@type": "xsd:string"
    },
    "choice": {
      "@id": "apphandoff:choice",
      "@type": "xsd:string"
    },
    "note": {
      "@id": "apphandoff:note",
      "@type": "xsd:string"
    },
    "ChoreHealth": "apphandoff:ChoreHealth",
    "last_started_at": {
      "@id": "apphandoff:last_started_at",
      "@type": "xsd:dateTime"
    },
    "last_status": {
      "@id": "apphandoff:last_status",
      "@type": "xsd:string"
    },
    "last_message": {
      "@id": "apphandoff:last_message",
      "@type": "xsd:string"
    },
    "consecutive_failures": {
      "@id": "apphandoff:consecutive_failures",
      "@type": "xsd:integer"
    },
    "DeepHealthResponse": "apphandoff:DeepHealthResponse",
    "chores": {
      "@id": "apphandoff:chores",
      "@container": "@list"
    },
    "chores_error": {
      "@id": "apphandoff:chores_error",
      "@type": "xsd:string"
    },
    "HealthPingResponse": "apphandoff:HealthPingResponse",
    "pong": {
      "@id": "apphandoff:pong",
      "@type": "xsd:boolean"
    },
    "version": {
      "@id": "apphandoff:version",
      "@type": "xsd:string"
    },
    "protocol_version": {
      "@id": "apphandoff:protocol_version",
      "@type": "xsd:string"
    },
    "uptime_s": {
      "@id": "apphandoff:uptime_s",
      "@type": "xsd:decimal"
    }
  },
  "@type": "schema:Dataset",
  "schema:name": "AppHandoff API JSON-LD context",
  "schema:description": "A JSON-LD @context for the objects AppHandoff's own API contract declares: one class per component schema, one property per declared field, typed from the contract. Derived by script (derive-json-ld.py, 2026-11-01) from openapi/_original/apphandoff-com-openapi.json.",
  "dcterms:created": "2026-11-01",
  "dcterms:source": [
    "openapi/_original/apphandoff-com-openapi.json"
  ]
}