{"id":19441392,"url":"https://github.com/jeffmikels/propresenter-api","last_synced_at":"2025-07-22T13:06:50.614Z","repository":{"id":48819348,"uuid":"117270097","full_name":"jeffmikels/ProPresenter-API","owner":"jeffmikels","description":"Documenting RenewedVision's undocumented Remote Control protocol with examples","archived":false,"fork":false,"pushed_at":"2022-04-19T17:25:14.000Z","size":799,"stargazers_count":105,"open_issues_count":0,"forks_count":16,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-25T00:36:46.908Z","etag":null,"topics":["hacktoberfest","hacktoberfest2021","propresenter"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffmikels.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-12T17:36:06.000Z","updated_at":"2025-02-27T07:38:58.000Z","dependencies_parsed_at":"2022-09-03T22:21:37.464Z","dependency_job_id":null,"html_url":"https://github.com/jeffmikels/ProPresenter-API","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jeffmikels/ProPresenter-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffmikels%2FProPresenter-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffmikels%2FProPresenter-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffmikels%2FProPresenter-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffmikels%2FProPresenter-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffmikels","download_url":"https://codeload.github.com/jeffmikels/ProPresenter-API/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffmikels%2FProPresenter-API/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266499307,"owners_count":23938832,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["hacktoberfest","hacktoberfest2021","propresenter"],"created_at":"2024-11-10T15:35:13.620Z","updated_at":"2025-07-22T13:06:50.586Z","avatar_url":"https://github.com/jeffmikels.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProPresenter-API\n\n## 7.9 UPDATE \u0026 PUBLIC API\n\nThe upcoming 7.9 release of ProPresenter will include an officially supported public API.\n\nThe official documentation page is here:\n\nhttps://renewedvision.com/propresenter/api/\n\nThe full auto-generated Swagger HTML is a bit easier to navigate, and it is here:\n\nhttps://renewedvision.com/api_spec/index.html\n\nAnd, the actual source OPENAPI spec document (JS) is here:\n\nhttps://renewedvision.com/api_spec/swagger.json\n\nBut I'm mirroring it here as a formatted JSON document too.\n\n[pro7.9.openapi-spec.json](https://github.com/jeffmikels/ProPresenter-API/blob/master/pro7.9.openapi-spec.json)\n\n## NETWORK LINK\n\nFor information on the ProPresenter Network Link protocol, see my other repo here:\n\nhttps://github.com/jeffmikels/pro_presenter_network_link_tools\n\n## REVERSE-ENGINEERED STAGE DISPLAY \u0026 REMOTE DOCUMENTATION\n\nDocumenting RenewedVision's undocumented network protocols with examples\n\nSee below for changes to this repository:\n\nFor ProPresenter 6, go here:\nhttps://jeffmikels.github.io/ProPresenter-API/Pro6/\n\nFor ProPresenter 7, go here:\nhttps://jeffmikels.github.io/ProPresenter-API/Pro7/\n\nFor a Node Library implementing this protocol, go here:\nhttps://github.com/utopiantools/node-propresenter.git\n\nor\n\n```\nnpm install https://github.com/utopiantools/node-propresenter.git\n```\n\nFor an example of a real app built with node.js that uses this API to turn ProPresenter into a universal remote control:\nhttps://github.com/jeffmikels/propresenter-watcher\n\nFor documentation regarding the new Pro7 file format:\nhttps://github.com/greyshirtguy/ProPresenter7-Proto\n\n## CHANGES\n\nRecently, I have begun to migrate all the documentation into machine-readable formats\nso that as the Pro7 API improves, we will be able to more readily track the changes.\n\nIt is also my hope that this effort will inspire RenewedVision to join the documentation\neffort directly.\n\n## API METHODOLOGY\n\nAsyncAPI is a great system for defining APIs and for generating code and documentation, but editing it by hand\nseemed cumbersome to me, so I built my own solution.\n\n1. I converted our former Markdown documentation files into a `api.yaml` format that is inspired by AsyncAPI, but is more easily edited.\n2. I wrote a Python script to automatically convert my `api.yaml` files into AsyncAPI 2.1.0 files.\n3. I use the AsyncAPI command line generator commands to render out html files.\n\n## API.YAML SPECIFICATIONS\n\nThe `api.yaml` file begins with a section called `asyncapi`. That section may contain anything an AsyncAPI `2.1.0` file may contain.\n\nThen, there is a `types` section that holds defined data types similar to the way AsyncAPI does schemas. These will be translated into AsyncAPI schema nodes.\n\nTypes are structured as follows:\n\n```yaml\ntypename:\n  type: |-\n    can be a built-in type like\n\n    `integer`, `string`, `number`, `list`, `list[othertype]`, or `object`\n\n    or it can be another defined type or list[othertype]\n  parameters:\n    field_1:\n      type: typename\n    field_2: constantvalue\n    field_3:\n      type: typename\n      options: [option1, option2, option3]\n      description: \"each field can have a description\"\n      examples: [\"each field can have an example\"]\n  example:\n    field_1: an arbitrary value\n    field_2: constantvalue\n    field_3: option1\n```\n\nThen, there is the `channels` section which defines the main application message endpoints. ProPresenter exposes two channels, `/remote` and `/stagedisplay`.\n\nEach `channel` is structured as follows:\n\n```yaml\nchannels:\n  channelname:\n    summary: Simple name for this channel\n    description: |\n      Block markdown content describing this channel in detail\n      actions: \"list of actions, see below\"\n```\n\nEach `channel` has a list of `actions` that can be sent or received.\n\nActions may contain a `message` and or `response` and are structured as follows (NOTE: `payload` and `example` follow the same structure as a type, and the `example` must match the payload structure):\n\n```yaml\nactionName:\n  summary: simple name for this action\n  description: markdown text describing this action\n  message:\n    payload:\n      action: actionName\n      field_2: someConstantValue\n      field_3:\n        type: string\n        options: [\"1\", \"2\", \"3\"]\n        example: \"2\"\n        description: textual description\n    example:\n  response:\n    payload:\n    example:\n```\n\n# CONTRIBUTING\n\nTo contribute, please just edit the `api.yaml` file. I will regenerate the other documentation myself until I get Github actions working.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffmikels%2Fpropresenter-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffmikels%2Fpropresenter-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffmikels%2Fpropresenter-api/lists"}