{"id":15790366,"url":"https://github.com/grokify/ringcentral-legacy-api-proxy","last_synced_at":"2025-03-31T18:42:36.377Z","repository":{"id":142759273,"uuid":"86164545","full_name":"grokify/ringcentral-legacy-api-proxy","owner":"grokify","description":"Proxy Service to convert legacy RingCentral RPC API requests to new REST API requests.","archived":false,"fork":false,"pushed_at":"2018-06-11T02:48:49.000Z","size":1999,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-11T22:12:14.356Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grokify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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}},"created_at":"2017-03-25T14:48:09.000Z","updated_at":"2018-06-11T02:48:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b78b4af-44ae-4314-ba81-fd7419ffd057","html_url":"https://github.com/grokify/ringcentral-legacy-api-proxy","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grokify%2Fringcentral-legacy-api-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grokify%2Fringcentral-legacy-api-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grokify%2Fringcentral-legacy-api-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grokify%2Fringcentral-legacy-api-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grokify","download_url":"https://codeload.github.com/grokify/ringcentral-legacy-api-proxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246521076,"owners_count":20791060,"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":"2024-10-04T22:21:07.519Z","updated_at":"2025-03-31T18:42:36.344Z","avatar_url":"https://github.com/grokify.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"RingCentral Legacy API Proxy\n============================\n\n[![Build Status][build-status-svg]][build-status-link]\n[![Go Report Card][goreport-svg]][goreport-link]\n[![Docs][docs-godoc-svg]][docs-godoc-link]\n[![License][license-svg]][license-link]\n[![Heroku][heroku-svg]][heroku-link]\n[![Stack Overflow][stackoverflow-svg]][stackoverflow-url]\n[![Chat][chat-svg]][chat-url]\n\n [build-status-svg]: https://api.travis-ci.org/grokify/ringcentral-legacy-api-proxy.svg?branch=master\n [build-status-link]: https://travis-ci.org/grokify/ringcentral-legacy-api-proxy\n [goreport-svg]: https://goreportcard.com/badge/github.com/grokify/ringcentral-legacy-api-proxy\n [goreport-link]: https://goreportcard.com/report/github.com/grokify/ringcentral-legacy-api-proxy\n [docs-godoc-svg]: https://img.shields.io/badge/docs-godoc-blue.svg\n [docs-godoc-link]: https://godoc.org/github.com/grokify/ringcentral-legacy-api-proxy\n [license-svg]: https://img.shields.io/badge/license-MIT-blue.svg\n [license-link]: https://github.com/grokify/ringcentral-legacy-api-proxy/blob/master/LICENSE\n [chat-svg]: https://img.shields.io/badge/%F0%9F%92%AC_Chat_on-Glip-orange.svg?style=flat\n [chat-url]: https://glipped.herokuapp.com/\n [stackoverflow-svg]: https://img.shields.io/badge/stack%20overflow-ringcentral-orange.svg\n [stackoverflow-url]: https://stackoverflow.com/questions/tagged/ringcentral\n [heroku-svg]: https://img.shields.io/badge/%E2%86%91_Deploy_to-Heroku-7056bf.svg?style=flat\n [heroku-link]: https://heroku.com/deploy\n\nThis is a proxy service that allows apps using RingCentral's legacy RPC APIs to use the new [RingCentral REST APIs](https://developer.ringcentral.com) seamlessly. End-of-Life for the legacy APIs is targeted for the 10.2 release, August 9, 2018. Use of this proxy can enable your app to use the new REST APIs with the same interface as the legacy RPC APIs.\n\n* https://service.ringcentral.com/ringoutapi/ ([docs](https://grokify.github.io/ringcentral-legacy-api-proxy/ringoutapi.html))\n* https://service.ringcentral.com/faxoutapi/ ([docs](https://grokify.github.io/ringcentral-legacy-api-proxy/faxoutapi.html))\n\nThe following is a list of legacy API calls. The ones with checks are currently supported:\n\n* [x] [RingOut `call` command](https://grokify.github.io/ringcentral-legacy-api-proxy/ringoutapi.html#call)\n* [x] [RingOut `list` command](https://grokify.github.io/ringcentral-legacy-api-proxy/ringoutapi.html#list)\n* [ ] [RingOut `status` command](https://grokify.github.io/ringcentral-legacy-api-proxy/ringoutapi.html#status)\n* [ ] [RingOut `cancel` command](https://grokify.github.io/ringcentral-legacy-api-proxy/ringoutapi.html#cancel)\n* [x] [FaxOut](https://grokify.github.io/ringcentral-legacy-api-proxy/faxoutapi.html)\n\nNote: a new query string parameter is provided, `format=json`, which instructs the service to return the REST API JSON response. If this is not provided, the response is converted to a legacy API response.\n\n## TL;DR\n\nInstall this app with the following quick steps:\n\n1. Login to Developer Portal: [https://developer.ringcentral.com](https://developer.ringcentral.com)\n1. Create an app with \"Platform Type\" `Server-only (No UI)`.\n1. Select permissions required: `RingOut` for RingOut `call`; `ReadAccounts` for RingOut `list` and `Faxes` for FaxOut\n1. Save sandbox `Client ID`, `Client Secret`\n1. Click `Deploy to Heroku` below. Use Sandbox Client ID and Client Secret with the server URL: https://platform.devtest.ringcentral.com .\n1. Run API calls until you can gradate your app.\n1. Click to graduate your app\n1. Update your Heroku environment variables or create a 2nd Heroku app\n1. Run in production\n\n## Caveats\n\n1. The RingCentral REST API is subject to Rate Limits:\n\nhttps://developer.ringcentral.com/api-docs/latest/index.html#!#APIRateLimits.html\n\nContact us if your app is running into these limits.\n\n## Prerequisites\n\nCreate a RingCentral app at the developer portal: [https://developer.ringcentral.com](https://developer.ringcentral.com). Access is included with many RingCentral accoutns so just click 'Sign in' to continue.\n\nCreate an app with the following setting.\n\n`App Type`: `Server-only (No UI)`\n\nEnsure that `Password grant` is set.\n\n![](docs/images/legacy_create-app_app-platform-type.png \"\")\n\nSelect the permissions you need. There are a total of three permissions for all legacy APIs, but you should just select the ones you need as you will need to exercise all the permissions to graduate your app.\n\n| Permission | Required for |\n|------------|--------------|\n| `RingOut` | RingOut `call`, `status`, `cancel` |\n| `ReadAccounts` | RingOut `list` |\n| `Faxes` | FaxOut |\n\n![](docs/images/legacy_create-app_permissions.png \"\")\n\n## Configuration\n\nThis application needs the following configuration variables:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `RINGCENTRAL_CLIENT_ID` | yes | Your application's Client ID |\n| `RINGCENTRAL_CLIENT_SECRET` | yes | Your application's Client Secret |\n| `RINGCENTRAL_SERVER_URL` | yes | Your RingCentral server url, e.g. Sandbox: https://platform.devtest.ringcentral.com , Production: https://platform.ringcentral.com |\n\n## Installation\n\n### Deploying to Heroku\n\n```sh\n$ heroku create\n$ git push heroku master\n$ heroku open\n```\n\nor\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\nAfter you click the button above, you will need to enter the environment variables above into the Heroku web console.\n\nOnce this is up, you can make API calls by swapping `service.ringcentral.com` for your Heroku hostname, e.g. `myherokuapp.herokuapp.com` as follows:\n\n`https://\u003cmyHerokuApp\u003e.herokuapp.com/ringout.asp?cmd=call\u0026username=\u003cmyUsername\u003e\u0026password=\u003cmyPassword\u003e\u0026to=\u003cmyToNumber\u003e\u0026from=\u003cmyFromNumber\u003e`\n\nNote: the [`app.json`](https://github.com/grokify/ringcentral-legacy-api-proxy/blob/master/app.json#L17) specifies a free dyno which will sleep due to inactivity. If you wish to use Heroku dyno that does not sleeps, clone this repo and update your `app.json`. Learn more about Heroku Dyno types here:\n\n* https://devcenter.heroku.com/articles/dyno-types\n\n### Running Locally\n\n```\n$ go get github.com/grokify/ringcentral-legacy-api-proxy\n$ cd ringcentral-legacy-api-proxy\n$ go build main.go\n$ RINGCENTRAL_SERVER_URL=https://platform.devtest.ringcentral.com \\\n  RINGCENTRAL_CLIENT_ID=\u003cmyClientId\u003e \\\n  RINGCENTRAL_CLIENT_SECRET=\u003cmyClientSecret\u003e \\\n  main\n```\n\n## Example API Calls\n\n### RingOut `call`\n\n`$ curl -XGET 'http://localhost:8080/ringout.asp?Username=\u003cmyUsername\u003e\u0026Password=\u003cmyPassword\u003e\u0026Cmd=call\u0026to=\u003ctoNumber\u003e\u0026from=\u003cfromNumver\u003e\u0026Format=json'`\n\n### RingOut `list`\n\n`$ curl -XGET 'http://localhost:8080/ringout.asp?Username=\u003cmyUsername\u003e\u0026Password=\u003cmyPassword\u003e\u0026Cmd=list\u0026Format=json'`\n\n### FaxOut\n\n```\n$ curl -XPOST 'http://localhost:8080/faxout.asp' \\\n  -F 'Username=\u003cmyUsername\u003e' \\\n  -F 'Password=\u003cmyPassword\u003e' \\\n  -F 'Recipient=\u003crecipient\u003e' \\\n  -F 'Coverpagetext=\u003ccoverPageText\u003e' \\\n  -F 'Resolution=High' \\\n  -F 'Attachment=@test_file.pdf' \\\n  -F 'Format=json'\n```\n\n## Notes\n\n### Troubleshooting\n\nThe REST API has throttling built in so you should check for 429 throttling errors.\n\n### Maintenance\n\nRebuild `vendor` directory with:\n\n```\n$ godep save ./...\n```\n\nMore information on deploying Go on Heroku here:\n\n* https://devcenter.heroku.com/articles/go-support\n\n### Heroku\n\nSet up your own Go app on Heroku easily using [`goheroku`](https://github.com/grokify/goheroku).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrokify%2Fringcentral-legacy-api-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrokify%2Fringcentral-legacy-api-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrokify%2Fringcentral-legacy-api-proxy/lists"}