README

Miniflux API Client

PkgGoDev

Client library for Miniflux REST API.

Installation

go get -u miniflux.app/client

Example

package main

import (
	"fmt"
	"os"

	miniflux "miniflux.app/client"
)

func main() {
    // Authentication with username/password:
    client := miniflux.New("https://api.example.org", "admin", "secret")

    // Authentication with an API Key:
    client := miniflux.New("https://api.example.org", "my-secret-token")

    // Fetch all feeds.
    feeds, err := client.Feeds()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(feeds)

    // Backup your feeds to an OPML file.
    opml, err := client.Export()
    if err != nil {
        fmt.Println(err)
        return
    }

    err = os.WriteFile("opml.xml", opml, 0644)
    if err != nil {
        fmt.Println(err)
        return
    }
}

Documentation

Overview

Package client implements a client library for the Miniflux REST API.

Examples

This code snippet fetch the list of users:

import (
	miniflux "miniflux.app/client"
)

client := miniflux.New("https://api.example.org", "admin", "secret")
users, err := client.Users()
if err != nil {
	fmt.Println(err)
	return
}
fmt.Println(users, err)

This one discover subscriptions on a website:

subscriptions, err := client.Discover("https://example.org/")
if err != nil {
	fmt.Println(err)
	return
}
fmt.Println(subscriptions)

Index

Constants

View Source
const (
	EntryStatusUnread  = "unread"
	EntryStatusRead    = "read"
	EntryStatusRemoved = "removed"
)

    Entry statuses.

    Variables

    View Source
    var (
    	ErrNotAuthorized = errors.New("miniflux: unauthorized (bad credentials)")
    	ErrForbidden     = errors.New("miniflux: access forbidden")
    	ErrServerError   = errors.New("miniflux: internal server error")
    	ErrNotFound      = errors.New("miniflux: resource not found")
    )

      List of exposed errors.

      Functions

      This section is empty.

      Types

      type Categories

      type Categories []*Category

        Categories represents a list of categories.

        type Category

        type Category struct {
        	ID     int64  `json:"id,omitempty"`
        	Title  string `json:"title,omitempty"`
        	UserID int64  `json:"user_id,omitempty"`
        }

          Category represents a feed category.

          func (Category) String

          func (c Category) String() string

          type Client

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

            Client holds API procedure calls.

            func New

            func New(endpoint string, credentials ...string) *Client

              New returns a new Miniflux client.

              func (*Client) Categories

              func (c *Client) Categories() (Categories, error)

                Categories gets the list of categories.

                func (*Client) CategoryEntries

                func (c *Client) CategoryEntries(categoryID int64, filter *Filter) (*EntryResultSet, error)

                  CategoryEntries fetch entries of a category.

                  func (*Client) CategoryEntry

                  func (c *Client) CategoryEntry(categoryID, entryID int64) (*Entry, error)

                    CategoryEntry gets a single category entry.

                    func (*Client) CategoryFeeds

                    func (c *Client) CategoryFeeds(categoryID int64) (Feeds, error)

                      CategoryFeeds gets feeds of a cateogry.

                      func (*Client) CreateCategory

                      func (c *Client) CreateCategory(title string) (*Category, error)

                        CreateCategory creates a new category.

                        func (*Client) CreateFeed

                        func (c *Client) CreateFeed(feedCreationRequest *FeedCreationRequest) (int64, error)

                          CreateFeed creates a new feed.

                          func (*Client) CreateUser

                          func (c *Client) CreateUser(username, password string, isAdmin bool) (*User, error)

                            CreateUser creates a new user in the system.

                            func (*Client) DeleteCategory

                            func (c *Client) DeleteCategory(categoryID int64) error

                              DeleteCategory removes a category.

                              func (*Client) DeleteFeed

                              func (c *Client) DeleteFeed(feedID int64) error

                                DeleteFeed removes a feed.

                                func (*Client) DeleteUser

                                func (c *Client) DeleteUser(userID int64) error

                                  DeleteUser removes a user from the system.

                                  func (*Client) Discover

                                  func (c *Client) Discover(url string) (Subscriptions, error)

                                    Discover try to find subscriptions from a website.

                                    func (*Client) Entries

                                    func (c *Client) Entries(filter *Filter) (*EntryResultSet, error)

                                      Entries fetch entries.

                                      func (*Client) Entry

                                      func (c *Client) Entry(entryID int64) (*Entry, error)

                                        Entry gets a single entry.

                                        func (*Client) Export

                                        func (c *Client) Export() ([]byte, error)

                                          Export creates OPML file.

                                          func (*Client) Feed

                                          func (c *Client) Feed(feedID int64) (*Feed, error)

                                            Feed gets a feed.

                                            func (*Client) FeedEntries

                                            func (c *Client) FeedEntries(feedID int64, filter *Filter) (*EntryResultSet, error)

                                              FeedEntries fetch feed entries.

                                              func (*Client) FeedEntry

                                              func (c *Client) FeedEntry(feedID, entryID int64) (*Entry, error)

                                                FeedEntry gets a single feed entry.

                                                func (*Client) FeedIcon

                                                func (c *Client) FeedIcon(feedID int64) (*FeedIcon, error)

                                                  FeedIcon gets a feed icon.

                                                  func (*Client) Feeds

                                                  func (c *Client) Feeds() (Feeds, error)

                                                    Feeds gets all feeds.

                                                    func (*Client) Import

                                                    func (c *Client) Import(f io.ReadCloser) error

                                                      Import imports an OPML file.

                                                      func (*Client) MarkAllAsRead

                                                      func (c *Client) MarkAllAsRead(userID int64) error

                                                        MarkAllAsRead marks all unread entries as read for a given user.

                                                        func (*Client) MarkCategoryAsRead

                                                        func (c *Client) MarkCategoryAsRead(categoryID int64) error

                                                          MarkCategoryAsRead marks all unread entries in a category as read.

                                                          func (*Client) MarkFeedAsRead

                                                          func (c *Client) MarkFeedAsRead(feedID int64) error

                                                            MarkFeedAsRead marks all unread entries of the feed as read.

                                                            func (*Client) Me

                                                            func (c *Client) Me() (*User, error)

                                                              Me returns the logged user information.

                                                              func (*Client) RefreshAllFeeds

                                                              func (c *Client) RefreshAllFeeds() error

                                                                RefreshAllFeeds refreshes all feeds.

                                                                func (*Client) RefreshFeed

                                                                func (c *Client) RefreshFeed(feedID int64) error

                                                                  RefreshFeed refreshes a feed.

                                                                  func (*Client) ToggleBookmark

                                                                  func (c *Client) ToggleBookmark(entryID int64) error

                                                                    ToggleBookmark toggles entry bookmark value.

                                                                    func (*Client) UpdateCategory

                                                                    func (c *Client) UpdateCategory(categoryID int64, title string) (*Category, error)

                                                                      UpdateCategory updates a category.

                                                                      func (*Client) UpdateEntries

                                                                      func (c *Client) UpdateEntries(entryIDs []int64, status string) error

                                                                        UpdateEntries updates the status of a list of entries.

                                                                        func (*Client) UpdateFeed

                                                                        func (c *Client) UpdateFeed(feedID int64, feedChanges *FeedModificationRequest) (*Feed, error)

                                                                          UpdateFeed updates a feed.

                                                                          func (*Client) UpdateUser

                                                                          func (c *Client) UpdateUser(userID int64, userChanges *UserModificationRequest) (*User, error)

                                                                            UpdateUser updates a user in the system.

                                                                            func (*Client) UserByID

                                                                            func (c *Client) UserByID(userID int64) (*User, error)

                                                                              UserByID returns a single user.

                                                                              func (*Client) UserByUsername

                                                                              func (c *Client) UserByUsername(username string) (*User, error)

                                                                                UserByUsername returns a single user.

                                                                                func (*Client) Users

                                                                                func (c *Client) Users() (Users, error)

                                                                                  Users returns all users.

                                                                                  type Enclosure

                                                                                  type Enclosure struct {
                                                                                  	ID       int64  `json:"id"`
                                                                                  	UserID   int64  `json:"user_id"`
                                                                                  	EntryID  int64  `json:"entry_id"`
                                                                                  	URL      string `json:"url"`
                                                                                  	MimeType string `json:"mime_type"`
                                                                                  	Size     int    `json:"size"`
                                                                                  }

                                                                                    Enclosure represents an attachment.

                                                                                    type Enclosures

                                                                                    type Enclosures []*Enclosure

                                                                                      Enclosures represents a list of attachments.

                                                                                      type Entries

                                                                                      type Entries []*Entry

                                                                                        Entries represents a list of entries.

                                                                                        type Entry

                                                                                        type Entry struct {
                                                                                        	ID          int64      `json:"id"`
                                                                                        	UserID      int64      `json:"user_id"`
                                                                                        	FeedID      int64      `json:"feed_id"`
                                                                                        	Status      string     `json:"status"`
                                                                                        	Hash        string     `json:"hash"`
                                                                                        	Title       string     `json:"title"`
                                                                                        	URL         string     `json:"url"`
                                                                                        	Date        time.Time  `json:"published_at"`
                                                                                        	CreatedAt   time.Time  `json:"created_at"`
                                                                                        	Content     string     `json:"content"`
                                                                                        	Author      string     `json:"author"`
                                                                                        	ShareCode   string     `json:"share_code"`
                                                                                        	Starred     bool       `json:"starred"`
                                                                                        	ReadingTime int        `json:"reading_time"`
                                                                                        	Enclosures  Enclosures `json:"enclosures,omitempty"`
                                                                                        	Feed        *Feed      `json:"feed,omitempty"`
                                                                                        }

                                                                                          Entry represents a subscription item in the system.

                                                                                          type EntryResultSet

                                                                                          type EntryResultSet struct {
                                                                                          	Total   int     `json:"total"`
                                                                                          	Entries Entries `json:"entries"`
                                                                                          }

                                                                                            EntryResultSet represents the response when fetching entries.

                                                                                            type Feed

                                                                                            type Feed struct {
                                                                                            	ID                          int64     `json:"id"`
                                                                                            	UserID                      int64     `json:"user_id"`
                                                                                            	FeedURL                     string    `json:"feed_url"`
                                                                                            	SiteURL                     string    `json:"site_url"`
                                                                                            	Title                       string    `json:"title"`
                                                                                            	CheckedAt                   time.Time `json:"checked_at,omitempty"`
                                                                                            	EtagHeader                  string    `json:"etag_header,omitempty"`
                                                                                            	LastModifiedHeader          string    `json:"last_modified_header,omitempty"`
                                                                                            	ParsingErrorMsg             string    `json:"parsing_error_message,omitempty"`
                                                                                            	ParsingErrorCount           int       `json:"parsing_error_count,omitempty"`
                                                                                            	Disabled                    bool      `json:"disabled"`
                                                                                            	IgnoreHTTPCache             bool      `json:"ignore_http_cache"`
                                                                                            	AllowSelfSignedCertificates bool      `json:"allow_self_signed_certificates"`
                                                                                            	FetchViaProxy               bool      `json:"fetch_via_proxy"`
                                                                                            	ScraperRules                string    `json:"scraper_rules"`
                                                                                            	RewriteRules                string    `json:"rewrite_rules"`
                                                                                            	BlocklistRules              string    `json:"blocklist_rules"`
                                                                                            	KeeplistRules               string    `json:"keeplist_rules"`
                                                                                            	Crawler                     bool      `json:"crawler"`
                                                                                            	UserAgent                   string    `json:"user_agent"`
                                                                                            	Cookie                      string    `json:"cookie"`
                                                                                            	Username                    string    `json:"username"`
                                                                                            	Password                    string    `json:"password"`
                                                                                            	Category                    *Category `json:"category,omitempty"`
                                                                                            }

                                                                                              Feed represents a Miniflux feed.

                                                                                              type FeedCreationRequest

                                                                                              type FeedCreationRequest struct {
                                                                                              	FeedURL                     string `json:"feed_url"`
                                                                                              	CategoryID                  int64  `json:"category_id"`
                                                                                              	UserAgent                   string `json:"user_agent"`
                                                                                              	Cookie                      string `json:"cookie"`
                                                                                              	Username                    string `json:"username"`
                                                                                              	Password                    string `json:"password"`
                                                                                              	Crawler                     bool   `json:"crawler"`
                                                                                              	Disabled                    bool   `json:"disabled"`
                                                                                              	IgnoreHTTPCache             bool   `json:"ignore_http_cache"`
                                                                                              	AllowSelfSignedCertificates bool   `json:"allow_self_signed_certificates"`
                                                                                              	FetchViaProxy               bool   `json:"fetch_via_proxy"`
                                                                                              	ScraperRules                string `json:"scraper_rules"`
                                                                                              	RewriteRules                string `json:"rewrite_rules"`
                                                                                              	BlocklistRules              string `json:"blocklist_rules"`
                                                                                              	KeeplistRules               string `json:"keeplist_rules"`
                                                                                              }

                                                                                                FeedCreationRequest represents the request to create a feed.

                                                                                                type FeedIcon

                                                                                                type FeedIcon struct {
                                                                                                	ID       int64  `json:"id"`
                                                                                                	MimeType string `json:"mime_type"`
                                                                                                	Data     string `json:"data"`
                                                                                                }

                                                                                                  FeedIcon represents the feed icon.

                                                                                                  type FeedModificationRequest

                                                                                                  type FeedModificationRequest struct {
                                                                                                  	FeedURL                     *string `json:"feed_url"`
                                                                                                  	SiteURL                     *string `json:"site_url"`
                                                                                                  	Title                       *string `json:"title"`
                                                                                                  	ScraperRules                *string `json:"scraper_rules"`
                                                                                                  	RewriteRules                *string `json:"rewrite_rules"`
                                                                                                  	BlocklistRules              *string `json:"blocklist_rules"`
                                                                                                  	KeeplistRules               *string `json:"keeplist_rules"`
                                                                                                  	Crawler                     *bool   `json:"crawler"`
                                                                                                  	UserAgent                   *string `json:"user_agent"`
                                                                                                  	Cookie                      *string `json:"cookie"`
                                                                                                  	Username                    *string `json:"username"`
                                                                                                  	Password                    *string `json:"password"`
                                                                                                  	CategoryID                  *int64  `json:"category_id"`
                                                                                                  	Disabled                    *bool   `json:"disabled"`
                                                                                                  	IgnoreHTTPCache             *bool   `json:"ignore_http_cache"`
                                                                                                  	AllowSelfSignedCertificates *bool   `json:"allow_self_signed_certificates"`
                                                                                                  	FetchViaProxy               *bool   `json:"fetch_via_proxy"`
                                                                                                  }

                                                                                                    FeedModificationRequest represents the request to update a feed.

                                                                                                    type Feeds

                                                                                                    type Feeds []*Feed

                                                                                                      Feeds represents a list of feeds.

                                                                                                      type Filter

                                                                                                      type Filter struct {
                                                                                                      	Status        string
                                                                                                      	Offset        int
                                                                                                      	Limit         int
                                                                                                      	Order         string
                                                                                                      	Direction     string
                                                                                                      	Starred       bool
                                                                                                      	Before        int64
                                                                                                      	After         int64
                                                                                                      	BeforeEntryID int64
                                                                                                      	AfterEntryID  int64
                                                                                                      	Search        string
                                                                                                      	CategoryID    int64
                                                                                                      	FeedID        int64
                                                                                                      	Statuses      []string
                                                                                                      }

                                                                                                        Filter is used to filter entries.

                                                                                                        type Subscription

                                                                                                        type Subscription struct {
                                                                                                        	Title string `json:"title"`
                                                                                                        	URL   string `json:"url"`
                                                                                                        	Type  string `json:"type"`
                                                                                                        }

                                                                                                          Subscription represents a feed subscription.

                                                                                                          func (Subscription) String

                                                                                                          func (s Subscription) String() string

                                                                                                          type Subscriptions

                                                                                                          type Subscriptions []*Subscription

                                                                                                            Subscriptions represents a list of subscriptions.

                                                                                                            type User

                                                                                                            type User struct {
                                                                                                            	ID                int64      `json:"id"`
                                                                                                            	Username          string     `json:"username"`
                                                                                                            	Password          string     `json:"password,omitempty"`
                                                                                                            	IsAdmin           bool       `json:"is_admin"`
                                                                                                            	Theme             string     `json:"theme"`
                                                                                                            	Language          string     `json:"language"`
                                                                                                            	Timezone          string     `json:"timezone"`
                                                                                                            	EntryDirection    string     `json:"entry_sorting_direction"`
                                                                                                            	Stylesheet        string     `json:"stylesheet"`
                                                                                                            	GoogleID          string     `json:"google_id"`
                                                                                                            	OpenIDConnectID   string     `json:"openid_connect_id"`
                                                                                                            	EntriesPerPage    int        `json:"entries_per_page"`
                                                                                                            	KeyboardShortcuts bool       `json:"keyboard_shortcuts"`
                                                                                                            	ShowReadingTime   bool       `json:"show_reading_time"`
                                                                                                            	EntrySwipe        bool       `json:"entry_swipe"`
                                                                                                            	LastLoginAt       *time.Time `json:"last_login_at"`
                                                                                                            	DisplayMode       string     `json:"display_mode"`
                                                                                                            }

                                                                                                              User represents a user in the system.

                                                                                                              func (User) String

                                                                                                              func (u User) String() string

                                                                                                              type UserCreationRequest

                                                                                                              type UserCreationRequest struct {
                                                                                                              	Username        string `json:"username"`
                                                                                                              	Password        string `json:"password"`
                                                                                                              	IsAdmin         bool   `json:"is_admin"`
                                                                                                              	GoogleID        string `json:"google_id"`
                                                                                                              	OpenIDConnectID string `json:"openid_connect_id"`
                                                                                                              }

                                                                                                                UserCreationRequest represents the request to create a user.

                                                                                                                type UserModificationRequest

                                                                                                                type UserModificationRequest struct {
                                                                                                                	Username          *string `json:"username"`
                                                                                                                	Password          *string `json:"password"`
                                                                                                                	IsAdmin           *bool   `json:"is_admin"`
                                                                                                                	Theme             *string `json:"theme"`
                                                                                                                	Language          *string `json:"language"`
                                                                                                                	Timezone          *string `json:"timezone"`
                                                                                                                	EntryDirection    *string `json:"entry_sorting_direction"`
                                                                                                                	Stylesheet        *string `json:"stylesheet"`
                                                                                                                	GoogleID          *string `json:"google_id"`
                                                                                                                	OpenIDConnectID   *string `json:"openid_connect_id"`
                                                                                                                	EntriesPerPage    *int    `json:"entries_per_page"`
                                                                                                                	KeyboardShortcuts *bool   `json:"keyboard_shortcuts"`
                                                                                                                	ShowReadingTime   *bool   `json:"show_reading_time"`
                                                                                                                	EntrySwipe        *bool   `json:"entry_swipe"`
                                                                                                                	DisplayMode       *string `json:"display_mode"`
                                                                                                                }

                                                                                                                  UserModificationRequest represents the request to update a user.

                                                                                                                  type Users

                                                                                                                  type Users []User

                                                                                                                    Users represents a list of users.