python-zendesk-sdk 0.1.0__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.
@@ -0,0 +1,62 @@
1
+ """Comment model for Zendesk API."""
2
+
3
+ from datetime import datetime
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from pydantic import Field
7
+
8
+ from .base import ZendeskModel
9
+
10
+
11
+ class CommentAttachment(ZendeskModel):
12
+ """Comment attachment model."""
13
+
14
+ id: Optional[int] = Field(None, description="Attachment ID")
15
+ file_name: Optional[str] = Field(None, description="Filename of the attachment")
16
+ content_url: Optional[str] = Field(None, description="URL to download the attachment")
17
+ content_type: Optional[str] = Field(None, description="MIME type of the attachment")
18
+ size: Optional[int] = Field(None, description="Size of the attachment in bytes")
19
+ width: Optional[int] = Field(None, description="Width in pixels (images only)")
20
+ height: Optional[int] = Field(None, description="Height in pixels (images only)")
21
+ inline: Optional[bool] = Field(None, description="If attachment is inline")
22
+ deleted: Optional[bool] = Field(None, description="If attachment has been deleted")
23
+ url: Optional[str] = Field(None, description="API URL for this attachment")
24
+ thumbnails: Optional[List[Dict[str, Any]]] = Field(None, description="Thumbnail attachments")
25
+
26
+
27
+ class CommentVia(ZendeskModel):
28
+ """Comment via object."""
29
+
30
+ channel: Optional[str] = Field(None, description="The channel the comment was created through")
31
+ source: Optional[Dict[str, Any]] = Field(None, description="Additional source information")
32
+
33
+
34
+ class CommentMetadata(ZendeskModel):
35
+ """Comment metadata model."""
36
+
37
+ system: Optional[Dict[str, Any]] = Field(None, description="System information like web client, IP address")
38
+ custom: Optional[Dict[str, Any]] = Field(None, description="Custom metadata")
39
+ flags: Optional[List[str]] = Field(None, description="Comment flags")
40
+ flags_options: Optional[Dict[str, Any]] = Field(None, description="Comment flag options")
41
+
42
+
43
+ class Comment(ZendeskModel):
44
+ """Zendesk Comment model with all API fields."""
45
+
46
+ id: Optional[int] = Field(None, description="Automatically assigned when the comment is created")
47
+ type: Optional[str] = Field(None, description="Comment or VoiceComment")
48
+ author_id: Optional[int] = Field(None, description="The id of the comment author")
49
+ body: Optional[str] = Field(None, description="The comment string")
50
+ html_body: Optional[str] = Field(None, description="The comment formatted as HTML")
51
+ plain_body: Optional[str] = Field(None, description="The comment presented as plain text")
52
+ public: Optional[bool] = Field(None, description="True if a public comment; false if an internal note")
53
+ audit_id: Optional[int] = Field(None, description="The id of the ticket audit record")
54
+ via: Optional[CommentVia] = Field(None, description="Describes how the object was created")
55
+ created_at: Optional[datetime] = Field(None, description="The time the comment was created")
56
+ attachments: Optional[List[CommentAttachment]] = Field(None, description="Attachments, if any")
57
+ metadata: Optional[CommentMetadata] = Field(None, description="System information and comment flags")
58
+ uploads: Optional[List[str]] = Field(None, description="List of tokens from uploading files for attachments")
59
+
60
+ # Additional fields that may appear in some contexts
61
+ ticket_id: Optional[int] = Field(None, description="The ID of the ticket this comment belongs to")
62
+ event_type: Optional[str] = Field(None, description="Event type when comment appears in audit/export context")
@@ -0,0 +1,59 @@
1
+ """Organization model for Zendesk API."""
2
+
3
+ from datetime import datetime
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from pydantic import Field
7
+
8
+ from .base import ZendeskModel
9
+
10
+
11
+ class Organization(ZendeskModel):
12
+ """Zendesk Organization model with all API fields."""
13
+
14
+ id: Optional[int] = Field(None, description="Automatically assigned when the organization is created")
15
+ url: Optional[str] = Field(None, description="The API url of this organization")
16
+ name: str = Field(..., description="A unique name for the organization")
17
+ created_at: Optional[datetime] = Field(None, description="The time the organization was created")
18
+ updated_at: Optional[datetime] = Field(None, description="The time of the last update of the organization")
19
+ details: Optional[str] = Field(None, description="Any details about the organization, such as the address")
20
+ notes: Optional[str] = Field(None, description="Any notes you have about the organization")
21
+ external_id: Optional[str] = Field(None, description="A unique external id to associate organizations")
22
+ domain_names: Optional[List[str]] = Field(None, description="Array of domain names associated with organization")
23
+ tags: Optional[List[str]] = Field(None, description="The tags of the organization")
24
+ group_id: Optional[int] = Field(None, description="New tickets from users automatically put in this group")
25
+ shared_tickets: Optional[bool] = Field(None, description="End users can see each other's tickets")
26
+ shared_comments: Optional[bool] = Field(None, description="End users can comment on each other's tickets")
27
+ organization_fields: Optional[Dict[str, Any]] = Field(None, description="Custom organization field values")
28
+
29
+
30
+ class OrganizationField(ZendeskModel):
31
+ """Zendesk Organization Field model."""
32
+
33
+ id: Optional[int] = Field(None, description="Automatically assigned upon creation")
34
+ url: Optional[str] = Field(None, description="The URL for this resource")
35
+ key: str = Field(..., description="A unique key that identifies this custom field")
36
+ type: str = Field(..., description="The custom field type")
37
+ title: str = Field(..., description="The title of the custom field")
38
+ raw_title: Optional[str] = Field(None, description="Dynamic content placeholder or title")
39
+ description: Optional[str] = Field(None, description="User-defined description of field's purpose")
40
+ raw_description: Optional[str] = Field(None, description="Dynamic content placeholder or description")
41
+ position: Optional[int] = Field(None, description="Ordering of field relative to other fields")
42
+ active: Optional[bool] = Field(None, description="If true, this field is available for use")
43
+ system: Optional[bool] = Field(None, description="If true, only active and position can be changed")
44
+ regexp_for_validation: Optional[str] = Field(None, description="Validation pattern for field value")
45
+ tag: Optional[str] = Field(None, description="Optional for checkbox type fields")
46
+ custom_field_options: Optional[List[Dict[str, Any]]] = Field(None, description="Options for dropdown fields")
47
+ created_at: Optional[datetime] = Field(None, description="Time of field creation")
48
+ updated_at: Optional[datetime] = Field(None, description="Time of last field update")
49
+ relationship_target_type: Optional[str] = Field(None, description="Type of object the field references")
50
+ relationship_filter: Optional[Dict[str, Any]] = Field(None, description="Filter definition for autocomplete")
51
+
52
+
53
+ class OrganizationSubscription(ZendeskModel):
54
+ """Organization subscription model."""
55
+
56
+ id: Optional[int] = Field(None, description="The ID of the organization subscription")
57
+ organization_id: Optional[int] = Field(None, description="The ID of the organization")
58
+ user_id: Optional[int] = Field(None, description="The ID of the user")
59
+ created_at: Optional[datetime] = Field(None, description="The date the organization subscription was created")
@@ -0,0 +1,169 @@
1
+ """Ticket model for Zendesk API."""
2
+
3
+ from datetime import datetime
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from pydantic import Field
7
+
8
+ from .base import ZendeskModel
9
+
10
+
11
+ class TicketVia(ZendeskModel):
12
+ """Ticket via object."""
13
+
14
+ channel: Optional[str] = Field(None, description="The channel the ticket was created through")
15
+ source: Optional[Dict[str, Any]] = Field(None, description="Additional source information")
16
+
17
+
18
+ class TicketCustomField(ZendeskModel):
19
+ """Custom field value for tickets."""
20
+
21
+ id: int = Field(..., description="The ID of the custom field")
22
+ value: Optional[Any] = Field(None, description="The value of the custom field")
23
+
24
+
25
+ class SatisfactionRating(ZendeskModel):
26
+ """Satisfaction rating for ticket."""
27
+
28
+ id: Optional[int] = Field(None, description="The ID of the satisfaction rating")
29
+ score: Optional[str] = Field(None, description="The satisfaction score")
30
+ comment: Optional[str] = Field(None, description="The satisfaction rating comment")
31
+
32
+
33
+ class TicketMetrics(ZendeskModel):
34
+ """Zendesk Ticket Metrics model."""
35
+
36
+ id: Optional[int] = Field(None, description="Automatically assigned when the client is created")
37
+ url: Optional[str] = Field(None, description="The API url of the ticket metric")
38
+ ticket_id: Optional[int] = Field(None, description="Id of the associated ticket")
39
+ created_at: Optional[datetime] = Field(None, description="When the record was created")
40
+ updated_at: Optional[datetime] = Field(None, description="When the record was last updated")
41
+ group_stations: Optional[int] = Field(None, description="Number of groups the ticket passed through")
42
+ assignee_stations: Optional[int] = Field(None, description="Number of assignees the ticket had")
43
+ reopens: Optional[int] = Field(None, description="Total number of times the ticket was reopened")
44
+ replies: Optional[int] = Field(None, description="The number of public replies added to a ticket by an agent")
45
+ assignee_updated_at: Optional[datetime] = Field(None, description="When the assignee last updated the ticket")
46
+ requester_updated_at: Optional[datetime] = Field(None, description="When the requester last updated the ticket")
47
+ status_updated_at: Optional[datetime] = Field(None, description="When the status of the ticket was last updated")
48
+ initially_assigned_at: Optional[datetime] = Field(None, description="When the ticket was initially assigned")
49
+ assigned_at: Optional[datetime] = Field(None, description="When the ticket was assigned")
50
+ solved_at: Optional[datetime] = Field(None, description="When the ticket was solved")
51
+ latest_comment_added_at: Optional[datetime] = Field(None, description="When the latest comment was added")
52
+ custom_status_updated_at: Optional[datetime] = Field(
53
+ None, description="When ticket's custom status was last updated"
54
+ )
55
+ reply_time_in_minutes: Optional[Dict[str, Any]] = Field(
56
+ None, description="Minutes to first reply during business hours"
57
+ )
58
+ reply_time_in_seconds: Optional[Dict[str, Any]] = Field(
59
+ None, description="Seconds to first reply during calendar hours"
60
+ )
61
+ first_resolution_time_in_minutes: Optional[Dict[str, Any]] = Field(None, description="Minutes to first resolution")
62
+ full_resolution_time_in_minutes: Optional[Dict[str, Any]] = Field(None, description="Minutes to full resolution")
63
+ agent_wait_time_in_minutes: Optional[Dict[str, Any]] = Field(None, description="Minutes agent spent waiting")
64
+ requester_wait_time_in_minutes: Optional[Dict[str, Any]] = Field(
65
+ None, description="Minutes requester spent waiting"
66
+ )
67
+ on_hold_time_in_minutes: Optional[Dict[str, Any]] = Field(None, description="Number of minutes on hold")
68
+
69
+
70
+ class Ticket(ZendeskModel):
71
+ """Zendesk Ticket model with all API fields."""
72
+
73
+ id: Optional[int] = Field(None, description="Automatically assigned when the ticket is created")
74
+ url: Optional[str] = Field(None, description="The API URL of this ticket")
75
+ external_id: Optional[str] = Field(None, description="An id you can use to link Zendesk tickets to local records")
76
+ created_at: Optional[datetime] = Field(None, description="When this record was created")
77
+ updated_at: Optional[datetime] = Field(None, description="When this record was last updated")
78
+ type: Optional[str] = Field(None, description="The type of this ticket")
79
+ subject: Optional[str] = Field(None, description="The value of the subject field for this ticket")
80
+ raw_subject: Optional[str] = Field(None, description="The dynamic content placeholder if present")
81
+ description: Optional[str] = Field(None, description="Read-only first comment on the ticket")
82
+ priority: Optional[str] = Field(None, description="The urgency with which the ticket should be addressed")
83
+ status: Optional[str] = Field(None, description="The state of the ticket")
84
+ recipient: Optional[str] = Field(None, description="The original recipient e-mail address of the ticket")
85
+ requester_id: Optional[int] = Field(None, description="The user who requested this ticket")
86
+ submitter_id: Optional[int] = Field(None, description="The user who submitted the ticket")
87
+ assignee_id: Optional[int] = Field(None, description="The agent currently assigned to the ticket")
88
+ organization_id: Optional[int] = Field(None, description="The organization of the requester")
89
+ group_id: Optional[int] = Field(None, description="The group this ticket is assigned to")
90
+ collaborator_ids: Optional[List[int]] = Field(None, description="The ids of users currently CC'ed on the ticket")
91
+ follower_ids: Optional[List[int]] = Field(None, description="The ids of agents currently following the ticket")
92
+ email_cc_ids: Optional[List[int]] = Field(
93
+ None, description="The ids of agents or end users currently CC'ed on the ticket"
94
+ )
95
+ forum_topic_id: Optional[int] = Field(
96
+ None, description="The topic in the Zendesk Web portal this ticket originated from"
97
+ )
98
+ problem_id: Optional[int] = Field(
99
+ None, description="For tickets of type 'incident', the ID of the problem the incident is linked to"
100
+ )
101
+ has_incidents: Optional[bool] = Field(
102
+ None, description="Is true if ticket is a problem type and has incidents linked"
103
+ )
104
+ is_public: Optional[bool] = Field(None, description="Is true if any comments are public, false otherwise")
105
+ due_at: Optional[datetime] = Field(None, description="If this is a ticket of type 'task' it has a due date")
106
+ tags: Optional[List[str]] = Field(None, description="The array of tags applied to this ticket")
107
+ custom_fields: Optional[List[TicketCustomField]] = Field(None, description="Custom fields for the ticket")
108
+ custom_status_id: Optional[int] = Field(None, description="The custom ticket status id of the ticket")
109
+ satisfaction_rating: Optional[SatisfactionRating] = Field(None, description="The satisfaction rating of the ticket")
110
+ sharing_agreement_ids: Optional[List[int]] = Field(
111
+ None, description="The ids of the sharing agreements used for this ticket"
112
+ )
113
+ followup_ids: Optional[List[int]] = Field(None, description="The ids of the followups created from this ticket")
114
+ brand_id: Optional[int] = Field(
115
+ None, description="Enterprise only. The id of the brand this ticket is associated with"
116
+ )
117
+ allow_channelback: Optional[bool] = Field(None, description="Is false if channelback is disabled, true otherwise")
118
+ allow_attachments: Optional[bool] = Field(None, description="Permission for agents to add attachments to a comment")
119
+ from_messaging_channel: Optional[bool] = Field(
120
+ None, description="If true, the ticket's via type is a messaging channel"
121
+ )
122
+ via: Optional[TicketVia] = Field(None, description="A record of the channel the ticket was created through")
123
+ generated_timestamp: Optional[int] = Field(None, description="Unix timestamp of when this record was last updated")
124
+
125
+
126
+ class TicketField(ZendeskModel):
127
+ """Zendesk Ticket Field model."""
128
+
129
+ id: Optional[int] = Field(None, description="Automatically assigned when created")
130
+ url: Optional[str] = Field(None, description="The URL for this resource")
131
+ type: str = Field(..., description="System or custom field type")
132
+ title: str = Field(..., description="The title of the ticket field")
133
+ raw_title: Optional[str] = Field(None, description="Dynamic content placeholder or title")
134
+ title_in_portal: Optional[str] = Field(
135
+ None, description="The title of the ticket field for end users in Help Center"
136
+ )
137
+ raw_title_in_portal: Optional[str] = Field(None, description="Dynamic content placeholder or title_in_portal")
138
+ description: Optional[str] = Field(None, description="Describes the purpose of the ticket field to users")
139
+ raw_description: Optional[str] = Field(None, description="Dynamic content placeholder or description")
140
+ position: Optional[int] = Field(None, description="The relative position of the ticket field on a ticket")
141
+ active: Optional[bool] = Field(None, description="Whether this field is available")
142
+ required: Optional[bool] = Field(None, description="If true, agents must enter a value to change status to solved")
143
+ collapsed_for_agents: Optional[bool] = Field(None, description="If true, field shown to agents by default")
144
+ regexp_for_validation: Optional[str] = Field(None, description="For 'regexp' fields only. The validation pattern")
145
+ visible_in_portal: Optional[bool] = Field(None, description="Whether field is visible to end users in Help Center")
146
+ editable_in_portal: Optional[bool] = Field(
147
+ None, description="Whether field is editable by end users in Help Center"
148
+ )
149
+ required_in_portal: Optional[bool] = Field(
150
+ None, description="If true, end users must enter a value to create request"
151
+ )
152
+ tag: Optional[str] = Field(None, description="For 'checkbox' fields only. A tag added when checkbox is selected")
153
+ created_at: Optional[datetime] = Field(None, description="The time the custom ticket field was created")
154
+ updated_at: Optional[datetime] = Field(None, description="The time the custom ticket field was last updated")
155
+ removable: Optional[bool] = Field(
156
+ None, description="If false, this field is a system field that must be present on all tickets"
157
+ )
158
+ agent_can_edit: Optional[bool] = Field(None, description="Whether this field is editable by agents")
159
+ agent_description: Optional[str] = Field(None, description="A description that only agents can see")
160
+ system_field_options: Optional[List[Dict[str, Any]]] = Field(None, description="Presented for system ticket fields")
161
+ custom_field_options: Optional[List[Dict[str, Any]]] = Field(
162
+ None, description="Required for custom fields of certain types"
163
+ )
164
+ custom_statuses: Optional[List[Dict[str, Any]]] = Field(None, description="List of customized ticket statuses")
165
+ sub_type_id: Optional[int] = Field(None, description="For system ticket fields of type 'priority' and 'status'")
166
+ relationship_target_type: Optional[str] = Field(None, description="Type of object the field references")
167
+ relationship_filter: Optional[Dict[str, Any]] = Field(None, description="Filter definition for autocomplete")
168
+ creator_user_id: Optional[int] = Field(None, description="The id of the user that created the ticket field")
169
+ creator_app_name: Optional[str] = Field(None, description="Name of the app that created the ticket field")
@@ -0,0 +1,107 @@
1
+ """User model for Zendesk API."""
2
+
3
+ from datetime import datetime
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from pydantic import Field
7
+
8
+ from .base import ZendeskModel
9
+
10
+
11
+ class UserIdentity(ZendeskModel):
12
+ """User identity model."""
13
+
14
+ id: Optional[int] = Field(None, description="Automatically assigned on creation")
15
+ url: Optional[str] = Field(None, description="The API url of this identity")
16
+ user_id: int = Field(..., description="The id of the user")
17
+ type: str = Field(..., description="The type of identity")
18
+ value: str = Field(..., description="The identifier for this identity, such as an email address")
19
+ verified: Optional[bool] = Field(None, description="If the identity has been verified")
20
+ primary: Optional[bool] = Field(None, description="If the identity is the primary identity")
21
+ created_at: Optional[datetime] = Field(None, description="The time the identity was created")
22
+ updated_at: Optional[datetime] = Field(None, description="The time the identity was updated")
23
+ undeliverable_count: Optional[int] = Field(None, description="Number of soft-bounce responses received")
24
+ deliverable_state: Optional[str] = Field(None, description="Email delivery state")
25
+ verification_method: Optional[str] = Field(None, description="State of user identity verification")
26
+ verified_at: Optional[datetime] = Field(None, description="Last time full verification was completed")
27
+
28
+
29
+ class UserPhoto(ZendeskModel):
30
+ """User photo attachment model."""
31
+
32
+ id: Optional[int] = Field(None, description="Attachment ID")
33
+ file_name: Optional[str] = Field(None, description="Filename of the attachment")
34
+ content_url: Optional[str] = Field(None, description="URL to download the attachment")
35
+ content_type: Optional[str] = Field(None, description="MIME type of the attachment")
36
+ size: Optional[int] = Field(None, description="Size of the attachment in bytes")
37
+ width: Optional[int] = Field(None, description="Width in pixels (images only)")
38
+ height: Optional[int] = Field(None, description="Height in pixels (images only)")
39
+ inline: Optional[bool] = Field(None, description="If attachment is inline")
40
+ deleted: Optional[bool] = Field(None, description="If attachment has been deleted")
41
+ url: Optional[str] = Field(None, description="API URL for this attachment")
42
+ thumbnails: Optional[List[Dict[str, Any]]] = Field(None, description="Thumbnail attachments")
43
+
44
+
45
+ class User(ZendeskModel):
46
+ """Zendesk User model with all API fields."""
47
+
48
+ id: Optional[int] = Field(None, description="Automatically assigned when the user is created")
49
+ url: Optional[str] = Field(None, description="The API URL of this user")
50
+ name: str = Field(..., description="The user's name")
51
+ email: Optional[str] = Field(None, description="The user's primary email address")
52
+ created_at: Optional[datetime] = Field(None, description="The time the user was created")
53
+ updated_at: Optional[datetime] = Field(None, description="The time the user was last updated")
54
+ time_zone: Optional[str] = Field(None, description="The user's time zone")
55
+ iana_time_zone: Optional[str] = Field(None, description="The time zone for the user")
56
+ phone: Optional[str] = Field(None, description="The user's primary phone number")
57
+ shared_phone_number: Optional[bool] = Field(None, description="Whether the phone number is shared")
58
+ photo: Optional[UserPhoto] = Field(None, description="The user's profile picture")
59
+ locale_id: Optional[int] = Field(None, description="The user's language identifier")
60
+ locale: Optional[str] = Field(None, description="The user's locale (BCP-47 compliant)")
61
+ organization_id: Optional[int] = Field(None, description="The id of the user's organization")
62
+ role: Optional[str] = Field(None, description="The user's role")
63
+ verified: Optional[bool] = Field(None, description="If the user's primary identity has been verified")
64
+ external_id: Optional[str] = Field(None, description="A unique identifier from another system")
65
+ tags: Optional[List[str]] = Field(None, description="The user's tags")
66
+ alias: Optional[str] = Field(None, description="An alias displayed to end users")
67
+ active: Optional[bool] = Field(None, description="False if the user has been deleted")
68
+ shared: Optional[bool] = Field(None, description="If the user is shared from different instance")
69
+ shared_agent: Optional[bool] = Field(None, description="If the user is a shared agent")
70
+ last_login_at: Optional[datetime] = Field(None, description="Last time user signed in or made API request")
71
+ two_factor_auth_enabled: Optional[bool] = Field(None, description="If user has two-factor authentication enabled")
72
+ signature: Optional[str] = Field(None, description="The user's signature")
73
+ details: Optional[str] = Field(None, description="Any details about the user")
74
+ notes: Optional[str] = Field(None, description="Any notes about the user")
75
+ role_type: Optional[int] = Field(None, description="The user's role id")
76
+ custom_role_id: Optional[int] = Field(None, description="A custom role if user is agent on Enterprise+")
77
+ moderator: Optional[bool] = Field(None, description="If user has forum moderation capabilities")
78
+ ticket_restriction: Optional[str] = Field(None, description="Which tickets the user has access to")
79
+ only_private_comments: Optional[bool] = Field(None, description="If user can only create private comments")
80
+ restricted_agent: Optional[bool] = Field(None, description="If agent has any restrictions")
81
+ suspended: Optional[bool] = Field(None, description="If the agent is suspended")
82
+ default_group_id: Optional[int] = Field(None, description="The id of the user's default group")
83
+ report_csv: Optional[bool] = Field(None, description="Inert parameter for CSV report access")
84
+ user_fields: Optional[Dict[str, Any]] = Field(None, description="Custom user field values")
85
+
86
+
87
+ class UserField(ZendeskModel):
88
+ """Zendesk User Field model."""
89
+
90
+ id: Optional[int] = Field(None, description="Automatically assigned upon creation")
91
+ url: Optional[str] = Field(None, description="The URL for this resource")
92
+ key: str = Field(..., description="A unique key that identifies this custom field")
93
+ type: str = Field(..., description="The custom field type")
94
+ title: str = Field(..., description="The title of the custom field")
95
+ raw_title: Optional[str] = Field(None, description="Dynamic content placeholder or title")
96
+ description: Optional[str] = Field(None, description="User-defined description of field's purpose")
97
+ raw_description: Optional[str] = Field(None, description="Dynamic content placeholder or description")
98
+ position: Optional[int] = Field(None, description="Ordering of field relative to other fields")
99
+ active: Optional[bool] = Field(None, description="If true, this field is available for use")
100
+ system: Optional[bool] = Field(None, description="If true, only active and position can be changed")
101
+ regexp_for_validation: Optional[str] = Field(None, description="Validation pattern for field value")
102
+ tag: Optional[str] = Field(None, description="Optional for checkbox type fields")
103
+ custom_field_options: Optional[List[Dict[str, Any]]] = Field(None, description="Options for dropdown fields")
104
+ created_at: Optional[datetime] = Field(None, description="Time of field creation")
105
+ updated_at: Optional[datetime] = Field(None, description="Time of last field update")
106
+ relationship_target_type: Optional[str] = Field(None, description="Type of object the field references")
107
+ relationship_filter: Optional[Dict[str, Any]] = Field(None, description="Filter definition for autocomplete")