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 ‘Shift` specified by `id`.
- #initialize(client:) ⇒ void constructor
-
#search(request_options: {}, **params) ⇒ Square::Types::SearchShiftsResponse
Returns a paginated list of ‘Shift` records 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_id`
-
‘team_member_id`
-
‘start_at`
An attempt to create a new ‘Shift` can result in a `BAD_REQUEST` error when:
-
The ‘status` of the new `Shift` is `OPEN` and the team member has another
shift with an ‘OPEN` status.
-
The ‘start_at` date is in the future.
-
The ‘start_at` or `end_at` date overlaps another shift for the same team member.
-
The ‘Break` instances are set in the request and a break `start_at`
is before the ‘Shift.start_at`, a break `end_at` is after the `Shift.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 (‘OPEN` or `CLOSED`)
-
Shift start
-
Shift end
-
Workday details
The list can be sorted by:
-
‘START_AT`
-
‘END_AT`
-
‘CREATED_AT`
-
‘UPDATED_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 |