aladtec 0.3.2 → 1.0.0.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fe187974f6bb3afdfee9fa734097e8e9aa644e3d8e6d62eb5c3aeca466e3f84
4
- data.tar.gz: 31d54f6839c062dba60924565d4d42e65b4521d106dc0bcc614d61889b87cf63
3
+ metadata.gz: 8d1a55b6d0b8583820796f25b094c57789988fd579440f73f480a280efc0af25
4
+ data.tar.gz: 429c1814e23f37a940ceeb68f2b725eee25324eeec012da717a82021b8382499
5
5
  SHA512:
6
- metadata.gz: 3e29cd58cef7d9a02caacc815d6db9fb8b5a4e3279c6b4530d4d7ee6851289b759539881aa2660020c00c9fd0085ba411853cabb442a32a048c52e8ddc084af6
7
- data.tar.gz: 6eafb4634d7659680d1b99d305b95ed0e8e9ca46c05885c8a145d837018a88286219b1dc6c5572e97591d1b0d4056a2333648eea69403986cd649c096f662e10
6
+ metadata.gz: f28a90e45decd38cdd6b6fbc538deb738ffaeec8c2c32364eb69c25058e1165c1f85e355e4bcc486887a81568bec172870e9dc6b18cbe506054ee544df39320d
7
+ data.tar.gz: 653004a2caa4814a61092dac892f6da1d36c67cb8135d83e2b0777cc90c7226f0d874139b8114bd9962abf2a5a1e9e5f8646e14d5f2eaefefb796af714780753
data/aladtec.gemspec CHANGED
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 2.0'
25
+ spec.add_development_dependency 'bundler'
26
26
  spec.add_development_dependency 'pry'
27
27
  spec.add_development_dependency 'rake'
28
28
  spec.add_development_dependency 'rspec'
29
29
  spec.add_development_dependency 'webmock'
30
30
 
31
- spec.add_dependency 'dry-configurable', '~> 0.11', '>= 0.11.4'
31
+ spec.add_dependency 'dry-configurable', '>= 1.0.0'
32
32
  spec.add_dependency 'dry-initializer'
33
33
  spec.add_dependency 'http'
34
34
  end
@@ -30,8 +30,8 @@ module Aladtec
30
30
  client_secret: config.client_secret }
31
31
  response = HTTP.post(URI.join(config.endpoint, 'oauth/token'), json: body)
32
32
  body = response.parse
33
- @auth_token = body.fetch('token')
34
- @auth_expiration = Time.at body.fetch('expires')
33
+ @auth_token = body.fetch('access_token')
34
+ @auth_expiration = Time.now + body.fetch('expires_in')
35
35
  response.status.success?
36
36
  end
37
37
 
@@ -47,29 +47,29 @@ module Aladtec
47
47
  ed = options.fetch(:end_time) do
48
48
  raise ArgumentError, 'You must supply a :end_time option!'
49
49
  end
50
- events = request('events', range_start: format_time(bd),
51
- range_stop: format_time(ed))
52
- events.values.flatten.map { |event| Event.new(event) }
50
+ events = request('events', range_start_datetime: format_time(bd),
51
+ range_stop_datetime: format_time(ed))
52
+ events['data'].flat_map { |dates| dates['event_records'] }.map { |event| Event.new(event) }
53
53
  end
54
54
 
55
55
  # Public: Get a list of members
56
56
  #
57
57
  def members
58
- res = request('members', include_attributes: true)
59
- res.map { |member| Member.new(member) }
58
+ res = request('members')
59
+ res['data'].map { |member| Member.new(member) }
60
60
  end
61
61
 
62
62
  # Public: Get a list of schedules
63
63
  #
64
64
  def schedules
65
65
  res = request('schedules')
66
- res.map { |schedule| Schedule.new(schedule) }
66
+ res['data'].map { |schedule| Schedule.new(schedule) }
67
67
  end
68
68
 
69
69
  # Public: Get list of members scheduled now
70
70
  def scheduled_now(options = {})
71
71
  res = request('scheduled-time/members-scheduled-now', options)
72
- res.map { |schedule| ScheduledNow.new(schedule) }
72
+ res['data'].map { |schedule| ScheduledNow.new(schedule) }
73
73
  end
74
74
 
75
75
  # Public: Get list of members scheduled in a time range
@@ -84,9 +84,9 @@ module Aladtec
84
84
  et = options.fetch(:end_time) do
85
85
  raise ArgumentError, 'You must supply an :end_time!'
86
86
  end
87
- scheduled_time = request('scheduled-time', range_start: format_time(bt),
88
- range_stop: format_time(et))
89
- scheduled_time.values.flatten.map { |range| Range.new(range) }
87
+ scheduled_time = request('scheduled-time', range_start_datetime: format_time(bt),
88
+ range_stop_datetime: format_time(et))
89
+ scheduled_time['data'].flat_map { |date| date['time_records'] }.map { |range| Range.new(range) }
90
90
  end
91
91
 
92
92
  private
@@ -104,7 +104,7 @@ module Aladtec
104
104
  end
105
105
 
106
106
  def format_time(time)
107
- (time.is_a?(Time) ? time : Time.parse(time)).strftime('%FT%R')
107
+ (time.is_a?(Time) ? time : Time.parse(time)).strftime('%FT%T%:z')
108
108
  end
109
109
 
110
110
  def auth_expired?
@@ -8,9 +8,10 @@ module Aladtec
8
8
  extend Dry::Initializer
9
9
 
10
10
  option :member_id, as: :id
11
- option :name
11
+ option :first_name
12
+ option :last_name
12
13
  option :is_active
13
- option :attributes, [] do
14
+ option :custom_attributes, [] do
14
15
  option :attribute_id, as: :id
15
16
  option :value
16
17
  end
@@ -18,5 +19,9 @@ module Aladtec
18
19
  def self.new(params)
19
20
  super **params.transform_keys(&:to_sym)
20
21
  end
22
+
23
+ def name
24
+ [first_name, last_name].join(' ')
25
+ end
21
26
  end
22
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aladtec
4
- VERSION = '0.3.2'
4
+ VERSION = '1.0.0.pre'
5
5
  end
data/lib/aladtec.rb CHANGED
@@ -8,7 +8,7 @@ require 'aladtec/client'
8
8
  module Aladtec
9
9
  extend Dry::Configurable
10
10
 
11
- setting :endpoint, default: 'https://secure.aladtec.com/example/api/'
11
+ setting :endpoint, default: 'https://secure.aladtec.com/example/api/v3/'
12
12
  setting :user_agent, default: "Aladtec API Ruby Gem #{Aladtec::VERSION}"
13
13
  setting :client_id
14
14
  setting :client_secret
@@ -8,7 +8,7 @@ describe Aladtec do
8
8
  end
9
9
 
10
10
  describe '.configure' do
11
- Aladtec.settings.each do |key|
11
+ Aladtec.settings.keys.each do |key|
12
12
  it "should set the #{key}" do
13
13
  Aladtec.configure do |config|
14
14
  config.public_send("#{key}=", key)
@@ -3,47 +3,47 @@
3
3
  require_relative File.join('..', 'spec_helper')
4
4
 
5
5
  describe Aladtec::Client do
6
- let(:start_time) { Time.now.strftime('%FT%R') }
7
- let(:end_time) { (Time.now + 60 * 60 * 24).strftime('%FT%R') }
6
+ let(:start_time) { Time.now.strftime('%FT%T%:z') }
7
+ let(:end_time) { (Time.now + 60 * 60 * 24).strftime('%FT%T%:z') }
8
8
  let(:client_id) { 'foo' }
9
9
  let(:client_secret) { 'bar' }
10
+ let(:endpoint) { subject.config.endpoint }
10
11
 
11
12
  before(:each) do
12
13
  subject.configure do |config|
13
14
  config.client_id = client_id
14
15
  config.client_secret = client_secret
15
16
  end
16
- stub_request(:post, 'https://secure.aladtec.com/example/api/oauth/token')
17
- .to_return(body: { token: 'baz', expires: (Time.now + 3600).to_i }.to_json,
17
+ stub_request(:post, URI.join(endpoint, 'oauth/token'))
18
+ .to_return(body: { "access_token": "<string>", "token_type": "Bearer", "expires_in": 3600, "scope": "<string>" }.to_json,
18
19
  headers: { 'Content-Type': 'application/json' })
19
20
  end
20
21
 
21
22
  describe '#members' do
22
23
  let(:members) { subject.members }
23
24
  before(:each) do
24
- stub_request(:get, 'https://secure.aladtec.com/example/api/members')
25
- .with(query: { include_attributes: true })
25
+ stub_request(:get, URI.join(endpoint, 'members'))
26
26
  .to_return(body: fixture('members.json'),
27
27
  headers: { 'Content-Type': 'application/json' })
28
28
  end
29
29
  it 'returns a list of members' do
30
- expect(members.length).to eq(2)
30
+ expect(members.length).to eq(1)
31
31
  end
32
32
 
33
33
  let(:ed) { members.first }
34
34
  it 'returns members with names' do
35
- expect(ed.name).to eq('Ed Mercer')
35
+ expect(ed.name).to eq('John Smith')
36
36
  end
37
37
  it 'returns members with ids' do
38
- expect(ed.id).to eq(42)
38
+ expect(ed.id).to eq(3)
39
39
  end
40
40
  end
41
41
 
42
42
  describe '#events' do
43
43
  let(:events) { subject.events(begin_time: start_time, end_time: end_time) }
44
44
  before(:each) do
45
- stub_request(:get, 'https://secure.aladtec.com/example/api/events')
46
- .with(query: { range_start: start_time, range_stop: end_time })
45
+ stub_request(:get, URI.join(endpoint, 'events'))
46
+ .with(query: { range_start_datetime: start_time, range_stop_datetime: end_time })
47
47
  .to_return(body: fixture('events.json'),
48
48
  headers: { 'Content-Type': 'application/json' })
49
49
  end
@@ -57,7 +57,7 @@ describe Aladtec::Client do
57
57
  end
58
58
 
59
59
  it 'returns events with a description' do
60
- expect(event.description).to eq('open to the community')
60
+ expect(event.description).to eq('Open to the community')
61
61
  end
62
62
 
63
63
  it 'returns events with location' do
@@ -65,18 +65,18 @@ describe Aladtec::Client do
65
65
  end
66
66
 
67
67
  it 'returns events with begin date' do
68
- expect(event.starts_at).to eq(Time.parse('2018-01-16T09:00'))
68
+ expect(event.starts_at).to eq(Time.parse('2018-01-16T09:00-05:00'))
69
69
  end
70
70
 
71
71
  it 'returns events with end date' do
72
- expect(event.ends_at).to eq(Time.parse('2018-01-16T11:00'))
72
+ expect(event.ends_at).to eq(Time.parse('2018-01-16T11:00-05:00'))
73
73
  end
74
74
  end
75
75
 
76
76
  describe '#schedules' do
77
77
  let(:schedules) { subject.schedules }
78
78
  before(:each) do
79
- stub_request(:get, 'https://secure.aladtec.com/example/api/schedules')
79
+ stub_request(:get, URI.join(endpoint, 'schedules'))
80
80
  .to_return(body: fixture('schedules.json'),
81
81
  headers: { 'Content-Type': 'application/json' })
82
82
  end
@@ -97,7 +97,7 @@ describe Aladtec::Client do
97
97
  describe '#scheduled_now' do
98
98
  let(:schedules) { subject.scheduled_now }
99
99
  before(:each) do
100
- stub_request(:get, 'https://secure.aladtec.com/example/api/scheduled-time/members-scheduled-now')
100
+ stub_request(:get, URI.join(endpoint, 'scheduled-time/members-scheduled-now'))
101
101
  .to_return(body: fixture('scheduled_time_now.json'),
102
102
  headers: { 'Content-Type': 'application/json' })
103
103
  end
@@ -121,8 +121,8 @@ describe Aladtec::Client do
121
121
  end_time: end_time)
122
122
  end
123
123
  before(:each) do
124
- stub_request(:get, 'https://secure.aladtec.com/example/api/scheduled-time')
125
- .with(query: { range_start: start_time, range_stop: end_time })
124
+ stub_request(:get, URI.join(endpoint, 'scheduled-time'))
125
+ .with(query: { range_start_datetime: start_time, range_stop_datetime: end_time })
126
126
  .to_return(body: fixture('scheduled_time.json'),
127
127
  headers: { 'Content-Type': 'application/json' })
128
128
  end
@@ -152,7 +152,7 @@ describe Aladtec::Client do
152
152
  end
153
153
  end
154
154
 
155
- let(:valid_keys) { Aladtec.settings }
155
+ let(:valid_keys) { Aladtec.settings.keys }
156
156
  context 'with module configuration' do
157
157
  before(:each) do
158
158
  Aladtec.configure do |config|
@@ -1,55 +1,57 @@
1
1
  {
2
- "2018-01-16": [
2
+ "data": [
3
3
  {
4
- "event_id": 22,
5
- "title": "EMS Monthly Meeting",
6
- "description": "open to the community",
7
- "location": "EMS Station",
8
- "start_datetime": "2018-01-16T09:00",
9
- "stop_datetime": "2018-01-16T11:00",
10
- "start_timestamp": "1547629200",
11
- "stop_timestamp": "1547636400",
12
- "extends_before": true,
13
- "extends_after": false,
14
- "schedules": [
15
- 1,
16
- 2
17
- ],
18
- "public": true
4
+ "daily_split_date": "2018-01-16",
5
+ "event_records": [
6
+ {
7
+ "event_id": 22,
8
+ "title": "EMS Monthly Meeting",
9
+ "description": "Open to the community",
10
+ "location": "EMS Station",
11
+ "start_datetime": "2018-01-16T09:00:00-05:00",
12
+ "stop_datetime": "2018-01-16T11:00:00-05:00",
13
+ "extends_before": true,
14
+ "extends_after": false,
15
+ "schedules": [
16
+ 1,
17
+ 2
18
+ ]
19
+ },
20
+ {
21
+ "event_id": 43,
22
+ "title": "Game Night",
23
+ "description": "Bring some games and have some fun!",
24
+ "location": "Event Hall",
25
+ "start_datetime": "2018-01-16T22:00:00-05:00",
26
+ "stop_datetime": "2018-01-16T00:00:00-05:00",
27
+ "extends_before": false,
28
+ "extends_after": false,
29
+ "schedules": [
30
+ 2
31
+ ]
32
+ }
33
+ ]
19
34
  },
20
35
  {
21
- "event_id": 43,
22
- "title": "Game Night",
23
- "description": "Bring some games and have some fun!",
24
- "location": "Event Hall",
25
- "start_datetime": "2018-01-16T22:00",
26
- "stop_datetime": "2018-01-16T00:00",
27
- "start_timestamp": "1526526000",
28
- "stop_timestamp": "1526533200",
29
- "extends_before": false,
30
- "extends_after": false,
31
- "schedules": [
32
- 2
33
- ],
34
- "public": false
36
+ "daily_split_date": "2018-01-17",
37
+ "event_records": [
38
+ {
39
+ "event_id": 43,
40
+ "title": "EMS Coverage for Football Game",
41
+ "description": "High School Football Game",
42
+ "location": "Ramer Field",
43
+ "start_datetime": "2018-01-17T18:00:00-05:00",
44
+ "stop_datetime": "2018-01-17T04:00:00-05:00",
45
+ "extends_before": false,
46
+ "extends_after": true,
47
+ "schedules": [
48
+ 2
49
+ ]
50
+ }
51
+ ]
35
52
  }
36
53
  ],
37
- "2018-01-17": [
38
- {
39
- "event_id": 43,
40
- "title": "EMS Coverage for Football Game",
41
- "description": "High School Football Game",
42
- "location": "Ramer Field",
43
- "start_datetime": "2018-01-17T18:00",
44
- "stop_datetime": "2018-01-17T04:00",
45
- "start_timestamp": "1547748000",
46
- "stop_timestamp": "1547758800",
47
- "extends_before": false,
48
- "extends_after": true,
49
- "schedules": [
50
- 2
51
- ],
52
- "public": false
53
- }
54
- ]
54
+ "meta": {
55
+ "generated_at_datetime": "2022-01-01T07:42:33-06:00"
56
+ }
55
57
  }
@@ -1,39 +1,43 @@
1
- [
2
- {
3
- "member_id": 42,
4
- "is_active": true,
5
- "name": "Ed Mercer",
6
- "attributes": [
7
- {
8
- "attribute_id": 1,
9
- "value": "Ed"
10
- },
11
- {
12
- "attribute_id": 3,
13
- "value": "Mercer"
14
- },
15
- {
16
- "attribute_id": 19,
17
- "value": [
18
- "Morning",
19
- "Evening"
20
- ]
21
- }
22
- ]
23
- },
24
- {
25
- "member_id": 2,
26
- "is_active": false,
27
- "name": "Joyner Lucas",
28
- "attributes": [
29
- {
30
- "attribute_id": 1,
31
- "value": "Joyner"
32
- },
33
- {
34
- "attribute_id": 3,
35
- "value": "Lucas"
36
- }
37
- ]
1
+ {
2
+ "data": [
3
+ {
4
+ "member_id": 3,
5
+ "is_active": true,
6
+ "first_name": "John",
7
+ "last_name": "Smith",
8
+ "login": "johnsmith",
9
+ "primary_email": "jsmith@company.com",
10
+ "secondary_emails": [
11
+ "jsmith@example.com"
12
+ ],
13
+ "employee_type_id": 7,
14
+ "work_group_id": 5,
15
+ "date_hired": "2019-01-01",
16
+ "schedule_ids": [
17
+ 1,
18
+ 2
19
+ ],
20
+ "position_qualification_ids": [
21
+ 1,
22
+ 2,
23
+ 3
24
+ ],
25
+ "custom_attributes": [
26
+ {
27
+ "attribute_id": 11,
28
+ "value": ""
29
+ },
30
+ {
31
+ "attribute_id": 10,
32
+ "value": [
33
+ 2,
34
+ 3
35
+ ]
36
+ }
37
+ ]
38
+ }
39
+ ],
40
+ "meta": {
41
+ "generated_at_datetime": "2022-01-01T07:42:33-06:00"
38
42
  }
39
- ]
43
+ }
@@ -1,54 +1,65 @@
1
1
  {
2
- "2018-05-18" : [
2
+ "data": [
3
3
  {
4
- "member_id" : 3,
5
- "schedule_id" : 16,
6
- "position_id" : 50,
7
- "time_type": "Regular",
8
- "start_datetime" : "2018-05-18T07:00",
9
- "start_timestamp" : 1526644800,
10
- "stop_datetime" : "2018-05-19T07:00",
11
- "stop_timestamp" : 1526731200,
12
- "extends_before": true,
13
- "extends_after": false
4
+ "daily_split_date": "2018-05-18",
5
+ "time_records": [
6
+ {
7
+ "member_id": 3,
8
+ "schedule_id": 16,
9
+ "position_id": 50,
10
+ "position_qualification_id": 1,
11
+ "time_type_id": 1,
12
+ "time_type": "Regular",
13
+ "start_datetime": "2018-05-18T07:00:00-05:00",
14
+ "stop_datetime": "2018-05-19T07:00:00-05:00",
15
+ "extends_before": true,
16
+ "extends_after": false
17
+ },
18
+ {
19
+ "member_id": 53,
20
+ "schedule_id": 16,
21
+ "position_id": 51,
22
+ "position_qualification_id": 1,
23
+ "time_type_id": 1,
24
+ "time_type": "Regular",
25
+ "start_datetime": "2018-05-18T07:00:00-05:00",
26
+ "stop_datetime": "2018-05-19T07:00:00-05:00",
27
+ "extends_before": false,
28
+ "extends_after": false
29
+ }
30
+ ]
14
31
  },
15
32
  {
16
- "member_id" : 53,
17
- "schedule_id" : 16,
18
- "position_id" : 51,
19
- "time_type": "Regular",
20
- "start_datetime" : "2018-05-18T07:00",
21
- "start_timestamp" : 1526644800,
22
- "stop_datetime" : "2018-05-19T07:00",
23
- "stop_timestamp" : 1526731200,
24
- "extends_before": false,
25
- "extends_after": false
33
+ "daily_split_date": "2018-05-19",
34
+ "time_records": [
35
+ {
36
+ "member_id": 52,
37
+ "schedule_id": 16,
38
+ "position_id": 50,
39
+ "position_qualification_id": 1,
40
+ "time_type_id": 1,
41
+ "time_type": "Regular",
42
+ "start_datetime": "2018-05-19T09:00:00-05:00",
43
+ "stop_datetime": "2018-05-19T17:00:00-05:00",
44
+ "extends_before": false,
45
+ "extends_after": true
46
+ },
47
+ {
48
+ "member_id": 96,
49
+ "schedule_id": 16,
50
+ "position_id": 53,
51
+ "position_qualification_id": 1,
52
+ "time_type_id": 1,
53
+ "time_type": "Regular",
54
+ "start_datetime": "2018-05-19T09:00:00-05:00",
55
+ "stop_datetime": "2018-05-19T17:00:00-05:00",
56
+ "extends_before": false,
57
+ "extends_after": false
58
+ }
59
+ ]
26
60
  }
27
61
  ],
28
- "2018-05-19" : [
29
- {
30
- "member_id" : 52,
31
- "schedule_id" : 16,
32
- "position_id" : 50,
33
- "time_type": "Regular",
34
- "start_datetime" : "2018-05-19T09:00",
35
- "start_timestamp" : 1526738400,
36
- "stop_datetime" : "2018-05-19T17:00",
37
- "stop_timestamp" : 1526767200,
38
- "extends_before": false,
39
- "extends_after": false
40
- },
41
- {
42
- "member_id" : 96,
43
- "schedule_id" : 16,
44
- "position_id" : 53,
45
- "time_type": "Regular",
46
- "start_datetime" : "2018-05-19T09:00",
47
- "start_timestamp" : 1526738400,
48
- "stop_datetime" : "2018-05-19T17:00",
49
- "stop_timestamp" : 1526767200,
50
- "extends_before": false,
51
- "extends_after": false
52
- }
53
- ]
62
+ "meta": {
63
+ "generated_at_datetime": "2022-01-01T07:42:33-06:00"
64
+ }
54
65
  }
@@ -1,24 +1,29 @@
1
- [
2
- {
3
- "schedule_id": 1,
4
- "positions": [
5
- {
6
- "position_id": 1,
7
- "member_id": 42
8
- }
9
- ]
10
- },
11
- {
12
- "schedule_id": 2,
13
- "positions": [
14
- {
15
- "position_id": 3,
16
- "member_id": 27
17
- },
18
- {
19
- "position_id": 4,
20
- "member_id": 22
21
- }
22
- ]
1
+ {
2
+ "data": [
3
+ {
4
+ "schedule_id": 1,
5
+ "positions": [
6
+ {
7
+ "position_id": 1,
8
+ "member_id": 42
9
+ }
10
+ ]
11
+ },
12
+ {
13
+ "schedule_id": 2,
14
+ "positions": [
15
+ {
16
+ "position_id": 3,
17
+ "member_id": 27
18
+ },
19
+ {
20
+ "position_id": 4,
21
+ "member_id": 22
22
+ }
23
+ ]
24
+ }
25
+ ],
26
+ "meta": {
27
+ "generated_at_datetime": "2022-01-01T07:42:33-06:00"
23
28
  }
24
- ]
29
+ }
@@ -1,32 +1,47 @@
1
- [
2
- {
3
- "schedule_id": 1,
4
- "name": "Ambulance 1",
5
- "is_archived": false,
6
- "positions": [
7
- {
8
- "position_id": 1,
9
- "label": "Driver"
10
- },
11
- {
12
- "position_id": 2,
13
- "label": "Firefighter"
14
- }
15
- ]
16
- },
17
- {
18
- "schedule_id": 2,
19
- "name": "Fire Crew 1",
20
- "is_archived": false,
21
- "positions": [
22
- {
23
- "position_id": 3,
24
- "label": "Slot 1"
25
- },
26
- {
27
- "position_id": 4,
28
- "label": "Slot 2"
29
- }
30
- ]
1
+ {
2
+ "data": [
3
+ {
4
+ "schedule_id": 1,
5
+ "name": "Ambulance 1",
6
+ "is_archived": false,
7
+ "order": "1,",
8
+ "positions": [
9
+ {
10
+ "position_id": 1,
11
+ "position_qualification_id": 1,
12
+ "label": "Driver",
13
+ "order": 1
14
+ },
15
+ {
16
+ "position_id": 2,
17
+ "position_qualification_id": 3,
18
+ "label": "EMT",
19
+ "order": 2
20
+ }
21
+ ]
22
+ },
23
+ {
24
+ "schedule_id": 2,
25
+ "name": "Fire Crew 1",
26
+ "is_archived": false,
27
+ "order": 2,
28
+ "positions": [
29
+ {
30
+ "position_id": 3,
31
+ "position_qualification_id": 2,
32
+ "label": "Firefighter",
33
+ "order": 1
34
+ },
35
+ {
36
+ "position_id": 4,
37
+ "position_qualification_id": 2,
38
+ "label": "Firefighter",
39
+ "order": 2
40
+ }
41
+ ]
42
+ }
43
+ ],
44
+ "meta": {
45
+ "generated_at_datetime": "2022-01-01T07:42:33-06:00"
31
46
  }
32
- ]
47
+ }
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aladtec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 1.0.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Dahlke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-06 00:00:00.000000000 Z
11
+ date: 2023-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,22 +84,16 @@ dependencies:
84
84
  name: dry-configurable
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '0.11'
90
87
  - - ">="
91
88
  - !ruby/object:Gem::Version
92
- version: 0.11.4
89
+ version: 1.0.0
93
90
  type: :runtime
94
91
  prerelease: false
95
92
  version_requirements: !ruby/object:Gem::Requirement
96
93
  requirements:
97
- - - "~>"
98
- - !ruby/object:Gem::Version
99
- version: '0.11'
100
94
  - - ">="
101
95
  - !ruby/object:Gem::Version
102
- version: 0.11.4
96
+ version: 1.0.0
103
97
  - !ruby/object:Gem::Dependency
104
98
  name: dry-initializer
105
99
  requirement: !ruby/object:Gem::Requirement
@@ -181,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
175
  - !ruby/object:Gem::Version
182
176
  version: '0'
183
177
  requirements: []
184
- rubygems_version: 3.3.14
178
+ rubygems_version: 3.5.3
185
179
  signing_key:
186
180
  specification_version: 4
187
181
  summary: Client library for the Aladtec API