This package implements a low-level REST API of the Coinbase Pro. Low-level means it is just a wrapper over HTTP library which handles authentication, request signing and has a few nice helper functions but you still have to construct URLs and interpret responses on your own.
If you want to use a high-level API, see elixir-coinbase/coinbasepro.
If available in Hex, the package can be installed
by adding coinbasepro_rest
to your list of dependencies in mix.exs
:
def deps do
[
{:coinbasepro_rest, "~> 1.0"}
]
end
As it uses Tesla underneath, you
have to follow its installation instructions. Specifically, you have to
install JSON library and you probably should install a HTTP client library
as default HTTP client based on httpc
does not validate SSL certificates.
For example, add Jason and Hackney to the dependencies in mix.exs
:
defp deps do
[
{:hackney, "~> 1.16.0"},
{:jason, ">= 1.0.0"}
]
end
Configure default adapter in config/config.exs
(optional).
config :tesla, adapter: Tesla.Adapter.Hackney
See Tesla's README for list of supported HTTP and JSON libraries.
By default, the API sends requests to the production API. If you want to
use Sandbox, you can add the following to the config/config.exs
:
config :coinbasepro_rest, :base_url, "https://api-public.sandbox.pro.coinbase.com"
It is a good idea to override the default value of the User-Agent header added
to the requests to something that clearly identifies your application name and
version. If you want to do this, you can add the following to the config/config.exs
:
config :coinbasepro_rest, :user_agent, "MyApp/1.0.0"
In order to issue GET request:
alias Coinbase.Pro.REST.{Context,Request}
# Obtain these values from Coinbase
context = %Context{key: "...", secret: "...", passphrase: "..."}
{:ok, response} = Request.get(context, "/orders?limit=10")
In order to issue POST request:
alias Coinbase.Pro.REST.{Context,Request}
# Obtain these values from Coinbase
context = %Context{key: "...", secret: "...", passphrase: "..."}
{:ok, response} = Request.post(context, "/deposits/payment-method", %{
"amount": 10.00,
"currency": "USD",
"payment_method_id": "bc677162-d934-5f1a-968c-a496b1c1270b"
})
The docs can be found at https://hexdocs.pm/coinbasepro_rest.
MIT
Marcin Lewandowski