The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
namespace perl Tappy

typedef i32 account_id

// @validate length 1-8
typedef string username

typedef string password

struct account {
    1: account_id id,
    2: i32        allocation
}

exception insufficientResources {
    1: i16    code,
    2: string message
}

exception genericCode {
    1: i16    code,
    2: string message
}

service Accounts {
    /*
        Create a new account
        @rest POST /accounts
    */
    account createAccount (
        1: username username,
        2: string   password
    )
    throws (
        1: insufficientResources insufficient,
        2: genericCode code
    ),

    /*
        Get an account by username
        @rest GET /account/:username
    */
    account getAccount (
        1: username username
    )
    throws (
        1: genericCode code
    )
}