# `tripactions` A fully generated, opinionated API client library for TripActions. [![docs.rs](https://docs.rs/tripactions/badge.svg)](https://docs.rs/tripactions) ## API Details

Welcome to the TripActions Booking Data API reference documentation.

You can use this API to retrieve your booking data from TripActions.

To access the API, your company admin needs to supply you with a client id and a secret key. They can generate this in the TripActions Admin Dashboard, in the Integrations section of the Settings page.


To generate a token make a request to the token API with your credentials:

curl --request POST --url 'https://api.tripactions.com/ta-auth/oauth/token' \
--header 'content-type:application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=YOURCLIENTIDHERE \
--data client_secret=YOURSECRETHERE

Once the token was generated you can call the Booking Data API:

curl --request GET --url https://api.tripactions.com/v1/bookings\?createdFrom\=1609459200\&createdTo\=1623229202\&page\=0\&size\=10 --header 'Authorization:Bearer YOURTOKENHERE' ## Client Details This client is generated from the [TripActions OpenAPI specs](https://app.tripactions.com/api/public/documentation/swagger-ui/index.html?configUrl=/api/public/documentation/api-docs/swagger-config) based on API spec version `1`. This way it will remain up to date as features are added. The documentation for the crate is generated along with the code to make this library easy to use. To install the library, add the following to your `Cargo.toml` file. ```toml [dependencies] tripactions = "0.7.0" ``` ## Basic example Typical use will require intializing a `Client`. This requires a user agent string and set of credentials. ```rust use tripactions::Client; let tripactions = Client::new( String::from("client-id"), String::from("client-secret"), String::from("token"), ); ``` Alternatively, the library can search for most of the variables required for the client in the environment: - `TRIPACTIONS_CLIENT_ID` - `TRIPACTIONS_CLIENT_SECRET` And then you can create a client from the environment. ```rust use tripactions::Client; let tripactions = Client::new_from_env( String::from("token"), ); ``` It is okay to pass an empty value for `token`. In the initial state of the client, you will not know this value. To start off a fresh client and get a `token`, use the following. ```rust use tripactions::Client; async fn do_call() { let mut tripactions = Client::new_from_env(""); let mut access_token = tripactions.get_access_token().await.unwrap(); } ```