diff --git a/lib/seam/clients/access_codes.rb b/lib/seam/clients/access_codes.rb index a0b153b..bcb7e15 100644 --- a/lib/seam/clients/access_codes.rb +++ b/lib/seam/clients/access_codes.rb @@ -25,13 +25,14 @@ def list(device_or_id = nil, access_code_ids: nil) ) end - def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil) + def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil, use_backup_access_code_pool: nil) action_attempt = request_seam_object( :post, "/access_codes/create", Seam::ActionAttempt, "action_attempt", - body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name}.compact + body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name, + use_backup_access_code_pool: use_backup_access_code_pool}.compact ) action_attempt.wait_until_finished # TODO: check if failed @@ -68,6 +69,16 @@ def update(access_code_id: nil, name: nil, code: nil, starts_at: nil, ends_at: n action_attempt.wait_until_finished action_attempt end + + def pull_backup_access_code(access_code_id) + request_seam_object( + :post, + "/access_codes/pull_backup_access_code", + Seam::AccessCode, + "backup_access_code", + body: {access_code_id: access_code_id} + ) + end end end end diff --git a/lib/seam/resources/access_code.rb b/lib/seam/resources/access_code.rb index c6ebcee..f4804b7 100644 --- a/lib/seam/resources/access_code.rb +++ b/lib/seam/resources/access_code.rb @@ -2,9 +2,9 @@ module Seam class AccessCode < BaseResource - attr_reader :access_code_id, :name, :type, :code + attr_reader :access_code_id, :name, :type, :code, :is_managed, :status, :device_id, :is_scheduled_on_device, :is_waiting_for_code_assignment, :pulled_backup_access_code_id, :is_backup_access_code_available, :is_backup - date_accessor :starts_at, :ends_at + date_accessor :starts_at, :ends_at, :created_at include Seam::ResourceErrorsSupport include Seam::ResourceWarningsSupport diff --git a/spec/clients/access_codes_spec.rb b/spec/clients/access_codes_spec.rb index f2f8526..ecf1588 100644 --- a/spec/clients/access_codes_spec.rb +++ b/spec/clients/access_codes_spec.rb @@ -63,7 +63,7 @@ let(:result) { client.access_codes.get(access_code_id) } - it "returns a Device" do + it "returns an Access Code" do expect(result).to be_a(Seam::AccessCode) end @@ -155,4 +155,23 @@ expect(result).to be_a(Seam::ActionAttempt) end end + + describe "#pull_backup_access_code" do + let(:access_code_id) { "access_code_id_1234" } + let(:access_code_hash) { {access_code_id: access_code_id, is_backup: true} } + + before do + stub_seam_request( + :post, "/access_codes/pull_backup_access_code", {backup_access_code: access_code_hash} + ).with do |req| + req.body.source == {access_code_id: access_code_id}.to_json + end + end + + let(:result) { client.access_codes.pull_backup_access_code(access_code_id) } + + it "returns an backup Access Code" do + expect(result).to be_a(Seam::AccessCode) + end + end end