I created a Spring OAuth2-based Marketo client, located in my blog-samples project on Github. Its format follows clients I had created previously for Salesforce CRM and Domo. While only a relatively small subset of the Marketo API is covered, the client covers some of its most important functionality, including:
Lead maintenance, including querying, creating, updating, and deleting leads
Activities - limited, just querying activity types supported
Bulk Extracts - creating, enqueuing, polling, and downloading CSVs, both for leads and activities. Note there is a
marketo.max.response.size.mb property used in the client's MarketoOAuth2Config class that can be increased beyond its default 2MB for larger downloads.
Should additional functionality be needed it should be reasonably straightforward to expand the client.
The functionality is well-tested by means of the integration tests provided in the project, which also serve as examples of how to work with the client. Note also the configuration instructions given in its properties file, needed for projects using this client.