Skip to content

Commit 55d6cba

Browse files
author
PureCloud Jenkins
committed
219.1.0
1 parent 347136d commit 55d6cba

5,439 files changed

Lines changed: 25960 additions & 10446 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
Documentation can be found at https://mypurecloud.github.io/platform-client-sdk-python/
77

8-
Documentation version PureCloudPlatformClientV2 219.0.0
8+
Documentation version PureCloudPlatformClientV2 219.1.0
99

1010
## Preview APIs
1111

@@ -354,6 +354,31 @@ You can use `to_json()` method on the model to get a raw JSON string of the mode
354354
print(usersApi.get_users_me().to_json())
355355
```
356356

357+
### Force JSON Null value in API request body's attribute
358+
359+
Some methods require a body content (i.e. a model) as input parameter (*e.g. usersApi.post_users(body), usersApi.patch_user(userid, body)*).
360+
361+
When the method is invoked, the SDK will automatically serialize the model (the *body* input parameter) to a JSON content (the API request's body).
362+
*Note: With Python, `None` value is serialized into JSON `null`.*
363+
364+
Before issuing the request to Genesys Cloud, the SDK will **strip out** all attributes with a JSON `null` value (i.e. model properties with a value set to `None` are ignored).
365+
Except for a few cases, this is what is expected by the Genesys Cloud platform.
366+
367+
Indeed, there are couple of API endpoints, where JSON `null` value is used to reset a property.
368+
e.g. with *PATCH /api/v2/taskmanagement/worktypes/{worktypeId}* (*patch_taskmanagement_worktype(worktype_id, body)*), *defaultQueueId* can be set to null in order to reset this worktype's property.
369+
370+
This is why we introduce a new singleton class - *ApiNullValue()* - which will allow overriding the SDK's default behavior.
371+
A model property set to `PureCloudPlatformClientV2.ApiNullValue()`, instead of `None`, will be kept and serialized to JSON as `null`.
372+
373+
```python
374+
task_api = PureCloudPlatformClientV2.TaskManagementApi()
375+
worktype_update = PureCloudPlatformClientV2.WorktypeUpdate()
376+
worktype_update.name = 'abcd'
377+
worktype_update.default_queue_id = PureCloudPlatformClientV2.ApiNullValue()
378+
...
379+
task_api.patch_taskmanagement_worktype(worktype_id, worktype_update)
380+
```
381+
357382
## SDK Source Code Generation
358383

359384
The SDK is automatically regenerated and published from the API's definition after each API release. For more information on the build process, see the [platform-client-sdk-common](https://github.com/MyPureCloud/platform-client-sdk-common) project.

build/.openapi-generator/FILES

Lines changed: 128 additions & 0 deletions
Large diffs are not rendered by default.

build/APIData.json

Lines changed: 302 additions & 0 deletions
Large diffs are not rendered by default.

build/License.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2024 Genesys Cloud Services, Inc.
3+
Copyright (c) 2025 Genesys Cloud Services, Inc.
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

build/PureCloudPlatformClientV2/__init__.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@
168168
from .models.agents_bid_assigned_work_plan_override_request import AgentsBidAssignedWorkPlanOverrideRequest
169169
from .models.agents_integrations_listing import AgentsIntegrationsListing
170170
from .models.agents_work_plans_response import AgentsWorkPlansResponse
171+
from .models.aggregate_historical_availability import AggregateHistoricalAvailability
171172
from .models.aggregate_metric_data import AggregateMetricData
172173
from .models.aggregate_view_data import AggregateViewData
173174
from .models.aggregation_range import AggregationRange
@@ -529,6 +530,19 @@
529530
from .models.bulk_fetch_organizations_response import BulkFetchOrganizationsResponse
530531
from .models.bulk_fetch_relationships_response import BulkFetchRelationshipsResponse
531532
from .models.bulk_ids_request import BulkIdsRequest
533+
from .models.bulk_job import BulkJob
534+
from .models.bulk_job_add_request import BulkJobAddRequest
535+
from .models.bulk_job_add_response import BulkJobAddResponse
536+
from .models.bulk_job_add_result import BulkJobAddResult
537+
from .models.bulk_job_add_workitem_summary import BulkJobAddWorkitemSummary
538+
from .models.bulk_job_entity import BulkJobEntity
539+
from .models.bulk_job_error import BulkJobError
540+
from .models.bulk_job_terminate_request import BulkJobTerminateRequest
541+
from .models.bulk_job_terminate_result import BulkJobTerminateResult
542+
from .models.bulk_job_terminate_result_entity import BulkJobTerminateResultEntity
543+
from .models.bulk_job_terminate_results_response import BulkJobTerminateResultsResponse
544+
from .models.bulk_job_update import BulkJobUpdate
545+
from .models.bulk_jobs_listing import BulkJobsListing
532546
from .models.bulk_notes_request import BulkNotesRequest
533547
from .models.bulk_notes_response import BulkNotesResponse
534548
from .models.bulk_organizations_request import BulkOrganizationsRequest
@@ -744,6 +758,7 @@
744758
from .models.complex_variable_info import ComplexVariableInfo
745759
from .models.compliance import Compliance
746760
from .models.compliance_response import ComplianceResponse
761+
from .models.computed_data import ComputedData
747762
from .models.condition import Condition
748763
from .models.conditional_group_routing import ConditionalGroupRouting
749764
from .models.conditional_group_routing_rule import ConditionalGroupRoutingRule
@@ -850,10 +865,19 @@
850865
from .models.content_setting import ContentSetting
851866
from .models.content_story import ContentStory
852867
from .models.content_text import ContentText
868+
from .models.contest_complete_data import ContestCompleteData
869+
from .models.contest_complete_data_score import ContestCompleteDataScore
870+
from .models.contest_data_metrics import ContestDataMetrics
871+
from .models.contest_data_prizes import ContestDataPrizes
872+
from .models.contest_data_winners import ContestDataWinners
873+
from .models.contest_data_winners_users import ContestDataWinnersUsers
853874
from .models.context import Context
854875
from .models.context_entity import ContextEntity
855876
from .models.context_intent import ContextIntent
856877
from .models.context_pattern import ContextPattern
878+
from .models.continuous_forecast_get_session_response import ContinuousForecastGetSessionResponse
879+
from .models.continuous_forecast_session_response import ContinuousForecastSessionResponse
880+
from .models.continuous_forecast_snapshot_response import ContinuousForecastSnapshotResponse
857881
from .models.conversation import Conversation
858882
from .models.conversation_activity_data import ConversationActivityData
859883
from .models.conversation_activity_entity_data import ConversationActivityEntityData
@@ -1312,6 +1336,7 @@
13121336
from .models.did_number_entity_listing import DIDNumberEntityListing
13131337
from .models.did_pool import DIDPool
13141338
from .models.did_pool_entity_listing import DIDPoolEntityListing
1339+
from .models.daily import Daily
13151340
from .models.daily_possible_shift import DailyPossibleShift
13161341
from .models.dashboard_configuration import DashboardConfiguration
13171342
from .models.dashboard_configuration_bulk_request import DashboardConfigurationBulkRequest
@@ -1770,6 +1795,7 @@
17701795
from .models.event_action import EventAction
17711796
from .models.event_aggregates_query_request import EventAggregatesQueryRequest
17721797
from .models.event_aggregates_response import EventAggregatesResponse
1798+
from .models.event_co_browse import EventCoBrowse
17731799
from .models.event_condition import EventCondition
17741800
from .models.event_definition import EventDefinition
17751801
from .models.event_definition_aggregates import EventDefinitionAggregates
@@ -1778,10 +1804,13 @@
17781804
from .models.event_listing import EventListing
17791805
from .models.event_log import EventLog
17801806
from .models.event_message import EventMessage
1807+
from .models.event_presence import EventPresence
17811808
from .models.event_query_request import EventQueryRequest
17821809
from .models.event_query_response import EventQueryResponse
17831810
from .models.event_session import EventSession
17841811
from .models.event_setting import EventSetting
1812+
from .models.event_typing import EventTyping
1813+
from .models.event_video import EventVideo
17851814
from .models.execute_recording_jobs_query import ExecuteRecordingJobsQuery
17861815
from .models.execution_data_entity import ExecutionDataEntity
17871816
from .models.execution_data_flow_settings_response import ExecutionDataFlowSettingsResponse
@@ -2118,6 +2147,7 @@
21182147
from .models.historical_adherence_day_metrics import HistoricalAdherenceDayMetrics
21192148
from .models.historical_adherence_exception_info import HistoricalAdherenceExceptionInfo
21202149
from .models.historical_adherence_query_result import HistoricalAdherenceQueryResult
2150+
from .models.historical_data import HistoricalData
21212151
from .models.historical_import_delete_job_response import HistoricalImportDeleteJobResponse
21222152
from .models.historical_import_status import HistoricalImportStatus
21232153
from .models.historical_import_status_listing import HistoricalImportStatusListing
@@ -2185,6 +2215,7 @@
21852215
from .models.insights_details_metric_period_points import InsightsDetailsMetricPeriodPoints
21862216
from .models.insights_details_overall_item import InsightsDetailsOverallItem
21872217
from .models.insights_details_overall_period_points import InsightsDetailsOverallPeriodPoints
2218+
from .models.insights_rankings import InsightsRankings
21882219
from .models.insights_summary import InsightsSummary
21892220
from .models.insights_summary_metric_item import InsightsSummaryMetricItem
21902221
from .models.insights_summary_metric_period_points import InsightsSummaryMetricPeriodPoints
@@ -2195,6 +2226,7 @@
21952226
from .models.insights_trend_metric_item import InsightsTrendMetricItem
21962227
from .models.insights_trend_total_item import InsightsTrendTotalItem
21972228
from .models.insights_trends import InsightsTrends
2229+
from .models.instagram_data_ingestion_rule_response import InstagramDataIngestionRuleResponse
21982230
from .models.instagram_id import InstagramId
21992231
from .models.instagram_integration import InstagramIntegration
22002232
from .models.instagram_integration_entity_listing import InstagramIntegrationEntityListing
@@ -2749,6 +2781,7 @@
27492781
from .models.message_data import MessageData
27502782
from .models.message_details import MessageDetails
27512783
from .models.message_evaluation import MessageEvaluation
2784+
from .models.message_event import MessageEvent
27522785
from .models.message_footer import MessageFooter
27532786
from .models.message_header import MessageHeader
27542787
from .models.message_info import MessageInfo
@@ -2824,6 +2857,9 @@
28242857
from .models.miner_topics_listing import MinerTopicsListing
28252858
from .models.mobile_notification_settings import MobileNotificationSettings
28262859
from .models.mobile_settings import MobileSettings
2860+
from .models.model_data import ModelData
2861+
from .models.model_meta_data import ModelMetaData
2862+
from .models.model_meta_data_result import ModelMetaDataResult
28272863
from .models.modifiable_rule_properties import ModifiableRuleProperties
28282864
from .models.monthly_planning_period_settings import MonthlyPlanningPeriodSettings
28292865
from .models.move_agent_response import MoveAgentResponse
@@ -3141,6 +3177,7 @@
31413177
from .models.pinned_message_request import PinnedMessageRequest
31423178
from .models.planning_group import PlanningGroup
31433179
from .models.planning_group_list import PlanningGroupList
3180+
from .models.planning_group_model import PlanningGroupModel
31443181
from .models.planning_group_outputs import PlanningGroupOutputs
31453182
from .models.planning_group_reference import PlanningGroupReference
31463183
from .models.planning_period_settings import PlanningPeriodSettings
@@ -3218,6 +3255,7 @@
32183255
from .models.quality_audit_query_execution_status_response import QualityAuditQueryExecutionStatusResponse
32193256
from .models.quality_audit_query_filter import QualityAuditQueryFilter
32203257
from .models.quality_evaluation_score_item import QualityEvaluationScoreItem
3258+
from .models.quarter_hourly import QuarterHourly
32213259
from .models.query_adherence_explanations_response import QueryAdherenceExplanationsResponse
32223260
from .models.query_agents_integrations_request import QueryAgentsIntegrationsRequest
32233261
from .models.query_criteria import QueryCriteria
@@ -3642,6 +3680,8 @@
36423680
from .models.resolution_aggregate_query_clause import ResolutionAggregateQueryClause
36433681
from .models.resolution_aggregate_query_filter import ResolutionAggregateQueryFilter
36443682
from .models.resolution_aggregate_query_predicate import ResolutionAggregateQueryPredicate
3683+
from .models.resolution_aggregate_query_response import ResolutionAggregateQueryResponse
3684+
from .models.resolution_aggregation_query import ResolutionAggregationQuery
36453685
from .models.resolution_aggregation_view import ResolutionAggregationView
36463686
from .models.resolution_async_aggregate_query_response import ResolutionAsyncAggregateQueryResponse
36473687
from .models.resolution_async_aggregation_query import ResolutionAsyncAggregationQuery
@@ -3836,8 +3876,13 @@
38363876
from .models.service_now_source_response import ServiceNowSourceResponse
38373877
from .models.session import Session
38383878
from .models.session_end_details import SessionEndDetails
3879+
from .models.session_files import SessionFiles
3880+
from .models.session_info import SessionInfo
38393881
from .models.session_last_event import SessionLastEvent
38403882
from .models.session_listing import SessionListing
3883+
from .models.session_meta_data import SessionMetaData
3884+
from .models.session_meta_data_result import SessionMetaDataResult
3885+
from .models.session_metric_data import SessionMetricData
38413886
from .models.session_segment_assignment import SessionSegmentAssignment
38423887
from .models.sessions_response import SessionsResponse
38433888
from .models.set_content_template_action_settings import SetContentTemplateActionSettings
@@ -3911,6 +3956,12 @@
39113956
from .models.sms_phone_number_provision import SmsPhoneNumberProvision
39123957
from .models.sms_phone_number_ref import SmsPhoneNumberRef
39133958
from .models.sms_provisioning_status import SmsProvisioningStatus
3959+
from .models.snapshot_files import SnapshotFiles
3960+
from .models.snapshot_info import SnapshotInfo
3961+
from .models.snapshot_meta_data import SnapshotMetaData
3962+
from .models.snapshot_meta_data_result import SnapshotMetaDataResult
3963+
from .models.snapshot_metric_data import SnapshotMetricData
3964+
from .models.snapshots import Snapshots
39143965
from .models.social_expression import SocialExpression
39153966
from .models.social_handle import SocialHandle
39163967
from .models.social_keyword import SocialKeyword
@@ -4149,6 +4200,7 @@
41494200
from .models.time_slot import TimeSlot
41504201
from .models.time_zone_entity_listing import TimeZoneEntityListing
41514202
from .models.time_zone_mapping_preview import TimeZoneMappingPreview
4203+
from .models.timeseries import Timeseries
41524204
from .models.token_info import TokenInfo
41534205
from .models.token_info_cloned_user import TokenInfoClonedUser
41544206
from .models.topic import Topic
@@ -4613,6 +4665,8 @@
46134665
from .models.week_shift_trade_list_response import WeekShiftTradeListResponse
46144666
from .models.week_shift_trade_matches_summary_response import WeekShiftTradeMatchesSummaryResponse
46154667
from .models.week_shift_trade_response import WeekShiftTradeResponse
4668+
from .models.weekly import Weekly
4669+
from .models.weeks import Weeks
46164670
from .models.wem_coaching_user_notification_topic_coaching_appointment_reference import WemCoachingUserNotificationTopicCoachingAppointmentReference
46174671
from .models.wem_coaching_user_notification_topic_coaching_user_notification import WemCoachingUserNotificationTopicCoachingUserNotification
46184672
from .models.wfm_activity_plan_job_complete_topic_activity_plan_job_exception import WfmActivityPlanJobCompleteTopicActivityPlanJobException
@@ -4798,6 +4852,7 @@
47984852
from .models.wfm_versioned_entity_metadata import WfmVersionedEntityMetadata
47994853
from .models.whats_app_available_phone_number_details import WhatsAppAvailablePhoneNumberDetails
48004854
from .models.whats_app_available_phone_number_details_listing import WhatsAppAvailablePhoneNumberDetailsListing
4855+
from .models.whats_app_column import WhatsAppColumn
48014856
from .models.whats_app_config import WhatsAppConfig
48024857
from .models.whats_app_definition import WhatsAppDefinition
48034858
from .models.whats_app_embedded_signup_integration_activation_request import WhatsAppEmbeddedSignupIntegrationActivationRequest
@@ -4868,6 +4923,7 @@
48684923
from .models.workflow_target_settings import WorkflowTargetSettings
48694924
from .models.workitem import Workitem
48704925
from .models.workitem_change_listing import WorkitemChangeListing
4926+
from .models.workitem_common_create import WorkitemCommonCreate
48714927
from .models.workitem_create import WorkitemCreate
48724928
from .models.workitem_date_based_condition import WorkitemDateBasedCondition
48734929
from .models.workitem_date_based_condition_update import WorkitemDateBasedConditionUpdate
@@ -5157,4 +5213,6 @@
51575213

51585214
from .purecloud_region_hosts import PureCloudRegionHosts
51595215

5216+
from .api_null_value import ApiNullValue
5217+
51605218
configuration = Configuration()

build/PureCloudPlatformClientV2/api_client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from . import models
2323
from .rest import RESTClientObject
2424
from .rest import ApiException
25+
from .api_null_value import ApiNullValue
2526

2627
import os
2728
import re
@@ -392,7 +393,7 @@ def __call_api(self, resource_path, method,
392393
header_params['Cookie'] = self.cookie
393394
if header_params:
394395
header_params = self.sanitize_for_serialization(header_params)
395-
header_params['purecloud-sdk'] = '219.0.0'
396+
header_params['purecloud-sdk'] = '219.1.0'
396397

397398
# path parameters
398399
if path_params:
@@ -500,6 +501,8 @@ def sanitize_for_serialization(self, obj):
500501
types = types + (unicode,)
501502
if isinstance(obj, type(None)):
502503
return None
504+
elif isinstance(obj, type(ApiNullValue())):
505+
return None
503506
elif isinstance(obj, types):
504507
return obj
505508
elif isinstance(obj, list):
@@ -518,7 +521,7 @@ def sanitize_for_serialization(self, obj):
518521
# model definition for request.
519522
obj_dict = {obj.attribute_map[attr]: getattr(obj, attr)
520523
for attr, _ in iteritems(obj.swagger_types)
521-
if getattr(obj, attr) is not None}
524+
if getattr(obj, attr) is not None or isinstance(getattr(obj, attr), type(ApiNullValue()))}
522525

523526
return {key: self.sanitize_for_serialization(val)
524527
for key, val in iteritems(obj_dict)}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
def singleton(cls, *args, **kw):
2+
instances = {}
3+
4+
def _singleton():
5+
if cls not in instances:
6+
instances[cls] = cls(*args, **kw)
7+
return instances[cls]
8+
return _singleton
9+
10+
11+
@singleton
12+
class ApiNullValue(object):
13+
"""
14+
NOTE: This is a custom class to represent Json Nullable value in models
15+
"""
16+
17+
def __init__(self):
18+
"""
19+
Constructor
20+
"""
21+
self.swagger_types = {
22+
}
23+
24+
self.attribute_map = {
25+
}
26+
27+
def to_dict(self):
28+
"""
29+
Returns None
30+
"""
31+
return None
32+
33+
def to_json(self):
34+
"""
35+
Returns None
36+
"""
37+
return None
38+

0 commit comments

Comments
 (0)