README.md in seamapi-0.1.0 vs README.md in seamapi-1.0.0.pre.rc.0

- old
+ new

@@ -1,41 +1,182 @@ -# Seam API Ruby Gem +# Seam API Ruby SDK -The Seam Ruby library provides convenient access to the Seam API from applications written -in the Ruby language. It includes a pre-defined set of classes for API resources that -initialize themselves dynamically from API responses. +[![RubyGems.org](https://img.shields.io/gem/v/seamapi)](https://rubygems.org/gems/seamapi) +[![GitHub Actions](https://github.com/seamapi/ruby/workflows/main/badge.svg)](https://github.com/seamapi/ruby/actions) +[![Docs](https://img.shields.io/badge/docs-latest-blue)](https://docs.seam.co/) -This library also includes: +Official interface to the [Seam Connect API]. -- [All Seam Web API Methods](https://docs.seam.co/latest/api-endpoints/overview) -- Simplified asynchronous flows, including listening for events or actions to finish +[Seam Connect API]: https://docs.seam.co/ -## Installation +## Description -Add the following line to your Gemfile +This SDK provides convenient access to the [Seam Connect API] for Ruby applications. - gem "seamapi" +This library includes: -Then execute +- A predefined set of classes for API resources that + initialize themselves dynamically from API responses. +- Methods for all [Seam API endpoints]. +- Simplified asynchronous flows, e.g., listening for events or actions to finish. - $ bundle +[Seam API endpoints]: https://docs.seam.co/latest/api-endpoints/overview +## Installation + +Add this as a dependency to your project using [Bundler] with + +``` +$ bundle add seamapi +``` + +[bundler]: https://bundler.io/ + ## Usage -> To use this sdk, you'll need to generate an API Key on the [Seam Dashboard](https://dashboard.getseam.com) +_Refer to the [Seam Connect API documentation][Seam Connect API]._ -```ruby -seam = Seam::Client.new(api_key: "MY_API_KEY") +### Requirements -devices = seam.devices.list +- Ruby version 3 or later. +- An API Key generated via the [Seam Dashboard]. -my_door = devices.first +[Seam Dashboard]: https://dashboard.getseam.com +### Example + +```ruby +seam = Seam::Client.new(api_key: "MY_SEAM_API_KEY") +devices = seam.devices.list +my_door = devices.first seam.locks.unlock(my_door).wait_until_finished +``` +## Development and Testing + +### Quickstart + ``` +$ git clone https://github.com/seamapi/ruby.git +$ cd ruby +$ bundle install +``` -## Development +Run the command below -To play around with this module interactively in development, first run `bundle` -then run `bin/console` to get an interactive console. You can then use a sandbox -API key to play with the any new features you're testing! +``` +$ bundle exec rake +``` + +Open an interactive ruby console with + +``` +$ bundle exec rake +``` + +Primary development tasks are defined as [rake] tasks in the `Rakefile` +and available via `rake`. +View them with + +``` +$ bundle exec rake -T +``` + +[rake]: https://ruby.github.io/rake/ + +### Interactive Console + +Play around with this module inside an interactive console with + +``` +$ rake console +``` + +Use a sandbox API key to play with the SDK without touching real devices. + +### Source code + +The [source code] is hosted on GitHub. +Clone the project with + +``` +$ git clone git@github.com:seamapi/ruby.git +``` + +[source code]: https://github.com/seamapi/ruby + +### Requirements + +You will need [Ruby] with [Bundler]. + +Be sure that all commands run under the correct Ruby version, e.g., +if using [rbenv], install the correct version with + +``` +$ rbenv install +``` + +Install the development dependencies with + +``` +$ bundle install +``` + +[bundler]: https://bundler.io/ +[ruby]: https://www.ruby-lang.org/ +[rbenv]: https://github.com/rbenv/rbenv + +### Publishing + +Releases are handled automatically by [semantic-release]. +Publishing may be triggered manually using a [workflow_dispatch on GitHub Actions]. + +[semantic-release]: https://semantic-release.gitbook.io/ +[workflow_dispatch on github actions]: https://github.com/seamapi/ruby/actions?query=workflow%3Aversion + +## GitHub Actions + +_GitHub Actions should already be configured: this section is for reference only._ + +The following repository secrets must be set on [GitHub Actions]: + +- `RUBYGEMS_API_KEY`: RubyGems.org token for publishing packages. +- `GH_TOKEN`: A personal access token for the user. +- `GIT_USER_NAME`: The GitHub user's real name. +- `GIT_USER_EMAIL`: The GitHub user's email. +- `GPG_PRIVATE_KEY`: The GitHub user's [GPG private key]. +- `GPG_PASSPHRASE`: The GitHub user's GPG passphrase. + +These are set at the organization level. + +[github actions]: https://github.com/features/actions +[gpg private key]: https://github.com/marketplace/actions/import-gpg#prerequisites + +## Contributing + +Please submit and comment on bug reports and feature requests. + +To submit a patch: + +1. Fork it (https://github.com/seamapi/ruby/fork). +2. Create your feature branch (`git checkout -b my-new-feature`). +3. Make changes. +4. Commit your changes (`git commit -am 'Add some feature'`). +5. Push to the branch (`git push origin my-new-feature`). +6. Create a new Pull Request. + +## License + +This Ruby gem is licensed under the MIT license. + +## Warranty + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are +disclaimed. In no event shall the copyright holder or contributors be liable for +any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused and on +any theory of liability, whether in contract, strict liability, or tort +(including negligence or otherwise) arising in any way out of the use of this +software, even if advised of the possibility of such damage.