{"id":38497945,"url":"https://github.com/rdkcentral/xdialserver","last_synced_at":"2026-01-17T05:56:42.822Z","repository":{"id":37758890,"uuid":"299893072","full_name":"rdkcentral/xdialserver","owner":"rdkcentral","description":"Dial server for RDK.","archived":false,"fork":false,"pushed_at":"2026-01-14T09:14:54.000Z","size":530,"stargazers_count":3,"open_issues_count":19,"forks_count":25,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-14T09:24:08.094Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/rdkcentral.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-30T11:09:40.000Z","updated_at":"2025-10-23T14:06:36.000Z","dependencies_parsed_at":"2023-11-29T16:27:36.763Z","dependency_job_id":"312f09dc-7c69-49fa-9fea-508cb4507e72","html_url":"https://github.com/rdkcentral/xdialserver","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/rdkcentral/xdialserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fxdialserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fxdialserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fxdialserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fxdialserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rdkcentral","download_url":"https://codeload.github.com/rdkcentral/xdialserver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fxdialserver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28501349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-17T05:56:42.132Z","updated_at":"2026-01-17T05:56:42.813Z","avatar_url":"https://github.com/rdkcentral.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DIAL 2.2.1 Server Implementation\n\n## XCAST Overview\n![Architecture Overview](/docs/overview.png)\n\nThe RDK DIAL server supports XCAST_2 API through thunder plugin interface\n\n## XCAST_2 API\n\n### setEnabled\n\n```\nvoid setEnabled(boolean);\n```\nEnable or disable XCAST service. Default value is __true__. When disabled, the customer should not be able to discover CPE as a cast target for any client application. After enable(true) server application manger must re-register all app that are available for user to cast.\n\nThe value is persisted on device after each call. Upon reboot or reconnect, the persisted value is used until the next call.\n\n### getEnabled\n```\nobject getEnabled(void)\n```\n\nReturn the persisted value in json object\nObject Parameter\n```\n{\n  \"enabled\" :  \"true\"|\"false\"\n}\n```\n\n### onApplicationLaunchRequest\n```\nvoid onApplicationLaunchRequest(Object)\n```\nFired when service receives a launch request from client.  If not already running, the requested app is started. if already running and in background mode, the requested app enters foreground mode (optimus::running, xcast::running). If already in foreground mode, the request does not change app state.\n\nThis request must result in an `onApplicationStateChanged` event\n\nObject parameter\n```\n{\n  applicationName : \u003cstring\u003e registered application name\n  parameters: type information see below\n /*\n  * The format and interpretation of 'parameter values' is determined between the (app launcher\n  * or cast target) and the cast client for each application. But overall, the parameter string\n  * conforms to the following pattern:\n  *\n  * parameters: {\n  *   \"url\" : \u003cstring\u003e \"dialpayload=...\u0026\u0026additionalDataUrl=...[\u0026\u0026{query_string}]\n  * }\n  *\n  * where in the `url` value,\n  * `dialpayload` is the url-encoded HTTP POST payload from DIAL launch request\n  * `additionalDataUrl` is a local URL generated by DIAL server for application to communicate with.\n  * `query_string` contains all the url-encoded query strings in the HTTP POST request.\n */\n}\n```\n\n### onApplicationStopRequest\n```\nvoid onApplicationStopRequest(Object)\n```\nFired when service receives an stop request from cast client. If the app is already running and either in foreground or background mode, then the requested app is destroyed (optimus::destroyed, xcast::stopped). If the app is not running, this request triggers an error onApplicationStateChanged message with error = \"Invalid\"\n\nThis request must result in an `onApplicationStateChanged` event\n\n\nObject parameter\n```\n{\n  applicationName : \u003cstring\u003e registered application name\n  applicationId: [string] (optional) application instance Id.\n}\n```\n\n### onApplicationStateRequest\n```\nvoid onApplicationStateRequest(object)\n```\nFired when service needs an update of application state.\n\nThis request must result in an `onApplicationStateChanged` event\n\nObject parameter\n```\n{\n  applicationName: \u003cstring\u003e name of the application whose state is being requested\n  applicationId: [string] (optional) application instance Id.\n}\n```\n\n### onApplicationStateChanged\n```\nvoid onApplicationStateRequest(object)\n\n```\nNotify whenever app changes state (due to user activity or internal error or other reasons). For singleton, applicationId is optional\n\nIf application launch/stop request is denied or fails to reach the target state or the state change is triggered by an internal error, a predefined error string should be included. This error may be translated from DIAL http error code to a XCAST client's error code.\n\nObject parameter\n```\n{\n  serviceName: [string] (optional) name of the service that the request originates from (DIAL, Alexa etc.)\n  applicationName: \u003cstring\u003e name of the application whose state has changed.\n  applicationId: [string] (optional) application instance Id,\n  state: \u003cstring\u003e Predefined state strings. [running|stopped],\n  error: [string] (optional) Predefined Error string from cast target app [none|forbidden|unavailable|invalid|internal]\n}\n```\n\nClient Error Mapping Example:\n\n|XCastService Error| Definition | DIAL Client Error|\n|------------------|------------|------------------|\n|none (or absent)  |request (start/stop) is fulfilled successfully|HTTP 200 OK|\n|forbidden         |user is not allowed to change the state of the app (This is not related to user account authentication of the native app)|HTTP 403 Forbidden|\n|unavailable       |\tthe target native app is not available on the device|HTTP 404 Not Found|\n|invalid           |\tthe request is invalid (bad param for example)|\tHTTP 400 Bad Request|\n|internal          |\tthe server fail to fulfill the request (server error)|\tHTTP 500 Internal|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frdkcentral%2Fxdialserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frdkcentral%2Fxdialserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frdkcentral%2Fxdialserver/lists"}