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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/docs/_schemas.md +872 -38
  3. data/docs/applications.md +49 -0
  4. data/docs/device.md +12 -3
  5. data/docs/me.md +116 -0
  6. data/lib/losant_rest/version.rb +1 -1
  7. data/lib/platform_rest/application.rb +932 -0
  8. data/lib/platform_rest/application_api_token.rb +176 -0
  9. data/lib/platform_rest/application_api_tokens.rb +136 -0
  10. data/lib/platform_rest/application_certificate.rb +176 -0
  11. data/lib/platform_rest/application_certificate_authorities.rb +138 -0
  12. data/lib/platform_rest/application_certificate_authority.rb +176 -0
  13. data/lib/platform_rest/application_certificates.rb +138 -0
  14. data/lib/platform_rest/application_dashboard.rb +225 -0
  15. data/lib/platform_rest/application_dashboards.rb +138 -0
  16. data/lib/platform_rest/application_key.rb +176 -0
  17. data/lib/platform_rest/application_keys.rb +141 -0
  18. data/lib/platform_rest/application_template.rb +79 -0
  19. data/lib/platform_rest/application_templates.rb +176 -0
  20. data/lib/platform_rest/applications.rb +209 -0
  21. data/lib/platform_rest/audit_log.rb +81 -0
  22. data/lib/platform_rest/audit_logs.rb +93 -0
  23. data/lib/platform_rest/auth.rb +245 -0
  24. data/lib/platform_rest/client.rb +410 -0
  25. data/lib/platform_rest/credential.rb +224 -0
  26. data/lib/platform_rest/credentials.rb +138 -0
  27. data/lib/platform_rest/dashboard.rb +268 -0
  28. data/lib/platform_rest/dashboards.rb +136 -0
  29. data/lib/platform_rest/data.rb +176 -0
  30. data/lib/platform_rest/data_table.rb +274 -0
  31. data/lib/platform_rest/data_table_row.rb +182 -0
  32. data/lib/platform_rest/data_table_rows.rb +343 -0
  33. data/lib/platform_rest/data_tables.rb +138 -0
  34. data/lib/platform_rest/device.rb +767 -0
  35. data/lib/platform_rest/device_recipe.rb +234 -0
  36. data/lib/platform_rest/device_recipes.rb +146 -0
  37. data/lib/platform_rest/devices.rb +707 -0
  38. data/lib/platform_rest/edge_deployment.rb +81 -0
  39. data/lib/platform_rest/edge_deployments.rb +236 -0
  40. data/lib/platform_rest/embedded_deployment.rb +81 -0
  41. data/lib/platform_rest/embedded_deployments.rb +280 -0
  42. data/lib/platform_rest/error.rb +34 -0
  43. data/lib/platform_rest/event.rb +176 -0
  44. data/lib/platform_rest/events.rb +341 -0
  45. data/lib/platform_rest/experience.rb +142 -0
  46. data/lib/platform_rest/experience_domain.rb +176 -0
  47. data/lib/platform_rest/experience_domains.rb +126 -0
  48. data/lib/platform_rest/experience_endpoint.rb +230 -0
  49. data/lib/platform_rest/experience_endpoints.rb +200 -0
  50. data/lib/platform_rest/experience_group.rb +180 -0
  51. data/lib/platform_rest/experience_groups.rb +141 -0
  52. data/lib/platform_rest/experience_slug.rb +176 -0
  53. data/lib/platform_rest/experience_slugs.rb +126 -0
  54. data/lib/platform_rest/experience_user.rb +176 -0
  55. data/lib/platform_rest/experience_users.rb +142 -0
  56. data/lib/platform_rest/experience_version.rb +176 -0
  57. data/lib/platform_rest/experience_versions.rb +138 -0
  58. data/lib/platform_rest/experience_view.rb +228 -0
  59. data/lib/platform_rest/experience_views.rb +142 -0
  60. data/lib/platform_rest/file.rb +226 -0
  61. data/lib/platform_rest/files.rb +144 -0
  62. data/lib/platform_rest/flow.rb +580 -0
  63. data/lib/platform_rest/flow_version.rb +352 -0
  64. data/lib/platform_rest/flow_versions.rb +201 -0
  65. data/lib/platform_rest/flows.rb +310 -0
  66. data/lib/platform_rest/instance.rb +377 -0
  67. data/lib/platform_rest/instance_api_token.rb +176 -0
  68. data/lib/platform_rest/instance_api_tokens.rb +136 -0
  69. data/lib/platform_rest/instance_custom_node.rb +282 -0
  70. data/lib/platform_rest/instance_custom_nodes.rb +136 -0
  71. data/lib/platform_rest/instance_member.rb +176 -0
  72. data/lib/platform_rest/instance_members.rb +134 -0
  73. data/lib/platform_rest/instance_org.rb +336 -0
  74. data/lib/platform_rest/instance_org_invite.rb +182 -0
  75. data/lib/platform_rest/instance_org_invites.rb +138 -0
  76. data/lib/platform_rest/instance_org_member.rb +182 -0
  77. data/lib/platform_rest/instance_org_members.rb +138 -0
  78. data/lib/platform_rest/instance_orgs.rb +139 -0
  79. data/lib/platform_rest/instance_sandbox.rb +181 -0
  80. data/lib/platform_rest/instance_sandboxes.rb +98 -0
  81. data/lib/platform_rest/instances.rb +88 -0
  82. data/lib/platform_rest/integration.rb +178 -0
  83. data/lib/platform_rest/integrations.rb +138 -0
  84. data/lib/platform_rest/me.rb +923 -0
  85. data/lib/platform_rest/notebook.rb +423 -0
  86. data/lib/platform_rest/notebooks.rb +138 -0
  87. data/lib/platform_rest/org.rb +663 -0
  88. data/lib/platform_rest/org_invites.rb +124 -0
  89. data/lib/platform_rest/orgs.rb +140 -0
  90. data/lib/platform_rest/resource_job.rb +326 -0
  91. data/lib/platform_rest/resource_jobs.rb +138 -0
  92. data/lib/platform_rest/user_api_token.rb +170 -0
  93. data/lib/platform_rest/user_api_tokens.rb +132 -0
  94. data/lib/platform_rest/utils.rb +44 -0
  95. data/lib/platform_rest/webhook.rb +178 -0
  96. data/lib/platform_rest/webhooks.rb +138 -0
  97. data/lib/platform_rest.rb +129 -0
  98. data/schemas/apiTokenPost.json +4 -0
  99. data/schemas/applicationDashboardPost.json +66 -0
  100. data/schemas/dashboard.json +66 -0
  101. data/schemas/dashboardPatch.json +66 -0
  102. data/schemas/dashboardPost.json +66 -0
  103. data/schemas/dashboards.json +66 -0
  104. data/schemas/deviceConnectionStatus.json +10 -0
  105. data/schemas/deviceLog.json +3 -0
  106. data/schemas/event.json +8 -0
  107. data/schemas/eventPlusNewCount.json +8 -0
  108. data/schemas/events.json +8 -0
  109. data/schemas/githubLogin.json +4 -0
  110. data/schemas/integrationPatch.json +0 -10
  111. data/schemas/orgInviteActionUser.json +18 -0
  112. data/schemas/orgInviteResultUser.json +18 -0
  113. data/schemas/orgInviteUser.json +51 -0
  114. data/schemas/orgInvitesUser.json +59 -0
  115. data/schemas/payloadCountsBreakdown.json +1 -25
  116. data/schemas/periodSummaries.json +172 -0
  117. data/schemas/samlResponse.json +4 -0
  118. data/schemas/userCredentials.json +4 -0
  119. data/schemas/userPost.json +4 -0
  120. 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