d4h_api 2.0.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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.md +136 -0
- data/README.md +785 -0
- data/d4h_api.gemspec +28 -0
- data/lib/d4h/api/client.rb +216 -0
- data/lib/d4h/api/collection.rb +55 -0
- data/lib/d4h/api/error.rb +31 -0
- data/lib/d4h/api/model.rb +57 -0
- data/lib/d4h/api/models/animal.rb +8 -0
- data/lib/d4h/api/models/animal_group.rb +8 -0
- data/lib/d4h/api/models/animal_group_membership.rb +8 -0
- data/lib/d4h/api/models/animal_qualification.rb +8 -0
- data/lib/d4h/api/models/attendance.rb +8 -0
- data/lib/d4h/api/models/custom_field.rb +8 -0
- data/lib/d4h/api/models/custom_field_for_entity.rb +8 -0
- data/lib/d4h/api/models/customer_identifier.rb +8 -0
- data/lib/d4h/api/models/d4h_module.rb +8 -0
- data/lib/d4h/api/models/d4h_task.rb +8 -0
- data/lib/d4h/api/models/document.rb +8 -0
- data/lib/d4h/api/models/duty.rb +8 -0
- data/lib/d4h/api/models/equipment.rb +8 -0
- data/lib/d4h/api/models/equipment_brand.rb +8 -0
- data/lib/d4h/api/models/equipment_category.rb +8 -0
- data/lib/d4h/api/models/equipment_fund.rb +8 -0
- data/lib/d4h/api/models/equipment_inspection.rb +8 -0
- data/lib/d4h/api/models/equipment_inspection_result.rb +8 -0
- data/lib/d4h/api/models/equipment_inspection_step.rb +8 -0
- data/lib/d4h/api/models/equipment_inspection_step_result.rb +8 -0
- data/lib/d4h/api/models/equipment_kind.rb +8 -0
- data/lib/d4h/api/models/equipment_location.rb +8 -0
- data/lib/d4h/api/models/equipment_model.rb +8 -0
- data/lib/d4h/api/models/equipment_retired_reason.rb +8 -0
- data/lib/d4h/api/models/equipment_supplier.rb +8 -0
- data/lib/d4h/api/models/equipment_supplier_ref.rb +8 -0
- data/lib/d4h/api/models/equipment_usage.rb +8 -0
- data/lib/d4h/api/models/event.rb +8 -0
- data/lib/d4h/api/models/exercise.rb +8 -0
- data/lib/d4h/api/models/handler_group.rb +8 -0
- data/lib/d4h/api/models/handler_group_membership.rb +8 -0
- data/lib/d4h/api/models/handler_qualification.rb +8 -0
- data/lib/d4h/api/models/health_safety_category.rb +8 -0
- data/lib/d4h/api/models/health_safety_report.rb +8 -0
- data/lib/d4h/api/models/health_safety_severity.rb +8 -0
- data/lib/d4h/api/models/incident.rb +8 -0
- data/lib/d4h/api/models/incident_involved_injury.rb +8 -0
- data/lib/d4h/api/models/incident_involved_metadata.rb +8 -0
- data/lib/d4h/api/models/incident_involved_person.rb +8 -0
- data/lib/d4h/api/models/location_bookmark.rb +8 -0
- data/lib/d4h/api/models/member.rb +8 -0
- data/lib/d4h/api/models/member_custom_status.rb +8 -0
- data/lib/d4h/api/models/member_group.rb +8 -0
- data/lib/d4h/api/models/member_group_membership.rb +8 -0
- data/lib/d4h/api/models/member_qualification.rb +8 -0
- data/lib/d4h/api/models/member_qualification_award.rb +8 -0
- data/lib/d4h/api/models/member_retired_reason.rb +8 -0
- data/lib/d4h/api/models/organisation.rb +8 -0
- data/lib/d4h/api/models/repair.rb +8 -0
- data/lib/d4h/api/models/resource_bundle.rb +8 -0
- data/lib/d4h/api/models/role.rb +8 -0
- data/lib/d4h/api/models/search_result.rb +8 -0
- data/lib/d4h/api/models/tag.rb +8 -0
- data/lib/d4h/api/models/team.rb +8 -0
- data/lib/d4h/api/models/whiteboard.rb +8 -0
- data/lib/d4h/api/models/whoami.rb +8 -0
- data/lib/d4h/api/resource.rb +171 -0
- data/lib/d4h/api/resources/animal_group_membership_resource.rb +21 -0
- data/lib/d4h/api/resources/animal_group_resource.rb +33 -0
- data/lib/d4h/api/resources/animal_qualification_resource.rb +21 -0
- data/lib/d4h/api/resources/animal_resource.rb +21 -0
- data/lib/d4h/api/resources/attendance_resource.rb +25 -0
- data/lib/d4h/api/resources/custom_field_for_entity_resource.rb +17 -0
- data/lib/d4h/api/resources/custom_field_resource.rb +33 -0
- data/lib/d4h/api/resources/customer_identifier_resource.rb +17 -0
- data/lib/d4h/api/resources/d4h_module_resource.rb +17 -0
- data/lib/d4h/api/resources/d4h_task_resource.rb +17 -0
- data/lib/d4h/api/resources/document_resource.rb +33 -0
- data/lib/d4h/api/resources/duty_resource.rb +21 -0
- data/lib/d4h/api/resources/equipment_brand_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_category_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_fund_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_inspection_resource.rb +21 -0
- data/lib/d4h/api/resources/equipment_inspection_result_resource.rb +29 -0
- data/lib/d4h/api/resources/equipment_inspection_step_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_inspection_step_result_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_kind_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_location_resource.rb +21 -0
- data/lib/d4h/api/resources/equipment_model_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_retired_reason_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_supplier_ref_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_supplier_resource.rb +33 -0
- data/lib/d4h/api/resources/equipment_usage_resource.rb +33 -0
- data/lib/d4h/api/resources/event_resource.rb +29 -0
- data/lib/d4h/api/resources/exercise_resource.rb +33 -0
- data/lib/d4h/api/resources/handler_group_membership_resource.rb +21 -0
- data/lib/d4h/api/resources/handler_group_resource.rb +33 -0
- data/lib/d4h/api/resources/handler_qualification_resource.rb +21 -0
- data/lib/d4h/api/resources/health_safety_category_resource.rb +33 -0
- data/lib/d4h/api/resources/health_safety_report_resource.rb +21 -0
- data/lib/d4h/api/resources/health_safety_severity_resource.rb +33 -0
- data/lib/d4h/api/resources/incident_involved_injury_resource.rb +21 -0
- data/lib/d4h/api/resources/incident_involved_metadata_resource.rb +17 -0
- data/lib/d4h/api/resources/incident_involved_person_resource.rb +21 -0
- data/lib/d4h/api/resources/incident_resource.rb +29 -0
- data/lib/d4h/api/resources/location_bookmark_resource.rb +21 -0
- data/lib/d4h/api/resources/member_custom_status_resource.rb +17 -0
- data/lib/d4h/api/resources/member_group_membership_resource.rb +21 -0
- data/lib/d4h/api/resources/member_group_resource.rb +33 -0
- data/lib/d4h/api/resources/member_qualification_award_resource.rb +21 -0
- data/lib/d4h/api/resources/member_qualification_resource.rb +21 -0
- data/lib/d4h/api/resources/member_resource.rb +21 -0
- data/lib/d4h/api/resources/member_retired_reason_resource.rb +17 -0
- data/lib/d4h/api/resources/organisation_resource.rb +13 -0
- data/lib/d4h/api/resources/repair_resource.rb +33 -0
- data/lib/d4h/api/resources/resource_bundle_resource.rb +21 -0
- data/lib/d4h/api/resources/role_resource.rb +21 -0
- data/lib/d4h/api/resources/search_result_resource.rb +17 -0
- data/lib/d4h/api/resources/tag_resource.rb +33 -0
- data/lib/d4h/api/resources/team_resource.rb +13 -0
- data/lib/d4h/api/resources/whiteboard_resource.rb +33 -0
- data/lib/d4h/api/resources/whoami_resource.rb +13 -0
- data/lib/d4h.rb +156 -0
- data.tar.gz.sig +0 -0
- metadata +264 -0
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
# Public: Base class for all D4H API resource endpoints.
|
|
6
|
+
#
|
|
7
|
+
# Provides HTTP verb helpers (GET, POST, PUT, PATCH, DELETE), automatic
|
|
8
|
+
# Bearer token authentication, error handling, and a pagination helper
|
|
9
|
+
# for fetching all pages of a list endpoint.
|
|
10
|
+
#
|
|
11
|
+
# Subclasses must define a `SUB_URL` constant (e.g. "members", "tags")
|
|
12
|
+
# and implement whichever CRUD methods the API supports for that resource.
|
|
13
|
+
#
|
|
14
|
+
# Examples
|
|
15
|
+
#
|
|
16
|
+
# class TagResource < Resource
|
|
17
|
+
# SUB_URL = "tags"
|
|
18
|
+
#
|
|
19
|
+
# def list(**params)
|
|
20
|
+
# Collection.new(get_request(resource_url, params: params).body, model_class: Tag)
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# def show(id:)
|
|
24
|
+
# Tag.new(get_request("#{resource_url}/#{id}").body)
|
|
25
|
+
# end
|
|
26
|
+
# end
|
|
27
|
+
class Resource
|
|
28
|
+
# Public: Returns the Client instance this resource is bound to.
|
|
29
|
+
attr_reader :client
|
|
30
|
+
|
|
31
|
+
# Public: Initialize a Resource bound to a Client.
|
|
32
|
+
#
|
|
33
|
+
# client - A D4H::API::Client instance.
|
|
34
|
+
def initialize(client)
|
|
35
|
+
@client = client
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Public: Returns the context-scoped base path (e.g. "v3/team/42").
|
|
39
|
+
def base_path
|
|
40
|
+
client.base_path
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Public: Returns the full resource URL path (e.g. "v3/team/42/tags").
|
|
44
|
+
#
|
|
45
|
+
# Built from the client's base_path and the subclass's SUB_URL constant.
|
|
46
|
+
def resource_url
|
|
47
|
+
"#{base_path}/#{self.class::SUB_URL}"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Public: Perform a GET request.
|
|
51
|
+
#
|
|
52
|
+
# url - The URL path to request.
|
|
53
|
+
# params - Optional Hash of query parameters (default: {}).
|
|
54
|
+
# headers - Optional Hash of additional HTTP headers (default: {}).
|
|
55
|
+
#
|
|
56
|
+
# Returns the Faraday::Response on success.
|
|
57
|
+
# Raises D4H::API::Error on non-2xx status.
|
|
58
|
+
def get_request(url, params: {}, headers: {})
|
|
59
|
+
handle_response(client.connection.get(url, params, default_headers.merge(headers)))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Public: Perform a POST request.
|
|
63
|
+
#
|
|
64
|
+
# url - The URL path to request.
|
|
65
|
+
# body - The Hash request body to send.
|
|
66
|
+
# headers - Optional Hash of additional HTTP headers (default: {}).
|
|
67
|
+
#
|
|
68
|
+
# Returns the Faraday::Response on success.
|
|
69
|
+
# Raises D4H::API::Error on non-2xx status.
|
|
70
|
+
def post_request(url, body:, headers: {})
|
|
71
|
+
handle_response(client.connection.post(url, body, default_headers.merge(headers)))
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Public: Perform a PUT request.
|
|
75
|
+
#
|
|
76
|
+
# Used by DocumentResource, which requires PUT for updates per the D4H API.
|
|
77
|
+
#
|
|
78
|
+
# url - The URL path to request.
|
|
79
|
+
# body - The Hash request body to send.
|
|
80
|
+
# headers - Optional Hash of additional HTTP headers (default: {}).
|
|
81
|
+
#
|
|
82
|
+
# Returns the Faraday::Response on success.
|
|
83
|
+
# Raises D4H::API::Error on non-2xx status.
|
|
84
|
+
def put_request(url, body:, headers: {})
|
|
85
|
+
handle_response(client.connection.put(url, body, default_headers.merge(headers)))
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Public: Perform a PATCH request.
|
|
89
|
+
#
|
|
90
|
+
# Used by most resources for updates.
|
|
91
|
+
#
|
|
92
|
+
# url - The URL path to request.
|
|
93
|
+
# body - The Hash request body to send (default: {}).
|
|
94
|
+
# headers - Optional Hash of additional HTTP headers (default: {}).
|
|
95
|
+
#
|
|
96
|
+
# Returns the Faraday::Response on success.
|
|
97
|
+
# Raises D4H::API::Error on non-2xx status.
|
|
98
|
+
def patch_request(url, body: {}, headers: {})
|
|
99
|
+
handle_response(client.connection.patch(url, body, default_headers.merge(headers)))
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Public: Perform a DELETE request.
|
|
103
|
+
#
|
|
104
|
+
# url - The URL path to request.
|
|
105
|
+
# params - Optional Hash of query parameters (default: {}).
|
|
106
|
+
# headers - Optional Hash of additional HTTP headers (default: {}).
|
|
107
|
+
#
|
|
108
|
+
# Returns the Faraday::Response on success.
|
|
109
|
+
# Raises D4H::API::Error on non-2xx status.
|
|
110
|
+
def delete_request(url, params: {}, headers: {})
|
|
111
|
+
handle_response(client.connection.delete(url, params, default_headers.merge(headers)))
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Internal: Returns the default Authorization header for all requests.
|
|
115
|
+
def default_headers
|
|
116
|
+
{Authorization: "Bearer #{client.api_key}"}
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Internal: Check the HTTP response status and raise on errors.
|
|
120
|
+
#
|
|
121
|
+
# response - A Faraday::Response object.
|
|
122
|
+
#
|
|
123
|
+
# Returns the response if status is 2xx.
|
|
124
|
+
# Raises D4H::API::RetriableError for transient errors (429, 5xx) after
|
|
125
|
+
# all retry attempts have been exhausted by the Faraday retry middleware.
|
|
126
|
+
# Raises D4H::API::Error for all other non-2xx responses.
|
|
127
|
+
def handle_response(response)
|
|
128
|
+
return response if (200..299).cover?(response.status)
|
|
129
|
+
|
|
130
|
+
body = response.body || {}
|
|
131
|
+
message = [body["error"], body["message"]].compact.join(": ")
|
|
132
|
+
|
|
133
|
+
raise RetriableError, message if Client::RETRIABLE_STATUSES.include?(response.status)
|
|
134
|
+
|
|
135
|
+
raise Error, message
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
private
|
|
139
|
+
|
|
140
|
+
# Internal: Fetch all pages of a list endpoint and return a single Collection.
|
|
141
|
+
#
|
|
142
|
+
# Iterates through pages starting at page 0, accumulating results until
|
|
143
|
+
# all records are fetched (based on totalSize) or the API returns an
|
|
144
|
+
# empty page.
|
|
145
|
+
#
|
|
146
|
+
# params - A Hash of query parameters. :size defaults to 250.
|
|
147
|
+
# model_class - The Model subclass to wrap results in (e.g. Member, Tag).
|
|
148
|
+
#
|
|
149
|
+
# Returns a Collection containing all results across all pages.
|
|
150
|
+
def paginate_all(params, model_class:)
|
|
151
|
+
params[:size] ||= 250
|
|
152
|
+
all_results = []
|
|
153
|
+
page = params.fetch(:page, 0)
|
|
154
|
+
|
|
155
|
+
loop do
|
|
156
|
+
response = get_request(resource_url, params: params.merge(page: page)).body
|
|
157
|
+
results = response["results"] || []
|
|
158
|
+
all_results.concat(results)
|
|
159
|
+
break if all_results.size >= response["totalSize"] || results.empty?
|
|
160
|
+
|
|
161
|
+
page += 1
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
Collection.new(
|
|
165
|
+
{"results" => all_results, "page" => 0, "pageSize" => all_results.size, "totalSize" => all_results.size},
|
|
166
|
+
model_class: model_class,
|
|
167
|
+
)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class AnimalGroupMembershipResource < Resource
|
|
6
|
+
SUB_URL = "animal-group-memberships"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: AnimalGroupMembership)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: AnimalGroupMembership)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def show(id:)
|
|
17
|
+
AnimalGroupMembership.new(get_request("#{resource_url}/#{id}").body)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class AnimalGroupResource < Resource
|
|
6
|
+
SUB_URL = "animal-groups"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: AnimalGroup)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: AnimalGroup)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def show(id:)
|
|
17
|
+
AnimalGroup.new(get_request("#{resource_url}/#{id}").body)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create(data)
|
|
21
|
+
AnimalGroup.new(post_request(resource_url, body: data).body)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def update(id:, **params)
|
|
25
|
+
AnimalGroup.new(patch_request("#{resource_url}/#{id}", body: params).body)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def destroy(id:)
|
|
29
|
+
delete_request("#{resource_url}/#{id}")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class AnimalQualificationResource < Resource
|
|
6
|
+
SUB_URL = "animal-qualifications"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: AnimalQualification)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: AnimalQualification)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def show(id:)
|
|
17
|
+
AnimalQualification.new(get_request("#{resource_url}/#{id}").body)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class AnimalResource < Resource
|
|
6
|
+
SUB_URL = "animals"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: Animal)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: Animal)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def show(id:)
|
|
17
|
+
Animal.new(get_request("#{resource_url}/#{id}").body)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class AttendanceResource < Resource
|
|
6
|
+
SUB_URL = "attendance"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: Attendance)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: Attendance)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def show(id:)
|
|
17
|
+
Attendance.new(get_request("#{resource_url}/#{id}").body)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create(data)
|
|
21
|
+
Attendance.new(post_request(resource_url, body: data).body)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class CustomFieldForEntityResource < Resource
|
|
6
|
+
SUB_URL = "custom-field-options"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: CustomFieldForEntity)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def show(id:)
|
|
13
|
+
CustomFieldForEntity.new(get_request("#{resource_url}/#{id}").body)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class CustomFieldResource < Resource
|
|
6
|
+
SUB_URL = "custom-fields"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: CustomField)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: CustomField)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def show(id:)
|
|
17
|
+
CustomField.new(get_request("#{resource_url}/#{id}").body)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create(data)
|
|
21
|
+
CustomField.new(post_request(resource_url, body: data).body)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def update(id:, **params)
|
|
25
|
+
CustomField.new(patch_request("#{resource_url}/#{id}", body: params).body)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def destroy(id:)
|
|
29
|
+
delete_request("#{resource_url}/#{id}")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class CustomerIdentifierResource < Resource
|
|
6
|
+
SUB_URL = "customer-identifiers"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: CustomerIdentifier)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: CustomerIdentifier)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class D4hModuleResource < Resource
|
|
6
|
+
SUB_URL = "modules"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: D4hModule)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: D4hModule)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module D4H
|
|
4
|
+
module API
|
|
5
|
+
class D4hTaskResource < Resource
|
|
6
|
+
SUB_URL = "tasks"
|
|
7
|
+
|
|
8
|
+
def list(**params)
|
|
9
|
+
Collection.new(get_request(resource_url, params: params).body, model_class: D4hTask)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_all(**params)
|
|
13
|
+
paginate_all(params, model_class: D4hTask)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|