In this repository you'll find some examples of using our GraphQL API.
- Create a new application.
- Get an authorization code after signing in with the application.
- Get an access token with the authorization code.
Details
export APPLICATION_ID=...
export APPLICATION_SECRET=...
export REDIRECT_URI=...
export AUTHORIZATION_CODE=...
curl --url 'https://www.universe.com/oauth/token' \
--header 'content-type: application/json' \
--data "{\"grant_type\":\"authorization_code\", \"client_id\":\"$APPLICATION_ID\", \"client_secret\":\"$APPLICATION_SECRET\", \"redirect_uri\":\"$REDIRECT_URI\", \"code\":\"$AUTHORIZATION_CODE\"}"Here is a quick demo which demonstrates how to get an access token at Universe in 1 minute:
For more information about OAuth 2.0, please see our guide.
Viewer is the user who makes the current GraphQL request. To see the account information:
cURL example
export ACCESS_TOKEN=your_access_token
curl https://www.universe.com/graphql/beta \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d @- <<EOF{ "query": "query GraphqlExample { viewer { id firstName lastName } }"}EOF# => {# "data": {# "viewer": {# "id": "58d98e52bbdebd003804e065",# "firstName": "Evgeny",# "lastName": "Li"# }# }# }Ruby example
require'net/http'require'uri'require'json'defgraphql(query,access_token)uri=URI.parse('https://www.universe.com/graphql/beta')http=Net::HTTP.new(uri.host,uri.port).tap{ |h| h.use_ssl=true}headers={'Authorization'=>"Bearer #{access_token}",'Content-Type'=>'application/json'}request=Net::HTTP::Post.new(uri.path,headers)request.body={query: query}.to_jsonhttp.request(request).bodyendaccess_token='your_access_token'putsgraphql("query GraphqlExample { viewer { id firstName lastName } }",access_token)# => {# "data": {# "viewer": {# "id": "58d98e52bbdebd003804e065",# "firstName": "Evgeny",# "lastName": "Li"# }# }# }With the Host.id, it's possible to get the list of all Events:
cURL example
export HOST_ID=4f5e06cb2078f9730c000014
curl https://www.universe.com/graphql/beta \
-H "Content-Type: application/json" \
-d @- <<EOF{ "query": "query GraphqlExample { host(id: \"$HOST_ID\") { name events { totalCount nodes { id title } } } }"}EOF# => {# "data": {# "host": {# "name": "Joshua Kelly",# "events": {# "totalCount": 1,# "nodes": [# {# "id": "5879ad8f6672e70036d58ba5",# "title": "End of Unix Time"# }# ]# }# }# }# }Ruby example
require'net/http'require'uri'require'json'defgraphql(query)uri=URI.parse('https://www.universe.com/graphql/beta')http=Net::HTTP.new(uri.host,uri.port).tap{ |h| h.use_ssl=true}request=Net::HTTP::Post.new(uri.path,{'Content-Type'=>'application/json'})request.body={query: query}.to_jsonhttp.request(request).bodyendhost_id='4f5e06cb2078f9730c000014'putsgraphql("query GraphqlExample { host(id: \"#{host_id}\") { name events { totalCount nodes { id title } } } }")# => {# "data": {# "host": {# "name": "Joshua Kelly",# "events": {# "totalCount": 1,# "nodes": [# {# "id": "5879ad8f6672e70036d58ba5",# "title": "End of Unix Time"# }# ]# }# }# }# }With the Event.id, it's possible to get Event information with the TimeSlots:
cURL example
export ACCESS_TOKEN=your_access_token
export EVENT_ID=5879ad8f6672e70036d58ba5
curl https://www.universe.com/graphql/beta \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d @- <<EOF{ "query": "query GraphqlExample { event(id: \"$EVENT_ID\") { title state privacy address currency discounts { totalCount nodes(limit: 1) { code fixed } } rates { nodes(limit: 1) { price maxQuantity } } timeSlots { nodes(limit: 1) { startAt endAt } } } }"}EOF# => {# "data": {# "event": {# "title": "End of Unix Time",# "state": "POSTED",# "privacy": "PUBLIC",# "address": "17 Phoebe St, Toronto, ON M5T 1A8, Canada",# "currency": "ERN",# "discounts": {# "totalCount": 2,# "nodes": [# {# "code": "1234",# "fixed": 5# }# ]# },# "rates": {# "nodes": [# {# "price": 10,# "maxQuantity": 100# }# ]# },# "timeSlots": {# "nodes": [# {# "startAt": "2038-01-19T00:00:00-05:00",# "endAt": "2038-01-19T01:00:00-05:00"# }# ]# }# }# }# }Ruby example
require'net/http'require'uri'require'json'defgraphql(query,access_token)uri=URI.parse('https://www.universe.com/graphql/beta')http=Net::HTTP.new(uri.host,uri.port).tap{ |h| h.use_ssl=true}headers={'Authorization'=>"Bearer #{access_token}",'Content-Type'=>'application/json'}request=Net::HTTP::Post.new(uri.path,headers)request.body={query: query}.to_jsonhttp.request(request).bodyendaccess_token='your_access_token'event_id='5879ad8f6672e70036d58ba5'putsgraphql("query GraphqlExample { event(id: \"#{event_id}\") { title state privacy address currency discounts { totalCount nodes(limit: 1) { code fixed } } rates { nodes(limit: 1) { price maxQuantity } } timeSlots { nodes(limit: 1) { startAt endAt } } } }",access_token)# => {# "data": {# "event": {# "title": "End of Unix Time",# "state": "POSTED",# "privacy": "PUBLIC",# "address": "17 Phoebe St, Toronto, ON M5T 1A8, Canada",# "currency": "ERN",# "discounts": {# "totalCount": 2,# "nodes": [# {# "code": "1234",# "fixed": 5# }# ]# },# "rates": {# "nodes": [# {# "price": 10,# "maxQuantity": 100# }# ]# },# "timeSlots": {# "nodes": [# {# "startAt": "2038-01-19T00:00:00-05:00",# "endAt": "2038-01-19T01:00:00-05:00"# }# ]# }# }# }# }cURL example
export ACCESS_TOKEN=your_access_token
export EVENT_ID=5879ad8f6672e70036d58ba5
curl https://www.universe.com/graphql/beta \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d @- <<EOF{ "query": "query GraphqlExample { event(id: \"$EVENT_ID\") { orders { totalCount nodes(limit: 2) { id state createdAt orderItems { totalCount } timeSlot { startAt endAt } buyer { name email } } } } }"}EOF# => {# "data": {# "event": {# "orders": {# "totalCount": 14,# "nodes": [# {# "id": "587e95e60ae44d002a1dfd26",# "state": "PAID",# "createdAt": "2017-01-17T22:08:38Z",# "orderItems": {# "totalCount": 1# },# "timeSlot": {# "startAt": "2038-01-19T00:00:00-05:00",# "endAt": "2038-01-19T01:00:00-05:00"# },# "buyer": {# "name": "Joshua Kelly",# "email": "jdjkelly@gmail.com"# }# },# {# "id": "587e96a39b577e002a4a39f5",# "state": "PAID",# "createdAt": "2017-01-17T22:11:48Z",# "orderItems": {# "totalCount": 2# },# "timeSlot": {# "startAt": "2038-01-19T00:00:00-05:00",# "endAt": "2038-01-19T01:00:00-05:00"# },# "buyer": {# "name": "Joshua Kelly",# "email": "jdjkelly@gmail.com"# }# }# ]# }# }# }# }Ruby example
require'net/http'require'uri'require'json'defgraphql(query,access_token)uri=URI.parse('https://www.universe.com/graphql/beta')http=Net::HTTP.new(uri.host,uri.port).tap{ |h| h.use_ssl=true}headers={'Authorization'=>"Bearer #{access_token}",'Content-Type'=>'application/json'}request=Net::HTTP::Post.new(uri.path,headers)request.body={query: query}.to_jsonhttp.request(request).bodyendaccess_token='your_access_token'event_id='5879ad8f6672e70036d58ba5'putsgraphql("query GraphqlExample { event(id: \"#{event_id}\") { orders { totalCount nodes(limit: 2) { id state createdAt orderItems { totalCount } timeSlot { startAt endAt } buyer { name email } } } } }",access_token)# => {# "data": {# "event": {# "orders": {# "totalCount": 14,# "nodes": [# {# "id": "587e95e60ae44d002a1dfd26",# "state": "PAID",# "createdAt": "2017-01-17T22:08:38Z",# "orderItems": {# "totalCount": 1# },# "timeSlot": {# "startAt": "2038-01-19T00:00:00-05:00",# "endAt": "2038-01-19T01:00:00-05:00"# },# "buyer": {# "name": "Joshua Kelly",# "email": "jdjkelly@gmail.com"# }# },# {# "id": "587e96a39b577e002a4a39f5",# "state": "PAID",# "createdAt": "2017-01-17T22:11:48Z",# "orderItems": {# "totalCount": 2# },# "timeSlot": {# "startAt": "2038-01-19T00:00:00-05:00",# "endAt": "2038-01-19T01:00:00-05:00"# },# "buyer": {# "name": "Joshua Kelly",# "email": "jdjkelly@gmail.com"# }# }# ]# }# }# }# }Coming soon
Please check out the CONTRIBUTING.md guide.