table_check_api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 38c84286de9979b1d2cb6defe416b239228bf5eb29a0a279376280f89eee5798
4
+ data.tar.gz: 99f0b7df14de21168415eb64d3ac543ee15a561aa742d1adb18d04613e208b74
5
+ SHA512:
6
+ metadata.gz: 455c8c9f0b17450edc7cabda07a6cc47811c7a6997be484ecf12438d3d119153d819222ab507f949c8a89ad7a935fed7d337fdf1ecf1efb9a69fe27149c29c0f
7
+ data.tar.gz: 224a77ba6fcf739adedc680e11247a3b27d9b766bd1c2fffa4474427868a3701250496c8897f9b20e12a2ef328202b39a5ed947bd78b52597277bf0a34f975e8
data/README.md ADDED
@@ -0,0 +1,128 @@
1
+ # TableCheck API Ruby Gem
2
+
3
+ [![Test](https://github.com/Eresto-Development-Team/table_check_api/actions/workflows/test.yml/badge.svg)](https://github.com/Eresto-Development-Team/table_check_api/actions/workflows/test.yml)
4
+
5
+ A Ruby wrapper for the TableCheck POS v1 API.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'table_check_api'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle install
18
+
19
+ ## Configuration
20
+
21
+ Run the generator to create the initializer:
22
+
23
+ $ rails generate table_check_api:install
24
+
25
+ Configure it in `config/initializers/table_check_api.rb`:
26
+
27
+ ```ruby
28
+ TableCheckApi.configure do |config|
29
+ config.base_url = 'https://api.tablecheck.com/api'
30
+ config.key = 'your_api_key_here'
31
+ end
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ ### List shops
37
+
38
+ ```ruby
39
+ response = TableCheckApi::Pos::V1::Shop.list
40
+ shops = response.shops
41
+ puts shops.first['id']
42
+ ```
43
+
44
+ ### List tables for a shop
45
+
46
+ ```ruby
47
+ response = TableCheckApi::Pos::V1::Table.list('shop_123')
48
+ tables = response.tables
49
+ puts tables.first['name']
50
+ ```
51
+
52
+ ### Get table status
53
+
54
+ ```ruby
55
+ request = TableCheckApi::Pos::V1::Table::StatusRequest.new(
56
+ table_id: 'ae5355ca1fd337ed5d6893e2',
57
+ time: '2020-01-29T19:00:00Z'
58
+ )
59
+
60
+ response = TableCheckApi::Pos::V1::Table.status('shop_123', request)
61
+ status = response.table_status
62
+ puts status['status']
63
+ ```
64
+
65
+ ### Create POS journal
66
+
67
+ ```ruby
68
+ request = TableCheckApi::Pos::V1::PosJournals::CreateRequest.new(
69
+ batch_date: '2020-01-01',
70
+ country: 'JP',
71
+ currency: 'JPY',
72
+ receipt_num: 'string',
73
+ pos_orders: [
74
+ {
75
+ id: 'order_1',
76
+ menu_category_name: 'Appetizer',
77
+ menu_item_name: 'Chicken Soup',
78
+ qty: 1,
79
+ unit_price: '1000'
80
+ }
81
+ ]
82
+ )
83
+
84
+ response = TableCheckApi::Pos::V1::PosJournals.create('shop_123', request)
85
+ pos_journal = response.pos_journal
86
+ puts pos_journal['id']
87
+ ```
88
+
89
+ ### Update POS journal
90
+
91
+ ```ruby
92
+ request = TableCheckApi::Pos::V1::PosJournals::UpdateRequest.new(
93
+ receipt_num: 'string',
94
+ pos_payments: [
95
+ {
96
+ id: 'payment_1',
97
+ amt: '2000'
98
+ }
99
+ ]
100
+ )
101
+
102
+ response = TableCheckApi::Pos::V1::PosJournals.update('shop_123', 1, request)
103
+ pos_journal = response.pos_journal
104
+ ```
105
+
106
+ ### Delete POS journal
107
+
108
+ ```ruby
109
+ response = TableCheckApi::Pos::V1::PosJournals.delete('shop_123', 1)
110
+ puts response.body['status']
111
+ ```
112
+
113
+ ### Void POS journal
114
+
115
+ ```ruby
116
+ request = TableCheckApi::Pos::V1::PosJournals::VoidRequest.new(
117
+ receipt_num: '12345',
118
+ void_reason: 'customer_cancellation',
119
+ voided_at: '2026-01-29T19:30:00Z'
120
+ )
121
+
122
+ response = TableCheckApi::Pos::V1::PosJournals.void('shop_123', request)
123
+ pos_journal = response.pos_journal
124
+ ```
125
+
126
+ ## Documentation
127
+
128
+ See the [AGENT.md](AGENT.md) for detailed architecture, endpoints, and usage examples.
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/*_test.rb"]
8
+ end
9
+
10
+ task default: :test
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module TableCheckApi
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ source_root File.expand_path("../../../templates", __FILE__)
9
+
10
+ desc "Creates TableCheck API initializer."
11
+
12
+ def copy_tablecheck_api_initializer
13
+ template "table_check_api.rb", "config/initializers/table_check_api.rb"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ TableCheckApi.configure do |config|
4
+ # ==> TableCheck API Base URL
5
+ # Base URL exclude component and version segments (eg: api.tablecheck.com/api)
6
+ # config.base_url = 'https://api.tablecheck.com/api'
7
+
8
+ # ==> TableCheck API Key
9
+ # Default API Key used when no API Key provided on API call
10
+ # config.key = 'validapikey'
11
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "version"
4
+
5
+ module TableCheckApi
6
+ # Pure Ruby module-level accessors for gem configuration.
7
+ # No ActiveSupport dependency required.
8
+ #
9
+ # Usage:
10
+ # TableCheckApi.configure do |config|
11
+ # config.base_url = 'https://api.tablecheck.com/api'
12
+ # config.key = 'your_api_key'
13
+ # end
14
+ module Configuration
15
+ attr_accessor :base_url, :key
16
+
17
+ def configure
18
+ yield self
19
+ end
20
+ end
21
+
22
+ extend Configuration
23
+
24
+ # Set defaults
25
+ self.base_url = 'https://api.tablecheck.com/api'
26
+ self.key = ''
27
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TableCheckApi
4
+ module Pos
5
+ module V1
6
+ class BaseRequest
7
+ def initialize(attributes = {})
8
+ @attributes = attributes ? attributes.dup : {}
9
+ validate_unknown_keys!
10
+ assign_attributes
11
+ end
12
+
13
+ def to_h
14
+ self.class::ATTRIBUTES.each_with_object({}) do |attribute, payload|
15
+ value = send(attribute)
16
+ next if value.nil? || (value.respond_to?(:empty?) && value.empty?)
17
+
18
+ payload[attribute.to_s] = normalize_payload_value(value)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ attr_reader :attributes
25
+
26
+ def fetch(key)
27
+ attributes.fetch(key.to_s, attributes.fetch(key.to_sym, nil))
28
+ end
29
+
30
+ def assign_attributes
31
+ self.class::ATTRIBUTES.each do |attribute|
32
+ send("#{attribute}=", fetch(attribute))
33
+ end
34
+ end
35
+
36
+ def arrays_as(value, klass)
37
+ Array(value).map { |item| klass.new(item) }
38
+ end
39
+
40
+ def normalize_payload_value(value)
41
+ return value.map(&:to_h) if value.is_a?(Array) && value.first.respond_to?(:to_h)
42
+
43
+ value
44
+ end
45
+
46
+ def validate_unknown_keys!
47
+ return unless defined?(self.class::ATTRIBUTES)
48
+
49
+ unknown_keys = attributes.keys.map(&:to_s) - self.class::ATTRIBUTES.map(&:to_s)
50
+ raise ArgumentError, "Unknown attributes: #{unknown_keys.join(', ')}" if unknown_keys.any?
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module TableCheckApi
6
+ module Pos
7
+ module V1
8
+ class BaseResponse
9
+ def self.from_response(response)
10
+ new(response)
11
+ end
12
+
13
+ def initialize(response)
14
+ raw_body = response.respond_to?(:body) ? response.body : response
15
+ @body = parse_body(raw_body)
16
+ end
17
+
18
+ def raw
19
+ @body
20
+ end
21
+
22
+ alias body raw
23
+
24
+ def errors
25
+ @body['errors'] || []
26
+ end
27
+
28
+ def success?
29
+ errors.empty?
30
+ end
31
+
32
+ private
33
+
34
+ def parse_body(raw_body)
35
+ JSON.parse(raw_body.to_s)
36
+ rescue JSON::ParserError
37
+ {}
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,188 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base_request"
4
+ require_relative "base_response"
5
+
6
+ module TableCheckApi
7
+ module Pos
8
+ module V1
9
+ # Service class for TableCheck POS Journals endpoints.
10
+ #
11
+ # Usage:
12
+ # request = TableCheckApi::Pos::V1::PosJournals::CreateRequest.new(batch_date: '2020-01-01')
13
+ # TableCheckApi::Pos::V1::PosJournals.create(shop_id, request)
14
+ #
15
+ # update_request = TableCheckApi::Pos::V1::PosJournals::UpdateRequest.new(...)
16
+ # TableCheckApi::Pos::V1::PosJournals.update(shop_id, id, update_request)
17
+ #
18
+ # void_request = TableCheckApi::Pos::V1::PosJournals::VoidRequest.new(receipt_num: '12345', void_reason: 'customer_cancellation')
19
+ # TableCheckApi::Pos::V1::PosJournals.void(shop_id, void_request)
20
+ class PosJournals
21
+ RESOURCE_PATH = '/pos/v1/shops'
22
+
23
+ # POST /shops/:shop_id/pos_journals — Create a new POS journal entry.
24
+ def self.create(shop_id, request, headers: {})
25
+ response = TableCheckApi::Client.post(
26
+ "#{RESOURCE_PATH}/#{shop_id}/pos_journals",
27
+ params: build_payload(request),
28
+ headers: headers
29
+ )
30
+
31
+ CreateResponse.from_response(response)
32
+ end
33
+
34
+ # PUT /shops/:shop_id/pos_journals/:id — Update an existing POS journal.
35
+ def self.update(shop_id, id, request, headers: {})
36
+ response = TableCheckApi::Client.put(
37
+ "#{RESOURCE_PATH}/#{shop_id}/pos_journals/#{id}",
38
+ params: build_payload(request),
39
+ headers: headers
40
+ )
41
+
42
+ PosJournalResponse.from_response(response)
43
+ end
44
+
45
+ # DELETE /shops/:shop_id/pos_journals/:id — Delete a POS journal.
46
+ def self.delete(shop_id, id, headers: {})
47
+ response = TableCheckApi::Client.delete(
48
+ "#{RESOURCE_PATH}/#{shop_id}/pos_journals/#{id}",
49
+ headers: headers
50
+ )
51
+
52
+ DeleteResponse.from_response(response)
53
+ end
54
+
55
+ # POST /shops/:shop_id/pos_journals/void — Void a POS journal.
56
+ def self.void(shop_id, request, headers: {})
57
+ response = TableCheckApi::Client.post(
58
+ "#{RESOURCE_PATH}/#{shop_id}/pos_journals/void",
59
+ params: build_payload(request),
60
+ headers: headers
61
+ )
62
+
63
+ PosJournalResponse.from_response(response)
64
+ end
65
+
66
+ def self.build_payload(request)
67
+ raise ArgumentError, 'request must respond to :to_h' unless request.respond_to?(:to_h)
68
+
69
+ request.to_h
70
+ end
71
+
72
+ class CreateRequest < BaseRequest
73
+ ATTRIBUTES = %i[
74
+ batch_date
75
+ change_amt
76
+ country
77
+ coupon_amt
78
+ currency
79
+ customer_name
80
+ discount_amt
81
+ membership_code
82
+ order_at
83
+ original_receipt_num
84
+ pax
85
+ payment_at
86
+ receipt_num
87
+ revenue_center
88
+ room_name
89
+ service_fee_amt
90
+ service_fee_rate
91
+ settle_amt
92
+ site_name
93
+ staff_name
94
+ staff_ref
95
+ subtotal_amt
96
+ system_api_provider
97
+ system_maker
98
+ system_model
99
+ system_version
100
+ table_names
101
+ tax_amt
102
+ tax_included_amt
103
+ tax_rate
104
+ terminal_name
105
+ total_amt
106
+ reservation_ref
107
+ reservation_status
108
+ pos_orders
109
+ pos_payments
110
+ pos_discounts
111
+ ].freeze
112
+
113
+ attr_accessor(*ATTRIBUTES)
114
+
115
+ def pos_orders=(value)
116
+ @pos_orders = arrays_as(value, PosOrder)
117
+ end
118
+
119
+ def pos_payments=(value)
120
+ @pos_payments = arrays_as(value, PosPayment)
121
+ end
122
+
123
+ def pos_discounts=(value)
124
+ @pos_discounts = arrays_as(value, PosDiscount)
125
+ end
126
+ end
127
+
128
+ class UpdateRequest < CreateRequest
129
+ end
130
+
131
+ class VoidRequest < BaseRequest
132
+ ATTRIBUTES = %i[receipt_num void_reason voided_at].freeze
133
+ attr_accessor(*ATTRIBUTES)
134
+ end
135
+
136
+ class PosOrder < BaseRequest
137
+ ATTRIBUTES = %i[
138
+ id
139
+ menu_category_name
140
+ menu_category_ref
141
+ menu_item_name
142
+ menu_item_ref
143
+ order_at
144
+ qty
145
+ ref
146
+ sku
147
+ unit_price
148
+ ].freeze
149
+
150
+ attr_accessor(*ATTRIBUTES)
151
+ end
152
+
153
+ class PosPayment < BaseRequest
154
+ ATTRIBUTES = %i[id amt brand issuer payment_at ref tender].freeze
155
+ attr_accessor(*ATTRIBUTES)
156
+ end
157
+
158
+ class PosDiscount < BaseRequest
159
+ ATTRIBUTES = %i[id amt name order_at ref].freeze
160
+ attr_accessor(*ATTRIBUTES)
161
+ end
162
+
163
+ class CreateResponse < BaseResponse
164
+ def pos_journal
165
+ body['pos_journal']
166
+ end
167
+
168
+ def reservations
169
+ body['reservations'] || []
170
+ end
171
+ end
172
+
173
+ class PosJournalResponse < BaseResponse
174
+ def pos_journal
175
+ body['pos_journal']
176
+ end
177
+
178
+ def reservations
179
+ body['reservations'] || []
180
+ end
181
+ end
182
+
183
+ class DeleteResponse < BaseResponse
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base_response"
4
+
5
+ module TableCheckApi
6
+ module Pos
7
+ module V1
8
+ # Service class for TableCheck Shop endpoints.
9
+ #
10
+ # Usage:
11
+ # TableCheckApi::Pos::V1::Shop.list
12
+ # TableCheckApi::Pos::V1::Shop.list(headers: { 'Authorization' => 'Bearer other_key' })
13
+ class Shop
14
+ RESOURCE_PATH = '/pos/v1/shops'
15
+
16
+ # GET /shops — List accessible restaurant/venue operations.
17
+ def self.list(headers: {})
18
+ response = TableCheckApi::Client.get(RESOURCE_PATH, headers: headers)
19
+ ListResponse.from_response(response)
20
+ end
21
+
22
+ class ListResponse < BaseResponse
23
+ def shops
24
+ body['shops'] || []
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base_request"
4
+ require_relative "base_response"
5
+
6
+ module TableCheckApi
7
+ module Pos
8
+ module V1
9
+ # Service class for TableCheck Table endpoints.
10
+ #
11
+ # Usage:
12
+ # TableCheckApi::Pos::V1::Table.list(shop_id)
13
+ # request = TableCheckApi::Pos::V1::Table::StatusRequest.new(table_id: 'id', time: '2020-01-29T19:00:00Z')
14
+ # TableCheckApi::Pos::V1::Table.status(shop_id, request)
15
+ # TableCheckApi::Pos::V1::Table.status(shop_id, request, headers: { 'Authorization' => 'Bearer other_key' })
16
+ class Table
17
+ RESOURCE_PATH = '/pos/v1/shops'
18
+
19
+ # GET /shops/:shop_id/tables — List all tables for a specific shop.
20
+ def self.list(shop_id, headers: {})
21
+ response = TableCheckApi::Client.get(
22
+ "#{RESOURCE_PATH}/#{shop_id}/tables",
23
+ headers: headers
24
+ )
25
+
26
+ ListResponse.from_response(response)
27
+ end
28
+
29
+ # POST /shops/:shop_id/table_status/show — Show the status of a table.
30
+ def self.status(shop_id, request, headers: {})
31
+ response = TableCheckApi::Client.post(
32
+ "#{RESOURCE_PATH}/#{shop_id}/table_status/show",
33
+ params: build_payload(request),
34
+ headers: headers
35
+ )
36
+
37
+ StatusResponse.from_response(response)
38
+ end
39
+
40
+ def self.build_payload(request)
41
+ raise ArgumentError, 'request must respond to :to_h' unless request.respond_to?(:to_h)
42
+ request.to_h
43
+ end
44
+
45
+ class StatusRequest < BaseRequest
46
+ ATTRIBUTES = %i[table_id time].freeze
47
+ attr_accessor(*ATTRIBUTES)
48
+ end
49
+
50
+ class ListResponse < BaseResponse
51
+ def tables
52
+ body['tables'] || []
53
+ end
54
+ end
55
+
56
+ class StatusResponse < BaseResponse
57
+ def table_status
58
+ body['table_status'] || {}
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,3 @@
1
+ module TableCheckApi
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'httparty'
4
+
5
+ require_relative "table_check_api/version"
6
+ require_relative "table_check_api/configuration"
7
+ require_relative "table_check_api/pos/v1/base_response"
8
+ require_relative "table_check_api/pos/v1/shop"
9
+ require_relative "table_check_api/pos/v1/table"
10
+ require_relative "table_check_api/pos/v1/pos_journals"
11
+
12
+ module TableCheckApi
13
+ # Central HTTP client for all TableCheck API communication.
14
+ # Service classes (Pos::V1::Shop, etc.) delegate to these methods.
15
+ #
16
+ # Headers can be overridden per-request to support per-call key overrides:
17
+ # Client.get('/path', headers: { 'Authorization' => 'Bearer other_key' })
18
+ module Client
19
+ def self.default_headers
20
+ {
21
+ 'User-Agent' => "TableCheckAPIClient-v#{TableCheckApi::VERSION}",
22
+ 'Accept' => 'application/json',
23
+ 'Content-Type' => 'application/json',
24
+ 'Authorization' => "Bearer #{TableCheckApi.key}"
25
+ }.freeze
26
+ end
27
+
28
+ def self.get(path, params: {}, headers: {})
29
+ HTTParty.get(
30
+ "#{TableCheckApi.base_url}#{path}",
31
+ query: params,
32
+ headers: default_headers.dup.merge(headers)
33
+ )
34
+ end
35
+
36
+ def self.post(path, params: {}, headers: {})
37
+ HTTParty.post(
38
+ "#{TableCheckApi.base_url}#{path}",
39
+ body: params.to_json,
40
+ headers: default_headers.dup.merge(headers)
41
+ )
42
+ end
43
+
44
+ def self.put(path, params: {}, headers: {})
45
+ HTTParty.put(
46
+ "#{TableCheckApi.base_url}#{path}",
47
+ body: params.to_json,
48
+ headers: default_headers.dup.merge(headers)
49
+ )
50
+ end
51
+
52
+ def self.delete(path, headers: {})
53
+ HTTParty.delete(
54
+ "#{TableCheckApi.base_url}#{path}",
55
+ headers: default_headers.dup.merge(headers)
56
+ )
57
+ end
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: table_check_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Developer [at] Eresto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.16'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 0.21.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.16'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.21.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: minitest
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '5.0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '13.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '13.0'
61
+ description: TableCheck API wrapper for Ruby
62
+ email:
63
+ - developer@eresto.co.id
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - README.md
69
+ - Rakefile
70
+ - lib/generators/table_check_api/install_generator.rb
71
+ - lib/generators/templates/table_check_api.rb
72
+ - lib/table_check_api.rb
73
+ - lib/table_check_api/configuration.rb
74
+ - lib/table_check_api/pos/v1/base_request.rb
75
+ - lib/table_check_api/pos/v1/base_response.rb
76
+ - lib/table_check_api/pos/v1/pos_journals.rb
77
+ - lib/table_check_api/pos/v1/shop.rb
78
+ - lib/table_check_api/pos/v1/table.rb
79
+ - lib/table_check_api/version.rb
80
+ homepage: https://github.com/Eresto-Development-Team/table_check_api
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubygems_version: 3.0.3.1
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: TableCheck API wrapper for Ruby
103
+ test_files: []