{"id":18542764,"url":"https://github.com/coinbase/waas-proxy-server","last_synced_at":"2025-04-09T18:32:11.687Z","repository":{"id":198288838,"uuid":"687801279","full_name":"coinbase/waas-proxy-server","owner":"coinbase","description":null,"archived":true,"fork":false,"pushed_at":"2023-12-18T23:23:27.000Z","size":100,"stargazers_count":9,"open_issues_count":3,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-28T19:38:39.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coinbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2023-09-06T03:13:35.000Z","updated_at":"2025-01-14T00:16:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"b4766766-bcdf-4adc-b2a6-ff17b644ffdf","html_url":"https://github.com/coinbase/waas-proxy-server","commit_stats":null,"previous_names":["coinbase/waas-proxy-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coinbase%2Fwaas-proxy-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coinbase%2Fwaas-proxy-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coinbase%2Fwaas-proxy-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coinbase%2Fwaas-proxy-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coinbase","download_url":"https://codeload.github.com/coinbase/waas-proxy-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248087859,"owners_count":21045602,"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-11-06T20:10:28.411Z","updated_at":"2025-04-09T18:32:06.680Z","avatar_url":"https://github.com/coinbase.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WaaS Proxy Server\n\n**waas-proxy-server** is a [proxy server](https://en.wikipedia.org/wiki/Proxy_server) for the WaaS API. It is designed to be easy to use and act as an intermediary between a client application and the WaaS API, while providing security for a developer’s API keys.\n\n## Prerequisites\n\n- [Golang 1.21+](https://go.dev/learn/)\n- [make](https://www.gnu.org/software/make/)\n- [protoc](https://grpc.io/docs/protoc-installation/)\n\n## Setup\n\nOpen the `.env` file.\nReplace the `COINBASE_CLOUD_API_KEY_NAME` and `COINBASE_CLOUD_API_KEY_PRIVATE_KEY` variables with your own API credentials provided by Coinbase.\n\n## Running the Proxy Server\n\nYou can build and run the proxy server using [make](https://www.gnu.org/software/make/), including targets for [Docker](https://www.docker.com/).\n\n### Using `make`\n\nBuild the proxy server:\n\n```bash\nmake waas-proxy-server\n```\n\nRun the proxy server:\n\n```bash\nmake run\n```\n\n#### Docker\n\nBuild the proxy server:\n\n```bash\nmake docker/build\n```\n\nRun the proxy server:\n\n```bash\nmake docker/run\n```\n\n## Calling the Proxy Server\n\nOnce the proxy server is running, you can make requests to it using your desired endpoint.\n\n***Note:** The proxy server is set to listen on `localhost:8091` by default. You can specify your desired host and port by modifying `HTTP_ADDRESS` in the `.env` file.*\n\n### Using `curl`\n\n```bash\n# Calls ListNetworks\ncurl -X GET -d '{}' localhost:8091/v1/networks\n```\n\n### Using JavaScript\n\n```bash\n/* Calls ListNetworks */\nfetch('http://localhost:8091/v1/networks', {\n    method: 'GET',\n    headers: { 'Content-Type': 'application/json' }\n})\n.then(response =\u003e {\n    if (!response.ok) {\n        throw new Error()\n    }\n    return response.json()\n})\n```\n\n## Supported Methods\n\nBelow is a list of WaaS API methods supported by the proxy server and their corresponding endpoints.\n\n### Blockchain Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| [GetNetwork](https://docs.cloud.coinbase.com/waas/reference/blockchainservice_getnetwork) | GET | `/v1/{networkName}` |\n| [ListNetworks](https://docs.cloud.coinbase.com/waas/reference/blockchainservice_listnetworks) | GET | `/v1/networks`  |\n| [GetAsset](https://docs.cloud.coinbase.com/waas/reference/blockchainservice_getasset) | GET | `/v1/{assetName}` |\n| [ListAssets](https://docs.cloud.coinbase.com/waas/reference/blockchainservice_listassets) | GET | `/v1/{networkName}/assets` |\n| [BatchGetAssets](https://docs.cloud.coinbase.com/waas/reference/blockchainservice_batchgetassets) | GET | `/v1/{networkName}/assets:batchGet` |\n\n### MPC Key Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| [RegisterDevice](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_registerdevice) | POST | `/v1/device:register` |\n| [GetDevice](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_getdevice) | GET | `/v1/{deviceName}` |\n| [CreateDeviceGroup](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_createdevicegroup) | POST | `/v1/{poolName}/deviceGroups` |\n| [GetDeviceGroup](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_getdevicegroup) | GET | `/v1/{deviceGroupName}` |\n| [ListMPCOperations](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_listmpcoperations) | GET | `/v1/{deviceGroupName}/mpcOperations` |\n| [CreateMPCKey](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_creatempckey) | POST | `/v1/{deviceGroupName}/mpcKeys` |\n| [GetMPCKey](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_getmpckey) | GET | `/v1/{mpcKeyName}` |\n| [CreateSignature](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_createsignature) | POST | `/v1/{mpcKeyName}/signatures` |\n| [PrepareDeviceArchive](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_preparedevicearchive) | POST | `/v1/{deviceGroupName}:prepareDeviceArchive` |\n| [PrepareDeviceBackup](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_preparedevicebackup) | POST | `/v1/{deviceGroupName}:prepareDeviceBackup` |\n| [AddDevice](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_adddevice) | POST | `/v1/{deviceGroupName}:addDevice` |\n| [RevokeDevice](https://docs.cloud.coinbase.com/waas/reference/mpckeyservice_revokedevice) | POST | `/v1/device:revoke` |\n\n### MPC Transaction Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| [CreateMPCTransaction](https://docs.cloud.coinbase.com/waas/reference/mpctransactionservice_creatempctransaction) | POST | `/v1/{mpcWalletName}/mpcTransactions` |\n| [GetMPCTransaction](https://docs.cloud.coinbase.com/waas/reference/mpctransactionservice_getmpctransaction) | GET | `/v1/{mpcTransactionName}` |\n| [ListMPCTransactions](https://docs.cloud.coinbase.com/waas/reference/mpctransactionservice_listmpctransactions) | GET | `/v1/{mpcWalletName}/mpcTransactions` |\n\n### MPC Wallet Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| [CreateMPCWallet](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_creatempcwallet) | POST | `/v1/{poolName}/mpcWallets` |\n| [GetMPCWallet](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_getmpcwallet) | GET | `/v1/{mpcWalletName}` |\n| [ListMPCWallets](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_listmpcwallets) | GET | `/v1/{poolName}/mpcWallets` |\n| [GenerateAddress](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_generateaddress) | POST | `/v1/{mpcWalletName}:generateAddress` |\n| [GetAddress](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_getaddress) | GET | `/v1/{networkName}` |\n| [ListAddresses](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_listaddresses) | GET | `/v1/{networkName}/addresses` |\n| [ListBalances](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_listbalances) | GET | `/v1/{addressName}/balances` |\n| [ListBalanceDetails](https://docs.cloud.coinbase.com/waas/reference/mpcwalletservice_listbalancedetails) | GET | `/v1/{balanceName}/balanceDetails` |\n\n### Operation Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| GetOperation | GET | `/v1/{operationName}` |\n\n### Pool Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| [CreatePool](https://docs.cloud.coinbase.com/waas/reference/poolservice_createpool) | POST | `/v1/pools` |\n| [GetPool](https://docs.cloud.coinbase.com/waas/reference/poolservice_getpool) | GET | `/v1/{poolName}` |\n| [ListPools](https://docs.cloud.coinbase.com/waas/reference/poolservice_listpools) | GET | `/v1/pools` |\n\n### Protocol Service\n\n| Name | Method | Endpoint |\n| :--- | :--- | :--- |\n| [ConstructTransaction](https://docs.cloud.coinbase.com/waas/reference/protocolservice_constructtransaction) | POST | `/v1/{networkName}:constructTransaction` |\n| [ConstructTransferTransaction](https://docs.cloud.coinbase.com/waas/reference/protocolservice_constructtransfertransaction) | POST | `/v1/{networkName}:constructTransferTransaction` |\n| [BroadcastTransaction](https://docs.cloud.coinbase.com/waas/reference/protocolservice_broadcasttransaction) | POST | `/v1/{networkName}:broadcastTransaction` |\n| [EstimateFee](https://docs.cloud.coinbase.com/waas/reference/protocolservice_estimatefee) | GET | `/v1/{networkName}:estimateFee` |\n\n## Documentation\n\nFor full documentation, refer to [docs.cloud.coinbase.com/waas](http://docs.cloud.coinbase.com/waas).\n\n## License\n\n```\nCopyright © 2023 Coinbase, Inc. \u003chttps://www.coinbase.com/\u003e\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoinbase%2Fwaas-proxy-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoinbase%2Fwaas-proxy-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoinbase%2Fwaas-proxy-server/lists"}