flutter 0.1.0.pre.2

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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.overcommit.yml +8 -0
  3. data/.rubocop.yml +10 -0
  4. data/CHANGELOG.md +6 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/Gemfile +35 -0
  7. data/Guardfile +9 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +134 -0
  10. data/Rakefile +24 -0
  11. data/TODO.md +30 -0
  12. data/integration_tests/minitest/grape_app/.gitignore +67 -0
  13. data/integration_tests/minitest/grape_app/.ruby-version +1 -0
  14. data/integration_tests/minitest/grape_app/Gemfile +17 -0
  15. data/integration_tests/minitest/grape_app/Gemfile.lock +89 -0
  16. data/integration_tests/minitest/grape_app/README.md +2 -0
  17. data/integration_tests/minitest/grape_app/Rakefile +9 -0
  18. data/integration_tests/minitest/grape_app/api/api.rb +34 -0
  19. data/integration_tests/minitest/grape_app/api/routes/api_helpers.rb +12 -0
  20. data/integration_tests/minitest/grape_app/api/routes/change_request/api.rb +69 -0
  21. data/integration_tests/minitest/grape_app/api/routes/change_request/response_entity.rb +18 -0
  22. data/integration_tests/minitest/grape_app/api/routes/event/api.rb +121 -0
  23. data/integration_tests/minitest/grape_app/api/routes/event/response_entity.rb +41 -0
  24. data/integration_tests/minitest/grape_app/api/routes/project/api.rb +59 -0
  25. data/integration_tests/minitest/grape_app/api/routes/project/response_entity.rb +13 -0
  26. data/integration_tests/minitest/grape_app/api/routes/property/api.rb +78 -0
  27. data/integration_tests/minitest/grape_app/api/routes/property/response_entity.rb +31 -0
  28. data/integration_tests/minitest/grape_app/api/routes/trackable_object/api.rb +64 -0
  29. data/integration_tests/minitest/grape_app/api/routes/trackable_object/response_entity.rb +24 -0
  30. data/integration_tests/minitest/grape_app/api/routes/tracking_spec/api.rb +88 -0
  31. data/integration_tests/minitest/grape_app/api/routes/tracking_spec/response_entity.rb +17 -0
  32. data/integration_tests/minitest/grape_app/api/routes/tracking_spec/spec_response.rb +19 -0
  33. data/integration_tests/minitest/grape_app/api/routes/user/api.rb +22 -0
  34. data/integration_tests/minitest/grape_app/api/routes/user/response_entity.rb +12 -0
  35. data/integration_tests/minitest/grape_app/app/app.rb +30 -0
  36. data/integration_tests/minitest/grape_app/app/change_request/endpoint.rb +24 -0
  37. data/integration_tests/minitest/grape_app/app/change_request/generate_system_changes.rb +25 -0
  38. data/integration_tests/minitest/grape_app/app/change_request/service.rb +79 -0
  39. data/integration_tests/minitest/grape_app/app/event/endpoint.rb +78 -0
  40. data/integration_tests/minitest/grape_app/app/event/service.rb +68 -0
  41. data/integration_tests/minitest/grape_app/app/event/validator.rb +108 -0
  42. data/integration_tests/minitest/grape_app/app/project/endpoint.rb +24 -0
  43. data/integration_tests/minitest/grape_app/app/project/service.rb +42 -0
  44. data/integration_tests/minitest/grape_app/app/property/endpoint.rb +39 -0
  45. data/integration_tests/minitest/grape_app/app/property/service.rb +56 -0
  46. data/integration_tests/minitest/grape_app/app/trackable_object/endpoint.rb +38 -0
  47. data/integration_tests/minitest/grape_app/app/trackable_object/service.rb +49 -0
  48. data/integration_tests/minitest/grape_app/app/trackable_object/validator.rb +40 -0
  49. data/integration_tests/minitest/grape_app/app/tracking_spec/endpoint.rb +58 -0
  50. data/integration_tests/minitest/grape_app/app/tracking_spec/expand_tracking_spec_events.rb +91 -0
  51. data/integration_tests/minitest/grape_app/app/tracking_spec/service.rb +51 -0
  52. data/integration_tests/minitest/grape_app/app/tracking_spec/validator.rb +61 -0
  53. data/integration_tests/minitest/grape_app/app/utils/errors/api_exceptions.rb +10 -0
  54. data/integration_tests/minitest/grape_app/app/utils/errors/service_exceptions.rb +12 -0
  55. data/integration_tests/minitest/grape_app/app/versioned_entity/entity.rb +110 -0
  56. data/integration_tests/minitest/grape_app/app/versioned_entity/service.rb +47 -0
  57. data/integration_tests/minitest/grape_app/app/versioned_entity/validator.rb +61 -0
  58. data/integration_tests/minitest/grape_app/app/versioned_entity_snapshot/entity.rb +32 -0
  59. data/integration_tests/minitest/grape_app/config/boot.rb +9 -0
  60. data/integration_tests/minitest/grape_app/config.ru +3 -0
  61. data/integration_tests/minitest/grape_app/db/proto/change_request.rb +10 -0
  62. data/integration_tests/minitest/grape_app/db/proto/common/doc.rb +86 -0
  63. data/integration_tests/minitest/grape_app/db/proto/event.rb +10 -0
  64. data/integration_tests/minitest/grape_app/db/proto/event_snapshot.rb +10 -0
  65. data/integration_tests/minitest/grape_app/db/proto/project.rb +21 -0
  66. data/integration_tests/minitest/grape_app/db/proto/property.rb +10 -0
  67. data/integration_tests/minitest/grape_app/db/proto/property_snapshot.rb +10 -0
  68. data/integration_tests/minitest/grape_app/db/proto/trackable_object.rb +10 -0
  69. data/integration_tests/minitest/grape_app/db/proto/trackable_object_snapshot.rb +10 -0
  70. data/integration_tests/minitest/grape_app/db/proto/tracking_spec.rb +10 -0
  71. data/integration_tests/minitest/grape_app/test/api/functional/event_test.rb +186 -0
  72. data/integration_tests/minitest/grape_app/test/api/functional/property_test.rb +197 -0
  73. data/integration_tests/minitest/grape_app/test/api/functional/trackable_object_test.rb +134 -0
  74. data/integration_tests/minitest/grape_app/test/api/functional/tracking_spec_test.rb +56 -0
  75. data/integration_tests/minitest/grape_app/test/api/functional/user_test.rb +24 -0
  76. data/integration_tests/minitest/grape_app/test/api/functional/versioned_entity_helper.rb +157 -0
  77. data/integration_tests/minitest/grape_app/test/fixtures/change_requests.rb +83 -0
  78. data/integration_tests/minitest/grape_app/test/fixtures/event_snapshots.rb +105 -0
  79. data/integration_tests/minitest/grape_app/test/fixtures/events.rb +58 -0
  80. data/integration_tests/minitest/grape_app/test/fixtures/properties.rb +66 -0
  81. data/integration_tests/minitest/grape_app/test/fixtures/property_snapshots.rb +124 -0
  82. data/integration_tests/minitest/grape_app/test/fixtures/sample_tracking_spec.json +125 -0
  83. data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects.rb +58 -0
  84. data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects_snapshots.rb +61 -0
  85. data/integration_tests/minitest/grape_app/test/fixtures/tracking_specs.rb +22 -0
  86. data/integration_tests/minitest/grape_app/test/test_helper.rb +15 -0
  87. data/lib/flutter/config.rb +24 -0
  88. data/lib/flutter/minitest.rb +83 -0
  89. data/lib/flutter/parser.rb +82 -0
  90. data/lib/flutter/persistence.rb +152 -0
  91. data/lib/flutter/rspec.rb +66 -0
  92. data/lib/flutter/tracker.rb +133 -0
  93. data/lib/flutter/version.rb +5 -0
  94. data/lib/flutter.rb +12 -0
  95. data/lib/minitest/flutter_plugin.rb +16 -0
  96. data/sig/flutter.rbs +4 -0
  97. metadata +187 -0
@@ -0,0 +1,69 @@
1
+ require_relative '../api_helpers'
2
+ require_relative './response_entity'
3
+ require_relative '../tracking_spec/spec_response'
4
+ require_relative '../../../app/change_request/endpoint'
5
+
6
+ module Skee::API::Routes::ChangeRequest
7
+ class API < Grape::API
8
+ helpers Skee::API::Routes::APIHelpers
9
+
10
+ resource :change_requests do
11
+ desc 'List all Change Requests.'
12
+ get do
13
+ change_requests = Skee::App::ChangeRequest::Endpoint.list
14
+ present change_requests,
15
+ with: Skee::API::Routes::ChangeRequest::ResponseEntity
16
+ end
17
+
18
+ desc 'Retrieve a Change Request.'
19
+ params do
20
+ requires :id, type: String, desc: 'Change Request ID.'
21
+ end
22
+ get ':id' do
23
+ change_request = Skee::App::ChangeRequest::Endpoint.get(whitelisted_params)
24
+ present change_request,
25
+ with: Skee::API::Routes::ChangeRequest::ResponseEntity
26
+ end
27
+
28
+ desc 'Generate a full Tracking Spec with the changes in the Change Request.'
29
+ params do
30
+ requires :id, type: String, desc: 'Change Request ID.'
31
+ end
32
+ get ':id/full_spec' do
33
+ full_spec = Skee::App::ChangeRequest::Endpoint.full_spec(whitelisted_params)
34
+ present full_spec,
35
+ with: Skee::API::Routes::TrackingSpec::SpecResponse
36
+ end
37
+
38
+ desc 'Create a Change Request.'
39
+ params do
40
+ requires :name, type: String, desc: 'Change Request name.'
41
+ end
42
+ post do
43
+ new_change_request = Skee::App::ChangeRequest::Endpoint.create(whitelisted_params)
44
+ present new_change_request,
45
+ with: Skee::API::Routes::ChangeRequest::ResponseEntity
46
+ end
47
+
48
+ desc 'Update a Change Request.'
49
+ params do
50
+ requires :id, type: String, desc: 'Change Request ID.'
51
+ optional :name, type: String, desc: 'Change Request name.'
52
+ end
53
+ post ':id' do
54
+ updated_change_request = Skee::App::ChangeRequest::Endpoint.update(whitelisted_params)
55
+ present updated_change_request,
56
+ with: Skee::API::Routes::ChangeRequest::ResponseEntity
57
+ end
58
+
59
+ desc 'Delete a Change Request.'
60
+ params do
61
+ requires :id, type: String, desc: 'Change Request ID.'
62
+ end
63
+ delete ':id' do
64
+ Skee::App::ChangeRequest::Endpoint.delete(whitelisted_params)
65
+ status 200
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,18 @@
1
+ module Skee
2
+ module API
3
+ module Routes
4
+ module ChangeRequest
5
+ class ResponseEntity < Grape::Entity
6
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a ChangeRequest.' }
7
+ expose :identifier, documentation: { type: 'String', desc: 'Identifier of a ChangeRequest.' }
8
+ expose :project_id, documentation: { type: 'String', desc: 'Project in which ChangeRequest created.' }
9
+ expose :base_tracking_spec_id, documentation: { type: 'String', desc: 'ID of the Tracking Spec on which changes are requested.' }
10
+ expose :status, documentation: { type: 'String', desc: 'Status of a ChangeRequest.' }
11
+ expose :name, documentation: { type: 'String', desc: 'Name of the ChangeRequest.' }
12
+ expose :description, documentation: { type: 'String', desc: 'Description of the ChangeRequest.' }
13
+ expose :change_set, documentation: { type: 'String', desc: 'Dictionary with list of IDs of updated and new entities.' }
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,121 @@
1
+ require_relative '../api_helpers'
2
+ require_relative './response_entity'
3
+ require_relative '../../../app/event/endpoint'
4
+ module Skee::API::Routes::Event
5
+ class API < Grape::API
6
+ helpers Skee::API::Routes::APIHelpers
7
+
8
+ resource :events do
9
+ desc 'List all events.'
10
+ get do
11
+ events = Skee::App::Event::Endpoint.list
12
+ present events,
13
+ with: Skee::API::Routes::Event::ResponseEntity
14
+ end
15
+
16
+ desc 'Retrieve an event.'
17
+ params do
18
+ requires :id, type: String, desc: 'Event ID.'
19
+ optional :change_request_id, type: String, desc: 'Change request ID for the request.'
20
+ end
21
+ get ':id' do
22
+ event = Skee::App::Event::Endpoint.get(whitelisted_params)
23
+ present event,
24
+ with: Skee::API::Routes::Event::ResponseEntity
25
+ end
26
+
27
+ desc 'Create an event.'
28
+ params do
29
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
30
+ requires :name, type: String, desc: 'Event name.'
31
+ optional :description, type: String, desc: 'Description of the event.'
32
+ requires :payload, type: Array do
33
+ requires :key, type: String, desc: 'Key of the event.'
34
+ requires :reference_entity_type, type: String, desc: 'Type of reference entity: trackable object or property'
35
+ requires :reference_entity_id, type: String, desc: 'ID of the reference entity.'
36
+ requires :is_array, type: Boolean, desc: 'Defines if the reference entity is an array or singular object'
37
+ requires :is_primary, type: Boolean, desc: 'Defines if the payload key is primary'
38
+ requires :selected_property_ids, type: Array[String], desc: 'Defines the array of property IDs that the key contains'
39
+ end
40
+ end
41
+ post do
42
+ new_event = Skee::App::Event::Endpoint.create(whitelisted_params)
43
+ present new_event,
44
+ with: Skee::API::Routes::Event::ResponseEntity
45
+ end
46
+
47
+ desc 'Update an event.'
48
+ params do
49
+ requires :id, type: String, desc: 'Event ID.'
50
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
51
+ optional :name, type: String, desc: 'Event name.'
52
+ optional :description, type: String, desc: 'Description of the event.'
53
+ end
54
+ post ':id' do
55
+ updated_event = Skee::App::Event::Endpoint.update(whitelisted_params)
56
+ present updated_event,
57
+ with: Skee::API::Routes::Event::ResponseEntity
58
+ end
59
+
60
+ desc 'Add payload keys to an event.'
61
+ params do
62
+ requires :id, type: String, desc: 'Event ID.'
63
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
64
+ requires :payload, type: Array do
65
+ requires :key, type: String, desc: 'Key of the event.'
66
+ requires :reference_entity_type, type: String, desc: 'Type of reference entity: trackable object or property'
67
+ requires :reference_entity_id, type: String, desc: 'ID of the reference entity.'
68
+ requires :is_array, type: Boolean, desc: 'Defines if the reference entity is an array or singular object'
69
+ requires :is_primary, type: Boolean, desc: 'Defines if the payload key is primary'
70
+ requires :selected_property_ids, type: Array[String], desc: 'Defines the array of property IDs that the key contains'
71
+ end
72
+ end
73
+ post ':id/add_payload' do
74
+ updated_event = Skee::App::Event::Endpoint.add_payload_keys(whitelisted_params)
75
+ present updated_event,
76
+ with: Skee::API::Routes::Event::ResponseEntity
77
+ end
78
+
79
+ desc 'Update payload for the given keys.'
80
+ params do
81
+ requires :id, type: String, desc: 'Event ID.'
82
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
83
+ requires :payload, type: Array do
84
+ requires :key, type: String, desc: 'Key of the event.'
85
+ requires :reference_entity_type, type: String, desc: 'Type of reference entity: trackable object or property'
86
+ requires :reference_entity_id, type: String, desc: 'ID of the reference entity.'
87
+ requires :is_array, type: Boolean, desc: 'Defines if the reference entity is an array or singular object'
88
+ requires :is_primary, type: Boolean, desc: 'Defines if the payload key is primary'
89
+ requires :selected_property_ids, type: Array[String], desc: 'Defines the array of property IDs that the key contains'
90
+ end
91
+ end
92
+ post ':id/update_payload' do
93
+ updated_event = Skee::App::Event::Endpoint.update_payload_keys(whitelisted_params)
94
+ present updated_event,
95
+ with: Skee::API::Routes::Event::ResponseEntity
96
+ end
97
+
98
+ desc 'Remove keys from the payload.'
99
+ params do
100
+ requires :id, type: String, desc: 'Event ID.'
101
+ requires :payload_keys, type: Array, desc: 'List of keys to be removed'
102
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
103
+ end
104
+ post ':id/remove_payload' do
105
+ updated_event = Skee::App::Event::Endpoint.remove_payload_keys(whitelisted_params)
106
+ present updated_event,
107
+ with: Skee::API::Routes::Event::ResponseEntity
108
+ end
109
+
110
+ desc 'Remove an event from the tracking spec.'
111
+ params do
112
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
113
+ requires :id, type: String, desc: 'Event ID.'
114
+ end
115
+ post ':id/remove' do
116
+ Skee::App::Event::Endpoint.remove(whitelisted_params)
117
+ status 200
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,41 @@
1
+ module Skee
2
+ module API
3
+ module Routes
4
+ module Event
5
+ class ResponseEntity < Grape::Entity
6
+ class EventPayload < Grape::Entity
7
+ expose :key, documentation: { type: 'String', desc: 'Key associated with the event.' }
8
+ expose :reference_entity_type, documentation: { type: 'String', desc: 'Reference Entity type, either trackable object or event' }
9
+ expose :reference_entity_id, documentation: { type: 'String', desc: 'Reference Entity ID' }
10
+ expose :is_array, documentation: { type: 'Boolean', desc: 'Defines if the response is an array or singular object.' }
11
+ expose :is_primary, documentation: { type: 'Boolean', desc: 'Defines if the entity is primary entity.'}
12
+ expose :selected_property_ids, documentation: { type: 'Array', desc: 'Defines the IDs of the sub-properties of the key'}
13
+ end
14
+
15
+ class VersionedEntity < Grape::Entity
16
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a property.' }
17
+ end
18
+ class EntitySnapshot < Grape::Entity
19
+ expose :id, as: :snapshot_id, documentation: { type: 'String', desc: 'Unique ID of a event snapshot.' }
20
+ expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID of the event snapshot.' }
21
+ expose :previous_snapshot_id, documentation: { type: 'String', desc: 'Snapshot ID of the previous version of the event.' }
22
+ expose :is_removed, safe: true, documentation: { type: 'String', desc: 'Flag to specify that event is removed from the tracking spec.' }
23
+
24
+ expose :name, documentation: { type: 'String', desc: 'Event name.' }
25
+ expose :description, documentation: { type: 'String', desc: 'Description of the event.' }
26
+ expose :payload, using: ResponseEntity::EventPayload
27
+
28
+ def payload
29
+ object.payload.map do |key, value|
30
+ value.merge(key: key)
31
+ end
32
+ end
33
+ end
34
+
35
+ expose :versioned_entity, merge: true, using: ResponseEntity::VersionedEntity
36
+ expose :versioned_entity_snapshot, merge: true, using: ResponseEntity::EntitySnapshot
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,59 @@
1
+ require_relative '../api_helpers'
2
+ require_relative './response_entity'
3
+ require_relative '../../../app/project/endpoint'
4
+ module Skee::API::Routes::Project
5
+ class API < Grape::API
6
+ helpers Skee::API::Routes::APIHelpers
7
+
8
+ resource :projects do
9
+ desc 'List all projects.'
10
+ get do
11
+ projects = Skee::App::Project::Endpoint.list
12
+ present projects,
13
+ with: Skee::API::Routes::Project::ResponseEntity
14
+ end
15
+
16
+ desc 'Retrieve a project.'
17
+ params do
18
+ requires :id, type: String, desc: 'project ID.'
19
+ end
20
+ get ':id' do
21
+ project = Skee::App::Project::Endpoint.get(whitelisted_params)
22
+ present project,
23
+ with: Skee::API::Routes::Project::ResponseEntity
24
+ end
25
+
26
+ desc 'Create a project.'
27
+ params do
28
+ requires :name, type: String, desc: 'project name.'
29
+ optional :description, type: String, desc: 'project description.'
30
+ end
31
+ post do
32
+ new_project = Skee::App::Project::Endpoint.create(whitelisted_params)
33
+ present new_project,
34
+ with: Skee::API::Routes::Project::ResponseEntity
35
+ end
36
+
37
+ desc 'Update a project.'
38
+ params do
39
+ requires :id, type: String, desc: 'project ID.'
40
+ optional :name, type: String, desc: 'project name.'
41
+ optional :description, type: String, desc: 'project description.'
42
+ end
43
+ post ':id' do
44
+ updated_project = Skee::App::Project::Endpoint.update(whitelisted_params)
45
+ present updated_project,
46
+ with: Skee::API::Routes::Project::ResponseEntity
47
+ end
48
+
49
+ desc 'Delete a project.'
50
+ params do
51
+ requires :id, type: String, desc: 'project ID.'
52
+ end
53
+ delete ':id' do
54
+ Skee::App::Project::Endpoint.delete(whitelisted_params)
55
+ status 200
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,13 @@
1
+ module Skee
2
+ module API
3
+ module Routes
4
+ module Project
5
+ class ResponseEntity < Grape::Entity
6
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a project.' }
7
+ expose :name, documentation: { type: 'String', desc: 'Name of the project.' }
8
+ expose :description, documentation: { type: 'String', desc: 'Description of the project.' }
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,78 @@
1
+ require_relative '../api_helpers'
2
+ require_relative './response_entity'
3
+ require_relative '../../../app/property/endpoint'
4
+ module Skee::API::Routes::Property
5
+ class API < Grape::API
6
+ helpers Skee::API::Routes::APIHelpers
7
+
8
+ resource :properties do
9
+ desc 'List all properties.'
10
+ get do
11
+ properties = Skee::App::Property::Endpoint.list
12
+ present properties,
13
+ with: Skee::API::Routes::Property::ResponseEntity
14
+ end
15
+
16
+ desc 'Retrieve a property.'
17
+ params do
18
+ requires :id, type: String, desc: 'Property ID.'
19
+ optional :change_request_id, type: String, desc: 'Change request ID for the request.'
20
+ end
21
+ get ':id' do
22
+ property = Skee::App::Property::Endpoint.get(whitelisted_params)
23
+ present property,
24
+ with: Skee::API::Routes::Property::ResponseEntity
25
+ end
26
+
27
+ desc 'Create a property.'
28
+ params do
29
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
30
+ requires :name, type: String, desc: 'Property name.'
31
+ requires :property_of, type: Symbol, values: [:trackable_object, :event], desc: 'Specifies whether property is that of a trackable object or event'
32
+ requires :data_type, type: String, desc: 'Data type of the property.'
33
+ requires :parent_reference_id, type: String, desc: 'ID of the trackable object the property belongs to.'
34
+ optional :description, type: String, desc: 'Description of the property.'
35
+ optional :is_nullable, type: Boolean, desc: 'Is this property nullable when being passed in an event?.'
36
+ optional :additional_instructions, type: String, desc: 'Additional instructions for the trackable object property.'
37
+ optional :data_format_id, type: String, desc: 'FK to the data format of the property.'
38
+ optional :regex_validation, type: String, desc: 'RegEx expression for validation of the property value sent.'
39
+ end
40
+ post do
41
+ new_property = Skee::App::Property::Endpoint.create(whitelisted_params)
42
+ present new_property,
43
+ with: Skee::API::Routes::Property::ResponseEntity
44
+ end
45
+
46
+ desc 'Update a trackable object property.'
47
+ params do
48
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
49
+ optional :parent_reference_id, type: String, desc: 'ID of the trackable object the property belongs to.'
50
+ requires :id, type: String, desc: 'Property ID.'
51
+ optional :name, type: String, desc: 'Property name.'
52
+ optional :description, type: String, desc: 'Description of the property.'
53
+ optional :is_nullable, type: Boolean, desc: 'Is this property nullable when being passed in an event?.'
54
+ optional :data_type, type: String, desc: 'Data type of the property.'
55
+ optional :additional_instructions, type: String, desc: 'Additional instructions for the property.'
56
+ optional :data_format_id, type: String, desc: 'FK to the data format of the property.'
57
+ optional :regex_validation, type: String, desc: 'RegEx expression for validation of the property value sent.'
58
+ end
59
+ post ':id' do
60
+ updated_property = Skee::App::Property::Endpoint.update(whitelisted_params)
61
+ present updated_property,
62
+ with: Skee::API::Routes::Property::ResponseEntity
63
+ end
64
+
65
+ desc 'Remove a property from the tracking spec.'
66
+ params do
67
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
68
+ optional :parent_reference_id, type: String, desc: 'ID of the trackable object the property belongs to.'
69
+ requires :id, type: String, desc: 'Property ID.'
70
+ end
71
+ post ':id/remove' do
72
+ updated_property = Skee::App::Property::Endpoint.remove(whitelisted_params)
73
+ present updated_property,
74
+ with: Skee::API::Routes::Property::ResponseEntity
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,31 @@
1
+ module Skee
2
+ module API
3
+ module Routes
4
+ module Property
5
+ class ResponseEntity < Grape::Entity
6
+ class VersionedEntity < Grape::Entity
7
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a property.' }
8
+ end
9
+ class EntitySnapshot < Grape::Entity
10
+ expose :id, as: :snapshot_id, documentation: { type: 'String', desc: 'Unique ID of a property snapshot.' }
11
+ expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID of the property snapshot.' }
12
+ expose :previous_snapshot_id, documentation: { type: 'String', desc: 'Snapshot ID of the previous version of the property.' }
13
+ expose :is_removed, safe: true, documentation: { type: 'String', desc: 'Flag to specify that property is removed from the tracking spec.' }
14
+
15
+ expose :name, documentation: { type: 'String', desc: 'Name of the property.' }
16
+ expose :property_of, documentation: { type: 'String', desc: 'Specifies whether property is that of a trackable object or event' }
17
+ expose :data_type, documentation: { type: 'String', desc: 'Data type of the property.' }
18
+ expose :description, documentation: { type: 'String', desc: 'Description of the property.' }
19
+ expose :is_nullable, documentation: { type: 'Boolean', desc: 'Is this property nullable when being passed in an event?.' }
20
+ expose :additional_instructions, documentation: { type: 'String', desc: 'Additional instructions for the property.' }
21
+ expose :data_format_id, documentation: { type: 'String', desc: 'FK to the data format of the property.' }
22
+ expose :regex_validation, documentation: { type: 'String', desc: 'RegEx expression for validation of the property value sent.' }
23
+ end
24
+
25
+ expose :versioned_entity, merge: true, using: ResponseEntity::VersionedEntity
26
+ expose :versioned_entity_snapshot, merge: true, using: ResponseEntity::EntitySnapshot
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,64 @@
1
+ require_relative '../api_helpers'
2
+ require_relative './response_entity'
3
+ require_relative '../../../app/trackable_object/endpoint'
4
+ module Skee::API::Routes::TrackableObject
5
+ class API < Grape::API
6
+ helpers Skee::API::Routes::APIHelpers
7
+
8
+ resource :trackable_objects do
9
+ desc 'List all trackable entitites.'
10
+ get do
11
+ trackable_objects = Skee::App::TrackableObject::Endpoint.list
12
+ present trackable_objects,
13
+ with: Skee::API::Routes::TrackableObject::ResponseEntity
14
+ end
15
+
16
+ desc 'Retrieve a trackable object.'
17
+ params do
18
+ requires :id, type: String, desc: 'Trackable object ID.'
19
+ optional :change_request_id, type: String, desc: 'Change request ID for the request.'
20
+ end
21
+ get ':id' do
22
+ trackable_object = Skee::App::TrackableObject::Endpoint.get(whitelisted_params)
23
+ present trackable_object,
24
+ with: Skee::API::Routes::TrackableObject::ResponseEntity
25
+ end
26
+
27
+ desc 'Create a trackable object.'
28
+ params do
29
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
30
+ requires :name, type: String, desc: 'Trackable object name.'
31
+ optional :property_ids, type: Array[String], desc: 'Property IDs of a Trackable object.'
32
+ end
33
+ post do
34
+ new_trackable_object = Skee::App::TrackableObject::Endpoint.create(whitelisted_params)
35
+ present new_trackable_object,
36
+ with: Skee::API::Routes::TrackableObject::ResponseEntity
37
+ end
38
+
39
+ desc 'Update a trackable object.'
40
+ params do
41
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
42
+ requires :id, type: String, desc: 'Trackable object ID.'
43
+ optional :name, type: String, desc: 'Trackable object name.'
44
+ optional :property_ids, type: Array[String], desc: 'Property IDs of a Trackable object.'
45
+ end
46
+ post ':id' do
47
+ updated_trackable_object = Skee::App::TrackableObject::Endpoint.update(whitelisted_params)
48
+ present updated_trackable_object,
49
+ with: Skee::API::Routes::TrackableObject::ResponseEntity
50
+ end
51
+
52
+ desc 'Remove a trackable object from the tracking spec.'
53
+ params do
54
+ requires :change_request_id, type: String, desc: 'Change request ID for the request.'
55
+ requires :id, type: String, desc: 'Trackable object ID.'
56
+ end
57
+ post ':id/remove' do
58
+ updated_trackable_object = Skee::App::TrackableObject::Endpoint.remove(whitelisted_params)
59
+ present updated_trackable_object,
60
+ with: Skee::API::Routes::TrackableObject::ResponseEntity
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,24 @@
1
+ module Skee
2
+ module API
3
+ module Routes
4
+ module TrackableObject
5
+ class ResponseEntity < Grape::Entity
6
+ class VersionedEntity < Grape::Entity
7
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a trackable_object.' }
8
+ end
9
+ class EntitySnapshot < Grape::Entity
10
+ expose :id, as: :snapshot_id, documentation: { type: 'String', desc: 'Unique ID of a trackable_object.' }
11
+ expose :name, documentation: { type: 'String', desc: 'Name of the trackable object.' }
12
+ expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID for the trackable object.' }
13
+ expose :previous_snapshot_id, documentation: { type: 'String', desc: 'Trackable object ID of the previous version of this trackable object.' }
14
+ expose :is_removed, safe: true, documentation: { type: 'String', desc: 'Marker to specify that trackable object is removed from the tracking spec.' }
15
+ expose :property_ids, documentation: { type: 'Array', desc: 'Property IDs of a trackable object.' }
16
+ end
17
+
18
+ expose :versioned_entity, merge: true, using: ResponseEntity::VersionedEntity
19
+ expose :versioned_entity_snapshot, merge: true, using: ResponseEntity::EntitySnapshot
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,88 @@
1
+ require_relative '../api_helpers'
2
+ require_relative './response_entity'
3
+ require_relative './spec_response'
4
+ require_relative '../../../app/tracking_spec/endpoint'
5
+
6
+ module Skee::API::Routes::TrackingSpec
7
+ class API < Grape::API
8
+ helpers Skee::API::Routes::APIHelpers
9
+
10
+ resource :tracking_specs do
11
+ desc 'List all Tracking Specs.'
12
+ get do
13
+ tracking_specs = Skee::App::TrackingSpec::Endpoint.list
14
+ present tracking_specs,
15
+ with: Skee::API::Routes::TrackingSpec::ResponseEntity
16
+ end
17
+
18
+ desc 'Retrieve a Tracking Spec.'
19
+ params do
20
+ requires :id, type: String, desc: 'Tracking Spec ID.'
21
+ end
22
+ get ':id' do
23
+ tracking_spec = Skee::App::TrackingSpec::Endpoint.get(whitelisted_params)
24
+ present tracking_spec,
25
+ with: Skee::API::Routes::TrackingSpec::ResponseEntity
26
+ end
27
+
28
+ desc 'Generate a full Tracking Spec.'
29
+ params do
30
+ requires :id, type: String, desc: 'Tracking Spec ID.'
31
+ end
32
+ get ':id/full_spec' do
33
+ full_spec = Skee::App::TrackingSpec::Endpoint.full_spec(whitelisted_params)
34
+ present full_spec,
35
+ with: Skee::API::Routes::TrackingSpec::SpecResponse
36
+ end
37
+
38
+ desc 'Create a Tracking Spec.'
39
+ params do
40
+ requires :name, type: String, desc: 'Name of the Tracking Spec.'
41
+ optional :version_identifier, type: String, desc: 'Identifier of a Tracking Spec.'
42
+ optional :project_id, type: String, desc: 'Project in which Tracking Spec created.'
43
+ optional :change_request_id, type: String, desc: 'Change request from which Tracking Spec was created.'
44
+ optional :status, type: String, desc: 'Status of a Tracking Spec.'
45
+ optional :event_ids, type: Array[String], desc: 'Array of event IDs.'
46
+ end
47
+ post do
48
+ new_tracking_spec = Skee::App::TrackingSpec::Endpoint.create(whitelisted_params)
49
+ present new_tracking_spec,
50
+ with: Skee::API::Routes::TrackingSpec::ResponseEntity
51
+ end
52
+
53
+ desc 'Update a Tracking Spec.'
54
+ params do
55
+ requires :id, type: String, desc: 'Tracking Spec ID.'
56
+ optional :name, type: String, desc: 'Name of the Tracking Spec.'
57
+ optional :version_identifier, type: String, desc: 'Identifier of a Tracking Spec.'
58
+ optional :project_id, type: String, desc: 'Project in which Tracking Spec created.'
59
+ optional :change_request_id, type: String, desc: 'Change request from which Tracking Spec was created.'
60
+ optional :status, type: String, desc: 'Status of a Tracking Spec.'
61
+ optional :event_ids, type: Array[String], desc: 'Array of event IDs.'
62
+ end
63
+ post ':id' do
64
+ updated_tracking_spec = Skee::App::TrackingSpec::Endpoint.update(whitelisted_params)
65
+ present updated_tracking_spec,
66
+ with: Skee::API::Routes::TrackingSpec::ResponseEntity
67
+ end
68
+
69
+ desc 'Delete a Tracking Spec.'
70
+ params do
71
+ requires :id, type: String, desc: 'Tracking Spec ID.'
72
+ end
73
+ delete ':id' do
74
+ Skee::App::TrackingSpec::Endpoint.delete(whitelisted_params)
75
+ status 200
76
+ end
77
+
78
+ desc 'Expand a Tracking Spec'
79
+ params do
80
+ requires :id, type: String, desc: 'Tracking Spec ID.'
81
+ requires :change_request_id, type: String, desc: 'Change request from which Tracking Spec was created.'
82
+ end
83
+ get ':id/expand' do
84
+ Skee::App::TrackingSpec::Endpoint.expand(whitelisted_params)
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,17 @@
1
+ module Skee
2
+ module API
3
+ module Routes
4
+ module TrackingSpec
5
+ class ResponseEntity < Grape::Entity
6
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a Tracking Spec.' }
7
+ expose :version_identifier, documentation: { type: 'String', desc: 'Identifier of a Tracking Spec.' }
8
+ expose :project_id, documentation: { type: 'String', desc: 'Project in which Tracking Spec created.' }
9
+ expose :change_request_id, documentation: { type: 'String', desc: 'Change request from which Tracking Spec was created.' }
10
+ expose :status, documentation: { type: 'String', desc: 'Status of a Tracking Spec.' }
11
+ expose :name, documentation: { type: 'String', desc: 'Name of the Tracking Spec.' }
12
+ expose :event_ids, documentation: { type: 'String', desc: 'Dictionary with list of IDs of all entities comprising the tracking spec.' }
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ require_relative '../event/response_entity'
2
+ require_relative '../trackable_object/response_entity'
3
+ require_relative '../property/response_entity'
4
+
5
+ module Skee
6
+ module API
7
+ module Routes
8
+ module TrackingSpec
9
+ class SpecResponse < Grape::Entity
10
+ expose :id, documentation: { type: 'String', desc: 'Unique ID of a tracking spec.' }
11
+ expose :version_identifier, documentation: { type: 'String', desc: 'Identifier of a Tracking Spec.' }
12
+ expose :name, documentation: { type: 'String', desc: 'Name of the tracking spec.' }
13
+ expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID for the tracking spec.' }
14
+ expose :events, with: Skee::API::Routes::Event::ResponseEntity
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end