Exploring the Trello API with PowerShell
Get the most out of the task management software with automation.
- By Adam Bertram
What some people don't realize is that PowerShell is not only a powerful tool in a system administrator's arsenal but can also be used by software developers or techie consumers at home to manage and manipulate not-so-ordinary IT applications. One of those instances is using PowerShell to interact with REST APIs.
A REST API or application programming interface is a front end to a particular software service. It's a standard way of giving developers a way to read and manipulate objects in that particular service. APIs give people a way to use a particular service in a programmatic way rather than using the traditional user interface that most are used to.
For example, let's take the service Trello. Trello is a service that allows you to create boards where you can add lists and add cards to various lists. Trello is used for many different purposes with the most common being by software developers to control the software development lifecycle through a Kanban-like process. Cards are tracked from origination all the way to a typical "Done" list, which then indicates that particular task is complete. Trello is a great service for general task management as well.
I've recently joined an organization that uses Trello and required me to perform a specific set of tasks on a regular basis. The workflow was always the same: move the card to X list, take ownership of the card, make a note in the card with a specific format, upload a file, etc. It was a consistent standard way of maintaining the cards on the Trello board. This type of workflow is ripe for automation and is why I decided to create a Trello PowerShell module.
In order to use this module, you'll first need to sign up for an API key and a secret. This will give you the credentials needed to interact with the Trello API from PowerShell. Once you've got your API credentials set up, you can then begin interacting with the Trello API.
To interact with the Trello API requires communicating over HTTP. PowerShell comes standard with a handy cmdlet called Invoke-RestMethod. This takes out a lot of the traditional work of interacting with a REST API. This cmdlet is what's doing the heavy lifting under the covers of this PowerShell module.
To get started, you'll need to authenticate to Trello. You do this with your API key and secret. Once you've imported the module, you can use the Request-TrelloAccessToken function. This function uses your API key to make a call out to Trello to gather the token you need to interact with the API.
PS> $token = Request-TrelloAccessToken –ApiKey MYAPIKEY
Once you have the token, you'll then need to save it along with your API key and secret to your computer so that you don't have to recall it every time. I do this by providing a function that allows you to save the configuration into the registry.
PS> Set-TrelloConfiguration –ApiKey MYAPIKEY –Token $token
Once the configuration has been saved, you'll then retrieve the configuration and make it available to your current PowerShell session.
Now you're ready to interact with the API through a number of various functions. For example, if you want to find all of your Trello boards, you'd use the Get-TrelloBoard function.
You'll see I've got a few boards setup. Perhaps I want to see all of the lists on the board Articles. I can simply specify the Name parameter on the Get-TrelloBoard function and directly pass that to Get-TrelloBoardList.
PS> Get-TrelloBoard -Name Articles | Get-TrelloBoardList
Need to find the cards in those lists? Simply send the output of Get-TrelloBoard to Get-TrelloCard instead.
PS> Get-TrelloBoard -Name Articles | Get-TrelloCard
After playing with this module for a while, you'll see that you are able to manage many things with the Trello service. Although not all functionality is currently supported, the module is open to you for modification. I've tried to maintain a specific coding standard using Invoke-RestMethod so by following Trello's API reference and using Invoke-RestMethod you should be able to implement PowerShell support in any Trello API call you'd like.
Adam Bertram is an independent consultant, technical writer, trainer and presenter. Adam specializes in consulting and evangelizing all things IT automation mainly focused around Windows PowerShell. Adam is a Microsoft Windows PowerShell MVP, 2015 powershell.org PowerShell hero and has numerous Microsoft IT pro certifications. He is a writer, trainer and presenter and authors IT pro course content for Pluralsight. He is also a regular contributor to numerous print and online publications and presents at various user groups and conferences. You can find Adam at adamtheautomator.com or on Twitter at @adbertram.