square-ruby 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/.travis.yml +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +73 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/square.rb +206 -0
- data/lib/square/api_operations/create.rb +30 -0
- data/lib/square/api_operations/delete.rb +24 -0
- data/lib/square/api_operations/list.rb +21 -0
- data/lib/square/api_operations/retrieve.rb +21 -0
- data/lib/square/api_operations/update.rb +25 -0
- data/lib/square/api_resource.rb +55 -0
- data/lib/square/bank_accounts.rb +10 -0
- data/lib/square/category.rb +12 -0
- data/lib/square/data_type.rb +7 -0
- data/lib/square/data_types/bank_account.rb +32 -0
- data/lib/square/data_types/category.rb +12 -0
- data/lib/square/data_types/coordinates.rb +12 -0
- data/lib/square/data_types/device.rb +12 -0
- data/lib/square/data_types/discount.rb +36 -0
- data/lib/square/data_types/fee.rb +39 -0
- data/lib/square/data_types/global_address.rb +67 -0
- data/lib/square/data_types/inventory_entry.rb +12 -0
- data/lib/square/data_types/item.rb +79 -0
- data/lib/square/data_types/item_image.rb +12 -0
- data/lib/square/data_types/item_variation.rb +49 -0
- data/lib/square/data_types/merchant.rb +61 -0
- data/lib/square/data_types/merchant_location_details.rb +11 -0
- data/lib/square/data_types/modifier_list.rb +19 -0
- data/lib/square/data_types/modifier_option.rb +30 -0
- data/lib/square/data_types/money.rb +40 -0
- data/lib/square/data_types/payment.rb +87 -0
- data/lib/square/data_types/payment_discount.rb +17 -0
- data/lib/square/data_types/payment_item_detail.rb +18 -0
- data/lib/square/data_types/payment_itemization.rb +53 -0
- data/lib/square/data_types/payment_modifier.rb +16 -0
- data/lib/square/data_types/payment_tax.rb +23 -0
- data/lib/square/data_types/phone_number.rb +13 -0
- data/lib/square/data_types/refund.rb +31 -0
- data/lib/square/data_types/settlement.rb +28 -0
- data/lib/square/data_types/settlement_entry.rb +21 -0
- data/lib/square/data_types/tender.rb +50 -0
- data/lib/square/discount.rb +12 -0
- data/lib/square/fee.rb +49 -0
- data/lib/square/inventory.rb +26 -0
- data/lib/square/item.rb +40 -0
- data/lib/square/list_response.rb +79 -0
- data/lib/square/merchant.rb +13 -0
- data/lib/square/payment.rb +10 -0
- data/lib/square/refund.rb +10 -0
- data/lib/square/settlement.rb +10 -0
- data/lib/square/variation.rb +12 -0
- data/lib/square/version.rb +3 -0
- data/lib/square/webhook.rb +10 -0
- data/square-ruby.gemspec +31 -0
- metadata +219 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module Square
|
2
|
+
module APIOperations
|
3
|
+
module Retrieve
|
4
|
+
# Retrieve a resource.
|
5
|
+
#
|
6
|
+
# @param id [String] ID of the resource to retrieve.
|
7
|
+
# @param params [Hash] Hash of query params. Optional.
|
8
|
+
#
|
9
|
+
# @return [Square::DataType]
|
10
|
+
def retrieve(id, params = {})
|
11
|
+
response = Square.make_request(
|
12
|
+
endpoint: self.generate_endpoint_url(id),
|
13
|
+
params: params
|
14
|
+
)
|
15
|
+
|
16
|
+
response = Square.parse_response(response)
|
17
|
+
@data_type.new(response)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Square
|
2
|
+
module APIOperations
|
3
|
+
module Update
|
4
|
+
# Update a resource.
|
5
|
+
#
|
6
|
+
# @param id [String] ID of the resource to update.
|
7
|
+
# @param parent_id [String] ID of the 'parent' to update. Optional.
|
8
|
+
# @param params [Hash] Payload. Optional.
|
9
|
+
#
|
10
|
+
# @return [Square::DataType]
|
11
|
+
def update(*args, params)
|
12
|
+
id, parent_id = args
|
13
|
+
|
14
|
+
response = Square.make_request(
|
15
|
+
method: 'PUT',
|
16
|
+
endpoint: self.generate_endpoint_url(id, parent_id),
|
17
|
+
payload: params
|
18
|
+
)
|
19
|
+
|
20
|
+
response = Square.parse_response(response)
|
21
|
+
@data_type.new(response)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Square
|
2
|
+
class APIResource
|
3
|
+
# Set a data_type property for this resource.
|
4
|
+
#
|
5
|
+
# @param data_type [Square::DataType] Data type. Optional.
|
6
|
+
#
|
7
|
+
# @return [Square::DataType]
|
8
|
+
def self.data_type(data_type = nil)
|
9
|
+
if !data_type.nil?
|
10
|
+
@data_type = data_type
|
11
|
+
end
|
12
|
+
|
13
|
+
@data_type
|
14
|
+
end
|
15
|
+
|
16
|
+
# Set an endpoint base for this resource.
|
17
|
+
#
|
18
|
+
# @param base [String] API endpoint. Optional.
|
19
|
+
#
|
20
|
+
# @return [String]
|
21
|
+
def self.endpoint_base(base = nil)
|
22
|
+
if !base.nil?
|
23
|
+
@endpoint_base = base
|
24
|
+
end
|
25
|
+
|
26
|
+
@endpoint_base
|
27
|
+
end
|
28
|
+
|
29
|
+
# Set a property for nested resources.
|
30
|
+
#
|
31
|
+
# @param parent [String] API 'parent' endpoint. Optional.
|
32
|
+
#
|
33
|
+
# @return [String]
|
34
|
+
def self.nested_under(parent = nil)
|
35
|
+
if !parent.nil?
|
36
|
+
@nested_under = parent
|
37
|
+
end
|
38
|
+
|
39
|
+
@nested_under
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# Generate an endpoint based on provided arguments.
|
45
|
+
#
|
46
|
+
# @param id [String] Resource ID. Optional.
|
47
|
+
# @param parent_id [String] ID of the 'parent' resource. Optional.
|
48
|
+
#
|
49
|
+
# @return [String] Endpoint URL.
|
50
|
+
def self.generate_endpoint_url(*args)
|
51
|
+
id, parent_id = args
|
52
|
+
File.join([@nested_under, parent_id, @endpoint_base, id].compact)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Square
|
2
|
+
# https://docs.connect.squareup.com/api/connect/v1/#navsection-bankaccounts
|
3
|
+
class BankAccount < APIResource
|
4
|
+
extend Square::APIOperations::List
|
5
|
+
extend Square::APIOperations::Retrieve
|
6
|
+
|
7
|
+
endpoint_base 'bank-accounts'
|
8
|
+
data_type Square::DataTypes::BankAccount
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Square
|
2
|
+
# https://docs.connect.squareup.com/api/connect/v1/#navsection-categories
|
3
|
+
class Category < APIResource
|
4
|
+
extend Square::APIOperations::List
|
5
|
+
extend Square::APIOperations::Create
|
6
|
+
extend Square::APIOperations::Update
|
7
|
+
extend Square::APIOperations::Delete
|
8
|
+
|
9
|
+
endpoint_base 'categories'
|
10
|
+
data_type Square::DataTypes::Category
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatypes
|
4
|
+
class BankAccount < Square::DataType
|
5
|
+
# The bank account's Square-issued ID.
|
6
|
+
property :id
|
7
|
+
|
8
|
+
# The Square-issued ID of the merchant associated with the bank account.
|
9
|
+
property :merchant_id
|
10
|
+
|
11
|
+
# The name of the bank that manages the account.
|
12
|
+
property :bank_name
|
13
|
+
|
14
|
+
# The name associated with the bank account.
|
15
|
+
property :name
|
16
|
+
|
17
|
+
# The bank account's type (for example, savings or checking).
|
18
|
+
property :type # BankAccount.Type
|
19
|
+
|
20
|
+
# The bank account's routing number.
|
21
|
+
property :routing_number
|
22
|
+
|
23
|
+
# The last few digits of the bank account number.
|
24
|
+
property :account_number_suffix
|
25
|
+
|
26
|
+
# The currency code of the currency associated with the bank account,
|
27
|
+
# in ISO 4217 format. For example, the currency code for US dollars
|
28
|
+
# is USD.
|
29
|
+
property :currency_code
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-coordinates
|
4
|
+
class Coordinates < Square::DataType
|
5
|
+
# The latitude coordinate, in degrees.
|
6
|
+
property :latitude # number
|
7
|
+
|
8
|
+
# The longitude coordinate, in degrees.
|
9
|
+
property :longitude # number
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-device
|
4
|
+
class Device < DataType
|
5
|
+
# The device's merchant-specified name.
|
6
|
+
property :name
|
7
|
+
|
8
|
+
# The device's Square-issued ID.
|
9
|
+
property :id
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-discount
|
4
|
+
class Discount < Square::DataType
|
5
|
+
# The discount's unique ID.
|
6
|
+
property :id
|
7
|
+
|
8
|
+
# The discount's name.
|
9
|
+
property :name
|
10
|
+
|
11
|
+
# The rate of the discount, as a string representation of a decimal
|
12
|
+
# number. A value of 0.07 corresponds to a rate of 7%. This rate is
|
13
|
+
# 0 if discount_type is VARIABLE_PERCENTAGE.
|
14
|
+
# This field is not included for amount-based discounts.
|
15
|
+
property :rate
|
16
|
+
|
17
|
+
# The amount of the discount. This amount is 0 if discount_type is
|
18
|
+
# VARIABLE_AMOUNT.
|
19
|
+
# This field is not included for rate-based discounts.
|
20
|
+
property :amount_money, coerce: Square::DataTypes::Money
|
21
|
+
|
22
|
+
# Indicates whether the discount is a FIXED value or entered at the
|
23
|
+
# time of sale.
|
24
|
+
property :discount_type # Discount.Type
|
25
|
+
|
26
|
+
# Indicates whether a mobile staff member needs to enter their PIN to
|
27
|
+
# apply the discount to a payment.
|
28
|
+
property :pin_required # boolean
|
29
|
+
|
30
|
+
# The color of the discount's display label in Square Register, if not
|
31
|
+
# the default color.
|
32
|
+
# The default color is 9da2a6.
|
33
|
+
property :color # Item.Color
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-fee
|
4
|
+
class Fee < Square::DataType
|
5
|
+
# The fee's unique ID.
|
6
|
+
property :id
|
7
|
+
|
8
|
+
# The fee's name.
|
9
|
+
property :name
|
10
|
+
|
11
|
+
# The rate of the fee, as a string representation of a decimal number.
|
12
|
+
# A value of 0.07 corresponds to a rate of 7%.
|
13
|
+
property :rate, coerce: Float
|
14
|
+
|
15
|
+
# Forthcoming.
|
16
|
+
property :calculation_phase # Fee.CalculationPhase
|
17
|
+
|
18
|
+
# The type of adjustment the fee applies to a payment. Currently,
|
19
|
+
# this value is TAX for all fees.
|
20
|
+
property :adjustment_type # Fee.AdjustmentType
|
21
|
+
|
22
|
+
# If true, the fee applies to custom amounts entered into Square
|
23
|
+
# Register that are not associated with a particular item.
|
24
|
+
property :applies_to_custom_amounts # boolean
|
25
|
+
|
26
|
+
# If true, the fee is applied to all appropriate items. If false,
|
27
|
+
# the fee is not applied at all.
|
28
|
+
property :enabled # boolean
|
29
|
+
|
30
|
+
# Whether the fee is ADDITIVE or INCLUSIVE.
|
31
|
+
property :inclusion_type # Fee.InclusionType
|
32
|
+
|
33
|
+
# In countries with multiple classifications for sales taxes, indicates
|
34
|
+
# which classification the fee falls under. Currently relevant only
|
35
|
+
# to Canadian merchants.
|
36
|
+
property :type # Fee.Type
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-globaladdress
|
4
|
+
class GlobalAddress < Square::DataType
|
5
|
+
# The first line of the address.
|
6
|
+
# Fields that start with address_line provide the address's most
|
7
|
+
# specific details, like street number, street name, and building name.
|
8
|
+
# They do not provide less specific details like city, state/province,
|
9
|
+
# or country (these details are provided in other fields).
|
10
|
+
property :address_line_1
|
11
|
+
|
12
|
+
# The second line of the address, if any.
|
13
|
+
property :address_line_2
|
14
|
+
|
15
|
+
# The third line of the address, if any.
|
16
|
+
property :address_line_3
|
17
|
+
|
18
|
+
# The fourth line of the address, if any.
|
19
|
+
property :address_line_4
|
20
|
+
|
21
|
+
# The fifth line of the address, if any.
|
22
|
+
property :address_line_5
|
23
|
+
|
24
|
+
# The city or town of the address.
|
25
|
+
property :locality
|
26
|
+
|
27
|
+
# A civil region within the address's locality, if any.
|
28
|
+
property :sublocality
|
29
|
+
|
30
|
+
# A civil region within the address's sublocality, if any.
|
31
|
+
property :sublocality_1
|
32
|
+
|
33
|
+
# A civil region within the address's sublocality_1, if any.
|
34
|
+
property :sublocality_2
|
35
|
+
|
36
|
+
# A civil region within the address's sublocality_2, if any.
|
37
|
+
property :sublocality_3
|
38
|
+
|
39
|
+
# A civil region within the address's sublocality_3, if any.
|
40
|
+
property :sublocality_4
|
41
|
+
|
42
|
+
# A civil region within the address's sublocality_4, if any.
|
43
|
+
property :sublocality_5
|
44
|
+
|
45
|
+
# A civil entity within the address's country. In the United States,
|
46
|
+
# this is the state.
|
47
|
+
property :administrative_district_level_1
|
48
|
+
|
49
|
+
# A civil entity within the address's administrative_district_level_1,
|
50
|
+
# if any. In the United States, this is the county.
|
51
|
+
property :administrative_district_level_2
|
52
|
+
|
53
|
+
# A civil entity within the address's administrative_district_level_2,
|
54
|
+
# if any.
|
55
|
+
property :administrative_district_level_3
|
56
|
+
|
57
|
+
# The address's postal code.
|
58
|
+
property :postal_code
|
59
|
+
|
60
|
+
# The address's country, in ISO 3166-1-alpha-2 format.
|
61
|
+
property :country_code
|
62
|
+
|
63
|
+
# The coordinates of the address.
|
64
|
+
property :address_coordinates, coerce: Square::DataTypes::Coordinates
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-inventoryentry
|
4
|
+
class InventoryEntry < Square::DataType
|
5
|
+
# The variation that the entry corresponds to.
|
6
|
+
property :variation_id
|
7
|
+
|
8
|
+
# The current available quantity of the item variation.
|
9
|
+
property :quantity_on_hand # number
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Square
|
2
|
+
module DataTypes
|
3
|
+
# https://docs.connect.squareup.com/api/connect/v1/#datatype-item
|
4
|
+
class Item < Square::DataType
|
5
|
+
# The item's unique ID.
|
6
|
+
property :id
|
7
|
+
|
8
|
+
# The item's name.
|
9
|
+
property :name
|
10
|
+
|
11
|
+
# The item's description, if any.
|
12
|
+
property :description
|
13
|
+
|
14
|
+
# The item's type. This value is NORMAL for almost all items.
|
15
|
+
property :type # Item.Type
|
16
|
+
|
17
|
+
# The text of the item's display label in Square Register. This value
|
18
|
+
# is present only if an abbreviation other than the default has been set.
|
19
|
+
property :abbreviation
|
20
|
+
|
21
|
+
# The color of the item's display label in Square Register, if not the
|
22
|
+
# default color.
|
23
|
+
# The default color is 9da2a6.
|
24
|
+
property :color # Item.Color
|
25
|
+
|
26
|
+
# Indicates whether the item is viewable in the merchant's online
|
27
|
+
# store (PUBLIC) or PRIVATE.
|
28
|
+
property :visibility # Item.Visibility
|
29
|
+
|
30
|
+
# If true, the item is available for purchase from the merchant's
|
31
|
+
# online store.
|
32
|
+
property :available_online # boolean
|
33
|
+
|
34
|
+
# The item's master image, if any.
|
35
|
+
property :master_image, coerce: Square::DataTypes::ItemImage
|
36
|
+
|
37
|
+
# The category the item belongs to, if any.
|
38
|
+
property :category, coerce: Square::DataTypes::Category
|
39
|
+
|
40
|
+
# The item's variations.
|
41
|
+
property :variations, coerce: Array[Square::DataTypes::ItemVariation]
|
42
|
+
|
43
|
+
# The modifier lists that apply to the item, if any.
|
44
|
+
property :modifier_lists, coerce: Array[Square::DataTypes::ModifierList]
|
45
|
+
|
46
|
+
# The fees that apply to the item, if any.
|
47
|
+
property :fees, coerce: Array[Square::DataTypes::Fee]
|
48
|
+
|
49
|
+
# Deprecated. This field is not used.
|
50
|
+
property :taxable, required: false # boolean
|
51
|
+
|
52
|
+
# undocumented
|
53
|
+
property :available_for_pickup
|
54
|
+
property :images
|
55
|
+
|
56
|
+
# Get this item's variation. There should only ever be one.
|
57
|
+
#
|
58
|
+
# @return [Square::DataTypes::ItemVariation] First variation.
|
59
|
+
def variation
|
60
|
+
self.variations.first
|
61
|
+
end
|
62
|
+
|
63
|
+
def remove_fees(params = {})
|
64
|
+
fees.each do |fee|
|
65
|
+
remove_fee(fee.id, params)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def remove_fee(fee_id, params = {})
|
70
|
+
Square::Fee.remove(self.id, fee_id, params)
|
71
|
+
end
|
72
|
+
|
73
|
+
def apply_fee(fee_id, params = {})
|
74
|
+
Square::Fee.apply(self.id, fee_id, params)
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|