{"id":28546538,"url":"https://github.com/googlesamples/tv-video-discovery-samples","last_synced_at":"2025-07-07T06:30:50.821Z","repository":{"id":286226221,"uuid":"929666121","full_name":"googlesamples/tv-video-discovery-samples","owner":"googlesamples","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-22T06:02:13.000Z","size":410,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T23:44:03.812Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/googlesamples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-09T04:43:16.000Z","updated_at":"2025-04-22T06:02:17.000Z","dependencies_parsed_at":"2025-04-05T04:25:02.252Z","dependency_job_id":"fc2e9648-fd05-4446-972a-831cc08356e6","html_url":"https://github.com/googlesamples/tv-video-discovery-samples","commit_stats":null,"previous_names":["googlesamples/tv-video-discovery-samples"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/googlesamples/tv-video-discovery-samples","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlesamples%2Ftv-video-discovery-samples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlesamples%2Ftv-video-discovery-samples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlesamples%2Ftv-video-discovery-samples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlesamples%2Ftv-video-discovery-samples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/googlesamples","download_url":"https://codeload.github.com/googlesamples/tv-video-discovery-samples/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlesamples%2Ftv-video-discovery-samples/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264027435,"owners_count":23546072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-09T23:39:44.135Z","updated_at":"2025-07-07T06:30:50.814Z","avatar_url":"https://github.com/googlesamples.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tv Video Discovery Samples\n\nThis repository contains samples demonstrating how a 3p app can integrate with\nthe video discovery APIs to send personalized user data to Google.\n\n## When should you invoke the APIs?\n\n\u003e [!Caution]\n\u003e\n\u003e The publish APIs are overwrite APIs. Every new publish API call will overwrite\n\u003e the previously published requests for that specific `AccountProfile`. So,\n\u003e please don't invoke the delete API to clear Continue Watching row because\n\u003e delete APIs are reserved for special instances. Instead, just invoke the\n\u003e publish APIs with empty list in the request body.\n\n\u003e [!Important]\n\u003e\n\u003e Remember to set the `syncAcrossDevices` flag to `true` (or `false` if user\n\u003e hasn't consented to share the data with Google) in both the publish as well as\n\u003e delete requests regardless of the PublishReason or DeleteReason.\n\n1. **Publish Continuation Clusters API**: This api should be invoked on the\n   following user events:\n   - User logs in to the account. If your app supports multiple profiles within\n     the same account, then invoke the publish API after the user selects the\n     profile\n   - User switches between profiles (only applicable if your app supports\n     multi-profile accounts)\n   - User pauses/stops playing a video. This includes publishing when user hits\n     the back button to go back to previous page while the video playback was in\n     progress. This also includes app exit when the playback is in progress.\n   - User scrubs the video forwards or backwards\n   - User completes watching a video. The Continue Watching request should now\n     not contain the completed video. If the video is part of a series (Movie or\n     Tv Show), then add the next video to the Continue Watching request with\n     correct `WatchNextType`.\n   - User removes an item from your app's Continue Watching row. The Continue\n     Watching request should now not contain the removed entity.\n1. **Delete Clusters API**: Use the correct DeleteReason when sending the delete\n   request. Invoke the Delete Clusters API on the following events:\n   - User logs out of the account\n   - User revokes consent to share data with Google\n   - User deletes a profile within an account\n   - User deletes the entire account\n\n## Samples\n\n- **android-kotlin**: Demonstrates how an Android Tv and Android Mobile app\n  written in Kotlin can integrate with Engage SDK to publish user personalized\n  data.\n\n## Contributing\n\nTo report a bug or raise a feature request, please use GitHub issues. Please\ncheck with the contributors if it would be ok for you to work on it. An approved\nGitHub issue is required along with your Pull request.\n\nYou will also need to sign the CLA. When you raise a PR, the bot will ask you to\ndo that.\n\n\u003e [!Warning]\n\u003e\n\u003e A pull request without an approved issue will be closed without giving any\n\u003e reason.\n\n## Disclaimer\n\nThis project is intended for demonstration purposes only and is not eligible for\nthe\n[Google Open Source Software Vulnerability Rewards Program](https://bughunters.google.com/open-source-security).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglesamples%2Ftv-video-discovery-samples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgooglesamples%2Ftv-video-discovery-samples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglesamples%2Ftv-video-discovery-samples/lists"}