At Orchestrate we have been adding features like crazy recently (geospacial, sorting, Multiple Clusters!) While each meant a new function, we decided to update the client to be more robust and future-proof to prevent confusion about which function should be used by default.

The typical non-compatible update path for Go libraries is to create a new repo while leaving the old intact. This gives people the ability to switch on a schedule. Because of this, the old client (gorc) will continue to be updated as possible, but the new client (gorc2) has support for all existing features.

So how do I use gorc2?

First you need go 1.1 or later. You can then download the package by running:

go get

Then you can use it in an application like this:

package main

import (


func main() {
    // Replace API-KEY with an API key from
    client := gorc2.NewClient("c9fde64b-a543-4d36-b3aa-d2b49d226bc9")
    collection := client.Collection("example_collection")

    // Lets add some data!
    data := map[string]interface{}{"data": "is fun!"}
    item, err := collection.Create("key", data)
    if err != nil {
    fmt.Printf("Data uploaded to '%s' with ref '%s'\n", item.Key, item.Ref)

How do I migrate to gorc2 from gorc?

Most of the calls from gorc2 have been back ported into gorc. This allows you to switch to the newer API incrementally. Once completely switched over, it should be possible to simply switch the import path. The only exception to this is that the Vent object from gorc2 was renamed Event2 in gorc in order to not interfere with the existing Event object.

The largest code path change will be in dealing with search and list results. Rather than requiring the caller to manage most of the logic it has been wrapped up in an Iterator object that deals with the HTTP calls for you. There are examples on each of the calls that use this model explaining how to work with the object.

We will continue to support gorc!

Changes made in gorc2 will be backported into gorc in order to ensure that support for new features exists in both packages. Switch to gorc2 when convenient. Going forward, it will only get better tested and cleaner, more intuitive API.


The complete go style documentation for the project can be found here.

A new client was also a chance to integrate DVR testing directly into the package. This client has 100% test coverage!