airbyte-agent-zendesk-support 0.18.46__py3-none-any.whl → 0.18.48__py3-none-any.whl

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.
@@ -30,7 +30,7 @@ from uuid import (
30
30
  ZendeskSupportConnectorModel: ConnectorModel = ConnectorModel(
31
31
  id=UUID('79c1aa37-dae3-42ae-b333-d1c105477715'),
32
32
  name='zendesk-support',
33
- version='0.1.5',
33
+ version='0.1.6',
34
34
  base_url='https://{subdomain}.zendesk.com/api/v2',
35
35
  auth=AuthConfig(
36
36
  options=[
@@ -668,6 +668,612 @@ class ZendeskSupportExecuteResultWithMeta(ZendeskSupportExecuteResult[T], Generi
668
668
  meta: S
669
669
  """Metadata about the response (e.g., pagination cursors, record counts)."""
670
670
 
671
+ # ===== SEARCH DATA MODELS =====
672
+ # Entity-specific Pydantic models for search result data
673
+
674
+ # Type variable for search data generic
675
+ D = TypeVar('D')
676
+
677
+ class BrandsSearchData(BaseModel):
678
+ """Search result data for brands entity."""
679
+ model_config = ConfigDict(extra="allow")
680
+
681
+ active: bool | None = None
682
+ """Indicates whether the brand is set as active"""
683
+ brand_url: str | None = None
684
+ """The public URL of the brand"""
685
+ created_at: str | None = None
686
+ """Timestamp when the brand was created"""
687
+ default: bool | None = None
688
+ """Indicates whether the brand is the default brand for tickets generated from non-branded channels"""
689
+ has_help_center: bool | None = None
690
+ """Indicates whether the brand has a Help Center enabled"""
691
+ help_center_state: str | None = None
692
+ """The state of the Help Center, with allowed values of enabled, disabled, or restricted"""
693
+ host_mapping: str | None = None
694
+ """The host mapping configuration for the brand, visible only to administrators"""
695
+ id: int | None = None
696
+ """Unique identifier automatically assigned when the brand is created"""
697
+ is_deleted: bool | None = None
698
+ """Indicates whether the brand has been deleted"""
699
+ logo: str | None = None
700
+ """Brand logo image file represented as an Attachment object"""
701
+ name: str | None = None
702
+ """The name of the brand"""
703
+ signature_template: str | None = None
704
+ """The signature template used for the brand"""
705
+ subdomain: str | None = None
706
+ """The subdomain associated with the brand"""
707
+ ticket_form_ids: list[Any] | None = None
708
+ """Array of ticket form IDs that are available for use by this brand"""
709
+ updated_at: str | None = None
710
+ """Timestamp when the brand was last updated"""
711
+ url: str | None = None
712
+ """The API URL for accessing this brand resource"""
713
+
714
+
715
+ class GroupsSearchData(BaseModel):
716
+ """Search result data for groups entity."""
717
+ model_config = ConfigDict(extra="allow")
718
+
719
+ created_at: str | None = None
720
+ """Timestamp indicating when the group was created"""
721
+ default: bool | None = None
722
+ """Indicates if the group is the default one for the account"""
723
+ deleted: bool | None = None
724
+ """Indicates whether the group has been deleted"""
725
+ description: str | None = None
726
+ """The description of the group"""
727
+ id: int | None = None
728
+ """Unique identifier automatically assigned when creating groups"""
729
+ is_public: bool | None = None
730
+ """Indicates if the group is public (true) or private (false)"""
731
+ name: str | None = None
732
+ """The name of the group"""
733
+ updated_at: str | None = None
734
+ """Timestamp indicating when the group was last updated"""
735
+ url: str | None = None
736
+ """The API URL of the group"""
737
+
738
+
739
+ class OrganizationsSearchData(BaseModel):
740
+ """Search result data for organizations entity."""
741
+ model_config = ConfigDict(extra="allow")
742
+
743
+ created_at: str | None = None
744
+ """Timestamp when the organization was created"""
745
+ deleted_at: str | None = None
746
+ """Timestamp when the organization was deleted"""
747
+ details: str | None = None
748
+ """Details about the organization, such as the address"""
749
+ domain_names: list[Any] | None = None
750
+ """Array of domain names associated with this organization for automatic user assignment"""
751
+ external_id: str | None = None
752
+ """Unique external identifier to associate the organization to an external record (case-insensitive)"""
753
+ group_id: int | None = None
754
+ """ID of the group where new tickets from users in this organization are automatically assigned"""
755
+ id: int | None = None
756
+ """Unique identifier automatically assigned when the organization is created"""
757
+ name: str | None = None
758
+ """Unique name for the organization (mandatory field)"""
759
+ notes: str | None = None
760
+ """Notes about the organization"""
761
+ organization_fields: dict[str, Any] | None = None
762
+ """Key-value object for custom organization fields"""
763
+ shared_comments: bool | None = None
764
+ """Boolean indicating whether end users in this organization can comment on each other's tickets"""
765
+ shared_tickets: bool | None = None
766
+ """Boolean indicating whether end users in this organization can see each other's tickets"""
767
+ tags: list[Any] | None = None
768
+ """Array of tags associated with the organization"""
769
+ updated_at: str | None = None
770
+ """Timestamp of the last update to the organization"""
771
+ url: str | None = None
772
+ """The API URL of this organization"""
773
+
774
+
775
+ class SatisfactionRatingsSearchData(BaseModel):
776
+ """Search result data for satisfaction_ratings entity."""
777
+ model_config = ConfigDict(extra="allow")
778
+
779
+ assignee_id: int | None = None
780
+ """The identifier of the agent assigned to the ticket at the time the rating was submitted"""
781
+ comment: str | None = None
782
+ """Optional comment provided by the requester with the rating"""
783
+ created_at: str | None = None
784
+ """Timestamp indicating when the satisfaction rating was created"""
785
+ group_id: int | None = None
786
+ """The identifier of the group assigned to the ticket at the time the rating was submitted"""
787
+ id: int | None = None
788
+ """Unique identifier for the satisfaction rating, automatically assigned upon creation"""
789
+ reason: str | None = None
790
+ """Free-text reason for a bad rating provided by the requester in a follow-up question"""
791
+ reason_id: int | None = None
792
+ """Identifier for the predefined reason given for a negative rating, only applicable when score is '..."""
793
+ requester_id: int | None = None
794
+ """The identifier of the ticket requester who submitted the satisfaction rating"""
795
+ score: str | None = None
796
+ """The satisfaction rating value: 'offered', 'unoffered', 'good', or 'bad'"""
797
+ ticket_id: int | None = None
798
+ """The identifier of the ticket being rated"""
799
+ updated_at: str | None = None
800
+ """Timestamp indicating when the satisfaction rating was last updated"""
801
+ url: str | None = None
802
+ """The API URL of this satisfaction rating resource"""
803
+
804
+
805
+ class TagsSearchData(BaseModel):
806
+ """Search result data for tags entity."""
807
+ model_config = ConfigDict(extra="allow")
808
+
809
+ count: int | None = None
810
+ """The number of times this tag has been used across resources"""
811
+ name: str | None = None
812
+ """The tag name string used to label and categorize resources"""
813
+
814
+
815
+ class TicketAuditsSearchData(BaseModel):
816
+ """Search result data for ticket_audits entity."""
817
+ model_config = ConfigDict(extra="allow")
818
+
819
+ attachments: list[Any] | None = None
820
+ """Files or documents attached to the audit"""
821
+ author_id: int | None = None
822
+ """The unique identifier of the user who created the audit"""
823
+ created_at: str | None = None
824
+ """Timestamp indicating when the audit was created"""
825
+ events: list[Any] | None = None
826
+ """Array of events that occurred in this audit, such as field changes, comments, or tag updates"""
827
+ id: int | None = None
828
+ """Unique identifier for the audit record, automatically assigned when the audit is created"""
829
+ metadata: dict[str, Any] | None = None
830
+ """Custom and system data associated with the audit"""
831
+ ticket_id: int | None = None
832
+ """The unique identifier of the ticket associated with this audit"""
833
+ via: dict[str, Any] | None = None
834
+ """Describes how the audit was created, providing context about the creation source"""
835
+
836
+
837
+ class TicketCommentsSearchData(BaseModel):
838
+ """Search result data for ticket_comments entity."""
839
+ model_config = ConfigDict(extra="allow")
840
+
841
+ attachments: list[Any] | None = None
842
+ """List of files or media attached to the comment"""
843
+ audit_id: int | None = None
844
+ """Identifier of the audit record associated with this comment event"""
845
+ author_id: int | None = None
846
+ """Identifier of the user who created the comment"""
847
+ body: str | None = None
848
+ """Content of the comment in its original format"""
849
+ created_at: str | None = None
850
+ """Timestamp when the comment was created"""
851
+ event_type: str | None = None
852
+ """Specific classification of the event within the ticket event stream"""
853
+ html_body: str | None = None
854
+ """HTML-formatted content of the comment"""
855
+ id: int | None = None
856
+ """Unique identifier for the comment event"""
857
+ metadata: dict[str, Any] | None = None
858
+ """Additional structured information about the comment not covered by standard fields"""
859
+ plain_body: str | None = None
860
+ """Plain text content of the comment without formatting"""
861
+ public: bool | None = None
862
+ """Boolean indicating whether the comment is visible to end users or is an internal note"""
863
+ ticket_id: int | None = None
864
+ """Identifier of the ticket to which this comment belongs"""
865
+ timestamp: int | None = None
866
+ """Timestamp of when the event occurred in the incremental export stream"""
867
+ type: str | None = None
868
+ """Type of event, typically indicating this is a comment event"""
869
+ uploads: list[Any] | None = None
870
+ """Array of upload tokens or identifiers for files being attached to the comment"""
871
+ via: dict[str, Any] | None = None
872
+ """Channel or method through which the comment was submitted"""
873
+ via_reference_id: int | None = None
874
+ """Reference identifier for the channel through which the comment was created"""
875
+
876
+
877
+ class TicketFieldsSearchData(BaseModel):
878
+ """Search result data for ticket_fields entity."""
879
+ model_config = ConfigDict(extra="allow")
880
+
881
+ active: bool | None = None
882
+ """Whether this field is currently available for use"""
883
+ agent_description: str | None = None
884
+ """A description of the ticket field that only agents can see"""
885
+ collapsed_for_agents: bool | None = None
886
+ """If true, the field is shown to agents by default; if false, it is hidden alongside infrequently u..."""
887
+ created_at: str | None = None
888
+ """Timestamp when the custom ticket field was created"""
889
+ custom_field_options: list[Any] | None = None
890
+ """Array of option objects for custom ticket fields of type multiselect or tagger, containing name a..."""
891
+ custom_statuses: list[Any] | None = None
892
+ """List of customized ticket statuses, only present for system ticket fields of type custom_status"""
893
+ description: str | None = None
894
+ """Text describing the purpose of the ticket field to users"""
895
+ editable_in_portal: bool | None = None
896
+ """Whether this field is editable by end users in Help Center"""
897
+ id: int | None = None
898
+ """Unique identifier for the ticket field, automatically assigned when created"""
899
+ key: str | None = None
900
+ """Internal identifier or reference key for the field"""
901
+ position: int | None = None
902
+ """The relative position of the ticket field on a ticket, controlling display order"""
903
+ raw_description: str | None = None
904
+ """The dynamic content placeholder if present, or the description value if not"""
905
+ raw_title: str | None = None
906
+ """The dynamic content placeholder if present, or the title value if not"""
907
+ raw_title_in_portal: str | None = None
908
+ """The dynamic content placeholder if present, or the title_in_portal value if not"""
909
+ regexp_for_validation: str | None = None
910
+ """For regexp fields only, the validation pattern for a field value to be deemed valid"""
911
+ removable: bool | None = None
912
+ """If false, this field is a system field that must be present on all tickets"""
913
+ required: bool | None = None
914
+ """If true, agents must enter a value in the field to change the ticket status to solved"""
915
+ required_in_portal: bool | None = None
916
+ """If true, end users must enter a value in the field to create a request"""
917
+ sub_type_id: int | None = None
918
+ """For system ticket fields of type priority and status, controlling available options"""
919
+ system_field_options: list[Any] | None = None
920
+ """Array of options for system ticket fields of type tickettype, priority, or status"""
921
+ tag: str | None = None
922
+ """For checkbox fields only, a tag added to tickets when the checkbox field is selected"""
923
+ title: str | None = None
924
+ """The title of the ticket field displayed to agents"""
925
+ title_in_portal: str | None = None
926
+ """The title of the ticket field displayed to end users in Help Center"""
927
+ type: str | None = None
928
+ """Field type such as text, textarea, checkbox, date, integer, decimal, regexp, multiselect, tagger,..."""
929
+ updated_at: str | None = None
930
+ """Timestamp when the custom ticket field was last updated"""
931
+ url: str | None = None
932
+ """The API URL for this ticket field resource"""
933
+ visible_in_portal: bool | None = None
934
+ """Whether this field is visible to end users in Help Center"""
935
+
936
+
937
+ class TicketFormsSearchData(BaseModel):
938
+ """Search result data for ticket_forms entity."""
939
+ model_config = ConfigDict(extra="allow")
940
+
941
+ active: bool | None = None
942
+ """Indicates if the form is set as active"""
943
+ agent_conditions: list[Any] | None = None
944
+ """Array of condition sets for agent workspaces"""
945
+ created_at: str | None = None
946
+ """Timestamp when the ticket form was created"""
947
+ default: bool | None = None
948
+ """Indicates if the form is the default form for this account"""
949
+ display_name: str | None = None
950
+ """The name of the form that is displayed to an end user"""
951
+ end_user_conditions: list[Any] | None = None
952
+ """Array of condition sets for end user products"""
953
+ end_user_visible: bool | None = None
954
+ """Indicates if the form is visible to the end user"""
955
+ id: int | None = None
956
+ """Unique identifier for the ticket form, automatically assigned when creating the form"""
957
+ in_all_brands: bool | None = None
958
+ """Indicates if the form is available for use in all brands on this account"""
959
+ name: str | None = None
960
+ """The name of the ticket form"""
961
+ position: int | None = None
962
+ """The position of this form among other forms in the account, such as in a dropdown"""
963
+ raw_display_name: str | None = None
964
+ """The dynamic content placeholder if present, or the display_name value if not"""
965
+ raw_name: str | None = None
966
+ """The dynamic content placeholder if present, or the name value if not"""
967
+ restricted_brand_ids: list[Any] | None = None
968
+ """IDs of all brands that this ticket form is restricted to"""
969
+ ticket_field_ids: list[Any] | None = None
970
+ """IDs of all ticket fields included in this ticket form, ordered to determine field display sequenc..."""
971
+ updated_at: str | None = None
972
+ """Timestamp of the last update to the ticket form"""
973
+ url: str | None = None
974
+ """URL of the ticket form"""
975
+
976
+
977
+ class TicketMetricsSearchData(BaseModel):
978
+ """Search result data for ticket_metrics entity."""
979
+ model_config = ConfigDict(extra="allow")
980
+
981
+ agent_wait_time_in_minutes: dict[str, Any] | None = None
982
+ """Number of minutes the agent spent waiting during calendar and business hours"""
983
+ assigned_at: str | None = None
984
+ """Timestamp when the ticket was assigned"""
985
+ assignee_stations: int | None = None
986
+ """Number of assignees the ticket had"""
987
+ assignee_updated_at: str | None = None
988
+ """Timestamp when the assignee last updated the ticket"""
989
+ created_at: str | None = None
990
+ """Timestamp when the metric record was created"""
991
+ custom_status_updated_at: str | None = None
992
+ """Timestamp when the ticket's custom status was last updated"""
993
+ first_resolution_time_in_minutes: dict[str, Any] | None = None
994
+ """Number of minutes to the first resolution time during calendar and business hours"""
995
+ full_resolution_time_in_minutes: dict[str, Any] | None = None
996
+ """Number of minutes to the full resolution during calendar and business hours"""
997
+ generated_timestamp: int | None = None
998
+ """Timestamp of when record was last updated"""
999
+ group_stations: int | None = None
1000
+ """Number of groups the ticket passed through"""
1001
+ id: int | None = None
1002
+ """Unique identifier for the ticket metric record"""
1003
+ initially_assigned_at: str | None = None
1004
+ """Timestamp when the ticket was initially assigned"""
1005
+ instance_id: int | None = None
1006
+ """ID of the Zendesk instance associated with the ticket"""
1007
+ latest_comment_added_at: str | None = None
1008
+ """Timestamp when the latest comment was added"""
1009
+ metric: str | None = None
1010
+ """Ticket metrics data"""
1011
+ on_hold_time_in_minutes: dict[str, Any] | None = None
1012
+ """Number of minutes on hold"""
1013
+ reopens: int | None = None
1014
+ """Total number of times the ticket was reopened"""
1015
+ replies: int | None = None
1016
+ """The number of public replies added to a ticket by an agent"""
1017
+ reply_time_in_minutes: dict[str, Any] | None = None
1018
+ """Number of minutes to the first reply during calendar and business hours"""
1019
+ reply_time_in_seconds: dict[str, Any] | None = None
1020
+ """Number of seconds to the first reply during calendar hours, only available for Messaging tickets"""
1021
+ requester_updated_at: str | None = None
1022
+ """Timestamp when the requester last updated the ticket"""
1023
+ requester_wait_time_in_minutes: dict[str, Any] | None = None
1024
+ """Number of minutes the requester spent waiting during calendar and business hours"""
1025
+ solved_at: str | None = None
1026
+ """Timestamp when the ticket was solved"""
1027
+ status: dict[str, Any] | None = None
1028
+ """The current status of the ticket (open, pending, solved, etc.)."""
1029
+ status_updated_at: str | None = None
1030
+ """Timestamp when the status of the ticket was last updated"""
1031
+ ticket_id: int | None = None
1032
+ """Identifier of the associated ticket"""
1033
+ time: str | None = None
1034
+ """Time related to the ticket"""
1035
+ type: str | None = None
1036
+ """Type of ticket"""
1037
+ updated_at: str | None = None
1038
+ """Timestamp when the metric record was last updated"""
1039
+ url: str | None = None
1040
+ """The API url of the ticket metric"""
1041
+
1042
+
1043
+ class TicketsSearchData(BaseModel):
1044
+ """Search result data for tickets entity."""
1045
+ model_config = ConfigDict(extra="allow")
1046
+
1047
+ allow_attachments: bool | None = None
1048
+ """Boolean indicating whether attachments are allowed on the ticket"""
1049
+ allow_channelback: bool | None = None
1050
+ """Boolean indicating whether agents can reply to the ticket through the original channel"""
1051
+ assignee_id: int | None = None
1052
+ """Unique identifier of the agent currently assigned to the ticket"""
1053
+ brand_id: int | None = None
1054
+ """Unique identifier of the brand associated with the ticket in multi-brand accounts"""
1055
+ collaborator_ids: list[Any] | None = None
1056
+ """Array of user identifiers who are collaborating on the ticket"""
1057
+ created_at: str | None = None
1058
+ """Timestamp indicating when the ticket was created"""
1059
+ custom_fields: list[Any] | None = None
1060
+ """Array of custom field values specific to the account's ticket configuration"""
1061
+ custom_status_id: int | None = None
1062
+ """Unique identifier of the custom status applied to the ticket"""
1063
+ deleted_ticket_form_id: int | None = None
1064
+ """Unique identifier of the ticket form if it was deleted after the ticket was created"""
1065
+ description: str | None = None
1066
+ """Initial description or content of the ticket when it was created"""
1067
+ due_at: str | None = None
1068
+ """Timestamp indicating when the ticket is due for completion or resolution"""
1069
+ email_cc_ids: list[Any] | None = None
1070
+ """Array of user identifiers who are CC'd on ticket email notifications"""
1071
+ external_id: str | None = None
1072
+ """External identifier for the ticket, used for integrations with other systems"""
1073
+ fields: list[Any] | None = None
1074
+ """Array of ticket field values including both system and custom fields"""
1075
+ follower_ids: list[Any] | None = None
1076
+ """Array of user identifiers who are following the ticket for updates"""
1077
+ followup_ids: list[Any] | None = None
1078
+ """Array of identifiers for follow-up tickets related to this ticket"""
1079
+ forum_topic_id: int | None = None
1080
+ """Unique identifier linking the ticket to a forum topic if applicable"""
1081
+ from_messaging_channel: bool | None = None
1082
+ """Boolean indicating whether the ticket originated from a messaging channel"""
1083
+ generated_timestamp: int | None = None
1084
+ """Timestamp updated for all ticket updates including system changes, used for incremental export co..."""
1085
+ group_id: int | None = None
1086
+ """Unique identifier of the agent group assigned to handle the ticket"""
1087
+ has_incidents: bool | None = None
1088
+ """Boolean indicating whether this problem ticket has related incident tickets"""
1089
+ id: int | None = None
1090
+ """Unique identifier for the ticket"""
1091
+ is_public: bool | None = None
1092
+ """Boolean indicating whether the ticket is publicly visible"""
1093
+ organization_id: int | None = None
1094
+ """Unique identifier of the organization associated with the ticket"""
1095
+ priority: str | None = None
1096
+ """Priority level assigned to the ticket (e.g., urgent, high, normal, low)"""
1097
+ problem_id: int | None = None
1098
+ """Unique identifier of the problem ticket if this is an incident ticket"""
1099
+ raw_subject: str | None = None
1100
+ """Original unprocessed subject line before any system modifications"""
1101
+ recipient: str | None = None
1102
+ """Email address or identifier of the ticket recipient"""
1103
+ requester_id: int | None = None
1104
+ """Unique identifier of the user who requested or created the ticket"""
1105
+ satisfaction_rating: Any = None
1106
+ """Object containing customer satisfaction rating data for the ticket"""
1107
+ sharing_agreement_ids: list[Any] | None = None
1108
+ """Array of sharing agreement identifiers if the ticket is shared across Zendesk instances"""
1109
+ status: str | None = None
1110
+ """Current status of the ticket (e.g., new, open, pending, solved, closed)"""
1111
+ subject: str | None = None
1112
+ """Subject line of the ticket describing the issue or request"""
1113
+ submitter_id: int | None = None
1114
+ """Unique identifier of the user who submitted the ticket on behalf of the requester"""
1115
+ tags: list[Any] | None = None
1116
+ """Array of tags applied to the ticket for categorization and filtering"""
1117
+ ticket_form_id: int | None = None
1118
+ """Unique identifier of the ticket form used when creating the ticket"""
1119
+ type: str | None = None
1120
+ """Type of ticket (e.g., problem, incident, question, task)"""
1121
+ updated_at: str | None = None
1122
+ """Timestamp indicating when the ticket was last updated with a ticket event"""
1123
+ url: str | None = None
1124
+ """API URL to access the full ticket resource"""
1125
+ via: dict[str, Any] | None = None
1126
+ """Object describing the channel and method through which the ticket was created"""
1127
+
1128
+
1129
+ class UsersSearchData(BaseModel):
1130
+ """Search result data for users entity."""
1131
+ model_config = ConfigDict(extra="allow")
1132
+
1133
+ active: bool | None = None
1134
+ """Indicates if the user account is currently active"""
1135
+ alias: str | None = None
1136
+ """Alternative name or nickname for the user"""
1137
+ chat_only: bool | None = None
1138
+ """Indicates if the user can only interact via chat"""
1139
+ created_at: str | None = None
1140
+ """Timestamp indicating when the user was created"""
1141
+ custom_role_id: int | None = None
1142
+ """Identifier for a custom role assigned to the user"""
1143
+ default_group_id: int | None = None
1144
+ """Identifier of the default group assigned to the user"""
1145
+ details: str | None = None
1146
+ """Additional descriptive information about the user"""
1147
+ email: str | None = None
1148
+ """Email address of the user"""
1149
+ external_id: str | None = None
1150
+ """External system identifier for the user, used for integrations"""
1151
+ iana_time_zone: str | None = None
1152
+ """IANA standard time zone identifier for the user"""
1153
+ id: int | None = None
1154
+ """Unique identifier for the user"""
1155
+ last_login_at: str | None = None
1156
+ """Timestamp of the user's most recent login"""
1157
+ locale: str | None = None
1158
+ """Locale setting determining language and regional format preferences"""
1159
+ locale_id: int | None = None
1160
+ """Identifier for the user's locale preference"""
1161
+ moderator: bool | None = None
1162
+ """Indicates if the user has moderator privileges"""
1163
+ name: str | None = None
1164
+ """Display name of the user"""
1165
+ notes: str | None = None
1166
+ """Internal notes about the user, visible only to agents"""
1167
+ only_private_comments: bool | None = None
1168
+ """Indicates if the user can only make private comments on tickets"""
1169
+ organization_id: int | None = None
1170
+ """Identifier of the organization the user belongs to"""
1171
+ permanently_deleted: bool | None = None
1172
+ """Indicates if the user has been permanently deleted from the system"""
1173
+ phone: str | None = None
1174
+ """Phone number of the user"""
1175
+ photo: dict[str, Any] | None = None
1176
+ """Profile photo or avatar of the user"""
1177
+ report_csv: bool | None = None
1178
+ """Indicates if the user receives reports in CSV format"""
1179
+ restricted_agent: bool | None = None
1180
+ """Indicates if the agent has restricted access permissions"""
1181
+ role: str | None = None
1182
+ """Role assigned to the user defining their permissions level"""
1183
+ role_type: int | None = None
1184
+ """Type classification of the user's role"""
1185
+ shared: bool | None = None
1186
+ """Indicates if the user is shared across multiple accounts"""
1187
+ shared_agent: bool | None = None
1188
+ """Indicates if the user is a shared agent across multiple brands or accounts"""
1189
+ shared_phone_number: bool | None = None
1190
+ """Indicates if the phone number is shared with other users"""
1191
+ signature: str | None = None
1192
+ """Email signature text for the user"""
1193
+ suspended: bool | None = None
1194
+ """Indicates if the user account is suspended"""
1195
+ tags: list[Any] | None = None
1196
+ """Labels or tags associated with the user for categorization"""
1197
+ ticket_restriction: str | None = None
1198
+ """Defines which tickets the user can access based on restrictions"""
1199
+ time_zone: str | None = None
1200
+ """Time zone setting for the user"""
1201
+ two_factor_auth_enabled: bool | None = None
1202
+ """Indicates if two-factor authentication is enabled for the user"""
1203
+ updated_at: str | None = None
1204
+ """Timestamp indicating when the user was last updated"""
1205
+ url: str | None = None
1206
+ """API endpoint URL for accessing the user's detailed information"""
1207
+ user_fields: dict[str, Any] | None = None
1208
+ """Custom field values specific to the user, stored as key-value pairs"""
1209
+ verified: bool | None = None
1210
+ """Indicates if the user's identity has been verified"""
1211
+
1212
+
1213
+ # ===== GENERIC SEARCH RESULT TYPES =====
1214
+
1215
+ class SearchHit(BaseModel, Generic[D]):
1216
+ """A single search result with typed data."""
1217
+ model_config = ConfigDict(extra="allow")
1218
+
1219
+ id: str | None = None
1220
+ """Unique identifier for the record."""
1221
+ score: float | None = None
1222
+ """Relevance score for the match."""
1223
+ data: D
1224
+ """The matched record data."""
1225
+
1226
+
1227
+ class SearchResult(BaseModel, Generic[D]):
1228
+ """Result from search operations with typed hits."""
1229
+ model_config = ConfigDict(extra="allow")
1230
+
1231
+ hits: list[SearchHit[D]] = Field(default_factory=list)
1232
+ """List of matching records."""
1233
+ next_cursor: str | None = None
1234
+ """Cursor for fetching the next page of results."""
1235
+ took_ms: int | None = None
1236
+ """Time taken to execute the search in milliseconds."""
1237
+
1238
+
1239
+ # ===== ENTITY-SPECIFIC SEARCH RESULT TYPE ALIASES =====
1240
+
1241
+ BrandsSearchResult = SearchResult[BrandsSearchData]
1242
+ """Search result type for brands entity."""
1243
+
1244
+ GroupsSearchResult = SearchResult[GroupsSearchData]
1245
+ """Search result type for groups entity."""
1246
+
1247
+ OrganizationsSearchResult = SearchResult[OrganizationsSearchData]
1248
+ """Search result type for organizations entity."""
1249
+
1250
+ SatisfactionRatingsSearchResult = SearchResult[SatisfactionRatingsSearchData]
1251
+ """Search result type for satisfaction_ratings entity."""
1252
+
1253
+ TagsSearchResult = SearchResult[TagsSearchData]
1254
+ """Search result type for tags entity."""
1255
+
1256
+ TicketAuditsSearchResult = SearchResult[TicketAuditsSearchData]
1257
+ """Search result type for ticket_audits entity."""
1258
+
1259
+ TicketCommentsSearchResult = SearchResult[TicketCommentsSearchData]
1260
+ """Search result type for ticket_comments entity."""
1261
+
1262
+ TicketFieldsSearchResult = SearchResult[TicketFieldsSearchData]
1263
+ """Search result type for ticket_fields entity."""
1264
+
1265
+ TicketFormsSearchResult = SearchResult[TicketFormsSearchData]
1266
+ """Search result type for ticket_forms entity."""
1267
+
1268
+ TicketMetricsSearchResult = SearchResult[TicketMetricsSearchData]
1269
+ """Search result type for ticket_metrics entity."""
1270
+
1271
+ TicketsSearchResult = SearchResult[TicketsSearchData]
1272
+ """Search result type for tickets entity."""
1273
+
1274
+ UsersSearchResult = SearchResult[UsersSearchData]
1275
+ """Search result type for users entity."""
1276
+
671
1277
 
672
1278
 
673
1279
  # ===== OPERATION RESULT TYPE ALIASES =====