Get previous version of object in Salesforce subscriptions

Jul 13th, 2020view comments

Our Salesforce subscriptions now include the previous version of the object that was updated.

Example query:

subscription SalesforceOpportunityUpdateSubscription {
  salesforce {
    opportunityUpdated {
      opportunity {
        id        
        stageName
      }
      previousOpportunity {        
        stageName
      }
    }
  }
}

Read more about OneGraph's GraphQL subscriptions in the docs.

Hop into our Spectrum channel if you have any questions.

Support for Heroku Preview Apps in CORs Origins

Jun 2nd, 2020view comments

If your site uses Heroku's review apps, you no longer need to add every new review url to your CORs Origins on OneGraph.

When you add a review app url in the CORs Origins form on the dashboard, OneGraph will automatically detect that it's a Heroku review app and allow access to all of your review apps.

Try it out at OneGraph.

Hop into our Spectrum channel if you have any questions.

Beta support for Google Search Console

May 5th, 2020view comments

Analyze your site's top search keywords with our just-released Google's Search Console integration.

The following query will show you all of your top search keywords for all the sites you manage that originate from the UK, all grouped by date and search term.

query GoogleSearchConsoleQuery {
  google {
    searchConsole {
      sites {
        nodes {
          siteUrl
          query(
            startDate: "2020-04-27"
            endDate: "2020-05-04"
            dimensions: [DATE, QUERY]
            dimensionFilters: [
              {
                dimension: COUNTRY
                operator: EQUALS
                expression: "GBR"
              }
            ]
          ) {
            responseAggregationType
            rows {
              clicks
              ctr
              impressions
              keys
              position
            }
          }
        }
      }
    }
  }
}

Be sure to follow our instructions in the docs to set up a custom OAuth client for Google Search Console.

Try it out at OneGraph.

Hop into our Spectrum channel if you have any questions.

Added play history to Spotify

May 4th, 2020view comments

Our Spotify integration now includes play history for the logged-in user.

query SpotifyPlayHistory {
  spotify {
    me {
      recentlyPlayed {
        nodes {
          playedAt
          track {
            name
          }
        }
      }
    }
  }
}

It requires a new user-read-recently-played scope. If you see an insufficient auth error after running the query, log out and back in to Spotify.

Try it out at OneGraph.

Hop into our Spectrum channel if you have any questions.

Better experience for invalid CORS/redirect destinations on sign-in

Apr 17th, 2020view comments

We've just pushed a bit of polish to help OneGraph developers add new domains (for example, in production)!

Previously if you asked a user to sign into a service on a url that wasn't allowed for your app, you would see something like this:

Our previous experience with that authentic programmer design sensibility

Before

We've cleaned up the design a bit, and linked to the app's dashboard where authorized owners will be able to add the new domain simply by clicking!

After!

See an example video of it on YouTube!

Docs for creating a custom OAuth client for Google services

Mar 5th, 2020view comments

Google has been tightening up their OAuth requirements over the last year, so we can no longer offer a default OAuth client for Google services.

We've added a new doc with instructions on how to set up a custom Google client with OneGraph.

If you'd like help setting up a custom client, hop into our Spectrum chat.

👍 1

DEV.to support

Jan 25th, 2020view comments
  1. DEV is one of the most open developer sites out there
  2. They have an API!
  3. .. and we've added it to the OneGraph tooling!

Here's an example to get the recently rising top articles right from within GraphiQL!

query RecentlyRisingTopArticles {
  devTo {
    articles(state: "rising") {
      nodes {
        id
        title
        url
        socialImage
        publishedAt
        user {
          name
          username
          githubUsername
        }
      }
    }
  }
}

We're still waiting to get into the private OAuth alpha, so for any fields that require auth (basically any non-published articles or webhooks) you'll need to create an API token to use the integration.

I suspect that ~30 minutes after we hear that OneGraph is in the OAuth alpha (and we make our way back to a nearby keyboard), we'll have full onegraph-auth support with automatic login for your apps!

In the meantime, we have near full coverage of the API:

We've also gone through the API looking to normalize as much as possible. DEV has great content, they've been actively open, and we want to make their API as joyous to use as possible.

If you find anything missing, just ping us on @onegraph!

Special thanks to @zaiste for requesting DEV's API in the first place - check out their articles on DEV!

🎉 1❤️ 1🚀 3

Facebook Business API updated to version 5.0

Jan 23rd, 2020view comments

The Facebook Business API has been updated to version 5.0.

It comes with support for a new ads volume field, so you can determine the volume of ads for your ad account.

query AdsVolume {
  facebookBusiness {
    me {
      adAccounts {
        nodes {
          adsVolume {
            nodes {
              adsRunningOrInReviewCount
              currentAccountAdsRunningOrInReviewCount
            }
          }
        }
      }
    }
  }
}

Try it out at OneGraph.

Hop into our Spectrum channel if you have any questions or a use case that's not supported.

GraphiQL Explorer polish!

Jan 21st, 2020view comments

We recently took some time to polish the Explorer a bit more and add some feature requests that have cropped up!

Just update to 0.5.1 for all the new polish

isDeprecated styling support

First, deprecated fields now have a special class name for styling. In the future, we'll allow a function passed in as a prop from the developer that’ll be given each field, and can determine which class names should be applied. This should allow for all the flexibility necessary for a number of interesting use-cases that we'll share later.

explorer_deprecated_support

Actions revamp

We've also fixed the New <Query | Mutation | Subscription> buttons to the bottom of the explorer where they're always accessible without scrolling, and they also take up significantly less real-estate. One of the biggest challenges with the explorer is how to compactly represent all of the data and actions given such a small area (and potentially huge schema!).

The explorer will now automatically scroll the newly-added operation into view as well.

explorer_actions

Automatic __typename removal

And finally __typename will be automatically removed if it’s not the only field selection (only at the top level) and added back in if there are no other fields. We introduce this quirk in the second release because of the way GraphQL parses operations with no selections - which is to say, it just throws them out. It's a struggle to find the right user-experience given we don't want to fork the community with secondary parsers, etc. but I think this feel significantly nicer now!


To upgrade, just switch to "graphiql-explorer": "0.5.1" in your package.json!

Special thanks to @schmavery for taking the time to sit down (in person!) and work through building these features out with the OneGraph team!

❤️ 2

TwitchTV support for OneGraph auth!

Jan 21st, 2020view comments

We just implemented the TwitchTV support for our onegraph-auth library, so you can easily have a user sign in with Twitch!

To log in a user to your app with Twitch, you can use the following JavaScript:

import OneGraphAuth from 'onegraph-auth';

const auth = new OneGraphAuth({
  appId: APP_ID,
});

await auth.login('twitch-tv');
const isLoggedIn = await auth.isLoggedIn('twitch-tv');

if (isLoggedIn) {
  console.log("Successfully logged into Twitch!")
} else {
  console.log("User didn't log into Twitch")
}

Passthrough support

Another feature we've started adding to integrations is the concept of 'passthrough' fields, where you can make REST calls for any part of an API we haven't covered yet.

For example, to get a list of the top games on Twitch right now, you can simply run this query:

query TopGamesOnTwitchQuery {
  twitchTv {
    makeRestCall {
      get(path: "/kraken/games/top") {
        jsonBody
        response {
          headers
          statusCode
        }
      }
    }
  }
}

You can use that to hit any existing REST API endpoint you need.

And it's not simply a passthrough either! Twitch has changed how they do authentication between their v5 (kraken) and v6 (helix). Based on the endpoint you hit, we'll automatically choose the correct implementation so you don't need to worry about it!

❤️ 1