zaim

package module
v0.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2025 License: MIT Imports: 8 Imported by: 0

README

go-zaim

Go Reference GitHub Release codecov Go Report Card License

Go 用 Zaim API クライアント

インストール

go get github.com/ryohidaka/go-zaim

ドキュメント

Read GoDoc

使用例

[!IMPORTANT] 一部の API エンドポイントでは OAuth 1.0a での認証が必須です。

初期化
import "github.com/ryohidaka/go-zaim"


func main() {
    // 認証情報を取得
    p := zaim.ZaimParams{
        ConsumerKey:    "<CONSUMER_KEY>",
        ConsumerSecret: "<CONSUMER_SECRET>",
        Token:          "<TOKEN>",
        TokenSecret:    "<TOKEN_SECRET>",
    }

    // クライアントを初期化
    c := zaim.NewZaimClient(p)
}
ユーザー情報
// 認証ユーザーの情報を取得
me, err := c.FetchMe()
入出金履歴
// 入出金履歴を取得
money, err := c.FetchMoney()

// 入出金履歴を取得 (グルーピング形式)
money, err := c.FetchGroupedMoney()
カテゴリ
// カテゴリ一覧を取得
categories, err := c.FetchCategories()

// デフォルトカテゴリ一覧を取得
categories, err := c.FetchDefaultCategories()
ジャンル
// ジャンル一覧を取得する
genres, err := c.FetchGenres()

// デフォルトのジャンル一覧を取得する
genres, err := c.FetchDefaultGenres()
口座
// 口座一覧を取得する
accounts, err := c.FetchAccounts()

// デフォルト口座一覧を取得する
accounts, err := c.FetchDefaultAccounts()
支払情報
// 支払情報を登録する
res, err := c.CreatePayment(zaim.CreatePaymentParams{
    CategoryID: 102,
    GenreID:    10202,
    Amount:     1,
})

// 支払情報を更新する
res, err := c.UpdatePayment(381, zaim.UpdatePaymentParams{
    CategoryID: 102,
    GenreID:    10202,
    Amount:     1,
})

// 支払情報を削除する
res, err := c.DeletePayment(381)
収入情報
// 収入情報を登録する
res, err := c.CreateIncome(zaim.CreateIncomeParams{
    CategoryID: 102,
    Amount:     1,
})

// 収入情報を更新する
res, err := c.UpdateIncome(381, zaim.UpdateIncomeParams{
    CategoryID: 102,
    Amount:     1,
})

// 収入情報を削除する
res, err := c.DeleteIncome(381)
振替情報
// 振替情報を登録する
res, err := c.CreateTransfer(zaim.CreateTransferParams{
    Amount: 1,
    Date:   time.Now(),
    FromAccountID: 1,
    ToAccountID:   2,
})

// 振替情報を更新する
res, err := c.UpdateTransfer(381, zaim.CreateTransferParams{
    Amount: 1,
    Date:   time.Now(),
    FromAccountID: 1,
    ToAccountID:   2,
})

// 振替情報を削除する
res, err := c.DeleteTransfer(381)
通貨
// 通貨一覧を取得する
currencies, err := c.FetchCurrency()

リンク

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

Index

Examples

Constants

View Source
const BaseURL = "https://api.zaim.net/v2/"

Zaim API のエンドポイントベースURL

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewZaimClient added in v0.2.0

func NewZaimClient(params ...ZaimParams) *Client

NewZaimClient は、Zaim API と通信するための新しいクライアントを作成する。 認証情報が提供されている場合、OAuth 1.0a を用いた認証付きクライアントを生成する。

Authorize with Oauth 1.0a

func (*Client) CreateIncome added in v0.9.0

func (c *Client) CreateIncome(p CreateIncomeParams) (models.Transaction, error)

CreateIncome は収入情報を登録する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

params := zaim.CreateIncomeParams{
	CategoryID: 102,
	Amount:     1,
	Date:       time.Now(),
}

// 収入情報を登録
res, err := c.CreateIncome(params)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) CreatePayment added in v0.8.0

func (c *Client) CreatePayment(p CreatePaymentParams) (models.Transaction, error)

CreatePayment は支払情報を登録する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

params := zaim.CreatePaymentParams{
	CategoryID: 102,
	GenreID:    10202,
	Amount:     1,
	Date:       time.Now(),
}

// 支払情報を登録
res, err := c.CreatePayment(params)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) CreateTransfer added in v0.10.0

func (c *Client) CreateTransfer(p CreateTransferParams) (models.Transaction, error)

CreateTransfer は振替情報を登録する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

params := zaim.CreateTransferParams{
	Amount:        1,
	Date:          time.Now(),
	FromAccountID: 1,
	ToAccountID:   2,
}

// 振替情報を登録
res, err := c.CreateTransfer(params)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) DeleteIncome added in v0.9.0

func (c *Client) DeleteIncome(id uint64) (models.Transaction, error)

DeleteIncome は収入情報を削除する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// 収入情報を削除
res, err := c.DeleteIncome(381)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) DeletePayment added in v0.8.0

func (c *Client) DeletePayment(id uint64) (models.Transaction, error)

DeletePayment は支払情報を削除する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// 支払情報を削除
res, err := c.DeletePayment(381)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) DeleteTransfer added in v0.10.0

func (c *Client) DeleteTransfer(id uint64) (models.Transaction, error)

DeleteTransfer は振替情報を削除する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// 振替情報を削除
res, err := c.DeleteTransfer(381)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) FetchAccounts added in v0.7.0

func (c *Client) FetchAccounts() ([]models.Account, error)

FetchAccounts は口座一覧を取得する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// 口座一覧を取得する
accounts, err := c.FetchAccounts()
if err != nil {
	log.Fatal(err)
}

for _, a := range accounts {
	println(a.Name)
}

func (*Client) FetchCategories added in v0.5.0

func (c *Client) FetchCategories() ([]models.Category, error)

FetchCategories はカテゴリ一覧を取得する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// カテゴリ一覧を取得する
categories, err := c.FetchCategories()
if err != nil {
	log.Fatal(err)
}

for _, c := range categories {
	println(c.Name)
}

func (*Client) FetchCurrency added in v0.15.0

func (c *Client) FetchCurrency() ([]models.Currency, error)

FetchCurrency は通貨一覧を取得する

Example
c := zaim.NewZaimClient()

// 通貨一覧を取得する
currencies, err := c.FetchCurrency()
if err != nil {
	log.Fatal(err)
}

for _, currency := range currencies {
	println(currency.Name)
}

func (*Client) FetchDefaultAccounts added in v0.12.0

func (c *Client) FetchDefaultAccounts() ([]models.DefaultAccount, error)

FetchDefaultAccounts はデフォルトの口座一覧を取得する

Example
// クライアント初期化
c := zaim.NewZaimClient()

// デフォルト口座一覧を取得する
accounts, err := c.FetchDefaultAccounts()
if err != nil {
	log.Fatal(err)
}

for _, a := range accounts {
	println(a.Name)
}

func (*Client) FetchDefaultCategories added in v0.13.0

func (c *Client) FetchDefaultCategories() ([]models.DefaultCategory, error)

FetchDefaultCategories はデフォルトのカテゴリ一覧を取得する

Example
// クライアント初期化
c := zaim.NewZaimClient()

// デフォルトのカテゴリ一覧を取得する
categories, err := c.FetchDefaultCategories()
if err != nil {
	log.Fatal(err)
}

for _, c := range categories {
	println(c.Name)
}

func (*Client) FetchDefaultGenres added in v0.14.0

func (c *Client) FetchDefaultGenres() ([]models.DefaultGenre, error)

FetchDefaultGenres はデフォルトのジャンル一覧を取得する

Example
// クライアント初期化
c := zaim.NewZaimClient()

// デフォルトのジャンル一覧を取得する
genres, err := c.FetchDefaultGenres()
if err != nil {
	log.Fatal(err)
}

for _, g := range genres {
	println(g.Name)
}

func (*Client) FetchGenres added in v0.6.0

func (c *Client) FetchGenres() ([]models.Genre, error)

FetchGenres はジャンル一覧を取得する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// ジャンル一覧を取得する
genres, err := c.FetchGenres()
if err != nil {
	log.Fatal(err)
}

for _, g := range genres {
	println(g.Name)
}

func (*Client) FetchGroupedMoney added in v0.4.0

func (c *Client) FetchGroupedMoney(opts ...FetchMoneyParams) ([]models.GroupedMoney, error)

FetchGroupedMoney は group_by=receipt_id 形式で入出金履歴を取得する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// 入出金履歴を取得
money, err := c.FetchGroupedMoney()
if err != nil {
	log.Fatal(err)
}

for _, m := range money {
	println(m.ReceiptID)
}

func (*Client) FetchMe

func (c *Client) FetchMe() (models.Me, error)

FetchMe は認証ユーザーの情報を取得する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// ユーザー情報を取得
me, err := c.FetchMe()
if err != nil {
	log.Fatal(err)
}

println(me.Name)

func (*Client) FetchMoney added in v0.2.0

func (c *Client) FetchMoney(opts ...FetchMoneyParams) ([]models.Money, error)

FetchMoney はユーザーの入出金履歴を取得する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

// 入出金履歴を取得
money, err := c.FetchMoney()
if err != nil {
	log.Fatal(err)
}

for _, m := range money {
	println(m.Name)
}

func (*Client) UpdateIncome added in v0.9.0

func (c *Client) UpdateIncome(id uint64, p UpdateIncomeParams) (models.Transaction, error)

UpdateIncome は収入情報を更新する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

params := zaim.UpdateIncomeParams{
	CategoryID: 102,
	GenreID:    10202,
	Amount:     1,
	Date:       time.Now(),
}

// 収入情報を更新
res, err := c.UpdateIncome(381, params)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) UpdatePayment added in v0.8.0

func (c *Client) UpdatePayment(id uint64, p UpdatePaymentParams) (models.Transaction, error)

UpdatePayment は支払情報を更新する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

params := zaim.UpdatePaymentParams{
	CategoryID: 102,
	GenreID:    10202,
	Amount:     1,
	Date:       time.Now(),
}

// 支払情報を更新
res, err := c.UpdatePayment(381, params)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

func (*Client) UpdateTransfer added in v0.10.0

func (c *Client) UpdateTransfer(id uint64, p UpdateTransferParams) (models.Transaction, error)

UpdateTransfer は振替情報を更新する

Example
// クライアント初期化
p := zaim.ZaimParams{
	ConsumerKey:    os.Getenv("ZAIM_CONSUMER_KEY"),
	ConsumerSecret: os.Getenv("ZAIM_CONSUMER_SECRET"),
	Token:          os.Getenv("ZAIM_TOKEN"),
	TokenSecret:    os.Getenv("ZAIM_TOKEN_SECRET"),
}

c := zaim.NewZaimClient(p)

params := zaim.UpdateTransferParams{
	Amount:        1,
	Date:          time.Now(),
	FromAccountID: 1,
	ToAccountID:   2,
}

// 振替情報を更新
res, err := c.UpdateTransfer(381, params)
if err != nil {
	log.Fatal(err)
}

println(res.Money.ID)
println(res.Money.Modified.String())

type CreateIncomeParams added in v0.9.0

type CreateIncomeParams struct {
	CategoryID  uint16    `url:"category_id"`
	Amount      int32     `url:"amount"`
	Date        time.Time `url:"date"`
	ToAccountID *uint64   `url:"to_account_id,omitempty"`
	Comment     *string   `url:"comment,omitempty"`
	Place       *string   `url:"place,omitempty"`
}

type CreatePaymentParams added in v0.8.0

type CreatePaymentParams struct {
	CategoryID    uint16    `url:"category_id"`
	GenreID       uint16    `url:"genre_id"`
	Amount        int32     `url:"amount"`
	Date          time.Time `url:"date"`
	ReceiptID     *int64    `url:"receipt_id"`
	FromAccountID *uint64   `url:"from_account_id,omitempty"`
	Comment       *string   `url:"comment,omitempty"`
	Name          *string   `url:"name,omitempty"`
	Place         *string   `url:"place,omitempty"`
}

type CreateTransferParams added in v0.10.0

type CreateTransferParams struct {
	Amount        int32     `url:"amount"`
	Date          time.Time `url:"date"`
	FromAccountID uint64    `url:"from_account_id,omitempty"`
	ToAccountID   uint64    `url:"to_account_id,omitempty"`
	Comment       *string   `url:"comment,omitempty"`
}

type FetchMoneyParams added in v0.2.0

type FetchMoneyParams struct {
	CategoryID uint16       `url:"category_id,omitempty"`
	GenreID    uint16       `url:"genre_id,omitempty"`
	Mode       models.Mode  `url:"mode,omitempty"`       // payment, income, transfer
	Order      models.Order `url:"order,omitempty"`      // id or date (default: date)
	StartDate  string       `url:"start_date,omitempty"` // YYYY-MM-DD
	EndDate    string       `url:"end_date,omitempty"`   // YYYY-MM-DD
	Page       uint8        `url:"page,omitempty"`       // default 1
	Limit      uint8        `url:"limit,omitempty"`      // default 20, max 100
}

type UpdateIncomeParams added in v0.9.0

type UpdateIncomeParams struct {
	Amount        int32     `url:"amount"`
	Date          time.Time `url:"date"`
	FromAccountID *uint64   `url:"from_account_id,omitempty"`
	CategoryID    uint16    `url:"category_id"`
	GenreID       uint16    `url:"genre_id"`
	Comment       *string   `url:"comment,omitempty"`
	Name          *string   `url:"name,omitempty"`
}

type UpdatePaymentParams added in v0.8.0

type UpdatePaymentParams struct {
	Amount        int32     `url:"amount"`
	Date          time.Time `url:"date"`
	FromAccountID *uint64   `url:"from_account_id,omitempty"`
	CategoryID    uint16    `url:"category_id"`
	GenreID       uint16    `url:"genre_id"`
	Comment       *string   `url:"comment,omitempty"`
	Name          *string   `url:"name,omitempty"`
}

type UpdateTransferParams added in v0.10.0

type UpdateTransferParams struct {
	Amount        int32     `url:"amount"`
	Date          time.Time `url:"date"`
	FromAccountID uint64    `url:"from_account_id,omitempty"`
	ToAccountID   uint64    `url:"to_account_id,omitempty"`
	Comment       *string   `url:"comment,omitempty"`
}

type ZaimParams added in v0.2.0

type ZaimParams struct {
	ConsumerKey    string
	ConsumerSecret string
	Token          string
	TokenSecret    string
}

OAuth1認証情報をまとめたパラメータ構造体

Directories

Path Synopsis
internal
api

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL