Complete API bindings for DigitalOcean API V2

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

MIT licensed by Yiğit Özkavcı


Complete API bindings for DigitalOcean API V2

Getting Started

Here is an example usage of the API:

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Network.DigitalOcean
import Network.DigitalOcean.Types
import Network.DigitalOcean.Services
import Control.Monad.Except
import Control.Monad.Reader

client :: Client
client = Client "your api key"

main :: IO ()
main = do
  result <- runExceptT $ (runReaderT $ runDO createViaSshKeys) client
  case result of
    Left err -> print err
    Right _ -> return ()

createViaSshKeys :: DO ()
createViaSshKeys = do
  -- Read a public key from a key pair and create ssh keys on DigitalOcean with it
  pubKey <- liftIO $ readFile "/Users/yigitozkavci/.ssh/"
  sshKey <- createSSHKey (SSHKeyPayload "my api key" pubKey) 
  -- Create 2 droplets with our newly uploaded ssh keys
  let dropletPayload = IDropletPayload "nyc3" "512mb" Ubuntu1404x64 (Just [sshkeyFingerprint sshKey]) Nothing Nothing Nothing Nothing Nothing Nothing Nothing
  droplets <- map dropletId <$> createDroplets ["droplet-1", "droplet-2"] dropletPayload

  -- Take snapshot of our newly created droplets
  forM_ droplets $ \dropletId -> performDropletAction dropletId (TakeSnapshot (Just "bulk snapshot"))

For full documentation and reference, see:


What can you do?

  • You can open an issue for unexpected / needed behaviors
  • Better, you can send a Pull Request

Any kind of contributions are welcome, even if it’s updating docs / improving commenting / improving tests.

comments powered byDisqus