airbyte-agent-zendesk-support 0.18.44__py3-none-any.whl → 0.18.49__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.
- airbyte_agent_zendesk_support/__init__.py +130 -2
- airbyte_agent_zendesk_support/_vendored/connector_sdk/connector_model_loader.py +3 -2
- airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/local_executor.py +109 -20
- airbyte_agent_zendesk_support/_vendored/connector_sdk/http_client.py +11 -6
- airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/extensions.py +28 -0
- airbyte_agent_zendesk_support/connector.py +921 -1
- airbyte_agent_zendesk_support/connector_model.py +1 -1
- airbyte_agent_zendesk_support/models.py +607 -0
- airbyte_agent_zendesk_support/types.py +3716 -0
- {airbyte_agent_zendesk_support-0.18.44.dist-info → airbyte_agent_zendesk_support-0.18.49.dist-info}/METADATA +4 -4
- {airbyte_agent_zendesk_support-0.18.44.dist-info → airbyte_agent_zendesk_support-0.18.49.dist-info}/RECORD +12 -12
- {airbyte_agent_zendesk_support-0.18.44.dist-info → airbyte_agent_zendesk_support-0.18.49.dist-info}/WHEEL +0 -0
|
@@ -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.
|
|
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,613 @@ 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
|
+
|
|
1277
|
+
|
|
671
1278
|
|
|
672
1279
|
# ===== OPERATION RESULT TYPE ALIASES =====
|
|
673
1280
|
|