{"id":38498021,"url":"https://github.com/rdkcentral/entservices-apis","last_synced_at":"2026-01-17T05:56:45.991Z","repository":{"id":279298748,"uuid":"928977015","full_name":"rdkcentral/entservices-apis","owner":"rdkcentral","description":"EntServices APIs are a set of JSON-RPC based RESTful services that provide access to various functionality in the entertainment devices that are powered by RDK middleware and ENTOS Operating System","archived":false,"fork":false,"pushed_at":"2026-01-12T22:42:04.000Z","size":3905,"stargazers_count":1,"open_issues_count":63,"forks_count":17,"subscribers_count":35,"default_branch":"develop","last_synced_at":"2026-01-13T00:44:42.722Z","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":"CHANGELOG.md","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":"governance.md","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":"2025-02-07T15:29:55.000Z","updated_at":"2026-01-12T19:30:47.000Z","dependencies_parsed_at":"2025-02-24T21:33:09.165Z","dependency_job_id":"6d0fcad8-359a-48d4-855c-0068990cca96","html_url":"https://github.com/rdkcentral/entservices-apis","commit_stats":null,"previous_names":["rdkcentral/entservices-apis"],"tags_count":136,"template":false,"template_full_name":null,"purl":"pkg:github/rdkcentral/entservices-apis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fentservices-apis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fentservices-apis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fentservices-apis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fentservices-apis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rdkcentral","download_url":"https://codeload.github.com/rdkcentral/entservices-apis/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rdkcentral%2Fentservices-apis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28501350,"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:45.271Z","updated_at":"2026-01-17T05:56:45.986Z","avatar_url":"https://github.com/rdkcentral.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Entertainment Services APIs #\n\nEntertainment services (a.k.a., Ent Services) APIs are a set of Interface definitions that allows RDK MW developers to build thunder plugins as services. The interface definitions are architected and designed in such a way that these services can provide apps to have access to various platform functionalities in the entertainment devices that are powered by RDK middleware. App developers who would like to make use of the underlying features in the entertainment devices MAY refer this documentation to write, test and deploy their apps in those devices that run RDK MW.\n\nEnt Services APIs are maintained and managed through a specific governance model. Please make sure you are aware of all the details covered in the [governance document ](./governance.md) before you start contributing. \n\nIf you would like to contribute to this project, please fork this project and raise the PR. You will be contacted by one of the members of the governance team.\n\n[View Latest Documentation](https://rdkcentral.github.io/entservices-apis/#/README)\n\n\n\n### Table of Contents ###\n\n[Contributing to Ent Services APIs](#contributing-to-entservices-apis)\n\n[Comcast CI/CD](#comcast-cicd)\n\n[Documentation](#documentation)\n\n[Coding Guidelines](#coding-guidelines)\n\n[Versioning](#versioning)\n\n[Code Review Checklist](#code-review-checklist)\n\n[Questions?](#questions)\n\n\n## Contributing to ENT Services APIs ##\n\n### **License Requirements** ###\n1. Before RDK accepts your code into the project you must sign the RDK [Contributor License Agreement (CLA)](https://developer.rdkcentral.com/source/contribute/contribute/before_you_contribute/).\n\n2. Each new file should include the latest [RDKM license header](https://developer.rdkcentral.com/support/support/articles/coding_guideline/)\n\n3. License for this project is included in the root directory and there shouldn't be any additional license file in any of the subfolders.\n\n### **How to contribute?** ###\n1. [Fork](https://docs.github.com/en/github/getting-started-with-github/quickstart/fork-a-repo) the repository, commit your changes, build and test it in at least one approved test platform.\n\n2. Submit your changes as a [pull request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) to the develop branch.\n\n\n### **Pull request Checklist** ###\n1. When a pull request is submitted, blackduck, copyright and cla checks will automatically be triggered. Ensure these checks have passed (turned into green).\n\n2. At least one approved reviewer needs to **review and approve** the pull request.\n\n3. For tracking and release management purposes, each pull request and all the commits in the pull request shall include **RDK ticket number(s) or Github issue number(s)** and “reason for the change”.\n\n4. Any pull request from Comcast developers should include a link to successful gerrit verification (in the comment section).\n\n## Comcast CI/CD ##\n\nTO BE UPDATED!!\n\n## Documentation ##\n\n**Note:** Review [Governance](./governance) document for detailed information on API specification guidelines.\n\n- By default, the APIs are defined / described using header file so COMRPC is inherently supported by default (Refer entservices-apis/apis/\u003cservice name\u003e/\u003cservicename\u003e.h for example)\n\n- When the implementation of a given Ent Service is expected to support JSONRPC in addition to COMRPC, then interface definition must have \"@json 1.0.0\" and \"@text:keep\" \n\n- When the implementation of a given Ent Service is expected to support only JSONRPC, then use @stubgen:omit tag at struct/class to omit proxystub generation for COM-RPC support.\n\nMarkdown files are generated from the header file / JSON definitions using the md_generator tool (`tools/md_generator/generate_md.py`).\n\nThe generator tool requires:\n\n* Python 3.5 or higher\n* The jsonref library\n\nVerify your Python version:\n\n```shell\npython --version\n```\n\nInstall jsonref if it is not already installed:\n\n```shell\npip install jsonref\n```\n\n### Generating Markdown for a Single Service ###\n\n\n#### Generating Markdown for a Single Service from interface header###\nTo generate markdown for a single service from header :\n\n1. Change directories to `tools/md_generator/h2md`\n2. Run `generate_md_from_header.py` and provide the location of the header file using the `-i` argument and the output directory using the `-o` argument.\n\n  ```shell\n  python3 generate_md_from_header.py -i ../../../apis/MyService -o ../../../docs/apis/ \n  ```\n\n\n#### Generating Markdown for a Single Service from json###\nTo generate markdown for a single service from json :\n\n1. Change directories to `tools/md_generator/json2md`.\n2. Run `generator_json.py` and provide the location of the service JSON plugin file using the `-d` argument and the output directory using the `-o` argument. You must also include the `--no-interfaces-section` argument; otherwise, an interface section is added to the markdown. Make certain that you are pointing to the plugin definition and not the interface definition. Here is an example of using the tool:\n\n    ```shell\n    python ./generator_json.py -d ../json/MyService/MyServicePlugin.json  -o ../../../docs/apis --no-interfaces-section --verbose $files\n    ```\n\n    The `MyServicePlugin.md` file is written to the `../../../docs/apis` folder. This is the standard directory where all the service API markdown files are written.\n\n### Generating Markdown for All Services ###\n\nA script is provided to generate the markdown for all services and does a complete build of the documentation. The script only generates the markdown for a service if the header definition has been updated. In addition, the script post-processes the generated markdown files to create standard link anchors and to clean the build.\n\nTo generate markdown for all services:\n\n1. From the entservices-apis repository, change directories to `tools/md_generator`.\n2. Run `generate_md.py`. For example:\n\n    ```shell\n    python ./generate_md.py\n    ```\n\n    All markdown files are written to the `../../docs/apis` folder. This is the standard directory where all the service API markdown files are written.\n\nUse the existing services as a guide when learning the structure of both the plugin and interface schemas.\n\n## Coding Guidelines ##\n\n** Note:*: Refer [governance](./governance.md) document for more specific coding guidelines while the below sub section provides \"generic\" guidelines.\n\n1. Be Consistent\n\n    * The point of having style guidelines is to have a common vocabulary of coding so people can concentrate on what you’re saying rather than on how you’re saying it.\n\n    * If the code you add to a file looks drastically different from the existing code around it, it throws readers out of their rhythm. Avoid this.\n\n    * If you’re editing code, take a few minutes to determine the coding style of the component and apply the same style.\n\n    * To maintain uniformity in all text-editors, set TAB size to 2 or 4 spaces and replace TAB by SPACES\n\n    * If they use spaces around all their arithmetic operators, you should too.\n\n    * If the comments have little boxes of hash marks around them, make your comments have little boxes of hash marks around them too.\n\n\n2. All Ent Services must have a callsign with a prefix of `org.rdk`. Ent Service name must be CamelCase and start with a capital letter.\n\n3.  Inter-plugin communication - There might be use cases where one Ent Service needs to call APIs in another Ent Service. Don't use JSON-RPC for such communication since it's an overhead and not preferred for inter-plugin communication. JSON-RPC must be used only by applications. So, in such cases, use COM RPC. \n\n## Versioning ##\n\n* Versioning\n   * Refer [governance](./governance.md) document for more details on how versioning is maintained\n\n* Changelog\n     * Change log is now automated. Make sure the PR contains appropriate title, description and the description contains a line as follows:\n        * version: \u003cMajor/Minor/Patch\u003e\n\n* Deprecation\n    * Breaking changes to the API should first go through Deprecation. Following needs to be done for deprecation.\n        * The API/s getting deprecated should be marked with a [\"deprecated\"] label in the json schema, or marked with @deprecated tag in the interface header file. This will ensure that it's updated in the API documentation\n\n## Code Review Checklist ##\n\nThis checklist is primarily intended for maintainers or reviewers. Please check for the following before approving Pull Requests.\n\n* [Coding Guidelines](#coding-guidelines) are followed. \n* API Changes are [documented](#documentation) and [versioned](#versioning).\n* Approve Pull Requests to develop branch only. Moving changes from develop branch to main branch will be taken care by maintainers at the appropriate time.\n\n## Questions? ##\n\nIf you have any questions or concerns reach out to [Ramasamy Thalavay Pillai](mailto:ramasamy_thalavaypillai@comcast.com) OR [Anand Kandasamy](mailto:anand_kandasamy@comcast.com)\n\nFor a service specific question, maintainers might refer you to the service owner(s).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frdkcentral%2Fentservices-apis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frdkcentral%2Fentservices-apis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frdkcentral%2Fentservices-apis/lists"}