Payload
{
"action": "opened",
"number": 1132,
"pull_request": {
"url": "https://api.github.com/repos/voytravel/voy/pulls/1132",
"id": 4031234547,
"node_id": "PR_kwDOPLnB3s7wR8Hz",
"html_url": "https://github.com/voytravel/voy/pull/1132",
"diff_url": "https://github.com/voytravel/voy/pull/1132.diff",
"patch_url": "https://github.com/voytravel/voy/pull/1132.patch",
"issue_url": "https://api.github.com/repos/voytravel/voy/issues/1132",
"number": 1132,
"state": "open",
"locked": false,
"title": "ENG-1087 Add user_events data collection V0",
"user": {
"login": "mylordkaz",
"id": 128312170,
"node_id": "U_kgDOB6Xjag",
"avatar_url": "https://avatars.githubusercontent.com/u/128312170?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mylordkaz",
"html_url": "https://github.com/mylordkaz",
"followers_url": "https://api.github.com/users/mylordkaz/followers",
"following_url": "https://api.github.com/users/mylordkaz/following{/other_user}",
"gists_url": "https://api.github.com/users/mylordkaz/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mylordkaz/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mylordkaz/subscriptions",
"organizations_url": "https://api.github.com/users/mylordkaz/orgs",
"repos_url": "https://api.github.com/users/mylordkaz/repos",
"events_url": "https://api.github.com/users/mylordkaz/events{/privacy}",
"received_events_url": "https://api.github.com/users/mylordkaz/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"body": "Implements the user intent data collection V0 plan (epic ENG-1087): append-only raw events reusing existing attribute extraction and trip state, plus an internal debug timeline. Revised plan and implementation spec included under `docs/`.\n\n## ENG-1088 — user_events table + service\n- Append-only `user_events` (migration `0050`): `event_type`/`source`/`entity_type` are text validated by TS unions (adding a type needs no migration), nullable `chat_session_id`/`trip_plan_id`, indexes for user/session/type/plan timelines\n- `UserEventService.record()` never throws — recording can never break the host action; wired as `services.userEvents`\n- Payload discipline: references and compact attributes only, never content copies\n\n## ENG-1144 — emission at server seams (13 event types)\n- **Pins**: standalone create, inspiration link, enrichment materialization (incl. the worker's own service construction), delete — post-transaction, with resolved chat session\n- **Share chat SSE**: `chat_message_sent` (deferred to the complete frame for sessionless new chats so the first message links to its session) and `assistant_suggestion_shown` keyed by planning-delta fingerprint\n- **`share.applyPlanningDelta` / `declinePlanningDelta`** → clicked/declined with the same fingerprint, so shown/clicked/declined correlate (\"shown minus acted-on = ignored\")\n- **TripPlanWriter** diffs the explicit delta against plan-before state → `hotel_saved`/`hotel_rejected`/`itinerary_generated`/`itinerary_edited`; rerank-driven system rejections never pollute the data\n- **Chat tab**, **`hotels.getDetail`** (session users only), **bookings** prebook/complete\n- Fix surfaced by smoke review: `deletePins` now also removes ids from `trip_plans.pins` (guarded `getTripPlan`, never auto-creates a plan)\n\n## ENG-1094 — admin debug timeline\n- `admin.getUserEventTimeline`: user/session/type filters, id-anchored cursor pagination (row-wise SQL comparison — microsecond-safe where a JS Date cursor would skip boundary rows), trip-plan summary + pin attributes join, every access audit-logged\n- `/admin/user-events` page: event timeline with payload expanders, trip state + pins side panels; nav entry\n\n## Verification\n- 10/10 integration tests against real Postgres (testcontainers): service semantics incl. never-throws, writer diff emission, pin seams incl. plan sync\n- 5/5 router tests incl. new clicked/declined emission assertions\n- Typechecks across db/services/jobs/api/nextjs\n- Live smoke on the dev stack: real anonymous session drove pin → delta apply/decline → hotel view → delete over HTTP; all events landed in exact order with correct contracts; admin page verified via Playwright; cursor pagination walked 4 pages with zero skips/dups; duplicate delta apply produced no duplicate hotel_saved\n\n## Notes\n- V0 is observational: no product surface reads `user_events` yet (by design — see plan doc)\n- Events tolerate retry duplicates; no idempotency machinery (documented)\n- User-level state deferred to V0.1 (no consumer yet)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)",
"created_at": "2026-07-10T17:29:42Z",
"updated_at": "2026-07-10T17:29:43Z",
"closed_at": null,
"merged_at": null,
"merge_commit_sha": null,
"assignees": [],
"requested_reviewers": [
{
"login": "michaelmwu",
"id": 421504,
"node_id": "MDQ6VXNlcjQyMTUwNA==",
"avatar_url": "https://avatars.githubusercontent.com/u/421504?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/michaelmwu",
"html_url": "https://github.com/michaelmwu",
"followers_url": "https://api.github.com/users/michaelmwu/followers",
"following_url": "https://api.github.com/users/michaelmwu/following{/other_user}",
"gists_url": "https://api.github.com/users/michaelmwu/gists{/gist_id}",
"starred_url": "https://api.github.com/users/michaelmwu/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/michaelmwu/subscriptions",
"organizations_url": "https://api.github.com/users/michaelmwu/orgs",
"repos_url": "https://api.github.com/users/michaelmwu/repos",
"events_url": "https://api.github.com/users/michaelmwu/events{/privacy}",
"received_events_url": "https://api.github.com/users/michaelmwu/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
{
"login": "nickick",
"id": 1316662,
"node_id": "MDQ6VXNlcjEzMTY2NjI=",
"avatar_url": "https://avatars.githubusercontent.com/u/1316662?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/nickick",
"html_url": "https://github.com/nickick",
"followers_url": "https://api.github.com/users/nickick/followers",
"following_url": "https://api.github.com/users/nickick/following{/other_user}",
"gists_url": "https://api.github.com/users/nickick/gists{/gist_id}",
"starred_url": "https://api.github.com/users/nickick/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/nickick/subscriptions",
"organizations_url": "https://api.github.com/users/nickick/orgs",
"repos_url": "https://api.github.com/users/nickick/repos",
"events_url": "https://api.github.com/users/nickick/events{/privacy}",
"received_events_url": "https://api.github.com/users/nickick/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
}
],
"requested_teams": [],
"labels": [],
"milestone": null,
"draft": false,
"commits_url": "https://api.github.com/repos/voytravel/voy/pulls/1132/commits",
"review_comments_url": "https://api.github.com/repos/voytravel/voy/pulls/1132/comments",
"review_comment_url": "https://api.github.com/repos/voytravel/voy/pulls/comments{/number}",
"comments_url": "https://api.github.com/repos/voytravel/voy/issues/1132/comments",
"statuses_url": "https://api.github.com/repos/voytravel/voy/statuses/96092606a632c19d76e16c552a3dbee5c125f17e",
"head": {
"label": "voytravel:feat/intent-data-collection",
"ref": "feat/intent-data-collection",
"sha": "96092606a632c19d76e16c552a3dbee5c125f17e",
"user": {
"login": "voytravel",
"id": 213144510,
"node_id": "O_kgDODLRTvg",
"avatar_url": "https://avatars.githubusercontent.com/u/213144510?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/voytravel",
"html_url": "https://github.com/voytravel",
"followers_url": "https://api.github.com/users/voytravel/followers",
"following_url": "https://api.github.com/users/voytravel/following{/other_user}",
"gists_url": "https://api.github.com/users/voytravel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/voytravel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/voytravel/subscriptions",
"organizations_url": "https://api.github.com/users/voytravel/orgs",
"repos_url": "https://api.github.com/users/voytravel/repos",
"events_url": "https://api.github.com/users/voytravel/events{/privacy}",
"received_events_url": "https://api.github.com/users/voytravel/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"repo": {
"id": 1018806750,
"node_id": "R_kgDOPLnB3g",
"name": "voy",
"full_name": "voytravel/voy",
"private": true,
"owner": {
"login": "voytravel",
"id": 213144510,
"node_id": "O_kgDODLRTvg",
"avatar_url": "https://avatars.githubusercontent.com/u/213144510?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/voytravel",
"html_url": "https://github.com/voytravel",
"followers_url": "https://api.github.com/users/voytravel/followers",
"following_url": "https://api.github.com/users/voytravel/following{/other_user}",
"gists_url": "https://api.github.com/users/voytravel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/voytravel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/voytravel/subscriptions",
"organizations_url": "https://api.github.com/users/voytravel/orgs",
"repos_url": "https://api.github.com/users/voytravel/repos",
"events_url": "https://api.github.com/users/voytravel/events{/privacy}",
"received_events_url": "https://api.github.com/users/voytravel/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/voytravel/voy",
"description": "Voy Monorepo",
"fork": false,
"url": "https://api.github.com/repos/voytravel/voy",
"forks_url": "https://api.github.com/repos/voytravel/voy/forks",
"keys_url": "https://api.github.com/repos/voytravel/voy/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/voytravel/voy/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/voytravel/voy/teams",
"hooks_url": "https://api.github.com/repos/voytravel/voy/hooks",
"issue_events_url": "https://api.github.com/repos/voytravel/voy/issues/events{/number}",
"events_url": "https://api.github.com/repos/voytravel/voy/events",
"assignees_url": "https://api.github.com/repos/voytravel/voy/assignees{/user}",
"branches_url": "https://api.github.com/repos/voytravel/voy/branches{/branch}",
"tags_url": "https://api.github.com/repos/voytravel/voy/tags",
"blobs_url": "https://api.github.com/repos/voytravel/voy/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/voytravel/voy/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/voytravel/voy/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/voytravel/voy/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/voytravel/voy/statuses/{sha}",
"languages_url": "https://api.github.com/repos/voytravel/voy/languages",
"stargazers_url": "https://api.github.com/repos/voytravel/voy/stargazers",
"contributors_url": "https://api.github.com/repos/voytravel/voy/contributors",
"subscribers_url": "https://api.github.com/repos/voytravel/voy/subscribers",
"subscription_url": "https://api.github.com/repos/voytravel/voy/subscription",
"commits_url": "https://api.github.com/repos/voytravel/voy/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/voytravel/voy/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/voytravel/voy/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/voytravel/voy/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/voytravel/voy/contents/{+path}",
"compare_url": "https://api.github.com/repos/voytravel/voy/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/voytravel/voy/merges",
"archive_url": "https://api.github.com/repos/voytravel/voy/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/voytravel/voy/downloads",
"issues_url": "https://api.github.com/repos/voytravel/voy/issues{/number}",
"pulls_url": "https://api.github.com/repos/voytravel/voy/pulls{/number}",
"milestones_url": "https://api.github.com/repos/voytravel/voy/milestones{/number}",
"notifications_url": "https://api.github.com/repos/voytravel/voy/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/voytravel/voy/labels{/name}",
"releases_url": "https://api.github.com/repos/voytravel/voy/releases{/id}",
"deployments_url": "https://api.github.com/repos/voytravel/voy/deployments",
"created_at": "2025-07-13T04:51:01Z",
"updated_at": "2026-07-10T07:48:48Z",
"pushed_at": "2026-07-10T17:29:15Z",
"git_url": "git://github.com/voytravel/voy.git",
"ssh_url": "org-213144510@github.com:voytravel/voy.git",
"clone_url": "https://github.com/voytravel/voy.git",
"svn_url": "https://github.com/voytravel/voy",
"homepage": null,
"size": 67720,
"stargazers_count": 1,
"watchers_count": 1,
"language": "TypeScript",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"has_discussions": true,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 39,
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
},
"allow_forking": false,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [],
"visibility": "private",
"forks": 0,
"open_issues": 39,
"watchers": 1,
"default_branch": "develop",
"allow_squash_merge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"allow_auto_merge": false,
"delete_branch_on_merge": true,
"allow_update_branch": true,
"use_squash_pr_title_as_default": false,
"squash_merge_commit_message": "COMMIT_MESSAGES",
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
"merge_commit_message": "PR_TITLE",
"merge_commit_title": "MERGE_MESSAGE"
}
},
"base": {
"label": "voytravel:develop",
"ref": "develop",
"sha": "fc29efb21f225d4a15a43c5ee627b33c14cb8bf9",
"user": {
"login": "voytravel",
"id": 213144510,
"node_id": "O_kgDODLRTvg",
"avatar_url": "https://avatars.githubusercontent.com/u/213144510?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/voytravel",
"html_url": "https://github.com/voytravel",
"followers_url": "https://api.github.com/users/voytravel/followers",
"following_url": "https://api.github.com/users/voytravel/following{/other_user}",
"gists_url": "https://api.github.com/users/voytravel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/voytravel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/voytravel/subscriptions",
"organizations_url": "https://api.github.com/users/voytravel/orgs",
"repos_url": "https://api.github.com/users/voytravel/repos",
"events_url": "https://api.github.com/users/voytravel/events{/privacy}",
"received_events_url": "https://api.github.com/users/voytravel/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"repo": {
"id": 1018806750,
"node_id": "R_kgDOPLnB3g",
"name": "voy",
"full_name": "voytravel/voy",
"private": true,
"owner": {
"login": "voytravel",
"id": 213144510,
"node_id": "O_kgDODLRTvg",
"avatar_url": "https://avatars.githubusercontent.com/u/213144510?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/voytravel",
"html_url": "https://github.com/voytravel",
"followers_url": "https://api.github.com/users/voytravel/followers",
"following_url": "https://api.github.com/users/voytravel/following{/other_user}",
"gists_url": "https://api.github.com/users/voytravel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/voytravel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/voytravel/subscriptions",
"organizations_url": "https://api.github.com/users/voytravel/orgs",
"repos_url": "https://api.github.com/users/voytravel/repos",
"events_url": "https://api.github.com/users/voytravel/events{/privacy}",
"received_events_url": "https://api.github.com/users/voytravel/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/voytravel/voy",
"description": "Voy Monorepo",
"fork": false,
"url": "https://api.github.com/repos/voytravel/voy",
"forks_url": "https://api.github.com/repos/voytravel/voy/forks",
"keys_url": "https://api.github.com/repos/voytravel/voy/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/voytravel/voy/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/voytravel/voy/teams",
"hooks_url": "https://api.github.com/repos/voytravel/voy/hooks",
"issue_events_url": "https://api.github.com/repos/voytravel/voy/issues/events{/number}",
"events_url": "https://api.github.com/repos/voytravel/voy/events",
"assignees_url": "https://api.github.com/repos/voytravel/voy/assignees{/user}",
"branches_url": "https://api.github.com/repos/voytravel/voy/branches{/branch}",
"tags_url": "https://api.github.com/repos/voytravel/voy/tags",
"blobs_url": "https://api.github.com/repos/voytravel/voy/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/voytravel/voy/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/voytravel/voy/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/voytravel/voy/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/voytravel/voy/statuses/{sha}",
"languages_url": "https://api.github.com/repos/voytravel/voy/languages",
"stargazers_url": "https://api.github.com/repos/voytravel/voy/stargazers",
"contributors_url": "https://api.github.com/repos/voytravel/voy/contributors",
"subscribers_url": "https://api.github.com/repos/voytravel/voy/subscribers",
"subscription_url": "https://api.github.com/repos/voytravel/voy/subscription",
"commits_url": "https://api.github.com/repos/voytravel/voy/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/voytravel/voy/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/voytravel/voy/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/voytravel/voy/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/voytravel/voy/contents/{+path}",
"compare_url": "https://api.github.com/repos/voytravel/voy/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/voytravel/voy/merges",
"archive_url": "https://api.github.com/repos/voytravel/voy/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/voytravel/voy/downloads",
"issues_url": "https://api.github.com/repos/voytravel/voy/issues{/number}",
"pulls_url": "https://api.github.com/repos/voytravel/voy/pulls{/number}",
"milestones_url": "https://api.github.com/repos/voytravel/voy/milestones{/number}",
"notifications_url": "https://api.github.com/repos/voytravel/voy/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/voytravel/voy/labels{/name}",
"releases_url": "https://api.github.com/repos/voytravel/voy/releases{/id}",
"deployments_url": "https://api.github.com/repos/voytravel/voy/deployments",
"created_at": "2025-07-13T04:51:01Z",
"updated_at": "2026-07-10T07:48:48Z",
"pushed_at": "2026-07-10T17:29:15Z",
"git_url": "git://github.com/voytravel/voy.git",
"ssh_url": "org-213144510@github.com:voytravel/voy.git",
"clone_url": "https://github.com/voytravel/voy.git",
"svn_url": "https://github.com/voytravel/voy",
"homepage": null,
"size": 67720,
"stargazers_count": 1,
"watchers_count": 1,
"language": "TypeScript",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"has_discussions": true,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 39,
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
},
"allow_forking": false,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [],
"visibility": "private",
"forks": 0,
"open_issues": 39,
"watchers": 1,
"default_branch": "develop",
"allow_squash_merge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"allow_auto_merge": false,
"delete_branch_on_merge": true,
"allow_update_branch": true,
"use_squash_pr_title_as_default": false,
"squash_merge_commit_message": "COMMIT_MESSAGES",
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
"merge_commit_message": "PR_TITLE",
"merge_commit_title": "MERGE_MESSAGE"
}
},
"_links": {
"self": {
"href": "https://api.github.com/repos/voytravel/voy/pulls/1132"
},
"html": {
"href": "https://github.com/voytravel/voy/pull/1132"
},
"issue": {
"href": "https://api.github.com/repos/voytravel/voy/issues/1132"
},
"comments": {
"href": "https://api.github.com/repos/voytravel/voy/issues/1132/comments"
},
"review_comments": {
"href": "https://api.github.com/repos/voytravel/voy/pulls/1132/comments"
},
"review_comment": {
"href": "https://api.github.com/repos/voytravel/voy/pulls/comments{/number}"
},
"commits": {
"href": "https://api.github.com/repos/voytravel/voy/pulls/1132/commits"
},
"statuses": {
"href": "https://api.github.com/repos/voytravel/voy/statuses/96092606a632c19d76e16c552a3dbee5c125f17e"
}
},
"author_association": "COLLABORATOR",
"auto_merge": null,
"assignee": null,
"active_lock_reason": null,
"merged": false,
"mergeable": null,
"rebaseable": null,
"mergeable_state": "unknown",
"merged_by": null,
"comments": 0,
"review_comments": 0,
"maintainer_can_modify": false,
"commits": 1,
"additions": 11132,
"deletions": 30,
"changed_files": 27
},
"repository": {
"id": 1018806750,
"node_id": "R_kgDOPLnB3g",
"name": "voy",
"full_name": "voytravel/voy",
"private": true,
"owner": {
"login": "voytravel",
"id": 213144510,
"node_id": "O_kgDODLRTvg",
"avatar_url": "https://avatars.githubusercontent.com/u/213144510?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/voytravel",
"html_url": "https://github.com/voytravel",
"followers_url": "https://api.github.com/users/voytravel/followers",
"following_url": "https://api.github.com/users/voytravel/following{/other_user}",
"gists_url": "https://api.github.com/users/voytravel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/voytravel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/voytravel/subscriptions",
"organizations_url": "https://api.github.com/users/voytravel/orgs",
"repos_url": "https://api.github.com/users/voytravel/repos",
"events_url": "https://api.github.com/users/voytravel/events{/privacy}",
"received_events_url": "https://api.github.com/users/voytravel/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/voytravel/voy",
"description": "Voy Monorepo",
"fork": false,
"url": "https://api.github.com/repos/voytravel/voy",
"forks_url": "https://api.github.com/repos/voytravel/voy/forks",
"keys_url": "https://api.github.com/repos/voytravel/voy/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/voytravel/voy/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/voytravel/voy/teams",
"hooks_url": "https://api.github.com/repos/voytravel/voy/hooks",
"issue_events_url": "https://api.github.com/repos/voytravel/voy/issues/events{/number}",
"events_url": "https://api.github.com/repos/voytravel/voy/events",
"assignees_url": "https://api.github.com/repos/voytravel/voy/assignees{/user}",
"branches_url": "https://api.github.com/repos/voytravel/voy/branches{/branch}",
"tags_url": "https://api.github.com/repos/voytravel/voy/tags",
"blobs_url": "https://api.github.com/repos/voytravel/voy/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/voytravel/voy/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/voytravel/voy/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/voytravel/voy/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/voytravel/voy/statuses/{sha}",
"languages_url": "https://api.github.com/repos/voytravel/voy/languages",
"stargazers_url": "https://api.github.com/repos/voytravel/voy/stargazers",
"contributors_url": "https://api.github.com/repos/voytravel/voy/contributors",
"subscribers_url": "https://api.github.com/repos/voytravel/voy/subscribers",
"subscription_url": "https://api.github.com/repos/voytravel/voy/subscription",
"commits_url": "https://api.github.com/repos/voytravel/voy/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/voytravel/voy/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/voytravel/voy/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/voytravel/voy/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/voytravel/voy/contents/{+path}",
"compare_url": "https://api.github.com/repos/voytravel/voy/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/voytravel/voy/merges",
"archive_url": "https://api.github.com/repos/voytravel/voy/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/voytravel/voy/downloads",
"issues_url": "https://api.github.com/repos/voytravel/voy/issues{/number}",
"pulls_url": "https://api.github.com/repos/voytravel/voy/pulls{/number}",
"milestones_url": "https://api.github.com/repos/voytravel/voy/milestones{/number}",
"notifications_url": "https://api.github.com/repos/voytravel/voy/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/voytravel/voy/labels{/name}",
"releases_url": "https://api.github.com/repos/voytravel/voy/releases{/id}",
"deployments_url": "https://api.github.com/repos/voytravel/voy/deployments",
"created_at": "2025-07-13T04:51:01Z",
"updated_at": "2026-07-10T07:48:48Z",
"pushed_at": "2026-07-10T17:29:15Z",
"git_url": "git://github.com/voytravel/voy.git",
"ssh_url": "org-213144510@github.com:voytravel/voy.git",
"clone_url": "https://github.com/voytravel/voy.git",
"svn_url": "https://github.com/voytravel/voy",
"homepage": null,
"size": 67720,
"stargazers_count": 1,
"watchers_count": 1,
"language": "TypeScript",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"has_discussions": true,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 39,
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
},
"allow_forking": false,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [],
"visibility": "private",
"forks": 0,
"open_issues": 39,
"watchers": 1,
"default_branch": "develop",
"custom_properties": {}
},
"organization": {
"login": "voytravel",
"id": 213144510,
"node_id": "O_kgDODLRTvg",
"url": "https://api.github.com/orgs/voytravel",
"repos_url": "https://api.github.com/orgs/voytravel/repos",
"events_url": "https://api.github.com/orgs/voytravel/events",
"hooks_url": "https://api.github.com/orgs/voytravel/hooks",
"issues_url": "https://api.github.com/orgs/voytravel/issues",
"members_url": "https://api.github.com/orgs/voytravel/members{/member}",
"public_members_url": "https://api.github.com/orgs/voytravel/public_members{/member}",
"avatar_url": "https://avatars.githubusercontent.com/u/213144510?v=4",
"description": ""
},
"enterprise": {
"id": 469843,
"slug": "darkmatter",
"name": "darkmatter",
"node_id": "E_kgDOAAcrUw",
"avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
"description": "",
"website_url": "darkmatter.io",
"html_url": "https://github.com/enterprises/darkmatter",
"created_at": "2025-09-07T16:01:00Z",
"updated_at": "2026-07-07T15:59:26Z"
},
"sender": {
"login": "mylordkaz",
"id": 128312170,
"node_id": "U_kgDOB6Xjag",
"avatar_url": "https://avatars.githubusercontent.com/u/128312170?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mylordkaz",
"html_url": "https://github.com/mylordkaz",
"followers_url": "https://api.github.com/users/mylordkaz/followers",
"following_url": "https://api.github.com/users/mylordkaz/following{/other_user}",
"gists_url": "https://api.github.com/users/mylordkaz/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mylordkaz/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mylordkaz/subscriptions",
"organizations_url": "https://api.github.com/users/mylordkaz/orgs",
"repos_url": "https://api.github.com/users/mylordkaz/repos",
"events_url": "https://api.github.com/users/mylordkaz/events{/privacy}",
"received_events_url": "https://api.github.com/users/mylordkaz/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"installation": {
"id": 143976268,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTQzOTc2MjY4"
}
}