wallabag-api 0.4.0

Client API library for Wallabag
Documentation

# Wallabag client API

[![wallabag-api crates.io][cratesio-image]][cratesio]
[![wallabag-api docs.rs][docsrs-image]][docsrs]

Provides types and functions for interacting with a [Wallabag][wallabag] server API.


## About

See the [documentation][docsrs] for usage information.

## supported API endpoints:

All API endpoints are implemented except for the `/api/*/list{,s}`. I don't
plan on implementing support for those unless there is a good reason to.

- [X] DELETE `/api/annotations/{annotation}.{_format}`
      Removes an annotation.
- [X] PUT `/api/annotations/{annotation}.{_format}`
      Updates an annotation.
- [X] GET `/api/annotations/{entry}.{_format}`
      Retrieve annotations for an entry.
- [X] POST `/api/annotations/{entry}.{_format}`
      Creates a new annotation.
- [X] GET `/api/entries.{_format}`
      Retrieve all entries. It could be filtered by many options.
- [X] POST `/api/entries.{_format}`
      Create an entry.
- [X] GET `/api/entries/exists.{_format}`
      Check if an entry exist by url.
- [ ] DELETE `/api/entries/list.{_format}`
      Handles an entries list and delete URL.
- [ ] POST `/api/entries/lists.{_format}`
      Handles an entries list and create URL.
- [ ] DELETE `/api/entries/tags/list.{_format}`
      Handles an entries list delete tags from them.
- [ ] POST `/api/entries/tags/lists.{_format}`
      Handles an entries list and add tags to them.
- [X] DELETE `/api/entries/{entry}.{_format}`
      Delete permanently an entry.
- [X] GET `/api/entries/{entry}.{_format}`
      Retrieve a single entry.
- [X] PATCH `/api/entries/{entry}.{_format}`
      Change several properties of an entry.
- [X] GET `/api/entries/{entry}/export.{_format}`
      Retrieve a single entry as a predefined format.
- [X] PATCH `/api/entries/{entry}/reload.{_format}`
      Reload an entry.
- [X] GET `/api/entries/{entry}/tags.{_format}`
      Retrieve all tags for an entry.
- [X] POST `/api/entries/{entry}/tags.{_format}`
      Add one or more tags to an entry.
- [X] DELETE `/api/entries/{entry}/tags/{tag}.{_format}`
      Permanently remove one tag for an entry.
- [X] DELETE `/api/tag/label.{_format}`
      Permanently remove one tag from every entry by passing the Tag label.
- [X] GET `/api/tags.{_format}`
      Retrieve all tags.
- [X] DELETE `/api/tags/label.{_format}`
      Permanently remove some tags from every entry.
- [X] DELETE `/api/tags/{tag}.{_format}`
      Permanently remove one tag from every entry by passing the Tag ID.
- [X] GET `/api/user.{_format}`
      Retrieve current logged in user informations.
- [X] PUT `/api/user.{_format}`
      Register an user and create a client.
- [X] GET `/api/version.{_format}`
      Retrieve version number.


## Examples

A few small examples are provided. To use these, the following environment
variables must be set (for authentication). For example:

```sh
export WALLABAG_CLIENT_ID="client_id"
export WALLABAG_CLIENT_SECRET="client_secret"
export WALLABAG_USERNAME="username"
export WALLABAG_PASSWORD="password"
export WALLABAG_URL="https://framabag.org" # must not end with trailing slash
```

The examples include:

- [check_exists]examples/check_exists.rs: check if there is an entry
  corresponding to the url provided.
- [example_sandbox]examples/example_sandbox.rs: a bunch of (mostly) commented
  out small examples, used for manual testing... have fun experimenting!
- [get_entries]examples/get_entries.rs: simply retrieve and debug print all
  entries. See the source code for filtering options.
- [get_entries_page]examples/get_entries_page.rs: example fetching a single
  page of entries without auto handling pagination.
- [save_url]examples/save_url.rs: save a url to the server, printing the
  created entry on success.

## License

Licensed under either of

* Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall
be dual licensed as above, without any additional terms or conditions.


[wallabag]: https://wallabag.org/
[docsrs-image]: https://docs.rs/wallabag-api/badge.svg
[docsrs]: https://docs.rs/wallabag-api
[cratesio-image]: https://img.shields.io/crates/v/wallabag-api.svg
[cratesio]: https://crates.io/crates/wallabag-api