Skip to content

Golang client library written for the Event Farm API. Works great with any go project, using a framework like echo or buffalo, or going all command line!

Notifications You must be signed in to change notification settings

eventfarm/go-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Event Farm Logo
Official Event Farm Golang SDK

Installation

go get https://github.com/eventfarm/go-sdk

https://i.imgur.com/yiv5YMX.png

Usage

OAuth is done using the Password Grant. You are going to need a Client Id and Secret that will be provided by Event Farm.

package ef_api

import (
	"encoding/json"

	"github.com/eventfarm/go-sdk/api/usecase"
)

func GetEvent(eventId string) (*domain_model.Event, error) {
    apiDomain := os.Getenv(`EF_API_DOMAIN`)
	restClient := rest.NewHttpRestClient(apiDomain)
	restClient.EnableLogging = true

	authDomain := os.Getenv(`EF_AUTH_DOMAIN`)
	accessTokenRestClient := rest.NewHttpRestClient(authDomain)
	accessTokenRestClient.EnableLogging = true

	c := *rest.NewEventFarmRestClient(
		restClient,
		accessTokenRestClient,
		os.Getenv(`EF_CLIENT_ID`),
		os.Getenv(`EF_CLIENT_SECRET`),
		os.Getenv(`EF_USER`),
		os.Getenv(`EF_PASSWORD`),
		nil,
	)

	uc := usecase.NewUseCaseFactory(&c)
    
	resp, err := uc.Event().GetEvent(
		&usecase.GetEventParameters{
			EventId:  eventId,
			WithData: &[]string{"Pool", "Tags", "Stacks", "StacksWithAvailabilityCounts", "TicketTypes", "EventTexts"},
		},
	)
	if err != nil {
		return nil, err
	}
	if err = ValidateResponse(resp); err != nil {
		return nil, err
	}
	d := &struct {
		Data responses.Event `json:"data"`
	}{}
	err = json.NewDecoder(resp.Body).Decode(d)
	return domain_model.AsEvent(d.Data), nil
}

For a more detailed usage example, see test/sdk.go

Responses

Responses are following the Json API Spec. Please see the format/spec guide for further details.

{
  "data": {
    "type": "Event",
    "id": "7fff5387-0000-45a5-ae48-1d05a7175b93",
    "attributes": {
      "name": "Awesome Test Party",
      "email": "[email protected]",
      "contactEmail": "[email protected]",
      "guestLimit": -1,
      "type": {
        "slug": "eventfarm",
        "name": "Event Farm",
        "description": null,
        "isEventFarm": true,
        "isCio": false,
        "isListly": false,
        "isDnc": false,
        "isRnc": false,
        "isRslc": false,
        "isSundance": false
      },
      "eventAttributes": {
        "hasDistribute": true,
        "hasDonate": true,
        "hasFee": true,
        "hasEditName": true,
        "hasReveal": true,
        "hasAllowNotes": true,
        "hasDuplicateEmails": true,
        "hasNavigation": true,
        "hasSocialMedia": true,
        "hasSocialMediaBar": true,
        "hasMapLocation": true,
        "hasShowDescription": true,
        "hasIPadPurchase": false,
        "hasSimpleLayout": true,
        "hasLabelPrint": false,
        "hasSkipEventAllocateDisplay": true,
        "hasGeoRestrict": true,
        "hasVisaCheckout": true,
        "hasArchived": false,
        "hasGuestCanChangeResponse": true,
        "hasEfxEnabled": false
      },
      "userFields": {
        "hasAddress": false,
        "hasCompany": false,
        "hasPhone": false,
        "hasTitle": false,
        "hasCountry": false,
        "hasPosition": false
      },
      "startTime": {
        "timestamp": 1643400000,
        "timezone": "America/Los_Angeles",
        "locale": "en_US",
        "date": {
          "short": "1/28/22",
          "medium": "January 28, 2022",
          "long": "Friday, January 28, 2022"
        },
        "time": {
          "short": "12:00 PM",
          "medium": "12:00 PM PST",
          "long": "12:00:00 PM PST"
        },
        "short": "1/28/22, 12:00 PM PST",
        "medium": "January 28, 2022 at 12:00 PM PST",
        "long": "Friday, January 28, 2022 at 12:00 PM PST"
      },
      "endTime": {
        "timestamp": 1643486400,
        "timezone": "America/Los_Angeles",
        "locale": "en_US",
        "date": {
          "short": "1/29/22",
          "medium": "January 29, 2022",
          "long": "Saturday, January 29, 2022"
        },
        "time": {
          "short": "12:00 PM",
          "medium": "12:00 PM PST",
          "long": "12:00:00 PM PST"
        },
        "short": "1/29/22, 12:00 PM PST",
        "medium": "January 29, 2022 at 12:00 PM PST",
        "long": "Saturday, January 29, 2022 at 12:00 PM PST"
      },
      "altKeyword": "mediumeventp1",
      "venue": {
        "name": null,
        "address": null,
        "artistName": null,
        "artistDeposit": 0,
        "checkName": null,
        "flatPercentage": 0,
        "flatFee": 0,
        "memo": null
      },
      "isEFxEnabled": false,
      "defaultSitePage": null,
      "created": {
        "createdAt": 1516128284,
        "ip4Created": "127.0.0.1"
      },
      "modified": {
        "modifiedAt": 1516128284,
        "ip4Modified": null
      },
      "mapSourceType": {
        "slug": "google",
        "name": "Google",
        "description": "Google Maps",
        "isGoogle": true,
        "isYahoo": false,
        "isBing": false
      }
    },
    "meta": {
      "isInitialized": true
    },
    "links": {
      "self": "https://eventfarm.com/api/v2/Event/UseCase/GetEvent?eventId=7fff5387-0000-45a5-ae48-1d05a7175b93"
    },
    "relationships": {
      "pool": {
        "type": "Pool",
        "id": "7fff1f7a-0000-45a5-a6b7-9123da6f4aff",
        "meta": {
          "isInitialized": false
        },
        "links": {
          "self": "https://eventfarm.com/api/v2/Pool/UseCase/GetPool?poolId=7fff1f7a-0000-45a5-a6b7-9123da6f4aff"
        }
      },
      "stacks": [
        {
          "type": "Stack",
          "id": "7fffb628-0000-45a5-ae48-4a001dbd6d01",
          "attributes": {
            "id": "7fffb628-0000-45a5-ae48-4a001dbd6d01",
            "send": "invite,confirm,decline",
            "inviteEmailId": "7fff3d1a-0000-45a5-ae48-4e08d86c122b",
            "confirmEmailId": "7fff3d1a-0000-45a5-ae48-4e0f60015a83",
            "declineEmailId": "7fff3d1a-0000-45a5-ae48-4f03e0c52a9f",
            "serviceFee": 0,
            "price": 0,
            "quantity": 300,
            "maxQuantity": 10,
            "openingAt": 1516041900,
            "closingAt": 1643485500,
            "isTransferable": true,
            "isDeleted": false,
            "deletedAt": null,
            "stackMethodType": {
              "slug": "invite-to-rsvp-fcfs",
              "name": "Invite to RSVP (FCFS)",
              "description": null,
              "isPublicRegistration": false,
              "isPublicPurchase": false,
              "isInviteToRegister": false,
              "isInviteToPurchase": false,
              "isInviteToRSVP": false,
              "isInviteToRegisterFCFS": false,
              "isInviteToPurchaseFCFS": false,
              "isInviteToRSVPFCFS": true,
              "isInvitation": true,
              "isFirstComeFirstServe": true,
              "isAnyInviteToPurchase": false,
              "isAnyInviteToRegister": false,
              "isAnyInviteToRSVP": true
            },
            "created": {
              "createdAt": 1516128329,
              "ip4Created": "172.18.0.1"
            },
            "modified": {
              "modifiedAt": 1516128337,
              "ip4Modified": "172.18.0.1"
            }
          },
          "extraAttributes": {
            "availabilityCounts": {
              "totalQuantity": 300,
              "totalUsed": 0,
              "totalUnused": 300,
              "totalAvailable": 300,
              "percentUsed": 0,
              "percentUnused": 100,
              "totalAffirmed": 0,
              "totalUnaffirmed": 300,
              "percentAffirmed": 0,
              "percentUnaffirmed": 100,
              "total": 0,
              "assigned": 0,
              "purchased": 0,
              "confirmed-by-rsvp": 0,
              "declined-by-rsvp": 0,
              "left-behind": 0,
              "not-yet-purchased": 0,
              "registered": 0,
              "unconfirmed": 0,
              "recycled": 0,
              "not-yet-registered": 0
            }
          },
          "meta": {
            "isInitialized": true
          },
          "links": {
            "self": "https://eventfarm.com/api/v2/Stack/UseCase/GetStack?stackId=7fffb628-0000-45a5-ae48-4a001dbd6d01"
          },
          "relationships": {
            "ticketType": {
              "type": "TicketType",
              "id": "7fff36ce-0000-45a5-ae48-3918d3759d9d",
              "attributes": {
                "id": "7fff36ce-0000-45a5-ae48-3918d3759d9d",
                "name": "VIP",
                "code": "",
                "description": null,
                "quantity": 300,
                "sortOrder": 1,
                "isDeleted": false,
                "deletedAt": null,
                "created": {
                  "createdAt": 1516128313,
                  "ip4Created": "172.18.0.1"
                },
                "modified": {
                  "modifiedAt": 1516128313,
                  "ip4Modified": null
                }
              },
              "meta": {
                "isInitialized": true
              },
              "links": {
                "self": "https://eventfarm.com/api/v2/Stack/UseCase/GetTicketType?ticketTypeId=7fff36ce-0000-45a5-ae48-3918d3759d9d"
              }
            }
          }
        }
      ],
      "ticketBlocks": [
        {
          "type": "TicketBlock",
          "id": "7fff6ce5-0000-45a5-ae49-390fe1d99c88",
          "attributes": {
            "name": "Medium Event P1 - TB2",
            "emailText": null,
            "isBlacklistEnabled": false,
            "isDeleted": false,
            "deletedAt": null,
            "created": {
              "createdAt": 1516128569,
              "ip4Created": "127.0.0.1"
            },
            "modified": {
              "modifiedAt": 1516128569,
              "ip4Modified": null
            }
          },
          "extraAttributes": {
            "allotmentCounts": [
              {
                "allotmentId": "7fffa0bd-0000-45a5-ae49-3918e32c0a59",
                "stackId": "7fffb628-0000-45a5-ae48-4a001dbd6d01",
                "ticketBlockId": "7fff6ce5-0000-45a5-ae49-390fe1d99c88",
                "ticketTypeName": "VIP",
                "stackMethodType": {
                  "slug": "invite-to-rsvp-fcfs",
                  "name": "Invite to RSVP (FCFS)",
                  "description": null,
                  "isPublicRegistration": false,
                  "isPublicPurchase": false,
                  "isInviteToRegister": false,
                  "isInviteToPurchase": false,
                  "isInviteToRSVP": false,
                  "isInviteToRegisterFCFS": false,
                  "isInviteToPurchaseFCFS": false,
                  "isInviteToRSVPFCFS": true,
                  "isInvitation": true,
                  "isFirstComeFirstServe": true,
                  "isAnyInviteToPurchase": false,
                  "isAnyInviteToRegister": false,
                  "isAnyInviteToRSVP": true
                },
                "invitationCounts": {
                  "totalUsed": 0,
                  "firstComeFirstServeOutstanding": 0,
                  "totalQuantity": 10,
                  "totalRemaining": 10
                }
              },
              {
                "allotmentId": "7fffa0bd-0000-45a5-ae49-3920c5604384",
                "stackId": "7fffb628-0000-45a5-ae48-6c08880cbd00",
                "ticketBlockId": "7fff6ce5-0000-45a5-ae49-390fe1d99c88",
                "ticketTypeName": "GA",
                "stackMethodType": {
                  "slug": "invite-to-rsvp-fcfs",
                  "name": "Invite to RSVP (FCFS)",
                  "description": null,
                  "isPublicRegistration": false,
                  "isPublicPurchase": false,
                  "isInviteToRegister": false,
                  "isInviteToPurchase": false,
                  "isInviteToRSVP": false,
                  "isInviteToRegisterFCFS": false,
                  "isInviteToPurchaseFCFS": false,
                  "isInviteToRSVPFCFS": true,
                  "isInvitation": true,
                  "isFirstComeFirstServe": true,
                  "isAnyInviteToPurchase": false,
                  "isAnyInviteToRegister": false,
                  "isAnyInviteToRSVP": true
                },
                "invitationCounts": {
                  "totalUsed": 0,
                  "firstComeFirstServeOutstanding": 0,
                  "totalQuantity": 300,
                  "totalRemaining": 300
                }
              }
            ]
          },
          "meta": {
            "isInitialized": true
          },
          "links": {
            "self": "https://eventfarm.com/api/v2/TicketBlock/UseCase/GetTicketBlock?ticketBlockId=7fff6ce5-0000-45a5-ae49-390fe1d99c88"
          }
        }
      ]
    }
  }
}

Paginated Response

{
  "meta": {
    "totalPages": 2,
    "totalResults": 2,
    "totalResultsReturned": 1,
    "currentPage": 1,
    "itemsPerPage": 1,
    "executedAt": 1526599136
  },
  "links": {
    "self": "https://eventfarm.com/api/v2/Event/UseCase/ListEventsForUser?eventDateFilterType=current-future\u0026itemsPerPage=1\u0026userId=7fff1483-0000-4578-ad31-f6114a033eb7",
    "first": "https://eventfarm.com/api/v2/Event/UseCase/ListEventsForUser?eventDateFilterType=current-future\u0026itemsPerPage=1\u0026userId=7fff1483-0000-4578-ad31-f6114a033eb7\u0026page=1",
    "last": "https://eventfarm.com/api/v2/Event/UseCase/ListEventsForUser?eventDateFilterType=current-future\u0026itemsPerPage=1\u0026userId=7fff1483-0000-4578-ad31-f6114a033eb7\u0026page=2",
    "next": "https://eventfarm.com/api/v2/Event/UseCase/ListEventsForUser?eventDateFilterType=current-future\u0026itemsPerPage=1\u0026userId=7fff1483-0000-4578-ad31-f6114a033eb7\u0026page=1"
  },
  "data": [
    {
      "type": "Event",
      "id": "7fff5387-0000-4578-ae9c-921df4f75d90",
      "attributes": {
        "name": "Awesome Test Party",
        "email": "[email protected]",
        "contactEmail": "[email protected]",
        "guestLimit": -1,
        "type": {
          "slug": "eventfarm",
          "name": "Event Farm",
          "description": null,
          "isEventFarm": true,
          "isCio": false,
          "isListly": false,
          "isDnc": false,
          "isRnc": false,
          "isRslc": false,
          "isSundance": false
        },
        "eventAttributes": {
          "hasDistribute": false,
          "hasDonate": false,
          "hasFee": false,
          "hasEditName": false,
          "hasReveal": false,
          "hasAllowNotes": false,
          "hasDuplicateEmails": true,
          "hasNavigation": true,
          "hasSocialMedia": true,
          "hasSocialMediaBar": true,
          "hasMapLocation": false,
          "hasShowDescription": true,
          "hasIPadPurchase": false,
          "hasSimpleLayout": true,
          "hasLabelPrint": false,
          "hasSkipEventAllocateDisplay": true,
          "hasGeoRestrict": false,
          "hasVisaCheckout": false,
          "hasArchived": false,
          "hasGuestCanChangeResponse": true,
          "hasEfxEnabled": false
        },
        "userFields": {
          "hasAddress": false,
          "hasCompany": false,
          "hasPhone": false,
          "hasTitle": false,
          "hasCountry": false,
          "hasPosition": false
        },
        "startTime": {
          "timestamp": 1659043920,
          "timezone": "America/Los_Angeles",
          "locale": "en_US",
          "date": {
            "short": "7/28/22",
            "medium": "July 28, 2022",
            "long": "Thursday, July 28, 2022"
          },
          "time": {
            "short": "2:32 PM",
            "medium": "2:32 PM PST",
            "long": "2:32:00 PM PDT"
          },
          "short": "7/28/22, 2:32 PM PST",
          "medium": "July 28, 2022 at 2:32 PM PST",
          "long": "Thursday, July 28, 2022 at 2:32 PM PST"
        },
        "endTime": {
          "timestamp": 1659130320,
          "timezone": "America/Los_Angeles",
          "locale": "en_US",
          "date": {
            "short": "7/29/22",
            "medium": "July 29, 2022",
            "long": "Friday, July 29, 2022"
          },
          "time": {
            "short": "2:32 PM",
            "medium": "2:32 PM PST",
            "long": "2:32:00 PM PDT"
          },
          "short": "7/29/22, 2:32 PM PST",
          "medium": "July 29, 2022 at 2:32 PM PST",
          "long": "Friday, July 29, 2022 at 2:32 PM PST"
        },
        "altKeyword": "awesome-test-party",
        "venue": {
          "name": "Event Farm HQ",
          "address": "2403 Main Street, Santa Monica, CA",
          "artistName": null,
          "artistDeposit": 0,
          "checkName": null,
          "flatPercentage": 0,
          "flatFee": 0,
          "memo": null
        },
        "isEFxEnabled": false,
        "defaultSitePage": null,
        "created": {
          "createdAt": 1468963985,
          "ip4Created": "172.18.0.1"
        },
        "modified": {
          "modifiedAt": 1516139911,
          "ip4Modified": "172.18.0.1"
        },
        "mapSourceType": {
          "slug": "google",
          "name": "Google",
          "description": "Google Maps",
          "isGoogle": true,
          "isYahoo": false,
          "isBing": false
        }
      },
      "meta": {
        "isInitialized": true
      },
      "links": {
        "self": "https://eventfarm.com/api/v2/Event/UseCase/GetEvent?eventId=7fff5387-0000-4578-ae9c-921df4f75d90"
      },
      "relationships": {
        "pool": {
          "type": "Pool",
          "id": "7fff1f7a-0000-4578-ad49-681e5374350c",
          "meta": {
            "isInitialized": false
          },
          "links": {
            "self": "https://eventfarm.com/api/v2/Pool/UseCase/GetPool?poolId=7fff1f7a-0000-4578-ad49-681e5374350c"
          }
        }
      }
    }
  ]
}

About

Golang client library written for the Event Farm API. Works great with any go project, using a framework like echo or buffalo, or going all command line!

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages