/trello-java-wrapper

Java Wrapper for Trello API

Primary LanguageJavaApache License 2.0Apache-2.0

Java Wrapper for Trello API

Overview

This project is a Java Wrapper for the Trello REST API. It provides a fluent interface for requesting the API.

Usage

The library can be used with Java 11 or newer.

Available in Maven Central. Gradle dependency declaration:

dependencies {
    compile 'com.taskadapter:trello-java-wrapper:<current-version>'
}

The wrapper can make use of one of the following HTTP clients:

  • JDKTrelloHttpClient
    • pure JDK http client, no other dependencies
  • OKHttp
    • compile 'com.squareup.okhttp3:okhttp:VERSION'
  • Spring Web
    • compile 'org.springframework:spring-web:VERSION'
  • Apache Http Components HttpClient
    • compile 'org.apache.httpcomponents:httpclient:VERSION'
  • Async Http Client
    • compile 'org.asynchttpclient:async-http-client:VERSION'
  • Ning async-http-client
    • The predecessor to the modern Async Http Client above
    • compile 'com.ning:async-http-client:VERSION'

Choose one if you don't already use one of those. You will need to instantiate the corresponding TrelloHttpClient implementation and pass it to the TrelloImpl constructor (see Init section below).

Optional dependency in case you want to attach files to cards:

compile 'org.apache.httpcomponents:httpmime'

Failure to do so will most probably cause a NoClassDefFoundError.

Init

First, create an instance of TrelloImpl. This examples uses an http client based on Apache Http library.

Trello trelloApi = new TrelloImpl(trelloKey, trelloAccessToken, new ApacheHttpClient());
  • trelloKey : The key of your application
  • trelloAccessToken : the oauth token of the authenticated user on Trello
  • http client : one of supported http client implementations. See com.julienvey.trello.impl.http package.

Usage

Sample call:

Board board = trelloApi.getBoard(trelloBoardForAddingCardsId);

The wrapper provides a fluent interface. On each "Trello" Object, you have access to methods to fetch other object

Board board = trelloApi.getBoard(trelloBoardForAddingCardsId);
List<TList> lists = board.fetchLists();

which can also be written like this

List<TList> lists = trelloApi.getBoard(trelloBoardForAddingCardsId).fetchLists();

Contribute

Each pull request should respect current code conventions and provide tests for the newly implemented features. The new test code is implemented using Scala. The prod code is only Java - to avoid adding extra Scala dependency to the lib without providing much value (at the moment).

Implementation Status

Method Impl Unit Test Int Test
GET /1/actions/[idAction] Yes Yes Yes
GET /1/actions/[idAction]/[field]
GET /1/actions/[idAction]/board Yes Yes Yes
GET /1/actions/[idAction]/board/[field]
GET /1/actions/[idAction]/card Yes Yes Yes
GET /1/actions/[idAction]/card/[field]
GET /1/actions/[idAction]/entities Yes Yes Yes
GET /1/actions/[idAction]/list Yes Yes Yes
GET /1/actions/[idAction]/list/[field]
GET /1/actions/[idAction]/member Yes Yes Yes
GET /1/actions/[idAction]/member/[field]
GET /1/actions/[idAction]/memberCreator Yes Yes Yes
GET /1/actions/[idAction]/memberCreator/[field]
GET /1/actions/[idAction]/organization Yes Yes Yes
GET /1/actions/[idAction]/organization/[field]
PUT /1/actions/[idAction]
PUT /1/actions/[idAction]/text
DELETE /1/actions/[idAction]
GET /1/boards/[board_id] Yes Yes Yes
GET /1/boards/[board_id]/[field]
GET /1/boards/[board_id]/actions Yes Yes Yes
GET /1/boards/[board_id]/cards Yes Yes Yes
GET /1/boards/[board_id]/cards/[filter]
GET /1/boards/[board_id]/cards/[idCard] Yes Yes Yes
GET /1/boards/[board_id]/checklists Yes Yes Yes
GET /1/boards/[board_id]/labels Yes Yes Yes
GET /1/boards/[board_id]/lists Yes Yes Yes
GET /1/boards/[board_id]/lists/[filter]
GET /1/boards/[board_id]/members Yes Yes
GET /1/boards/[board_id]/members/[filter]
GET /1/boards/[board_id]/members/[idMember]/cards Yes Yes Yes
GET /1/boards/[board_id]/memberships
GET /1/boards/[board_id]/memberships/[idMembership]
GET /1/boards/[board_id]/myPrefs Yes Yes Yes
GET /1/boards/[board_id]/organization Yes Yes Yes
GET /1/boards/[board_id]/organization/[field]
PUT /1/boards/[board_id]
PUT /1/boards/[board_id]/closed
PUT /1/boards/[board_id]/desc
PUT /1/boards/[board_id]/idOrganization
PUT /1/boards/[board_id]/labelNames/blue
PUT /1/boards/[board_id]/labelNames/green
PUT /1/boards/[board_id]/labelNames/orange
PUT /1/boards/[board_id]/labelNames/purple
PUT /1/boards/[board_id]/labelNames/red
PUT /1/boards/[board_id]/labelNames/yellow
PUT /1/boards/[board_id]/members Yes No Yes
PUT /1/boards/[board_id]/members/[idMember] Yes No Yes
PUT /1/boards/[board_id]/memberships/[idMembership]
PUT /1/boards/[board_id]/myPrefs/emailPosition
PUT /1/boards/[board_id]/myPrefs/idEmailList
PUT /1/boards/[board_id]/myPrefs/showListGuide
PUT /1/boards/[board_id]/myPrefs/showSidebar
PUT /1/boards/[board_id]/myPrefs/showSidebarActivity
PUT /1/boards/[board_id]/myPrefs/showSidebarBoardActions
PUT /1/boards/[board_id]/myPrefs/showSidebarMembers
PUT /1/boards/[board_id]/name
PUT /1/boards/[board_id]/prefs/calendarFeedEnabled
PUT /1/boards/[board_id]/prefs/cardAging
PUT /1/boards/[board_id]/prefs/cardCovers
PUT /1/boards/[board_id]/prefs/comments
PUT /1/boards/[board_id]/prefs/invitations
PUT /1/boards/[board_id]/prefs/permissionLevel
PUT /1/boards/[board_id]/prefs/selfJoin
PUT /1/boards/[board_id]/prefs/voting
PUT /1/boards/[board_id]/subscribed
POST /1/boards
POST /1/boards/[board_id]/calendarKey/generate
POST /1/boards/[board_id]/checklists
POST /1/boards/[board_id]/emailKey/generate
POST /1/boards/[board_id]/lists
POST /1/boards/[board_id]/markAsViewed
POST /1/boards/[board_id]/powerUps
DELETE /1/boards/[board_id]/members/[idMember] Yes No Yes
DELETE /1/boards/[board_id]/powerUps/[powerUp]
GET /1/cards/[card id or shortlink] Yes Yes Yes
GET /1/cards/[card id or shortlink]/[field]
GET /1/cards/[card id or shortlink]/actions Yes Yes Yes
GET /1/cards/[card id or shortlink]/attachments Yes Yes Yes
GET /1/cards/[card id or shortlink]/attachments/[idAttachment] Yes Yes Yes
GET /1/cards/[card id or shortlink]/board Yes
GET /1/cards/[card id or shortlink]/board/[field]
GET /1/cards/[card id or shortlink]/checkItemStates
GET /1/cards/[card id or shortlink]/checklists Yes Yes Yes
GET /1/cards/[card id or shortlink]/list
GET /1/cards/[card id or shortlink]/list/[field]
GET /1/cards/[card id or shortlink]/members
GET /1/cards/[card id or shortlink]/membersVoted
PUT /1/cards/[card id or shortlink] Yes
PUT /1/cards/[card id or shortlink]/actions/[idAction]/comments Yes No Yes
PUT /1/cards/[card id or shortlink]/checklist/[idChecklist]/checkItem/[idCheckItem]/name
PUT /1/cards/[card id or shortlink]/checklist/[idChecklist]/checkItem/[idCheckItem]/pos
PUT /1/cards/[card id or shortlink]/checklist/[idChecklist]/checkItem/[idCheckItem]/state
PUT /1/cards/[card id or shortlink]/checklist/[idChecklistCurrent]/checkItem/[idCheckItem]
PUT /1/cards/[card id or shortlink]/closed
PUT /1/cards/[card id or shortlink]/desc
PUT /1/cards/[card id or shortlink]/due
PUT /1/cards/[card id or shortlink]/idAttachmentCover
PUT /1/cards/[card id or shortlink]/idBoard
PUT /1/cards/[card id or shortlink]/idList
PUT /1/cards/[card id or shortlink]/idMembers
PUT /1/cards/[card id or shortlink]/labels
PUT /1/cards/[card id or shortlink]/name
PUT /1/cards/[card id or shortlink]/pos
PUT /1/cards/[card id or shortlink]/subscribed
PUT /1/cards/[card id or shortlink]/warnWhenUpcoming
POST /1/cards Yes
POST /1/cards/[card id or shortlink]/actions/comments Yes No Yes
POST /1/cards/[card id or shortlink]/attachments Yes
(Except AsyncTrelloHttpClient)
No Yes
POST /1/cards/[card id or shortlink]/checklist/[idChecklist]/checkItem
POST /1/cards/[card id or shortlink]/checklist/[idChecklist]/checkItem/[idCheckItem]/convertToCard
POST /1/cards/[card id or shortlink]/checklists
POST /1/cards/[card id or shortlink]/idMembers Yes No Yes
POST /1/cards/[card id or shortlink]/labels Yes No Yes
POST /1/cards/[card id or shortlink]/idLabels Yes No Yes
POST /1/cards/[card id or shortlink]/markAssociatedNotificationsRead
POST /1/cards/[card id or shortlink]/membersVoted
DELETE /1/cards/[card id or shortlink] Yes No Yes
DELETE /1/cards/[card id or shortlink]/actions/[idAction]/comments
DELETE /1/cards/[card id or shortlink]/attachments/[idAttachment] Yes No Yes
DELETE /1/cards/[card id or shortlink]/checklist/[idChecklist]/checkItem/[idCheckItem]
DELETE /1/cards/[card id or shortlink]/checklists/[idChecklist]
DELETE /1/cards/[card id or shortlink]/idMembers/[idMember] Yes No Yes
DELETE /1/cards/[card id or shortlink]/labels/[color]
DELETE /1/cards/[card id or shortlink]/membersVoted/[idMember]
GET /1/checklists/[idChecklist] Yes Yes Yes
GET /1/checklists/[idChecklist]/[field]
GET /1/checklists/[idChecklist]/board
GET /1/checklists/[idChecklist]/board/[field]
GET /1/checklists/[idChecklist]/cards
GET /1/checklists/[idChecklist]/cards/[filter]
GET /1/checklists/[idChecklist]/checkItems
GET /1/checklists/[idChecklist]/checkItems/[idCheckItem]
PUT /1/checklists/[idChecklist]
PUT /1/checklists/[idChecklist]/idCard
PUT /1/checklists/[idChecklist]/name
PUT /1/checklists/[idChecklist]/pos
POST /1/checklists
POST /1/checklists/[idChecklist]/checkItems
DELETE /1/checklists/[idChecklist]
DELETE /1/checklists/[idChecklist]/checkItems/[idCheckItem]
GET /1/labels/[idLabel] Yes No Yes
PUT /1/labels/[idLabel] Yes No Yes
PUT /1/labels/[idLabel]/color
PUT /1/labels/[idLabel]/name
POST /1/labels/[idLabel] Yes No Yes
DELETE /1/labels/[idLabel] Yes No Yes
GET /1/lists/[idList] Yes Yes Yes
GET /1/lists/[idList]/[field]
GET /1/lists/[idList]/actions
GET /1/lists/[idList]/board
GET /1/lists/[idList]/board/[field]
GET /1/lists/[idList]/cards Yes Yes Yes
GET /1/lists/[idList]/cards/[filter]
PUT /1/lists/[idList]
PUT /1/lists/[idList]/closed
PUT /1/lists/[idList]/idBoard
PUT /1/lists/[idList]/name
PUT /1/lists/[idList]/pos
PUT /1/lists/[idList]/subscribed
POST /1/lists
POST /1/lists/[idList]/cards
GET /1/members/[idMember or username] Yes
GET /1/members/[idMember or username]/[field]
GET /1/members/[idMember or username]/actions Yes Yes Yes
GET /1/members/[idMember or username]/boards Yes Yes Yes
GET /1/members/[idMember or username]/boards/[filter]
GET /1/members/[idMember or username]/boardsInvited
GET /1/members/[idMember or username]/boardsInvited/[field]
GET /1/members/[idMember or username]/cards Yes No Yes
GET /1/members/[idMember or username]/cards/[filter]
GET /1/members/[idMember or username]/notifications
GET /1/members/[idMember or username]/notifications/[filter]
GET /1/members/[idMember or username]/organizations
GET /1/members/[idMember or username]/organizations/[filter]
GET /1/members/[idMember or username]/organizationsInvited
GET /1/members/[idMember or username]/organizationsInvited/[field]
GET /1/members/[idMember or username]/sessions
GET /1/members/[idMember or username]/tokens
PUT /1/members/[idMember or username]
PUT /1/members/[idMember or username]/avatarSource
PUT /1/members/[idMember or username]/bio
PUT /1/members/[idMember or username]/fullName
PUT /1/members/[idMember or username]/initials
PUT /1/members/[idMember or username]/prefs/colorBlind
PUT /1/members/[idMember or username]/prefs/minutesBetweenSummaries
PUT /1/members/[idMember or username]/username
POST /1/members/[idMember or username]/avatar
POST /1/members/[idMember or username]/idBoardsPinned
POST /1/members/[idMember or username]/oneTimeMessagesDismissed
DELETE /1/members/[idMember or username]/idBoardsPinned/[idBoard]
GET /1/notifications/[idNotification]
GET /1/notifications/[idNotification]/[field]
GET /1/notifications/[idNotification]/board
GET /1/notifications/[idNotification]/board/[field]
GET /1/notifications/[idNotification]/card
GET /1/notifications/[idNotification]/card/[field]
GET /1/notifications/[idNotification]/entities
GET /1/notifications/[idNotification]/list
GET /1/notifications/[idNotification]/list/[field]
GET /1/notifications/[idNotification]/member
GET /1/notifications/[idNotification]/member/[field]
GET /1/notifications/[idNotification]/memberCreator
GET /1/notifications/[idNotification]/memberCreator/[field]
GET /1/notifications/[idNotification]/organization
GET /1/notifications/[idNotification]/organization/[field]
PUT /1/notifications/[idNotification]
PUT /1/notifications/[idNotification]/unread
POST /1/notifications/all/read
GET /1/organizations/[idOrg or name] Yes Yes Yes
GET /1/organizations/[idOrg or name]/[field]
GET /1/organizations/[idOrg or name]/actions
GET /1/organizations/[idOrg or name]/boards Yes Yes Yes
GET /1/organizations/[idOrg or name]/boards/[filter]
GET /1/organizations/[idOrg or name]/members Yes Yes Yes
GET /1/organizations/[idOrg or name]/members/[filter]
GET /1/organizations/[idOrg or name]/members/[idMember]/cards
GET /1/organizations/[idOrg or name]/membersInvited
GET /1/organizations/[idOrg or name]/membersInvited/[field]
GET /1/organizations/[idOrg or name]/memberships
GET /1/organizations/[idOrg or name]/memberships/[idMembership]
PUT /1/organizations/[idOrg or name]
PUT /1/organizations/[idOrg or name]/desc
PUT /1/organizations/[idOrg or name]/displayName
PUT /1/organizations/[idOrg or name]/members
PUT /1/organizations/[idOrg or name]/members/[idMember]
PUT /1/organizations/[idOrg or name]/members/[idMember]/deactivated
PUT /1/organizations/[idOrg or name]/memberships/[idMembership]
PUT /1/organizations/[idOrg or name]/name
PUT /1/organizations/[idOrg or name]/prefs/associatedDomain
PUT /1/organizations/[idOrg or name]/prefs/boardVisibilityRestrict/org
PUT /1/organizations/[idOrg or name]/prefs/boardVisibilityRestrict/private
PUT /1/organizations/[idOrg or name]/prefs/boardVisibilityRestrict/public
PUT /1/organizations/[idOrg or name]/prefs/externalMembersDisabled
PUT /1/organizations/[idOrg or name]/prefs/orgInviteRestrict
PUT /1/organizations/[idOrg or name]/prefs/permissionLevel
PUT /1/organizations/[idOrg or name]/website
POST /1/organizations
POST /1/organizations/[idOrg or name]/logo
DELETE /1/organizations/[idOrg or name]
DELETE /1/organizations/[idOrg or name]/logo
DELETE /1/organizations/[idOrg or name]/members/[idMember]
DELETE /1/organizations/[idOrg or name]/members/[idMember]/all
DELETE /1/organizations/[idOrg or name]/prefs/associatedDomain
DELETE /1/organizations/[idOrg or name]/prefs/orgInviteRestrict
GET /1/search
GET /1/search/members
GET /1/tokens/[token]
GET /1/tokens/[token]/[field]
GET /1/tokens/[token]/member
GET /1/tokens/[token]/member/[field]
GET /1/tokens/[token]/webhooks
GET /1/tokens/[token]/webhooks/[idWebhook]
POST /1/tokens/[token]/webhooks
DELETE /1/tokens/[token]
DELETE /1/tokens/[token]/webhooks/[idWebhook]
GET /1/types/[id]
GET /1/webhooks/[idWebhook]
GET /1/webhooks/[idWebhook]/[field]
PUT /1/webhooks/[idWebhook]
PUT /1/webhooks/[idWebhook]/active
PUT /1/webhooks/[idWebhook]/callbackURL
PUT /1/webhooks/[idWebhook]/description
PUT /1/webhooks/[idWebhook]/idModel
POST /1/webhooks
DELETE /1/webhooks/[idWebhook]