<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># NAME

Business::Mondo - Perl library for interacting with the Mondo API
(https://api.getmondo.co.uk)

&lt;div&gt;

    &lt;a href='https://travis-ci.org/leejo/business-mondo?branch=master'&gt;&lt;img src='https://travis-ci.org/leejo/business-mondo.svg?branch=master' alt='Build Status' /&gt;&lt;/a&gt;
    &lt;a href='https://coveralls.io/r/leejo/business-mondo?branch=master'&gt;&lt;img src='https://coveralls.io/repos/leejo/business-mondo/badge.png?branch=master' alt='Coverage Status' /&gt;&lt;/a&gt;
&lt;/div&gt;

# VERSION

0.04

# DESCRIPTION

Business::Mondo is a library for easy interface to the Mondo banking API,
it implements all of the functionality currently found in the service's API
documentation: [https://getmondo.co.uk/docs](https://getmondo.co.uk/docs)

**You should refer to the official Mondo API documentation in conjunction**
**with this perldoc**, as the official API documentation explains in more depth
some of the functionality including required / optional parameters for certain
methods.

Please note this library is very much a work in progress, as is the Mondo API.

All objects within the Business::Mondo namespace are immutable. Calls to methods
will, for the most part, return new instances of objects.

# SYNOPSIS

    my $mondo = Business::Mondo-&gt;new(
        token   =&gt; $token, # REQUIRED
        api_url =&gt; $url,   # optional
    );

    # transaction related information
    my @transactions = $mondo-&gt;transactions( account_id =&gt; $account_id );

    my $Transaction  = $mondo-&gt;transaction( id =&gt; 1 );

    $Transaction-&gt;annotate(
        foo =&gt; 'bar',
        baz =&gt; 'boz,
    );

    my $annotations = $Transaction-&gt;annotations;

    # account related information
    my @accounts = $mondo-&gt;accounts;

    foreach my $Account ( @accounts ) {

        my @transactions = $Account-&gt;transactions;

        $Account-&gt;add_feed_item(
            params =&gt; {
                title     =&gt; 'My Feed Item',
                image_url =&gt; 'http://...',
            }
        );

        # balance information
        my $Balance = $Account-&gt;balance;

        # webhooks
        my @webhooks = $Account-&gt;webhooks;

        my $Webhook = $Account-&gt;register_webhook(
            callback_url =&gt; 'http://www.foo.com',
        );

        $Webhook-&gt;delete
    }

    # attachments
    my $Attachment = $mondo-&gt;upload_attachment(
        file_name =&gt; 'foo.png',
        file_type =&gt; 'image/png',
    );

    $Attachment-&gt;register(
        external_id =&gt; 'my_id'
    );

    $Attachment-&gt;deregister;

# ERROR HANDLING

Any problems or errors will result in a Business::Mondo::Exception
object being thrown, so you should wrap any calls to the library in the
appropriate error catching code (ideally a module from CPAN):

    try {
        ...
    }
    catch ( Business::Mondo::Exception $e ) {
        # error specific to Business::Mondo
        ...
        say $e-&gt;message;  # error message
        say $e-&gt;code;     # HTTP status code
        say $e-&gt;response; # HTTP status message

        # -&gt;request may not always be present
        say $e-&gt;request-&gt;{path}    if $e-&gt;request
        say $e-&gt;request-&gt;{params}  if $e-&gt;request
        say $e-&gt;request-&gt;{headers} if $e-&gt;request
        say $e-&gt;request-&gt;{content} if $e-&gt;request
    }
    catch ( $e ) {
        # some other failure?
        ...
    }

You can view some useful debugging information by setting the MONDO\_DEBUG
env varible, this will show the calls to the Mondo endpoints as well as a
stack trace in the event of exceptions:

    $ENV{MONDO_DEBUG} = 1;

# ATTRIBUTES

## token

Your Mondo access token, this is required

## api\_url

The Mondo url, which will default to https://api.getmondo.co.uk

## client

A Business::Mondo::Client object, this will be constructed for you so
you shouldn't need to pass this

# METHODS

In the following %query\_params refers to the possible query params as shown in
the Mondo API documentation. For example: limit=100.

    # transactions in the previous month
    my @transactions = $mondo-&gt;transactions(
        since =&gt; DateTime-&gt;now-&gt;subtract( months =&gt; 1 ),
    );

## transactions

    $mondo-&gt;transactions( %query_params );

Get a list of transactions. Will return a list of [Business::Mondo::Transaction](https://metacpan.org/pod/Business::Mondo::Transaction)
objects. Note you must supply an account\_id in the params hash;

## balance

    my $Balance = $mondo-&gt;balance( account_id =&gt; $account_id );

Get an account balance Returns a [Business::Mondo::Balance](https://metacpan.org/pod/Business::Mondo::Balance) object.

## transaction

    my $Transaction = $mondo-&gt;transaction(
        id     =&gt; $id,
        expand =&gt; 'merchant'
    );

Get a transaction. Will return a [Business::Mondo::Transaction](https://metacpan.org/pod/Business::Mondo::Transaction) object

## accounts

    $mondo-&gt;accounts;

Get a list of accounts. Will return a list of [Business::Mondo::Account](https://metacpan.org/pod/Business::Mondo::Account)
objects

# EXAMPLES

See the t/002\_end\_to\_end.t test included with this distribution. you can run
this test against the Mondo emulator by running end\_to\_end\_emulated.sh (this
is advised, don't run it against a live endpoint).

# SEE ALSO

[Business::Mondo::Account](https://metacpan.org/pod/Business::Mondo::Account)

[Business::Mondo::Attachment](https://metacpan.org/pod/Business::Mondo::Attachment)

[Business::Mondo::Balance](https://metacpan.org/pod/Business::Mondo::Balance)

[Business::Mondo::Transaction](https://metacpan.org/pod/Business::Mondo::Transaction)

[Business::Mondo::Webhook](https://metacpan.org/pod/Business::Mondo::Webhook)

# AUTHOR

Lee Johnson - `leejo@cpan.org`

# LICENSE

This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself. If you would like to contribute documentation,
features, bug fixes, or anything else then please raise an issue / pull request:

    https://github.com/leejo/business-mondo
</pre></body></html>