losant_rest 1.12.0 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +1 -1
  4. data/docs/_schemas.md +17509 -8097
  5. data/docs/application.md +6 -6
  6. data/docs/applicationApiTokens.md +1 -1
  7. data/docs/applications.md +1 -1
  8. data/docs/dataTable.md +1 -1
  9. data/docs/dataTableRows.md +1 -1
  10. data/docs/dataTables.md +1 -1
  11. data/docs/device.md +43 -0
  12. data/docs/devices.md +41 -2
  13. data/docs/edgeDeployment.md +49 -0
  14. data/docs/events.md +3 -3
  15. data/docs/experience.md +1 -1
  16. data/docs/experienceDomains.md +1 -1
  17. data/docs/experienceGroup.md +2 -0
  18. data/docs/experienceSlugs.md +1 -1
  19. data/docs/experienceVersion.md +3 -3
  20. data/docs/experienceVersions.md +2 -2
  21. data/docs/experienceView.md +4 -4
  22. data/docs/experienceViews.md +2 -2
  23. data/docs/file.md +5 -5
  24. data/docs/files.md +2 -2
  25. data/docs/flow.md +41 -0
  26. data/docs/flowVersions.md +44 -0
  27. data/docs/instance.md +168 -0
  28. data/docs/instanceApiToken.md +133 -0
  29. data/docs/instanceApiTokens.md +91 -0
  30. data/docs/instanceMember.md +133 -0
  31. data/docs/instanceMembers.md +91 -0
  32. data/docs/instanceOrg.md +135 -0
  33. data/docs/instanceOrgInvite.md +139 -0
  34. data/docs/instanceOrgInvites.md +96 -0
  35. data/docs/instanceOrgMember.md +139 -0
  36. data/docs/instanceOrgMembers.md +96 -0
  37. data/docs/instanceOrgs.md +91 -0
  38. data/docs/instances.md +50 -0
  39. data/docs/me.md +1 -1
  40. data/docs/org.md +1 -1
  41. data/docs/userApiToken.md +125 -0
  42. data/docs/userApiTokens.md +87 -0
  43. data/lib/losant_rest/application.rb +7 -7
  44. data/lib/losant_rest/application_api_token.rb +1 -1
  45. data/lib/losant_rest/application_api_tokens.rb +2 -2
  46. data/lib/losant_rest/application_certificate.rb +1 -1
  47. data/lib/losant_rest/application_certificate_authorities.rb +1 -1
  48. data/lib/losant_rest/application_certificate_authority.rb +1 -1
  49. data/lib/losant_rest/application_certificates.rb +1 -1
  50. data/lib/losant_rest/application_dashboard.rb +1 -1
  51. data/lib/losant_rest/application_dashboards.rb +1 -1
  52. data/lib/losant_rest/application_key.rb +1 -1
  53. data/lib/losant_rest/application_keys.rb +1 -1
  54. data/lib/losant_rest/application_template.rb +1 -1
  55. data/lib/losant_rest/application_templates.rb +1 -1
  56. data/lib/losant_rest/applications.rb +2 -2
  57. data/lib/losant_rest/audit_log.rb +1 -1
  58. data/lib/losant_rest/audit_logs.rb +1 -1
  59. data/lib/losant_rest/auth.rb +1 -1
  60. data/lib/losant_rest/client.rb +63 -3
  61. data/lib/losant_rest/dashboard.rb +1 -1
  62. data/lib/losant_rest/dashboards.rb +1 -1
  63. data/lib/losant_rest/data.rb +1 -1
  64. data/lib/losant_rest/data_table.rb +2 -2
  65. data/lib/losant_rest/data_table_row.rb +1 -1
  66. data/lib/losant_rest/data_table_rows.rb +2 -2
  67. data/lib/losant_rest/data_tables.rb +2 -2
  68. data/lib/losant_rest/device.rb +51 -1
  69. data/lib/losant_rest/device_recipe.rb +1 -1
  70. data/lib/losant_rest/device_recipes.rb +1 -1
  71. data/lib/losant_rest/devices.rb +49 -3
  72. data/lib/losant_rest/edge_deployment.rb +81 -0
  73. data/lib/losant_rest/edge_deployments.rb +1 -1
  74. data/lib/losant_rest/error.rb +1 -1
  75. data/lib/losant_rest/event.rb +1 -1
  76. data/lib/losant_rest/events.rb +4 -4
  77. data/lib/losant_rest/experience.rb +2 -2
  78. data/lib/losant_rest/experience_domain.rb +1 -1
  79. data/lib/losant_rest/experience_domains.rb +2 -2
  80. data/lib/losant_rest/experience_endpoint.rb +1 -1
  81. data/lib/losant_rest/experience_endpoints.rb +1 -1
  82. data/lib/losant_rest/experience_group.rb +5 -1
  83. data/lib/losant_rest/experience_groups.rb +1 -1
  84. data/lib/losant_rest/experience_slug.rb +1 -1
  85. data/lib/losant_rest/experience_slugs.rb +2 -2
  86. data/lib/losant_rest/experience_user.rb +1 -1
  87. data/lib/losant_rest/experience_users.rb +1 -1
  88. data/lib/losant_rest/experience_version.rb +4 -4
  89. data/lib/losant_rest/experience_versions.rb +3 -3
  90. data/lib/losant_rest/experience_view.rb +5 -5
  91. data/lib/losant_rest/experience_views.rb +3 -3
  92. data/lib/losant_rest/file.rb +5 -5
  93. data/lib/losant_rest/files.rb +3 -3
  94. data/lib/losant_rest/flow.rb +47 -1
  95. data/lib/losant_rest/flow_version.rb +1 -1
  96. data/lib/losant_rest/flow_versions.rb +51 -1
  97. data/lib/losant_rest/flows.rb +1 -1
  98. data/lib/losant_rest/instance.rb +227 -0
  99. data/lib/losant_rest/instance_api_token.rb +176 -0
  100. data/lib/losant_rest/instance_api_tokens.rb +136 -0
  101. data/lib/losant_rest/instance_member.rb +176 -0
  102. data/lib/losant_rest/instance_members.rb +134 -0
  103. data/lib/losant_rest/instance_org.rb +180 -0
  104. data/lib/losant_rest/instance_org_invite.rb +182 -0
  105. data/lib/losant_rest/instance_org_invites.rb +138 -0
  106. data/lib/losant_rest/instance_org_member.rb +182 -0
  107. data/lib/losant_rest/instance_org_members.rb +138 -0
  108. data/lib/losant_rest/instance_orgs.rb +139 -0
  109. data/lib/losant_rest/instances.rb +88 -0
  110. data/lib/losant_rest/integration.rb +1 -1
  111. data/lib/losant_rest/integrations.rb +1 -1
  112. data/lib/losant_rest/me.rb +2 -2
  113. data/lib/losant_rest/notebook.rb +1 -1
  114. data/lib/losant_rest/notebooks.rb +1 -1
  115. data/lib/losant_rest/org.rb +2 -2
  116. data/lib/losant_rest/org_invites.rb +1 -1
  117. data/lib/losant_rest/orgs.rb +1 -1
  118. data/lib/losant_rest/user_api_token.rb +170 -0
  119. data/lib/losant_rest/user_api_tokens.rb +132 -0
  120. data/lib/losant_rest/utils.rb +1 -1
  121. data/lib/losant_rest/version.rb +2 -2
  122. data/lib/losant_rest/webhook.rb +1 -1
  123. data/lib/losant_rest/webhooks.rb +1 -1
  124. data/lib/losant_rest.rb +16 -1
  125. data/schemas/advancedDeviceQuery.json +309 -0
  126. data/schemas/apiToken.json +2 -1
  127. data/schemas/apiTokenPost.json +431 -0
  128. data/schemas/apiTokens.json +4 -2
  129. data/schemas/applicationApiTokenPost.json +1 -0
  130. data/schemas/applicationDashboardPost.json +39 -17
  131. data/schemas/auditLog.json +4 -0
  132. data/schemas/auditLogFilter.json +4 -0
  133. data/schemas/auditLogs.json +4 -0
  134. data/schemas/bulkDeleteResponse.json +12 -0
  135. data/schemas/dashboard.json +39 -17
  136. data/schemas/dashboardPatch.json +39 -17
  137. data/schemas/dashboardPost.json +39 -17
  138. data/schemas/dashboardSendReport.json +4 -0
  139. data/schemas/dashboards.json +39 -17
  140. data/schemas/dataTableRowsDelete.json +1 -1
  141. data/schemas/devicePayloadCounts.json +24 -0
  142. data/schemas/devicesDeletePost.json +309 -0
  143. data/schemas/devicesExportPayloadCountPost.json +1350 -0
  144. data/schemas/devicesExportPost.json +309 -0
  145. data/schemas/devicesPatch.json +309 -0
  146. data/schemas/devicesRemoveDataPost.json +309 -0
  147. data/schemas/edgeDeployment.json +16 -0
  148. data/schemas/edgeDeployments.json +16 -0
  149. data/schemas/eventsDeleted.json +1 -1
  150. data/schemas/experienceGroup.json +6 -0
  151. data/schemas/experienceGroups.json +6 -0
  152. data/schemas/experienceLinkedResources.json +381 -6
  153. data/schemas/filePost.json +8 -2
  154. data/schemas/flow.json +127 -2
  155. data/schemas/flowPatch.json +127 -2
  156. data/schemas/flowPost.json +127 -2
  157. data/schemas/flowStorageMetadata.json +13 -0
  158. data/schemas/flowVersion.json +254 -4
  159. data/schemas/flowVersionPost.json +127 -2
  160. data/schemas/flowVersions.json +254 -4
  161. data/schemas/flowVersionsDeletePost.json +941 -0
  162. data/schemas/flows.json +127 -2
  163. data/schemas/flowsImportPost.json +254 -4
  164. data/schemas/flowsImportResult.json +381 -6
  165. data/schemas/githubLogin.json +64 -11
  166. data/schemas/historicalSummaries.json +43 -0
  167. data/schemas/historicalSummary.json +490 -0
  168. data/schemas/instance.json +60 -0
  169. data/schemas/instanceMember.json +41 -0
  170. data/schemas/instanceMemberPatch.json +17 -0
  171. data/schemas/instanceMemberPost.json +37 -0
  172. data/schemas/instanceMembers.json +77 -0
  173. data/schemas/instanceOrg.json +14 -0
  174. data/schemas/instanceOrgMember.json +45 -0
  175. data/schemas/instanceOrgMemberPatch.json +69 -0
  176. data/schemas/instanceOrgMemberPost.json +161 -0
  177. data/schemas/instanceOrgMembers.json +42 -0
  178. data/schemas/instanceOrgPatch.json +19 -0
  179. data/schemas/instanceOrgPost.json +177 -0
  180. data/schemas/instanceOrgs.json +18 -0
  181. data/schemas/instancePatch.json +67 -0
  182. data/schemas/instanceReportOptionsPost.json +41 -0
  183. data/schemas/me.json +30 -14
  184. data/schemas/multiDeviceCommand.json +309 -0
  185. data/schemas/notebook.json +45 -0
  186. data/schemas/notebookPatch.json +30 -0
  187. data/schemas/notebookPost.json +30 -0
  188. data/schemas/notebooks.json +45 -0
  189. data/schemas/org.json +30 -14
  190. data/schemas/orgInvite.json +90 -0
  191. data/schemas/orgInviteCollection.json +130 -0
  192. data/schemas/orgInvites.json +82 -77
  193. data/schemas/orgPatch.json +0 -9
  194. data/schemas/orgRoleInfo.json +69 -0
  195. data/schemas/orgs.json +30 -14
  196. data/schemas/payloadStats.json +126 -0
  197. data/schemas/userCredentials.json +64 -11
  198. data/schemas/userPost.json +64 -11
  199. data/schemas/validateContextError.json +34 -0
  200. data/schemas/validateContextSuccess.json +34 -0
  201. data/schemas/virtualButtonPress.json +4 -0
  202. metadata +55 -3
@@ -26,6 +26,66 @@
26
26
  "allowAuditLogging": {
27
27
  "type": "boolean"
28
28
  },
29
+ "reportConfigs": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "max": 10,
34
+ "properties": {
35
+ "id": {
36
+ "type": "string",
37
+ "maxLength": 48
38
+ },
39
+ "cron": {
40
+ "type": "string",
41
+ "maxLength": 255
42
+ },
43
+ "timezone": {
44
+ "type": "string",
45
+ "maxLength": 255
46
+ },
47
+ "emails": {
48
+ "type": "array",
49
+ "max": 10,
50
+ "items": {
51
+ "type": "string",
52
+ "format": "email",
53
+ "maxLength": 1024
54
+ }
55
+ },
56
+ "callbackUrl": {
57
+ "type": "string",
58
+ "maxLength": 1024
59
+ },
60
+ "resourceGroupBy": {
61
+ "type": "string",
62
+ "enum": [
63
+ "application",
64
+ "organization"
65
+ ]
66
+ },
67
+ "dateGroupBy": {
68
+ "type": "string",
69
+ "enum": [
70
+ "day",
71
+ "month"
72
+ ]
73
+ },
74
+ "periods": {
75
+ "type": "integer",
76
+ "minimum": 1,
77
+ "maximum": 90
78
+ },
79
+ "includeSandbox": {
80
+ "type": "boolean"
81
+ }
82
+ },
83
+ "required": [
84
+ "cron"
85
+ ],
86
+ "additionalProperties": false
87
+ }
88
+ },
29
89
  "limits": {
30
90
  "organization": {
31
91
  "type": "number"
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "instanceId": {
6
+ "type": "string",
7
+ "pattern": "^[A-Fa-f\\d]{24}$"
8
+ },
9
+ "userId": {
10
+ "type": "string",
11
+ "pattern": "^[A-Fa-f\\d]{24}$"
12
+ },
13
+ "email": {
14
+ "type": "string",
15
+ "format": "email",
16
+ "maxLength": 1024
17
+ },
18
+ "firstName": {
19
+ "type": "string",
20
+ "minLength": 1,
21
+ "maxLength": 1024
22
+ },
23
+ "lastName": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "maxLength": 1024
27
+ },
28
+ "role": {
29
+ "type": "string",
30
+ "enum": [
31
+ "admin",
32
+ "view"
33
+ ]
34
+ },
35
+ "avatarUrl": {
36
+ "type": "string",
37
+ "format": "url"
38
+ }
39
+ },
40
+ "additionalProperties": false
41
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "role": {
6
+ "type": "string",
7
+ "enum": [
8
+ "admin",
9
+ "view"
10
+ ]
11
+ }
12
+ },
13
+ "additionalProperties": false,
14
+ "required": [
15
+ "role"
16
+ ]
17
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "userId": {
6
+ "type": "string",
7
+ "pattern": "^[A-Fa-f\\d]{24}$"
8
+ },
9
+ "email": {
10
+ "type": "string",
11
+ "format": "email",
12
+ "maxLength": 1024
13
+ },
14
+ "role": {
15
+ "type": "string",
16
+ "enum": [
17
+ "admin",
18
+ "view"
19
+ ]
20
+ }
21
+ },
22
+ "additionalProperties": false,
23
+ "anyOf": [
24
+ {
25
+ "required": [
26
+ "email",
27
+ "role"
28
+ ]
29
+ },
30
+ {
31
+ "required": [
32
+ "userId",
33
+ "role"
34
+ ]
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "items": {
6
+ "type": "array",
7
+ "items": {
8
+ "title": "Instance Member",
9
+ "description": "Schema for an Instance member",
10
+ "type": "object",
11
+ "properties": {
12
+ "instanceId": {
13
+ "type": "string",
14
+ "pattern": "^[A-Fa-f\\d]{24}$"
15
+ },
16
+ "userId": {
17
+ "type": "string",
18
+ "pattern": "^[A-Fa-f\\d]{24}$"
19
+ },
20
+ "email": {
21
+ "type": "string",
22
+ "format": "email",
23
+ "maxLength": 1024
24
+ },
25
+ "firstName": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 1024
29
+ },
30
+ "lastName": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "maxLength": 1024
34
+ },
35
+ "role": {
36
+ "type": "string",
37
+ "enum": [
38
+ "admin",
39
+ "view"
40
+ ]
41
+ },
42
+ "avatarUrl": {
43
+ "type": "string",
44
+ "format": "url"
45
+ }
46
+ },
47
+ "additionalProperties": false
48
+ }
49
+ },
50
+ "instanceId": {
51
+ "type": "string",
52
+ "pattern": "^[A-Fa-f\\d]{24}$"
53
+ },
54
+ "count": {
55
+ "type": "integer"
56
+ },
57
+ "filter": {
58
+ "type": "string"
59
+ },
60
+ "filterField": {
61
+ "type": "string"
62
+ },
63
+ "sortField": {
64
+ "type": "string"
65
+ },
66
+ "sortDirection": {
67
+ "type": "string",
68
+ "enum": [
69
+ "asc",
70
+ "desc",
71
+ "ASC",
72
+ "DESC",
73
+ ""
74
+ ]
75
+ }
76
+ }
77
+ }
@@ -110,6 +110,20 @@
110
110
  },
111
111
  "auditLogEnabled": {
112
112
  "type": "boolean"
113
+ },
114
+ "disabledAt": {
115
+ "oneOf": [
116
+ {
117
+ "type": "boolean",
118
+ "enum": [
119
+ false
120
+ ]
121
+ },
122
+ {
123
+ "type": "string",
124
+ "format": "date-time"
125
+ }
126
+ ]
113
127
  }
114
128
  },
115
129
  "additionalProperties": false,
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "instanceId": {
6
+ "type": "string",
7
+ "pattern": "^[A-Fa-f\\d]{24}$"
8
+ },
9
+ "orgId": {
10
+ "type": "string",
11
+ "pattern": "^[A-Fa-f\\d]{24}$"
12
+ },
13
+ "userId": {
14
+ "type": "string",
15
+ "pattern": "^[A-Fa-f\\d]{24}$"
16
+ },
17
+ "email": {
18
+ "type": "string",
19
+ "format": "email",
20
+ "maxLength": 1024
21
+ },
22
+ "firstName": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 1024
26
+ },
27
+ "lastName": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "maxLength": 1024
31
+ },
32
+ "role": {
33
+ "type": "string",
34
+ "enum": [
35
+ "admin",
36
+ "view"
37
+ ]
38
+ },
39
+ "avatarUrl": {
40
+ "type": "string",
41
+ "format": "url"
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "role": {
6
+ "type": "string",
7
+ "enum": [
8
+ "admin",
9
+ "edit",
10
+ "collaborate",
11
+ "view",
12
+ "none"
13
+ ]
14
+ },
15
+ "applicationRoles": {
16
+ "type": "array",
17
+ "items": {
18
+ "type": "object",
19
+ "properties": {
20
+ "resourceId": {
21
+ "type": "string",
22
+ "pattern": "^[A-Fa-f\\d]{24}$"
23
+ },
24
+ "role": {
25
+ "type": "string",
26
+ "enum": [
27
+ "collaborate",
28
+ "view",
29
+ "none"
30
+ ]
31
+ }
32
+ },
33
+ "required": [
34
+ "resourceId",
35
+ "role"
36
+ ],
37
+ "additionalProperties": false
38
+ },
39
+ "maxItems": 1000
40
+ },
41
+ "dashboardRoles": {
42
+ "type": "array",
43
+ "items": {
44
+ "type": "object",
45
+ "properties": {
46
+ "resourceId": {
47
+ "type": "string",
48
+ "pattern": "^[A-Fa-f\\d]{24}$"
49
+ },
50
+ "role": {
51
+ "type": "string",
52
+ "enum": [
53
+ "collaborate",
54
+ "view",
55
+ "none"
56
+ ]
57
+ }
58
+ },
59
+ "required": [
60
+ "resourceId",
61
+ "role"
62
+ ],
63
+ "additionalProperties": false
64
+ },
65
+ "maxItems": 1000
66
+ }
67
+ },
68
+ "additionalProperties": false
69
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "oneOf": [
4
+ {
5
+ "type": "object",
6
+ "properties": {
7
+ "userId": {
8
+ "type": "string",
9
+ "pattern": "^[A-Fa-f\\d]{24}$"
10
+ },
11
+ "role": {
12
+ "type": "string",
13
+ "enum": [
14
+ "admin",
15
+ "edit",
16
+ "collaborate",
17
+ "view",
18
+ "none"
19
+ ]
20
+ },
21
+ "applicationRoles": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "properties": {
26
+ "resourceId": {
27
+ "type": "string",
28
+ "pattern": "^[A-Fa-f\\d]{24}$"
29
+ },
30
+ "role": {
31
+ "type": "string",
32
+ "enum": [
33
+ "collaborate",
34
+ "view",
35
+ "none"
36
+ ]
37
+ }
38
+ },
39
+ "required": [
40
+ "resourceId",
41
+ "role"
42
+ ],
43
+ "additionalProperties": false
44
+ },
45
+ "maxItems": 1000
46
+ },
47
+ "dashboardRoles": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "object",
51
+ "properties": {
52
+ "resourceId": {
53
+ "type": "string",
54
+ "pattern": "^[A-Fa-f\\d]{24}$"
55
+ },
56
+ "role": {
57
+ "type": "string",
58
+ "enum": [
59
+ "collaborate",
60
+ "view",
61
+ "none"
62
+ ]
63
+ }
64
+ },
65
+ "required": [
66
+ "resourceId",
67
+ "role"
68
+ ],
69
+ "additionalProperties": false
70
+ },
71
+ "maxItems": 1000
72
+ }
73
+ },
74
+ "additionalProperties": false,
75
+ "required": [
76
+ "userId",
77
+ "role"
78
+ ]
79
+ },
80
+ {
81
+ "type": "object",
82
+ "properties": {
83
+ "email": {
84
+ "type": "string",
85
+ "format": "email",
86
+ "maxLength": 1024
87
+ },
88
+ "role": {
89
+ "type": "string",
90
+ "enum": [
91
+ "admin",
92
+ "edit",
93
+ "collaborate",
94
+ "view",
95
+ "none"
96
+ ]
97
+ },
98
+ "applicationRoles": {
99
+ "type": "array",
100
+ "items": {
101
+ "type": "object",
102
+ "properties": {
103
+ "resourceId": {
104
+ "type": "string",
105
+ "pattern": "^[A-Fa-f\\d]{24}$"
106
+ },
107
+ "role": {
108
+ "type": "string",
109
+ "enum": [
110
+ "collaborate",
111
+ "view",
112
+ "none"
113
+ ]
114
+ }
115
+ },
116
+ "required": [
117
+ "resourceId",
118
+ "role"
119
+ ],
120
+ "additionalProperties": false
121
+ },
122
+ "maxItems": 1000
123
+ },
124
+ "dashboardRoles": {
125
+ "type": "array",
126
+ "items": {
127
+ "type": "object",
128
+ "properties": {
129
+ "resourceId": {
130
+ "type": "string",
131
+ "pattern": "^[A-Fa-f\\d]{24}$"
132
+ },
133
+ "role": {
134
+ "type": "string",
135
+ "enum": [
136
+ "collaborate",
137
+ "view",
138
+ "none"
139
+ ]
140
+ }
141
+ },
142
+ "required": [
143
+ "resourceId",
144
+ "role"
145
+ ],
146
+ "additionalProperties": false
147
+ },
148
+ "maxItems": 1000
149
+ },
150
+ "disallowTransfer": {
151
+ "type": "boolean"
152
+ }
153
+ },
154
+ "additionalProperties": false,
155
+ "required": [
156
+ "email",
157
+ "role"
158
+ ]
159
+ }
160
+ ]
161
+ }