Class: Square::Labor::Shifts::Client
- Inherits:
-
Object
- Object
- Square::Labor::Shifts::Client
- Defined in:
- lib/square/labor/shifts/client.rb
Instance Method Summary collapse
-
#create(request_options: {}, **params) ⇒ Square::Types::CreateShiftResponse
Creates a new
Shift. -
#delete(request_options: {}, **params) ⇒ Square::Types::DeleteShiftResponse
Deletes a
Shift. -
#get(request_options: {}, **params) ⇒ Square::Types::GetShiftResponse
Returns a single
Shiftspecified byid. - #initialize(client:) ⇒ void constructor
-
#search(request_options: {}, **params) ⇒ Square::Types::SearchShiftsResponse
Returns a paginated list of
Shiftrecords for a business. -
#update(request_options: {}, **params) ⇒ Square::Types::UpdateShiftResponse
Updates an existing
Shift.
Constructor Details
#initialize(client:) ⇒ void
10 11 12 |
# File 'lib/square/labor/shifts/client.rb', line 10 def initialize(client:) @client = client end |
Instance Method Details
#create(request_options: {}, **params) ⇒ Square::Types::CreateShiftResponse
Creates a new Shift.
A Shift represents a complete workday for a single team member.
You must provide the following values in your request to this
endpoint:
location_idteam_member_idstart_at
An attempt to create a new Shift can result in a BAD_REQUEST error when:
- The
statusof the newShiftisOPENand the team member has another shift with anOPENstatus. - The
start_atdate is in the future. - The
start_atorend_atdate overlaps another shift for the same team member. - The
Breakinstances are set in the request and a breakstart_atis before theShift.start_at, a breakend_atis after theShift.end_at, or both.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/square/labor/shifts/client.rb', line 42 def create(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "v2/labor/shifts", body: Square::Labor::Shifts::Types::CreateShiftRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::CreateShiftResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#delete(request_options: {}, **params) ⇒ Square::Types::DeleteShiftResponse
Deletes a Shift.
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/square/labor/shifts/client.rb', line 203 def delete(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "DELETE", path: "v2/labor/shifts/#{params[:id]}", request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::DeleteShiftResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#get(request_options: {}, **params) ⇒ Square::Types::GetShiftResponse
Returns a single Shift specified by id.
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/square/labor/shifts/client.rb', line 124 def get(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "GET", path: "v2/labor/shifts/#{params[:id]}", request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::GetShiftResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#search(request_options: {}, **params) ⇒ Square::Types::SearchShiftsResponse
Returns a paginated list of Shift records for a business.
The list to be returned can be filtered by:
- Location IDs
- Team member IDs
- Shift status (
OPENorCLOSED) - Shift start
- Shift end
- Workday details
The list can be sorted by:
START_ATEND_ATCREATED_ATUPDATED_AT
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/square/labor/shifts/client.rb', line 89 def search(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "v2/labor/shifts/search", body: Square::Labor::Shifts::Types::SearchShiftsRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::SearchShiftsResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#update(request_options: {}, **params) ⇒ Square::Types::UpdateShiftResponse
Updates an existing Shift.
When adding a Break to a Shift, any earlier Break instances in the Shift have
the end_at property set to a valid RFC-3339 datetime string.
When closing a Shift, all Break instances in the Shift must be complete with end_at
set on each Break.
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/square/labor/shifts/client.rb', line 164 def update(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request_data = Square::Labor::Shifts::Types::UpdateShiftRequest.new(params).to_h non_body_param_names = ["id"] body = request_data.except(*non_body_param_names) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "PUT", path: "v2/labor/shifts/#{params[:id]}", body: body, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::UpdateShiftResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |