purecloudplatformclientv2 62.0.0 → 66.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/docs/AnalyticsApi.md +32 -32
  4. data/docs/AnalyticsEvaluation.md +2 -0
  5. data/docs/AnalyticsParticipant.md +1 -0
  6. data/docs/ArchitectDependencyTrackingBuildNotificationClient.md +14 -0
  7. data/docs/ArchitectDependencyTrackingBuildNotificationDependencyTrackingBuildNotification.md +1 -0
  8. data/docs/ArchitectFlowNotificationArchitectOperation.md +1 -0
  9. data/docs/ArchitectFlowNotificationClient.md +14 -0
  10. data/docs/ArchitectFlowOutcomeNotificationArchitectOperation.md +1 -0
  11. data/docs/ArchitectFlowOutcomeNotificationClient.md +14 -0
  12. data/docs/ArchitectPromptNotificationArchitectOperation.md +1 -0
  13. data/docs/ArchitectPromptNotificationClient.md +14 -0
  14. data/docs/ArrayNode.md +5 -5
  15. data/docs/AsyncConversationQuery.md +7 -6
  16. data/docs/AuthorizationApi.md +7 -7
  17. data/docs/CallConversation.md +1 -0
  18. data/docs/ConversationAggregateDataContainer.md +14 -0
  19. data/docs/ConversationAggregateQueryClause.md +14 -0
  20. data/docs/ConversationAggregateQueryFilter.md +15 -0
  21. data/docs/ConversationAggregateQueryPredicate.md +17 -0
  22. data/docs/ConversationAggregateQueryResponse.md +13 -0
  23. data/docs/ConversationAggregationQuery.md +20 -0
  24. data/docs/ConversationAggregationView.md +16 -0
  25. data/docs/ConversationDetailQueryClause.md +14 -0
  26. data/docs/ConversationDetailQueryFilter.md +15 -0
  27. data/docs/ConversationDetailQueryPredicate.md +18 -0
  28. data/docs/ConversationQuery.md +6 -6
  29. data/docs/ConversationsApi.md +286 -4
  30. data/docs/CreateQueueMediaAssociationRequest.md +1 -0
  31. data/docs/DataSchema.md +1 -1
  32. data/docs/DependencyStatus.md +2 -1
  33. data/docs/DomainOrganizationRole.md +1 -1
  34. data/docs/DomainOrganizationRoleCreate.md +1 -1
  35. data/docs/DomainOrganizationRoleUpdate.md +1 -1
  36. data/docs/EvaluationAggregateDataContainer.md +14 -0
  37. data/docs/EvaluationAggregateQueryClause.md +14 -0
  38. data/docs/EvaluationAggregateQueryFilter.md +15 -0
  39. data/docs/EvaluationAggregateQueryPredicate.md +17 -0
  40. data/docs/EvaluationAggregateQueryResponse.md +13 -0
  41. data/docs/EvaluationAggregationQuery.md +21 -0
  42. data/docs/EvaluationAggregationView.md +16 -0
  43. data/docs/EvaluationDetailQueryClause.md +14 -0
  44. data/docs/EvaluationDetailQueryFilter.md +15 -0
  45. data/docs/EvaluationDetailQueryPredicate.md +18 -0
  46. data/docs/Flow.md +2 -1
  47. data/docs/{AggregateDataContainer.md → FlowAggregateDataContainer.md} +2 -2
  48. data/docs/FlowAggregateQueryClause.md +14 -0
  49. data/docs/FlowAggregateQueryFilter.md +15 -0
  50. data/docs/FlowAggregateQueryPredicate.md +17 -0
  51. data/docs/FlowAggregateQueryResponse.md +13 -0
  52. data/docs/{AggregationQuery.md → FlowAggregationQuery.md} +4 -4
  53. data/docs/{AnalyticsView.md → FlowAggregationView.md} +3 -3
  54. data/docs/{ObservationDataContainer.md → FlowObservationDataContainer.md} +2 -2
  55. data/docs/{ObservationQuery.md → FlowObservationQuery.md} +3 -3
  56. data/docs/FlowObservationQueryClause.md +14 -0
  57. data/docs/FlowObservationQueryFilter.md +15 -0
  58. data/docs/FlowObservationQueryPredicate.md +17 -0
  59. data/docs/FlowObservationQueryResponse.md +13 -0
  60. data/docs/FlowVersion.md +1 -0
  61. data/docs/FlowsApi.md +8 -8
  62. data/docs/HistoryEntry.md +2 -1
  63. data/docs/HistoryListing.md +1 -0
  64. data/docs/HomerRecord.md +63 -0
  65. data/docs/IpAddressRange.md +15 -0
  66. data/docs/IpAddressRangeListing.md +13 -0
  67. data/docs/JsonNode.md +5 -5
  68. data/docs/Location.md +4 -4
  69. data/docs/{LocationUpdateDefinition.md → LocationCreateUpdateDefinition.md} +7 -6
  70. data/docs/LocationDefinition.md +1 -0
  71. data/docs/LocationSearchRequest.md +1 -0
  72. data/docs/LocationsApi.md +6 -6
  73. data/docs/Manager.md +1 -1
  74. data/docs/MediaEndpointStatDetailQueryClause.md +14 -0
  75. data/docs/MediaEndpointStatDetailQueryFilter.md +15 -0
  76. data/docs/MediaEndpointStatDetailQueryPredicate.md +17 -0
  77. data/docs/MessageInfo.md +4 -4
  78. data/docs/ObjectsApi.md +1 -1
  79. data/docs/Operation.md +1 -0
  80. data/docs/PresenceDetailQueryClause.md +14 -0
  81. data/docs/PresenceDetailQueryFilter.md +15 -0
  82. data/docs/PresenceDetailQueryPredicate.md +17 -0
  83. data/docs/QualityApi.md +8 -8
  84. data/docs/QueueMediaAssociation.md +1 -1
  85. data/docs/QueueObservationDataContainer.md +14 -0
  86. data/docs/QueueObservationQuery.md +15 -0
  87. data/docs/QueueObservationQueryClause.md +14 -0
  88. data/docs/QueueObservationQueryFilter.md +15 -0
  89. data/docs/QueueObservationQueryPredicate.md +17 -0
  90. data/docs/{QualifierMappingObservationQueryResponse.md → QueueObservationQueryResponse.md} +3 -3
  91. data/docs/Recording.md +5 -4
  92. data/docs/RecordingApi.md +2 -2
  93. data/docs/RecordingJob.md +1 -0
  94. data/docs/RecordingJobsQuery.md +2 -2
  95. data/docs/RecordingMetadata.md +30 -0
  96. data/docs/ReportingExportJobRequest.md +2 -0
  97. data/docs/ReportingExportJobResponse.md +2 -0
  98. data/docs/RoutingApi.md +4 -4
  99. data/docs/RoutingStatusDetailQueryClause.md +14 -0
  100. data/docs/RoutingStatusDetailQueryFilter.md +15 -0
  101. data/docs/RoutingStatusDetailQueryPredicate.md +17 -0
  102. data/docs/SCIMApi.md +295 -31
  103. data/docs/SIPSearchPublicRequest.md +22 -0
  104. data/docs/ScimConfigResourceType.md +20 -0
  105. data/docs/ScimConfigResourceTypeSchemaExtension.md +14 -0
  106. data/docs/ScimConfigResourceTypesListResponse.md +17 -0
  107. data/docs/ScimError.md +16 -0
  108. data/docs/ScimGroupListResponse.md +2 -2
  109. data/docs/ScimMetadata.md +2 -2
  110. data/docs/ScimPhoneNumber.md +1 -1
  111. data/docs/ScimServiceProviderConfig.md +10 -2
  112. data/docs/ScimServiceProviderConfigAuthenticationScheme.md +18 -0
  113. data/docs/ScimServiceProviderConfigBulkFeature.md +15 -0
  114. data/docs/ScimServiceProviderConfigFilterFeature.md +14 -0
  115. data/docs/ScimServiceProviderConfigSimpleFeature.md +13 -0
  116. data/docs/ScimUserListResponse.md +2 -2
  117. data/docs/ScimV2CreateUser.md +8 -8
  118. data/docs/ScimV2Group.md +3 -3
  119. data/docs/ScimV2GroupReference.md +2 -2
  120. data/docs/ScimV2MemberReference.md +2 -2
  121. data/docs/ScimV2PatchOperation.md +2 -2
  122. data/docs/ScimV2PatchRequest.md +2 -2
  123. data/docs/ScimV2User.md +9 -9
  124. data/docs/SearchApi.md +4 -4
  125. data/docs/SegmentDetailQueryClause.md +14 -0
  126. data/docs/SegmentDetailQueryFilter.md +15 -0
  127. data/docs/{AnalyticsQueryPredicate.md → SegmentDetailQueryPredicate.md} +4 -4
  128. data/docs/SignedUrlResponse.md +16 -0
  129. data/docs/SipDownloadResponse.md +14 -0
  130. data/docs/SipSearchResult.md +20 -0
  131. data/docs/Site.md +1 -0
  132. data/docs/SmsPhoneNumber.md +1 -0
  133. data/docs/SuggestApi.md +2 -2
  134. data/docs/SurveyAggregateDataContainer.md +14 -0
  135. data/docs/SurveyAggregateQueryClause.md +14 -0
  136. data/docs/SurveyAggregateQueryFilter.md +15 -0
  137. data/docs/SurveyAggregateQueryPredicate.md +17 -0
  138. data/docs/SurveyAggregateQueryResponse.md +13 -0
  139. data/docs/SurveyAggregationQuery.md +20 -0
  140. data/docs/SurveyAggregationView.md +16 -0
  141. data/docs/SurveyDetailQueryClause.md +14 -0
  142. data/docs/SurveyDetailQueryFilter.md +15 -0
  143. data/docs/SurveyDetailQueryPredicate.md +18 -0
  144. data/docs/TelephonyApi.md +223 -0
  145. data/docs/TelephonyProvidersEdgeApi.md +6 -6
  146. data/docs/TokensApi.md +2 -1
  147. data/docs/TrusteeBillingOverview.md +1 -0
  148. data/docs/UserAggregateDataContainer.md +14 -0
  149. data/docs/UserAggregateQueryClause.md +14 -0
  150. data/docs/UserAggregateQueryFilter.md +15 -0
  151. data/docs/UserAggregateQueryPredicate.md +17 -0
  152. data/docs/{PresenceQueryResponse.md → UserAggregateQueryResponse.md} +3 -3
  153. data/docs/UserAggregationQuery.md +20 -0
  154. data/docs/UserAggregationView.md +16 -0
  155. data/docs/UserAuthorization.md +1 -1
  156. data/docs/UserDetailQueryClause.md +14 -0
  157. data/docs/UserDetailQueryFilter.md +15 -0
  158. data/docs/UserDetailQueryPredicate.md +17 -0
  159. data/docs/UserDetailsQuery.md +4 -4
  160. data/docs/UserObservationDataContainer.md +14 -0
  161. data/docs/UserObservationQuery.md +15 -0
  162. data/docs/UserObservationQueryClause.md +14 -0
  163. data/docs/UserObservationQueryFilter.md +15 -0
  164. data/docs/UserObservationQueryPredicate.md +17 -0
  165. data/docs/UserObservationQueryResponse.md +13 -0
  166. data/docs/UsersApi.md +10 -10
  167. data/docs/UtilitiesApi.md +59 -0
  168. data/lib/purecloudplatformclientv2.rb +99 -13
  169. data/lib/purecloudplatformclientv2/api/analytics_api.rb +24 -24
  170. data/lib/purecloudplatformclientv2/api/authorization_api.rb +8 -8
  171. data/lib/purecloudplatformclientv2/api/conversations_api.rb +343 -3
  172. data/lib/purecloudplatformclientv2/api/flows_api.rb +6 -6
  173. data/lib/purecloudplatformclientv2/api/locations_api.rb +2 -2
  174. data/lib/purecloudplatformclientv2/api/objects_api.rb +2 -2
  175. data/lib/purecloudplatformclientv2/api/quality_api.rb +6 -6
  176. data/lib/purecloudplatformclientv2/api/recording_api.rb +3 -3
  177. data/lib/purecloudplatformclientv2/api/routing_api.rb +3 -3
  178. data/lib/purecloudplatformclientv2/api/scim_api.rb +344 -30
  179. data/lib/purecloudplatformclientv2/api/search_api.rb +2 -2
  180. data/lib/purecloudplatformclientv2/api/telephony_api.rb +270 -0
  181. data/lib/purecloudplatformclientv2/api/telephony_providers_edge_api.rb +4 -4
  182. data/lib/purecloudplatformclientv2/api/users_api.rb +8 -8
  183. data/lib/purecloudplatformclientv2/api/utilities_api.rb +55 -0
  184. data/lib/purecloudplatformclientv2/api_client.rb +1 -1
  185. data/lib/purecloudplatformclientv2/models/aggregate_metric_data.rb +1 -15
  186. data/lib/purecloudplatformclientv2/models/analytics_evaluation.rb +53 -1
  187. data/lib/purecloudplatformclientv2/models/analytics_participant.rb +31 -3
  188. data/lib/purecloudplatformclientv2/models/architect_dependency_tracking_build_notification_client.rb +226 -0
  189. data/lib/purecloudplatformclientv2/models/architect_dependency_tracking_build_notification_dependency_tracking_build_notification.rb +26 -1
  190. data/lib/purecloudplatformclientv2/models/architect_flow_notification_architect_operation.rb +26 -1
  191. data/lib/purecloudplatformclientv2/models/architect_flow_notification_client.rb +226 -0
  192. data/lib/purecloudplatformclientv2/models/architect_flow_outcome_notification_architect_operation.rb +26 -1
  193. data/lib/purecloudplatformclientv2/models/architect_flow_outcome_notification_client.rb +226 -0
  194. data/lib/purecloudplatformclientv2/models/architect_prompt_notification_architect_operation.rb +26 -1
  195. data/lib/purecloudplatformclientv2/models/architect_prompt_notification_client.rb +226 -0
  196. data/lib/purecloudplatformclientv2/models/array_node.rb +51 -51
  197. data/lib/purecloudplatformclientv2/models/async_conversation_query.rb +57 -31
  198. data/lib/purecloudplatformclientv2/models/call_conversation.rb +27 -1
  199. data/lib/purecloudplatformclientv2/models/conversation_aggregate_data_container.rb +231 -0
  200. data/lib/purecloudplatformclientv2/models/{analytics_query_clause.rb → conversation_aggregate_query_clause.rb} +3 -3
  201. data/lib/purecloudplatformclientv2/models/{analytics_query_filter.rb → conversation_aggregate_query_filter.rb} +4 -4
  202. data/lib/purecloudplatformclientv2/models/conversation_aggregate_query_predicate.rb +348 -0
  203. data/lib/purecloudplatformclientv2/models/conversation_aggregate_query_response.rb +203 -0
  204. data/lib/purecloudplatformclientv2/models/conversation_aggregation_query.rb +390 -0
  205. data/lib/purecloudplatformclientv2/models/conversation_aggregation_view.rb +323 -0
  206. data/lib/purecloudplatformclientv2/models/conversation_detail_query_clause.rb +254 -0
  207. data/lib/purecloudplatformclientv2/models/conversation_detail_query_filter.rb +277 -0
  208. data/lib/purecloudplatformclientv2/models/conversation_detail_query_predicate.rb +388 -0
  209. data/lib/purecloudplatformclientv2/models/conversation_query.rb +28 -28
  210. data/lib/purecloudplatformclientv2/models/create_queue_media_association_request.rb +27 -1
  211. data/lib/purecloudplatformclientv2/models/data_schema.rb +1 -1
  212. data/lib/purecloudplatformclientv2/models/dependency_status.rb +28 -1
  213. data/lib/purecloudplatformclientv2/models/domain_organization_role.rb +1 -0
  214. data/lib/purecloudplatformclientv2/models/domain_organization_role_create.rb +1 -0
  215. data/lib/purecloudplatformclientv2/models/domain_organization_role_update.rb +1 -0
  216. data/lib/purecloudplatformclientv2/models/evaluation_aggregate_data_container.rb +231 -0
  217. data/lib/purecloudplatformclientv2/models/evaluation_aggregate_query_clause.rb +254 -0
  218. data/lib/purecloudplatformclientv2/models/evaluation_aggregate_query_filter.rb +277 -0
  219. data/lib/purecloudplatformclientv2/models/evaluation_aggregate_query_predicate.rb +348 -0
  220. data/lib/purecloudplatformclientv2/models/evaluation_aggregate_query_response.rb +203 -0
  221. data/lib/purecloudplatformclientv2/models/evaluation_aggregation_query.rb +430 -0
  222. data/lib/purecloudplatformclientv2/models/evaluation_aggregation_view.rb +323 -0
  223. data/lib/purecloudplatformclientv2/models/evaluation_detail_query_clause.rb +254 -0
  224. data/lib/purecloudplatformclientv2/models/evaluation_detail_query_filter.rb +277 -0
  225. data/lib/purecloudplatformclientv2/models/evaluation_detail_query_predicate.rb +388 -0
  226. data/lib/purecloudplatformclientv2/models/event_message.rb +2 -2
  227. data/lib/purecloudplatformclientv2/models/flow.rb +28 -1
  228. data/lib/purecloudplatformclientv2/models/{aggregate_data_container.rb → flow_aggregate_data_container.rb} +1 -1
  229. data/lib/purecloudplatformclientv2/models/flow_aggregate_query_clause.rb +254 -0
  230. data/lib/purecloudplatformclientv2/models/flow_aggregate_query_filter.rb +277 -0
  231. data/lib/purecloudplatformclientv2/models/flow_aggregate_query_predicate.rb +348 -0
  232. data/lib/purecloudplatformclientv2/models/{aggregate_query_response.rb → flow_aggregate_query_response.rb} +2 -2
  233. data/lib/purecloudplatformclientv2/models/{aggregation_query.rb → flow_aggregation_query.rb} +3 -3
  234. data/lib/purecloudplatformclientv2/models/flow_aggregation_view.rb +323 -0
  235. data/lib/purecloudplatformclientv2/models/{observation_data_container.rb → flow_observation_data_container.rb} +1 -1
  236. data/lib/purecloudplatformclientv2/models/{observation_query.rb → flow_observation_query.rb} +2 -2
  237. data/lib/purecloudplatformclientv2/models/flow_observation_query_clause.rb +254 -0
  238. data/lib/purecloudplatformclientv2/models/flow_observation_query_filter.rb +277 -0
  239. data/lib/purecloudplatformclientv2/models/flow_observation_query_predicate.rb +348 -0
  240. data/lib/purecloudplatformclientv2/models/{observation_query_response.rb → flow_observation_query_response.rb} +2 -2
  241. data/lib/purecloudplatformclientv2/models/flow_version.rb +26 -1
  242. data/lib/purecloudplatformclientv2/models/history_entry.rb +28 -1
  243. data/lib/purecloudplatformclientv2/models/history_listing.rb +26 -1
  244. data/lib/purecloudplatformclientv2/models/homer_record.rb +1501 -0
  245. data/lib/purecloudplatformclientv2/models/ip_address_range.rb +265 -0
  246. data/lib/purecloudplatformclientv2/models/ip_address_range_listing.rb +203 -0
  247. data/lib/purecloudplatformclientv2/models/json_node.rb +51 -51
  248. data/lib/purecloudplatformclientv2/models/location.rb +4 -0
  249. data/lib/purecloudplatformclientv2/models/{location_update_definition.rb → location_create_update_definition.rb} +56 -25
  250. data/lib/purecloudplatformclientv2/models/location_definition.rb +27 -1
  251. data/lib/purecloudplatformclientv2/models/location_search_request.rb +29 -1
  252. data/lib/purecloudplatformclientv2/models/manager.rb +1 -1
  253. data/lib/purecloudplatformclientv2/models/media_endpoint_stat_detail_query_clause.rb +254 -0
  254. data/lib/purecloudplatformclientv2/models/media_endpoint_stat_detail_query_filter.rb +277 -0
  255. data/lib/purecloudplatformclientv2/models/media_endpoint_stat_detail_query_predicate.rb +348 -0
  256. data/lib/purecloudplatformclientv2/models/message_info.rb +4 -0
  257. data/lib/purecloudplatformclientv2/models/observation_metric_data.rb +1 -15
  258. data/lib/purecloudplatformclientv2/models/operation.rb +26 -1
  259. data/lib/purecloudplatformclientv2/models/presence_detail_query_clause.rb +254 -0
  260. data/lib/purecloudplatformclientv2/models/presence_detail_query_filter.rb +277 -0
  261. data/lib/purecloudplatformclientv2/models/presence_detail_query_predicate.rb +348 -0
  262. data/lib/purecloudplatformclientv2/models/queue_media_association.rb +17 -17
  263. data/lib/purecloudplatformclientv2/models/queue_observation_data_container.rb +231 -0
  264. data/lib/purecloudplatformclientv2/models/queue_observation_query.rb +263 -0
  265. data/lib/purecloudplatformclientv2/models/queue_observation_query_clause.rb +254 -0
  266. data/lib/purecloudplatformclientv2/models/queue_observation_query_filter.rb +277 -0
  267. data/lib/purecloudplatformclientv2/models/queue_observation_query_predicate.rb +348 -0
  268. data/lib/purecloudplatformclientv2/models/{qualifier_mapping_observation_query_response.rb → queue_observation_query_response.rb} +2 -2
  269. data/lib/purecloudplatformclientv2/models/recording.rb +31 -3
  270. data/lib/purecloudplatformclientv2/models/recording_job.rb +30 -4
  271. data/lib/purecloudplatformclientv2/models/recording_jobs_query.rb +2 -2
  272. data/lib/purecloudplatformclientv2/models/recording_metadata.rb +670 -0
  273. data/lib/purecloudplatformclientv2/models/reporting_export_job_request.rb +58 -6
  274. data/lib/purecloudplatformclientv2/models/reporting_export_job_response.rb +55 -3
  275. data/lib/purecloudplatformclientv2/models/routing_status_detail_query_clause.rb +254 -0
  276. data/lib/purecloudplatformclientv2/models/routing_status_detail_query_filter.rb +277 -0
  277. data/lib/purecloudplatformclientv2/models/routing_status_detail_query_predicate.rb +348 -0
  278. data/lib/purecloudplatformclientv2/models/scim_config_resource_type.rb +389 -0
  279. data/lib/purecloudplatformclientv2/models/scim_config_resource_type_schema_extension.rb +229 -0
  280. data/lib/purecloudplatformclientv2/models/scim_config_resource_types_list_response.rb +311 -0
  281. data/lib/purecloudplatformclientv2/models/scim_error.rb +297 -0
  282. data/lib/purecloudplatformclientv2/models/scim_group_list_response.rb +2 -2
  283. data/lib/purecloudplatformclientv2/models/scim_metadata.rb +4 -4
  284. data/lib/purecloudplatformclientv2/models/scim_phone_number.rb +2 -2
  285. data/lib/purecloudplatformclientv2/models/scim_service_provider_config.rb +216 -3
  286. data/lib/purecloudplatformclientv2/models/scim_service_provider_config_authentication_scheme.rb +362 -0
  287. data/lib/purecloudplatformclientv2/models/scim_service_provider_config_bulk_feature.rb +255 -0
  288. data/lib/purecloudplatformclientv2/models/scim_service_provider_config_filter_feature.rb +229 -0
  289. data/lib/purecloudplatformclientv2/models/scim_service_provider_config_simple_feature.rb +203 -0
  290. data/lib/purecloudplatformclientv2/models/scim_user_list_response.rb +2 -2
  291. data/lib/purecloudplatformclientv2/models/scim_v2_create_user.rb +8 -8
  292. data/lib/purecloudplatformclientv2/models/scim_v2_group.rb +3 -3
  293. data/lib/purecloudplatformclientv2/models/scim_v2_group_reference.rb +4 -4
  294. data/lib/purecloudplatformclientv2/models/scim_v2_member_reference.rb +4 -4
  295. data/lib/purecloudplatformclientv2/models/scim_v2_patch_operation.rb +3 -3
  296. data/lib/purecloudplatformclientv2/models/scim_v2_patch_request.rb +2 -1
  297. data/lib/purecloudplatformclientv2/models/scim_v2_user.rb +9 -9
  298. data/lib/purecloudplatformclientv2/models/segment_detail_query_clause.rb +254 -0
  299. data/lib/purecloudplatformclientv2/models/segment_detail_query_filter.rb +277 -0
  300. data/lib/purecloudplatformclientv2/models/{analytics_query_predicate.rb → segment_detail_query_predicate.rb} +7 -7
  301. data/lib/purecloudplatformclientv2/models/signed_url_response.rb +279 -0
  302. data/lib/purecloudplatformclientv2/models/sip_download_response.rb +228 -0
  303. data/lib/purecloudplatformclientv2/models/sip_search_public_request.rb +445 -0
  304. data/lib/purecloudplatformclientv2/models/sip_search_result.rb +386 -0
  305. data/lib/purecloudplatformclientv2/models/site.rb +26 -1
  306. data/lib/purecloudplatformclientv2/models/sms_phone_number.rb +41 -1
  307. data/lib/purecloudplatformclientv2/models/subject_division_grants.rb +2 -2
  308. data/lib/purecloudplatformclientv2/models/survey_aggregate_data_container.rb +231 -0
  309. data/lib/purecloudplatformclientv2/models/survey_aggregate_query_clause.rb +254 -0
  310. data/lib/purecloudplatformclientv2/models/survey_aggregate_query_filter.rb +277 -0
  311. data/lib/purecloudplatformclientv2/models/survey_aggregate_query_predicate.rb +348 -0
  312. data/lib/purecloudplatformclientv2/models/survey_aggregate_query_response.rb +203 -0
  313. data/lib/purecloudplatformclientv2/models/survey_aggregation_query.rb +390 -0
  314. data/lib/purecloudplatformclientv2/models/survey_aggregation_view.rb +323 -0
  315. data/lib/purecloudplatformclientv2/models/survey_detail_query_clause.rb +254 -0
  316. data/lib/purecloudplatformclientv2/models/survey_detail_query_filter.rb +277 -0
  317. data/lib/purecloudplatformclientv2/models/survey_detail_query_predicate.rb +388 -0
  318. data/lib/purecloudplatformclientv2/models/system_message_system_message.rb +4 -4
  319. data/lib/purecloudplatformclientv2/models/trustee_billing_overview.rb +27 -1
  320. data/lib/purecloudplatformclientv2/models/user_aggregate_data_container.rb +231 -0
  321. data/lib/purecloudplatformclientv2/models/user_aggregate_query_clause.rb +254 -0
  322. data/lib/purecloudplatformclientv2/models/user_aggregate_query_filter.rb +277 -0
  323. data/lib/purecloudplatformclientv2/models/user_aggregate_query_predicate.rb +348 -0
  324. data/lib/purecloudplatformclientv2/models/{presence_query_response.rb → user_aggregate_query_response.rb} +2 -2
  325. data/lib/purecloudplatformclientv2/models/user_aggregation_query.rb +390 -0
  326. data/lib/purecloudplatformclientv2/models/{analytics_view.rb → user_aggregation_view.rb} +17 -3
  327. data/lib/purecloudplatformclientv2/models/user_authorization.rb +1 -0
  328. data/lib/purecloudplatformclientv2/models/user_detail_query_clause.rb +254 -0
  329. data/lib/purecloudplatformclientv2/models/user_detail_query_filter.rb +277 -0
  330. data/lib/purecloudplatformclientv2/models/user_detail_query_predicate.rb +348 -0
  331. data/lib/purecloudplatformclientv2/models/user_details_query.rb +37 -38
  332. data/lib/purecloudplatformclientv2/models/user_observation_data_container.rb +231 -0
  333. data/lib/purecloudplatformclientv2/models/user_observation_query.rb +263 -0
  334. data/lib/purecloudplatformclientv2/models/user_observation_query_clause.rb +254 -0
  335. data/lib/purecloudplatformclientv2/models/user_observation_query_filter.rb +277 -0
  336. data/lib/purecloudplatformclientv2/models/user_observation_query_predicate.rb +348 -0
  337. data/lib/purecloudplatformclientv2/models/user_observation_query_response.rb +203 -0
  338. data/lib/purecloudplatformclientv2/version.rb +1 -1
  339. metadata +200 -28
  340. data/docs/AggregateQueryResponse.md +0 -13
  341. data/docs/AnalyticsQueryClause.md +0 -14
  342. data/docs/AnalyticsQueryFilter.md +0 -15
  343. data/docs/ObservationQueryResponse.md +0 -13
@@ -0,0 +1,430 @@
1
+ =begin
2
+ PureCloud Platform API
3
+
4
+ With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.
5
+
6
+ OpenAPI spec version: v2
7
+ Contact: DeveloperEvangelists@genesys.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ License: UNLICENSED
11
+ https://help.mypurecloud.com/articles/terms-and-conditions/
12
+
13
+ Terms of Service: https://help.mypurecloud.com/articles/terms-and-conditions/
14
+
15
+ =end
16
+
17
+ require 'date'
18
+
19
+ module PureCloud
20
+ class EvaluationAggregationQuery
21
+ # Behaves like one clause in a SQL WHERE. Specifies the date and time range of data being queried. Intervals are represented as an ISO-8601 string. For example: YYYY-MM-DDThh:mm:ss/YYYY-MM-DDThh:mm:ss
22
+ attr_accessor :interval
23
+
24
+ # Granularity aggregates metrics into subpartitions within the time interval specified. The default granularity is the same duration as the interval. Periods are represented as an ISO-8601 string. For example: P1D or P1DT12H
25
+ attr_accessor :granularity
26
+
27
+ # Sets the time zone for the query interval, defaults to UTC. Time zones are represented as a string of the zone name as found in the IANA time zone database. For example: UTC, Etc/UTC, or Europe/London
28
+ attr_accessor :time_zone
29
+
30
+ # Behaves like a SQL GROUPBY. Allows for multiple levels of grouping as a list of dimensions. Partitions resulting aggregate computations into distinct named subgroups rather than across the entire result set as if it were one group.
31
+ attr_accessor :group_by
32
+
33
+ # Behaves like a SQL WHERE clause. This is ANDed with the interval parameter. Expresses boolean logical predicates as well as dimensional filters
34
+ attr_accessor :filter
35
+
36
+ # Behaves like a SQL SELECT clause. Enables retrieving only named metrics. If omitted, all metrics that are available will be returned (like SELECT *).
37
+ attr_accessor :metrics
38
+
39
+ # Flattens any multivalued dimensions used in response groups (e.g. ['a','b','c']->'a,b,c')
40
+ attr_accessor :flatten_multivalued_dimensions
41
+
42
+ # Custom derived metric views
43
+ attr_accessor :views
44
+
45
+ # Dimension to use as the alternative timestamp for data in the aggregate. Choosing \"eventTime\" uses the actual time of the data event.
46
+ attr_accessor :alternate_time_dimension
47
+
48
+ # Attribute mapping from ruby-style variable name to JSON key.
49
+ def self.attribute_map
50
+ {
51
+
52
+ :'interval' => :'interval',
53
+
54
+ :'granularity' => :'granularity',
55
+
56
+ :'time_zone' => :'timeZone',
57
+
58
+ :'group_by' => :'groupBy',
59
+
60
+ :'filter' => :'filter',
61
+
62
+ :'metrics' => :'metrics',
63
+
64
+ :'flatten_multivalued_dimensions' => :'flattenMultivaluedDimensions',
65
+
66
+ :'views' => :'views',
67
+
68
+ :'alternate_time_dimension' => :'alternateTimeDimension'
69
+
70
+ }
71
+ end
72
+
73
+ # Attribute type mapping.
74
+ def self.swagger_types
75
+ {
76
+
77
+ :'interval' => :'String',
78
+
79
+ :'granularity' => :'String',
80
+
81
+ :'time_zone' => :'String',
82
+
83
+ :'group_by' => :'Array<String>',
84
+
85
+ :'filter' => :'EvaluationAggregateQueryFilter',
86
+
87
+ :'metrics' => :'Array<String>',
88
+
89
+ :'flatten_multivalued_dimensions' => :'BOOLEAN',
90
+
91
+ :'views' => :'Array<EvaluationAggregationView>',
92
+
93
+ :'alternate_time_dimension' => :'String'
94
+
95
+ }
96
+ end
97
+
98
+ # Initializes the object
99
+ # @param [Hash] attributes Model attributes in the form of hash
100
+ def initialize(attributes = {})
101
+ return unless attributes.is_a?(Hash)
102
+
103
+ # convert string to symbol for hash key
104
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
105
+
106
+
107
+ if attributes.has_key?(:'interval')
108
+
109
+
110
+ self.interval = attributes[:'interval']
111
+
112
+
113
+ end
114
+
115
+
116
+ if attributes.has_key?(:'granularity')
117
+
118
+
119
+ self.granularity = attributes[:'granularity']
120
+
121
+
122
+ end
123
+
124
+
125
+ if attributes.has_key?(:'timeZone')
126
+
127
+
128
+ self.time_zone = attributes[:'timeZone']
129
+
130
+
131
+ end
132
+
133
+
134
+ if attributes.has_key?(:'groupBy')
135
+
136
+ if (value = attributes[:'groupBy']).is_a?(Array)
137
+ self.group_by = value
138
+ end
139
+
140
+
141
+
142
+ end
143
+
144
+
145
+ if attributes.has_key?(:'filter')
146
+
147
+
148
+ self.filter = attributes[:'filter']
149
+
150
+
151
+ end
152
+
153
+
154
+ if attributes.has_key?(:'metrics')
155
+
156
+ if (value = attributes[:'metrics']).is_a?(Array)
157
+ self.metrics = value
158
+ end
159
+
160
+
161
+
162
+ end
163
+
164
+
165
+ if attributes.has_key?(:'flattenMultivaluedDimensions')
166
+
167
+
168
+ self.flatten_multivalued_dimensions = attributes[:'flattenMultivaluedDimensions']
169
+
170
+
171
+ end
172
+
173
+
174
+ if attributes.has_key?(:'views')
175
+
176
+ if (value = attributes[:'views']).is_a?(Array)
177
+ self.views = value
178
+ end
179
+
180
+
181
+
182
+ end
183
+
184
+
185
+ if attributes.has_key?(:'alternateTimeDimension')
186
+
187
+
188
+ self.alternate_time_dimension = attributes[:'alternateTimeDimension']
189
+
190
+
191
+ end
192
+
193
+
194
+ end
195
+
196
+ # Show invalid properties with the reasons. Usually used together with valid?
197
+ # @return Array for valid properies with the reasons
198
+ def list_invalid_properties
199
+ invalid_properties = Array.new
200
+
201
+
202
+ return invalid_properties
203
+ end
204
+
205
+ # Check to see if the all the properties in the model are valid
206
+ # @return true if the model is valid
207
+ def valid?
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+ allowed_values = ["calibrationId", "contextId", "conversationId", "divisionId", "evaluationCreatedDate", "evaluationId", "evaluatorId", "formId", "queueId", "rescind", "rescored", "userId"]
244
+ if @alternate_time_dimension && !allowed_values.include?(@alternate_time_dimension)
245
+ return false
246
+ end
247
+
248
+
249
+
250
+ end
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+ # Custom attribute writer method checking allowed values (enum).
295
+ # @param [Object] alternate_time_dimension Object to be assigned
296
+ def alternate_time_dimension=(alternate_time_dimension)
297
+ allowed_values = ["calibrationId", "contextId", "conversationId", "divisionId", "evaluationCreatedDate", "evaluationId", "evaluatorId", "formId", "queueId", "rescind", "rescored", "userId"]
298
+ if alternate_time_dimension && !allowed_values.include?(alternate_time_dimension)
299
+ fail ArgumentError, "invalid value for 'alternate_time_dimension', must be one of #{allowed_values}."
300
+ end
301
+ @alternate_time_dimension = alternate_time_dimension
302
+ end
303
+
304
+
305
+
306
+
307
+ # Checks equality by comparing each attribute.
308
+ # @param [Object] Object to be compared
309
+ def ==(o)
310
+ return true if self.equal?(o)
311
+ self.class == o.class &&
312
+ interval == o.interval &&
313
+ granularity == o.granularity &&
314
+ time_zone == o.time_zone &&
315
+ group_by == o.group_by &&
316
+ filter == o.filter &&
317
+ metrics == o.metrics &&
318
+ flatten_multivalued_dimensions == o.flatten_multivalued_dimensions &&
319
+ views == o.views &&
320
+ alternate_time_dimension == o.alternate_time_dimension
321
+ end
322
+
323
+ # @see the `==` method
324
+ # @param [Object] Object to be compared
325
+ def eql?(o)
326
+ self == o
327
+ end
328
+
329
+ # Calculates hash code according to all attributes.
330
+ # @return [Fixnum] Hash code
331
+ def hash
332
+ [interval, granularity, time_zone, group_by, filter, metrics, flatten_multivalued_dimensions, views, alternate_time_dimension].hash
333
+ end
334
+
335
+ # build the object from hash
336
+ def build_from_hash(attributes)
337
+ return nil unless attributes.is_a?(Hash)
338
+ self.class.swagger_types.each_pair do |key, type|
339
+ if type =~ /^Array<(.*)>/i
340
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
341
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
342
+ else
343
+ #TODO show warning in debug mode
344
+ end
345
+ elsif !attributes[self.class.attribute_map[key]].nil?
346
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
347
+ else
348
+ # data not found in attributes(hash), not an issue as the data can be optional
349
+ end
350
+ end
351
+
352
+ self
353
+ end
354
+
355
+ def _deserialize(type, value)
356
+ case type.to_sym
357
+ when :DateTime
358
+ DateTime.parse(value)
359
+ when :Date
360
+ Date.parse(value)
361
+ when :String
362
+ value.to_s
363
+ when :Integer
364
+ value.to_i
365
+ when :Float
366
+ value.to_f
367
+ when :BOOLEAN
368
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
369
+ true
370
+ else
371
+ false
372
+ end
373
+ when :Object
374
+ # generic object (usually a Hash), return directly
375
+ value
376
+ when /\AArray<(?<inner_type>.+)>\z/
377
+ inner_type = Regexp.last_match[:inner_type]
378
+ value.map { |v| _deserialize(inner_type, v) }
379
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
380
+ k_type = Regexp.last_match[:k_type]
381
+ v_type = Regexp.last_match[:v_type]
382
+ {}.tap do |hash|
383
+ value.each do |k, v|
384
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
385
+ end
386
+ end
387
+ else # model
388
+ _model = Object.const_get("PureCloud").const_get(type).new
389
+ _model.build_from_hash(value)
390
+ end
391
+ end
392
+
393
+ def to_s
394
+ to_hash.to_s
395
+ end
396
+
397
+ # to_body is an alias to to_body (backward compatibility))
398
+ def to_body
399
+ to_hash
400
+ end
401
+
402
+ # return the object in the form of hash
403
+ def to_hash
404
+ hash = {}
405
+ self.class.attribute_map.each_pair do |attr, param|
406
+ value = self.send(attr)
407
+ next if value.nil?
408
+ hash[param] = _to_hash(value)
409
+ end
410
+ hash
411
+ end
412
+
413
+ # Method to output non-array value in the form of hash
414
+ # For object, use to_hash. Otherwise, just return the value
415
+ def _to_hash(value)
416
+ if value.is_a?(Array)
417
+ value.compact.map{ |v| _to_hash(v) }
418
+ elsif value.is_a?(Hash)
419
+ {}.tap do |hash|
420
+ value.each { |k, v| hash[k] = _to_hash(v) }
421
+ end
422
+ elsif value.respond_to? :to_hash
423
+ value.to_hash
424
+ else
425
+ value
426
+ end
427
+ end
428
+
429
+ end
430
+ end
@@ -0,0 +1,323 @@
1
+ =begin
2
+ PureCloud Platform API
3
+
4
+ With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.
5
+
6
+ OpenAPI spec version: v2
7
+ Contact: DeveloperEvangelists@genesys.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ License: UNLICENSED
11
+ https://help.mypurecloud.com/articles/terms-and-conditions/
12
+
13
+ Terms of Service: https://help.mypurecloud.com/articles/terms-and-conditions/
14
+
15
+ =end
16
+
17
+ require 'date'
18
+
19
+ module PureCloud
20
+ class EvaluationAggregationView
21
+ # Target metric name
22
+ attr_accessor :target
23
+
24
+ # A unique name for this view. Must be distinct from other views and built-in metric names.
25
+ attr_accessor :name
26
+
27
+ # Type of view you wish to create
28
+ attr_accessor :function
29
+
30
+ # Range of numbers for slicing up data
31
+ attr_accessor :range
32
+
33
+ # Attribute mapping from ruby-style variable name to JSON key.
34
+ def self.attribute_map
35
+ {
36
+
37
+ :'target' => :'target',
38
+
39
+ :'name' => :'name',
40
+
41
+ :'function' => :'function',
42
+
43
+ :'range' => :'range'
44
+
45
+ }
46
+ end
47
+
48
+ # Attribute type mapping.
49
+ def self.swagger_types
50
+ {
51
+
52
+ :'target' => :'String',
53
+
54
+ :'name' => :'String',
55
+
56
+ :'function' => :'String',
57
+
58
+ :'range' => :'AggregationRange'
59
+
60
+ }
61
+ end
62
+
63
+ # Initializes the object
64
+ # @param [Hash] attributes Model attributes in the form of hash
65
+ def initialize(attributes = {})
66
+ return unless attributes.is_a?(Hash)
67
+
68
+ # convert string to symbol for hash key
69
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
70
+
71
+
72
+ if attributes.has_key?(:'target')
73
+
74
+
75
+ self.target = attributes[:'target']
76
+
77
+
78
+ end
79
+
80
+
81
+ if attributes.has_key?(:'name')
82
+
83
+
84
+ self.name = attributes[:'name']
85
+
86
+
87
+ end
88
+
89
+
90
+ if attributes.has_key?(:'function')
91
+
92
+
93
+ self.function = attributes[:'function']
94
+
95
+
96
+ end
97
+
98
+
99
+ if attributes.has_key?(:'range')
100
+
101
+
102
+ self.range = attributes[:'range']
103
+
104
+
105
+ end
106
+
107
+
108
+ end
109
+
110
+ # Show invalid properties with the reasons. Usually used together with valid?
111
+ # @return Array for valid properies with the reasons
112
+ def list_invalid_properties
113
+ invalid_properties = Array.new
114
+
115
+
116
+ return invalid_properties
117
+ end
118
+
119
+ # Check to see if the all the properties in the model are valid
120
+ # @return true if the model is valid
121
+ def valid?
122
+
123
+
124
+ if @target.nil?
125
+ return false
126
+ end
127
+
128
+
129
+
130
+ allowed_values = ["nEvaluations", "nEvaluationsDeleted", "nEvaluationsRescored", "oTotalCriticalScore", "oTotalScore"]
131
+ if @target && !allowed_values.include?(@target)
132
+ return false
133
+ end
134
+
135
+
136
+
137
+
138
+ if @name.nil?
139
+ return false
140
+ end
141
+
142
+
143
+
144
+
145
+
146
+
147
+ if @function.nil?
148
+ return false
149
+ end
150
+
151
+
152
+
153
+ allowed_values = ["rangeBound"]
154
+ if @function && !allowed_values.include?(@function)
155
+ return false
156
+ end
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+ end
165
+
166
+
167
+
168
+ # Custom attribute writer method checking allowed values (enum).
169
+ # @param [Object] target Object to be assigned
170
+ def target=(target)
171
+ allowed_values = ["nEvaluations", "nEvaluationsDeleted", "nEvaluationsRescored", "oTotalCriticalScore", "oTotalScore"]
172
+ if target && !allowed_values.include?(target)
173
+ fail ArgumentError, "invalid value for 'target', must be one of #{allowed_values}."
174
+ end
175
+ @target = target
176
+ end
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ # Custom attribute writer method checking allowed values (enum).
188
+ # @param [Object] function Object to be assigned
189
+ def function=(function)
190
+ allowed_values = ["rangeBound"]
191
+ if function && !allowed_values.include?(function)
192
+ fail ArgumentError, "invalid value for 'function', must be one of #{allowed_values}."
193
+ end
194
+ @function = function
195
+ end
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+ # Checks equality by comparing each attribute.
206
+ # @param [Object] Object to be compared
207
+ def ==(o)
208
+ return true if self.equal?(o)
209
+ self.class == o.class &&
210
+ target == o.target &&
211
+ name == o.name &&
212
+ function == o.function &&
213
+ range == o.range
214
+ end
215
+
216
+ # @see the `==` method
217
+ # @param [Object] Object to be compared
218
+ def eql?(o)
219
+ self == o
220
+ end
221
+
222
+ # Calculates hash code according to all attributes.
223
+ # @return [Fixnum] Hash code
224
+ def hash
225
+ [target, name, function, range].hash
226
+ end
227
+
228
+ # build the object from hash
229
+ def build_from_hash(attributes)
230
+ return nil unless attributes.is_a?(Hash)
231
+ self.class.swagger_types.each_pair do |key, type|
232
+ if type =~ /^Array<(.*)>/i
233
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
234
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
235
+ else
236
+ #TODO show warning in debug mode
237
+ end
238
+ elsif !attributes[self.class.attribute_map[key]].nil?
239
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
240
+ else
241
+ # data not found in attributes(hash), not an issue as the data can be optional
242
+ end
243
+ end
244
+
245
+ self
246
+ end
247
+
248
+ def _deserialize(type, value)
249
+ case type.to_sym
250
+ when :DateTime
251
+ DateTime.parse(value)
252
+ when :Date
253
+ Date.parse(value)
254
+ when :String
255
+ value.to_s
256
+ when :Integer
257
+ value.to_i
258
+ when :Float
259
+ value.to_f
260
+ when :BOOLEAN
261
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
262
+ true
263
+ else
264
+ false
265
+ end
266
+ when :Object
267
+ # generic object (usually a Hash), return directly
268
+ value
269
+ when /\AArray<(?<inner_type>.+)>\z/
270
+ inner_type = Regexp.last_match[:inner_type]
271
+ value.map { |v| _deserialize(inner_type, v) }
272
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
273
+ k_type = Regexp.last_match[:k_type]
274
+ v_type = Regexp.last_match[:v_type]
275
+ {}.tap do |hash|
276
+ value.each do |k, v|
277
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
278
+ end
279
+ end
280
+ else # model
281
+ _model = Object.const_get("PureCloud").const_get(type).new
282
+ _model.build_from_hash(value)
283
+ end
284
+ end
285
+
286
+ def to_s
287
+ to_hash.to_s
288
+ end
289
+
290
+ # to_body is an alias to to_body (backward compatibility))
291
+ def to_body
292
+ to_hash
293
+ end
294
+
295
+ # return the object in the form of hash
296
+ def to_hash
297
+ hash = {}
298
+ self.class.attribute_map.each_pair do |attr, param|
299
+ value = self.send(attr)
300
+ next if value.nil?
301
+ hash[param] = _to_hash(value)
302
+ end
303
+ hash
304
+ end
305
+
306
+ # Method to output non-array value in the form of hash
307
+ # For object, use to_hash. Otherwise, just return the value
308
+ def _to_hash(value)
309
+ if value.is_a?(Array)
310
+ value.compact.map{ |v| _to_hash(v) }
311
+ elsif value.is_a?(Hash)
312
+ {}.tap do |hash|
313
+ value.each { |k, v| hash[k] = _to_hash(v) }
314
+ end
315
+ elsif value.respond_to? :to_hash
316
+ value.to_hash
317
+ else
318
+ value
319
+ end
320
+ end
321
+
322
+ end
323
+ end