losant_rest 1.19.0 → 1.19.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docs/_schemas.md +872 -38
- data/docs/applications.md +49 -0
- data/docs/device.md +12 -3
- data/docs/me.md +116 -0
- data/lib/losant_rest/version.rb +1 -1
- data/lib/platform_rest/application.rb +932 -0
- data/lib/platform_rest/application_api_token.rb +176 -0
- data/lib/platform_rest/application_api_tokens.rb +136 -0
- data/lib/platform_rest/application_certificate.rb +176 -0
- data/lib/platform_rest/application_certificate_authorities.rb +138 -0
- data/lib/platform_rest/application_certificate_authority.rb +176 -0
- data/lib/platform_rest/application_certificates.rb +138 -0
- data/lib/platform_rest/application_dashboard.rb +225 -0
- data/lib/platform_rest/application_dashboards.rb +138 -0
- data/lib/platform_rest/application_key.rb +176 -0
- data/lib/platform_rest/application_keys.rb +141 -0
- data/lib/platform_rest/application_template.rb +79 -0
- data/lib/platform_rest/application_templates.rb +176 -0
- data/lib/platform_rest/applications.rb +209 -0
- data/lib/platform_rest/audit_log.rb +81 -0
- data/lib/platform_rest/audit_logs.rb +93 -0
- data/lib/platform_rest/auth.rb +245 -0
- data/lib/platform_rest/client.rb +410 -0
- data/lib/platform_rest/credential.rb +224 -0
- data/lib/platform_rest/credentials.rb +138 -0
- data/lib/platform_rest/dashboard.rb +268 -0
- data/lib/platform_rest/dashboards.rb +136 -0
- data/lib/platform_rest/data.rb +176 -0
- data/lib/platform_rest/data_table.rb +274 -0
- data/lib/platform_rest/data_table_row.rb +182 -0
- data/lib/platform_rest/data_table_rows.rb +343 -0
- data/lib/platform_rest/data_tables.rb +138 -0
- data/lib/platform_rest/device.rb +767 -0
- data/lib/platform_rest/device_recipe.rb +234 -0
- data/lib/platform_rest/device_recipes.rb +146 -0
- data/lib/platform_rest/devices.rb +707 -0
- data/lib/platform_rest/edge_deployment.rb +81 -0
- data/lib/platform_rest/edge_deployments.rb +236 -0
- data/lib/platform_rest/embedded_deployment.rb +81 -0
- data/lib/platform_rest/embedded_deployments.rb +280 -0
- data/lib/platform_rest/error.rb +34 -0
- data/lib/platform_rest/event.rb +176 -0
- data/lib/platform_rest/events.rb +341 -0
- data/lib/platform_rest/experience.rb +142 -0
- data/lib/platform_rest/experience_domain.rb +176 -0
- data/lib/platform_rest/experience_domains.rb +126 -0
- data/lib/platform_rest/experience_endpoint.rb +230 -0
- data/lib/platform_rest/experience_endpoints.rb +200 -0
- data/lib/platform_rest/experience_group.rb +180 -0
- data/lib/platform_rest/experience_groups.rb +141 -0
- data/lib/platform_rest/experience_slug.rb +176 -0
- data/lib/platform_rest/experience_slugs.rb +126 -0
- data/lib/platform_rest/experience_user.rb +176 -0
- data/lib/platform_rest/experience_users.rb +142 -0
- data/lib/platform_rest/experience_version.rb +176 -0
- data/lib/platform_rest/experience_versions.rb +138 -0
- data/lib/platform_rest/experience_view.rb +228 -0
- data/lib/platform_rest/experience_views.rb +142 -0
- data/lib/platform_rest/file.rb +226 -0
- data/lib/platform_rest/files.rb +144 -0
- data/lib/platform_rest/flow.rb +580 -0
- data/lib/platform_rest/flow_version.rb +352 -0
- data/lib/platform_rest/flow_versions.rb +201 -0
- data/lib/platform_rest/flows.rb +310 -0
- data/lib/platform_rest/instance.rb +377 -0
- data/lib/platform_rest/instance_api_token.rb +176 -0
- data/lib/platform_rest/instance_api_tokens.rb +136 -0
- data/lib/platform_rest/instance_custom_node.rb +282 -0
- data/lib/platform_rest/instance_custom_nodes.rb +136 -0
- data/lib/platform_rest/instance_member.rb +176 -0
- data/lib/platform_rest/instance_members.rb +134 -0
- data/lib/platform_rest/instance_org.rb +336 -0
- data/lib/platform_rest/instance_org_invite.rb +182 -0
- data/lib/platform_rest/instance_org_invites.rb +138 -0
- data/lib/platform_rest/instance_org_member.rb +182 -0
- data/lib/platform_rest/instance_org_members.rb +138 -0
- data/lib/platform_rest/instance_orgs.rb +139 -0
- data/lib/platform_rest/instance_sandbox.rb +181 -0
- data/lib/platform_rest/instance_sandboxes.rb +98 -0
- data/lib/platform_rest/instances.rb +88 -0
- data/lib/platform_rest/integration.rb +178 -0
- data/lib/platform_rest/integrations.rb +138 -0
- data/lib/platform_rest/me.rb +923 -0
- data/lib/platform_rest/notebook.rb +423 -0
- data/lib/platform_rest/notebooks.rb +138 -0
- data/lib/platform_rest/org.rb +663 -0
- data/lib/platform_rest/org_invites.rb +124 -0
- data/lib/platform_rest/orgs.rb +140 -0
- data/lib/platform_rest/resource_job.rb +326 -0
- data/lib/platform_rest/resource_jobs.rb +138 -0
- data/lib/platform_rest/user_api_token.rb +170 -0
- data/lib/platform_rest/user_api_tokens.rb +132 -0
- data/lib/platform_rest/utils.rb +44 -0
- data/lib/platform_rest/webhook.rb +178 -0
- data/lib/platform_rest/webhooks.rb +138 -0
- data/lib/platform_rest.rb +129 -0
- data/schemas/apiTokenPost.json +4 -0
- data/schemas/applicationDashboardPost.json +66 -0
- data/schemas/dashboard.json +66 -0
- data/schemas/dashboardPatch.json +66 -0
- data/schemas/dashboardPost.json +66 -0
- data/schemas/dashboards.json +66 -0
- data/schemas/deviceConnectionStatus.json +10 -0
- data/schemas/deviceLog.json +3 -0
- data/schemas/event.json +8 -0
- data/schemas/eventPlusNewCount.json +8 -0
- data/schemas/events.json +8 -0
- data/schemas/githubLogin.json +4 -0
- data/schemas/integrationPatch.json +0 -10
- data/schemas/orgInviteActionUser.json +18 -0
- data/schemas/orgInviteResultUser.json +18 -0
- data/schemas/orgInviteUser.json +51 -0
- data/schemas/orgInvitesUser.json +59 -0
- data/schemas/payloadCountsBreakdown.json +1 -25
- data/schemas/periodSummaries.json +172 -0
- data/schemas/samlResponse.json +4 -0
- data/schemas/userCredentials.json +4 -0
- data/schemas/userPost.json +4 -0
- metadata +98 -2
@@ -0,0 +1,209 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Losant IoT, Inc.
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
require "json"
|
24
|
+
|
25
|
+
module PlatformRest
|
26
|
+
|
27
|
+
# Class containing all the actions for the Applications Resource
|
28
|
+
class Applications
|
29
|
+
|
30
|
+
def initialize(client)
|
31
|
+
@client = client
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the applications the current user has permission to see
|
35
|
+
#
|
36
|
+
# Authentication:
|
37
|
+
# The client must be configured with a valid api
|
38
|
+
# access token to call this action. The token
|
39
|
+
# must include at least one of the following scopes:
|
40
|
+
# all.Organization, all.Organization.read, all.User, all.User.cli, all.User.read, applications.*, or applications.get.
|
41
|
+
#
|
42
|
+
# Parameters:
|
43
|
+
# * {string} sortField - Field to sort the results by. Accepted values are: name, id, creationDate, ownerId, lastUpdated
|
44
|
+
# * {string} sortDirection - Direction to sort the results by. Accepted values are: asc, desc
|
45
|
+
# * {string} page - Which page of results to return
|
46
|
+
# * {string} perPage - How many items to return per page
|
47
|
+
# * {string} filterField - Field to filter the results by. Blank or not provided means no filtering. Accepted values are: name
|
48
|
+
# * {string} filter - Filter to apply against the filtered field. Supports globbing. Blank or not provided means no filtering.
|
49
|
+
# * {string} orgId - If not provided, return all applications. If provided but blank, only return applications belonging to the current user. If provided and an id, only return applications belonging to the given organization id.
|
50
|
+
# * {string} summaryExclude - Comma-separated list of summary fields to exclude from application summary
|
51
|
+
# * {string} summaryInclude - Comma-separated list of summary fields to include in application summary
|
52
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
53
|
+
# * {boolean} _actions - Return resource actions in response
|
54
|
+
# * {boolean} _links - Return resource link in response
|
55
|
+
# * {boolean} _embedded - Return embedded resources in response
|
56
|
+
#
|
57
|
+
# Responses:
|
58
|
+
# * 200 - Collection of applications (https://api.losant.com/#/definitions/applications)
|
59
|
+
#
|
60
|
+
# Errors:
|
61
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
62
|
+
def get(params = {})
|
63
|
+
params = Utils.symbolize_hash_keys(params)
|
64
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
65
|
+
headers = {}
|
66
|
+
body = nil
|
67
|
+
|
68
|
+
|
69
|
+
query_params[:sortField] = params[:sortField] if params.has_key?(:sortField)
|
70
|
+
query_params[:sortDirection] = params[:sortDirection] if params.has_key?(:sortDirection)
|
71
|
+
query_params[:page] = params[:page] if params.has_key?(:page)
|
72
|
+
query_params[:perPage] = params[:perPage] if params.has_key?(:perPage)
|
73
|
+
query_params[:filterField] = params[:filterField] if params.has_key?(:filterField)
|
74
|
+
query_params[:filter] = params[:filter] if params.has_key?(:filter)
|
75
|
+
query_params[:orgId] = params[:orgId] if params.has_key?(:orgId)
|
76
|
+
query_params[:summaryExclude] = params[:summaryExclude] if params.has_key?(:summaryExclude)
|
77
|
+
query_params[:summaryInclude] = params[:summaryInclude] if params.has_key?(:summaryInclude)
|
78
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
79
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
80
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
81
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
82
|
+
|
83
|
+
path = "/applications"
|
84
|
+
|
85
|
+
@client.request(
|
86
|
+
method: :get,
|
87
|
+
path: path,
|
88
|
+
query: query_params,
|
89
|
+
headers: headers,
|
90
|
+
body: body)
|
91
|
+
end
|
92
|
+
|
93
|
+
# Returns application usage summaries over a selected date range
|
94
|
+
#
|
95
|
+
# Authentication:
|
96
|
+
# The client must be configured with a valid api
|
97
|
+
# access token to call this action. The token
|
98
|
+
# must include at least one of the following scopes:
|
99
|
+
# all.Organization, all.User, applications.*, or applications.periodSummaries.
|
100
|
+
#
|
101
|
+
# Parameters:
|
102
|
+
# * {string} start - Start of range for resource count queries (ms since epoch)
|
103
|
+
# * {string} end - End of range for resource count queries (ms since epoch)
|
104
|
+
# * {string} asBytes - If the resulting payload counts should be returned as bytes
|
105
|
+
# * {string} includeNonBillable - If non-billable payloads should be included in the result
|
106
|
+
# * {string} sortField - Field to sort the results by. Accepted values are: name, id, creationDate, ownerId, lastUpdated
|
107
|
+
# * {string} sortDirection - Direction to sort the results by. Accepted values are: asc, desc
|
108
|
+
# * {string} page - Which page of results to return
|
109
|
+
# * {string} perPage - How many items to return per page
|
110
|
+
# * {string} filterField - Field to filter the results by. Blank or not provided means no filtering. Accepted values are: name
|
111
|
+
# * {string} filter - Filter to apply against the filtered field. Supports globbing. Blank or not provided means no filtering.
|
112
|
+
# * {string} orgId - If not provided, return all applications. If provided but blank, only return applications belonging to the current user. If provided and an id, only return applications belonging to the given organization id.
|
113
|
+
# * {string} exclude - Comma-separated list of resources to exclude from summary
|
114
|
+
# * {string} include - Comma-separated list of summary fields to include in application summary
|
115
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
116
|
+
# * {boolean} _actions - Return resource actions in response
|
117
|
+
# * {boolean} _links - Return resource link in response
|
118
|
+
# * {boolean} _embedded - Return embedded resources in response
|
119
|
+
#
|
120
|
+
# Responses:
|
121
|
+
# * 200 - Collection of application period summaries (https://api.losant.com/#/definitions/periodSummaries)
|
122
|
+
#
|
123
|
+
# Errors:
|
124
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
125
|
+
def period_summaries(params = {})
|
126
|
+
params = Utils.symbolize_hash_keys(params)
|
127
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
128
|
+
headers = {}
|
129
|
+
body = nil
|
130
|
+
|
131
|
+
|
132
|
+
query_params[:start] = params[:start] if params.has_key?(:start)
|
133
|
+
query_params[:end] = params[:end] if params.has_key?(:end)
|
134
|
+
query_params[:asBytes] = params[:asBytes] if params.has_key?(:asBytes)
|
135
|
+
query_params[:includeNonBillable] = params[:includeNonBillable] if params.has_key?(:includeNonBillable)
|
136
|
+
query_params[:sortField] = params[:sortField] if params.has_key?(:sortField)
|
137
|
+
query_params[:sortDirection] = params[:sortDirection] if params.has_key?(:sortDirection)
|
138
|
+
query_params[:page] = params[:page] if params.has_key?(:page)
|
139
|
+
query_params[:perPage] = params[:perPage] if params.has_key?(:perPage)
|
140
|
+
query_params[:filterField] = params[:filterField] if params.has_key?(:filterField)
|
141
|
+
query_params[:filter] = params[:filter] if params.has_key?(:filter)
|
142
|
+
query_params[:orgId] = params[:orgId] if params.has_key?(:orgId)
|
143
|
+
query_params[:exclude] = params[:exclude] if params.has_key?(:exclude)
|
144
|
+
query_params[:include] = params[:include] if params.has_key?(:include)
|
145
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
146
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
147
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
148
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
149
|
+
|
150
|
+
path = "/applications/periodSummaries"
|
151
|
+
|
152
|
+
@client.request(
|
153
|
+
method: :get,
|
154
|
+
path: path,
|
155
|
+
query: query_params,
|
156
|
+
headers: headers,
|
157
|
+
body: body)
|
158
|
+
end
|
159
|
+
|
160
|
+
# Create a new application
|
161
|
+
#
|
162
|
+
# Authentication:
|
163
|
+
# The client must be configured with a valid api
|
164
|
+
# access token to call this action. The token
|
165
|
+
# must include at least one of the following scopes:
|
166
|
+
# all.Organization, all.User, applications.*, or applications.post.
|
167
|
+
#
|
168
|
+
# Parameters:
|
169
|
+
# * {hash} application - New application information (https://api.losant.com/#/definitions/applicationPost)
|
170
|
+
# * {string} summaryExclude - Comma-separated list of summary fields to exclude from application summary
|
171
|
+
# * {string} summaryInclude - Comma-separated list of summary fields to include in application summary
|
172
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
173
|
+
# * {boolean} _actions - Return resource actions in response
|
174
|
+
# * {boolean} _links - Return resource link in response
|
175
|
+
# * {boolean} _embedded - Return embedded resources in response
|
176
|
+
#
|
177
|
+
# Responses:
|
178
|
+
# * 201 - Successfully created application (https://api.losant.com/#/definitions/application)
|
179
|
+
#
|
180
|
+
# Errors:
|
181
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
182
|
+
def post(params = {})
|
183
|
+
params = Utils.symbolize_hash_keys(params)
|
184
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
185
|
+
headers = {}
|
186
|
+
body = nil
|
187
|
+
|
188
|
+
raise ArgumentError.new("application is required") unless params.has_key?(:application)
|
189
|
+
|
190
|
+
body = params[:application] if params.has_key?(:application)
|
191
|
+
query_params[:summaryExclude] = params[:summaryExclude] if params.has_key?(:summaryExclude)
|
192
|
+
query_params[:summaryInclude] = params[:summaryInclude] if params.has_key?(:summaryInclude)
|
193
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
194
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
195
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
196
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
197
|
+
|
198
|
+
path = "/applications"
|
199
|
+
|
200
|
+
@client.request(
|
201
|
+
method: :post,
|
202
|
+
path: path,
|
203
|
+
query: query_params,
|
204
|
+
headers: headers,
|
205
|
+
body: body)
|
206
|
+
end
|
207
|
+
|
208
|
+
end
|
209
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Losant IoT, Inc.
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
require "json"
|
24
|
+
|
25
|
+
module PlatformRest
|
26
|
+
|
27
|
+
# Class containing all the actions for the Audit Log Resource
|
28
|
+
class AuditLog
|
29
|
+
|
30
|
+
def initialize(client)
|
31
|
+
@client = client
|
32
|
+
end
|
33
|
+
|
34
|
+
# Retrieves information on an audit log
|
35
|
+
#
|
36
|
+
# Authentication:
|
37
|
+
# The client must be configured with a valid api
|
38
|
+
# access token to call this action. The token
|
39
|
+
# must include at least one of the following scopes:
|
40
|
+
# all.Organization, all.Organization.read, all.User, all.User.read, auditLog.*, or auditLog.get.
|
41
|
+
#
|
42
|
+
# Parameters:
|
43
|
+
# * {string} orgId - ID associated with the organization
|
44
|
+
# * {string} auditLogId - ID associated with the audit log
|
45
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
46
|
+
# * {boolean} _actions - Return resource actions in response
|
47
|
+
# * {boolean} _links - Return resource link in response
|
48
|
+
# * {boolean} _embedded - Return embedded resources in response
|
49
|
+
#
|
50
|
+
# Responses:
|
51
|
+
# * 200 - Audit log information (https://api.losant.com/#/definitions/auditLog)
|
52
|
+
#
|
53
|
+
# Errors:
|
54
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
55
|
+
# * 404 - Error if audit log was not found (https://api.losant.com/#/definitions/error)
|
56
|
+
def get(params = {})
|
57
|
+
params = Utils.symbolize_hash_keys(params)
|
58
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
59
|
+
headers = {}
|
60
|
+
body = nil
|
61
|
+
|
62
|
+
raise ArgumentError.new("orgId is required") unless params.has_key?(:orgId)
|
63
|
+
raise ArgumentError.new("auditLogId is required") unless params.has_key?(:auditLogId)
|
64
|
+
|
65
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
66
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
67
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
68
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
69
|
+
|
70
|
+
path = "/orgs/#{params[:orgId]}/audit-logs/#{params[:auditLogId]}"
|
71
|
+
|
72
|
+
@client.request(
|
73
|
+
method: :get,
|
74
|
+
path: path,
|
75
|
+
query: query_params,
|
76
|
+
headers: headers,
|
77
|
+
body: body)
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Losant IoT, Inc.
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
require "json"
|
24
|
+
|
25
|
+
module PlatformRest
|
26
|
+
|
27
|
+
# Class containing all the actions for the Audit Logs Resource
|
28
|
+
class AuditLogs
|
29
|
+
|
30
|
+
def initialize(client)
|
31
|
+
@client = client
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the audit logs for the organization
|
35
|
+
#
|
36
|
+
# Authentication:
|
37
|
+
# The client must be configured with a valid api
|
38
|
+
# access token to call this action. The token
|
39
|
+
# must include at least one of the following scopes:
|
40
|
+
# all.Organization, all.Organization.read, all.User, all.User.read, auditLogs.*, or auditLogs.get.
|
41
|
+
#
|
42
|
+
# Parameters:
|
43
|
+
# * {string} orgId - ID associated with the organization
|
44
|
+
# * {string} sortField - Field to sort the results by. Accepted values are: creationDate, responseStatus, actorName
|
45
|
+
# * {string} sortDirection - Direction to sort the results by. Accepted values are: asc, desc
|
46
|
+
# * {string} page - Which page of results to return
|
47
|
+
# * {string} perPage - How many items to return per page
|
48
|
+
# * {string} start - Start of time range for audit log query
|
49
|
+
# * {string} end - End of time range for audit log query
|
50
|
+
# * {hash} auditLogFilter - Filters for the audit log query (https://api.losant.com/#/definitions/auditLogFilter)
|
51
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
52
|
+
# * {boolean} _actions - Return resource actions in response
|
53
|
+
# * {boolean} _links - Return resource link in response
|
54
|
+
# * {boolean} _embedded - Return embedded resources in response
|
55
|
+
#
|
56
|
+
# Responses:
|
57
|
+
# * 200 - Collection of audit logs (https://api.losant.com/#/definitions/auditLogs)
|
58
|
+
#
|
59
|
+
# Errors:
|
60
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
61
|
+
# * 404 - Error if organization was not found (https://api.losant.com/#/definitions/error)
|
62
|
+
def get(params = {})
|
63
|
+
params = Utils.symbolize_hash_keys(params)
|
64
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
65
|
+
headers = {}
|
66
|
+
body = nil
|
67
|
+
|
68
|
+
raise ArgumentError.new("orgId is required") unless params.has_key?(:orgId)
|
69
|
+
|
70
|
+
query_params[:sortField] = params[:sortField] if params.has_key?(:sortField)
|
71
|
+
query_params[:sortDirection] = params[:sortDirection] if params.has_key?(:sortDirection)
|
72
|
+
query_params[:page] = params[:page] if params.has_key?(:page)
|
73
|
+
query_params[:perPage] = params[:perPage] if params.has_key?(:perPage)
|
74
|
+
query_params[:start] = params[:start] if params.has_key?(:start)
|
75
|
+
query_params[:end] = params[:end] if params.has_key?(:end)
|
76
|
+
query_params[:auditLogFilter] = params[:auditLogFilter] if params.has_key?(:auditLogFilter)
|
77
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
78
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
79
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
80
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
81
|
+
|
82
|
+
path = "/orgs/#{params[:orgId]}/audit-logs"
|
83
|
+
|
84
|
+
@client.request(
|
85
|
+
method: :get,
|
86
|
+
path: path,
|
87
|
+
query: query_params,
|
88
|
+
headers: headers,
|
89
|
+
body: body)
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
# The MIT License (MIT)
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Losant IoT, Inc.
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
require "json"
|
24
|
+
|
25
|
+
module PlatformRest
|
26
|
+
|
27
|
+
# Class containing all the actions for the Auth Resource
|
28
|
+
class Auth
|
29
|
+
|
30
|
+
def initialize(client)
|
31
|
+
@client = client
|
32
|
+
end
|
33
|
+
|
34
|
+
# Authenticates a device using the provided credentials.
|
35
|
+
#
|
36
|
+
# Authentication:
|
37
|
+
# No api access token is required to call this action.
|
38
|
+
#
|
39
|
+
# Parameters:
|
40
|
+
# * {hash} credentials - Device authentication credentials (https://api.losant.com/#/definitions/deviceCredentials)
|
41
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
42
|
+
# * {boolean} _actions - Return resource actions in response
|
43
|
+
# * {boolean} _links - Return resource link in response
|
44
|
+
# * {boolean} _embedded - Return embedded resources in response
|
45
|
+
#
|
46
|
+
# Responses:
|
47
|
+
# * 200 - Successful authentication. The included api access token by default has the scope 'all.Device'. (https://api.losant.com/#/definitions/authedDevice)
|
48
|
+
#
|
49
|
+
# Errors:
|
50
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
51
|
+
# * 401 - Unauthorized error if authentication fails (https://api.losant.com/#/definitions/error)
|
52
|
+
def authenticate_device(params = {})
|
53
|
+
params = Utils.symbolize_hash_keys(params)
|
54
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
55
|
+
headers = {}
|
56
|
+
body = nil
|
57
|
+
|
58
|
+
raise ArgumentError.new("credentials is required") unless params.has_key?(:credentials)
|
59
|
+
|
60
|
+
body = params[:credentials] if params.has_key?(:credentials)
|
61
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
62
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
63
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
64
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
65
|
+
|
66
|
+
path = "/auth/device"
|
67
|
+
|
68
|
+
@client.request(
|
69
|
+
method: :post,
|
70
|
+
path: path,
|
71
|
+
query: query_params,
|
72
|
+
headers: headers,
|
73
|
+
body: body)
|
74
|
+
end
|
75
|
+
|
76
|
+
# Authenticates a user using the provided credentials.
|
77
|
+
#
|
78
|
+
# Authentication:
|
79
|
+
# No api access token is required to call this action.
|
80
|
+
#
|
81
|
+
# Parameters:
|
82
|
+
# * {hash} credentials - User authentication credentials (https://api.losant.com/#/definitions/userCredentials)
|
83
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
84
|
+
# * {boolean} _actions - Return resource actions in response
|
85
|
+
# * {boolean} _links - Return resource link in response
|
86
|
+
# * {boolean} _embedded - Return embedded resources in response
|
87
|
+
#
|
88
|
+
# Responses:
|
89
|
+
# * 200 - Successful authentication. The included api access token has the scope 'all.User'. (https://api.losant.com/#/definitions/authedUser)
|
90
|
+
#
|
91
|
+
# Errors:
|
92
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
93
|
+
# * 401 - Unauthorized error if authentication fails (https://api.losant.com/#/definitions/error)
|
94
|
+
def authenticate_user(params = {})
|
95
|
+
params = Utils.symbolize_hash_keys(params)
|
96
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
97
|
+
headers = {}
|
98
|
+
body = nil
|
99
|
+
|
100
|
+
raise ArgumentError.new("credentials is required") unless params.has_key?(:credentials)
|
101
|
+
|
102
|
+
body = params[:credentials] if params.has_key?(:credentials)
|
103
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
104
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
105
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
106
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
107
|
+
|
108
|
+
path = "/auth/user"
|
109
|
+
|
110
|
+
@client.request(
|
111
|
+
method: :post,
|
112
|
+
path: path,
|
113
|
+
query: query_params,
|
114
|
+
headers: headers,
|
115
|
+
body: body)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Authenticates a user via GitHub OAuth.
|
119
|
+
#
|
120
|
+
# Authentication:
|
121
|
+
# No api access token is required to call this action.
|
122
|
+
#
|
123
|
+
# Parameters:
|
124
|
+
# * {hash} oauth - User authentication credentials (access token) (https://api.losant.com/#/definitions/githubLogin)
|
125
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
126
|
+
# * {boolean} _actions - Return resource actions in response
|
127
|
+
# * {boolean} _links - Return resource link in response
|
128
|
+
# * {boolean} _embedded - Return embedded resources in response
|
129
|
+
#
|
130
|
+
# Responses:
|
131
|
+
# * 200 - Successful authentication. The included api access token has the scope 'all.User'. (https://api.losant.com/#/definitions/authedUser)
|
132
|
+
#
|
133
|
+
# Errors:
|
134
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
135
|
+
# * 401 - Unauthorized error if authentication fails (https://api.losant.com/#/definitions/error)
|
136
|
+
def authenticate_user_github(params = {})
|
137
|
+
params = Utils.symbolize_hash_keys(params)
|
138
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
139
|
+
headers = {}
|
140
|
+
body = nil
|
141
|
+
|
142
|
+
raise ArgumentError.new("oauth is required") unless params.has_key?(:oauth)
|
143
|
+
|
144
|
+
body = params[:oauth] if params.has_key?(:oauth)
|
145
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
146
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
147
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
148
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
149
|
+
|
150
|
+
path = "/auth/user/github"
|
151
|
+
|
152
|
+
@client.request(
|
153
|
+
method: :post,
|
154
|
+
path: path,
|
155
|
+
query: query_params,
|
156
|
+
headers: headers,
|
157
|
+
body: body)
|
158
|
+
end
|
159
|
+
|
160
|
+
# Authenticates a user via a SAML response.
|
161
|
+
#
|
162
|
+
# Authentication:
|
163
|
+
# No api access token is required to call this action.
|
164
|
+
#
|
165
|
+
# Parameters:
|
166
|
+
# * {hash} saml - Encoded SAML response from an IDP for a user. (https://api.losant.com/#/definitions/samlResponse)
|
167
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
168
|
+
# * {boolean} _actions - Return resource actions in response
|
169
|
+
# * {boolean} _links - Return resource link in response
|
170
|
+
# * {boolean} _embedded - Return embedded resources in response
|
171
|
+
#
|
172
|
+
# Responses:
|
173
|
+
# * 200 - Successful authentication. The included api access token has the scope 'all.User'. (https://api.losant.com/#/definitions/authedUser)
|
174
|
+
#
|
175
|
+
# Errors:
|
176
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
177
|
+
# * 401 - Unauthorized error if authentication fails (https://api.losant.com/#/definitions/error)
|
178
|
+
def authenticate_user_saml(params = {})
|
179
|
+
params = Utils.symbolize_hash_keys(params)
|
180
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
181
|
+
headers = {}
|
182
|
+
body = nil
|
183
|
+
|
184
|
+
raise ArgumentError.new("saml is required") unless params.has_key?(:saml)
|
185
|
+
|
186
|
+
body = params[:saml] if params.has_key?(:saml)
|
187
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
188
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
189
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
190
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
191
|
+
|
192
|
+
path = "/auth/user/saml"
|
193
|
+
|
194
|
+
@client.request(
|
195
|
+
method: :post,
|
196
|
+
path: path,
|
197
|
+
query: query_params,
|
198
|
+
headers: headers,
|
199
|
+
body: body)
|
200
|
+
end
|
201
|
+
|
202
|
+
# Checks email domain for SSO configuration.
|
203
|
+
#
|
204
|
+
# Authentication:
|
205
|
+
# No api access token is required to call this action.
|
206
|
+
#
|
207
|
+
# Parameters:
|
208
|
+
# * {string} email - The email address associated with the user login
|
209
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
210
|
+
# * {boolean} _actions - Return resource actions in response
|
211
|
+
# * {boolean} _links - Return resource link in response
|
212
|
+
# * {boolean} _embedded - Return embedded resources in response
|
213
|
+
#
|
214
|
+
# Responses:
|
215
|
+
# * 200 - Successful finding SSO for domain. Returns SSO request URL and type. (https://api.losant.com/#/definitions/ssoRequest)
|
216
|
+
# * 204 - No domain associated with an SSO configuration
|
217
|
+
#
|
218
|
+
# Errors:
|
219
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
220
|
+
def sso_domain(params = {})
|
221
|
+
params = Utils.symbolize_hash_keys(params)
|
222
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
223
|
+
headers = {}
|
224
|
+
body = nil
|
225
|
+
|
226
|
+
raise ArgumentError.new("email is required") unless params.has_key?(:email)
|
227
|
+
|
228
|
+
query_params[:email] = params[:email] if params.has_key?(:email)
|
229
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
230
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
231
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
232
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
233
|
+
|
234
|
+
path = "/auth/ssoDomain"
|
235
|
+
|
236
|
+
@client.request(
|
237
|
+
method: :get,
|
238
|
+
path: path,
|
239
|
+
query: query_params,
|
240
|
+
headers: headers,
|
241
|
+
body: body)
|
242
|
+
end
|
243
|
+
|
244
|
+
end
|
245
|
+
end
|