Skip to main content

ocho_gato/
schema.rs

1#[derive(Clone, Debug, Deserialize, Serialize)]
2#[serde(deny_unknown_fields)]
3pub struct AlertInstance {
4	/// Identifies the configuration under which the analysis was executed. For
5	/// example, in GitHub Actions this includes the workflow filename and job
6	/// name.
7	pub analysis_key:    String,
8	#[serde(default, skip_serializing_if = "Vec::is_empty")]
9	pub classifications: Vec<String>,
10	#[serde(default, skip_serializing_if = "Option::is_none")]
11	pub commit_sha:      Option<String>,
12	/// Identifies the variable values associated with the environment in which
13	/// the analysis that generated this alert instance was performed, such as
14	/// the language that was analyzed.
15	pub environment:     String,
16	#[serde(default, skip_serializing_if = "Option::is_none")]
17	pub location:        Option<AlertInstanceLocation>,
18	#[serde(default, skip_serializing_if = "Option::is_none")]
19	pub message:         Option<AlertInstanceMessage>,
20	/// The full Git reference, formatted as `refs/heads/<branch name>`.
21	#[serde(rename = "ref")]
22	pub ref_:            String,
23	/// State of a code scanning alert.
24	pub state:           AlertInstanceState,
25}
26impl From<&AlertInstance> for AlertInstance {
27	fn from(value: &AlertInstance) -> Self {
28		value.clone()
29	}
30}
31#[derive(Clone, Debug, Deserialize, Serialize)]
32#[serde(deny_unknown_fields)]
33pub struct AlertInstanceLocation {
34	#[serde(default, skip_serializing_if = "Option::is_none")]
35	pub end_column:   Option<i64>,
36	#[serde(default, skip_serializing_if = "Option::is_none")]
37	pub end_line:     Option<i64>,
38	#[serde(default, skip_serializing_if = "Option::is_none")]
39	pub path:         Option<String>,
40	#[serde(default, skip_serializing_if = "Option::is_none")]
41	pub start_column: Option<i64>,
42	#[serde(default, skip_serializing_if = "Option::is_none")]
43	pub start_line:   Option<i64>,
44}
45impl From<&AlertInstanceLocation> for AlertInstanceLocation {
46	fn from(value: &AlertInstanceLocation) -> Self {
47		value.clone()
48	}
49}
50#[derive(Clone, Debug, Deserialize, Serialize)]
51#[serde(deny_unknown_fields)]
52pub struct AlertInstanceMessage {
53	#[serde(default, skip_serializing_if = "Option::is_none")]
54	pub text: Option<String>,
55}
56impl From<&AlertInstanceMessage> for AlertInstanceMessage {
57	fn from(value: &AlertInstanceMessage) -> Self {
58		value.clone()
59	}
60}
61/// State of a code scanning alert.
62#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
63pub enum AlertInstanceState {
64	#[serde(rename = "open")]
65	Open,
66	#[serde(rename = "dismissed")]
67	Dismissed,
68	#[serde(rename = "fixed")]
69	Fixed,
70}
71impl From<&AlertInstanceState> for AlertInstanceState {
72	fn from(value: &AlertInstanceState) -> Self {
73		value.clone()
74	}
75}
76impl ToString for AlertInstanceState {
77	fn to_string(&self) -> String {
78		match *self {
79			Self::Open => "open".to_string(),
80			Self::Dismissed => "dismissed".to_string(),
81			Self::Fixed => "fixed".to_string(),
82		}
83	}
84}
85impl std::str::FromStr for AlertInstanceState {
86	type Err = &'static str;
87
88	fn from_str(value: &str) -> Result<Self, &'static str> {
89		match value {
90			"open" => Ok(Self::Open),
91			"dismissed" => Ok(Self::Dismissed),
92			"fixed" => Ok(Self::Fixed),
93			_ => Err("invalid value"),
94		}
95	}
96}
97impl std::convert::TryFrom<&str> for AlertInstanceState {
98	type Error = &'static str;
99
100	fn try_from(value: &str) -> Result<Self, &'static str> {
101		value.parse()
102	}
103}
104impl std::convert::TryFrom<&String> for AlertInstanceState {
105	type Error = &'static str;
106
107	fn try_from(value: &String) -> Result<Self, &'static str> {
108		value.parse()
109	}
110}
111impl std::convert::TryFrom<String> for AlertInstanceState {
112	type Error = &'static str;
113
114	fn try_from(value: String) -> Result<Self, &'static str> {
115		value.parse()
116	}
117}
118/// GitHub apps are a new way to extend GitHub. They can be installed directly
119/// on organizations and user accounts and granted access to specific
120/// repositories. They come with granular permissions and built-in webhooks.
121/// GitHub apps are first class actors within GitHub.
122#[derive(Clone, Debug, Deserialize, Serialize)]
123#[serde(deny_unknown_fields)]
124pub struct App {
125	pub created_at:   chrono::DateTime<chrono::offset::Utc>,
126	pub description:  Option<String>,
127	/// The list of events for the GitHub app
128	#[serde(default, skip_serializing_if = "Vec::is_empty")]
129	pub events:       Vec<AppEventsItem>,
130	pub external_url: String,
131	pub html_url:     String,
132	/// Unique identifier of the GitHub app
133	pub id:           i64,
134	/// The name of the GitHub app
135	pub name:         String,
136	pub node_id:      String,
137	pub owner:        User,
138	#[serde(default, skip_serializing_if = "Option::is_none")]
139	pub permissions:  Option<AppPermissions>,
140	/// The slug name of the GitHub app
141	#[serde(default, skip_serializing_if = "Option::is_none")]
142	pub slug:         Option<String>,
143	pub updated_at:   chrono::DateTime<chrono::offset::Utc>,
144}
145impl From<&App> for App {
146	fn from(value: &App) -> Self {
147		value.clone()
148	}
149}
150#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
151pub enum AppEventsItem {
152	#[serde(rename = "branch_protection_rule")]
153	BranchProtectionRule,
154	#[serde(rename = "check_run")]
155	CheckRun,
156	#[serde(rename = "check_suite")]
157	CheckSuite,
158	#[serde(rename = "code_scanning_alert")]
159	CodeScanningAlert,
160	#[serde(rename = "commit_comment")]
161	CommitComment,
162	#[serde(rename = "content_reference")]
163	ContentReference,
164	#[serde(rename = "create")]
165	Create,
166	#[serde(rename = "delete")]
167	Delete,
168	#[serde(rename = "deployment")]
169	Deployment,
170	#[serde(rename = "deployment_review")]
171	DeploymentReview,
172	#[serde(rename = "deployment_status")]
173	DeploymentStatus,
174	#[serde(rename = "deploy_key")]
175	DeployKey,
176	#[serde(rename = "discussion")]
177	Discussion,
178	#[serde(rename = "discussion_comment")]
179	DiscussionComment,
180	#[serde(rename = "fork")]
181	Fork,
182	#[serde(rename = "gollum")]
183	Gollum,
184	#[serde(rename = "issues")]
185	Issues,
186	#[serde(rename = "issue_comment")]
187	IssueComment,
188	#[serde(rename = "label")]
189	Label,
190	#[serde(rename = "member")]
191	Member,
192	#[serde(rename = "membership")]
193	Membership,
194	#[serde(rename = "merge_group")]
195	MergeGroup,
196	#[serde(rename = "merge_queue_entry")]
197	MergeQueueEntry,
198	#[serde(rename = "milestone")]
199	Milestone,
200	#[serde(rename = "organization")]
201	Organization,
202	#[serde(rename = "org_block")]
203	OrgBlock,
204	#[serde(rename = "page_build")]
205	PageBuild,
206	#[serde(rename = "project")]
207	Project,
208	#[serde(rename = "projects_v2_item")]
209	ProjectsV2Item,
210	#[serde(rename = "project_card")]
211	ProjectCard,
212	#[serde(rename = "project_column")]
213	ProjectColumn,
214	#[serde(rename = "public")]
215	Public,
216	#[serde(rename = "pull_request")]
217	PullRequest,
218	#[serde(rename = "pull_request_review")]
219	PullRequestReview,
220	#[serde(rename = "pull_request_review_comment")]
221	PullRequestReviewComment,
222	#[serde(rename = "pull_request_review_thread")]
223	PullRequestReviewThread,
224	#[serde(rename = "push")]
225	Push,
226	#[serde(rename = "registry_package")]
227	RegistryPackage,
228	#[serde(rename = "release")]
229	Release,
230	#[serde(rename = "repository")]
231	Repository,
232	#[serde(rename = "repository_dispatch")]
233	RepositoryDispatch,
234	#[serde(rename = "secret_scanning_alert")]
235	SecretScanningAlert,
236	#[serde(rename = "secret_scanning_alert_location")]
237	SecretScanningAlertLocation,
238	#[serde(rename = "security_and_analysis")]
239	SecurityAndAnalysis,
240	#[serde(rename = "star")]
241	Star,
242	#[serde(rename = "status")]
243	Status,
244	#[serde(rename = "team")]
245	Team,
246	#[serde(rename = "team_add")]
247	TeamAdd,
248	#[serde(rename = "watch")]
249	Watch,
250	#[serde(rename = "workflow_dispatch")]
251	WorkflowDispatch,
252	#[serde(rename = "workflow_run")]
253	WorkflowRun,
254	#[serde(rename = "workflow_job")]
255	WorkflowJob,
256}
257impl From<&AppEventsItem> for AppEventsItem {
258	fn from(value: &AppEventsItem) -> Self {
259		value.clone()
260	}
261}
262impl ToString for AppEventsItem {
263	fn to_string(&self) -> String {
264		match *self {
265			Self::BranchProtectionRule => "branch_protection_rule".to_string(),
266			Self::CheckRun => "check_run".to_string(),
267			Self::CheckSuite => "check_suite".to_string(),
268			Self::CodeScanningAlert => "code_scanning_alert".to_string(),
269			Self::CommitComment => "commit_comment".to_string(),
270			Self::ContentReference => "content_reference".to_string(),
271			Self::Create => "create".to_string(),
272			Self::Delete => "delete".to_string(),
273			Self::Deployment => "deployment".to_string(),
274			Self::DeploymentReview => "deployment_review".to_string(),
275			Self::DeploymentStatus => "deployment_status".to_string(),
276			Self::DeployKey => "deploy_key".to_string(),
277			Self::Discussion => "discussion".to_string(),
278			Self::DiscussionComment => "discussion_comment".to_string(),
279			Self::Fork => "fork".to_string(),
280			Self::Gollum => "gollum".to_string(),
281			Self::Issues => "issues".to_string(),
282			Self::IssueComment => "issue_comment".to_string(),
283			Self::Label => "label".to_string(),
284			Self::Member => "member".to_string(),
285			Self::Membership => "membership".to_string(),
286			Self::MergeGroup => "merge_group".to_string(),
287			Self::MergeQueueEntry => "merge_queue_entry".to_string(),
288			Self::Milestone => "milestone".to_string(),
289			Self::Organization => "organization".to_string(),
290			Self::OrgBlock => "org_block".to_string(),
291			Self::PageBuild => "page_build".to_string(),
292			Self::Project => "project".to_string(),
293			Self::ProjectsV2Item => "projects_v2_item".to_string(),
294			Self::ProjectCard => "project_card".to_string(),
295			Self::ProjectColumn => "project_column".to_string(),
296			Self::Public => "public".to_string(),
297			Self::PullRequest => "pull_request".to_string(),
298			Self::PullRequestReview => "pull_request_review".to_string(),
299			Self::PullRequestReviewComment => "pull_request_review_comment".to_string(),
300			Self::PullRequestReviewThread => "pull_request_review_thread".to_string(),
301			Self::Push => "push".to_string(),
302			Self::RegistryPackage => "registry_package".to_string(),
303			Self::Release => "release".to_string(),
304			Self::Repository => "repository".to_string(),
305			Self::RepositoryDispatch => "repository_dispatch".to_string(),
306			Self::SecretScanningAlert => "secret_scanning_alert".to_string(),
307			Self::SecretScanningAlertLocation => "secret_scanning_alert_location".to_string(),
308			Self::SecurityAndAnalysis => "security_and_analysis".to_string(),
309			Self::Star => "star".to_string(),
310			Self::Status => "status".to_string(),
311			Self::Team => "team".to_string(),
312			Self::TeamAdd => "team_add".to_string(),
313			Self::Watch => "watch".to_string(),
314			Self::WorkflowDispatch => "workflow_dispatch".to_string(),
315			Self::WorkflowRun => "workflow_run".to_string(),
316			Self::WorkflowJob => "workflow_job".to_string(),
317		}
318	}
319}
320impl std::str::FromStr for AppEventsItem {
321	type Err = &'static str;
322
323	fn from_str(value: &str) -> Result<Self, &'static str> {
324		match value {
325			"branch_protection_rule" => Ok(Self::BranchProtectionRule),
326			"check_run" => Ok(Self::CheckRun),
327			"check_suite" => Ok(Self::CheckSuite),
328			"code_scanning_alert" => Ok(Self::CodeScanningAlert),
329			"commit_comment" => Ok(Self::CommitComment),
330			"content_reference" => Ok(Self::ContentReference),
331			"create" => Ok(Self::Create),
332			"delete" => Ok(Self::Delete),
333			"deployment" => Ok(Self::Deployment),
334			"deployment_review" => Ok(Self::DeploymentReview),
335			"deployment_status" => Ok(Self::DeploymentStatus),
336			"deploy_key" => Ok(Self::DeployKey),
337			"discussion" => Ok(Self::Discussion),
338			"discussion_comment" => Ok(Self::DiscussionComment),
339			"fork" => Ok(Self::Fork),
340			"gollum" => Ok(Self::Gollum),
341			"issues" => Ok(Self::Issues),
342			"issue_comment" => Ok(Self::IssueComment),
343			"label" => Ok(Self::Label),
344			"member" => Ok(Self::Member),
345			"membership" => Ok(Self::Membership),
346			"merge_group" => Ok(Self::MergeGroup),
347			"merge_queue_entry" => Ok(Self::MergeQueueEntry),
348			"milestone" => Ok(Self::Milestone),
349			"organization" => Ok(Self::Organization),
350			"org_block" => Ok(Self::OrgBlock),
351			"page_build" => Ok(Self::PageBuild),
352			"project" => Ok(Self::Project),
353			"projects_v2_item" => Ok(Self::ProjectsV2Item),
354			"project_card" => Ok(Self::ProjectCard),
355			"project_column" => Ok(Self::ProjectColumn),
356			"public" => Ok(Self::Public),
357			"pull_request" => Ok(Self::PullRequest),
358			"pull_request_review" => Ok(Self::PullRequestReview),
359			"pull_request_review_comment" => Ok(Self::PullRequestReviewComment),
360			"pull_request_review_thread" => Ok(Self::PullRequestReviewThread),
361			"push" => Ok(Self::Push),
362			"registry_package" => Ok(Self::RegistryPackage),
363			"release" => Ok(Self::Release),
364			"repository" => Ok(Self::Repository),
365			"repository_dispatch" => Ok(Self::RepositoryDispatch),
366			"secret_scanning_alert" => Ok(Self::SecretScanningAlert),
367			"secret_scanning_alert_location" => Ok(Self::SecretScanningAlertLocation),
368			"security_and_analysis" => Ok(Self::SecurityAndAnalysis),
369			"star" => Ok(Self::Star),
370			"status" => Ok(Self::Status),
371			"team" => Ok(Self::Team),
372			"team_add" => Ok(Self::TeamAdd),
373			"watch" => Ok(Self::Watch),
374			"workflow_dispatch" => Ok(Self::WorkflowDispatch),
375			"workflow_run" => Ok(Self::WorkflowRun),
376			"workflow_job" => Ok(Self::WorkflowJob),
377			_ => Err("invalid value"),
378		}
379	}
380}
381impl std::convert::TryFrom<&str> for AppEventsItem {
382	type Error = &'static str;
383
384	fn try_from(value: &str) -> Result<Self, &'static str> {
385		value.parse()
386	}
387}
388impl std::convert::TryFrom<&String> for AppEventsItem {
389	type Error = &'static str;
390
391	fn try_from(value: &String) -> Result<Self, &'static str> {
392		value.parse()
393	}
394}
395impl std::convert::TryFrom<String> for AppEventsItem {
396	type Error = &'static str;
397
398	fn try_from(value: String) -> Result<Self, &'static str> {
399		value.parse()
400	}
401}
402/// The set of permissions for the GitHub app
403#[derive(Clone, Debug, Deserialize, Serialize)]
404#[serde(deny_unknown_fields)]
405pub struct AppPermissions {
406	#[serde(default, skip_serializing_if = "Option::is_none")]
407	pub actions: Option<AppPermissionsActions>,
408	#[serde(default, skip_serializing_if = "Option::is_none")]
409	pub administration: Option<AppPermissionsAdministration>,
410	#[serde(default, skip_serializing_if = "Option::is_none")]
411	pub blocking: Option<AppPermissionsBlocking>,
412	#[serde(default, skip_serializing_if = "Option::is_none")]
413	pub checks: Option<AppPermissionsChecks>,
414	#[serde(default, skip_serializing_if = "Option::is_none")]
415	pub content_references: Option<AppPermissionsContentReferences>,
416	#[serde(default, skip_serializing_if = "Option::is_none")]
417	pub contents: Option<AppPermissionsContents>,
418	#[serde(default, skip_serializing_if = "Option::is_none")]
419	pub deployments: Option<AppPermissionsDeployments>,
420	#[serde(default, skip_serializing_if = "Option::is_none")]
421	pub discussions: Option<AppPermissionsDiscussions>,
422	#[serde(default, skip_serializing_if = "Option::is_none")]
423	pub emails: Option<AppPermissionsEmails>,
424	#[serde(default, skip_serializing_if = "Option::is_none")]
425	pub environments: Option<AppPermissionsEnvironments>,
426	#[serde(default, skip_serializing_if = "Option::is_none")]
427	pub followers: Option<AppPermissionsFollowers>,
428	#[serde(default, skip_serializing_if = "Option::is_none")]
429	pub gpg_keys: Option<AppPermissionsGpgKeys>,
430	#[serde(default, skip_serializing_if = "Option::is_none")]
431	pub interaction_limits: Option<AppPermissionsInteractionLimits>,
432	#[serde(default, skip_serializing_if = "Option::is_none")]
433	pub issues: Option<AppPermissionsIssues>,
434	#[serde(default, skip_serializing_if = "Option::is_none")]
435	pub keys: Option<AppPermissionsKeys>,
436	#[serde(default, skip_serializing_if = "Option::is_none")]
437	pub members: Option<AppPermissionsMembers>,
438	#[serde(default, skip_serializing_if = "Option::is_none")]
439	pub merge_queues: Option<AppPermissionsMergeQueues>,
440	#[serde(default, skip_serializing_if = "Option::is_none")]
441	pub metadata: Option<AppPermissionsMetadata>,
442	#[serde(default, skip_serializing_if = "Option::is_none")]
443	pub organization_administration: Option<AppPermissionsOrganizationAdministration>,
444	#[serde(default, skip_serializing_if = "Option::is_none")]
445	pub organization_hooks: Option<AppPermissionsOrganizationHooks>,
446	#[serde(default, skip_serializing_if = "Option::is_none")]
447	pub organization_packages: Option<AppPermissionsOrganizationPackages>,
448	#[serde(default, skip_serializing_if = "Option::is_none")]
449	pub organization_plan: Option<AppPermissionsOrganizationPlan>,
450	#[serde(default, skip_serializing_if = "Option::is_none")]
451	pub organization_projects: Option<AppPermissionsOrganizationProjects>,
452	#[serde(default, skip_serializing_if = "Option::is_none")]
453	pub organization_secrets: Option<AppPermissionsOrganizationSecrets>,
454	#[serde(default, skip_serializing_if = "Option::is_none")]
455	pub organization_self_hosted_runners: Option<AppPermissionsOrganizationSelfHostedRunners>,
456	#[serde(default, skip_serializing_if = "Option::is_none")]
457	pub organization_user_blocking: Option<AppPermissionsOrganizationUserBlocking>,
458	#[serde(default, skip_serializing_if = "Option::is_none")]
459	pub packages: Option<AppPermissionsPackages>,
460	#[serde(default, skip_serializing_if = "Option::is_none")]
461	pub pages: Option<AppPermissionsPages>,
462	#[serde(default, skip_serializing_if = "Option::is_none")]
463	pub plan: Option<AppPermissionsPlan>,
464	#[serde(default, skip_serializing_if = "Option::is_none")]
465	pub pull_requests: Option<AppPermissionsPullRequests>,
466	#[serde(default, skip_serializing_if = "Option::is_none")]
467	pub repository_hooks: Option<AppPermissionsRepositoryHooks>,
468	#[serde(default, skip_serializing_if = "Option::is_none")]
469	pub repository_projects: Option<AppPermissionsRepositoryProjects>,
470	#[serde(default, skip_serializing_if = "Option::is_none")]
471	pub secret_scanning_alerts: Option<AppPermissionsSecretScanningAlerts>,
472	#[serde(default, skip_serializing_if = "Option::is_none")]
473	pub secrets: Option<AppPermissionsSecrets>,
474	#[serde(default, skip_serializing_if = "Option::is_none")]
475	pub security_events: Option<AppPermissionsSecurityEvents>,
476	#[serde(default, skip_serializing_if = "Option::is_none")]
477	pub security_scanning_alert: Option<AppPermissionsSecurityScanningAlert>,
478	#[serde(default, skip_serializing_if = "Option::is_none")]
479	pub single_file: Option<AppPermissionsSingleFile>,
480	#[serde(default, skip_serializing_if = "Option::is_none")]
481	pub starring: Option<AppPermissionsStarring>,
482	#[serde(default, skip_serializing_if = "Option::is_none")]
483	pub statuses: Option<AppPermissionsStatuses>,
484	#[serde(default, skip_serializing_if = "Option::is_none")]
485	pub team_discussions: Option<AppPermissionsTeamDiscussions>,
486	#[serde(default, skip_serializing_if = "Option::is_none")]
487	pub vulnerability_alerts: Option<AppPermissionsVulnerabilityAlerts>,
488	#[serde(default, skip_serializing_if = "Option::is_none")]
489	pub watching: Option<AppPermissionsWatching>,
490	#[serde(default, skip_serializing_if = "Option::is_none")]
491	pub workflows: Option<AppPermissionsWorkflows>,
492}
493impl From<&AppPermissions> for AppPermissions {
494	fn from(value: &AppPermissions) -> Self {
495		value.clone()
496	}
497}
498#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
499pub enum AppPermissionsActions {
500	#[serde(rename = "read")]
501	Read,
502	#[serde(rename = "write")]
503	Write,
504}
505impl From<&AppPermissionsActions> for AppPermissionsActions {
506	fn from(value: &AppPermissionsActions) -> Self {
507		value.clone()
508	}
509}
510impl ToString for AppPermissionsActions {
511	fn to_string(&self) -> String {
512		match *self {
513			Self::Read => "read".to_string(),
514			Self::Write => "write".to_string(),
515		}
516	}
517}
518impl std::str::FromStr for AppPermissionsActions {
519	type Err = &'static str;
520
521	fn from_str(value: &str) -> Result<Self, &'static str> {
522		match value {
523			"read" => Ok(Self::Read),
524			"write" => Ok(Self::Write),
525			_ => Err("invalid value"),
526		}
527	}
528}
529impl std::convert::TryFrom<&str> for AppPermissionsActions {
530	type Error = &'static str;
531
532	fn try_from(value: &str) -> Result<Self, &'static str> {
533		value.parse()
534	}
535}
536impl std::convert::TryFrom<&String> for AppPermissionsActions {
537	type Error = &'static str;
538
539	fn try_from(value: &String) -> Result<Self, &'static str> {
540		value.parse()
541	}
542}
543impl std::convert::TryFrom<String> for AppPermissionsActions {
544	type Error = &'static str;
545
546	fn try_from(value: String) -> Result<Self, &'static str> {
547		value.parse()
548	}
549}
550#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
551pub enum AppPermissionsAdministration {
552	#[serde(rename = "read")]
553	Read,
554	#[serde(rename = "write")]
555	Write,
556}
557impl From<&AppPermissionsAdministration> for AppPermissionsAdministration {
558	fn from(value: &AppPermissionsAdministration) -> Self {
559		value.clone()
560	}
561}
562impl ToString for AppPermissionsAdministration {
563	fn to_string(&self) -> String {
564		match *self {
565			Self::Read => "read".to_string(),
566			Self::Write => "write".to_string(),
567		}
568	}
569}
570impl std::str::FromStr for AppPermissionsAdministration {
571	type Err = &'static str;
572
573	fn from_str(value: &str) -> Result<Self, &'static str> {
574		match value {
575			"read" => Ok(Self::Read),
576			"write" => Ok(Self::Write),
577			_ => Err("invalid value"),
578		}
579	}
580}
581impl std::convert::TryFrom<&str> for AppPermissionsAdministration {
582	type Error = &'static str;
583
584	fn try_from(value: &str) -> Result<Self, &'static str> {
585		value.parse()
586	}
587}
588impl std::convert::TryFrom<&String> for AppPermissionsAdministration {
589	type Error = &'static str;
590
591	fn try_from(value: &String) -> Result<Self, &'static str> {
592		value.parse()
593	}
594}
595impl std::convert::TryFrom<String> for AppPermissionsAdministration {
596	type Error = &'static str;
597
598	fn try_from(value: String) -> Result<Self, &'static str> {
599		value.parse()
600	}
601}
602#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
603pub enum AppPermissionsBlocking {
604	#[serde(rename = "read")]
605	Read,
606	#[serde(rename = "write")]
607	Write,
608}
609impl From<&AppPermissionsBlocking> for AppPermissionsBlocking {
610	fn from(value: &AppPermissionsBlocking) -> Self {
611		value.clone()
612	}
613}
614impl ToString for AppPermissionsBlocking {
615	fn to_string(&self) -> String {
616		match *self {
617			Self::Read => "read".to_string(),
618			Self::Write => "write".to_string(),
619		}
620	}
621}
622impl std::str::FromStr for AppPermissionsBlocking {
623	type Err = &'static str;
624
625	fn from_str(value: &str) -> Result<Self, &'static str> {
626		match value {
627			"read" => Ok(Self::Read),
628			"write" => Ok(Self::Write),
629			_ => Err("invalid value"),
630		}
631	}
632}
633impl std::convert::TryFrom<&str> for AppPermissionsBlocking {
634	type Error = &'static str;
635
636	fn try_from(value: &str) -> Result<Self, &'static str> {
637		value.parse()
638	}
639}
640impl std::convert::TryFrom<&String> for AppPermissionsBlocking {
641	type Error = &'static str;
642
643	fn try_from(value: &String) -> Result<Self, &'static str> {
644		value.parse()
645	}
646}
647impl std::convert::TryFrom<String> for AppPermissionsBlocking {
648	type Error = &'static str;
649
650	fn try_from(value: String) -> Result<Self, &'static str> {
651		value.parse()
652	}
653}
654#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
655pub enum AppPermissionsChecks {
656	#[serde(rename = "read")]
657	Read,
658	#[serde(rename = "write")]
659	Write,
660}
661impl From<&AppPermissionsChecks> for AppPermissionsChecks {
662	fn from(value: &AppPermissionsChecks) -> Self {
663		value.clone()
664	}
665}
666impl ToString for AppPermissionsChecks {
667	fn to_string(&self) -> String {
668		match *self {
669			Self::Read => "read".to_string(),
670			Self::Write => "write".to_string(),
671		}
672	}
673}
674impl std::str::FromStr for AppPermissionsChecks {
675	type Err = &'static str;
676
677	fn from_str(value: &str) -> Result<Self, &'static str> {
678		match value {
679			"read" => Ok(Self::Read),
680			"write" => Ok(Self::Write),
681			_ => Err("invalid value"),
682		}
683	}
684}
685impl std::convert::TryFrom<&str> for AppPermissionsChecks {
686	type Error = &'static str;
687
688	fn try_from(value: &str) -> Result<Self, &'static str> {
689		value.parse()
690	}
691}
692impl std::convert::TryFrom<&String> for AppPermissionsChecks {
693	type Error = &'static str;
694
695	fn try_from(value: &String) -> Result<Self, &'static str> {
696		value.parse()
697	}
698}
699impl std::convert::TryFrom<String> for AppPermissionsChecks {
700	type Error = &'static str;
701
702	fn try_from(value: String) -> Result<Self, &'static str> {
703		value.parse()
704	}
705}
706#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
707pub enum AppPermissionsContentReferences {
708	#[serde(rename = "read")]
709	Read,
710	#[serde(rename = "write")]
711	Write,
712}
713impl From<&AppPermissionsContentReferences> for AppPermissionsContentReferences {
714	fn from(value: &AppPermissionsContentReferences) -> Self {
715		value.clone()
716	}
717}
718impl ToString for AppPermissionsContentReferences {
719	fn to_string(&self) -> String {
720		match *self {
721			Self::Read => "read".to_string(),
722			Self::Write => "write".to_string(),
723		}
724	}
725}
726impl std::str::FromStr for AppPermissionsContentReferences {
727	type Err = &'static str;
728
729	fn from_str(value: &str) -> Result<Self, &'static str> {
730		match value {
731			"read" => Ok(Self::Read),
732			"write" => Ok(Self::Write),
733			_ => Err("invalid value"),
734		}
735	}
736}
737impl std::convert::TryFrom<&str> for AppPermissionsContentReferences {
738	type Error = &'static str;
739
740	fn try_from(value: &str) -> Result<Self, &'static str> {
741		value.parse()
742	}
743}
744impl std::convert::TryFrom<&String> for AppPermissionsContentReferences {
745	type Error = &'static str;
746
747	fn try_from(value: &String) -> Result<Self, &'static str> {
748		value.parse()
749	}
750}
751impl std::convert::TryFrom<String> for AppPermissionsContentReferences {
752	type Error = &'static str;
753
754	fn try_from(value: String) -> Result<Self, &'static str> {
755		value.parse()
756	}
757}
758#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
759pub enum AppPermissionsContents {
760	#[serde(rename = "read")]
761	Read,
762	#[serde(rename = "write")]
763	Write,
764}
765impl From<&AppPermissionsContents> for AppPermissionsContents {
766	fn from(value: &AppPermissionsContents) -> Self {
767		value.clone()
768	}
769}
770impl ToString for AppPermissionsContents {
771	fn to_string(&self) -> String {
772		match *self {
773			Self::Read => "read".to_string(),
774			Self::Write => "write".to_string(),
775		}
776	}
777}
778impl std::str::FromStr for AppPermissionsContents {
779	type Err = &'static str;
780
781	fn from_str(value: &str) -> Result<Self, &'static str> {
782		match value {
783			"read" => Ok(Self::Read),
784			"write" => Ok(Self::Write),
785			_ => Err("invalid value"),
786		}
787	}
788}
789impl std::convert::TryFrom<&str> for AppPermissionsContents {
790	type Error = &'static str;
791
792	fn try_from(value: &str) -> Result<Self, &'static str> {
793		value.parse()
794	}
795}
796impl std::convert::TryFrom<&String> for AppPermissionsContents {
797	type Error = &'static str;
798
799	fn try_from(value: &String) -> Result<Self, &'static str> {
800		value.parse()
801	}
802}
803impl std::convert::TryFrom<String> for AppPermissionsContents {
804	type Error = &'static str;
805
806	fn try_from(value: String) -> Result<Self, &'static str> {
807		value.parse()
808	}
809}
810#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
811pub enum AppPermissionsDeployments {
812	#[serde(rename = "read")]
813	Read,
814	#[serde(rename = "write")]
815	Write,
816}
817impl From<&AppPermissionsDeployments> for AppPermissionsDeployments {
818	fn from(value: &AppPermissionsDeployments) -> Self {
819		value.clone()
820	}
821}
822impl ToString for AppPermissionsDeployments {
823	fn to_string(&self) -> String {
824		match *self {
825			Self::Read => "read".to_string(),
826			Self::Write => "write".to_string(),
827		}
828	}
829}
830impl std::str::FromStr for AppPermissionsDeployments {
831	type Err = &'static str;
832
833	fn from_str(value: &str) -> Result<Self, &'static str> {
834		match value {
835			"read" => Ok(Self::Read),
836			"write" => Ok(Self::Write),
837			_ => Err("invalid value"),
838		}
839	}
840}
841impl std::convert::TryFrom<&str> for AppPermissionsDeployments {
842	type Error = &'static str;
843
844	fn try_from(value: &str) -> Result<Self, &'static str> {
845		value.parse()
846	}
847}
848impl std::convert::TryFrom<&String> for AppPermissionsDeployments {
849	type Error = &'static str;
850
851	fn try_from(value: &String) -> Result<Self, &'static str> {
852		value.parse()
853	}
854}
855impl std::convert::TryFrom<String> for AppPermissionsDeployments {
856	type Error = &'static str;
857
858	fn try_from(value: String) -> Result<Self, &'static str> {
859		value.parse()
860	}
861}
862#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
863pub enum AppPermissionsDiscussions {
864	#[serde(rename = "read")]
865	Read,
866	#[serde(rename = "write")]
867	Write,
868}
869impl From<&AppPermissionsDiscussions> for AppPermissionsDiscussions {
870	fn from(value: &AppPermissionsDiscussions) -> Self {
871		value.clone()
872	}
873}
874impl ToString for AppPermissionsDiscussions {
875	fn to_string(&self) -> String {
876		match *self {
877			Self::Read => "read".to_string(),
878			Self::Write => "write".to_string(),
879		}
880	}
881}
882impl std::str::FromStr for AppPermissionsDiscussions {
883	type Err = &'static str;
884
885	fn from_str(value: &str) -> Result<Self, &'static str> {
886		match value {
887			"read" => Ok(Self::Read),
888			"write" => Ok(Self::Write),
889			_ => Err("invalid value"),
890		}
891	}
892}
893impl std::convert::TryFrom<&str> for AppPermissionsDiscussions {
894	type Error = &'static str;
895
896	fn try_from(value: &str) -> Result<Self, &'static str> {
897		value.parse()
898	}
899}
900impl std::convert::TryFrom<&String> for AppPermissionsDiscussions {
901	type Error = &'static str;
902
903	fn try_from(value: &String) -> Result<Self, &'static str> {
904		value.parse()
905	}
906}
907impl std::convert::TryFrom<String> for AppPermissionsDiscussions {
908	type Error = &'static str;
909
910	fn try_from(value: String) -> Result<Self, &'static str> {
911		value.parse()
912	}
913}
914#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
915pub enum AppPermissionsEmails {
916	#[serde(rename = "read")]
917	Read,
918	#[serde(rename = "write")]
919	Write,
920}
921impl From<&AppPermissionsEmails> for AppPermissionsEmails {
922	fn from(value: &AppPermissionsEmails) -> Self {
923		value.clone()
924	}
925}
926impl ToString for AppPermissionsEmails {
927	fn to_string(&self) -> String {
928		match *self {
929			Self::Read => "read".to_string(),
930			Self::Write => "write".to_string(),
931		}
932	}
933}
934impl std::str::FromStr for AppPermissionsEmails {
935	type Err = &'static str;
936
937	fn from_str(value: &str) -> Result<Self, &'static str> {
938		match value {
939			"read" => Ok(Self::Read),
940			"write" => Ok(Self::Write),
941			_ => Err("invalid value"),
942		}
943	}
944}
945impl std::convert::TryFrom<&str> for AppPermissionsEmails {
946	type Error = &'static str;
947
948	fn try_from(value: &str) -> Result<Self, &'static str> {
949		value.parse()
950	}
951}
952impl std::convert::TryFrom<&String> for AppPermissionsEmails {
953	type Error = &'static str;
954
955	fn try_from(value: &String) -> Result<Self, &'static str> {
956		value.parse()
957	}
958}
959impl std::convert::TryFrom<String> for AppPermissionsEmails {
960	type Error = &'static str;
961
962	fn try_from(value: String) -> Result<Self, &'static str> {
963		value.parse()
964	}
965}
966#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
967pub enum AppPermissionsEnvironments {
968	#[serde(rename = "read")]
969	Read,
970	#[serde(rename = "write")]
971	Write,
972}
973impl From<&AppPermissionsEnvironments> for AppPermissionsEnvironments {
974	fn from(value: &AppPermissionsEnvironments) -> Self {
975		value.clone()
976	}
977}
978impl ToString for AppPermissionsEnvironments {
979	fn to_string(&self) -> String {
980		match *self {
981			Self::Read => "read".to_string(),
982			Self::Write => "write".to_string(),
983		}
984	}
985}
986impl std::str::FromStr for AppPermissionsEnvironments {
987	type Err = &'static str;
988
989	fn from_str(value: &str) -> Result<Self, &'static str> {
990		match value {
991			"read" => Ok(Self::Read),
992			"write" => Ok(Self::Write),
993			_ => Err("invalid value"),
994		}
995	}
996}
997impl std::convert::TryFrom<&str> for AppPermissionsEnvironments {
998	type Error = &'static str;
999
1000	fn try_from(value: &str) -> Result<Self, &'static str> {
1001		value.parse()
1002	}
1003}
1004impl std::convert::TryFrom<&String> for AppPermissionsEnvironments {
1005	type Error = &'static str;
1006
1007	fn try_from(value: &String) -> Result<Self, &'static str> {
1008		value.parse()
1009	}
1010}
1011impl std::convert::TryFrom<String> for AppPermissionsEnvironments {
1012	type Error = &'static str;
1013
1014	fn try_from(value: String) -> Result<Self, &'static str> {
1015		value.parse()
1016	}
1017}
1018#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1019pub enum AppPermissionsFollowers {
1020	#[serde(rename = "read")]
1021	Read,
1022	#[serde(rename = "write")]
1023	Write,
1024}
1025impl From<&AppPermissionsFollowers> for AppPermissionsFollowers {
1026	fn from(value: &AppPermissionsFollowers) -> Self {
1027		value.clone()
1028	}
1029}
1030impl ToString for AppPermissionsFollowers {
1031	fn to_string(&self) -> String {
1032		match *self {
1033			Self::Read => "read".to_string(),
1034			Self::Write => "write".to_string(),
1035		}
1036	}
1037}
1038impl std::str::FromStr for AppPermissionsFollowers {
1039	type Err = &'static str;
1040
1041	fn from_str(value: &str) -> Result<Self, &'static str> {
1042		match value {
1043			"read" => Ok(Self::Read),
1044			"write" => Ok(Self::Write),
1045			_ => Err("invalid value"),
1046		}
1047	}
1048}
1049impl std::convert::TryFrom<&str> for AppPermissionsFollowers {
1050	type Error = &'static str;
1051
1052	fn try_from(value: &str) -> Result<Self, &'static str> {
1053		value.parse()
1054	}
1055}
1056impl std::convert::TryFrom<&String> for AppPermissionsFollowers {
1057	type Error = &'static str;
1058
1059	fn try_from(value: &String) -> Result<Self, &'static str> {
1060		value.parse()
1061	}
1062}
1063impl std::convert::TryFrom<String> for AppPermissionsFollowers {
1064	type Error = &'static str;
1065
1066	fn try_from(value: String) -> Result<Self, &'static str> {
1067		value.parse()
1068	}
1069}
1070#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1071pub enum AppPermissionsGpgKeys {
1072	#[serde(rename = "read")]
1073	Read,
1074	#[serde(rename = "write")]
1075	Write,
1076}
1077impl From<&AppPermissionsGpgKeys> for AppPermissionsGpgKeys {
1078	fn from(value: &AppPermissionsGpgKeys) -> Self {
1079		value.clone()
1080	}
1081}
1082impl ToString for AppPermissionsGpgKeys {
1083	fn to_string(&self) -> String {
1084		match *self {
1085			Self::Read => "read".to_string(),
1086			Self::Write => "write".to_string(),
1087		}
1088	}
1089}
1090impl std::str::FromStr for AppPermissionsGpgKeys {
1091	type Err = &'static str;
1092
1093	fn from_str(value: &str) -> Result<Self, &'static str> {
1094		match value {
1095			"read" => Ok(Self::Read),
1096			"write" => Ok(Self::Write),
1097			_ => Err("invalid value"),
1098		}
1099	}
1100}
1101impl std::convert::TryFrom<&str> for AppPermissionsGpgKeys {
1102	type Error = &'static str;
1103
1104	fn try_from(value: &str) -> Result<Self, &'static str> {
1105		value.parse()
1106	}
1107}
1108impl std::convert::TryFrom<&String> for AppPermissionsGpgKeys {
1109	type Error = &'static str;
1110
1111	fn try_from(value: &String) -> Result<Self, &'static str> {
1112		value.parse()
1113	}
1114}
1115impl std::convert::TryFrom<String> for AppPermissionsGpgKeys {
1116	type Error = &'static str;
1117
1118	fn try_from(value: String) -> Result<Self, &'static str> {
1119		value.parse()
1120	}
1121}
1122#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1123pub enum AppPermissionsInteractionLimits {
1124	#[serde(rename = "read")]
1125	Read,
1126	#[serde(rename = "write")]
1127	Write,
1128}
1129impl From<&AppPermissionsInteractionLimits> for AppPermissionsInteractionLimits {
1130	fn from(value: &AppPermissionsInteractionLimits) -> Self {
1131		value.clone()
1132	}
1133}
1134impl ToString for AppPermissionsInteractionLimits {
1135	fn to_string(&self) -> String {
1136		match *self {
1137			Self::Read => "read".to_string(),
1138			Self::Write => "write".to_string(),
1139		}
1140	}
1141}
1142impl std::str::FromStr for AppPermissionsInteractionLimits {
1143	type Err = &'static str;
1144
1145	fn from_str(value: &str) -> Result<Self, &'static str> {
1146		match value {
1147			"read" => Ok(Self::Read),
1148			"write" => Ok(Self::Write),
1149			_ => Err("invalid value"),
1150		}
1151	}
1152}
1153impl std::convert::TryFrom<&str> for AppPermissionsInteractionLimits {
1154	type Error = &'static str;
1155
1156	fn try_from(value: &str) -> Result<Self, &'static str> {
1157		value.parse()
1158	}
1159}
1160impl std::convert::TryFrom<&String> for AppPermissionsInteractionLimits {
1161	type Error = &'static str;
1162
1163	fn try_from(value: &String) -> Result<Self, &'static str> {
1164		value.parse()
1165	}
1166}
1167impl std::convert::TryFrom<String> for AppPermissionsInteractionLimits {
1168	type Error = &'static str;
1169
1170	fn try_from(value: String) -> Result<Self, &'static str> {
1171		value.parse()
1172	}
1173}
1174#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1175pub enum AppPermissionsIssues {
1176	#[serde(rename = "read")]
1177	Read,
1178	#[serde(rename = "write")]
1179	Write,
1180}
1181impl From<&AppPermissionsIssues> for AppPermissionsIssues {
1182	fn from(value: &AppPermissionsIssues) -> Self {
1183		value.clone()
1184	}
1185}
1186impl ToString for AppPermissionsIssues {
1187	fn to_string(&self) -> String {
1188		match *self {
1189			Self::Read => "read".to_string(),
1190			Self::Write => "write".to_string(),
1191		}
1192	}
1193}
1194impl std::str::FromStr for AppPermissionsIssues {
1195	type Err = &'static str;
1196
1197	fn from_str(value: &str) -> Result<Self, &'static str> {
1198		match value {
1199			"read" => Ok(Self::Read),
1200			"write" => Ok(Self::Write),
1201			_ => Err("invalid value"),
1202		}
1203	}
1204}
1205impl std::convert::TryFrom<&str> for AppPermissionsIssues {
1206	type Error = &'static str;
1207
1208	fn try_from(value: &str) -> Result<Self, &'static str> {
1209		value.parse()
1210	}
1211}
1212impl std::convert::TryFrom<&String> for AppPermissionsIssues {
1213	type Error = &'static str;
1214
1215	fn try_from(value: &String) -> Result<Self, &'static str> {
1216		value.parse()
1217	}
1218}
1219impl std::convert::TryFrom<String> for AppPermissionsIssues {
1220	type Error = &'static str;
1221
1222	fn try_from(value: String) -> Result<Self, &'static str> {
1223		value.parse()
1224	}
1225}
1226#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1227pub enum AppPermissionsKeys {
1228	#[serde(rename = "read")]
1229	Read,
1230	#[serde(rename = "write")]
1231	Write,
1232}
1233impl From<&AppPermissionsKeys> for AppPermissionsKeys {
1234	fn from(value: &AppPermissionsKeys) -> Self {
1235		value.clone()
1236	}
1237}
1238impl ToString for AppPermissionsKeys {
1239	fn to_string(&self) -> String {
1240		match *self {
1241			Self::Read => "read".to_string(),
1242			Self::Write => "write".to_string(),
1243		}
1244	}
1245}
1246impl std::str::FromStr for AppPermissionsKeys {
1247	type Err = &'static str;
1248
1249	fn from_str(value: &str) -> Result<Self, &'static str> {
1250		match value {
1251			"read" => Ok(Self::Read),
1252			"write" => Ok(Self::Write),
1253			_ => Err("invalid value"),
1254		}
1255	}
1256}
1257impl std::convert::TryFrom<&str> for AppPermissionsKeys {
1258	type Error = &'static str;
1259
1260	fn try_from(value: &str) -> Result<Self, &'static str> {
1261		value.parse()
1262	}
1263}
1264impl std::convert::TryFrom<&String> for AppPermissionsKeys {
1265	type Error = &'static str;
1266
1267	fn try_from(value: &String) -> Result<Self, &'static str> {
1268		value.parse()
1269	}
1270}
1271impl std::convert::TryFrom<String> for AppPermissionsKeys {
1272	type Error = &'static str;
1273
1274	fn try_from(value: String) -> Result<Self, &'static str> {
1275		value.parse()
1276	}
1277}
1278#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1279pub enum AppPermissionsMembers {
1280	#[serde(rename = "read")]
1281	Read,
1282	#[serde(rename = "write")]
1283	Write,
1284}
1285impl From<&AppPermissionsMembers> for AppPermissionsMembers {
1286	fn from(value: &AppPermissionsMembers) -> Self {
1287		value.clone()
1288	}
1289}
1290impl ToString for AppPermissionsMembers {
1291	fn to_string(&self) -> String {
1292		match *self {
1293			Self::Read => "read".to_string(),
1294			Self::Write => "write".to_string(),
1295		}
1296	}
1297}
1298impl std::str::FromStr for AppPermissionsMembers {
1299	type Err = &'static str;
1300
1301	fn from_str(value: &str) -> Result<Self, &'static str> {
1302		match value {
1303			"read" => Ok(Self::Read),
1304			"write" => Ok(Self::Write),
1305			_ => Err("invalid value"),
1306		}
1307	}
1308}
1309impl std::convert::TryFrom<&str> for AppPermissionsMembers {
1310	type Error = &'static str;
1311
1312	fn try_from(value: &str) -> Result<Self, &'static str> {
1313		value.parse()
1314	}
1315}
1316impl std::convert::TryFrom<&String> for AppPermissionsMembers {
1317	type Error = &'static str;
1318
1319	fn try_from(value: &String) -> Result<Self, &'static str> {
1320		value.parse()
1321	}
1322}
1323impl std::convert::TryFrom<String> for AppPermissionsMembers {
1324	type Error = &'static str;
1325
1326	fn try_from(value: String) -> Result<Self, &'static str> {
1327		value.parse()
1328	}
1329}
1330#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1331pub enum AppPermissionsMergeQueues {
1332	#[serde(rename = "read")]
1333	Read,
1334	#[serde(rename = "write")]
1335	Write,
1336}
1337impl From<&AppPermissionsMergeQueues> for AppPermissionsMergeQueues {
1338	fn from(value: &AppPermissionsMergeQueues) -> Self {
1339		value.clone()
1340	}
1341}
1342impl ToString for AppPermissionsMergeQueues {
1343	fn to_string(&self) -> String {
1344		match *self {
1345			Self::Read => "read".to_string(),
1346			Self::Write => "write".to_string(),
1347		}
1348	}
1349}
1350impl std::str::FromStr for AppPermissionsMergeQueues {
1351	type Err = &'static str;
1352
1353	fn from_str(value: &str) -> Result<Self, &'static str> {
1354		match value {
1355			"read" => Ok(Self::Read),
1356			"write" => Ok(Self::Write),
1357			_ => Err("invalid value"),
1358		}
1359	}
1360}
1361impl std::convert::TryFrom<&str> for AppPermissionsMergeQueues {
1362	type Error = &'static str;
1363
1364	fn try_from(value: &str) -> Result<Self, &'static str> {
1365		value.parse()
1366	}
1367}
1368impl std::convert::TryFrom<&String> for AppPermissionsMergeQueues {
1369	type Error = &'static str;
1370
1371	fn try_from(value: &String) -> Result<Self, &'static str> {
1372		value.parse()
1373	}
1374}
1375impl std::convert::TryFrom<String> for AppPermissionsMergeQueues {
1376	type Error = &'static str;
1377
1378	fn try_from(value: String) -> Result<Self, &'static str> {
1379		value.parse()
1380	}
1381}
1382#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1383pub enum AppPermissionsMetadata {
1384	#[serde(rename = "read")]
1385	Read,
1386	#[serde(rename = "write")]
1387	Write,
1388}
1389impl From<&AppPermissionsMetadata> for AppPermissionsMetadata {
1390	fn from(value: &AppPermissionsMetadata) -> Self {
1391		value.clone()
1392	}
1393}
1394impl ToString for AppPermissionsMetadata {
1395	fn to_string(&self) -> String {
1396		match *self {
1397			Self::Read => "read".to_string(),
1398			Self::Write => "write".to_string(),
1399		}
1400	}
1401}
1402impl std::str::FromStr for AppPermissionsMetadata {
1403	type Err = &'static str;
1404
1405	fn from_str(value: &str) -> Result<Self, &'static str> {
1406		match value {
1407			"read" => Ok(Self::Read),
1408			"write" => Ok(Self::Write),
1409			_ => Err("invalid value"),
1410		}
1411	}
1412}
1413impl std::convert::TryFrom<&str> for AppPermissionsMetadata {
1414	type Error = &'static str;
1415
1416	fn try_from(value: &str) -> Result<Self, &'static str> {
1417		value.parse()
1418	}
1419}
1420impl std::convert::TryFrom<&String> for AppPermissionsMetadata {
1421	type Error = &'static str;
1422
1423	fn try_from(value: &String) -> Result<Self, &'static str> {
1424		value.parse()
1425	}
1426}
1427impl std::convert::TryFrom<String> for AppPermissionsMetadata {
1428	type Error = &'static str;
1429
1430	fn try_from(value: String) -> Result<Self, &'static str> {
1431		value.parse()
1432	}
1433}
1434#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1435pub enum AppPermissionsOrganizationAdministration {
1436	#[serde(rename = "read")]
1437	Read,
1438	#[serde(rename = "write")]
1439	Write,
1440}
1441impl From<&AppPermissionsOrganizationAdministration> for AppPermissionsOrganizationAdministration {
1442	fn from(value: &AppPermissionsOrganizationAdministration) -> Self {
1443		value.clone()
1444	}
1445}
1446impl ToString for AppPermissionsOrganizationAdministration {
1447	fn to_string(&self) -> String {
1448		match *self {
1449			Self::Read => "read".to_string(),
1450			Self::Write => "write".to_string(),
1451		}
1452	}
1453}
1454impl std::str::FromStr for AppPermissionsOrganizationAdministration {
1455	type Err = &'static str;
1456
1457	fn from_str(value: &str) -> Result<Self, &'static str> {
1458		match value {
1459			"read" => Ok(Self::Read),
1460			"write" => Ok(Self::Write),
1461			_ => Err("invalid value"),
1462		}
1463	}
1464}
1465impl std::convert::TryFrom<&str> for AppPermissionsOrganizationAdministration {
1466	type Error = &'static str;
1467
1468	fn try_from(value: &str) -> Result<Self, &'static str> {
1469		value.parse()
1470	}
1471}
1472impl std::convert::TryFrom<&String> for AppPermissionsOrganizationAdministration {
1473	type Error = &'static str;
1474
1475	fn try_from(value: &String) -> Result<Self, &'static str> {
1476		value.parse()
1477	}
1478}
1479impl std::convert::TryFrom<String> for AppPermissionsOrganizationAdministration {
1480	type Error = &'static str;
1481
1482	fn try_from(value: String) -> Result<Self, &'static str> {
1483		value.parse()
1484	}
1485}
1486#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1487pub enum AppPermissionsOrganizationHooks {
1488	#[serde(rename = "read")]
1489	Read,
1490	#[serde(rename = "write")]
1491	Write,
1492}
1493impl From<&AppPermissionsOrganizationHooks> for AppPermissionsOrganizationHooks {
1494	fn from(value: &AppPermissionsOrganizationHooks) -> Self {
1495		value.clone()
1496	}
1497}
1498impl ToString for AppPermissionsOrganizationHooks {
1499	fn to_string(&self) -> String {
1500		match *self {
1501			Self::Read => "read".to_string(),
1502			Self::Write => "write".to_string(),
1503		}
1504	}
1505}
1506impl std::str::FromStr for AppPermissionsOrganizationHooks {
1507	type Err = &'static str;
1508
1509	fn from_str(value: &str) -> Result<Self, &'static str> {
1510		match value {
1511			"read" => Ok(Self::Read),
1512			"write" => Ok(Self::Write),
1513			_ => Err("invalid value"),
1514		}
1515	}
1516}
1517impl std::convert::TryFrom<&str> for AppPermissionsOrganizationHooks {
1518	type Error = &'static str;
1519
1520	fn try_from(value: &str) -> Result<Self, &'static str> {
1521		value.parse()
1522	}
1523}
1524impl std::convert::TryFrom<&String> for AppPermissionsOrganizationHooks {
1525	type Error = &'static str;
1526
1527	fn try_from(value: &String) -> Result<Self, &'static str> {
1528		value.parse()
1529	}
1530}
1531impl std::convert::TryFrom<String> for AppPermissionsOrganizationHooks {
1532	type Error = &'static str;
1533
1534	fn try_from(value: String) -> Result<Self, &'static str> {
1535		value.parse()
1536	}
1537}
1538#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1539pub enum AppPermissionsOrganizationPackages {
1540	#[serde(rename = "read")]
1541	Read,
1542	#[serde(rename = "write")]
1543	Write,
1544}
1545impl From<&AppPermissionsOrganizationPackages> for AppPermissionsOrganizationPackages {
1546	fn from(value: &AppPermissionsOrganizationPackages) -> Self {
1547		value.clone()
1548	}
1549}
1550impl ToString for AppPermissionsOrganizationPackages {
1551	fn to_string(&self) -> String {
1552		match *self {
1553			Self::Read => "read".to_string(),
1554			Self::Write => "write".to_string(),
1555		}
1556	}
1557}
1558impl std::str::FromStr for AppPermissionsOrganizationPackages {
1559	type Err = &'static str;
1560
1561	fn from_str(value: &str) -> Result<Self, &'static str> {
1562		match value {
1563			"read" => Ok(Self::Read),
1564			"write" => Ok(Self::Write),
1565			_ => Err("invalid value"),
1566		}
1567	}
1568}
1569impl std::convert::TryFrom<&str> for AppPermissionsOrganizationPackages {
1570	type Error = &'static str;
1571
1572	fn try_from(value: &str) -> Result<Self, &'static str> {
1573		value.parse()
1574	}
1575}
1576impl std::convert::TryFrom<&String> for AppPermissionsOrganizationPackages {
1577	type Error = &'static str;
1578
1579	fn try_from(value: &String) -> Result<Self, &'static str> {
1580		value.parse()
1581	}
1582}
1583impl std::convert::TryFrom<String> for AppPermissionsOrganizationPackages {
1584	type Error = &'static str;
1585
1586	fn try_from(value: String) -> Result<Self, &'static str> {
1587		value.parse()
1588	}
1589}
1590#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1591pub enum AppPermissionsOrganizationPlan {
1592	#[serde(rename = "read")]
1593	Read,
1594	#[serde(rename = "write")]
1595	Write,
1596}
1597impl From<&AppPermissionsOrganizationPlan> for AppPermissionsOrganizationPlan {
1598	fn from(value: &AppPermissionsOrganizationPlan) -> Self {
1599		value.clone()
1600	}
1601}
1602impl ToString for AppPermissionsOrganizationPlan {
1603	fn to_string(&self) -> String {
1604		match *self {
1605			Self::Read => "read".to_string(),
1606			Self::Write => "write".to_string(),
1607		}
1608	}
1609}
1610impl std::str::FromStr for AppPermissionsOrganizationPlan {
1611	type Err = &'static str;
1612
1613	fn from_str(value: &str) -> Result<Self, &'static str> {
1614		match value {
1615			"read" => Ok(Self::Read),
1616			"write" => Ok(Self::Write),
1617			_ => Err("invalid value"),
1618		}
1619	}
1620}
1621impl std::convert::TryFrom<&str> for AppPermissionsOrganizationPlan {
1622	type Error = &'static str;
1623
1624	fn try_from(value: &str) -> Result<Self, &'static str> {
1625		value.parse()
1626	}
1627}
1628impl std::convert::TryFrom<&String> for AppPermissionsOrganizationPlan {
1629	type Error = &'static str;
1630
1631	fn try_from(value: &String) -> Result<Self, &'static str> {
1632		value.parse()
1633	}
1634}
1635impl std::convert::TryFrom<String> for AppPermissionsOrganizationPlan {
1636	type Error = &'static str;
1637
1638	fn try_from(value: String) -> Result<Self, &'static str> {
1639		value.parse()
1640	}
1641}
1642#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1643pub enum AppPermissionsOrganizationProjects {
1644	#[serde(rename = "read")]
1645	Read,
1646	#[serde(rename = "write")]
1647	Write,
1648}
1649impl From<&AppPermissionsOrganizationProjects> for AppPermissionsOrganizationProjects {
1650	fn from(value: &AppPermissionsOrganizationProjects) -> Self {
1651		value.clone()
1652	}
1653}
1654impl ToString for AppPermissionsOrganizationProjects {
1655	fn to_string(&self) -> String {
1656		match *self {
1657			Self::Read => "read".to_string(),
1658			Self::Write => "write".to_string(),
1659		}
1660	}
1661}
1662impl std::str::FromStr for AppPermissionsOrganizationProjects {
1663	type Err = &'static str;
1664
1665	fn from_str(value: &str) -> Result<Self, &'static str> {
1666		match value {
1667			"read" => Ok(Self::Read),
1668			"write" => Ok(Self::Write),
1669			_ => Err("invalid value"),
1670		}
1671	}
1672}
1673impl std::convert::TryFrom<&str> for AppPermissionsOrganizationProjects {
1674	type Error = &'static str;
1675
1676	fn try_from(value: &str) -> Result<Self, &'static str> {
1677		value.parse()
1678	}
1679}
1680impl std::convert::TryFrom<&String> for AppPermissionsOrganizationProjects {
1681	type Error = &'static str;
1682
1683	fn try_from(value: &String) -> Result<Self, &'static str> {
1684		value.parse()
1685	}
1686}
1687impl std::convert::TryFrom<String> for AppPermissionsOrganizationProjects {
1688	type Error = &'static str;
1689
1690	fn try_from(value: String) -> Result<Self, &'static str> {
1691		value.parse()
1692	}
1693}
1694#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1695pub enum AppPermissionsOrganizationSecrets {
1696	#[serde(rename = "read")]
1697	Read,
1698	#[serde(rename = "write")]
1699	Write,
1700}
1701impl From<&AppPermissionsOrganizationSecrets> for AppPermissionsOrganizationSecrets {
1702	fn from(value: &AppPermissionsOrganizationSecrets) -> Self {
1703		value.clone()
1704	}
1705}
1706impl ToString for AppPermissionsOrganizationSecrets {
1707	fn to_string(&self) -> String {
1708		match *self {
1709			Self::Read => "read".to_string(),
1710			Self::Write => "write".to_string(),
1711		}
1712	}
1713}
1714impl std::str::FromStr for AppPermissionsOrganizationSecrets {
1715	type Err = &'static str;
1716
1717	fn from_str(value: &str) -> Result<Self, &'static str> {
1718		match value {
1719			"read" => Ok(Self::Read),
1720			"write" => Ok(Self::Write),
1721			_ => Err("invalid value"),
1722		}
1723	}
1724}
1725impl std::convert::TryFrom<&str> for AppPermissionsOrganizationSecrets {
1726	type Error = &'static str;
1727
1728	fn try_from(value: &str) -> Result<Self, &'static str> {
1729		value.parse()
1730	}
1731}
1732impl std::convert::TryFrom<&String> for AppPermissionsOrganizationSecrets {
1733	type Error = &'static str;
1734
1735	fn try_from(value: &String) -> Result<Self, &'static str> {
1736		value.parse()
1737	}
1738}
1739impl std::convert::TryFrom<String> for AppPermissionsOrganizationSecrets {
1740	type Error = &'static str;
1741
1742	fn try_from(value: String) -> Result<Self, &'static str> {
1743		value.parse()
1744	}
1745}
1746#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1747pub enum AppPermissionsOrganizationSelfHostedRunners {
1748	#[serde(rename = "read")]
1749	Read,
1750	#[serde(rename = "write")]
1751	Write,
1752}
1753impl From<&AppPermissionsOrganizationSelfHostedRunners>
1754	for AppPermissionsOrganizationSelfHostedRunners
1755{
1756	fn from(value: &AppPermissionsOrganizationSelfHostedRunners) -> Self {
1757		value.clone()
1758	}
1759}
1760impl ToString for AppPermissionsOrganizationSelfHostedRunners {
1761	fn to_string(&self) -> String {
1762		match *self {
1763			Self::Read => "read".to_string(),
1764			Self::Write => "write".to_string(),
1765		}
1766	}
1767}
1768impl std::str::FromStr for AppPermissionsOrganizationSelfHostedRunners {
1769	type Err = &'static str;
1770
1771	fn from_str(value: &str) -> Result<Self, &'static str> {
1772		match value {
1773			"read" => Ok(Self::Read),
1774			"write" => Ok(Self::Write),
1775			_ => Err("invalid value"),
1776		}
1777	}
1778}
1779impl std::convert::TryFrom<&str> for AppPermissionsOrganizationSelfHostedRunners {
1780	type Error = &'static str;
1781
1782	fn try_from(value: &str) -> Result<Self, &'static str> {
1783		value.parse()
1784	}
1785}
1786impl std::convert::TryFrom<&String> for AppPermissionsOrganizationSelfHostedRunners {
1787	type Error = &'static str;
1788
1789	fn try_from(value: &String) -> Result<Self, &'static str> {
1790		value.parse()
1791	}
1792}
1793impl std::convert::TryFrom<String> for AppPermissionsOrganizationSelfHostedRunners {
1794	type Error = &'static str;
1795
1796	fn try_from(value: String) -> Result<Self, &'static str> {
1797		value.parse()
1798	}
1799}
1800#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1801pub enum AppPermissionsOrganizationUserBlocking {
1802	#[serde(rename = "read")]
1803	Read,
1804	#[serde(rename = "write")]
1805	Write,
1806}
1807impl From<&AppPermissionsOrganizationUserBlocking> for AppPermissionsOrganizationUserBlocking {
1808	fn from(value: &AppPermissionsOrganizationUserBlocking) -> Self {
1809		value.clone()
1810	}
1811}
1812impl ToString for AppPermissionsOrganizationUserBlocking {
1813	fn to_string(&self) -> String {
1814		match *self {
1815			Self::Read => "read".to_string(),
1816			Self::Write => "write".to_string(),
1817		}
1818	}
1819}
1820impl std::str::FromStr for AppPermissionsOrganizationUserBlocking {
1821	type Err = &'static str;
1822
1823	fn from_str(value: &str) -> Result<Self, &'static str> {
1824		match value {
1825			"read" => Ok(Self::Read),
1826			"write" => Ok(Self::Write),
1827			_ => Err("invalid value"),
1828		}
1829	}
1830}
1831impl std::convert::TryFrom<&str> for AppPermissionsOrganizationUserBlocking {
1832	type Error = &'static str;
1833
1834	fn try_from(value: &str) -> Result<Self, &'static str> {
1835		value.parse()
1836	}
1837}
1838impl std::convert::TryFrom<&String> for AppPermissionsOrganizationUserBlocking {
1839	type Error = &'static str;
1840
1841	fn try_from(value: &String) -> Result<Self, &'static str> {
1842		value.parse()
1843	}
1844}
1845impl std::convert::TryFrom<String> for AppPermissionsOrganizationUserBlocking {
1846	type Error = &'static str;
1847
1848	fn try_from(value: String) -> Result<Self, &'static str> {
1849		value.parse()
1850	}
1851}
1852#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1853pub enum AppPermissionsPackages {
1854	#[serde(rename = "read")]
1855	Read,
1856	#[serde(rename = "write")]
1857	Write,
1858}
1859impl From<&AppPermissionsPackages> for AppPermissionsPackages {
1860	fn from(value: &AppPermissionsPackages) -> Self {
1861		value.clone()
1862	}
1863}
1864impl ToString for AppPermissionsPackages {
1865	fn to_string(&self) -> String {
1866		match *self {
1867			Self::Read => "read".to_string(),
1868			Self::Write => "write".to_string(),
1869		}
1870	}
1871}
1872impl std::str::FromStr for AppPermissionsPackages {
1873	type Err = &'static str;
1874
1875	fn from_str(value: &str) -> Result<Self, &'static str> {
1876		match value {
1877			"read" => Ok(Self::Read),
1878			"write" => Ok(Self::Write),
1879			_ => Err("invalid value"),
1880		}
1881	}
1882}
1883impl std::convert::TryFrom<&str> for AppPermissionsPackages {
1884	type Error = &'static str;
1885
1886	fn try_from(value: &str) -> Result<Self, &'static str> {
1887		value.parse()
1888	}
1889}
1890impl std::convert::TryFrom<&String> for AppPermissionsPackages {
1891	type Error = &'static str;
1892
1893	fn try_from(value: &String) -> Result<Self, &'static str> {
1894		value.parse()
1895	}
1896}
1897impl std::convert::TryFrom<String> for AppPermissionsPackages {
1898	type Error = &'static str;
1899
1900	fn try_from(value: String) -> Result<Self, &'static str> {
1901		value.parse()
1902	}
1903}
1904#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1905pub enum AppPermissionsPages {
1906	#[serde(rename = "read")]
1907	Read,
1908	#[serde(rename = "write")]
1909	Write,
1910}
1911impl From<&AppPermissionsPages> for AppPermissionsPages {
1912	fn from(value: &AppPermissionsPages) -> Self {
1913		value.clone()
1914	}
1915}
1916impl ToString for AppPermissionsPages {
1917	fn to_string(&self) -> String {
1918		match *self {
1919			Self::Read => "read".to_string(),
1920			Self::Write => "write".to_string(),
1921		}
1922	}
1923}
1924impl std::str::FromStr for AppPermissionsPages {
1925	type Err = &'static str;
1926
1927	fn from_str(value: &str) -> Result<Self, &'static str> {
1928		match value {
1929			"read" => Ok(Self::Read),
1930			"write" => Ok(Self::Write),
1931			_ => Err("invalid value"),
1932		}
1933	}
1934}
1935impl std::convert::TryFrom<&str> for AppPermissionsPages {
1936	type Error = &'static str;
1937
1938	fn try_from(value: &str) -> Result<Self, &'static str> {
1939		value.parse()
1940	}
1941}
1942impl std::convert::TryFrom<&String> for AppPermissionsPages {
1943	type Error = &'static str;
1944
1945	fn try_from(value: &String) -> Result<Self, &'static str> {
1946		value.parse()
1947	}
1948}
1949impl std::convert::TryFrom<String> for AppPermissionsPages {
1950	type Error = &'static str;
1951
1952	fn try_from(value: String) -> Result<Self, &'static str> {
1953		value.parse()
1954	}
1955}
1956#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
1957pub enum AppPermissionsPlan {
1958	#[serde(rename = "read")]
1959	Read,
1960	#[serde(rename = "write")]
1961	Write,
1962}
1963impl From<&AppPermissionsPlan> for AppPermissionsPlan {
1964	fn from(value: &AppPermissionsPlan) -> Self {
1965		value.clone()
1966	}
1967}
1968impl ToString for AppPermissionsPlan {
1969	fn to_string(&self) -> String {
1970		match *self {
1971			Self::Read => "read".to_string(),
1972			Self::Write => "write".to_string(),
1973		}
1974	}
1975}
1976impl std::str::FromStr for AppPermissionsPlan {
1977	type Err = &'static str;
1978
1979	fn from_str(value: &str) -> Result<Self, &'static str> {
1980		match value {
1981			"read" => Ok(Self::Read),
1982			"write" => Ok(Self::Write),
1983			_ => Err("invalid value"),
1984		}
1985	}
1986}
1987impl std::convert::TryFrom<&str> for AppPermissionsPlan {
1988	type Error = &'static str;
1989
1990	fn try_from(value: &str) -> Result<Self, &'static str> {
1991		value.parse()
1992	}
1993}
1994impl std::convert::TryFrom<&String> for AppPermissionsPlan {
1995	type Error = &'static str;
1996
1997	fn try_from(value: &String) -> Result<Self, &'static str> {
1998		value.parse()
1999	}
2000}
2001impl std::convert::TryFrom<String> for AppPermissionsPlan {
2002	type Error = &'static str;
2003
2004	fn try_from(value: String) -> Result<Self, &'static str> {
2005		value.parse()
2006	}
2007}
2008#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2009pub enum AppPermissionsPullRequests {
2010	#[serde(rename = "read")]
2011	Read,
2012	#[serde(rename = "write")]
2013	Write,
2014}
2015impl From<&AppPermissionsPullRequests> for AppPermissionsPullRequests {
2016	fn from(value: &AppPermissionsPullRequests) -> Self {
2017		value.clone()
2018	}
2019}
2020impl ToString for AppPermissionsPullRequests {
2021	fn to_string(&self) -> String {
2022		match *self {
2023			Self::Read => "read".to_string(),
2024			Self::Write => "write".to_string(),
2025		}
2026	}
2027}
2028impl std::str::FromStr for AppPermissionsPullRequests {
2029	type Err = &'static str;
2030
2031	fn from_str(value: &str) -> Result<Self, &'static str> {
2032		match value {
2033			"read" => Ok(Self::Read),
2034			"write" => Ok(Self::Write),
2035			_ => Err("invalid value"),
2036		}
2037	}
2038}
2039impl std::convert::TryFrom<&str> for AppPermissionsPullRequests {
2040	type Error = &'static str;
2041
2042	fn try_from(value: &str) -> Result<Self, &'static str> {
2043		value.parse()
2044	}
2045}
2046impl std::convert::TryFrom<&String> for AppPermissionsPullRequests {
2047	type Error = &'static str;
2048
2049	fn try_from(value: &String) -> Result<Self, &'static str> {
2050		value.parse()
2051	}
2052}
2053impl std::convert::TryFrom<String> for AppPermissionsPullRequests {
2054	type Error = &'static str;
2055
2056	fn try_from(value: String) -> Result<Self, &'static str> {
2057		value.parse()
2058	}
2059}
2060#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2061pub enum AppPermissionsRepositoryHooks {
2062	#[serde(rename = "read")]
2063	Read,
2064	#[serde(rename = "write")]
2065	Write,
2066}
2067impl From<&AppPermissionsRepositoryHooks> for AppPermissionsRepositoryHooks {
2068	fn from(value: &AppPermissionsRepositoryHooks) -> Self {
2069		value.clone()
2070	}
2071}
2072impl ToString for AppPermissionsRepositoryHooks {
2073	fn to_string(&self) -> String {
2074		match *self {
2075			Self::Read => "read".to_string(),
2076			Self::Write => "write".to_string(),
2077		}
2078	}
2079}
2080impl std::str::FromStr for AppPermissionsRepositoryHooks {
2081	type Err = &'static str;
2082
2083	fn from_str(value: &str) -> Result<Self, &'static str> {
2084		match value {
2085			"read" => Ok(Self::Read),
2086			"write" => Ok(Self::Write),
2087			_ => Err("invalid value"),
2088		}
2089	}
2090}
2091impl std::convert::TryFrom<&str> for AppPermissionsRepositoryHooks {
2092	type Error = &'static str;
2093
2094	fn try_from(value: &str) -> Result<Self, &'static str> {
2095		value.parse()
2096	}
2097}
2098impl std::convert::TryFrom<&String> for AppPermissionsRepositoryHooks {
2099	type Error = &'static str;
2100
2101	fn try_from(value: &String) -> Result<Self, &'static str> {
2102		value.parse()
2103	}
2104}
2105impl std::convert::TryFrom<String> for AppPermissionsRepositoryHooks {
2106	type Error = &'static str;
2107
2108	fn try_from(value: String) -> Result<Self, &'static str> {
2109		value.parse()
2110	}
2111}
2112#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2113pub enum AppPermissionsRepositoryProjects {
2114	#[serde(rename = "read")]
2115	Read,
2116	#[serde(rename = "write")]
2117	Write,
2118}
2119impl From<&AppPermissionsRepositoryProjects> for AppPermissionsRepositoryProjects {
2120	fn from(value: &AppPermissionsRepositoryProjects) -> Self {
2121		value.clone()
2122	}
2123}
2124impl ToString for AppPermissionsRepositoryProjects {
2125	fn to_string(&self) -> String {
2126		match *self {
2127			Self::Read => "read".to_string(),
2128			Self::Write => "write".to_string(),
2129		}
2130	}
2131}
2132impl std::str::FromStr for AppPermissionsRepositoryProjects {
2133	type Err = &'static str;
2134
2135	fn from_str(value: &str) -> Result<Self, &'static str> {
2136		match value {
2137			"read" => Ok(Self::Read),
2138			"write" => Ok(Self::Write),
2139			_ => Err("invalid value"),
2140		}
2141	}
2142}
2143impl std::convert::TryFrom<&str> for AppPermissionsRepositoryProjects {
2144	type Error = &'static str;
2145
2146	fn try_from(value: &str) -> Result<Self, &'static str> {
2147		value.parse()
2148	}
2149}
2150impl std::convert::TryFrom<&String> for AppPermissionsRepositoryProjects {
2151	type Error = &'static str;
2152
2153	fn try_from(value: &String) -> Result<Self, &'static str> {
2154		value.parse()
2155	}
2156}
2157impl std::convert::TryFrom<String> for AppPermissionsRepositoryProjects {
2158	type Error = &'static str;
2159
2160	fn try_from(value: String) -> Result<Self, &'static str> {
2161		value.parse()
2162	}
2163}
2164#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2165pub enum AppPermissionsSecretScanningAlerts {
2166	#[serde(rename = "read")]
2167	Read,
2168	#[serde(rename = "write")]
2169	Write,
2170}
2171impl From<&AppPermissionsSecretScanningAlerts> for AppPermissionsSecretScanningAlerts {
2172	fn from(value: &AppPermissionsSecretScanningAlerts) -> Self {
2173		value.clone()
2174	}
2175}
2176impl ToString for AppPermissionsSecretScanningAlerts {
2177	fn to_string(&self) -> String {
2178		match *self {
2179			Self::Read => "read".to_string(),
2180			Self::Write => "write".to_string(),
2181		}
2182	}
2183}
2184impl std::str::FromStr for AppPermissionsSecretScanningAlerts {
2185	type Err = &'static str;
2186
2187	fn from_str(value: &str) -> Result<Self, &'static str> {
2188		match value {
2189			"read" => Ok(Self::Read),
2190			"write" => Ok(Self::Write),
2191			_ => Err("invalid value"),
2192		}
2193	}
2194}
2195impl std::convert::TryFrom<&str> for AppPermissionsSecretScanningAlerts {
2196	type Error = &'static str;
2197
2198	fn try_from(value: &str) -> Result<Self, &'static str> {
2199		value.parse()
2200	}
2201}
2202impl std::convert::TryFrom<&String> for AppPermissionsSecretScanningAlerts {
2203	type Error = &'static str;
2204
2205	fn try_from(value: &String) -> Result<Self, &'static str> {
2206		value.parse()
2207	}
2208}
2209impl std::convert::TryFrom<String> for AppPermissionsSecretScanningAlerts {
2210	type Error = &'static str;
2211
2212	fn try_from(value: String) -> Result<Self, &'static str> {
2213		value.parse()
2214	}
2215}
2216#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2217pub enum AppPermissionsSecrets {
2218	#[serde(rename = "read")]
2219	Read,
2220	#[serde(rename = "write")]
2221	Write,
2222}
2223impl From<&AppPermissionsSecrets> for AppPermissionsSecrets {
2224	fn from(value: &AppPermissionsSecrets) -> Self {
2225		value.clone()
2226	}
2227}
2228impl ToString for AppPermissionsSecrets {
2229	fn to_string(&self) -> String {
2230		match *self {
2231			Self::Read => "read".to_string(),
2232			Self::Write => "write".to_string(),
2233		}
2234	}
2235}
2236impl std::str::FromStr for AppPermissionsSecrets {
2237	type Err = &'static str;
2238
2239	fn from_str(value: &str) -> Result<Self, &'static str> {
2240		match value {
2241			"read" => Ok(Self::Read),
2242			"write" => Ok(Self::Write),
2243			_ => Err("invalid value"),
2244		}
2245	}
2246}
2247impl std::convert::TryFrom<&str> for AppPermissionsSecrets {
2248	type Error = &'static str;
2249
2250	fn try_from(value: &str) -> Result<Self, &'static str> {
2251		value.parse()
2252	}
2253}
2254impl std::convert::TryFrom<&String> for AppPermissionsSecrets {
2255	type Error = &'static str;
2256
2257	fn try_from(value: &String) -> Result<Self, &'static str> {
2258		value.parse()
2259	}
2260}
2261impl std::convert::TryFrom<String> for AppPermissionsSecrets {
2262	type Error = &'static str;
2263
2264	fn try_from(value: String) -> Result<Self, &'static str> {
2265		value.parse()
2266	}
2267}
2268#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2269pub enum AppPermissionsSecurityEvents {
2270	#[serde(rename = "read")]
2271	Read,
2272	#[serde(rename = "write")]
2273	Write,
2274}
2275impl From<&AppPermissionsSecurityEvents> for AppPermissionsSecurityEvents {
2276	fn from(value: &AppPermissionsSecurityEvents) -> Self {
2277		value.clone()
2278	}
2279}
2280impl ToString for AppPermissionsSecurityEvents {
2281	fn to_string(&self) -> String {
2282		match *self {
2283			Self::Read => "read".to_string(),
2284			Self::Write => "write".to_string(),
2285		}
2286	}
2287}
2288impl std::str::FromStr for AppPermissionsSecurityEvents {
2289	type Err = &'static str;
2290
2291	fn from_str(value: &str) -> Result<Self, &'static str> {
2292		match value {
2293			"read" => Ok(Self::Read),
2294			"write" => Ok(Self::Write),
2295			_ => Err("invalid value"),
2296		}
2297	}
2298}
2299impl std::convert::TryFrom<&str> for AppPermissionsSecurityEvents {
2300	type Error = &'static str;
2301
2302	fn try_from(value: &str) -> Result<Self, &'static str> {
2303		value.parse()
2304	}
2305}
2306impl std::convert::TryFrom<&String> for AppPermissionsSecurityEvents {
2307	type Error = &'static str;
2308
2309	fn try_from(value: &String) -> Result<Self, &'static str> {
2310		value.parse()
2311	}
2312}
2313impl std::convert::TryFrom<String> for AppPermissionsSecurityEvents {
2314	type Error = &'static str;
2315
2316	fn try_from(value: String) -> Result<Self, &'static str> {
2317		value.parse()
2318	}
2319}
2320#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2321pub enum AppPermissionsSecurityScanningAlert {
2322	#[serde(rename = "read")]
2323	Read,
2324	#[serde(rename = "write")]
2325	Write,
2326}
2327impl From<&AppPermissionsSecurityScanningAlert> for AppPermissionsSecurityScanningAlert {
2328	fn from(value: &AppPermissionsSecurityScanningAlert) -> Self {
2329		value.clone()
2330	}
2331}
2332impl ToString for AppPermissionsSecurityScanningAlert {
2333	fn to_string(&self) -> String {
2334		match *self {
2335			Self::Read => "read".to_string(),
2336			Self::Write => "write".to_string(),
2337		}
2338	}
2339}
2340impl std::str::FromStr for AppPermissionsSecurityScanningAlert {
2341	type Err = &'static str;
2342
2343	fn from_str(value: &str) -> Result<Self, &'static str> {
2344		match value {
2345			"read" => Ok(Self::Read),
2346			"write" => Ok(Self::Write),
2347			_ => Err("invalid value"),
2348		}
2349	}
2350}
2351impl std::convert::TryFrom<&str> for AppPermissionsSecurityScanningAlert {
2352	type Error = &'static str;
2353
2354	fn try_from(value: &str) -> Result<Self, &'static str> {
2355		value.parse()
2356	}
2357}
2358impl std::convert::TryFrom<&String> for AppPermissionsSecurityScanningAlert {
2359	type Error = &'static str;
2360
2361	fn try_from(value: &String) -> Result<Self, &'static str> {
2362		value.parse()
2363	}
2364}
2365impl std::convert::TryFrom<String> for AppPermissionsSecurityScanningAlert {
2366	type Error = &'static str;
2367
2368	fn try_from(value: String) -> Result<Self, &'static str> {
2369		value.parse()
2370	}
2371}
2372#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2373pub enum AppPermissionsSingleFile {
2374	#[serde(rename = "read")]
2375	Read,
2376	#[serde(rename = "write")]
2377	Write,
2378}
2379impl From<&AppPermissionsSingleFile> for AppPermissionsSingleFile {
2380	fn from(value: &AppPermissionsSingleFile) -> Self {
2381		value.clone()
2382	}
2383}
2384impl ToString for AppPermissionsSingleFile {
2385	fn to_string(&self) -> String {
2386		match *self {
2387			Self::Read => "read".to_string(),
2388			Self::Write => "write".to_string(),
2389		}
2390	}
2391}
2392impl std::str::FromStr for AppPermissionsSingleFile {
2393	type Err = &'static str;
2394
2395	fn from_str(value: &str) -> Result<Self, &'static str> {
2396		match value {
2397			"read" => Ok(Self::Read),
2398			"write" => Ok(Self::Write),
2399			_ => Err("invalid value"),
2400		}
2401	}
2402}
2403impl std::convert::TryFrom<&str> for AppPermissionsSingleFile {
2404	type Error = &'static str;
2405
2406	fn try_from(value: &str) -> Result<Self, &'static str> {
2407		value.parse()
2408	}
2409}
2410impl std::convert::TryFrom<&String> for AppPermissionsSingleFile {
2411	type Error = &'static str;
2412
2413	fn try_from(value: &String) -> Result<Self, &'static str> {
2414		value.parse()
2415	}
2416}
2417impl std::convert::TryFrom<String> for AppPermissionsSingleFile {
2418	type Error = &'static str;
2419
2420	fn try_from(value: String) -> Result<Self, &'static str> {
2421		value.parse()
2422	}
2423}
2424#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2425pub enum AppPermissionsStarring {
2426	#[serde(rename = "read")]
2427	Read,
2428	#[serde(rename = "write")]
2429	Write,
2430}
2431impl From<&AppPermissionsStarring> for AppPermissionsStarring {
2432	fn from(value: &AppPermissionsStarring) -> Self {
2433		value.clone()
2434	}
2435}
2436impl ToString for AppPermissionsStarring {
2437	fn to_string(&self) -> String {
2438		match *self {
2439			Self::Read => "read".to_string(),
2440			Self::Write => "write".to_string(),
2441		}
2442	}
2443}
2444impl std::str::FromStr for AppPermissionsStarring {
2445	type Err = &'static str;
2446
2447	fn from_str(value: &str) -> Result<Self, &'static str> {
2448		match value {
2449			"read" => Ok(Self::Read),
2450			"write" => Ok(Self::Write),
2451			_ => Err("invalid value"),
2452		}
2453	}
2454}
2455impl std::convert::TryFrom<&str> for AppPermissionsStarring {
2456	type Error = &'static str;
2457
2458	fn try_from(value: &str) -> Result<Self, &'static str> {
2459		value.parse()
2460	}
2461}
2462impl std::convert::TryFrom<&String> for AppPermissionsStarring {
2463	type Error = &'static str;
2464
2465	fn try_from(value: &String) -> Result<Self, &'static str> {
2466		value.parse()
2467	}
2468}
2469impl std::convert::TryFrom<String> for AppPermissionsStarring {
2470	type Error = &'static str;
2471
2472	fn try_from(value: String) -> Result<Self, &'static str> {
2473		value.parse()
2474	}
2475}
2476#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2477pub enum AppPermissionsStatuses {
2478	#[serde(rename = "read")]
2479	Read,
2480	#[serde(rename = "write")]
2481	Write,
2482}
2483impl From<&AppPermissionsStatuses> for AppPermissionsStatuses {
2484	fn from(value: &AppPermissionsStatuses) -> Self {
2485		value.clone()
2486	}
2487}
2488impl ToString for AppPermissionsStatuses {
2489	fn to_string(&self) -> String {
2490		match *self {
2491			Self::Read => "read".to_string(),
2492			Self::Write => "write".to_string(),
2493		}
2494	}
2495}
2496impl std::str::FromStr for AppPermissionsStatuses {
2497	type Err = &'static str;
2498
2499	fn from_str(value: &str) -> Result<Self, &'static str> {
2500		match value {
2501			"read" => Ok(Self::Read),
2502			"write" => Ok(Self::Write),
2503			_ => Err("invalid value"),
2504		}
2505	}
2506}
2507impl std::convert::TryFrom<&str> for AppPermissionsStatuses {
2508	type Error = &'static str;
2509
2510	fn try_from(value: &str) -> Result<Self, &'static str> {
2511		value.parse()
2512	}
2513}
2514impl std::convert::TryFrom<&String> for AppPermissionsStatuses {
2515	type Error = &'static str;
2516
2517	fn try_from(value: &String) -> Result<Self, &'static str> {
2518		value.parse()
2519	}
2520}
2521impl std::convert::TryFrom<String> for AppPermissionsStatuses {
2522	type Error = &'static str;
2523
2524	fn try_from(value: String) -> Result<Self, &'static str> {
2525		value.parse()
2526	}
2527}
2528#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2529pub enum AppPermissionsTeamDiscussions {
2530	#[serde(rename = "read")]
2531	Read,
2532	#[serde(rename = "write")]
2533	Write,
2534}
2535impl From<&AppPermissionsTeamDiscussions> for AppPermissionsTeamDiscussions {
2536	fn from(value: &AppPermissionsTeamDiscussions) -> Self {
2537		value.clone()
2538	}
2539}
2540impl ToString for AppPermissionsTeamDiscussions {
2541	fn to_string(&self) -> String {
2542		match *self {
2543			Self::Read => "read".to_string(),
2544			Self::Write => "write".to_string(),
2545		}
2546	}
2547}
2548impl std::str::FromStr for AppPermissionsTeamDiscussions {
2549	type Err = &'static str;
2550
2551	fn from_str(value: &str) -> Result<Self, &'static str> {
2552		match value {
2553			"read" => Ok(Self::Read),
2554			"write" => Ok(Self::Write),
2555			_ => Err("invalid value"),
2556		}
2557	}
2558}
2559impl std::convert::TryFrom<&str> for AppPermissionsTeamDiscussions {
2560	type Error = &'static str;
2561
2562	fn try_from(value: &str) -> Result<Self, &'static str> {
2563		value.parse()
2564	}
2565}
2566impl std::convert::TryFrom<&String> for AppPermissionsTeamDiscussions {
2567	type Error = &'static str;
2568
2569	fn try_from(value: &String) -> Result<Self, &'static str> {
2570		value.parse()
2571	}
2572}
2573impl std::convert::TryFrom<String> for AppPermissionsTeamDiscussions {
2574	type Error = &'static str;
2575
2576	fn try_from(value: String) -> Result<Self, &'static str> {
2577		value.parse()
2578	}
2579}
2580#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2581pub enum AppPermissionsVulnerabilityAlerts {
2582	#[serde(rename = "read")]
2583	Read,
2584	#[serde(rename = "write")]
2585	Write,
2586}
2587impl From<&AppPermissionsVulnerabilityAlerts> for AppPermissionsVulnerabilityAlerts {
2588	fn from(value: &AppPermissionsVulnerabilityAlerts) -> Self {
2589		value.clone()
2590	}
2591}
2592impl ToString for AppPermissionsVulnerabilityAlerts {
2593	fn to_string(&self) -> String {
2594		match *self {
2595			Self::Read => "read".to_string(),
2596			Self::Write => "write".to_string(),
2597		}
2598	}
2599}
2600impl std::str::FromStr for AppPermissionsVulnerabilityAlerts {
2601	type Err = &'static str;
2602
2603	fn from_str(value: &str) -> Result<Self, &'static str> {
2604		match value {
2605			"read" => Ok(Self::Read),
2606			"write" => Ok(Self::Write),
2607			_ => Err("invalid value"),
2608		}
2609	}
2610}
2611impl std::convert::TryFrom<&str> for AppPermissionsVulnerabilityAlerts {
2612	type Error = &'static str;
2613
2614	fn try_from(value: &str) -> Result<Self, &'static str> {
2615		value.parse()
2616	}
2617}
2618impl std::convert::TryFrom<&String> for AppPermissionsVulnerabilityAlerts {
2619	type Error = &'static str;
2620
2621	fn try_from(value: &String) -> Result<Self, &'static str> {
2622		value.parse()
2623	}
2624}
2625impl std::convert::TryFrom<String> for AppPermissionsVulnerabilityAlerts {
2626	type Error = &'static str;
2627
2628	fn try_from(value: String) -> Result<Self, &'static str> {
2629		value.parse()
2630	}
2631}
2632#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2633pub enum AppPermissionsWatching {
2634	#[serde(rename = "read")]
2635	Read,
2636	#[serde(rename = "write")]
2637	Write,
2638}
2639impl From<&AppPermissionsWatching> for AppPermissionsWatching {
2640	fn from(value: &AppPermissionsWatching) -> Self {
2641		value.clone()
2642	}
2643}
2644impl ToString for AppPermissionsWatching {
2645	fn to_string(&self) -> String {
2646		match *self {
2647			Self::Read => "read".to_string(),
2648			Self::Write => "write".to_string(),
2649		}
2650	}
2651}
2652impl std::str::FromStr for AppPermissionsWatching {
2653	type Err = &'static str;
2654
2655	fn from_str(value: &str) -> Result<Self, &'static str> {
2656		match value {
2657			"read" => Ok(Self::Read),
2658			"write" => Ok(Self::Write),
2659			_ => Err("invalid value"),
2660		}
2661	}
2662}
2663impl std::convert::TryFrom<&str> for AppPermissionsWatching {
2664	type Error = &'static str;
2665
2666	fn try_from(value: &str) -> Result<Self, &'static str> {
2667		value.parse()
2668	}
2669}
2670impl std::convert::TryFrom<&String> for AppPermissionsWatching {
2671	type Error = &'static str;
2672
2673	fn try_from(value: &String) -> Result<Self, &'static str> {
2674		value.parse()
2675	}
2676}
2677impl std::convert::TryFrom<String> for AppPermissionsWatching {
2678	type Error = &'static str;
2679
2680	fn try_from(value: String) -> Result<Self, &'static str> {
2681		value.parse()
2682	}
2683}
2684#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2685pub enum AppPermissionsWorkflows {
2686	#[serde(rename = "read")]
2687	Read,
2688	#[serde(rename = "write")]
2689	Write,
2690}
2691impl From<&AppPermissionsWorkflows> for AppPermissionsWorkflows {
2692	fn from(value: &AppPermissionsWorkflows) -> Self {
2693		value.clone()
2694	}
2695}
2696impl ToString for AppPermissionsWorkflows {
2697	fn to_string(&self) -> String {
2698		match *self {
2699			Self::Read => "read".to_string(),
2700			Self::Write => "write".to_string(),
2701		}
2702	}
2703}
2704impl std::str::FromStr for AppPermissionsWorkflows {
2705	type Err = &'static str;
2706
2707	fn from_str(value: &str) -> Result<Self, &'static str> {
2708		match value {
2709			"read" => Ok(Self::Read),
2710			"write" => Ok(Self::Write),
2711			_ => Err("invalid value"),
2712		}
2713	}
2714}
2715impl std::convert::TryFrom<&str> for AppPermissionsWorkflows {
2716	type Error = &'static str;
2717
2718	fn try_from(value: &str) -> Result<Self, &'static str> {
2719		value.parse()
2720	}
2721}
2722impl std::convert::TryFrom<&String> for AppPermissionsWorkflows {
2723	type Error = &'static str;
2724
2725	fn try_from(value: &String) -> Result<Self, &'static str> {
2726		value.parse()
2727	}
2728}
2729impl std::convert::TryFrom<String> for AppPermissionsWorkflows {
2730	type Error = &'static str;
2731
2732	fn try_from(value: String) -> Result<Self, &'static str> {
2733		value.parse()
2734	}
2735}
2736/// How the author is associated with the repository.
2737#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2738pub enum AuthorAssociation {
2739	#[serde(rename = "COLLABORATOR")]
2740	Collaborator,
2741	#[serde(rename = "CONTRIBUTOR")]
2742	Contributor,
2743	#[serde(rename = "FIRST_TIMER")]
2744	FirstTimer,
2745	#[serde(rename = "FIRST_TIME_CONTRIBUTOR")]
2746	FirstTimeContributor,
2747	#[serde(rename = "MANNEQUIN")]
2748	Mannequin,
2749	#[serde(rename = "MEMBER")]
2750	Member,
2751	#[serde(rename = "NONE")]
2752	None,
2753	#[serde(rename = "OWNER")]
2754	Owner,
2755}
2756impl From<&AuthorAssociation> for AuthorAssociation {
2757	fn from(value: &AuthorAssociation) -> Self {
2758		value.clone()
2759	}
2760}
2761impl ToString for AuthorAssociation {
2762	fn to_string(&self) -> String {
2763		match *self {
2764			Self::Collaborator => "COLLABORATOR".to_string(),
2765			Self::Contributor => "CONTRIBUTOR".to_string(),
2766			Self::FirstTimer => "FIRST_TIMER".to_string(),
2767			Self::FirstTimeContributor => "FIRST_TIME_CONTRIBUTOR".to_string(),
2768			Self::Mannequin => "MANNEQUIN".to_string(),
2769			Self::Member => "MEMBER".to_string(),
2770			Self::None => "NONE".to_string(),
2771			Self::Owner => "OWNER".to_string(),
2772		}
2773	}
2774}
2775impl std::str::FromStr for AuthorAssociation {
2776	type Err = &'static str;
2777
2778	fn from_str(value: &str) -> Result<Self, &'static str> {
2779		match value {
2780			"COLLABORATOR" => Ok(Self::Collaborator),
2781			"CONTRIBUTOR" => Ok(Self::Contributor),
2782			"FIRST_TIMER" => Ok(Self::FirstTimer),
2783			"FIRST_TIME_CONTRIBUTOR" => Ok(Self::FirstTimeContributor),
2784			"MANNEQUIN" => Ok(Self::Mannequin),
2785			"MEMBER" => Ok(Self::Member),
2786			"NONE" => Ok(Self::None),
2787			"OWNER" => Ok(Self::Owner),
2788			_ => Err("invalid value"),
2789		}
2790	}
2791}
2792impl std::convert::TryFrom<&str> for AuthorAssociation {
2793	type Error = &'static str;
2794
2795	fn try_from(value: &str) -> Result<Self, &'static str> {
2796		value.parse()
2797	}
2798}
2799impl std::convert::TryFrom<&String> for AuthorAssociation {
2800	type Error = &'static str;
2801
2802	fn try_from(value: &String) -> Result<Self, &'static str> {
2803		value.parse()
2804	}
2805}
2806impl std::convert::TryFrom<String> for AuthorAssociation {
2807	type Error = &'static str;
2808
2809	fn try_from(value: String) -> Result<Self, &'static str> {
2810		value.parse()
2811	}
2812}
2813/// The status of auto merging a pull request.
2814#[derive(Clone, Debug, Deserialize, Serialize)]
2815#[serde(deny_unknown_fields)]
2816pub struct AutoMerge {
2817	/// Commit message for the merge commit.
2818	pub commit_message: String,
2819	/// Title for the merge commit message.
2820	pub commit_title:   String,
2821	pub enabled_by:     User,
2822	/// The merge method to use.
2823	pub merge_method:   AutoMergeMergeMethod,
2824}
2825impl From<&AutoMerge> for AutoMerge {
2826	fn from(value: &AutoMerge) -> Self {
2827		value.clone()
2828	}
2829}
2830/// The merge method to use.
2831#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
2832pub enum AutoMergeMergeMethod {
2833	#[serde(rename = "merge")]
2834	Merge,
2835	#[serde(rename = "squash")]
2836	Squash,
2837	#[serde(rename = "rebase")]
2838	Rebase,
2839}
2840impl From<&AutoMergeMergeMethod> for AutoMergeMergeMethod {
2841	fn from(value: &AutoMergeMergeMethod) -> Self {
2842		value.clone()
2843	}
2844}
2845impl ToString for AutoMergeMergeMethod {
2846	fn to_string(&self) -> String {
2847		match *self {
2848			Self::Merge => "merge".to_string(),
2849			Self::Squash => "squash".to_string(),
2850			Self::Rebase => "rebase".to_string(),
2851		}
2852	}
2853}
2854impl std::str::FromStr for AutoMergeMergeMethod {
2855	type Err = &'static str;
2856
2857	fn from_str(value: &str) -> Result<Self, &'static str> {
2858		match value {
2859			"merge" => Ok(Self::Merge),
2860			"squash" => Ok(Self::Squash),
2861			"rebase" => Ok(Self::Rebase),
2862			_ => Err("invalid value"),
2863		}
2864	}
2865}
2866impl std::convert::TryFrom<&str> for AutoMergeMergeMethod {
2867	type Error = &'static str;
2868
2869	fn try_from(value: &str) -> Result<Self, &'static str> {
2870		value.parse()
2871	}
2872}
2873impl std::convert::TryFrom<&String> for AutoMergeMergeMethod {
2874	type Error = &'static str;
2875
2876	fn try_from(value: &String) -> Result<Self, &'static str> {
2877		value.parse()
2878	}
2879}
2880impl std::convert::TryFrom<String> for AutoMergeMergeMethod {
2881	type Error = &'static str;
2882
2883	fn try_from(value: String) -> Result<Self, &'static str> {
2884		value.parse()
2885	}
2886}
2887/// The branch protection rule. Includes a `name` and all the [branch protection settings](https://docs.github.com/en/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-settings) applied to branches that match the name. Binary settings are boolean. Multi-level configurations are one of `off`, `non_admins`, or `everyone`. Actor and build lists are arrays of strings.
2888#[derive(Clone, Debug, Deserialize, Serialize)]
2889#[serde(deny_unknown_fields)]
2890pub struct BranchProtectionRule {
2891	pub admin_enforced: BranchProtectionRuleBoolean,
2892	pub allow_deletions_enforcement_level: BranchProtectionRuleEnforcementLevel,
2893	pub allow_force_pushes_enforcement_level: BranchProtectionRuleEnforcementLevel,
2894	pub authorized_actor_names: BranchProtectionRuleArray,
2895	pub authorized_actors_only: BranchProtectionRuleBoolean,
2896	pub authorized_dismissal_actors_only: BranchProtectionRuleBoolean,
2897	#[serde(default, skip_serializing_if = "Option::is_none")]
2898	pub create_protected: Option<BranchProtectionRuleBoolean>,
2899	pub created_at: chrono::DateTime<chrono::offset::Utc>,
2900	pub dismiss_stale_reviews_on_push: BranchProtectionRuleBoolean,
2901	pub id: i64,
2902	pub ignore_approvals_from_contributors: BranchProtectionRuleBoolean,
2903	pub linear_history_requirement_enforcement_level: BranchProtectionRuleEnforcementLevel,
2904	pub merge_queue_enforcement_level: BranchProtectionRuleEnforcementLevel,
2905	pub name: String,
2906	pub pull_request_reviews_enforcement_level: BranchProtectionRuleEnforcementLevel,
2907	pub repository_id: i64,
2908	pub require_code_owner_review: BranchProtectionRuleBoolean,
2909	pub required_approving_review_count: BranchProtectionRuleNumber,
2910	pub required_conversation_resolution_level: BranchProtectionRuleEnforcementLevel,
2911	pub required_deployments_enforcement_level: BranchProtectionRuleEnforcementLevel,
2912	pub required_status_checks: BranchProtectionRuleArray,
2913	pub required_status_checks_enforcement_level: BranchProtectionRuleEnforcementLevel,
2914	pub signature_requirement_enforcement_level: BranchProtectionRuleEnforcementLevel,
2915	pub strict_required_status_checks_policy: BranchProtectionRuleBoolean,
2916	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
2917}
2918impl From<&BranchProtectionRule> for BranchProtectionRule {
2919	fn from(value: &BranchProtectionRule) -> Self {
2920		value.clone()
2921	}
2922}
2923#[derive(Clone, Debug, Deserialize, Serialize)]
2924pub struct BranchProtectionRuleArray(pub Vec<String>);
2925impl std::ops::Deref for BranchProtectionRuleArray {
2926	type Target = Vec<String>;
2927
2928	fn deref(&self) -> &Vec<String> {
2929		&self.0
2930	}
2931}
2932impl From<BranchProtectionRuleArray> for Vec<String> {
2933	fn from(value: BranchProtectionRuleArray) -> Self {
2934		value.0
2935	}
2936}
2937impl From<&BranchProtectionRuleArray> for BranchProtectionRuleArray {
2938	fn from(value: &BranchProtectionRuleArray) -> Self {
2939		value.clone()
2940	}
2941}
2942impl From<Vec<String>> for BranchProtectionRuleArray {
2943	fn from(value: Vec<String>) -> Self {
2944		Self(value)
2945	}
2946}
2947#[derive(Clone, Debug, Deserialize, Serialize)]
2948pub struct BranchProtectionRuleBoolean(pub bool);
2949impl std::ops::Deref for BranchProtectionRuleBoolean {
2950	type Target = bool;
2951
2952	fn deref(&self) -> &bool {
2953		&self.0
2954	}
2955}
2956impl From<BranchProtectionRuleBoolean> for bool {
2957	fn from(value: BranchProtectionRuleBoolean) -> Self {
2958		value.0
2959	}
2960}
2961impl From<&BranchProtectionRuleBoolean> for BranchProtectionRuleBoolean {
2962	fn from(value: &BranchProtectionRuleBoolean) -> Self {
2963		value.clone()
2964	}
2965}
2966impl From<bool> for BranchProtectionRuleBoolean {
2967	fn from(value: bool) -> Self {
2968		Self(value)
2969	}
2970}
2971impl std::str::FromStr for BranchProtectionRuleBoolean {
2972	type Err = <bool as std::str::FromStr>::Err;
2973
2974	fn from_str(value: &str) -> Result<Self, Self::Err> {
2975		Ok(Self(value.parse()?))
2976	}
2977}
2978impl std::convert::TryFrom<&str> for BranchProtectionRuleBoolean {
2979	type Error = <bool as std::str::FromStr>::Err;
2980
2981	fn try_from(value: &str) -> Result<Self, Self::Error> {
2982		value.parse()
2983	}
2984}
2985impl std::convert::TryFrom<&String> for BranchProtectionRuleBoolean {
2986	type Error = <bool as std::str::FromStr>::Err;
2987
2988	fn try_from(value: &String) -> Result<Self, Self::Error> {
2989		value.parse()
2990	}
2991}
2992impl std::convert::TryFrom<String> for BranchProtectionRuleBoolean {
2993	type Error = <bool as std::str::FromStr>::Err;
2994
2995	fn try_from(value: String) -> Result<Self, Self::Error> {
2996		value.parse()
2997	}
2998}
2999impl ToString for BranchProtectionRuleBoolean {
3000	fn to_string(&self) -> String {
3001		self.0.to_string()
3002	}
3003}
3004/// Activity related to a branch protection rule. For more information, see "[About branch protection rules](https://docs.github.com/en/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-rules)."
3005#[derive(Clone, Debug, Deserialize, Serialize)]
3006#[serde(deny_unknown_fields)]
3007pub struct BranchProtectionRuleCreated {
3008	pub action:       BranchProtectionRuleCreatedAction,
3009	#[serde(default, skip_serializing_if = "Option::is_none")]
3010	pub installation: Option<InstallationLite>,
3011	#[serde(default, skip_serializing_if = "Option::is_none")]
3012	pub organization: Option<Organization>,
3013	pub repository:   Repository,
3014	pub rule:         BranchProtectionRule,
3015	pub sender:       User,
3016}
3017impl From<&BranchProtectionRuleCreated> for BranchProtectionRuleCreated {
3018	fn from(value: &BranchProtectionRuleCreated) -> Self {
3019		value.clone()
3020	}
3021}
3022#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3023pub enum BranchProtectionRuleCreatedAction {
3024	#[serde(rename = "created")]
3025	Created,
3026}
3027impl From<&BranchProtectionRuleCreatedAction> for BranchProtectionRuleCreatedAction {
3028	fn from(value: &BranchProtectionRuleCreatedAction) -> Self {
3029		value.clone()
3030	}
3031}
3032impl ToString for BranchProtectionRuleCreatedAction {
3033	fn to_string(&self) -> String {
3034		match *self {
3035			Self::Created => "created".to_string(),
3036		}
3037	}
3038}
3039impl std::str::FromStr for BranchProtectionRuleCreatedAction {
3040	type Err = &'static str;
3041
3042	fn from_str(value: &str) -> Result<Self, &'static str> {
3043		match value {
3044			"created" => Ok(Self::Created),
3045			_ => Err("invalid value"),
3046		}
3047	}
3048}
3049impl std::convert::TryFrom<&str> for BranchProtectionRuleCreatedAction {
3050	type Error = &'static str;
3051
3052	fn try_from(value: &str) -> Result<Self, &'static str> {
3053		value.parse()
3054	}
3055}
3056impl std::convert::TryFrom<&String> for BranchProtectionRuleCreatedAction {
3057	type Error = &'static str;
3058
3059	fn try_from(value: &String) -> Result<Self, &'static str> {
3060		value.parse()
3061	}
3062}
3063impl std::convert::TryFrom<String> for BranchProtectionRuleCreatedAction {
3064	type Error = &'static str;
3065
3066	fn try_from(value: String) -> Result<Self, &'static str> {
3067		value.parse()
3068	}
3069}
3070/// Activity related to a branch protection rule. For more information, see "[About branch protection rules](https://docs.github.com/en/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-rules)."
3071#[derive(Clone, Debug, Deserialize, Serialize)]
3072#[serde(deny_unknown_fields)]
3073pub struct BranchProtectionRuleDeleted {
3074	pub action:       BranchProtectionRuleDeletedAction,
3075	#[serde(default, skip_serializing_if = "Option::is_none")]
3076	pub installation: Option<InstallationLite>,
3077	#[serde(default, skip_serializing_if = "Option::is_none")]
3078	pub organization: Option<Organization>,
3079	pub repository:   Repository,
3080	pub rule:         BranchProtectionRule,
3081	pub sender:       User,
3082}
3083impl From<&BranchProtectionRuleDeleted> for BranchProtectionRuleDeleted {
3084	fn from(value: &BranchProtectionRuleDeleted) -> Self {
3085		value.clone()
3086	}
3087}
3088#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3089pub enum BranchProtectionRuleDeletedAction {
3090	#[serde(rename = "deleted")]
3091	Deleted,
3092}
3093impl From<&BranchProtectionRuleDeletedAction> for BranchProtectionRuleDeletedAction {
3094	fn from(value: &BranchProtectionRuleDeletedAction) -> Self {
3095		value.clone()
3096	}
3097}
3098impl ToString for BranchProtectionRuleDeletedAction {
3099	fn to_string(&self) -> String {
3100		match *self {
3101			Self::Deleted => "deleted".to_string(),
3102		}
3103	}
3104}
3105impl std::str::FromStr for BranchProtectionRuleDeletedAction {
3106	type Err = &'static str;
3107
3108	fn from_str(value: &str) -> Result<Self, &'static str> {
3109		match value {
3110			"deleted" => Ok(Self::Deleted),
3111			_ => Err("invalid value"),
3112		}
3113	}
3114}
3115impl std::convert::TryFrom<&str> for BranchProtectionRuleDeletedAction {
3116	type Error = &'static str;
3117
3118	fn try_from(value: &str) -> Result<Self, &'static str> {
3119		value.parse()
3120	}
3121}
3122impl std::convert::TryFrom<&String> for BranchProtectionRuleDeletedAction {
3123	type Error = &'static str;
3124
3125	fn try_from(value: &String) -> Result<Self, &'static str> {
3126		value.parse()
3127	}
3128}
3129impl std::convert::TryFrom<String> for BranchProtectionRuleDeletedAction {
3130	type Error = &'static str;
3131
3132	fn try_from(value: String) -> Result<Self, &'static str> {
3133		value.parse()
3134	}
3135}
3136/// Activity related to a branch protection rule. For more information, see "[About branch protection rules](https://docs.github.com/en/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-rules)."
3137#[derive(Clone, Debug, Deserialize, Serialize)]
3138#[serde(deny_unknown_fields)]
3139pub struct BranchProtectionRuleEdited {
3140	pub action:       BranchProtectionRuleEditedAction,
3141	#[serde(default, skip_serializing_if = "Option::is_none")]
3142	pub changes:      Option<BranchProtectionRuleEditedChanges>,
3143	#[serde(default, skip_serializing_if = "Option::is_none")]
3144	pub installation: Option<InstallationLite>,
3145	#[serde(default, skip_serializing_if = "Option::is_none")]
3146	pub organization: Option<Organization>,
3147	pub repository:   Repository,
3148	pub rule:         BranchProtectionRule,
3149	pub sender:       User,
3150}
3151impl From<&BranchProtectionRuleEdited> for BranchProtectionRuleEdited {
3152	fn from(value: &BranchProtectionRuleEdited) -> Self {
3153		value.clone()
3154	}
3155}
3156#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3157pub enum BranchProtectionRuleEditedAction {
3158	#[serde(rename = "edited")]
3159	Edited,
3160}
3161impl From<&BranchProtectionRuleEditedAction> for BranchProtectionRuleEditedAction {
3162	fn from(value: &BranchProtectionRuleEditedAction) -> Self {
3163		value.clone()
3164	}
3165}
3166impl ToString for BranchProtectionRuleEditedAction {
3167	fn to_string(&self) -> String {
3168		match *self {
3169			Self::Edited => "edited".to_string(),
3170		}
3171	}
3172}
3173impl std::str::FromStr for BranchProtectionRuleEditedAction {
3174	type Err = &'static str;
3175
3176	fn from_str(value: &str) -> Result<Self, &'static str> {
3177		match value {
3178			"edited" => Ok(Self::Edited),
3179			_ => Err("invalid value"),
3180		}
3181	}
3182}
3183impl std::convert::TryFrom<&str> for BranchProtectionRuleEditedAction {
3184	type Error = &'static str;
3185
3186	fn try_from(value: &str) -> Result<Self, &'static str> {
3187		value.parse()
3188	}
3189}
3190impl std::convert::TryFrom<&String> for BranchProtectionRuleEditedAction {
3191	type Error = &'static str;
3192
3193	fn try_from(value: &String) -> Result<Self, &'static str> {
3194		value.parse()
3195	}
3196}
3197impl std::convert::TryFrom<String> for BranchProtectionRuleEditedAction {
3198	type Error = &'static str;
3199
3200	fn try_from(value: String) -> Result<Self, &'static str> {
3201		value.parse()
3202	}
3203}
3204/// If the action was `edited`, the changes to the rule.
3205#[derive(Clone, Debug, Deserialize, Serialize)]
3206#[serde(deny_unknown_fields)]
3207pub struct BranchProtectionRuleEditedChanges {
3208	#[serde(default, skip_serializing_if = "Option::is_none")]
3209	pub admin_enforced: Option<BranchProtectionRuleEditedChangesAdminEnforced>,
3210	#[serde(default, skip_serializing_if = "Option::is_none")]
3211	pub allow_deletions_enforcement_level:
3212		Option<BranchProtectionRuleEditedChangesAllowDeletionsEnforcementLevel>,
3213	#[serde(default, skip_serializing_if = "Option::is_none")]
3214	pub allow_force_pushes_enforcement_level:
3215		Option<BranchProtectionRuleEditedChangesAllowForcePushesEnforcementLevel>,
3216	#[serde(default, skip_serializing_if = "Option::is_none")]
3217	pub authorized_actor_names: Option<BranchProtectionRuleEditedChangesAuthorizedActorNames>,
3218	#[serde(default, skip_serializing_if = "Option::is_none")]
3219	pub authorized_actors_only: Option<BranchProtectionRuleEditedChangesAuthorizedActorsOnly>,
3220	#[serde(default, skip_serializing_if = "Option::is_none")]
3221	pub authorized_dismissal_actors_only:
3222		Option<BranchProtectionRuleEditedChangesAuthorizedDismissalActorsOnly>,
3223	#[serde(default, skip_serializing_if = "Option::is_none")]
3224	pub dismiss_stale_reviews_on_push:
3225		Option<BranchProtectionRuleEditedChangesDismissStaleReviewsOnPush>,
3226	#[serde(default, skip_serializing_if = "Option::is_none")]
3227	pub linear_history_requirement_enforcement_level:
3228		Option<BranchProtectionRuleEditedChangesLinearHistoryRequirementEnforcementLevel>,
3229	#[serde(default, skip_serializing_if = "Option::is_none")]
3230	pub pull_request_reviews_enforcement_level:
3231		Option<BranchProtectionRuleEditedChangesPullRequestReviewsEnforcementLevel>,
3232	#[serde(default, skip_serializing_if = "Option::is_none")]
3233	pub require_code_owner_review: Option<BranchProtectionRuleEditedChangesRequireCodeOwnerReview>,
3234	#[serde(default, skip_serializing_if = "Option::is_none")]
3235	pub required_approving_review_count:
3236		Option<BranchProtectionRuleEditedChangesRequiredApprovingReviewCount>,
3237	#[serde(default, skip_serializing_if = "Option::is_none")]
3238	pub required_conversation_resolution_level:
3239		Option<BranchProtectionRuleEditedChangesRequiredConversationResolutionLevel>,
3240	#[serde(default, skip_serializing_if = "Option::is_none")]
3241	pub required_deployments_enforcement_level:
3242		Option<BranchProtectionRuleEditedChangesRequiredDeploymentsEnforcementLevel>,
3243	#[serde(default, skip_serializing_if = "Option::is_none")]
3244	pub required_status_checks: Option<BranchProtectionRuleEditedChangesRequiredStatusChecks>,
3245	#[serde(default, skip_serializing_if = "Option::is_none")]
3246	pub required_status_checks_enforcement_level:
3247		Option<BranchProtectionRuleEditedChangesRequiredStatusChecksEnforcementLevel>,
3248	#[serde(default, skip_serializing_if = "Option::is_none")]
3249	pub signature_requirement_enforcement_level:
3250		Option<BranchProtectionRuleEditedChangesSignatureRequirementEnforcementLevel>,
3251}
3252impl From<&BranchProtectionRuleEditedChanges> for BranchProtectionRuleEditedChanges {
3253	fn from(value: &BranchProtectionRuleEditedChanges) -> Self {
3254		value.clone()
3255	}
3256}
3257#[derive(Clone, Debug, Deserialize, Serialize)]
3258#[serde(deny_unknown_fields)]
3259pub struct BranchProtectionRuleEditedChangesAdminEnforced {
3260	pub from: BranchProtectionRuleBoolean,
3261}
3262impl From<&BranchProtectionRuleEditedChangesAdminEnforced>
3263	for BranchProtectionRuleEditedChangesAdminEnforced
3264{
3265	fn from(value: &BranchProtectionRuleEditedChangesAdminEnforced) -> Self {
3266		value.clone()
3267	}
3268}
3269#[derive(Clone, Debug, Deserialize, Serialize)]
3270#[serde(deny_unknown_fields)]
3271pub struct BranchProtectionRuleEditedChangesAllowDeletionsEnforcementLevel {
3272	pub from: Option<BranchProtectionRuleEnforcementLevel>,
3273}
3274impl From<&BranchProtectionRuleEditedChangesAllowDeletionsEnforcementLevel>
3275	for BranchProtectionRuleEditedChangesAllowDeletionsEnforcementLevel
3276{
3277	fn from(value: &BranchProtectionRuleEditedChangesAllowDeletionsEnforcementLevel) -> Self {
3278		value.clone()
3279	}
3280}
3281#[derive(Clone, Debug, Deserialize, Serialize)]
3282#[serde(deny_unknown_fields)]
3283pub struct BranchProtectionRuleEditedChangesAllowForcePushesEnforcementLevel {
3284	pub from: BranchProtectionRuleEnforcementLevel,
3285}
3286impl From<&BranchProtectionRuleEditedChangesAllowForcePushesEnforcementLevel>
3287	for BranchProtectionRuleEditedChangesAllowForcePushesEnforcementLevel
3288{
3289	fn from(value: &BranchProtectionRuleEditedChangesAllowForcePushesEnforcementLevel) -> Self {
3290		value.clone()
3291	}
3292}
3293#[derive(Clone, Debug, Deserialize, Serialize)]
3294#[serde(deny_unknown_fields)]
3295pub struct BranchProtectionRuleEditedChangesAuthorizedActorNames {
3296	pub from: BranchProtectionRuleArray,
3297}
3298impl From<&BranchProtectionRuleEditedChangesAuthorizedActorNames>
3299	for BranchProtectionRuleEditedChangesAuthorizedActorNames
3300{
3301	fn from(value: &BranchProtectionRuleEditedChangesAuthorizedActorNames) -> Self {
3302		value.clone()
3303	}
3304}
3305#[derive(Clone, Debug, Deserialize, Serialize)]
3306#[serde(deny_unknown_fields)]
3307pub struct BranchProtectionRuleEditedChangesAuthorizedActorsOnly {
3308	pub from: BranchProtectionRuleBoolean,
3309}
3310impl From<&BranchProtectionRuleEditedChangesAuthorizedActorsOnly>
3311	for BranchProtectionRuleEditedChangesAuthorizedActorsOnly
3312{
3313	fn from(value: &BranchProtectionRuleEditedChangesAuthorizedActorsOnly) -> Self {
3314		value.clone()
3315	}
3316}
3317#[derive(Clone, Debug, Deserialize, Serialize)]
3318#[serde(deny_unknown_fields)]
3319pub struct BranchProtectionRuleEditedChangesAuthorizedDismissalActorsOnly {
3320	pub from: Option<BranchProtectionRuleBoolean>,
3321}
3322impl From<&BranchProtectionRuleEditedChangesAuthorizedDismissalActorsOnly>
3323	for BranchProtectionRuleEditedChangesAuthorizedDismissalActorsOnly
3324{
3325	fn from(value: &BranchProtectionRuleEditedChangesAuthorizedDismissalActorsOnly) -> Self {
3326		value.clone()
3327	}
3328}
3329#[derive(Clone, Debug, Deserialize, Serialize)]
3330#[serde(deny_unknown_fields)]
3331pub struct BranchProtectionRuleEditedChangesDismissStaleReviewsOnPush {
3332	pub from: BranchProtectionRuleBoolean,
3333}
3334impl From<&BranchProtectionRuleEditedChangesDismissStaleReviewsOnPush>
3335	for BranchProtectionRuleEditedChangesDismissStaleReviewsOnPush
3336{
3337	fn from(value: &BranchProtectionRuleEditedChangesDismissStaleReviewsOnPush) -> Self {
3338		value.clone()
3339	}
3340}
3341#[derive(Clone, Debug, Deserialize, Serialize)]
3342#[serde(deny_unknown_fields)]
3343pub struct BranchProtectionRuleEditedChangesLinearHistoryRequirementEnforcementLevel {
3344	pub from: BranchProtectionRuleEnforcementLevel,
3345}
3346impl From<&BranchProtectionRuleEditedChangesLinearHistoryRequirementEnforcementLevel>
3347	for BranchProtectionRuleEditedChangesLinearHistoryRequirementEnforcementLevel
3348{
3349	fn from(
3350		value: &BranchProtectionRuleEditedChangesLinearHistoryRequirementEnforcementLevel,
3351	) -> Self {
3352		value.clone()
3353	}
3354}
3355#[derive(Clone, Debug, Deserialize, Serialize)]
3356#[serde(deny_unknown_fields)]
3357pub struct BranchProtectionRuleEditedChangesPullRequestReviewsEnforcementLevel {
3358	pub from: BranchProtectionRuleEnforcementLevel,
3359}
3360impl From<&BranchProtectionRuleEditedChangesPullRequestReviewsEnforcementLevel>
3361	for BranchProtectionRuleEditedChangesPullRequestReviewsEnforcementLevel
3362{
3363	fn from(value: &BranchProtectionRuleEditedChangesPullRequestReviewsEnforcementLevel) -> Self {
3364		value.clone()
3365	}
3366}
3367#[derive(Clone, Debug, Deserialize, Serialize)]
3368#[serde(deny_unknown_fields)]
3369pub struct BranchProtectionRuleEditedChangesRequireCodeOwnerReview {
3370	pub from: BranchProtectionRuleBoolean,
3371}
3372impl From<&BranchProtectionRuleEditedChangesRequireCodeOwnerReview>
3373	for BranchProtectionRuleEditedChangesRequireCodeOwnerReview
3374{
3375	fn from(value: &BranchProtectionRuleEditedChangesRequireCodeOwnerReview) -> Self {
3376		value.clone()
3377	}
3378}
3379#[derive(Clone, Debug, Deserialize, Serialize)]
3380#[serde(deny_unknown_fields)]
3381pub struct BranchProtectionRuleEditedChangesRequiredApprovingReviewCount {
3382	pub from: BranchProtectionRuleNumber,
3383}
3384impl From<&BranchProtectionRuleEditedChangesRequiredApprovingReviewCount>
3385	for BranchProtectionRuleEditedChangesRequiredApprovingReviewCount
3386{
3387	fn from(value: &BranchProtectionRuleEditedChangesRequiredApprovingReviewCount) -> Self {
3388		value.clone()
3389	}
3390}
3391#[derive(Clone, Debug, Deserialize, Serialize)]
3392#[serde(deny_unknown_fields)]
3393pub struct BranchProtectionRuleEditedChangesRequiredConversationResolutionLevel {
3394	pub from: BranchProtectionRuleEnforcementLevel,
3395}
3396impl From<&BranchProtectionRuleEditedChangesRequiredConversationResolutionLevel>
3397	for BranchProtectionRuleEditedChangesRequiredConversationResolutionLevel
3398{
3399	fn from(value: &BranchProtectionRuleEditedChangesRequiredConversationResolutionLevel) -> Self {
3400		value.clone()
3401	}
3402}
3403#[derive(Clone, Debug, Deserialize, Serialize)]
3404#[serde(deny_unknown_fields)]
3405pub struct BranchProtectionRuleEditedChangesRequiredDeploymentsEnforcementLevel {
3406	pub from: BranchProtectionRuleEnforcementLevel,
3407}
3408impl From<&BranchProtectionRuleEditedChangesRequiredDeploymentsEnforcementLevel>
3409	for BranchProtectionRuleEditedChangesRequiredDeploymentsEnforcementLevel
3410{
3411	fn from(value: &BranchProtectionRuleEditedChangesRequiredDeploymentsEnforcementLevel) -> Self {
3412		value.clone()
3413	}
3414}
3415#[derive(Clone, Debug, Deserialize, Serialize)]
3416#[serde(deny_unknown_fields)]
3417pub struct BranchProtectionRuleEditedChangesRequiredStatusChecks {
3418	pub from: BranchProtectionRuleArray,
3419}
3420impl From<&BranchProtectionRuleEditedChangesRequiredStatusChecks>
3421	for BranchProtectionRuleEditedChangesRequiredStatusChecks
3422{
3423	fn from(value: &BranchProtectionRuleEditedChangesRequiredStatusChecks) -> Self {
3424		value.clone()
3425	}
3426}
3427#[derive(Clone, Debug, Deserialize, Serialize)]
3428#[serde(deny_unknown_fields)]
3429pub struct BranchProtectionRuleEditedChangesRequiredStatusChecksEnforcementLevel {
3430	pub from: BranchProtectionRuleEnforcementLevel,
3431}
3432impl From<&BranchProtectionRuleEditedChangesRequiredStatusChecksEnforcementLevel>
3433	for BranchProtectionRuleEditedChangesRequiredStatusChecksEnforcementLevel
3434{
3435	fn from(value: &BranchProtectionRuleEditedChangesRequiredStatusChecksEnforcementLevel) -> Self {
3436		value.clone()
3437	}
3438}
3439#[derive(Clone, Debug, Deserialize, Serialize)]
3440#[serde(deny_unknown_fields)]
3441pub struct BranchProtectionRuleEditedChangesSignatureRequirementEnforcementLevel {
3442	pub from: BranchProtectionRuleEnforcementLevel,
3443}
3444impl From<&BranchProtectionRuleEditedChangesSignatureRequirementEnforcementLevel>
3445	for BranchProtectionRuleEditedChangesSignatureRequirementEnforcementLevel
3446{
3447	fn from(value: &BranchProtectionRuleEditedChangesSignatureRequirementEnforcementLevel) -> Self {
3448		value.clone()
3449	}
3450}
3451#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3452pub enum BranchProtectionRuleEnforcementLevel {
3453	#[serde(rename = "off")]
3454	Off,
3455	#[serde(rename = "non_admins")]
3456	NonAdmins,
3457	#[serde(rename = "everyone")]
3458	Everyone,
3459}
3460impl From<&BranchProtectionRuleEnforcementLevel> for BranchProtectionRuleEnforcementLevel {
3461	fn from(value: &BranchProtectionRuleEnforcementLevel) -> Self {
3462		value.clone()
3463	}
3464}
3465impl ToString for BranchProtectionRuleEnforcementLevel {
3466	fn to_string(&self) -> String {
3467		match *self {
3468			Self::Off => "off".to_string(),
3469			Self::NonAdmins => "non_admins".to_string(),
3470			Self::Everyone => "everyone".to_string(),
3471		}
3472	}
3473}
3474impl std::str::FromStr for BranchProtectionRuleEnforcementLevel {
3475	type Err = &'static str;
3476
3477	fn from_str(value: &str) -> Result<Self, &'static str> {
3478		match value {
3479			"off" => Ok(Self::Off),
3480			"non_admins" => Ok(Self::NonAdmins),
3481			"everyone" => Ok(Self::Everyone),
3482			_ => Err("invalid value"),
3483		}
3484	}
3485}
3486impl std::convert::TryFrom<&str> for BranchProtectionRuleEnforcementLevel {
3487	type Error = &'static str;
3488
3489	fn try_from(value: &str) -> Result<Self, &'static str> {
3490		value.parse()
3491	}
3492}
3493impl std::convert::TryFrom<&String> for BranchProtectionRuleEnforcementLevel {
3494	type Error = &'static str;
3495
3496	fn try_from(value: &String) -> Result<Self, &'static str> {
3497		value.parse()
3498	}
3499}
3500impl std::convert::TryFrom<String> for BranchProtectionRuleEnforcementLevel {
3501	type Error = &'static str;
3502
3503	fn try_from(value: String) -> Result<Self, &'static str> {
3504		value.parse()
3505	}
3506}
3507#[derive(Clone, Debug, Deserialize, Serialize)]
3508#[serde(untagged)]
3509pub enum BranchProtectionRuleEvent {
3510	Created(BranchProtectionRuleCreated),
3511	Deleted(BranchProtectionRuleDeleted),
3512	Edited(BranchProtectionRuleEdited),
3513}
3514impl From<&BranchProtectionRuleEvent> for BranchProtectionRuleEvent {
3515	fn from(value: &BranchProtectionRuleEvent) -> Self {
3516		value.clone()
3517	}
3518}
3519impl From<BranchProtectionRuleCreated> for BranchProtectionRuleEvent {
3520	fn from(value: BranchProtectionRuleCreated) -> Self {
3521		Self::Created(value)
3522	}
3523}
3524impl From<BranchProtectionRuleDeleted> for BranchProtectionRuleEvent {
3525	fn from(value: BranchProtectionRuleDeleted) -> Self {
3526		Self::Deleted(value)
3527	}
3528}
3529impl From<BranchProtectionRuleEdited> for BranchProtectionRuleEvent {
3530	fn from(value: BranchProtectionRuleEdited) -> Self {
3531		Self::Edited(value)
3532	}
3533}
3534#[derive(Clone, Debug, Deserialize, Serialize)]
3535pub struct BranchProtectionRuleNumber(pub i64);
3536impl std::ops::Deref for BranchProtectionRuleNumber {
3537	type Target = i64;
3538
3539	fn deref(&self) -> &i64 {
3540		&self.0
3541	}
3542}
3543impl From<BranchProtectionRuleNumber> for i64 {
3544	fn from(value: BranchProtectionRuleNumber) -> Self {
3545		value.0
3546	}
3547}
3548impl From<&BranchProtectionRuleNumber> for BranchProtectionRuleNumber {
3549	fn from(value: &BranchProtectionRuleNumber) -> Self {
3550		value.clone()
3551	}
3552}
3553impl From<i64> for BranchProtectionRuleNumber {
3554	fn from(value: i64) -> Self {
3555		Self(value)
3556	}
3557}
3558impl std::str::FromStr for BranchProtectionRuleNumber {
3559	type Err = <i64 as std::str::FromStr>::Err;
3560
3561	fn from_str(value: &str) -> Result<Self, Self::Err> {
3562		Ok(Self(value.parse()?))
3563	}
3564}
3565impl std::convert::TryFrom<&str> for BranchProtectionRuleNumber {
3566	type Error = <i64 as std::str::FromStr>::Err;
3567
3568	fn try_from(value: &str) -> Result<Self, Self::Error> {
3569		value.parse()
3570	}
3571}
3572impl std::convert::TryFrom<&String> for BranchProtectionRuleNumber {
3573	type Error = <i64 as std::str::FromStr>::Err;
3574
3575	fn try_from(value: &String) -> Result<Self, Self::Error> {
3576		value.parse()
3577	}
3578}
3579impl std::convert::TryFrom<String> for BranchProtectionRuleNumber {
3580	type Error = <i64 as std::str::FromStr>::Err;
3581
3582	fn try_from(value: String) -> Result<Self, Self::Error> {
3583		value.parse()
3584	}
3585}
3586impl ToString for BranchProtectionRuleNumber {
3587	fn to_string(&self) -> String {
3588		self.0.to_string()
3589	}
3590}
3591#[derive(Clone, Debug, Deserialize, Serialize)]
3592#[serde(deny_unknown_fields)]
3593pub struct CheckRunCompleted {
3594	pub action:           CheckRunCompletedAction,
3595	pub check_run:        CheckRunCompletedCheckRun,
3596	#[serde(default, skip_serializing_if = "Option::is_none")]
3597	pub installation:     Option<InstallationLite>,
3598	#[serde(default, skip_serializing_if = "Option::is_none")]
3599	pub organization:     Option<Organization>,
3600	pub repository:       Repository,
3601	/// The action requested by the user.
3602	#[serde(default, skip_serializing_if = "Option::is_none")]
3603	pub requested_action: Option<CheckRunCompletedRequestedAction>,
3604	pub sender:           User,
3605}
3606impl From<&CheckRunCompleted> for CheckRunCompleted {
3607	fn from(value: &CheckRunCompleted) -> Self {
3608		value.clone()
3609	}
3610}
3611#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3612pub enum CheckRunCompletedAction {
3613	#[serde(rename = "completed")]
3614	Completed,
3615}
3616impl From<&CheckRunCompletedAction> for CheckRunCompletedAction {
3617	fn from(value: &CheckRunCompletedAction) -> Self {
3618		value.clone()
3619	}
3620}
3621impl ToString for CheckRunCompletedAction {
3622	fn to_string(&self) -> String {
3623		match *self {
3624			Self::Completed => "completed".to_string(),
3625		}
3626	}
3627}
3628impl std::str::FromStr for CheckRunCompletedAction {
3629	type Err = &'static str;
3630
3631	fn from_str(value: &str) -> Result<Self, &'static str> {
3632		match value {
3633			"completed" => Ok(Self::Completed),
3634			_ => Err("invalid value"),
3635		}
3636	}
3637}
3638impl std::convert::TryFrom<&str> for CheckRunCompletedAction {
3639	type Error = &'static str;
3640
3641	fn try_from(value: &str) -> Result<Self, &'static str> {
3642		value.parse()
3643	}
3644}
3645impl std::convert::TryFrom<&String> for CheckRunCompletedAction {
3646	type Error = &'static str;
3647
3648	fn try_from(value: &String) -> Result<Self, &'static str> {
3649		value.parse()
3650	}
3651}
3652impl std::convert::TryFrom<String> for CheckRunCompletedAction {
3653	type Error = &'static str;
3654
3655	fn try_from(value: String) -> Result<Self, &'static str> {
3656		value.parse()
3657	}
3658}
3659/// The [check_run](https://docs.github.com/en/rest/reference/checks#get-a-check-run).
3660#[derive(Clone, Debug, Deserialize, Serialize)]
3661#[serde(deny_unknown_fields)]
3662pub struct CheckRunCompletedCheckRun {
3663	pub app:           App,
3664	pub check_suite:   CheckRunCompletedCheckRunCheckSuite,
3665	/// The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
3666	pub completed_at:  chrono::DateTime<chrono::offset::Utc>,
3667	/// The result of the completed check run. Can be one of `success`,
3668	/// `failure`, `neutral`, `cancelled`, `timed_out`, `action_required` or
3669	/// `stale`. This value will be `null` until the check run has completed.
3670	pub conclusion:    Option<CheckRunCompletedCheckRunConclusion>,
3671	#[serde(default, skip_serializing_if = "Option::is_none")]
3672	pub deployment:    Option<CheckRunDeployment>,
3673	#[serde(default, skip_serializing_if = "Option::is_none")]
3674	pub details_url:   Option<String>,
3675	pub external_id:   String,
3676	/// The SHA of the commit that is being checked.
3677	pub head_sha:      String,
3678	pub html_url:      String,
3679	/// The id of the check.
3680	pub id:            i64,
3681	/// The name of the check run.
3682	pub name:          String,
3683	#[serde(default, skip_serializing_if = "Option::is_none")]
3684	pub node_id:       Option<String>,
3685	pub output:        CheckRunCompletedCheckRunOutput,
3686	pub pull_requests: Vec<CheckRunPullRequest>,
3687	/// The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
3688	pub started_at:    chrono::DateTime<chrono::offset::Utc>,
3689	/// The current status of the check run. Can be `queued`, `in_progress`, or
3690	/// `completed`.
3691	pub status:        CheckRunCompletedCheckRunStatus,
3692	pub url:           String,
3693}
3694impl From<&CheckRunCompletedCheckRun> for CheckRunCompletedCheckRun {
3695	fn from(value: &CheckRunCompletedCheckRun) -> Self {
3696		value.clone()
3697	}
3698}
3699#[derive(Clone, Debug, Deserialize, Serialize)]
3700#[serde(deny_unknown_fields)]
3701pub struct CheckRunCompletedCheckRunCheckSuite {
3702	pub after:         Option<String>,
3703	pub app:           App,
3704	pub before:        Option<String>,
3705	pub conclusion:    Option<CheckRunCompletedCheckRunCheckSuiteConclusion>,
3706	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
3707	#[serde(default, skip_serializing_if = "Option::is_none")]
3708	pub deployment:    Option<CheckRunDeployment>,
3709	pub head_branch:   Option<String>,
3710	/// The SHA of the head commit that is being checked.
3711	pub head_sha:      String,
3712	/// The id of the check suite that this check run is part of.
3713	pub id:            i64,
3714	#[serde(default, skip_serializing_if = "Option::is_none")]
3715	pub node_id:       Option<String>,
3716	/// An array of pull requests that match this check suite. A pull request
3717	/// matches a check suite if they have the same `head_branch`.  
3718	/// **Note:**
3719	///
3720	/// * The `head_sha` of the check suite can differ from the `sha` of the
3721	///   pull request if subsequent pushes are made into the PR.
3722	/// * When the check suite's `head_branch` is in a forked repository it will
3723	///   be `null` and the `pull_requests` array will be empty.
3724	pub pull_requests: Vec<CheckRunPullRequest>,
3725	pub status:        CheckRunCompletedCheckRunCheckSuiteStatus,
3726	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
3727	pub url:           String,
3728}
3729impl From<&CheckRunCompletedCheckRunCheckSuite> for CheckRunCompletedCheckRunCheckSuite {
3730	fn from(value: &CheckRunCompletedCheckRunCheckSuite) -> Self {
3731		value.clone()
3732	}
3733}
3734#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3735pub enum CheckRunCompletedCheckRunCheckSuiteConclusion {
3736	#[serde(rename = "success")]
3737	Success,
3738	#[serde(rename = "failure")]
3739	Failure,
3740	#[serde(rename = "neutral")]
3741	Neutral,
3742	#[serde(rename = "cancelled")]
3743	Cancelled,
3744	#[serde(rename = "timed_out")]
3745	TimedOut,
3746	#[serde(rename = "action_required")]
3747	ActionRequired,
3748	#[serde(rename = "stale")]
3749	Stale,
3750}
3751impl From<&CheckRunCompletedCheckRunCheckSuiteConclusion>
3752	for CheckRunCompletedCheckRunCheckSuiteConclusion
3753{
3754	fn from(value: &CheckRunCompletedCheckRunCheckSuiteConclusion) -> Self {
3755		value.clone()
3756	}
3757}
3758impl ToString for CheckRunCompletedCheckRunCheckSuiteConclusion {
3759	fn to_string(&self) -> String {
3760		match *self {
3761			Self::Success => "success".to_string(),
3762			Self::Failure => "failure".to_string(),
3763			Self::Neutral => "neutral".to_string(),
3764			Self::Cancelled => "cancelled".to_string(),
3765			Self::TimedOut => "timed_out".to_string(),
3766			Self::ActionRequired => "action_required".to_string(),
3767			Self::Stale => "stale".to_string(),
3768		}
3769	}
3770}
3771impl std::str::FromStr for CheckRunCompletedCheckRunCheckSuiteConclusion {
3772	type Err = &'static str;
3773
3774	fn from_str(value: &str) -> Result<Self, &'static str> {
3775		match value {
3776			"success" => Ok(Self::Success),
3777			"failure" => Ok(Self::Failure),
3778			"neutral" => Ok(Self::Neutral),
3779			"cancelled" => Ok(Self::Cancelled),
3780			"timed_out" => Ok(Self::TimedOut),
3781			"action_required" => Ok(Self::ActionRequired),
3782			"stale" => Ok(Self::Stale),
3783			_ => Err("invalid value"),
3784		}
3785	}
3786}
3787impl std::convert::TryFrom<&str> for CheckRunCompletedCheckRunCheckSuiteConclusion {
3788	type Error = &'static str;
3789
3790	fn try_from(value: &str) -> Result<Self, &'static str> {
3791		value.parse()
3792	}
3793}
3794impl std::convert::TryFrom<&String> for CheckRunCompletedCheckRunCheckSuiteConclusion {
3795	type Error = &'static str;
3796
3797	fn try_from(value: &String) -> Result<Self, &'static str> {
3798		value.parse()
3799	}
3800}
3801impl std::convert::TryFrom<String> for CheckRunCompletedCheckRunCheckSuiteConclusion {
3802	type Error = &'static str;
3803
3804	fn try_from(value: String) -> Result<Self, &'static str> {
3805		value.parse()
3806	}
3807}
3808#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3809pub enum CheckRunCompletedCheckRunCheckSuiteStatus {
3810	#[serde(rename = "in_progress")]
3811	InProgress,
3812	#[serde(rename = "completed")]
3813	Completed,
3814	#[serde(rename = "queued")]
3815	Queued,
3816}
3817impl From<&CheckRunCompletedCheckRunCheckSuiteStatus>
3818	for CheckRunCompletedCheckRunCheckSuiteStatus
3819{
3820	fn from(value: &CheckRunCompletedCheckRunCheckSuiteStatus) -> Self {
3821		value.clone()
3822	}
3823}
3824impl ToString for CheckRunCompletedCheckRunCheckSuiteStatus {
3825	fn to_string(&self) -> String {
3826		match *self {
3827			Self::InProgress => "in_progress".to_string(),
3828			Self::Completed => "completed".to_string(),
3829			Self::Queued => "queued".to_string(),
3830		}
3831	}
3832}
3833impl std::str::FromStr for CheckRunCompletedCheckRunCheckSuiteStatus {
3834	type Err = &'static str;
3835
3836	fn from_str(value: &str) -> Result<Self, &'static str> {
3837		match value {
3838			"in_progress" => Ok(Self::InProgress),
3839			"completed" => Ok(Self::Completed),
3840			"queued" => Ok(Self::Queued),
3841			_ => Err("invalid value"),
3842		}
3843	}
3844}
3845impl std::convert::TryFrom<&str> for CheckRunCompletedCheckRunCheckSuiteStatus {
3846	type Error = &'static str;
3847
3848	fn try_from(value: &str) -> Result<Self, &'static str> {
3849		value.parse()
3850	}
3851}
3852impl std::convert::TryFrom<&String> for CheckRunCompletedCheckRunCheckSuiteStatus {
3853	type Error = &'static str;
3854
3855	fn try_from(value: &String) -> Result<Self, &'static str> {
3856		value.parse()
3857	}
3858}
3859impl std::convert::TryFrom<String> for CheckRunCompletedCheckRunCheckSuiteStatus {
3860	type Error = &'static str;
3861
3862	fn try_from(value: String) -> Result<Self, &'static str> {
3863		value.parse()
3864	}
3865}
3866/// The result of the completed check run. Can be one of `success`, `failure`,
3867/// `neutral`, `cancelled`, `timed_out`, `action_required` or `stale`. This
3868/// value will be `null` until the check run has completed.
3869#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3870pub enum CheckRunCompletedCheckRunConclusion {
3871	#[serde(rename = "success")]
3872	Success,
3873	#[serde(rename = "failure")]
3874	Failure,
3875	#[serde(rename = "neutral")]
3876	Neutral,
3877	#[serde(rename = "cancelled")]
3878	Cancelled,
3879	#[serde(rename = "timed_out")]
3880	TimedOut,
3881	#[serde(rename = "action_required")]
3882	ActionRequired,
3883	#[serde(rename = "stale")]
3884	Stale,
3885	#[serde(rename = "skipped")]
3886	Skipped,
3887}
3888impl From<&CheckRunCompletedCheckRunConclusion> for CheckRunCompletedCheckRunConclusion {
3889	fn from(value: &CheckRunCompletedCheckRunConclusion) -> Self {
3890		value.clone()
3891	}
3892}
3893impl ToString for CheckRunCompletedCheckRunConclusion {
3894	fn to_string(&self) -> String {
3895		match *self {
3896			Self::Success => "success".to_string(),
3897			Self::Failure => "failure".to_string(),
3898			Self::Neutral => "neutral".to_string(),
3899			Self::Cancelled => "cancelled".to_string(),
3900			Self::TimedOut => "timed_out".to_string(),
3901			Self::ActionRequired => "action_required".to_string(),
3902			Self::Stale => "stale".to_string(),
3903			Self::Skipped => "skipped".to_string(),
3904		}
3905	}
3906}
3907impl std::str::FromStr for CheckRunCompletedCheckRunConclusion {
3908	type Err = &'static str;
3909
3910	fn from_str(value: &str) -> Result<Self, &'static str> {
3911		match value {
3912			"success" => Ok(Self::Success),
3913			"failure" => Ok(Self::Failure),
3914			"neutral" => Ok(Self::Neutral),
3915			"cancelled" => Ok(Self::Cancelled),
3916			"timed_out" => Ok(Self::TimedOut),
3917			"action_required" => Ok(Self::ActionRequired),
3918			"stale" => Ok(Self::Stale),
3919			"skipped" => Ok(Self::Skipped),
3920			_ => Err("invalid value"),
3921		}
3922	}
3923}
3924impl std::convert::TryFrom<&str> for CheckRunCompletedCheckRunConclusion {
3925	type Error = &'static str;
3926
3927	fn try_from(value: &str) -> Result<Self, &'static str> {
3928		value.parse()
3929	}
3930}
3931impl std::convert::TryFrom<&String> for CheckRunCompletedCheckRunConclusion {
3932	type Error = &'static str;
3933
3934	fn try_from(value: &String) -> Result<Self, &'static str> {
3935		value.parse()
3936	}
3937}
3938impl std::convert::TryFrom<String> for CheckRunCompletedCheckRunConclusion {
3939	type Error = &'static str;
3940
3941	fn try_from(value: String) -> Result<Self, &'static str> {
3942		value.parse()
3943	}
3944}
3945#[derive(Clone, Debug, Deserialize, Serialize)]
3946#[serde(deny_unknown_fields)]
3947pub struct CheckRunCompletedCheckRunOutput {
3948	pub annotations_count: i64,
3949	pub annotations_url:   String,
3950	pub summary:           Option<String>,
3951	pub text:              Option<String>,
3952	#[serde(default, skip_serializing_if = "Option::is_none")]
3953	pub title:             Option<String>,
3954}
3955impl From<&CheckRunCompletedCheckRunOutput> for CheckRunCompletedCheckRunOutput {
3956	fn from(value: &CheckRunCompletedCheckRunOutput) -> Self {
3957		value.clone()
3958	}
3959}
3960/// The current status of the check run. Can be `queued`, `in_progress`, or
3961/// `completed`.
3962#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
3963pub enum CheckRunCompletedCheckRunStatus {
3964	#[serde(rename = "completed")]
3965	Completed,
3966}
3967impl From<&CheckRunCompletedCheckRunStatus> for CheckRunCompletedCheckRunStatus {
3968	fn from(value: &CheckRunCompletedCheckRunStatus) -> Self {
3969		value.clone()
3970	}
3971}
3972impl ToString for CheckRunCompletedCheckRunStatus {
3973	fn to_string(&self) -> String {
3974		match *self {
3975			Self::Completed => "completed".to_string(),
3976		}
3977	}
3978}
3979impl std::str::FromStr for CheckRunCompletedCheckRunStatus {
3980	type Err = &'static str;
3981
3982	fn from_str(value: &str) -> Result<Self, &'static str> {
3983		match value {
3984			"completed" => Ok(Self::Completed),
3985			_ => Err("invalid value"),
3986		}
3987	}
3988}
3989impl std::convert::TryFrom<&str> for CheckRunCompletedCheckRunStatus {
3990	type Error = &'static str;
3991
3992	fn try_from(value: &str) -> Result<Self, &'static str> {
3993		value.parse()
3994	}
3995}
3996impl std::convert::TryFrom<&String> for CheckRunCompletedCheckRunStatus {
3997	type Error = &'static str;
3998
3999	fn try_from(value: &String) -> Result<Self, &'static str> {
4000		value.parse()
4001	}
4002}
4003impl std::convert::TryFrom<String> for CheckRunCompletedCheckRunStatus {
4004	type Error = &'static str;
4005
4006	fn try_from(value: String) -> Result<Self, &'static str> {
4007		value.parse()
4008	}
4009}
4010/// The action requested by the user.
4011#[derive(Clone, Debug, Deserialize, Serialize)]
4012#[serde(deny_unknown_fields)]
4013pub struct CheckRunCompletedRequestedAction {
4014	/// The integrator reference of the action requested by the user.
4015	#[serde(default, skip_serializing_if = "Option::is_none")]
4016	pub identifier: Option<String>,
4017}
4018impl From<&CheckRunCompletedRequestedAction> for CheckRunCompletedRequestedAction {
4019	fn from(value: &CheckRunCompletedRequestedAction) -> Self {
4020		value.clone()
4021	}
4022}
4023#[derive(Clone, Debug, Deserialize, Serialize)]
4024#[serde(deny_unknown_fields)]
4025pub struct CheckRunCreated {
4026	pub action:           CheckRunCreatedAction,
4027	pub check_run:        CheckRunCreatedCheckRun,
4028	#[serde(default, skip_serializing_if = "Option::is_none")]
4029	pub installation:     Option<InstallationLite>,
4030	#[serde(default, skip_serializing_if = "Option::is_none")]
4031	pub organization:     Option<Organization>,
4032	pub repository:       Repository,
4033	/// The action requested by the user.
4034	#[serde(default, skip_serializing_if = "Option::is_none")]
4035	pub requested_action: Option<CheckRunCreatedRequestedAction>,
4036	pub sender:           User,
4037}
4038impl From<&CheckRunCreated> for CheckRunCreated {
4039	fn from(value: &CheckRunCreated) -> Self {
4040		value.clone()
4041	}
4042}
4043#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4044pub enum CheckRunCreatedAction {
4045	#[serde(rename = "created")]
4046	Created,
4047}
4048impl From<&CheckRunCreatedAction> for CheckRunCreatedAction {
4049	fn from(value: &CheckRunCreatedAction) -> Self {
4050		value.clone()
4051	}
4052}
4053impl ToString for CheckRunCreatedAction {
4054	fn to_string(&self) -> String {
4055		match *self {
4056			Self::Created => "created".to_string(),
4057		}
4058	}
4059}
4060impl std::str::FromStr for CheckRunCreatedAction {
4061	type Err = &'static str;
4062
4063	fn from_str(value: &str) -> Result<Self, &'static str> {
4064		match value {
4065			"created" => Ok(Self::Created),
4066			_ => Err("invalid value"),
4067		}
4068	}
4069}
4070impl std::convert::TryFrom<&str> for CheckRunCreatedAction {
4071	type Error = &'static str;
4072
4073	fn try_from(value: &str) -> Result<Self, &'static str> {
4074		value.parse()
4075	}
4076}
4077impl std::convert::TryFrom<&String> for CheckRunCreatedAction {
4078	type Error = &'static str;
4079
4080	fn try_from(value: &String) -> Result<Self, &'static str> {
4081		value.parse()
4082	}
4083}
4084impl std::convert::TryFrom<String> for CheckRunCreatedAction {
4085	type Error = &'static str;
4086
4087	fn try_from(value: String) -> Result<Self, &'static str> {
4088		value.parse()
4089	}
4090}
4091/// The [check_run](https://docs.github.com/en/rest/reference/checks#get-a-check-run).
4092#[derive(Clone, Debug, Deserialize, Serialize)]
4093#[serde(deny_unknown_fields)]
4094pub struct CheckRunCreatedCheckRun {
4095	pub app:           App,
4096	pub check_suite:   CheckRunCreatedCheckRunCheckSuite,
4097	/// The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
4098	pub completed_at:  Option<chrono::DateTime<chrono::offset::Utc>>,
4099	/// The result of the completed check run. Can be one of `success`,
4100	/// `failure`, `neutral`, `cancelled`, `timed_out`, `action_required` or
4101	/// `stale`. This value will be `null` until the check run has completed.
4102	pub conclusion:    Option<CheckRunCreatedCheckRunConclusion>,
4103	#[serde(default, skip_serializing_if = "Option::is_none")]
4104	pub deployment:    Option<CheckRunDeployment>,
4105	#[serde(default, skip_serializing_if = "Option::is_none")]
4106	pub details_url:   Option<String>,
4107	pub external_id:   String,
4108	/// The SHA of the commit that is being checked.
4109	pub head_sha:      String,
4110	pub html_url:      String,
4111	/// The id of the check.
4112	pub id:            i64,
4113	/// The name of the check run.
4114	pub name:          String,
4115	#[serde(default, skip_serializing_if = "Option::is_none")]
4116	pub node_id:       Option<String>,
4117	pub output:        CheckRunCreatedCheckRunOutput,
4118	pub pull_requests: Vec<CheckRunPullRequest>,
4119	/// The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
4120	pub started_at:    chrono::DateTime<chrono::offset::Utc>,
4121	/// The current status of the check run. Can be `queued`, `in_progress`, or
4122	/// `completed`.
4123	pub status:        CheckRunCreatedCheckRunStatus,
4124	pub url:           String,
4125}
4126impl From<&CheckRunCreatedCheckRun> for CheckRunCreatedCheckRun {
4127	fn from(value: &CheckRunCreatedCheckRun) -> Self {
4128		value.clone()
4129	}
4130}
4131#[derive(Clone, Debug, Deserialize, Serialize)]
4132#[serde(deny_unknown_fields)]
4133pub struct CheckRunCreatedCheckRunCheckSuite {
4134	pub after:         Option<String>,
4135	pub app:           App,
4136	pub before:        Option<String>,
4137	pub conclusion:    Option<CheckRunCreatedCheckRunCheckSuiteConclusion>,
4138	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
4139	#[serde(default, skip_serializing_if = "Option::is_none")]
4140	pub deployment:    Option<CheckRunDeployment>,
4141	pub head_branch:   Option<String>,
4142	/// The SHA of the head commit that is being checked.
4143	pub head_sha:      String,
4144	/// The id of the check suite that this check run is part of.
4145	pub id:            i64,
4146	#[serde(default, skip_serializing_if = "Option::is_none")]
4147	pub node_id:       Option<String>,
4148	/// An array of pull requests that match this check suite. A pull request
4149	/// matches a check suite if they have the same `head_branch`.  
4150	/// **Note:**
4151	///
4152	/// * The `head_sha` of the check suite can differ from the `sha` of the
4153	///   pull request if subsequent pushes are made into the PR.
4154	/// * When the check suite's `head_branch` is in a forked repository it will
4155	///   be `null` and the `pull_requests` array will be empty.
4156	pub pull_requests: Vec<CheckRunPullRequest>,
4157	pub status:        CheckRunCreatedCheckRunCheckSuiteStatus,
4158	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
4159	pub url:           String,
4160}
4161impl From<&CheckRunCreatedCheckRunCheckSuite> for CheckRunCreatedCheckRunCheckSuite {
4162	fn from(value: &CheckRunCreatedCheckRunCheckSuite) -> Self {
4163		value.clone()
4164	}
4165}
4166#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4167pub enum CheckRunCreatedCheckRunCheckSuiteConclusion {
4168	#[serde(rename = "success")]
4169	Success,
4170	#[serde(rename = "failure")]
4171	Failure,
4172	#[serde(rename = "neutral")]
4173	Neutral,
4174	#[serde(rename = "cancelled")]
4175	Cancelled,
4176	#[serde(rename = "timed_out")]
4177	TimedOut,
4178	#[serde(rename = "action_required")]
4179	ActionRequired,
4180	#[serde(rename = "stale")]
4181	Stale,
4182}
4183impl From<&CheckRunCreatedCheckRunCheckSuiteConclusion>
4184	for CheckRunCreatedCheckRunCheckSuiteConclusion
4185{
4186	fn from(value: &CheckRunCreatedCheckRunCheckSuiteConclusion) -> Self {
4187		value.clone()
4188	}
4189}
4190impl ToString for CheckRunCreatedCheckRunCheckSuiteConclusion {
4191	fn to_string(&self) -> String {
4192		match *self {
4193			Self::Success => "success".to_string(),
4194			Self::Failure => "failure".to_string(),
4195			Self::Neutral => "neutral".to_string(),
4196			Self::Cancelled => "cancelled".to_string(),
4197			Self::TimedOut => "timed_out".to_string(),
4198			Self::ActionRequired => "action_required".to_string(),
4199			Self::Stale => "stale".to_string(),
4200		}
4201	}
4202}
4203impl std::str::FromStr for CheckRunCreatedCheckRunCheckSuiteConclusion {
4204	type Err = &'static str;
4205
4206	fn from_str(value: &str) -> Result<Self, &'static str> {
4207		match value {
4208			"success" => Ok(Self::Success),
4209			"failure" => Ok(Self::Failure),
4210			"neutral" => Ok(Self::Neutral),
4211			"cancelled" => Ok(Self::Cancelled),
4212			"timed_out" => Ok(Self::TimedOut),
4213			"action_required" => Ok(Self::ActionRequired),
4214			"stale" => Ok(Self::Stale),
4215			_ => Err("invalid value"),
4216		}
4217	}
4218}
4219impl std::convert::TryFrom<&str> for CheckRunCreatedCheckRunCheckSuiteConclusion {
4220	type Error = &'static str;
4221
4222	fn try_from(value: &str) -> Result<Self, &'static str> {
4223		value.parse()
4224	}
4225}
4226impl std::convert::TryFrom<&String> for CheckRunCreatedCheckRunCheckSuiteConclusion {
4227	type Error = &'static str;
4228
4229	fn try_from(value: &String) -> Result<Self, &'static str> {
4230		value.parse()
4231	}
4232}
4233impl std::convert::TryFrom<String> for CheckRunCreatedCheckRunCheckSuiteConclusion {
4234	type Error = &'static str;
4235
4236	fn try_from(value: String) -> Result<Self, &'static str> {
4237		value.parse()
4238	}
4239}
4240#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4241pub enum CheckRunCreatedCheckRunCheckSuiteStatus {
4242	#[serde(rename = "queued")]
4243	Queued,
4244	#[serde(rename = "in_progress")]
4245	InProgress,
4246	#[serde(rename = "completed")]
4247	Completed,
4248}
4249impl From<&CheckRunCreatedCheckRunCheckSuiteStatus> for CheckRunCreatedCheckRunCheckSuiteStatus {
4250	fn from(value: &CheckRunCreatedCheckRunCheckSuiteStatus) -> Self {
4251		value.clone()
4252	}
4253}
4254impl ToString for CheckRunCreatedCheckRunCheckSuiteStatus {
4255	fn to_string(&self) -> String {
4256		match *self {
4257			Self::Queued => "queued".to_string(),
4258			Self::InProgress => "in_progress".to_string(),
4259			Self::Completed => "completed".to_string(),
4260		}
4261	}
4262}
4263impl std::str::FromStr for CheckRunCreatedCheckRunCheckSuiteStatus {
4264	type Err = &'static str;
4265
4266	fn from_str(value: &str) -> Result<Self, &'static str> {
4267		match value {
4268			"queued" => Ok(Self::Queued),
4269			"in_progress" => Ok(Self::InProgress),
4270			"completed" => Ok(Self::Completed),
4271			_ => Err("invalid value"),
4272		}
4273	}
4274}
4275impl std::convert::TryFrom<&str> for CheckRunCreatedCheckRunCheckSuiteStatus {
4276	type Error = &'static str;
4277
4278	fn try_from(value: &str) -> Result<Self, &'static str> {
4279		value.parse()
4280	}
4281}
4282impl std::convert::TryFrom<&String> for CheckRunCreatedCheckRunCheckSuiteStatus {
4283	type Error = &'static str;
4284
4285	fn try_from(value: &String) -> Result<Self, &'static str> {
4286		value.parse()
4287	}
4288}
4289impl std::convert::TryFrom<String> for CheckRunCreatedCheckRunCheckSuiteStatus {
4290	type Error = &'static str;
4291
4292	fn try_from(value: String) -> Result<Self, &'static str> {
4293		value.parse()
4294	}
4295}
4296/// The result of the completed check run. Can be one of `success`, `failure`,
4297/// `neutral`, `cancelled`, `timed_out`, `action_required` or `stale`. This
4298/// value will be `null` until the check run has completed.
4299#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4300pub enum CheckRunCreatedCheckRunConclusion {
4301	#[serde(rename = "success")]
4302	Success,
4303	#[serde(rename = "failure")]
4304	Failure,
4305	#[serde(rename = "neutral")]
4306	Neutral,
4307	#[serde(rename = "cancelled")]
4308	Cancelled,
4309	#[serde(rename = "timed_out")]
4310	TimedOut,
4311	#[serde(rename = "action_required")]
4312	ActionRequired,
4313	#[serde(rename = "stale")]
4314	Stale,
4315	#[serde(rename = "skipped")]
4316	Skipped,
4317}
4318impl From<&CheckRunCreatedCheckRunConclusion> for CheckRunCreatedCheckRunConclusion {
4319	fn from(value: &CheckRunCreatedCheckRunConclusion) -> Self {
4320		value.clone()
4321	}
4322}
4323impl ToString for CheckRunCreatedCheckRunConclusion {
4324	fn to_string(&self) -> String {
4325		match *self {
4326			Self::Success => "success".to_string(),
4327			Self::Failure => "failure".to_string(),
4328			Self::Neutral => "neutral".to_string(),
4329			Self::Cancelled => "cancelled".to_string(),
4330			Self::TimedOut => "timed_out".to_string(),
4331			Self::ActionRequired => "action_required".to_string(),
4332			Self::Stale => "stale".to_string(),
4333			Self::Skipped => "skipped".to_string(),
4334		}
4335	}
4336}
4337impl std::str::FromStr for CheckRunCreatedCheckRunConclusion {
4338	type Err = &'static str;
4339
4340	fn from_str(value: &str) -> Result<Self, &'static str> {
4341		match value {
4342			"success" => Ok(Self::Success),
4343			"failure" => Ok(Self::Failure),
4344			"neutral" => Ok(Self::Neutral),
4345			"cancelled" => Ok(Self::Cancelled),
4346			"timed_out" => Ok(Self::TimedOut),
4347			"action_required" => Ok(Self::ActionRequired),
4348			"stale" => Ok(Self::Stale),
4349			"skipped" => Ok(Self::Skipped),
4350			_ => Err("invalid value"),
4351		}
4352	}
4353}
4354impl std::convert::TryFrom<&str> for CheckRunCreatedCheckRunConclusion {
4355	type Error = &'static str;
4356
4357	fn try_from(value: &str) -> Result<Self, &'static str> {
4358		value.parse()
4359	}
4360}
4361impl std::convert::TryFrom<&String> for CheckRunCreatedCheckRunConclusion {
4362	type Error = &'static str;
4363
4364	fn try_from(value: &String) -> Result<Self, &'static str> {
4365		value.parse()
4366	}
4367}
4368impl std::convert::TryFrom<String> for CheckRunCreatedCheckRunConclusion {
4369	type Error = &'static str;
4370
4371	fn try_from(value: String) -> Result<Self, &'static str> {
4372		value.parse()
4373	}
4374}
4375#[derive(Clone, Debug, Deserialize, Serialize)]
4376#[serde(deny_unknown_fields)]
4377pub struct CheckRunCreatedCheckRunOutput {
4378	pub annotations_count: i64,
4379	pub annotations_url:   String,
4380	pub summary:           Option<String>,
4381	pub text:              Option<String>,
4382	#[serde(default, skip_serializing_if = "Option::is_none")]
4383	pub title:             Option<String>,
4384}
4385impl From<&CheckRunCreatedCheckRunOutput> for CheckRunCreatedCheckRunOutput {
4386	fn from(value: &CheckRunCreatedCheckRunOutput) -> Self {
4387		value.clone()
4388	}
4389}
4390/// The current status of the check run. Can be `queued`, `in_progress`, or
4391/// `completed`.
4392#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4393pub enum CheckRunCreatedCheckRunStatus {
4394	#[serde(rename = "queued")]
4395	Queued,
4396	#[serde(rename = "in_progress")]
4397	InProgress,
4398	#[serde(rename = "completed")]
4399	Completed,
4400	#[serde(rename = "waiting")]
4401	Waiting,
4402}
4403impl From<&CheckRunCreatedCheckRunStatus> for CheckRunCreatedCheckRunStatus {
4404	fn from(value: &CheckRunCreatedCheckRunStatus) -> Self {
4405		value.clone()
4406	}
4407}
4408impl ToString for CheckRunCreatedCheckRunStatus {
4409	fn to_string(&self) -> String {
4410		match *self {
4411			Self::Queued => "queued".to_string(),
4412			Self::InProgress => "in_progress".to_string(),
4413			Self::Completed => "completed".to_string(),
4414			Self::Waiting => "waiting".to_string(),
4415		}
4416	}
4417}
4418impl std::str::FromStr for CheckRunCreatedCheckRunStatus {
4419	type Err = &'static str;
4420
4421	fn from_str(value: &str) -> Result<Self, &'static str> {
4422		match value {
4423			"queued" => Ok(Self::Queued),
4424			"in_progress" => Ok(Self::InProgress),
4425			"completed" => Ok(Self::Completed),
4426			"waiting" => Ok(Self::Waiting),
4427			_ => Err("invalid value"),
4428		}
4429	}
4430}
4431impl std::convert::TryFrom<&str> for CheckRunCreatedCheckRunStatus {
4432	type Error = &'static str;
4433
4434	fn try_from(value: &str) -> Result<Self, &'static str> {
4435		value.parse()
4436	}
4437}
4438impl std::convert::TryFrom<&String> for CheckRunCreatedCheckRunStatus {
4439	type Error = &'static str;
4440
4441	fn try_from(value: &String) -> Result<Self, &'static str> {
4442		value.parse()
4443	}
4444}
4445impl std::convert::TryFrom<String> for CheckRunCreatedCheckRunStatus {
4446	type Error = &'static str;
4447
4448	fn try_from(value: String) -> Result<Self, &'static str> {
4449		value.parse()
4450	}
4451}
4452/// The action requested by the user.
4453#[derive(Clone, Debug, Deserialize, Serialize)]
4454#[serde(deny_unknown_fields)]
4455pub struct CheckRunCreatedRequestedAction {
4456	/// The integrator reference of the action requested by the user.
4457	#[serde(default, skip_serializing_if = "Option::is_none")]
4458	pub identifier: Option<String>,
4459}
4460impl From<&CheckRunCreatedRequestedAction> for CheckRunCreatedRequestedAction {
4461	fn from(value: &CheckRunCreatedRequestedAction) -> Self {
4462		value.clone()
4463	}
4464}
4465/// A deployment to a repository environment. This will only be populated if the
4466/// check run was created by a GitHub Actions workflow job that references an
4467/// environment.
4468#[derive(Clone, Debug, Deserialize, Serialize)]
4469#[serde(deny_unknown_fields)]
4470pub struct CheckRunDeployment {
4471	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
4472	pub description:          Option<String>,
4473	pub environment:          String,
4474	pub id:                   i64,
4475	pub node_id:              String,
4476	pub original_environment: String,
4477	pub repository_url:       String,
4478	pub statuses_url:         String,
4479	pub task:                 String,
4480	pub updated_at:           chrono::DateTime<chrono::offset::Utc>,
4481	pub url:                  String,
4482}
4483impl From<&CheckRunDeployment> for CheckRunDeployment {
4484	fn from(value: &CheckRunDeployment) -> Self {
4485		value.clone()
4486	}
4487}
4488#[derive(Clone, Debug, Deserialize, Serialize)]
4489#[serde(untagged)]
4490pub enum CheckRunEvent {
4491	Completed(CheckRunCompleted),
4492	Created(CheckRunCreated),
4493	RequestedAction(CheckRunRequestedAction),
4494	Rerequested(CheckRunRerequested),
4495}
4496impl From<&CheckRunEvent> for CheckRunEvent {
4497	fn from(value: &CheckRunEvent) -> Self {
4498		value.clone()
4499	}
4500}
4501impl From<CheckRunCompleted> for CheckRunEvent {
4502	fn from(value: CheckRunCompleted) -> Self {
4503		Self::Completed(value)
4504	}
4505}
4506impl From<CheckRunCreated> for CheckRunEvent {
4507	fn from(value: CheckRunCreated) -> Self {
4508		Self::Created(value)
4509	}
4510}
4511impl From<CheckRunRequestedAction> for CheckRunEvent {
4512	fn from(value: CheckRunRequestedAction) -> Self {
4513		Self::RequestedAction(value)
4514	}
4515}
4516impl From<CheckRunRerequested> for CheckRunEvent {
4517	fn from(value: CheckRunRerequested) -> Self {
4518		Self::Rerequested(value)
4519	}
4520}
4521#[derive(Clone, Debug, Deserialize, Serialize)]
4522#[serde(deny_unknown_fields)]
4523pub struct CheckRunPullRequest {
4524	pub base:   CheckRunPullRequestBase,
4525	pub head:   CheckRunPullRequestHead,
4526	pub id:     i64,
4527	pub number: i64,
4528	pub url:    String,
4529}
4530impl From<&CheckRunPullRequest> for CheckRunPullRequest {
4531	fn from(value: &CheckRunPullRequest) -> Self {
4532		value.clone()
4533	}
4534}
4535#[derive(Clone, Debug, Deserialize, Serialize)]
4536#[serde(deny_unknown_fields)]
4537pub struct CheckRunPullRequestBase {
4538	#[serde(rename = "ref")]
4539	pub ref_: String,
4540	pub repo: RepoRef,
4541	pub sha:  String,
4542}
4543impl From<&CheckRunPullRequestBase> for CheckRunPullRequestBase {
4544	fn from(value: &CheckRunPullRequestBase) -> Self {
4545		value.clone()
4546	}
4547}
4548#[derive(Clone, Debug, Deserialize, Serialize)]
4549#[serde(deny_unknown_fields)]
4550pub struct CheckRunPullRequestHead {
4551	#[serde(rename = "ref")]
4552	pub ref_: String,
4553	pub repo: RepoRef,
4554	pub sha:  String,
4555}
4556impl From<&CheckRunPullRequestHead> for CheckRunPullRequestHead {
4557	fn from(value: &CheckRunPullRequestHead) -> Self {
4558		value.clone()
4559	}
4560}
4561#[derive(Clone, Debug, Deserialize, Serialize)]
4562#[serde(deny_unknown_fields)]
4563pub struct CheckRunRequestedAction {
4564	pub action:           CheckRunRequestedActionAction,
4565	pub check_run:        CheckRunRequestedActionCheckRun,
4566	#[serde(default, skip_serializing_if = "Option::is_none")]
4567	pub installation:     Option<InstallationLite>,
4568	#[serde(default, skip_serializing_if = "Option::is_none")]
4569	pub organization:     Option<Organization>,
4570	pub repository:       Repository,
4571	pub requested_action: CheckRunRequestedActionRequestedAction,
4572	pub sender:           User,
4573}
4574impl From<&CheckRunRequestedAction> for CheckRunRequestedAction {
4575	fn from(value: &CheckRunRequestedAction) -> Self {
4576		value.clone()
4577	}
4578}
4579#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4580pub enum CheckRunRequestedActionAction {
4581	#[serde(rename = "requested_action")]
4582	RequestedAction,
4583}
4584impl From<&CheckRunRequestedActionAction> for CheckRunRequestedActionAction {
4585	fn from(value: &CheckRunRequestedActionAction) -> Self {
4586		value.clone()
4587	}
4588}
4589impl ToString for CheckRunRequestedActionAction {
4590	fn to_string(&self) -> String {
4591		match *self {
4592			Self::RequestedAction => "requested_action".to_string(),
4593		}
4594	}
4595}
4596impl std::str::FromStr for CheckRunRequestedActionAction {
4597	type Err = &'static str;
4598
4599	fn from_str(value: &str) -> Result<Self, &'static str> {
4600		match value {
4601			"requested_action" => Ok(Self::RequestedAction),
4602			_ => Err("invalid value"),
4603		}
4604	}
4605}
4606impl std::convert::TryFrom<&str> for CheckRunRequestedActionAction {
4607	type Error = &'static str;
4608
4609	fn try_from(value: &str) -> Result<Self, &'static str> {
4610		value.parse()
4611	}
4612}
4613impl std::convert::TryFrom<&String> for CheckRunRequestedActionAction {
4614	type Error = &'static str;
4615
4616	fn try_from(value: &String) -> Result<Self, &'static str> {
4617		value.parse()
4618	}
4619}
4620impl std::convert::TryFrom<String> for CheckRunRequestedActionAction {
4621	type Error = &'static str;
4622
4623	fn try_from(value: String) -> Result<Self, &'static str> {
4624		value.parse()
4625	}
4626}
4627/// The [check_run](https://docs.github.com/en/rest/reference/checks#get-a-check-run).
4628#[derive(Clone, Debug, Deserialize, Serialize)]
4629#[serde(deny_unknown_fields)]
4630pub struct CheckRunRequestedActionCheckRun {
4631	pub app:           App,
4632	pub check_suite:   CheckRunRequestedActionCheckRunCheckSuite,
4633	/// The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
4634	pub completed_at:  Option<chrono::DateTime<chrono::offset::Utc>>,
4635	/// The result of the completed check run. Can be one of `success`,
4636	/// `failure`, `neutral`, `cancelled`, `timed_out`, `action_required` or
4637	/// `stale`. This value will be `null` until the check run has completed.
4638	pub conclusion:    Option<CheckRunRequestedActionCheckRunConclusion>,
4639	#[serde(default, skip_serializing_if = "Option::is_none")]
4640	pub deployment:    Option<CheckRunDeployment>,
4641	#[serde(default, skip_serializing_if = "Option::is_none")]
4642	pub details_url:   Option<String>,
4643	pub external_id:   String,
4644	/// The SHA of the commit that is being checked.
4645	pub head_sha:      String,
4646	pub html_url:      String,
4647	/// The id of the check.
4648	pub id:            i64,
4649	/// The name of the check run.
4650	pub name:          String,
4651	#[serde(default, skip_serializing_if = "Option::is_none")]
4652	pub node_id:       Option<String>,
4653	pub output:        CheckRunRequestedActionCheckRunOutput,
4654	pub pull_requests: Vec<CheckRunPullRequest>,
4655	/// The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
4656	pub started_at:    chrono::DateTime<chrono::offset::Utc>,
4657	/// The current status of the check run. Can be `queued`, `in_progress`, or
4658	/// `completed`.
4659	pub status:        CheckRunRequestedActionCheckRunStatus,
4660	pub url:           String,
4661}
4662impl From<&CheckRunRequestedActionCheckRun> for CheckRunRequestedActionCheckRun {
4663	fn from(value: &CheckRunRequestedActionCheckRun) -> Self {
4664		value.clone()
4665	}
4666}
4667#[derive(Clone, Debug, Deserialize, Serialize)]
4668#[serde(deny_unknown_fields)]
4669pub struct CheckRunRequestedActionCheckRunCheckSuite {
4670	pub after:         Option<String>,
4671	pub app:           App,
4672	pub before:        Option<String>,
4673	pub conclusion:    Option<CheckRunRequestedActionCheckRunCheckSuiteConclusion>,
4674	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
4675	#[serde(default, skip_serializing_if = "Option::is_none")]
4676	pub deployment:    Option<CheckRunDeployment>,
4677	pub head_branch:   Option<String>,
4678	/// The SHA of the head commit that is being checked.
4679	pub head_sha:      String,
4680	/// The id of the check suite that this check run is part of.
4681	pub id:            i64,
4682	#[serde(default, skip_serializing_if = "Option::is_none")]
4683	pub node_id:       Option<String>,
4684	/// An array of pull requests that match this check suite. A pull request
4685	/// matches a check suite if they have the same `head_branch`.  
4686	/// **Note:**
4687	///
4688	/// * The `head_sha` of the check suite can differ from the `sha` of the
4689	///   pull request if subsequent pushes are made into the PR.
4690	/// * When the check suite's `head_branch` is in a forked repository it will
4691	///   be `null` and the `pull_requests` array will be empty.
4692	pub pull_requests: Vec<CheckRunPullRequest>,
4693	pub status:        CheckRunRequestedActionCheckRunCheckSuiteStatus,
4694	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
4695	pub url:           String,
4696}
4697impl From<&CheckRunRequestedActionCheckRunCheckSuite>
4698	for CheckRunRequestedActionCheckRunCheckSuite
4699{
4700	fn from(value: &CheckRunRequestedActionCheckRunCheckSuite) -> Self {
4701		value.clone()
4702	}
4703}
4704#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4705pub enum CheckRunRequestedActionCheckRunCheckSuiteConclusion {
4706	#[serde(rename = "success")]
4707	Success,
4708	#[serde(rename = "failure")]
4709	Failure,
4710	#[serde(rename = "neutral")]
4711	Neutral,
4712	#[serde(rename = "cancelled")]
4713	Cancelled,
4714	#[serde(rename = "timed_out")]
4715	TimedOut,
4716	#[serde(rename = "action_required")]
4717	ActionRequired,
4718	#[serde(rename = "stale")]
4719	Stale,
4720}
4721impl From<&CheckRunRequestedActionCheckRunCheckSuiteConclusion>
4722	for CheckRunRequestedActionCheckRunCheckSuiteConclusion
4723{
4724	fn from(value: &CheckRunRequestedActionCheckRunCheckSuiteConclusion) -> Self {
4725		value.clone()
4726	}
4727}
4728impl ToString for CheckRunRequestedActionCheckRunCheckSuiteConclusion {
4729	fn to_string(&self) -> String {
4730		match *self {
4731			Self::Success => "success".to_string(),
4732			Self::Failure => "failure".to_string(),
4733			Self::Neutral => "neutral".to_string(),
4734			Self::Cancelled => "cancelled".to_string(),
4735			Self::TimedOut => "timed_out".to_string(),
4736			Self::ActionRequired => "action_required".to_string(),
4737			Self::Stale => "stale".to_string(),
4738		}
4739	}
4740}
4741impl std::str::FromStr for CheckRunRequestedActionCheckRunCheckSuiteConclusion {
4742	type Err = &'static str;
4743
4744	fn from_str(value: &str) -> Result<Self, &'static str> {
4745		match value {
4746			"success" => Ok(Self::Success),
4747			"failure" => Ok(Self::Failure),
4748			"neutral" => Ok(Self::Neutral),
4749			"cancelled" => Ok(Self::Cancelled),
4750			"timed_out" => Ok(Self::TimedOut),
4751			"action_required" => Ok(Self::ActionRequired),
4752			"stale" => Ok(Self::Stale),
4753			_ => Err("invalid value"),
4754		}
4755	}
4756}
4757impl std::convert::TryFrom<&str> for CheckRunRequestedActionCheckRunCheckSuiteConclusion {
4758	type Error = &'static str;
4759
4760	fn try_from(value: &str) -> Result<Self, &'static str> {
4761		value.parse()
4762	}
4763}
4764impl std::convert::TryFrom<&String> for CheckRunRequestedActionCheckRunCheckSuiteConclusion {
4765	type Error = &'static str;
4766
4767	fn try_from(value: &String) -> Result<Self, &'static str> {
4768		value.parse()
4769	}
4770}
4771impl std::convert::TryFrom<String> for CheckRunRequestedActionCheckRunCheckSuiteConclusion {
4772	type Error = &'static str;
4773
4774	fn try_from(value: String) -> Result<Self, &'static str> {
4775		value.parse()
4776	}
4777}
4778#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4779pub enum CheckRunRequestedActionCheckRunCheckSuiteStatus {
4780	#[serde(rename = "queued")]
4781	Queued,
4782	#[serde(rename = "in_progress")]
4783	InProgress,
4784	#[serde(rename = "completed")]
4785	Completed,
4786	#[serde(rename = "waiting")]
4787	Waiting,
4788}
4789impl From<&CheckRunRequestedActionCheckRunCheckSuiteStatus>
4790	for CheckRunRequestedActionCheckRunCheckSuiteStatus
4791{
4792	fn from(value: &CheckRunRequestedActionCheckRunCheckSuiteStatus) -> Self {
4793		value.clone()
4794	}
4795}
4796impl ToString for CheckRunRequestedActionCheckRunCheckSuiteStatus {
4797	fn to_string(&self) -> String {
4798		match *self {
4799			Self::Queued => "queued".to_string(),
4800			Self::InProgress => "in_progress".to_string(),
4801			Self::Completed => "completed".to_string(),
4802			Self::Waiting => "waiting".to_string(),
4803		}
4804	}
4805}
4806impl std::str::FromStr for CheckRunRequestedActionCheckRunCheckSuiteStatus {
4807	type Err = &'static str;
4808
4809	fn from_str(value: &str) -> Result<Self, &'static str> {
4810		match value {
4811			"queued" => Ok(Self::Queued),
4812			"in_progress" => Ok(Self::InProgress),
4813			"completed" => Ok(Self::Completed),
4814			"waiting" => Ok(Self::Waiting),
4815			_ => Err("invalid value"),
4816		}
4817	}
4818}
4819impl std::convert::TryFrom<&str> for CheckRunRequestedActionCheckRunCheckSuiteStatus {
4820	type Error = &'static str;
4821
4822	fn try_from(value: &str) -> Result<Self, &'static str> {
4823		value.parse()
4824	}
4825}
4826impl std::convert::TryFrom<&String> for CheckRunRequestedActionCheckRunCheckSuiteStatus {
4827	type Error = &'static str;
4828
4829	fn try_from(value: &String) -> Result<Self, &'static str> {
4830		value.parse()
4831	}
4832}
4833impl std::convert::TryFrom<String> for CheckRunRequestedActionCheckRunCheckSuiteStatus {
4834	type Error = &'static str;
4835
4836	fn try_from(value: String) -> Result<Self, &'static str> {
4837		value.parse()
4838	}
4839}
4840/// The result of the completed check run. Can be one of `success`, `failure`,
4841/// `neutral`, `cancelled`, `timed_out`, `action_required` or `stale`. This
4842/// value will be `null` until the check run has completed.
4843#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4844pub enum CheckRunRequestedActionCheckRunConclusion {
4845	#[serde(rename = "success")]
4846	Success,
4847	#[serde(rename = "failure")]
4848	Failure,
4849	#[serde(rename = "neutral")]
4850	Neutral,
4851	#[serde(rename = "cancelled")]
4852	Cancelled,
4853	#[serde(rename = "timed_out")]
4854	TimedOut,
4855	#[serde(rename = "action_required")]
4856	ActionRequired,
4857	#[serde(rename = "stale")]
4858	Stale,
4859	#[serde(rename = "skipped")]
4860	Skipped,
4861}
4862impl From<&CheckRunRequestedActionCheckRunConclusion>
4863	for CheckRunRequestedActionCheckRunConclusion
4864{
4865	fn from(value: &CheckRunRequestedActionCheckRunConclusion) -> Self {
4866		value.clone()
4867	}
4868}
4869impl ToString for CheckRunRequestedActionCheckRunConclusion {
4870	fn to_string(&self) -> String {
4871		match *self {
4872			Self::Success => "success".to_string(),
4873			Self::Failure => "failure".to_string(),
4874			Self::Neutral => "neutral".to_string(),
4875			Self::Cancelled => "cancelled".to_string(),
4876			Self::TimedOut => "timed_out".to_string(),
4877			Self::ActionRequired => "action_required".to_string(),
4878			Self::Stale => "stale".to_string(),
4879			Self::Skipped => "skipped".to_string(),
4880		}
4881	}
4882}
4883impl std::str::FromStr for CheckRunRequestedActionCheckRunConclusion {
4884	type Err = &'static str;
4885
4886	fn from_str(value: &str) -> Result<Self, &'static str> {
4887		match value {
4888			"success" => Ok(Self::Success),
4889			"failure" => Ok(Self::Failure),
4890			"neutral" => Ok(Self::Neutral),
4891			"cancelled" => Ok(Self::Cancelled),
4892			"timed_out" => Ok(Self::TimedOut),
4893			"action_required" => Ok(Self::ActionRequired),
4894			"stale" => Ok(Self::Stale),
4895			"skipped" => Ok(Self::Skipped),
4896			_ => Err("invalid value"),
4897		}
4898	}
4899}
4900impl std::convert::TryFrom<&str> for CheckRunRequestedActionCheckRunConclusion {
4901	type Error = &'static str;
4902
4903	fn try_from(value: &str) -> Result<Self, &'static str> {
4904		value.parse()
4905	}
4906}
4907impl std::convert::TryFrom<&String> for CheckRunRequestedActionCheckRunConclusion {
4908	type Error = &'static str;
4909
4910	fn try_from(value: &String) -> Result<Self, &'static str> {
4911		value.parse()
4912	}
4913}
4914impl std::convert::TryFrom<String> for CheckRunRequestedActionCheckRunConclusion {
4915	type Error = &'static str;
4916
4917	fn try_from(value: String) -> Result<Self, &'static str> {
4918		value.parse()
4919	}
4920}
4921#[derive(Clone, Debug, Deserialize, Serialize)]
4922#[serde(deny_unknown_fields)]
4923pub struct CheckRunRequestedActionCheckRunOutput {
4924	pub annotations_count: i64,
4925	pub annotations_url:   String,
4926	pub summary:           Option<String>,
4927	pub text:              Option<String>,
4928	#[serde(default, skip_serializing_if = "Option::is_none")]
4929	pub title:             Option<String>,
4930}
4931impl From<&CheckRunRequestedActionCheckRunOutput> for CheckRunRequestedActionCheckRunOutput {
4932	fn from(value: &CheckRunRequestedActionCheckRunOutput) -> Self {
4933		value.clone()
4934	}
4935}
4936/// The current status of the check run. Can be `queued`, `in_progress`, or
4937/// `completed`.
4938#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4939pub enum CheckRunRequestedActionCheckRunStatus {
4940	#[serde(rename = "queued")]
4941	Queued,
4942	#[serde(rename = "in_progress")]
4943	InProgress,
4944	#[serde(rename = "completed")]
4945	Completed,
4946}
4947impl From<&CheckRunRequestedActionCheckRunStatus> for CheckRunRequestedActionCheckRunStatus {
4948	fn from(value: &CheckRunRequestedActionCheckRunStatus) -> Self {
4949		value.clone()
4950	}
4951}
4952impl ToString for CheckRunRequestedActionCheckRunStatus {
4953	fn to_string(&self) -> String {
4954		match *self {
4955			Self::Queued => "queued".to_string(),
4956			Self::InProgress => "in_progress".to_string(),
4957			Self::Completed => "completed".to_string(),
4958		}
4959	}
4960}
4961impl std::str::FromStr for CheckRunRequestedActionCheckRunStatus {
4962	type Err = &'static str;
4963
4964	fn from_str(value: &str) -> Result<Self, &'static str> {
4965		match value {
4966			"queued" => Ok(Self::Queued),
4967			"in_progress" => Ok(Self::InProgress),
4968			"completed" => Ok(Self::Completed),
4969			_ => Err("invalid value"),
4970		}
4971	}
4972}
4973impl std::convert::TryFrom<&str> for CheckRunRequestedActionCheckRunStatus {
4974	type Error = &'static str;
4975
4976	fn try_from(value: &str) -> Result<Self, &'static str> {
4977		value.parse()
4978	}
4979}
4980impl std::convert::TryFrom<&String> for CheckRunRequestedActionCheckRunStatus {
4981	type Error = &'static str;
4982
4983	fn try_from(value: &String) -> Result<Self, &'static str> {
4984		value.parse()
4985	}
4986}
4987impl std::convert::TryFrom<String> for CheckRunRequestedActionCheckRunStatus {
4988	type Error = &'static str;
4989
4990	fn try_from(value: String) -> Result<Self, &'static str> {
4991		value.parse()
4992	}
4993}
4994/// The action requested by the user.
4995#[derive(Clone, Debug, Deserialize, Serialize)]
4996#[serde(deny_unknown_fields)]
4997pub struct CheckRunRequestedActionRequestedAction {
4998	/// The integrator reference of the action requested by the user.
4999	#[serde(default, skip_serializing_if = "Option::is_none")]
5000	pub identifier: Option<String>,
5001}
5002impl From<&CheckRunRequestedActionRequestedAction> for CheckRunRequestedActionRequestedAction {
5003	fn from(value: &CheckRunRequestedActionRequestedAction) -> Self {
5004		value.clone()
5005	}
5006}
5007#[derive(Clone, Debug, Deserialize, Serialize)]
5008#[serde(deny_unknown_fields)]
5009pub struct CheckRunRerequested {
5010	pub action:           CheckRunRerequestedAction,
5011	pub check_run:        CheckRunRerequestedCheckRun,
5012	#[serde(default, skip_serializing_if = "Option::is_none")]
5013	pub installation:     Option<InstallationLite>,
5014	#[serde(default, skip_serializing_if = "Option::is_none")]
5015	pub organization:     Option<Organization>,
5016	pub repository:       Repository,
5017	/// The action requested by the user.
5018	#[serde(default, skip_serializing_if = "Option::is_none")]
5019	pub requested_action: Option<CheckRunRerequestedRequestedAction>,
5020	pub sender:           User,
5021}
5022impl From<&CheckRunRerequested> for CheckRunRerequested {
5023	fn from(value: &CheckRunRerequested) -> Self {
5024		value.clone()
5025	}
5026}
5027#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5028pub enum CheckRunRerequestedAction {
5029	#[serde(rename = "rerequested")]
5030	Rerequested,
5031}
5032impl From<&CheckRunRerequestedAction> for CheckRunRerequestedAction {
5033	fn from(value: &CheckRunRerequestedAction) -> Self {
5034		value.clone()
5035	}
5036}
5037impl ToString for CheckRunRerequestedAction {
5038	fn to_string(&self) -> String {
5039		match *self {
5040			Self::Rerequested => "rerequested".to_string(),
5041		}
5042	}
5043}
5044impl std::str::FromStr for CheckRunRerequestedAction {
5045	type Err = &'static str;
5046
5047	fn from_str(value: &str) -> Result<Self, &'static str> {
5048		match value {
5049			"rerequested" => Ok(Self::Rerequested),
5050			_ => Err("invalid value"),
5051		}
5052	}
5053}
5054impl std::convert::TryFrom<&str> for CheckRunRerequestedAction {
5055	type Error = &'static str;
5056
5057	fn try_from(value: &str) -> Result<Self, &'static str> {
5058		value.parse()
5059	}
5060}
5061impl std::convert::TryFrom<&String> for CheckRunRerequestedAction {
5062	type Error = &'static str;
5063
5064	fn try_from(value: &String) -> Result<Self, &'static str> {
5065		value.parse()
5066	}
5067}
5068impl std::convert::TryFrom<String> for CheckRunRerequestedAction {
5069	type Error = &'static str;
5070
5071	fn try_from(value: String) -> Result<Self, &'static str> {
5072		value.parse()
5073	}
5074}
5075/// The [check_run](https://docs.github.com/en/rest/reference/checks#get-a-check-run).
5076#[derive(Clone, Debug, Deserialize, Serialize)]
5077#[serde(deny_unknown_fields)]
5078pub struct CheckRunRerequestedCheckRun {
5079	pub app:           App,
5080	pub check_suite:   CheckRunRerequestedCheckRunCheckSuite,
5081	/// The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
5082	pub completed_at:  chrono::DateTime<chrono::offset::Utc>,
5083	/// The result of the completed check run. Can be one of `success`,
5084	/// `failure`, `neutral`, `cancelled`, `timed_out`, `action_required` or
5085	/// `stale`. This value will be `null` until the check run has `completed`.
5086	pub conclusion:    Option<CheckRunRerequestedCheckRunConclusion>,
5087	#[serde(default, skip_serializing_if = "Option::is_none")]
5088	pub deployment:    Option<CheckRunDeployment>,
5089	#[serde(default, skip_serializing_if = "Option::is_none")]
5090	pub details_url:   Option<String>,
5091	pub external_id:   String,
5092	/// The SHA of the commit that is being checked.
5093	pub head_sha:      String,
5094	pub html_url:      String,
5095	/// The id of the check.
5096	pub id:            i64,
5097	/// The name of the check.
5098	pub name:          String,
5099	#[serde(default, skip_serializing_if = "Option::is_none")]
5100	pub node_id:       Option<String>,
5101	pub output:        CheckRunRerequestedCheckRunOutput,
5102	pub pull_requests: Vec<CheckRunPullRequest>,
5103	/// The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
5104	pub started_at:    chrono::DateTime<chrono::offset::Utc>,
5105	/// The phase of the lifecycle that the check is currently in.
5106	pub status:        CheckRunRerequestedCheckRunStatus,
5107	pub url:           String,
5108}
5109impl From<&CheckRunRerequestedCheckRun> for CheckRunRerequestedCheckRun {
5110	fn from(value: &CheckRunRerequestedCheckRun) -> Self {
5111		value.clone()
5112	}
5113}
5114#[derive(Clone, Debug, Deserialize, Serialize)]
5115#[serde(deny_unknown_fields)]
5116pub struct CheckRunRerequestedCheckRunCheckSuite {
5117	pub after:         Option<String>,
5118	pub app:           App,
5119	pub before:        Option<String>,
5120	pub conclusion:    CheckRunRerequestedCheckRunCheckSuiteConclusion,
5121	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
5122	#[serde(default, skip_serializing_if = "Option::is_none")]
5123	pub deployment:    Option<CheckRunDeployment>,
5124	pub head_branch:   Option<String>,
5125	/// The SHA of the head commit that is being checked.
5126	pub head_sha:      String,
5127	/// The id of the check suite that this check run is part of.
5128	pub id:            i64,
5129	#[serde(default, skip_serializing_if = "Option::is_none")]
5130	pub node_id:       Option<String>,
5131	/// An array of pull requests that match this check suite. A pull request
5132	/// matches a check suite if they have the same `head_branch`.  
5133	/// **Note:**
5134	///
5135	/// * The `head_sha` of the check suite can differ from the `sha` of the
5136	///   pull request if subsequent pushes are made into the PR.
5137	/// * When the check suite's `head_branch` is in a forked repository it will
5138	///   be `null` and the `pull_requests` array will be empty.
5139	pub pull_requests: Vec<CheckRunPullRequest>,
5140	pub status:        CheckRunRerequestedCheckRunCheckSuiteStatus,
5141	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
5142	pub url:           String,
5143}
5144impl From<&CheckRunRerequestedCheckRunCheckSuite> for CheckRunRerequestedCheckRunCheckSuite {
5145	fn from(value: &CheckRunRerequestedCheckRunCheckSuite) -> Self {
5146		value.clone()
5147	}
5148}
5149#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5150pub enum CheckRunRerequestedCheckRunCheckSuiteConclusion {
5151	#[serde(rename = "success")]
5152	Success,
5153	#[serde(rename = "failure")]
5154	Failure,
5155	#[serde(rename = "neutral")]
5156	Neutral,
5157	#[serde(rename = "cancelled")]
5158	Cancelled,
5159	#[serde(rename = "timed_out")]
5160	TimedOut,
5161	#[serde(rename = "action_required")]
5162	ActionRequired,
5163	#[serde(rename = "stale")]
5164	Stale,
5165}
5166impl From<&CheckRunRerequestedCheckRunCheckSuiteConclusion>
5167	for CheckRunRerequestedCheckRunCheckSuiteConclusion
5168{
5169	fn from(value: &CheckRunRerequestedCheckRunCheckSuiteConclusion) -> Self {
5170		value.clone()
5171	}
5172}
5173impl ToString for CheckRunRerequestedCheckRunCheckSuiteConclusion {
5174	fn to_string(&self) -> String {
5175		match *self {
5176			Self::Success => "success".to_string(),
5177			Self::Failure => "failure".to_string(),
5178			Self::Neutral => "neutral".to_string(),
5179			Self::Cancelled => "cancelled".to_string(),
5180			Self::TimedOut => "timed_out".to_string(),
5181			Self::ActionRequired => "action_required".to_string(),
5182			Self::Stale => "stale".to_string(),
5183		}
5184	}
5185}
5186impl std::str::FromStr for CheckRunRerequestedCheckRunCheckSuiteConclusion {
5187	type Err = &'static str;
5188
5189	fn from_str(value: &str) -> Result<Self, &'static str> {
5190		match value {
5191			"success" => Ok(Self::Success),
5192			"failure" => Ok(Self::Failure),
5193			"neutral" => Ok(Self::Neutral),
5194			"cancelled" => Ok(Self::Cancelled),
5195			"timed_out" => Ok(Self::TimedOut),
5196			"action_required" => Ok(Self::ActionRequired),
5197			"stale" => Ok(Self::Stale),
5198			_ => Err("invalid value"),
5199		}
5200	}
5201}
5202impl std::convert::TryFrom<&str> for CheckRunRerequestedCheckRunCheckSuiteConclusion {
5203	type Error = &'static str;
5204
5205	fn try_from(value: &str) -> Result<Self, &'static str> {
5206		value.parse()
5207	}
5208}
5209impl std::convert::TryFrom<&String> for CheckRunRerequestedCheckRunCheckSuiteConclusion {
5210	type Error = &'static str;
5211
5212	fn try_from(value: &String) -> Result<Self, &'static str> {
5213		value.parse()
5214	}
5215}
5216impl std::convert::TryFrom<String> for CheckRunRerequestedCheckRunCheckSuiteConclusion {
5217	type Error = &'static str;
5218
5219	fn try_from(value: String) -> Result<Self, &'static str> {
5220		value.parse()
5221	}
5222}
5223#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5224pub enum CheckRunRerequestedCheckRunCheckSuiteStatus {
5225	#[serde(rename = "completed")]
5226	Completed,
5227}
5228impl From<&CheckRunRerequestedCheckRunCheckSuiteStatus>
5229	for CheckRunRerequestedCheckRunCheckSuiteStatus
5230{
5231	fn from(value: &CheckRunRerequestedCheckRunCheckSuiteStatus) -> Self {
5232		value.clone()
5233	}
5234}
5235impl ToString for CheckRunRerequestedCheckRunCheckSuiteStatus {
5236	fn to_string(&self) -> String {
5237		match *self {
5238			Self::Completed => "completed".to_string(),
5239		}
5240	}
5241}
5242impl std::str::FromStr for CheckRunRerequestedCheckRunCheckSuiteStatus {
5243	type Err = &'static str;
5244
5245	fn from_str(value: &str) -> Result<Self, &'static str> {
5246		match value {
5247			"completed" => Ok(Self::Completed),
5248			_ => Err("invalid value"),
5249		}
5250	}
5251}
5252impl std::convert::TryFrom<&str> for CheckRunRerequestedCheckRunCheckSuiteStatus {
5253	type Error = &'static str;
5254
5255	fn try_from(value: &str) -> Result<Self, &'static str> {
5256		value.parse()
5257	}
5258}
5259impl std::convert::TryFrom<&String> for CheckRunRerequestedCheckRunCheckSuiteStatus {
5260	type Error = &'static str;
5261
5262	fn try_from(value: &String) -> Result<Self, &'static str> {
5263		value.parse()
5264	}
5265}
5266impl std::convert::TryFrom<String> for CheckRunRerequestedCheckRunCheckSuiteStatus {
5267	type Error = &'static str;
5268
5269	fn try_from(value: String) -> Result<Self, &'static str> {
5270		value.parse()
5271	}
5272}
5273/// The result of the completed check run. Can be one of `success`, `failure`,
5274/// `neutral`, `cancelled`, `timed_out`, `action_required` or `stale`. This
5275/// value will be `null` until the check run has `completed`.
5276#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5277pub enum CheckRunRerequestedCheckRunConclusion {
5278	#[serde(rename = "success")]
5279	Success,
5280	#[serde(rename = "failure")]
5281	Failure,
5282	#[serde(rename = "neutral")]
5283	Neutral,
5284	#[serde(rename = "cancelled")]
5285	Cancelled,
5286	#[serde(rename = "timed_out")]
5287	TimedOut,
5288	#[serde(rename = "action_required")]
5289	ActionRequired,
5290	#[serde(rename = "stale")]
5291	Stale,
5292	#[serde(rename = "skipped")]
5293	Skipped,
5294}
5295impl From<&CheckRunRerequestedCheckRunConclusion> for CheckRunRerequestedCheckRunConclusion {
5296	fn from(value: &CheckRunRerequestedCheckRunConclusion) -> Self {
5297		value.clone()
5298	}
5299}
5300impl ToString for CheckRunRerequestedCheckRunConclusion {
5301	fn to_string(&self) -> String {
5302		match *self {
5303			Self::Success => "success".to_string(),
5304			Self::Failure => "failure".to_string(),
5305			Self::Neutral => "neutral".to_string(),
5306			Self::Cancelled => "cancelled".to_string(),
5307			Self::TimedOut => "timed_out".to_string(),
5308			Self::ActionRequired => "action_required".to_string(),
5309			Self::Stale => "stale".to_string(),
5310			Self::Skipped => "skipped".to_string(),
5311		}
5312	}
5313}
5314impl std::str::FromStr for CheckRunRerequestedCheckRunConclusion {
5315	type Err = &'static str;
5316
5317	fn from_str(value: &str) -> Result<Self, &'static str> {
5318		match value {
5319			"success" => Ok(Self::Success),
5320			"failure" => Ok(Self::Failure),
5321			"neutral" => Ok(Self::Neutral),
5322			"cancelled" => Ok(Self::Cancelled),
5323			"timed_out" => Ok(Self::TimedOut),
5324			"action_required" => Ok(Self::ActionRequired),
5325			"stale" => Ok(Self::Stale),
5326			"skipped" => Ok(Self::Skipped),
5327			_ => Err("invalid value"),
5328		}
5329	}
5330}
5331impl std::convert::TryFrom<&str> for CheckRunRerequestedCheckRunConclusion {
5332	type Error = &'static str;
5333
5334	fn try_from(value: &str) -> Result<Self, &'static str> {
5335		value.parse()
5336	}
5337}
5338impl std::convert::TryFrom<&String> for CheckRunRerequestedCheckRunConclusion {
5339	type Error = &'static str;
5340
5341	fn try_from(value: &String) -> Result<Self, &'static str> {
5342		value.parse()
5343	}
5344}
5345impl std::convert::TryFrom<String> for CheckRunRerequestedCheckRunConclusion {
5346	type Error = &'static str;
5347
5348	fn try_from(value: String) -> Result<Self, &'static str> {
5349		value.parse()
5350	}
5351}
5352#[derive(Clone, Debug, Deserialize, Serialize)]
5353#[serde(deny_unknown_fields)]
5354pub struct CheckRunRerequestedCheckRunOutput {
5355	pub annotations_count: i64,
5356	pub annotations_url:   String,
5357	pub summary:           Option<String>,
5358	pub text:              Option<String>,
5359	#[serde(default, skip_serializing_if = "Option::is_none")]
5360	pub title:             Option<String>,
5361}
5362impl From<&CheckRunRerequestedCheckRunOutput> for CheckRunRerequestedCheckRunOutput {
5363	fn from(value: &CheckRunRerequestedCheckRunOutput) -> Self {
5364		value.clone()
5365	}
5366}
5367/// The phase of the lifecycle that the check is currently in.
5368#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5369pub enum CheckRunRerequestedCheckRunStatus {
5370	#[serde(rename = "completed")]
5371	Completed,
5372}
5373impl From<&CheckRunRerequestedCheckRunStatus> for CheckRunRerequestedCheckRunStatus {
5374	fn from(value: &CheckRunRerequestedCheckRunStatus) -> Self {
5375		value.clone()
5376	}
5377}
5378impl ToString for CheckRunRerequestedCheckRunStatus {
5379	fn to_string(&self) -> String {
5380		match *self {
5381			Self::Completed => "completed".to_string(),
5382		}
5383	}
5384}
5385impl std::str::FromStr for CheckRunRerequestedCheckRunStatus {
5386	type Err = &'static str;
5387
5388	fn from_str(value: &str) -> Result<Self, &'static str> {
5389		match value {
5390			"completed" => Ok(Self::Completed),
5391			_ => Err("invalid value"),
5392		}
5393	}
5394}
5395impl std::convert::TryFrom<&str> for CheckRunRerequestedCheckRunStatus {
5396	type Error = &'static str;
5397
5398	fn try_from(value: &str) -> Result<Self, &'static str> {
5399		value.parse()
5400	}
5401}
5402impl std::convert::TryFrom<&String> for CheckRunRerequestedCheckRunStatus {
5403	type Error = &'static str;
5404
5405	fn try_from(value: &String) -> Result<Self, &'static str> {
5406		value.parse()
5407	}
5408}
5409impl std::convert::TryFrom<String> for CheckRunRerequestedCheckRunStatus {
5410	type Error = &'static str;
5411
5412	fn try_from(value: String) -> Result<Self, &'static str> {
5413		value.parse()
5414	}
5415}
5416/// The action requested by the user.
5417#[derive(Clone, Debug, Deserialize, Serialize)]
5418#[serde(deny_unknown_fields)]
5419pub struct CheckRunRerequestedRequestedAction {
5420	/// The integrator reference of the action requested by the user.
5421	#[serde(default, skip_serializing_if = "Option::is_none")]
5422	pub identifier: Option<String>,
5423}
5424impl From<&CheckRunRerequestedRequestedAction> for CheckRunRerequestedRequestedAction {
5425	fn from(value: &CheckRunRerequestedRequestedAction) -> Self {
5426		value.clone()
5427	}
5428}
5429#[derive(Clone, Debug, Deserialize, Serialize)]
5430#[serde(deny_unknown_fields)]
5431pub struct CheckSuiteCompleted {
5432	pub action:       CheckSuiteCompletedAction,
5433	pub check_suite:  CheckSuiteCompletedCheckSuite,
5434	#[serde(default, skip_serializing_if = "Option::is_none")]
5435	pub installation: Option<InstallationLite>,
5436	#[serde(default, skip_serializing_if = "Option::is_none")]
5437	pub organization: Option<Organization>,
5438	pub repository:   Repository,
5439	pub sender:       User,
5440}
5441impl From<&CheckSuiteCompleted> for CheckSuiteCompleted {
5442	fn from(value: &CheckSuiteCompleted) -> Self {
5443		value.clone()
5444	}
5445}
5446#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5447pub enum CheckSuiteCompletedAction {
5448	#[serde(rename = "completed")]
5449	Completed,
5450}
5451impl From<&CheckSuiteCompletedAction> for CheckSuiteCompletedAction {
5452	fn from(value: &CheckSuiteCompletedAction) -> Self {
5453		value.clone()
5454	}
5455}
5456impl ToString for CheckSuiteCompletedAction {
5457	fn to_string(&self) -> String {
5458		match *self {
5459			Self::Completed => "completed".to_string(),
5460		}
5461	}
5462}
5463impl std::str::FromStr for CheckSuiteCompletedAction {
5464	type Err = &'static str;
5465
5466	fn from_str(value: &str) -> Result<Self, &'static str> {
5467		match value {
5468			"completed" => Ok(Self::Completed),
5469			_ => Err("invalid value"),
5470		}
5471	}
5472}
5473impl std::convert::TryFrom<&str> for CheckSuiteCompletedAction {
5474	type Error = &'static str;
5475
5476	fn try_from(value: &str) -> Result<Self, &'static str> {
5477		value.parse()
5478	}
5479}
5480impl std::convert::TryFrom<&String> for CheckSuiteCompletedAction {
5481	type Error = &'static str;
5482
5483	fn try_from(value: &String) -> Result<Self, &'static str> {
5484		value.parse()
5485	}
5486}
5487impl std::convert::TryFrom<String> for CheckSuiteCompletedAction {
5488	type Error = &'static str;
5489
5490	fn try_from(value: String) -> Result<Self, &'static str> {
5491		value.parse()
5492	}
5493}
5494/// The [check_suite](https://docs.github.com/en/rest/reference/checks#suites).
5495#[derive(Clone, Debug, Deserialize, Serialize)]
5496#[serde(deny_unknown_fields)]
5497pub struct CheckSuiteCompletedCheckSuite {
5498	pub after: Option<String>,
5499	pub app: App,
5500	pub before: Option<String>,
5501	pub check_runs_url: String,
5502	/// The summary conclusion for all check runs that are part of the check
5503	/// suite. Can be one of `success`, `failure`, `neutral`, `cancelled`,
5504	/// `timed_out`, `action_required` or `stale`. This value will be `null`
5505	/// until the check run has `completed`.
5506	pub conclusion: Option<CheckSuiteCompletedCheckSuiteConclusion>,
5507	pub created_at: chrono::DateTime<chrono::offset::Utc>,
5508	/// The head branch name the changes are on.
5509	pub head_branch: Option<String>,
5510	pub head_commit: CommitSimple,
5511	/// The SHA of the head commit that is being checked.
5512	pub head_sha: String,
5513	pub id: i64,
5514	pub latest_check_runs_count: i64,
5515	pub node_id: String,
5516	/// An array of pull requests that match this check suite. A pull request
5517	/// matches a check suite if they have the same `head_sha` and
5518	/// `head_branch`. When the check suite's `head_branch` is in a forked
5519	/// repository it will be `null` and the `pull_requests` array will be
5520	/// empty.
5521	pub pull_requests: Vec<CheckRunPullRequest>,
5522	#[serde(default, skip_serializing_if = "Option::is_none")]
5523	pub rerequestable: Option<bool>,
5524	#[serde(default, skip_serializing_if = "Option::is_none")]
5525	pub runs_rerequestable: Option<bool>,
5526	/// The summary status for all check runs that are part of the check suite.
5527	/// Can be `queued`, `requested`, `in_progress`, or `completed`.
5528	pub status: Option<CheckSuiteCompletedCheckSuiteStatus>,
5529	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
5530	/// URL that points to the check suite API resource.
5531	pub url: String,
5532}
5533impl From<&CheckSuiteCompletedCheckSuite> for CheckSuiteCompletedCheckSuite {
5534	fn from(value: &CheckSuiteCompletedCheckSuite) -> Self {
5535		value.clone()
5536	}
5537}
5538/// The summary conclusion for all check runs that are part of the check suite.
5539/// Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`,
5540/// `action_required` or `stale`. This value will be `null` until the check run
5541/// has `completed`.
5542#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5543pub enum CheckSuiteCompletedCheckSuiteConclusion {
5544	#[serde(rename = "success")]
5545	Success,
5546	#[serde(rename = "failure")]
5547	Failure,
5548	#[serde(rename = "neutral")]
5549	Neutral,
5550	#[serde(rename = "cancelled")]
5551	Cancelled,
5552	#[serde(rename = "timed_out")]
5553	TimedOut,
5554	#[serde(rename = "action_required")]
5555	ActionRequired,
5556	#[serde(rename = "stale")]
5557	Stale,
5558}
5559impl From<&CheckSuiteCompletedCheckSuiteConclusion> for CheckSuiteCompletedCheckSuiteConclusion {
5560	fn from(value: &CheckSuiteCompletedCheckSuiteConclusion) -> Self {
5561		value.clone()
5562	}
5563}
5564impl ToString for CheckSuiteCompletedCheckSuiteConclusion {
5565	fn to_string(&self) -> String {
5566		match *self {
5567			Self::Success => "success".to_string(),
5568			Self::Failure => "failure".to_string(),
5569			Self::Neutral => "neutral".to_string(),
5570			Self::Cancelled => "cancelled".to_string(),
5571			Self::TimedOut => "timed_out".to_string(),
5572			Self::ActionRequired => "action_required".to_string(),
5573			Self::Stale => "stale".to_string(),
5574		}
5575	}
5576}
5577impl std::str::FromStr for CheckSuiteCompletedCheckSuiteConclusion {
5578	type Err = &'static str;
5579
5580	fn from_str(value: &str) -> Result<Self, &'static str> {
5581		match value {
5582			"success" => Ok(Self::Success),
5583			"failure" => Ok(Self::Failure),
5584			"neutral" => Ok(Self::Neutral),
5585			"cancelled" => Ok(Self::Cancelled),
5586			"timed_out" => Ok(Self::TimedOut),
5587			"action_required" => Ok(Self::ActionRequired),
5588			"stale" => Ok(Self::Stale),
5589			_ => Err("invalid value"),
5590		}
5591	}
5592}
5593impl std::convert::TryFrom<&str> for CheckSuiteCompletedCheckSuiteConclusion {
5594	type Error = &'static str;
5595
5596	fn try_from(value: &str) -> Result<Self, &'static str> {
5597		value.parse()
5598	}
5599}
5600impl std::convert::TryFrom<&String> for CheckSuiteCompletedCheckSuiteConclusion {
5601	type Error = &'static str;
5602
5603	fn try_from(value: &String) -> Result<Self, &'static str> {
5604		value.parse()
5605	}
5606}
5607impl std::convert::TryFrom<String> for CheckSuiteCompletedCheckSuiteConclusion {
5608	type Error = &'static str;
5609
5610	fn try_from(value: String) -> Result<Self, &'static str> {
5611		value.parse()
5612	}
5613}
5614/// The summary status for all check runs that are part of the check suite. Can
5615/// be `queued`, `requested`, `in_progress`, or `completed`.
5616#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5617pub enum CheckSuiteCompletedCheckSuiteStatus {
5618	#[serde(rename = "requested")]
5619	Requested,
5620	#[serde(rename = "in_progress")]
5621	InProgress,
5622	#[serde(rename = "completed")]
5623	Completed,
5624	#[serde(rename = "queued")]
5625	Queued,
5626}
5627impl From<&CheckSuiteCompletedCheckSuiteStatus> for CheckSuiteCompletedCheckSuiteStatus {
5628	fn from(value: &CheckSuiteCompletedCheckSuiteStatus) -> Self {
5629		value.clone()
5630	}
5631}
5632impl ToString for CheckSuiteCompletedCheckSuiteStatus {
5633	fn to_string(&self) -> String {
5634		match *self {
5635			Self::Requested => "requested".to_string(),
5636			Self::InProgress => "in_progress".to_string(),
5637			Self::Completed => "completed".to_string(),
5638			Self::Queued => "queued".to_string(),
5639		}
5640	}
5641}
5642impl std::str::FromStr for CheckSuiteCompletedCheckSuiteStatus {
5643	type Err = &'static str;
5644
5645	fn from_str(value: &str) -> Result<Self, &'static str> {
5646		match value {
5647			"requested" => Ok(Self::Requested),
5648			"in_progress" => Ok(Self::InProgress),
5649			"completed" => Ok(Self::Completed),
5650			"queued" => Ok(Self::Queued),
5651			_ => Err("invalid value"),
5652		}
5653	}
5654}
5655impl std::convert::TryFrom<&str> for CheckSuiteCompletedCheckSuiteStatus {
5656	type Error = &'static str;
5657
5658	fn try_from(value: &str) -> Result<Self, &'static str> {
5659		value.parse()
5660	}
5661}
5662impl std::convert::TryFrom<&String> for CheckSuiteCompletedCheckSuiteStatus {
5663	type Error = &'static str;
5664
5665	fn try_from(value: &String) -> Result<Self, &'static str> {
5666		value.parse()
5667	}
5668}
5669impl std::convert::TryFrom<String> for CheckSuiteCompletedCheckSuiteStatus {
5670	type Error = &'static str;
5671
5672	fn try_from(value: String) -> Result<Self, &'static str> {
5673		value.parse()
5674	}
5675}
5676#[derive(Clone, Debug, Deserialize, Serialize)]
5677#[serde(untagged)]
5678pub enum CheckSuiteEvent {
5679	Completed(CheckSuiteCompleted),
5680	Requested(CheckSuiteRequested),
5681	Rerequested(CheckSuiteRerequested),
5682}
5683impl From<&CheckSuiteEvent> for CheckSuiteEvent {
5684	fn from(value: &CheckSuiteEvent) -> Self {
5685		value.clone()
5686	}
5687}
5688impl From<CheckSuiteCompleted> for CheckSuiteEvent {
5689	fn from(value: CheckSuiteCompleted) -> Self {
5690		Self::Completed(value)
5691	}
5692}
5693impl From<CheckSuiteRequested> for CheckSuiteEvent {
5694	fn from(value: CheckSuiteRequested) -> Self {
5695		Self::Requested(value)
5696	}
5697}
5698impl From<CheckSuiteRerequested> for CheckSuiteEvent {
5699	fn from(value: CheckSuiteRerequested) -> Self {
5700		Self::Rerequested(value)
5701	}
5702}
5703#[derive(Clone, Debug, Deserialize, Serialize)]
5704#[serde(deny_unknown_fields)]
5705pub struct CheckSuiteRequested {
5706	pub action:       CheckSuiteRequestedAction,
5707	pub check_suite:  CheckSuiteRequestedCheckSuite,
5708	#[serde(default, skip_serializing_if = "Option::is_none")]
5709	pub installation: Option<InstallationLite>,
5710	#[serde(default, skip_serializing_if = "Option::is_none")]
5711	pub organization: Option<Organization>,
5712	pub repository:   Repository,
5713	pub sender:       User,
5714}
5715impl From<&CheckSuiteRequested> for CheckSuiteRequested {
5716	fn from(value: &CheckSuiteRequested) -> Self {
5717		value.clone()
5718	}
5719}
5720#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5721pub enum CheckSuiteRequestedAction {
5722	#[serde(rename = "requested")]
5723	Requested,
5724}
5725impl From<&CheckSuiteRequestedAction> for CheckSuiteRequestedAction {
5726	fn from(value: &CheckSuiteRequestedAction) -> Self {
5727		value.clone()
5728	}
5729}
5730impl ToString for CheckSuiteRequestedAction {
5731	fn to_string(&self) -> String {
5732		match *self {
5733			Self::Requested => "requested".to_string(),
5734		}
5735	}
5736}
5737impl std::str::FromStr for CheckSuiteRequestedAction {
5738	type Err = &'static str;
5739
5740	fn from_str(value: &str) -> Result<Self, &'static str> {
5741		match value {
5742			"requested" => Ok(Self::Requested),
5743			_ => Err("invalid value"),
5744		}
5745	}
5746}
5747impl std::convert::TryFrom<&str> for CheckSuiteRequestedAction {
5748	type Error = &'static str;
5749
5750	fn try_from(value: &str) -> Result<Self, &'static str> {
5751		value.parse()
5752	}
5753}
5754impl std::convert::TryFrom<&String> for CheckSuiteRequestedAction {
5755	type Error = &'static str;
5756
5757	fn try_from(value: &String) -> Result<Self, &'static str> {
5758		value.parse()
5759	}
5760}
5761impl std::convert::TryFrom<String> for CheckSuiteRequestedAction {
5762	type Error = &'static str;
5763
5764	fn try_from(value: String) -> Result<Self, &'static str> {
5765		value.parse()
5766	}
5767}
5768/// The [check_suite](https://docs.github.com/en/rest/reference/checks#suites).
5769#[derive(Clone, Debug, Deserialize, Serialize)]
5770#[serde(deny_unknown_fields)]
5771pub struct CheckSuiteRequestedCheckSuite {
5772	pub after: Option<String>,
5773	pub app: App,
5774	pub before: Option<String>,
5775	pub check_runs_url: String,
5776	/// The summary conclusion for all check runs that are part of the check
5777	/// suite. Can be one of `success`, `failure`,` neutral`, `cancelled`,
5778	/// `timed_out`, `action_required` or `stale`. This value will be `null`
5779	/// until the check run has completed.
5780	pub conclusion: Option<CheckSuiteRequestedCheckSuiteConclusion>,
5781	pub created_at: chrono::DateTime<chrono::offset::Utc>,
5782	/// The head branch name the changes are on.
5783	pub head_branch: Option<String>,
5784	pub head_commit: CommitSimple,
5785	/// The SHA of the head commit that is being checked.
5786	pub head_sha: String,
5787	pub id: i64,
5788	pub latest_check_runs_count: i64,
5789	pub node_id: String,
5790	/// An array of pull requests that match this check suite. A pull request
5791	/// matches a check suite if they have the same `head_sha` and
5792	/// `head_branch`. When the check suite's `head_branch` is in a forked
5793	/// repository it will be `null` and the `pull_requests` array will be
5794	/// empty.
5795	pub pull_requests: Vec<CheckRunPullRequest>,
5796	#[serde(default, skip_serializing_if = "Option::is_none")]
5797	pub rerequestable: Option<bool>,
5798	#[serde(default, skip_serializing_if = "Option::is_none")]
5799	pub runs_rerequestable: Option<bool>,
5800	/// The summary status for all check runs that are part of the check suite.
5801	/// Can be `queued`, `requested`, `in_progress`, or `completed`.
5802	pub status: Option<CheckSuiteRequestedCheckSuiteStatus>,
5803	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
5804	/// URL that points to the check suite API resource.
5805	pub url: String,
5806}
5807impl From<&CheckSuiteRequestedCheckSuite> for CheckSuiteRequestedCheckSuite {
5808	fn from(value: &CheckSuiteRequestedCheckSuite) -> Self {
5809		value.clone()
5810	}
5811}
5812/// The summary conclusion for all check runs that are part of the check suite.
5813/// Can be one of `success`, `failure`,` neutral`, `cancelled`, `timed_out`,
5814/// `action_required` or `stale`. This value will be `null` until the check run
5815/// has completed.
5816#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5817pub enum CheckSuiteRequestedCheckSuiteConclusion {
5818	#[serde(rename = "success")]
5819	Success,
5820	#[serde(rename = "failure")]
5821	Failure,
5822	#[serde(rename = "neutral")]
5823	Neutral,
5824	#[serde(rename = "cancelled")]
5825	Cancelled,
5826	#[serde(rename = "timed_out")]
5827	TimedOut,
5828	#[serde(rename = "action_required")]
5829	ActionRequired,
5830	#[serde(rename = "stale")]
5831	Stale,
5832}
5833impl From<&CheckSuiteRequestedCheckSuiteConclusion> for CheckSuiteRequestedCheckSuiteConclusion {
5834	fn from(value: &CheckSuiteRequestedCheckSuiteConclusion) -> Self {
5835		value.clone()
5836	}
5837}
5838impl ToString for CheckSuiteRequestedCheckSuiteConclusion {
5839	fn to_string(&self) -> String {
5840		match *self {
5841			Self::Success => "success".to_string(),
5842			Self::Failure => "failure".to_string(),
5843			Self::Neutral => "neutral".to_string(),
5844			Self::Cancelled => "cancelled".to_string(),
5845			Self::TimedOut => "timed_out".to_string(),
5846			Self::ActionRequired => "action_required".to_string(),
5847			Self::Stale => "stale".to_string(),
5848		}
5849	}
5850}
5851impl std::str::FromStr for CheckSuiteRequestedCheckSuiteConclusion {
5852	type Err = &'static str;
5853
5854	fn from_str(value: &str) -> Result<Self, &'static str> {
5855		match value {
5856			"success" => Ok(Self::Success),
5857			"failure" => Ok(Self::Failure),
5858			"neutral" => Ok(Self::Neutral),
5859			"cancelled" => Ok(Self::Cancelled),
5860			"timed_out" => Ok(Self::TimedOut),
5861			"action_required" => Ok(Self::ActionRequired),
5862			"stale" => Ok(Self::Stale),
5863			_ => Err("invalid value"),
5864		}
5865	}
5866}
5867impl std::convert::TryFrom<&str> for CheckSuiteRequestedCheckSuiteConclusion {
5868	type Error = &'static str;
5869
5870	fn try_from(value: &str) -> Result<Self, &'static str> {
5871		value.parse()
5872	}
5873}
5874impl std::convert::TryFrom<&String> for CheckSuiteRequestedCheckSuiteConclusion {
5875	type Error = &'static str;
5876
5877	fn try_from(value: &String) -> Result<Self, &'static str> {
5878		value.parse()
5879	}
5880}
5881impl std::convert::TryFrom<String> for CheckSuiteRequestedCheckSuiteConclusion {
5882	type Error = &'static str;
5883
5884	fn try_from(value: String) -> Result<Self, &'static str> {
5885		value.parse()
5886	}
5887}
5888/// The summary status for all check runs that are part of the check suite. Can
5889/// be `queued`, `requested`, `in_progress`, or `completed`.
5890#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5891pub enum CheckSuiteRequestedCheckSuiteStatus {
5892	#[serde(rename = "requested")]
5893	Requested,
5894	#[serde(rename = "in_progress")]
5895	InProgress,
5896	#[serde(rename = "completed")]
5897	Completed,
5898	#[serde(rename = "queued")]
5899	Queued,
5900}
5901impl From<&CheckSuiteRequestedCheckSuiteStatus> for CheckSuiteRequestedCheckSuiteStatus {
5902	fn from(value: &CheckSuiteRequestedCheckSuiteStatus) -> Self {
5903		value.clone()
5904	}
5905}
5906impl ToString for CheckSuiteRequestedCheckSuiteStatus {
5907	fn to_string(&self) -> String {
5908		match *self {
5909			Self::Requested => "requested".to_string(),
5910			Self::InProgress => "in_progress".to_string(),
5911			Self::Completed => "completed".to_string(),
5912			Self::Queued => "queued".to_string(),
5913		}
5914	}
5915}
5916impl std::str::FromStr for CheckSuiteRequestedCheckSuiteStatus {
5917	type Err = &'static str;
5918
5919	fn from_str(value: &str) -> Result<Self, &'static str> {
5920		match value {
5921			"requested" => Ok(Self::Requested),
5922			"in_progress" => Ok(Self::InProgress),
5923			"completed" => Ok(Self::Completed),
5924			"queued" => Ok(Self::Queued),
5925			_ => Err("invalid value"),
5926		}
5927	}
5928}
5929impl std::convert::TryFrom<&str> for CheckSuiteRequestedCheckSuiteStatus {
5930	type Error = &'static str;
5931
5932	fn try_from(value: &str) -> Result<Self, &'static str> {
5933		value.parse()
5934	}
5935}
5936impl std::convert::TryFrom<&String> for CheckSuiteRequestedCheckSuiteStatus {
5937	type Error = &'static str;
5938
5939	fn try_from(value: &String) -> Result<Self, &'static str> {
5940		value.parse()
5941	}
5942}
5943impl std::convert::TryFrom<String> for CheckSuiteRequestedCheckSuiteStatus {
5944	type Error = &'static str;
5945
5946	fn try_from(value: String) -> Result<Self, &'static str> {
5947		value.parse()
5948	}
5949}
5950#[derive(Clone, Debug, Deserialize, Serialize)]
5951#[serde(deny_unknown_fields)]
5952pub struct CheckSuiteRerequested {
5953	pub action:       CheckSuiteRerequestedAction,
5954	pub check_suite:  CheckSuiteRerequestedCheckSuite,
5955	#[serde(default, skip_serializing_if = "Option::is_none")]
5956	pub installation: Option<InstallationLite>,
5957	#[serde(default, skip_serializing_if = "Option::is_none")]
5958	pub organization: Option<Organization>,
5959	pub repository:   Repository,
5960	pub sender:       User,
5961}
5962impl From<&CheckSuiteRerequested> for CheckSuiteRerequested {
5963	fn from(value: &CheckSuiteRerequested) -> Self {
5964		value.clone()
5965	}
5966}
5967#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
5968pub enum CheckSuiteRerequestedAction {
5969	#[serde(rename = "rerequested")]
5970	Rerequested,
5971}
5972impl From<&CheckSuiteRerequestedAction> for CheckSuiteRerequestedAction {
5973	fn from(value: &CheckSuiteRerequestedAction) -> Self {
5974		value.clone()
5975	}
5976}
5977impl ToString for CheckSuiteRerequestedAction {
5978	fn to_string(&self) -> String {
5979		match *self {
5980			Self::Rerequested => "rerequested".to_string(),
5981		}
5982	}
5983}
5984impl std::str::FromStr for CheckSuiteRerequestedAction {
5985	type Err = &'static str;
5986
5987	fn from_str(value: &str) -> Result<Self, &'static str> {
5988		match value {
5989			"rerequested" => Ok(Self::Rerequested),
5990			_ => Err("invalid value"),
5991		}
5992	}
5993}
5994impl std::convert::TryFrom<&str> for CheckSuiteRerequestedAction {
5995	type Error = &'static str;
5996
5997	fn try_from(value: &str) -> Result<Self, &'static str> {
5998		value.parse()
5999	}
6000}
6001impl std::convert::TryFrom<&String> for CheckSuiteRerequestedAction {
6002	type Error = &'static str;
6003
6004	fn try_from(value: &String) -> Result<Self, &'static str> {
6005		value.parse()
6006	}
6007}
6008impl std::convert::TryFrom<String> for CheckSuiteRerequestedAction {
6009	type Error = &'static str;
6010
6011	fn try_from(value: String) -> Result<Self, &'static str> {
6012		value.parse()
6013	}
6014}
6015/// The [check_suite](https://docs.github.com/en/rest/reference/checks#suites).
6016#[derive(Clone, Debug, Deserialize, Serialize)]
6017#[serde(deny_unknown_fields)]
6018pub struct CheckSuiteRerequestedCheckSuite {
6019	pub after: Option<String>,
6020	pub app: App,
6021	pub before: Option<String>,
6022	pub check_runs_url: String,
6023	/// The summary conclusion for all check runs that are part of the check
6024	/// suite. Can be one of `success`, `failure`,` neutral`, `cancelled`,
6025	/// `timed_out`, `action_required` or `stale`. This value will be `null`
6026	/// until the check run has completed.
6027	pub conclusion: Option<CheckSuiteRerequestedCheckSuiteConclusion>,
6028	pub created_at: chrono::DateTime<chrono::offset::Utc>,
6029	/// The head branch name the changes are on.
6030	pub head_branch: Option<String>,
6031	pub head_commit: CommitSimple,
6032	/// The SHA of the head commit that is being checked.
6033	pub head_sha: String,
6034	pub id: i64,
6035	pub latest_check_runs_count: i64,
6036	pub node_id: String,
6037	/// An array of pull requests that match this check suite. A pull request
6038	/// matches a check suite if they have the same `head_sha` and
6039	/// `head_branch`. When the check suite's `head_branch` is in a forked
6040	/// repository it will be `null` and the `pull_requests` array will be
6041	/// empty.
6042	pub pull_requests: Vec<CheckRunPullRequest>,
6043	/// The summary status for all check runs that are part of the check suite.
6044	/// Can be `queued`, `requested`, `in_progress`, or `completed`.
6045	pub status: Option<CheckSuiteRerequestedCheckSuiteStatus>,
6046	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
6047	/// URL that points to the check suite API resource.
6048	pub url: String,
6049}
6050impl From<&CheckSuiteRerequestedCheckSuite> for CheckSuiteRerequestedCheckSuite {
6051	fn from(value: &CheckSuiteRerequestedCheckSuite) -> Self {
6052		value.clone()
6053	}
6054}
6055/// The summary conclusion for all check runs that are part of the check suite.
6056/// Can be one of `success`, `failure`,` neutral`, `cancelled`, `timed_out`,
6057/// `action_required` or `stale`. This value will be `null` until the check run
6058/// has completed.
6059#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6060pub enum CheckSuiteRerequestedCheckSuiteConclusion {
6061	#[serde(rename = "success")]
6062	Success,
6063	#[serde(rename = "failure")]
6064	Failure,
6065	#[serde(rename = "neutral")]
6066	Neutral,
6067	#[serde(rename = "cancelled")]
6068	Cancelled,
6069	#[serde(rename = "timed_out")]
6070	TimedOut,
6071	#[serde(rename = "action_required")]
6072	ActionRequired,
6073	#[serde(rename = "stale")]
6074	Stale,
6075}
6076impl From<&CheckSuiteRerequestedCheckSuiteConclusion>
6077	for CheckSuiteRerequestedCheckSuiteConclusion
6078{
6079	fn from(value: &CheckSuiteRerequestedCheckSuiteConclusion) -> Self {
6080		value.clone()
6081	}
6082}
6083impl ToString for CheckSuiteRerequestedCheckSuiteConclusion {
6084	fn to_string(&self) -> String {
6085		match *self {
6086			Self::Success => "success".to_string(),
6087			Self::Failure => "failure".to_string(),
6088			Self::Neutral => "neutral".to_string(),
6089			Self::Cancelled => "cancelled".to_string(),
6090			Self::TimedOut => "timed_out".to_string(),
6091			Self::ActionRequired => "action_required".to_string(),
6092			Self::Stale => "stale".to_string(),
6093		}
6094	}
6095}
6096impl std::str::FromStr for CheckSuiteRerequestedCheckSuiteConclusion {
6097	type Err = &'static str;
6098
6099	fn from_str(value: &str) -> Result<Self, &'static str> {
6100		match value {
6101			"success" => Ok(Self::Success),
6102			"failure" => Ok(Self::Failure),
6103			"neutral" => Ok(Self::Neutral),
6104			"cancelled" => Ok(Self::Cancelled),
6105			"timed_out" => Ok(Self::TimedOut),
6106			"action_required" => Ok(Self::ActionRequired),
6107			"stale" => Ok(Self::Stale),
6108			_ => Err("invalid value"),
6109		}
6110	}
6111}
6112impl std::convert::TryFrom<&str> for CheckSuiteRerequestedCheckSuiteConclusion {
6113	type Error = &'static str;
6114
6115	fn try_from(value: &str) -> Result<Self, &'static str> {
6116		value.parse()
6117	}
6118}
6119impl std::convert::TryFrom<&String> for CheckSuiteRerequestedCheckSuiteConclusion {
6120	type Error = &'static str;
6121
6122	fn try_from(value: &String) -> Result<Self, &'static str> {
6123		value.parse()
6124	}
6125}
6126impl std::convert::TryFrom<String> for CheckSuiteRerequestedCheckSuiteConclusion {
6127	type Error = &'static str;
6128
6129	fn try_from(value: String) -> Result<Self, &'static str> {
6130		value.parse()
6131	}
6132}
6133/// The summary status for all check runs that are part of the check suite. Can
6134/// be `queued`, `requested`, `in_progress`, or `completed`.
6135#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6136pub enum CheckSuiteRerequestedCheckSuiteStatus {
6137	#[serde(rename = "requested")]
6138	Requested,
6139	#[serde(rename = "in_progress")]
6140	InProgress,
6141	#[serde(rename = "completed")]
6142	Completed,
6143	#[serde(rename = "queued")]
6144	Queued,
6145}
6146impl From<&CheckSuiteRerequestedCheckSuiteStatus> for CheckSuiteRerequestedCheckSuiteStatus {
6147	fn from(value: &CheckSuiteRerequestedCheckSuiteStatus) -> Self {
6148		value.clone()
6149	}
6150}
6151impl ToString for CheckSuiteRerequestedCheckSuiteStatus {
6152	fn to_string(&self) -> String {
6153		match *self {
6154			Self::Requested => "requested".to_string(),
6155			Self::InProgress => "in_progress".to_string(),
6156			Self::Completed => "completed".to_string(),
6157			Self::Queued => "queued".to_string(),
6158		}
6159	}
6160}
6161impl std::str::FromStr for CheckSuiteRerequestedCheckSuiteStatus {
6162	type Err = &'static str;
6163
6164	fn from_str(value: &str) -> Result<Self, &'static str> {
6165		match value {
6166			"requested" => Ok(Self::Requested),
6167			"in_progress" => Ok(Self::InProgress),
6168			"completed" => Ok(Self::Completed),
6169			"queued" => Ok(Self::Queued),
6170			_ => Err("invalid value"),
6171		}
6172	}
6173}
6174impl std::convert::TryFrom<&str> for CheckSuiteRerequestedCheckSuiteStatus {
6175	type Error = &'static str;
6176
6177	fn try_from(value: &str) -> Result<Self, &'static str> {
6178		value.parse()
6179	}
6180}
6181impl std::convert::TryFrom<&String> for CheckSuiteRerequestedCheckSuiteStatus {
6182	type Error = &'static str;
6183
6184	fn try_from(value: &String) -> Result<Self, &'static str> {
6185		value.parse()
6186	}
6187}
6188impl std::convert::TryFrom<String> for CheckSuiteRerequestedCheckSuiteStatus {
6189	type Error = &'static str;
6190
6191	fn try_from(value: String) -> Result<Self, &'static str> {
6192		value.parse()
6193	}
6194}
6195#[derive(Clone, Debug, Deserialize, Serialize)]
6196#[serde(deny_unknown_fields)]
6197pub struct CodeScanningAlertAppearedInBranch {
6198	pub action:       CodeScanningAlertAppearedInBranchAction,
6199	pub alert:        CodeScanningAlertAppearedInBranchAlert,
6200	/// The commit SHA of the code scanning alert. When the action is
6201	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
6202	/// `sender` and this value will be empty.
6203	pub commit_oid:   String,
6204	#[serde(default, skip_serializing_if = "Option::is_none")]
6205	pub installation: Option<InstallationLite>,
6206	#[serde(default, skip_serializing_if = "Option::is_none")]
6207	pub organization: Option<Organization>,
6208	/// The Git reference of the code scanning alert. When the action is
6209	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
6210	/// `sender` and this value will be empty.
6211	#[serde(rename = "ref")]
6212	pub ref_:         String,
6213	pub repository:   Repository,
6214	pub sender:       GithubOrg,
6215}
6216impl From<&CodeScanningAlertAppearedInBranch> for CodeScanningAlertAppearedInBranch {
6217	fn from(value: &CodeScanningAlertAppearedInBranch) -> Self {
6218		value.clone()
6219	}
6220}
6221#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6222pub enum CodeScanningAlertAppearedInBranchAction {
6223	#[serde(rename = "appeared_in_branch")]
6224	AppearedInBranch,
6225}
6226impl From<&CodeScanningAlertAppearedInBranchAction> for CodeScanningAlertAppearedInBranchAction {
6227	fn from(value: &CodeScanningAlertAppearedInBranchAction) -> Self {
6228		value.clone()
6229	}
6230}
6231impl ToString for CodeScanningAlertAppearedInBranchAction {
6232	fn to_string(&self) -> String {
6233		match *self {
6234			Self::AppearedInBranch => "appeared_in_branch".to_string(),
6235		}
6236	}
6237}
6238impl std::str::FromStr for CodeScanningAlertAppearedInBranchAction {
6239	type Err = &'static str;
6240
6241	fn from_str(value: &str) -> Result<Self, &'static str> {
6242		match value {
6243			"appeared_in_branch" => Ok(Self::AppearedInBranch),
6244			_ => Err("invalid value"),
6245		}
6246	}
6247}
6248impl std::convert::TryFrom<&str> for CodeScanningAlertAppearedInBranchAction {
6249	type Error = &'static str;
6250
6251	fn try_from(value: &str) -> Result<Self, &'static str> {
6252		value.parse()
6253	}
6254}
6255impl std::convert::TryFrom<&String> for CodeScanningAlertAppearedInBranchAction {
6256	type Error = &'static str;
6257
6258	fn try_from(value: &String) -> Result<Self, &'static str> {
6259		value.parse()
6260	}
6261}
6262impl std::convert::TryFrom<String> for CodeScanningAlertAppearedInBranchAction {
6263	type Error = &'static str;
6264
6265	fn try_from(value: String) -> Result<Self, &'static str> {
6266		value.parse()
6267	}
6268}
6269/// The code scanning alert involved in the event.
6270#[derive(Clone, Debug, Deserialize, Serialize)]
6271#[serde(deny_unknown_fields)]
6272pub struct CodeScanningAlertAppearedInBranchAlert {
6273	/// The time that the alert was created in ISO 8601 format:
6274	/// `YYYY-MM-DDTHH:MM:SSZ.`
6275	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
6276	/// The time that the alert was dismissed in ISO 8601 format:
6277	/// `YYYY-MM-DDTHH:MM:SSZ`.
6278	pub dismissed_at:         Option<chrono::DateTime<chrono::offset::Utc>>,
6279	pub dismissed_by:         Option<User>,
6280	/// The reason for dismissing or closing the alert. Can be one of: `false
6281	/// positive`, `won't fix`, and `used in tests`.
6282	pub dismissed_reason:     Option<CodeScanningAlertAppearedInBranchAlertDismissedReason>,
6283	/// The GitHub URL of the alert resource.
6284	pub html_url:             String,
6285	pub instances:            Vec<AlertInstance>,
6286	#[serde(default, skip_serializing_if = "Option::is_none")]
6287	pub most_recent_instance: Option<AlertInstance>,
6288	/// The code scanning alert number.
6289	pub number:               i64,
6290	pub rule:                 CodeScanningAlertAppearedInBranchAlertRule,
6291	/// State of a code scanning alert.
6292	pub state:                CodeScanningAlertAppearedInBranchAlertState,
6293	pub tool:                 CodeScanningAlertAppearedInBranchAlertTool,
6294	/// The REST API URL of the alert resource.
6295	pub url:                  String,
6296}
6297impl From<&CodeScanningAlertAppearedInBranchAlert> for CodeScanningAlertAppearedInBranchAlert {
6298	fn from(value: &CodeScanningAlertAppearedInBranchAlert) -> Self {
6299		value.clone()
6300	}
6301}
6302/// The reason for dismissing or closing the alert. Can be one of: `false
6303/// positive`, `won't fix`, and `used in tests`.
6304#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6305pub enum CodeScanningAlertAppearedInBranchAlertDismissedReason {
6306	#[serde(rename = "false positive")]
6307	FalsePositive,
6308	#[serde(rename = "won't fix")]
6309	WontFix,
6310	#[serde(rename = "used in tests")]
6311	UsedInTests,
6312}
6313impl From<&CodeScanningAlertAppearedInBranchAlertDismissedReason>
6314	for CodeScanningAlertAppearedInBranchAlertDismissedReason
6315{
6316	fn from(value: &CodeScanningAlertAppearedInBranchAlertDismissedReason) -> Self {
6317		value.clone()
6318	}
6319}
6320impl ToString for CodeScanningAlertAppearedInBranchAlertDismissedReason {
6321	fn to_string(&self) -> String {
6322		match *self {
6323			Self::FalsePositive => "false positive".to_string(),
6324			Self::WontFix => "won't fix".to_string(),
6325			Self::UsedInTests => "used in tests".to_string(),
6326		}
6327	}
6328}
6329impl std::str::FromStr for CodeScanningAlertAppearedInBranchAlertDismissedReason {
6330	type Err = &'static str;
6331
6332	fn from_str(value: &str) -> Result<Self, &'static str> {
6333		match value {
6334			"false positive" => Ok(Self::FalsePositive),
6335			"won't fix" => Ok(Self::WontFix),
6336			"used in tests" => Ok(Self::UsedInTests),
6337			_ => Err("invalid value"),
6338		}
6339	}
6340}
6341impl std::convert::TryFrom<&str> for CodeScanningAlertAppearedInBranchAlertDismissedReason {
6342	type Error = &'static str;
6343
6344	fn try_from(value: &str) -> Result<Self, &'static str> {
6345		value.parse()
6346	}
6347}
6348impl std::convert::TryFrom<&String> for CodeScanningAlertAppearedInBranchAlertDismissedReason {
6349	type Error = &'static str;
6350
6351	fn try_from(value: &String) -> Result<Self, &'static str> {
6352		value.parse()
6353	}
6354}
6355impl std::convert::TryFrom<String> for CodeScanningAlertAppearedInBranchAlertDismissedReason {
6356	type Error = &'static str;
6357
6358	fn try_from(value: String) -> Result<Self, &'static str> {
6359		value.parse()
6360	}
6361}
6362#[derive(Clone, Debug, Deserialize, Serialize)]
6363#[serde(deny_unknown_fields)]
6364pub struct CodeScanningAlertAppearedInBranchAlertRule {
6365	/// A short description of the rule used to detect the alert.
6366	pub description: String,
6367	/// A unique identifier for the rule used to detect the alert.
6368	pub id:          String,
6369	/// The severity of the alert.
6370	pub severity:    Option<CodeScanningAlertAppearedInBranchAlertRuleSeverity>,
6371}
6372impl From<&CodeScanningAlertAppearedInBranchAlertRule>
6373	for CodeScanningAlertAppearedInBranchAlertRule
6374{
6375	fn from(value: &CodeScanningAlertAppearedInBranchAlertRule) -> Self {
6376		value.clone()
6377	}
6378}
6379/// The severity of the alert.
6380#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6381pub enum CodeScanningAlertAppearedInBranchAlertRuleSeverity {
6382	#[serde(rename = "none")]
6383	None,
6384	#[serde(rename = "note")]
6385	Note,
6386	#[serde(rename = "warning")]
6387	Warning,
6388	#[serde(rename = "error")]
6389	Error,
6390}
6391impl From<&CodeScanningAlertAppearedInBranchAlertRuleSeverity>
6392	for CodeScanningAlertAppearedInBranchAlertRuleSeverity
6393{
6394	fn from(value: &CodeScanningAlertAppearedInBranchAlertRuleSeverity) -> Self {
6395		value.clone()
6396	}
6397}
6398impl ToString for CodeScanningAlertAppearedInBranchAlertRuleSeverity {
6399	fn to_string(&self) -> String {
6400		match *self {
6401			Self::None => "none".to_string(),
6402			Self::Note => "note".to_string(),
6403			Self::Warning => "warning".to_string(),
6404			Self::Error => "error".to_string(),
6405		}
6406	}
6407}
6408impl std::str::FromStr for CodeScanningAlertAppearedInBranchAlertRuleSeverity {
6409	type Err = &'static str;
6410
6411	fn from_str(value: &str) -> Result<Self, &'static str> {
6412		match value {
6413			"none" => Ok(Self::None),
6414			"note" => Ok(Self::Note),
6415			"warning" => Ok(Self::Warning),
6416			"error" => Ok(Self::Error),
6417			_ => Err("invalid value"),
6418		}
6419	}
6420}
6421impl std::convert::TryFrom<&str> for CodeScanningAlertAppearedInBranchAlertRuleSeverity {
6422	type Error = &'static str;
6423
6424	fn try_from(value: &str) -> Result<Self, &'static str> {
6425		value.parse()
6426	}
6427}
6428impl std::convert::TryFrom<&String> for CodeScanningAlertAppearedInBranchAlertRuleSeverity {
6429	type Error = &'static str;
6430
6431	fn try_from(value: &String) -> Result<Self, &'static str> {
6432		value.parse()
6433	}
6434}
6435impl std::convert::TryFrom<String> for CodeScanningAlertAppearedInBranchAlertRuleSeverity {
6436	type Error = &'static str;
6437
6438	fn try_from(value: String) -> Result<Self, &'static str> {
6439		value.parse()
6440	}
6441}
6442/// State of a code scanning alert.
6443#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6444pub enum CodeScanningAlertAppearedInBranchAlertState {
6445	#[serde(rename = "open")]
6446	Open,
6447	#[serde(rename = "dismissed")]
6448	Dismissed,
6449	#[serde(rename = "fixed")]
6450	Fixed,
6451}
6452impl From<&CodeScanningAlertAppearedInBranchAlertState>
6453	for CodeScanningAlertAppearedInBranchAlertState
6454{
6455	fn from(value: &CodeScanningAlertAppearedInBranchAlertState) -> Self {
6456		value.clone()
6457	}
6458}
6459impl ToString for CodeScanningAlertAppearedInBranchAlertState {
6460	fn to_string(&self) -> String {
6461		match *self {
6462			Self::Open => "open".to_string(),
6463			Self::Dismissed => "dismissed".to_string(),
6464			Self::Fixed => "fixed".to_string(),
6465		}
6466	}
6467}
6468impl std::str::FromStr for CodeScanningAlertAppearedInBranchAlertState {
6469	type Err = &'static str;
6470
6471	fn from_str(value: &str) -> Result<Self, &'static str> {
6472		match value {
6473			"open" => Ok(Self::Open),
6474			"dismissed" => Ok(Self::Dismissed),
6475			"fixed" => Ok(Self::Fixed),
6476			_ => Err("invalid value"),
6477		}
6478	}
6479}
6480impl std::convert::TryFrom<&str> for CodeScanningAlertAppearedInBranchAlertState {
6481	type Error = &'static str;
6482
6483	fn try_from(value: &str) -> Result<Self, &'static str> {
6484		value.parse()
6485	}
6486}
6487impl std::convert::TryFrom<&String> for CodeScanningAlertAppearedInBranchAlertState {
6488	type Error = &'static str;
6489
6490	fn try_from(value: &String) -> Result<Self, &'static str> {
6491		value.parse()
6492	}
6493}
6494impl std::convert::TryFrom<String> for CodeScanningAlertAppearedInBranchAlertState {
6495	type Error = &'static str;
6496
6497	fn try_from(value: String) -> Result<Self, &'static str> {
6498		value.parse()
6499	}
6500}
6501#[derive(Clone, Debug, Deserialize, Serialize)]
6502#[serde(deny_unknown_fields)]
6503pub struct CodeScanningAlertAppearedInBranchAlertTool {
6504	/// The name of the tool used to generate the code scanning analysis alert.
6505	pub name:    String,
6506	/// The version of the tool used to detect the alert.
6507	pub version: Option<String>,
6508}
6509impl From<&CodeScanningAlertAppearedInBranchAlertTool>
6510	for CodeScanningAlertAppearedInBranchAlertTool
6511{
6512	fn from(value: &CodeScanningAlertAppearedInBranchAlertTool) -> Self {
6513		value.clone()
6514	}
6515}
6516#[derive(Clone, Debug, Deserialize, Serialize)]
6517#[serde(deny_unknown_fields)]
6518pub struct CodeScanningAlertClosedByUser {
6519	pub action:       CodeScanningAlertClosedByUserAction,
6520	pub alert:        CodeScanningAlertClosedByUserAlert,
6521	/// The commit SHA of the code scanning alert. When the action is
6522	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
6523	/// `sender` and this value will be empty.
6524	pub commit_oid:   String,
6525	#[serde(default, skip_serializing_if = "Option::is_none")]
6526	pub installation: Option<InstallationLite>,
6527	#[serde(default, skip_serializing_if = "Option::is_none")]
6528	pub organization: Option<Organization>,
6529	/// The Git reference of the code scanning alert. When the action is
6530	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
6531	/// `sender` and this value will be empty.
6532	#[serde(rename = "ref")]
6533	pub ref_:         String,
6534	pub repository:   Repository,
6535	pub sender:       User,
6536}
6537impl From<&CodeScanningAlertClosedByUser> for CodeScanningAlertClosedByUser {
6538	fn from(value: &CodeScanningAlertClosedByUser) -> Self {
6539		value.clone()
6540	}
6541}
6542#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6543pub enum CodeScanningAlertClosedByUserAction {
6544	#[serde(rename = "closed_by_user")]
6545	ClosedByUser,
6546}
6547impl From<&CodeScanningAlertClosedByUserAction> for CodeScanningAlertClosedByUserAction {
6548	fn from(value: &CodeScanningAlertClosedByUserAction) -> Self {
6549		value.clone()
6550	}
6551}
6552impl ToString for CodeScanningAlertClosedByUserAction {
6553	fn to_string(&self) -> String {
6554		match *self {
6555			Self::ClosedByUser => "closed_by_user".to_string(),
6556		}
6557	}
6558}
6559impl std::str::FromStr for CodeScanningAlertClosedByUserAction {
6560	type Err = &'static str;
6561
6562	fn from_str(value: &str) -> Result<Self, &'static str> {
6563		match value {
6564			"closed_by_user" => Ok(Self::ClosedByUser),
6565			_ => Err("invalid value"),
6566		}
6567	}
6568}
6569impl std::convert::TryFrom<&str> for CodeScanningAlertClosedByUserAction {
6570	type Error = &'static str;
6571
6572	fn try_from(value: &str) -> Result<Self, &'static str> {
6573		value.parse()
6574	}
6575}
6576impl std::convert::TryFrom<&String> for CodeScanningAlertClosedByUserAction {
6577	type Error = &'static str;
6578
6579	fn try_from(value: &String) -> Result<Self, &'static str> {
6580		value.parse()
6581	}
6582}
6583impl std::convert::TryFrom<String> for CodeScanningAlertClosedByUserAction {
6584	type Error = &'static str;
6585
6586	fn try_from(value: String) -> Result<Self, &'static str> {
6587		value.parse()
6588	}
6589}
6590/// The code scanning alert involved in the event.
6591#[derive(Clone, Debug, Deserialize, Serialize)]
6592#[serde(deny_unknown_fields)]
6593pub struct CodeScanningAlertClosedByUserAlert {
6594	/// The time that the alert was created in ISO 8601 format:
6595	/// `YYYY-MM-DDTHH:MM:SSZ.`
6596	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
6597	/// The time that the alert was dismissed in ISO 8601 format:
6598	/// `YYYY-MM-DDTHH:MM:SSZ`.
6599	pub dismissed_at:         chrono::DateTime<chrono::offset::Utc>,
6600	pub dismissed_by:         User,
6601	/// The reason for dismissing or closing the alert. Can be one of: `false
6602	/// positive`, `won't fix`, and `used in tests`.
6603	pub dismissed_reason:     Option<CodeScanningAlertClosedByUserAlertDismissedReason>,
6604	/// The GitHub URL of the alert resource.
6605	pub html_url:             String,
6606	pub instances:            Vec<AlertInstance>,
6607	#[serde(default, skip_serializing_if = "Option::is_none")]
6608	pub most_recent_instance: Option<AlertInstance>,
6609	/// The code scanning alert number.
6610	pub number:               i64,
6611	pub rule:                 CodeScanningAlertClosedByUserAlertRule,
6612	/// State of a code scanning alert.
6613	pub state:                CodeScanningAlertClosedByUserAlertState,
6614	pub tool:                 CodeScanningAlertClosedByUserAlertTool,
6615	/// The REST API URL of the alert resource.
6616	pub url:                  String,
6617}
6618impl From<&CodeScanningAlertClosedByUserAlert> for CodeScanningAlertClosedByUserAlert {
6619	fn from(value: &CodeScanningAlertClosedByUserAlert) -> Self {
6620		value.clone()
6621	}
6622}
6623/// The reason for dismissing or closing the alert. Can be one of: `false
6624/// positive`, `won't fix`, and `used in tests`.
6625#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6626pub enum CodeScanningAlertClosedByUserAlertDismissedReason {
6627	#[serde(rename = "false positive")]
6628	FalsePositive,
6629	#[serde(rename = "won't fix")]
6630	WontFix,
6631	#[serde(rename = "used in tests")]
6632	UsedInTests,
6633}
6634impl From<&CodeScanningAlertClosedByUserAlertDismissedReason>
6635	for CodeScanningAlertClosedByUserAlertDismissedReason
6636{
6637	fn from(value: &CodeScanningAlertClosedByUserAlertDismissedReason) -> Self {
6638		value.clone()
6639	}
6640}
6641impl ToString for CodeScanningAlertClosedByUserAlertDismissedReason {
6642	fn to_string(&self) -> String {
6643		match *self {
6644			Self::FalsePositive => "false positive".to_string(),
6645			Self::WontFix => "won't fix".to_string(),
6646			Self::UsedInTests => "used in tests".to_string(),
6647		}
6648	}
6649}
6650impl std::str::FromStr for CodeScanningAlertClosedByUserAlertDismissedReason {
6651	type Err = &'static str;
6652
6653	fn from_str(value: &str) -> Result<Self, &'static str> {
6654		match value {
6655			"false positive" => Ok(Self::FalsePositive),
6656			"won't fix" => Ok(Self::WontFix),
6657			"used in tests" => Ok(Self::UsedInTests),
6658			_ => Err("invalid value"),
6659		}
6660	}
6661}
6662impl std::convert::TryFrom<&str> for CodeScanningAlertClosedByUserAlertDismissedReason {
6663	type Error = &'static str;
6664
6665	fn try_from(value: &str) -> Result<Self, &'static str> {
6666		value.parse()
6667	}
6668}
6669impl std::convert::TryFrom<&String> for CodeScanningAlertClosedByUserAlertDismissedReason {
6670	type Error = &'static str;
6671
6672	fn try_from(value: &String) -> Result<Self, &'static str> {
6673		value.parse()
6674	}
6675}
6676impl std::convert::TryFrom<String> for CodeScanningAlertClosedByUserAlertDismissedReason {
6677	type Error = &'static str;
6678
6679	fn try_from(value: String) -> Result<Self, &'static str> {
6680		value.parse()
6681	}
6682}
6683#[derive(Clone, Debug, Deserialize, Serialize)]
6684#[serde(deny_unknown_fields)]
6685pub struct CodeScanningAlertClosedByUserAlertRule {
6686	/// A short description of the rule used to detect the alert.
6687	pub description:      String,
6688	#[serde(default, skip_serializing_if = "Option::is_none")]
6689	pub full_description: Option<String>,
6690	#[serde(default)]
6691	pub help:             (),
6692	/// A unique identifier for the rule used to detect the alert.
6693	pub id:               String,
6694	#[serde(default, skip_serializing_if = "Option::is_none")]
6695	pub name:             Option<String>,
6696	/// The severity of the alert.
6697	pub severity:         Option<CodeScanningAlertClosedByUserAlertRuleSeverity>,
6698	#[serde(default)]
6699	pub tags:             (),
6700}
6701impl From<&CodeScanningAlertClosedByUserAlertRule> for CodeScanningAlertClosedByUserAlertRule {
6702	fn from(value: &CodeScanningAlertClosedByUserAlertRule) -> Self {
6703		value.clone()
6704	}
6705}
6706/// The severity of the alert.
6707#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6708pub enum CodeScanningAlertClosedByUserAlertRuleSeverity {
6709	#[serde(rename = "none")]
6710	None,
6711	#[serde(rename = "note")]
6712	Note,
6713	#[serde(rename = "warning")]
6714	Warning,
6715	#[serde(rename = "error")]
6716	Error,
6717}
6718impl From<&CodeScanningAlertClosedByUserAlertRuleSeverity>
6719	for CodeScanningAlertClosedByUserAlertRuleSeverity
6720{
6721	fn from(value: &CodeScanningAlertClosedByUserAlertRuleSeverity) -> Self {
6722		value.clone()
6723	}
6724}
6725impl ToString for CodeScanningAlertClosedByUserAlertRuleSeverity {
6726	fn to_string(&self) -> String {
6727		match *self {
6728			Self::None => "none".to_string(),
6729			Self::Note => "note".to_string(),
6730			Self::Warning => "warning".to_string(),
6731			Self::Error => "error".to_string(),
6732		}
6733	}
6734}
6735impl std::str::FromStr for CodeScanningAlertClosedByUserAlertRuleSeverity {
6736	type Err = &'static str;
6737
6738	fn from_str(value: &str) -> Result<Self, &'static str> {
6739		match value {
6740			"none" => Ok(Self::None),
6741			"note" => Ok(Self::Note),
6742			"warning" => Ok(Self::Warning),
6743			"error" => Ok(Self::Error),
6744			_ => Err("invalid value"),
6745		}
6746	}
6747}
6748impl std::convert::TryFrom<&str> for CodeScanningAlertClosedByUserAlertRuleSeverity {
6749	type Error = &'static str;
6750
6751	fn try_from(value: &str) -> Result<Self, &'static str> {
6752		value.parse()
6753	}
6754}
6755impl std::convert::TryFrom<&String> for CodeScanningAlertClosedByUserAlertRuleSeverity {
6756	type Error = &'static str;
6757
6758	fn try_from(value: &String) -> Result<Self, &'static str> {
6759		value.parse()
6760	}
6761}
6762impl std::convert::TryFrom<String> for CodeScanningAlertClosedByUserAlertRuleSeverity {
6763	type Error = &'static str;
6764
6765	fn try_from(value: String) -> Result<Self, &'static str> {
6766		value.parse()
6767	}
6768}
6769/// State of a code scanning alert.
6770#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6771pub enum CodeScanningAlertClosedByUserAlertState {
6772	#[serde(rename = "dismissed")]
6773	Dismissed,
6774}
6775impl From<&CodeScanningAlertClosedByUserAlertState> for CodeScanningAlertClosedByUserAlertState {
6776	fn from(value: &CodeScanningAlertClosedByUserAlertState) -> Self {
6777		value.clone()
6778	}
6779}
6780impl ToString for CodeScanningAlertClosedByUserAlertState {
6781	fn to_string(&self) -> String {
6782		match *self {
6783			Self::Dismissed => "dismissed".to_string(),
6784		}
6785	}
6786}
6787impl std::str::FromStr for CodeScanningAlertClosedByUserAlertState {
6788	type Err = &'static str;
6789
6790	fn from_str(value: &str) -> Result<Self, &'static str> {
6791		match value {
6792			"dismissed" => Ok(Self::Dismissed),
6793			_ => Err("invalid value"),
6794		}
6795	}
6796}
6797impl std::convert::TryFrom<&str> for CodeScanningAlertClosedByUserAlertState {
6798	type Error = &'static str;
6799
6800	fn try_from(value: &str) -> Result<Self, &'static str> {
6801		value.parse()
6802	}
6803}
6804impl std::convert::TryFrom<&String> for CodeScanningAlertClosedByUserAlertState {
6805	type Error = &'static str;
6806
6807	fn try_from(value: &String) -> Result<Self, &'static str> {
6808		value.parse()
6809	}
6810}
6811impl std::convert::TryFrom<String> for CodeScanningAlertClosedByUserAlertState {
6812	type Error = &'static str;
6813
6814	fn try_from(value: String) -> Result<Self, &'static str> {
6815		value.parse()
6816	}
6817}
6818#[derive(Clone, Debug, Deserialize, Serialize)]
6819#[serde(deny_unknown_fields)]
6820pub struct CodeScanningAlertClosedByUserAlertTool {
6821	#[serde(default, skip_serializing_if = "Option::is_none")]
6822	pub guid:    Option<String>,
6823	/// The name of the tool used to generate the code scanning analysis alert.
6824	pub name:    String,
6825	/// The version of the tool used to detect the alert.
6826	pub version: Option<String>,
6827}
6828impl From<&CodeScanningAlertClosedByUserAlertTool> for CodeScanningAlertClosedByUserAlertTool {
6829	fn from(value: &CodeScanningAlertClosedByUserAlertTool) -> Self {
6830		value.clone()
6831	}
6832}
6833#[derive(Clone, Debug, Deserialize, Serialize)]
6834#[serde(deny_unknown_fields)]
6835pub struct CodeScanningAlertCreated {
6836	pub action:       CodeScanningAlertCreatedAction,
6837	pub alert:        CodeScanningAlertCreatedAlert,
6838	/// The commit SHA of the code scanning alert. When the action is
6839	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
6840	/// `sender` and this value will be empty.
6841	pub commit_oid:   String,
6842	#[serde(default, skip_serializing_if = "Option::is_none")]
6843	pub installation: Option<InstallationLite>,
6844	#[serde(default, skip_serializing_if = "Option::is_none")]
6845	pub organization: Option<Organization>,
6846	/// The Git reference of the code scanning alert. When the action is
6847	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
6848	/// `sender` and this value will be empty.
6849	#[serde(rename = "ref")]
6850	pub ref_:         String,
6851	pub repository:   Repository,
6852	pub sender:       GithubOrg,
6853}
6854impl From<&CodeScanningAlertCreated> for CodeScanningAlertCreated {
6855	fn from(value: &CodeScanningAlertCreated) -> Self {
6856		value.clone()
6857	}
6858}
6859#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6860pub enum CodeScanningAlertCreatedAction {
6861	#[serde(rename = "created")]
6862	Created,
6863}
6864impl From<&CodeScanningAlertCreatedAction> for CodeScanningAlertCreatedAction {
6865	fn from(value: &CodeScanningAlertCreatedAction) -> Self {
6866		value.clone()
6867	}
6868}
6869impl ToString for CodeScanningAlertCreatedAction {
6870	fn to_string(&self) -> String {
6871		match *self {
6872			Self::Created => "created".to_string(),
6873		}
6874	}
6875}
6876impl std::str::FromStr for CodeScanningAlertCreatedAction {
6877	type Err = &'static str;
6878
6879	fn from_str(value: &str) -> Result<Self, &'static str> {
6880		match value {
6881			"created" => Ok(Self::Created),
6882			_ => Err("invalid value"),
6883		}
6884	}
6885}
6886impl std::convert::TryFrom<&str> for CodeScanningAlertCreatedAction {
6887	type Error = &'static str;
6888
6889	fn try_from(value: &str) -> Result<Self, &'static str> {
6890		value.parse()
6891	}
6892}
6893impl std::convert::TryFrom<&String> for CodeScanningAlertCreatedAction {
6894	type Error = &'static str;
6895
6896	fn try_from(value: &String) -> Result<Self, &'static str> {
6897		value.parse()
6898	}
6899}
6900impl std::convert::TryFrom<String> for CodeScanningAlertCreatedAction {
6901	type Error = &'static str;
6902
6903	fn try_from(value: String) -> Result<Self, &'static str> {
6904		value.parse()
6905	}
6906}
6907/// The code scanning alert involved in the event.
6908#[derive(Clone, Debug, Deserialize, Serialize)]
6909#[serde(deny_unknown_fields)]
6910pub struct CodeScanningAlertCreatedAlert {
6911	/// The time that the alert was created in ISO 8601 format:
6912	/// `YYYY-MM-DDTHH:MM:SSZ.`
6913	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
6914	/// The time that the alert was dismissed in ISO 8601 format:
6915	/// `YYYY-MM-DDTHH:MM:SSZ`.
6916	pub dismissed_at:         (),
6917	pub dismissed_by:         (),
6918	/// The reason for dismissing or closing the alert. Can be one of: `false
6919	/// positive`, `won't fix`, and `used in tests`.
6920	pub dismissed_reason:     (),
6921	/// The GitHub URL of the alert resource.
6922	pub html_url:             String,
6923	pub instances:            Vec<AlertInstance>,
6924	#[serde(default, skip_serializing_if = "Option::is_none")]
6925	pub most_recent_instance: Option<AlertInstance>,
6926	/// The code scanning alert number.
6927	pub number:               i64,
6928	pub rule:                 CodeScanningAlertCreatedAlertRule,
6929	/// State of a code scanning alert.
6930	pub state:                CodeScanningAlertCreatedAlertState,
6931	pub tool:                 CodeScanningAlertCreatedAlertTool,
6932	/// The REST API URL of the alert resource.
6933	pub url:                  String,
6934}
6935impl From<&CodeScanningAlertCreatedAlert> for CodeScanningAlertCreatedAlert {
6936	fn from(value: &CodeScanningAlertCreatedAlert) -> Self {
6937		value.clone()
6938	}
6939}
6940#[derive(Clone, Debug, Deserialize, Serialize)]
6941#[serde(deny_unknown_fields)]
6942pub struct CodeScanningAlertCreatedAlertRule {
6943	/// A short description of the rule used to detect the alert.
6944	pub description:      String,
6945	#[serde(default, skip_serializing_if = "Option::is_none")]
6946	pub full_description: Option<String>,
6947	#[serde(default)]
6948	pub help:             (),
6949	/// A unique identifier for the rule used to detect the alert.
6950	pub id:               String,
6951	#[serde(default, skip_serializing_if = "Option::is_none")]
6952	pub name:             Option<String>,
6953	/// The severity of the alert.
6954	pub severity:         Option<CodeScanningAlertCreatedAlertRuleSeverity>,
6955	#[serde(default)]
6956	pub tags:             (),
6957}
6958impl From<&CodeScanningAlertCreatedAlertRule> for CodeScanningAlertCreatedAlertRule {
6959	fn from(value: &CodeScanningAlertCreatedAlertRule) -> Self {
6960		value.clone()
6961	}
6962}
6963/// The severity of the alert.
6964#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
6965pub enum CodeScanningAlertCreatedAlertRuleSeverity {
6966	#[serde(rename = "none")]
6967	None,
6968	#[serde(rename = "note")]
6969	Note,
6970	#[serde(rename = "warning")]
6971	Warning,
6972	#[serde(rename = "error")]
6973	Error,
6974}
6975impl From<&CodeScanningAlertCreatedAlertRuleSeverity>
6976	for CodeScanningAlertCreatedAlertRuleSeverity
6977{
6978	fn from(value: &CodeScanningAlertCreatedAlertRuleSeverity) -> Self {
6979		value.clone()
6980	}
6981}
6982impl ToString for CodeScanningAlertCreatedAlertRuleSeverity {
6983	fn to_string(&self) -> String {
6984		match *self {
6985			Self::None => "none".to_string(),
6986			Self::Note => "note".to_string(),
6987			Self::Warning => "warning".to_string(),
6988			Self::Error => "error".to_string(),
6989		}
6990	}
6991}
6992impl std::str::FromStr for CodeScanningAlertCreatedAlertRuleSeverity {
6993	type Err = &'static str;
6994
6995	fn from_str(value: &str) -> Result<Self, &'static str> {
6996		match value {
6997			"none" => Ok(Self::None),
6998			"note" => Ok(Self::Note),
6999			"warning" => Ok(Self::Warning),
7000			"error" => Ok(Self::Error),
7001			_ => Err("invalid value"),
7002		}
7003	}
7004}
7005impl std::convert::TryFrom<&str> for CodeScanningAlertCreatedAlertRuleSeverity {
7006	type Error = &'static str;
7007
7008	fn try_from(value: &str) -> Result<Self, &'static str> {
7009		value.parse()
7010	}
7011}
7012impl std::convert::TryFrom<&String> for CodeScanningAlertCreatedAlertRuleSeverity {
7013	type Error = &'static str;
7014
7015	fn try_from(value: &String) -> Result<Self, &'static str> {
7016		value.parse()
7017	}
7018}
7019impl std::convert::TryFrom<String> for CodeScanningAlertCreatedAlertRuleSeverity {
7020	type Error = &'static str;
7021
7022	fn try_from(value: String) -> Result<Self, &'static str> {
7023		value.parse()
7024	}
7025}
7026/// State of a code scanning alert.
7027#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7028pub enum CodeScanningAlertCreatedAlertState {
7029	#[serde(rename = "open")]
7030	Open,
7031	#[serde(rename = "dismissed")]
7032	Dismissed,
7033}
7034impl From<&CodeScanningAlertCreatedAlertState> for CodeScanningAlertCreatedAlertState {
7035	fn from(value: &CodeScanningAlertCreatedAlertState) -> Self {
7036		value.clone()
7037	}
7038}
7039impl ToString for CodeScanningAlertCreatedAlertState {
7040	fn to_string(&self) -> String {
7041		match *self {
7042			Self::Open => "open".to_string(),
7043			Self::Dismissed => "dismissed".to_string(),
7044		}
7045	}
7046}
7047impl std::str::FromStr for CodeScanningAlertCreatedAlertState {
7048	type Err = &'static str;
7049
7050	fn from_str(value: &str) -> Result<Self, &'static str> {
7051		match value {
7052			"open" => Ok(Self::Open),
7053			"dismissed" => Ok(Self::Dismissed),
7054			_ => Err("invalid value"),
7055		}
7056	}
7057}
7058impl std::convert::TryFrom<&str> for CodeScanningAlertCreatedAlertState {
7059	type Error = &'static str;
7060
7061	fn try_from(value: &str) -> Result<Self, &'static str> {
7062		value.parse()
7063	}
7064}
7065impl std::convert::TryFrom<&String> for CodeScanningAlertCreatedAlertState {
7066	type Error = &'static str;
7067
7068	fn try_from(value: &String) -> Result<Self, &'static str> {
7069		value.parse()
7070	}
7071}
7072impl std::convert::TryFrom<String> for CodeScanningAlertCreatedAlertState {
7073	type Error = &'static str;
7074
7075	fn try_from(value: String) -> Result<Self, &'static str> {
7076		value.parse()
7077	}
7078}
7079#[derive(Clone, Debug, Deserialize, Serialize)]
7080#[serde(deny_unknown_fields)]
7081pub struct CodeScanningAlertCreatedAlertTool {
7082	#[serde(default, skip_serializing_if = "Option::is_none")]
7083	pub guid:    Option<String>,
7084	/// The name of the tool used to generate the code scanning analysis alert.
7085	pub name:    String,
7086	/// The version of the tool used to detect the alert.
7087	pub version: Option<String>,
7088}
7089impl From<&CodeScanningAlertCreatedAlertTool> for CodeScanningAlertCreatedAlertTool {
7090	fn from(value: &CodeScanningAlertCreatedAlertTool) -> Self {
7091		value.clone()
7092	}
7093}
7094#[derive(Clone, Debug, Deserialize, Serialize)]
7095#[serde(untagged)]
7096pub enum CodeScanningAlertEvent {
7097	AppearedInBranch(CodeScanningAlertAppearedInBranch),
7098	ClosedByUser(CodeScanningAlertClosedByUser),
7099	Created(CodeScanningAlertCreated),
7100	Fixed(CodeScanningAlertFixed),
7101	Reopened(CodeScanningAlertReopened),
7102	ReopenedByUser(CodeScanningAlertReopenedByUser),
7103}
7104impl From<&CodeScanningAlertEvent> for CodeScanningAlertEvent {
7105	fn from(value: &CodeScanningAlertEvent) -> Self {
7106		value.clone()
7107	}
7108}
7109impl From<CodeScanningAlertAppearedInBranch> for CodeScanningAlertEvent {
7110	fn from(value: CodeScanningAlertAppearedInBranch) -> Self {
7111		Self::AppearedInBranch(value)
7112	}
7113}
7114impl From<CodeScanningAlertClosedByUser> for CodeScanningAlertEvent {
7115	fn from(value: CodeScanningAlertClosedByUser) -> Self {
7116		Self::ClosedByUser(value)
7117	}
7118}
7119impl From<CodeScanningAlertCreated> for CodeScanningAlertEvent {
7120	fn from(value: CodeScanningAlertCreated) -> Self {
7121		Self::Created(value)
7122	}
7123}
7124impl From<CodeScanningAlertFixed> for CodeScanningAlertEvent {
7125	fn from(value: CodeScanningAlertFixed) -> Self {
7126		Self::Fixed(value)
7127	}
7128}
7129impl From<CodeScanningAlertReopened> for CodeScanningAlertEvent {
7130	fn from(value: CodeScanningAlertReopened) -> Self {
7131		Self::Reopened(value)
7132	}
7133}
7134impl From<CodeScanningAlertReopenedByUser> for CodeScanningAlertEvent {
7135	fn from(value: CodeScanningAlertReopenedByUser) -> Self {
7136		Self::ReopenedByUser(value)
7137	}
7138}
7139#[derive(Clone, Debug, Deserialize, Serialize)]
7140#[serde(deny_unknown_fields)]
7141pub struct CodeScanningAlertFixed {
7142	pub action:       CodeScanningAlertFixedAction,
7143	pub alert:        CodeScanningAlertFixedAlert,
7144	/// The commit SHA of the code scanning alert. When the action is
7145	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
7146	/// `sender` and this value will be empty.
7147	pub commit_oid:   String,
7148	#[serde(default, skip_serializing_if = "Option::is_none")]
7149	pub installation: Option<InstallationLite>,
7150	#[serde(default, skip_serializing_if = "Option::is_none")]
7151	pub organization: Option<Organization>,
7152	/// The Git reference of the code scanning alert. When the action is
7153	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
7154	/// `sender` and this value will be empty.
7155	#[serde(rename = "ref")]
7156	pub ref_:         String,
7157	pub repository:   Repository,
7158	pub sender:       GithubOrg,
7159}
7160impl From<&CodeScanningAlertFixed> for CodeScanningAlertFixed {
7161	fn from(value: &CodeScanningAlertFixed) -> Self {
7162		value.clone()
7163	}
7164}
7165#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7166pub enum CodeScanningAlertFixedAction {
7167	#[serde(rename = "fixed")]
7168	Fixed,
7169}
7170impl From<&CodeScanningAlertFixedAction> for CodeScanningAlertFixedAction {
7171	fn from(value: &CodeScanningAlertFixedAction) -> Self {
7172		value.clone()
7173	}
7174}
7175impl ToString for CodeScanningAlertFixedAction {
7176	fn to_string(&self) -> String {
7177		match *self {
7178			Self::Fixed => "fixed".to_string(),
7179		}
7180	}
7181}
7182impl std::str::FromStr for CodeScanningAlertFixedAction {
7183	type Err = &'static str;
7184
7185	fn from_str(value: &str) -> Result<Self, &'static str> {
7186		match value {
7187			"fixed" => Ok(Self::Fixed),
7188			_ => Err("invalid value"),
7189		}
7190	}
7191}
7192impl std::convert::TryFrom<&str> for CodeScanningAlertFixedAction {
7193	type Error = &'static str;
7194
7195	fn try_from(value: &str) -> Result<Self, &'static str> {
7196		value.parse()
7197	}
7198}
7199impl std::convert::TryFrom<&String> for CodeScanningAlertFixedAction {
7200	type Error = &'static str;
7201
7202	fn try_from(value: &String) -> Result<Self, &'static str> {
7203		value.parse()
7204	}
7205}
7206impl std::convert::TryFrom<String> for CodeScanningAlertFixedAction {
7207	type Error = &'static str;
7208
7209	fn try_from(value: String) -> Result<Self, &'static str> {
7210		value.parse()
7211	}
7212}
7213/// The code scanning alert involved in the event.
7214#[derive(Clone, Debug, Deserialize, Serialize)]
7215#[serde(deny_unknown_fields)]
7216pub struct CodeScanningAlertFixedAlert {
7217	/// The time that the alert was created in ISO 8601 format:
7218	/// `YYYY-MM-DDTHH:MM:SSZ.`
7219	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
7220	/// The time that the alert was dismissed in ISO 8601 format:
7221	/// `YYYY-MM-DDTHH:MM:SSZ`.
7222	pub dismissed_at:         Option<chrono::DateTime<chrono::offset::Utc>>,
7223	pub dismissed_by:         Option<User>,
7224	/// The reason for dismissing or closing the alert. Can be one of: `false
7225	/// positive`, `won't fix`, and `used in tests`.
7226	pub dismissed_reason:     Option<CodeScanningAlertFixedAlertDismissedReason>,
7227	/// The GitHub URL of the alert resource.
7228	pub html_url:             String,
7229	pub instances:            Vec<AlertInstance>,
7230	#[serde(default, skip_serializing_if = "Option::is_none")]
7231	pub instances_url:        Option<String>,
7232	#[serde(default, skip_serializing_if = "Option::is_none")]
7233	pub most_recent_instance: Option<AlertInstance>,
7234	/// The code scanning alert number.
7235	pub number:               i64,
7236	pub rule:                 CodeScanningAlertFixedAlertRule,
7237	/// State of a code scanning alert.
7238	pub state:                CodeScanningAlertFixedAlertState,
7239	pub tool:                 CodeScanningAlertFixedAlertTool,
7240	/// The REST API URL of the alert resource.
7241	pub url:                  String,
7242}
7243impl From<&CodeScanningAlertFixedAlert> for CodeScanningAlertFixedAlert {
7244	fn from(value: &CodeScanningAlertFixedAlert) -> Self {
7245		value.clone()
7246	}
7247}
7248/// The reason for dismissing or closing the alert. Can be one of: `false
7249/// positive`, `won't fix`, and `used in tests`.
7250#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7251pub enum CodeScanningAlertFixedAlertDismissedReason {
7252	#[serde(rename = "false positive")]
7253	FalsePositive,
7254	#[serde(rename = "won't fix")]
7255	WontFix,
7256	#[serde(rename = "used in tests")]
7257	UsedInTests,
7258}
7259impl From<&CodeScanningAlertFixedAlertDismissedReason>
7260	for CodeScanningAlertFixedAlertDismissedReason
7261{
7262	fn from(value: &CodeScanningAlertFixedAlertDismissedReason) -> Self {
7263		value.clone()
7264	}
7265}
7266impl ToString for CodeScanningAlertFixedAlertDismissedReason {
7267	fn to_string(&self) -> String {
7268		match *self {
7269			Self::FalsePositive => "false positive".to_string(),
7270			Self::WontFix => "won't fix".to_string(),
7271			Self::UsedInTests => "used in tests".to_string(),
7272		}
7273	}
7274}
7275impl std::str::FromStr for CodeScanningAlertFixedAlertDismissedReason {
7276	type Err = &'static str;
7277
7278	fn from_str(value: &str) -> Result<Self, &'static str> {
7279		match value {
7280			"false positive" => Ok(Self::FalsePositive),
7281			"won't fix" => Ok(Self::WontFix),
7282			"used in tests" => Ok(Self::UsedInTests),
7283			_ => Err("invalid value"),
7284		}
7285	}
7286}
7287impl std::convert::TryFrom<&str> for CodeScanningAlertFixedAlertDismissedReason {
7288	type Error = &'static str;
7289
7290	fn try_from(value: &str) -> Result<Self, &'static str> {
7291		value.parse()
7292	}
7293}
7294impl std::convert::TryFrom<&String> for CodeScanningAlertFixedAlertDismissedReason {
7295	type Error = &'static str;
7296
7297	fn try_from(value: &String) -> Result<Self, &'static str> {
7298		value.parse()
7299	}
7300}
7301impl std::convert::TryFrom<String> for CodeScanningAlertFixedAlertDismissedReason {
7302	type Error = &'static str;
7303
7304	fn try_from(value: String) -> Result<Self, &'static str> {
7305		value.parse()
7306	}
7307}
7308#[derive(Clone, Debug, Deserialize, Serialize)]
7309#[serde(deny_unknown_fields)]
7310pub struct CodeScanningAlertFixedAlertRule {
7311	/// A short description of the rule used to detect the alert.
7312	pub description:      String,
7313	#[serde(default, skip_serializing_if = "Option::is_none")]
7314	pub full_description: Option<String>,
7315	#[serde(default)]
7316	pub help:             (),
7317	/// A unique identifier for the rule used to detect the alert.
7318	pub id:               String,
7319	#[serde(default, skip_serializing_if = "Option::is_none")]
7320	pub name:             Option<String>,
7321	/// The severity of the alert.
7322	pub severity:         Option<CodeScanningAlertFixedAlertRuleSeverity>,
7323	#[serde(default)]
7324	pub tags:             (),
7325}
7326impl From<&CodeScanningAlertFixedAlertRule> for CodeScanningAlertFixedAlertRule {
7327	fn from(value: &CodeScanningAlertFixedAlertRule) -> Self {
7328		value.clone()
7329	}
7330}
7331/// The severity of the alert.
7332#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7333pub enum CodeScanningAlertFixedAlertRuleSeverity {
7334	#[serde(rename = "none")]
7335	None,
7336	#[serde(rename = "note")]
7337	Note,
7338	#[serde(rename = "warning")]
7339	Warning,
7340	#[serde(rename = "error")]
7341	Error,
7342}
7343impl From<&CodeScanningAlertFixedAlertRuleSeverity> for CodeScanningAlertFixedAlertRuleSeverity {
7344	fn from(value: &CodeScanningAlertFixedAlertRuleSeverity) -> Self {
7345		value.clone()
7346	}
7347}
7348impl ToString for CodeScanningAlertFixedAlertRuleSeverity {
7349	fn to_string(&self) -> String {
7350		match *self {
7351			Self::None => "none".to_string(),
7352			Self::Note => "note".to_string(),
7353			Self::Warning => "warning".to_string(),
7354			Self::Error => "error".to_string(),
7355		}
7356	}
7357}
7358impl std::str::FromStr for CodeScanningAlertFixedAlertRuleSeverity {
7359	type Err = &'static str;
7360
7361	fn from_str(value: &str) -> Result<Self, &'static str> {
7362		match value {
7363			"none" => Ok(Self::None),
7364			"note" => Ok(Self::Note),
7365			"warning" => Ok(Self::Warning),
7366			"error" => Ok(Self::Error),
7367			_ => Err("invalid value"),
7368		}
7369	}
7370}
7371impl std::convert::TryFrom<&str> for CodeScanningAlertFixedAlertRuleSeverity {
7372	type Error = &'static str;
7373
7374	fn try_from(value: &str) -> Result<Self, &'static str> {
7375		value.parse()
7376	}
7377}
7378impl std::convert::TryFrom<&String> for CodeScanningAlertFixedAlertRuleSeverity {
7379	type Error = &'static str;
7380
7381	fn try_from(value: &String) -> Result<Self, &'static str> {
7382		value.parse()
7383	}
7384}
7385impl std::convert::TryFrom<String> for CodeScanningAlertFixedAlertRuleSeverity {
7386	type Error = &'static str;
7387
7388	fn try_from(value: String) -> Result<Self, &'static str> {
7389		value.parse()
7390	}
7391}
7392/// State of a code scanning alert.
7393#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7394pub enum CodeScanningAlertFixedAlertState {
7395	#[serde(rename = "fixed")]
7396	Fixed,
7397}
7398impl From<&CodeScanningAlertFixedAlertState> for CodeScanningAlertFixedAlertState {
7399	fn from(value: &CodeScanningAlertFixedAlertState) -> Self {
7400		value.clone()
7401	}
7402}
7403impl ToString for CodeScanningAlertFixedAlertState {
7404	fn to_string(&self) -> String {
7405		match *self {
7406			Self::Fixed => "fixed".to_string(),
7407		}
7408	}
7409}
7410impl std::str::FromStr for CodeScanningAlertFixedAlertState {
7411	type Err = &'static str;
7412
7413	fn from_str(value: &str) -> Result<Self, &'static str> {
7414		match value {
7415			"fixed" => Ok(Self::Fixed),
7416			_ => Err("invalid value"),
7417		}
7418	}
7419}
7420impl std::convert::TryFrom<&str> for CodeScanningAlertFixedAlertState {
7421	type Error = &'static str;
7422
7423	fn try_from(value: &str) -> Result<Self, &'static str> {
7424		value.parse()
7425	}
7426}
7427impl std::convert::TryFrom<&String> for CodeScanningAlertFixedAlertState {
7428	type Error = &'static str;
7429
7430	fn try_from(value: &String) -> Result<Self, &'static str> {
7431		value.parse()
7432	}
7433}
7434impl std::convert::TryFrom<String> for CodeScanningAlertFixedAlertState {
7435	type Error = &'static str;
7436
7437	fn try_from(value: String) -> Result<Self, &'static str> {
7438		value.parse()
7439	}
7440}
7441#[derive(Clone, Debug, Deserialize, Serialize)]
7442#[serde(deny_unknown_fields)]
7443pub struct CodeScanningAlertFixedAlertTool {
7444	#[serde(default, skip_serializing_if = "Option::is_none")]
7445	pub guid:    Option<String>,
7446	/// The name of the tool used to generate the code scanning analysis alert.
7447	pub name:    String,
7448	/// The version of the tool used to detect the alert.
7449	pub version: Option<String>,
7450}
7451impl From<&CodeScanningAlertFixedAlertTool> for CodeScanningAlertFixedAlertTool {
7452	fn from(value: &CodeScanningAlertFixedAlertTool) -> Self {
7453		value.clone()
7454	}
7455}
7456#[derive(Clone, Debug, Deserialize, Serialize)]
7457#[serde(deny_unknown_fields)]
7458pub struct CodeScanningAlertReopened {
7459	pub action:       CodeScanningAlertReopenedAction,
7460	pub alert:        CodeScanningAlertReopenedAlert,
7461	/// The commit SHA of the code scanning alert. When the action is
7462	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
7463	/// `sender` and this value will be empty.
7464	pub commit_oid:   String,
7465	#[serde(default, skip_serializing_if = "Option::is_none")]
7466	pub installation: Option<InstallationLite>,
7467	#[serde(default, skip_serializing_if = "Option::is_none")]
7468	pub organization: Option<Organization>,
7469	/// The Git reference of the code scanning alert. When the action is
7470	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
7471	/// `sender` and this value will be empty.
7472	#[serde(rename = "ref")]
7473	pub ref_:         String,
7474	pub repository:   Repository,
7475	pub sender:       GithubOrg,
7476}
7477impl From<&CodeScanningAlertReopened> for CodeScanningAlertReopened {
7478	fn from(value: &CodeScanningAlertReopened) -> Self {
7479		value.clone()
7480	}
7481}
7482#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7483pub enum CodeScanningAlertReopenedAction {
7484	#[serde(rename = "reopened")]
7485	Reopened,
7486}
7487impl From<&CodeScanningAlertReopenedAction> for CodeScanningAlertReopenedAction {
7488	fn from(value: &CodeScanningAlertReopenedAction) -> Self {
7489		value.clone()
7490	}
7491}
7492impl ToString for CodeScanningAlertReopenedAction {
7493	fn to_string(&self) -> String {
7494		match *self {
7495			Self::Reopened => "reopened".to_string(),
7496		}
7497	}
7498}
7499impl std::str::FromStr for CodeScanningAlertReopenedAction {
7500	type Err = &'static str;
7501
7502	fn from_str(value: &str) -> Result<Self, &'static str> {
7503		match value {
7504			"reopened" => Ok(Self::Reopened),
7505			_ => Err("invalid value"),
7506		}
7507	}
7508}
7509impl std::convert::TryFrom<&str> for CodeScanningAlertReopenedAction {
7510	type Error = &'static str;
7511
7512	fn try_from(value: &str) -> Result<Self, &'static str> {
7513		value.parse()
7514	}
7515}
7516impl std::convert::TryFrom<&String> for CodeScanningAlertReopenedAction {
7517	type Error = &'static str;
7518
7519	fn try_from(value: &String) -> Result<Self, &'static str> {
7520		value.parse()
7521	}
7522}
7523impl std::convert::TryFrom<String> for CodeScanningAlertReopenedAction {
7524	type Error = &'static str;
7525
7526	fn try_from(value: String) -> Result<Self, &'static str> {
7527		value.parse()
7528	}
7529}
7530/// The code scanning alert involved in the event.
7531#[derive(Clone, Debug, Deserialize, Serialize)]
7532#[serde(deny_unknown_fields)]
7533pub struct CodeScanningAlertReopenedAlert {
7534	/// The time that the alert was created in ISO 8601 format:
7535	/// `YYYY-MM-DDTHH:MM:SSZ.`
7536	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
7537	/// The time that the alert was dismissed in ISO 8601 format:
7538	/// `YYYY-MM-DDTHH:MM:SSZ`.
7539	pub dismissed_at:         (),
7540	pub dismissed_by:         (),
7541	/// The reason for dismissing or closing the alert. Can be one of: `false
7542	/// positive`, `won't fix`, and `used in tests`.
7543	pub dismissed_reason:     (),
7544	/// The GitHub URL of the alert resource.
7545	pub html_url:             String,
7546	pub instances:            Vec<AlertInstance>,
7547	#[serde(default, skip_serializing_if = "Option::is_none")]
7548	pub most_recent_instance: Option<AlertInstance>,
7549	/// The code scanning alert number.
7550	pub number:               i64,
7551	pub rule:                 CodeScanningAlertReopenedAlertRule,
7552	/// State of a code scanning alert.
7553	pub state:                CodeScanningAlertReopenedAlertState,
7554	pub tool:                 CodeScanningAlertReopenedAlertTool,
7555	/// The REST API URL of the alert resource.
7556	pub url:                  String,
7557}
7558impl From<&CodeScanningAlertReopenedAlert> for CodeScanningAlertReopenedAlert {
7559	fn from(value: &CodeScanningAlertReopenedAlert) -> Self {
7560		value.clone()
7561	}
7562}
7563#[derive(Clone, Debug, Deserialize, Serialize)]
7564#[serde(deny_unknown_fields)]
7565pub struct CodeScanningAlertReopenedAlertRule {
7566	/// A short description of the rule used to detect the alert.
7567	pub description:      String,
7568	#[serde(default, skip_serializing_if = "Option::is_none")]
7569	pub full_description: Option<String>,
7570	#[serde(default)]
7571	pub help:             (),
7572	/// A unique identifier for the rule used to detect the alert.
7573	pub id:               String,
7574	#[serde(default, skip_serializing_if = "Option::is_none")]
7575	pub name:             Option<String>,
7576	/// The severity of the alert.
7577	pub severity:         Option<CodeScanningAlertReopenedAlertRuleSeverity>,
7578	#[serde(default)]
7579	pub tags:             (),
7580}
7581impl From<&CodeScanningAlertReopenedAlertRule> for CodeScanningAlertReopenedAlertRule {
7582	fn from(value: &CodeScanningAlertReopenedAlertRule) -> Self {
7583		value.clone()
7584	}
7585}
7586/// The severity of the alert.
7587#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7588pub enum CodeScanningAlertReopenedAlertRuleSeverity {
7589	#[serde(rename = "none")]
7590	None,
7591	#[serde(rename = "note")]
7592	Note,
7593	#[serde(rename = "warning")]
7594	Warning,
7595	#[serde(rename = "error")]
7596	Error,
7597}
7598impl From<&CodeScanningAlertReopenedAlertRuleSeverity>
7599	for CodeScanningAlertReopenedAlertRuleSeverity
7600{
7601	fn from(value: &CodeScanningAlertReopenedAlertRuleSeverity) -> Self {
7602		value.clone()
7603	}
7604}
7605impl ToString for CodeScanningAlertReopenedAlertRuleSeverity {
7606	fn to_string(&self) -> String {
7607		match *self {
7608			Self::None => "none".to_string(),
7609			Self::Note => "note".to_string(),
7610			Self::Warning => "warning".to_string(),
7611			Self::Error => "error".to_string(),
7612		}
7613	}
7614}
7615impl std::str::FromStr for CodeScanningAlertReopenedAlertRuleSeverity {
7616	type Err = &'static str;
7617
7618	fn from_str(value: &str) -> Result<Self, &'static str> {
7619		match value {
7620			"none" => Ok(Self::None),
7621			"note" => Ok(Self::Note),
7622			"warning" => Ok(Self::Warning),
7623			"error" => Ok(Self::Error),
7624			_ => Err("invalid value"),
7625		}
7626	}
7627}
7628impl std::convert::TryFrom<&str> for CodeScanningAlertReopenedAlertRuleSeverity {
7629	type Error = &'static str;
7630
7631	fn try_from(value: &str) -> Result<Self, &'static str> {
7632		value.parse()
7633	}
7634}
7635impl std::convert::TryFrom<&String> for CodeScanningAlertReopenedAlertRuleSeverity {
7636	type Error = &'static str;
7637
7638	fn try_from(value: &String) -> Result<Self, &'static str> {
7639		value.parse()
7640	}
7641}
7642impl std::convert::TryFrom<String> for CodeScanningAlertReopenedAlertRuleSeverity {
7643	type Error = &'static str;
7644
7645	fn try_from(value: String) -> Result<Self, &'static str> {
7646		value.parse()
7647	}
7648}
7649/// State of a code scanning alert.
7650#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7651pub enum CodeScanningAlertReopenedAlertState {
7652	#[serde(rename = "open")]
7653	Open,
7654	#[serde(rename = "dismissed")]
7655	Dismissed,
7656	#[serde(rename = "fixed")]
7657	Fixed,
7658}
7659impl From<&CodeScanningAlertReopenedAlertState> for CodeScanningAlertReopenedAlertState {
7660	fn from(value: &CodeScanningAlertReopenedAlertState) -> Self {
7661		value.clone()
7662	}
7663}
7664impl ToString for CodeScanningAlertReopenedAlertState {
7665	fn to_string(&self) -> String {
7666		match *self {
7667			Self::Open => "open".to_string(),
7668			Self::Dismissed => "dismissed".to_string(),
7669			Self::Fixed => "fixed".to_string(),
7670		}
7671	}
7672}
7673impl std::str::FromStr for CodeScanningAlertReopenedAlertState {
7674	type Err = &'static str;
7675
7676	fn from_str(value: &str) -> Result<Self, &'static str> {
7677		match value {
7678			"open" => Ok(Self::Open),
7679			"dismissed" => Ok(Self::Dismissed),
7680			"fixed" => Ok(Self::Fixed),
7681			_ => Err("invalid value"),
7682		}
7683	}
7684}
7685impl std::convert::TryFrom<&str> for CodeScanningAlertReopenedAlertState {
7686	type Error = &'static str;
7687
7688	fn try_from(value: &str) -> Result<Self, &'static str> {
7689		value.parse()
7690	}
7691}
7692impl std::convert::TryFrom<&String> for CodeScanningAlertReopenedAlertState {
7693	type Error = &'static str;
7694
7695	fn try_from(value: &String) -> Result<Self, &'static str> {
7696		value.parse()
7697	}
7698}
7699impl std::convert::TryFrom<String> for CodeScanningAlertReopenedAlertState {
7700	type Error = &'static str;
7701
7702	fn try_from(value: String) -> Result<Self, &'static str> {
7703		value.parse()
7704	}
7705}
7706#[derive(Clone, Debug, Deserialize, Serialize)]
7707#[serde(deny_unknown_fields)]
7708pub struct CodeScanningAlertReopenedAlertTool {
7709	#[serde(default, skip_serializing_if = "Option::is_none")]
7710	pub guid:    Option<String>,
7711	/// The name of the tool used to generate the code scanning analysis alert.
7712	pub name:    String,
7713	/// The version of the tool used to detect the alert.
7714	pub version: Option<String>,
7715}
7716impl From<&CodeScanningAlertReopenedAlertTool> for CodeScanningAlertReopenedAlertTool {
7717	fn from(value: &CodeScanningAlertReopenedAlertTool) -> Self {
7718		value.clone()
7719	}
7720}
7721#[derive(Clone, Debug, Deserialize, Serialize)]
7722#[serde(deny_unknown_fields)]
7723pub struct CodeScanningAlertReopenedByUser {
7724	pub action:       CodeScanningAlertReopenedByUserAction,
7725	pub alert:        CodeScanningAlertReopenedByUserAlert,
7726	/// The commit SHA of the code scanning alert. When the action is
7727	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
7728	/// `sender` and this value will be empty.
7729	pub commit_oid:   String,
7730	#[serde(default, skip_serializing_if = "Option::is_none")]
7731	pub installation: Option<InstallationLite>,
7732	#[serde(default, skip_serializing_if = "Option::is_none")]
7733	pub organization: Option<Organization>,
7734	/// The Git reference of the code scanning alert. When the action is
7735	/// `reopened_by_user` or `closed_by_user`, the event was triggered by the
7736	/// `sender` and this value will be empty.
7737	#[serde(rename = "ref")]
7738	pub ref_:         String,
7739	pub repository:   Repository,
7740	pub sender:       User,
7741}
7742impl From<&CodeScanningAlertReopenedByUser> for CodeScanningAlertReopenedByUser {
7743	fn from(value: &CodeScanningAlertReopenedByUser) -> Self {
7744		value.clone()
7745	}
7746}
7747#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7748pub enum CodeScanningAlertReopenedByUserAction {
7749	#[serde(rename = "reopened_by_user")]
7750	ReopenedByUser,
7751}
7752impl From<&CodeScanningAlertReopenedByUserAction> for CodeScanningAlertReopenedByUserAction {
7753	fn from(value: &CodeScanningAlertReopenedByUserAction) -> Self {
7754		value.clone()
7755	}
7756}
7757impl ToString for CodeScanningAlertReopenedByUserAction {
7758	fn to_string(&self) -> String {
7759		match *self {
7760			Self::ReopenedByUser => "reopened_by_user".to_string(),
7761		}
7762	}
7763}
7764impl std::str::FromStr for CodeScanningAlertReopenedByUserAction {
7765	type Err = &'static str;
7766
7767	fn from_str(value: &str) -> Result<Self, &'static str> {
7768		match value {
7769			"reopened_by_user" => Ok(Self::ReopenedByUser),
7770			_ => Err("invalid value"),
7771		}
7772	}
7773}
7774impl std::convert::TryFrom<&str> for CodeScanningAlertReopenedByUserAction {
7775	type Error = &'static str;
7776
7777	fn try_from(value: &str) -> Result<Self, &'static str> {
7778		value.parse()
7779	}
7780}
7781impl std::convert::TryFrom<&String> for CodeScanningAlertReopenedByUserAction {
7782	type Error = &'static str;
7783
7784	fn try_from(value: &String) -> Result<Self, &'static str> {
7785		value.parse()
7786	}
7787}
7788impl std::convert::TryFrom<String> for CodeScanningAlertReopenedByUserAction {
7789	type Error = &'static str;
7790
7791	fn try_from(value: String) -> Result<Self, &'static str> {
7792		value.parse()
7793	}
7794}
7795/// The code scanning alert involved in the event.
7796#[derive(Clone, Debug, Deserialize, Serialize)]
7797#[serde(deny_unknown_fields)]
7798pub struct CodeScanningAlertReopenedByUserAlert {
7799	/// The time that the alert was created in ISO 8601 format:
7800	/// `YYYY-MM-DDTHH:MM:SSZ.`
7801	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
7802	/// The time that the alert was dismissed in ISO 8601 format:
7803	/// `YYYY-MM-DDTHH:MM:SSZ`.
7804	pub dismissed_at:         (),
7805	pub dismissed_by:         (),
7806	/// The reason for dismissing or closing the alert. Can be one of: `false
7807	/// positive`, `won't fix`, and `used in tests`.
7808	pub dismissed_reason:     (),
7809	/// The GitHub URL of the alert resource.
7810	pub html_url:             String,
7811	pub instances:            Vec<AlertInstance>,
7812	#[serde(default, skip_serializing_if = "Option::is_none")]
7813	pub most_recent_instance: Option<AlertInstance>,
7814	/// The code scanning alert number.
7815	pub number:               i64,
7816	pub rule:                 CodeScanningAlertReopenedByUserAlertRule,
7817	/// State of a code scanning alert.
7818	pub state:                CodeScanningAlertReopenedByUserAlertState,
7819	pub tool:                 CodeScanningAlertReopenedByUserAlertTool,
7820	/// The REST API URL of the alert resource.
7821	pub url:                  String,
7822}
7823impl From<&CodeScanningAlertReopenedByUserAlert> for CodeScanningAlertReopenedByUserAlert {
7824	fn from(value: &CodeScanningAlertReopenedByUserAlert) -> Self {
7825		value.clone()
7826	}
7827}
7828#[derive(Clone, Debug, Deserialize, Serialize)]
7829#[serde(deny_unknown_fields)]
7830pub struct CodeScanningAlertReopenedByUserAlertRule {
7831	/// A short description of the rule used to detect the alert.
7832	pub description: String,
7833	/// A unique identifier for the rule used to detect the alert.
7834	pub id:          String,
7835	/// The severity of the alert.
7836	pub severity:    Option<CodeScanningAlertReopenedByUserAlertRuleSeverity>,
7837}
7838impl From<&CodeScanningAlertReopenedByUserAlertRule> for CodeScanningAlertReopenedByUserAlertRule {
7839	fn from(value: &CodeScanningAlertReopenedByUserAlertRule) -> Self {
7840		value.clone()
7841	}
7842}
7843/// The severity of the alert.
7844#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7845pub enum CodeScanningAlertReopenedByUserAlertRuleSeverity {
7846	#[serde(rename = "none")]
7847	None,
7848	#[serde(rename = "note")]
7849	Note,
7850	#[serde(rename = "warning")]
7851	Warning,
7852	#[serde(rename = "error")]
7853	Error,
7854}
7855impl From<&CodeScanningAlertReopenedByUserAlertRuleSeverity>
7856	for CodeScanningAlertReopenedByUserAlertRuleSeverity
7857{
7858	fn from(value: &CodeScanningAlertReopenedByUserAlertRuleSeverity) -> Self {
7859		value.clone()
7860	}
7861}
7862impl ToString for CodeScanningAlertReopenedByUserAlertRuleSeverity {
7863	fn to_string(&self) -> String {
7864		match *self {
7865			Self::None => "none".to_string(),
7866			Self::Note => "note".to_string(),
7867			Self::Warning => "warning".to_string(),
7868			Self::Error => "error".to_string(),
7869		}
7870	}
7871}
7872impl std::str::FromStr for CodeScanningAlertReopenedByUserAlertRuleSeverity {
7873	type Err = &'static str;
7874
7875	fn from_str(value: &str) -> Result<Self, &'static str> {
7876		match value {
7877			"none" => Ok(Self::None),
7878			"note" => Ok(Self::Note),
7879			"warning" => Ok(Self::Warning),
7880			"error" => Ok(Self::Error),
7881			_ => Err("invalid value"),
7882		}
7883	}
7884}
7885impl std::convert::TryFrom<&str> for CodeScanningAlertReopenedByUserAlertRuleSeverity {
7886	type Error = &'static str;
7887
7888	fn try_from(value: &str) -> Result<Self, &'static str> {
7889		value.parse()
7890	}
7891}
7892impl std::convert::TryFrom<&String> for CodeScanningAlertReopenedByUserAlertRuleSeverity {
7893	type Error = &'static str;
7894
7895	fn try_from(value: &String) -> Result<Self, &'static str> {
7896		value.parse()
7897	}
7898}
7899impl std::convert::TryFrom<String> for CodeScanningAlertReopenedByUserAlertRuleSeverity {
7900	type Error = &'static str;
7901
7902	fn try_from(value: String) -> Result<Self, &'static str> {
7903		value.parse()
7904	}
7905}
7906/// State of a code scanning alert.
7907#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
7908pub enum CodeScanningAlertReopenedByUserAlertState {
7909	#[serde(rename = "open")]
7910	Open,
7911}
7912impl From<&CodeScanningAlertReopenedByUserAlertState>
7913	for CodeScanningAlertReopenedByUserAlertState
7914{
7915	fn from(value: &CodeScanningAlertReopenedByUserAlertState) -> Self {
7916		value.clone()
7917	}
7918}
7919impl ToString for CodeScanningAlertReopenedByUserAlertState {
7920	fn to_string(&self) -> String {
7921		match *self {
7922			Self::Open => "open".to_string(),
7923		}
7924	}
7925}
7926impl std::str::FromStr for CodeScanningAlertReopenedByUserAlertState {
7927	type Err = &'static str;
7928
7929	fn from_str(value: &str) -> Result<Self, &'static str> {
7930		match value {
7931			"open" => Ok(Self::Open),
7932			_ => Err("invalid value"),
7933		}
7934	}
7935}
7936impl std::convert::TryFrom<&str> for CodeScanningAlertReopenedByUserAlertState {
7937	type Error = &'static str;
7938
7939	fn try_from(value: &str) -> Result<Self, &'static str> {
7940		value.parse()
7941	}
7942}
7943impl std::convert::TryFrom<&String> for CodeScanningAlertReopenedByUserAlertState {
7944	type Error = &'static str;
7945
7946	fn try_from(value: &String) -> Result<Self, &'static str> {
7947		value.parse()
7948	}
7949}
7950impl std::convert::TryFrom<String> for CodeScanningAlertReopenedByUserAlertState {
7951	type Error = &'static str;
7952
7953	fn try_from(value: String) -> Result<Self, &'static str> {
7954		value.parse()
7955	}
7956}
7957#[derive(Clone, Debug, Deserialize, Serialize)]
7958#[serde(deny_unknown_fields)]
7959pub struct CodeScanningAlertReopenedByUserAlertTool {
7960	/// The name of the tool used to generate the code scanning analysis alert.
7961	pub name:    String,
7962	/// The version of the tool used to detect the alert.
7963	pub version: Option<String>,
7964}
7965impl From<&CodeScanningAlertReopenedByUserAlertTool> for CodeScanningAlertReopenedByUserAlertTool {
7966	fn from(value: &CodeScanningAlertReopenedByUserAlertTool) -> Self {
7967		value.clone()
7968	}
7969}
7970#[derive(Clone, Debug, Deserialize, Serialize)]
7971#[serde(deny_unknown_fields)]
7972pub struct Commit {
7973	/// An array of files added in the commit. For extremely large commits where
7974	/// GitHub is unable to calculate this list in a timely manner, this may be
7975	/// empty even if files were added.
7976	pub added:     Vec<String>,
7977	pub author:    Committer,
7978	pub committer: Committer,
7979	/// Whether this commit is distinct from any that have been pushed before.
7980	pub distinct:  bool,
7981	pub id:        String,
7982	/// The commit message.
7983	pub message:   String,
7984	/// An array of files modified by the commit. For extremely large commits
7985	/// where GitHub is unable to calculate this list in a timely manner, this
7986	/// may be empty even if files were modified.
7987	pub modified:  Vec<String>,
7988	/// An array of files removed in the commit. For extremely large commits
7989	/// where GitHub is unable to calculate this list in a timely manner, this
7990	/// may be empty even if files were removed.
7991	pub removed:   Vec<String>,
7992	/// The ISO 8601 timestamp of the commit.
7993	pub timestamp: chrono::DateTime<chrono::offset::Utc>,
7994	pub tree_id:   String,
7995	/// URL that points to the commit API resource.
7996	pub url:       String,
7997}
7998impl From<&Commit> for Commit {
7999	fn from(value: &Commit) -> Self {
8000		value.clone()
8001	}
8002}
8003/// A commit comment is created. The type of activity is specified in the
8004/// `action` property.
8005#[derive(Clone, Debug, Deserialize, Serialize)]
8006#[serde(deny_unknown_fields)]
8007pub struct CommitCommentCreated {
8008	/// The action performed. Can be `created`.
8009	pub action:       CommitCommentCreatedAction,
8010	pub comment:      CommitCommentCreatedComment,
8011	#[serde(default, skip_serializing_if = "Option::is_none")]
8012	pub installation: Option<InstallationLite>,
8013	#[serde(default, skip_serializing_if = "Option::is_none")]
8014	pub organization: Option<Organization>,
8015	pub repository:   Repository,
8016	pub sender:       User,
8017}
8018impl From<&CommitCommentCreated> for CommitCommentCreated {
8019	fn from(value: &CommitCommentCreated) -> Self {
8020		value.clone()
8021	}
8022}
8023/// The action performed. Can be `created`.
8024#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8025pub enum CommitCommentCreatedAction {
8026	#[serde(rename = "created")]
8027	Created,
8028}
8029impl From<&CommitCommentCreatedAction> for CommitCommentCreatedAction {
8030	fn from(value: &CommitCommentCreatedAction) -> Self {
8031		value.clone()
8032	}
8033}
8034impl ToString for CommitCommentCreatedAction {
8035	fn to_string(&self) -> String {
8036		match *self {
8037			Self::Created => "created".to_string(),
8038		}
8039	}
8040}
8041impl std::str::FromStr for CommitCommentCreatedAction {
8042	type Err = &'static str;
8043
8044	fn from_str(value: &str) -> Result<Self, &'static str> {
8045		match value {
8046			"created" => Ok(Self::Created),
8047			_ => Err("invalid value"),
8048		}
8049	}
8050}
8051impl std::convert::TryFrom<&str> for CommitCommentCreatedAction {
8052	type Error = &'static str;
8053
8054	fn try_from(value: &str) -> Result<Self, &'static str> {
8055		value.parse()
8056	}
8057}
8058impl std::convert::TryFrom<&String> for CommitCommentCreatedAction {
8059	type Error = &'static str;
8060
8061	fn try_from(value: &String) -> Result<Self, &'static str> {
8062		value.parse()
8063	}
8064}
8065impl std::convert::TryFrom<String> for CommitCommentCreatedAction {
8066	type Error = &'static str;
8067
8068	fn try_from(value: String) -> Result<Self, &'static str> {
8069		value.parse()
8070	}
8071}
8072/// The [commit comment](https://docs.github.com/en/rest/reference/repos#get-a-commit-comment) resource.
8073#[derive(Clone, Debug, Deserialize, Serialize)]
8074#[serde(deny_unknown_fields)]
8075pub struct CommitCommentCreatedComment {
8076	pub author_association: AuthorAssociation,
8077	/// The text of the comment.
8078	pub body:               String,
8079	/// The SHA of the commit to which the comment applies.
8080	pub commit_id:          String,
8081	pub created_at:         chrono::DateTime<chrono::offset::Utc>,
8082	pub html_url:           String,
8083	/// The ID of the commit comment.
8084	pub id:                 i64,
8085	/// The line of the blob to which the comment applies. The last line of the
8086	/// range for a multi-line comment
8087	pub line:               Option<i64>,
8088	/// The node ID of the commit comment.
8089	pub node_id:            String,
8090	/// The relative path of the file to which the comment applies.
8091	pub path:               Option<String>,
8092	/// The line index in the diff to which the comment applies.
8093	pub position:           Option<i64>,
8094	pub updated_at:         chrono::DateTime<chrono::offset::Utc>,
8095	pub url:                String,
8096	pub user:               User,
8097}
8098impl From<&CommitCommentCreatedComment> for CommitCommentCreatedComment {
8099	fn from(value: &CommitCommentCreatedComment) -> Self {
8100		value.clone()
8101	}
8102}
8103#[derive(Clone, Debug, Deserialize, Serialize)]
8104pub struct CommitCommentEvent(pub CommitCommentCreated);
8105impl std::ops::Deref for CommitCommentEvent {
8106	type Target = CommitCommentCreated;
8107
8108	fn deref(&self) -> &CommitCommentCreated {
8109		&self.0
8110	}
8111}
8112impl From<CommitCommentEvent> for CommitCommentCreated {
8113	fn from(value: CommitCommentEvent) -> Self {
8114		value.0
8115	}
8116}
8117impl From<&CommitCommentEvent> for CommitCommentEvent {
8118	fn from(value: &CommitCommentEvent) -> Self {
8119		value.clone()
8120	}
8121}
8122impl From<CommitCommentCreated> for CommitCommentEvent {
8123	fn from(value: CommitCommentCreated) -> Self {
8124		Self(value)
8125	}
8126}
8127#[derive(Clone, Debug, Deserialize, Serialize)]
8128#[serde(deny_unknown_fields)]
8129pub struct CommitSimple {
8130	pub author:    Committer,
8131	pub committer: Committer,
8132	pub id:        String,
8133	pub message:   String,
8134	pub timestamp: String,
8135	pub tree_id:   String,
8136}
8137impl From<&CommitSimple> for CommitSimple {
8138	fn from(value: &CommitSimple) -> Self {
8139		value.clone()
8140	}
8141}
8142/// Metaproperties for Git author/committer information.
8143#[derive(Clone, Debug, Deserialize, Serialize)]
8144#[serde(deny_unknown_fields)]
8145pub struct Committer {
8146	#[serde(default, skip_serializing_if = "Option::is_none")]
8147	pub date:     Option<chrono::DateTime<chrono::offset::Utc>>,
8148	/// The git author's email address.
8149	pub email:    Option<String>,
8150	/// The git author's name.
8151	pub name:     String,
8152	#[serde(default, skip_serializing_if = "Option::is_none")]
8153	pub username: Option<String>,
8154}
8155impl From<&Committer> for Committer {
8156	fn from(value: &Committer) -> Self {
8157		value.clone()
8158	}
8159}
8160/// A Git branch or tag is created.
8161#[derive(Clone, Debug, Deserialize, Serialize)]
8162#[serde(deny_unknown_fields)]
8163pub struct CreateEvent {
8164	/// The repository's current description.
8165	pub description:   Option<String>,
8166	#[serde(default, skip_serializing_if = "Option::is_none")]
8167	pub installation:  Option<InstallationLite>,
8168	/// The name of the repository's default branch (usually `main`).
8169	pub master_branch: String,
8170	#[serde(default, skip_serializing_if = "Option::is_none")]
8171	pub organization:  Option<Organization>,
8172	/// The pusher type for the event. Can be either `user` or a deploy key.
8173	pub pusher_type:   String,
8174	/// The [`git ref`](https://docs.github.com/en/rest/reference/git#get-a-reference) resource.
8175	#[serde(rename = "ref")]
8176	pub ref_:          String,
8177	/// The type of Git ref object created in the repository. Can be either
8178	/// `branch` or `tag`.
8179	pub ref_type:      CreateEventRefType,
8180	pub repository:    Repository,
8181	pub sender:        User,
8182}
8183impl From<&CreateEvent> for CreateEvent {
8184	fn from(value: &CreateEvent) -> Self {
8185		value.clone()
8186	}
8187}
8188/// The type of Git ref object created in the repository. Can be either `branch`
8189/// or `tag`.
8190#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8191pub enum CreateEventRefType {
8192	#[serde(rename = "tag")]
8193	Tag,
8194	#[serde(rename = "branch")]
8195	Branch,
8196}
8197impl From<&CreateEventRefType> for CreateEventRefType {
8198	fn from(value: &CreateEventRefType) -> Self {
8199		value.clone()
8200	}
8201}
8202impl ToString for CreateEventRefType {
8203	fn to_string(&self) -> String {
8204		match *self {
8205			Self::Tag => "tag".to_string(),
8206			Self::Branch => "branch".to_string(),
8207		}
8208	}
8209}
8210impl std::str::FromStr for CreateEventRefType {
8211	type Err = &'static str;
8212
8213	fn from_str(value: &str) -> Result<Self, &'static str> {
8214		match value {
8215			"tag" => Ok(Self::Tag),
8216			"branch" => Ok(Self::Branch),
8217			_ => Err("invalid value"),
8218		}
8219	}
8220}
8221impl std::convert::TryFrom<&str> for CreateEventRefType {
8222	type Error = &'static str;
8223
8224	fn try_from(value: &str) -> Result<Self, &'static str> {
8225		value.parse()
8226	}
8227}
8228impl std::convert::TryFrom<&String> for CreateEventRefType {
8229	type Error = &'static str;
8230
8231	fn try_from(value: &String) -> Result<Self, &'static str> {
8232		value.parse()
8233	}
8234}
8235impl std::convert::TryFrom<String> for CreateEventRefType {
8236	type Error = &'static str;
8237
8238	fn try_from(value: String) -> Result<Self, &'static str> {
8239		value.parse()
8240	}
8241}
8242/// A Git branch or tag is deleted.
8243#[derive(Clone, Debug, Deserialize, Serialize)]
8244#[serde(deny_unknown_fields)]
8245pub struct DeleteEvent {
8246	#[serde(default, skip_serializing_if = "Option::is_none")]
8247	pub installation: Option<InstallationLite>,
8248	#[serde(default, skip_serializing_if = "Option::is_none")]
8249	pub organization: Option<Organization>,
8250	/// The pusher type for the event. Can be either `user` or a deploy key.
8251	pub pusher_type:  String,
8252	/// The [`git ref`](https://docs.github.com/en/rest/reference/git#get-a-reference) resource.
8253	#[serde(rename = "ref")]
8254	pub ref_:         String,
8255	/// The type of Git ref object deleted in the repository. Can be either
8256	/// `branch` or `tag`.
8257	pub ref_type:     DeleteEventRefType,
8258	pub repository:   Repository,
8259	pub sender:       User,
8260}
8261impl From<&DeleteEvent> for DeleteEvent {
8262	fn from(value: &DeleteEvent) -> Self {
8263		value.clone()
8264	}
8265}
8266/// The type of Git ref object deleted in the repository. Can be either `branch`
8267/// or `tag`.
8268#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8269pub enum DeleteEventRefType {
8270	#[serde(rename = "tag")]
8271	Tag,
8272	#[serde(rename = "branch")]
8273	Branch,
8274}
8275impl From<&DeleteEventRefType> for DeleteEventRefType {
8276	fn from(value: &DeleteEventRefType) -> Self {
8277		value.clone()
8278	}
8279}
8280impl ToString for DeleteEventRefType {
8281	fn to_string(&self) -> String {
8282		match *self {
8283			Self::Tag => "tag".to_string(),
8284			Self::Branch => "branch".to_string(),
8285		}
8286	}
8287}
8288impl std::str::FromStr for DeleteEventRefType {
8289	type Err = &'static str;
8290
8291	fn from_str(value: &str) -> Result<Self, &'static str> {
8292		match value {
8293			"tag" => Ok(Self::Tag),
8294			"branch" => Ok(Self::Branch),
8295			_ => Err("invalid value"),
8296		}
8297	}
8298}
8299impl std::convert::TryFrom<&str> for DeleteEventRefType {
8300	type Error = &'static str;
8301
8302	fn try_from(value: &str) -> Result<Self, &'static str> {
8303		value.parse()
8304	}
8305}
8306impl std::convert::TryFrom<&String> for DeleteEventRefType {
8307	type Error = &'static str;
8308
8309	fn try_from(value: &String) -> Result<Self, &'static str> {
8310		value.parse()
8311	}
8312}
8313impl std::convert::TryFrom<String> for DeleteEventRefType {
8314	type Error = &'static str;
8315
8316	fn try_from(value: String) -> Result<Self, &'static str> {
8317		value.parse()
8318	}
8319}
8320/// A Dependabot alert.
8321#[derive(Clone, Debug, Deserialize, Serialize)]
8322#[serde(deny_unknown_fields)]
8323pub struct DependabotAlert {
8324	/// The time that the alert was created in ISO 8601 format:
8325	/// `YYYY-MM-DDTHH:MM:SSZ`.
8326	pub created_at:             chrono::DateTime<chrono::offset::Utc>,
8327	pub dependency:             DependabotAlertDependency,
8328	/// The time that the alert was dismissed in ISO 8601 format:
8329	/// `YYYY-MM-DDTHH:MM:SSZ`.
8330	pub dismissed_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
8331	pub dismissed_by:           Option<User>,
8332	/// An optional comment associated with the alert's dismissal.
8333	pub dismissed_comment:      Option<String>,
8334	/// The reason that the alert was dismissed.
8335	pub dismissed_reason:       Option<DependabotAlertDismissedReason>,
8336	/// The time that the alert was no longer detected and was considered fixed
8337	/// in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.
8338	pub fixed_at:               Option<chrono::DateTime<chrono::offset::Utc>>,
8339	/// The GitHub URL of the alert resource.
8340	pub html_url:               String,
8341	/// The security alert number.
8342	pub number:                 i64,
8343	pub security_advisory:      DependabotAlertSecurityAdvisory,
8344	pub security_vulnerability: DependabotAlertSecurityVulnerability,
8345	/// The state of the Dependabot alert.
8346	pub state:                  DependabotAlertState,
8347	/// The time that the alert was last updated in ISO 8601 format:
8348	/// `YYYY-MM-DDTHH:MM:SSZ`.
8349	pub updated_at:             chrono::DateTime<chrono::offset::Utc>,
8350	/// The REST API URL of the alert resource.
8351	pub url:                    String,
8352}
8353impl From<&DependabotAlert> for DependabotAlert {
8354	fn from(value: &DependabotAlert) -> Self {
8355		value.clone()
8356	}
8357}
8358#[derive(Clone, Debug, Deserialize, Serialize)]
8359#[serde(deny_unknown_fields)]
8360pub struct DependabotAlertCreated {
8361	pub action:       DependabotAlertCreatedAction,
8362	pub alert:        DependabotAlert,
8363	#[serde(default, skip_serializing_if = "Option::is_none")]
8364	pub installation: Option<InstallationLite>,
8365	#[serde(default, skip_serializing_if = "Option::is_none")]
8366	pub organization: Option<Organization>,
8367	pub repository:   Repository,
8368	pub sender:       GithubOrg,
8369}
8370impl From<&DependabotAlertCreated> for DependabotAlertCreated {
8371	fn from(value: &DependabotAlertCreated) -> Self {
8372		value.clone()
8373	}
8374}
8375#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8376pub enum DependabotAlertCreatedAction {
8377	#[serde(rename = "created")]
8378	Created,
8379}
8380impl From<&DependabotAlertCreatedAction> for DependabotAlertCreatedAction {
8381	fn from(value: &DependabotAlertCreatedAction) -> Self {
8382		value.clone()
8383	}
8384}
8385impl ToString for DependabotAlertCreatedAction {
8386	fn to_string(&self) -> String {
8387		match *self {
8388			Self::Created => "created".to_string(),
8389		}
8390	}
8391}
8392impl std::str::FromStr for DependabotAlertCreatedAction {
8393	type Err = &'static str;
8394
8395	fn from_str(value: &str) -> Result<Self, &'static str> {
8396		match value {
8397			"created" => Ok(Self::Created),
8398			_ => Err("invalid value"),
8399		}
8400	}
8401}
8402impl std::convert::TryFrom<&str> for DependabotAlertCreatedAction {
8403	type Error = &'static str;
8404
8405	fn try_from(value: &str) -> Result<Self, &'static str> {
8406		value.parse()
8407	}
8408}
8409impl std::convert::TryFrom<&String> for DependabotAlertCreatedAction {
8410	type Error = &'static str;
8411
8412	fn try_from(value: &String) -> Result<Self, &'static str> {
8413		value.parse()
8414	}
8415}
8416impl std::convert::TryFrom<String> for DependabotAlertCreatedAction {
8417	type Error = &'static str;
8418
8419	fn try_from(value: String) -> Result<Self, &'static str> {
8420		value.parse()
8421	}
8422}
8423/// Details for the vulnerable dependency.
8424#[derive(Clone, Debug, Deserialize, Serialize)]
8425#[serde(deny_unknown_fields)]
8426pub struct DependabotAlertDependency {
8427	/// The full path to the dependency manifest file, relative to the root of
8428	/// the repository.
8429	pub manifest_path: String,
8430	pub package:       DependabotAlertPackage,
8431	/// The execution scope of the vulnerable dependency.
8432	pub scope:         Option<DependabotAlertDependencyScope>,
8433}
8434impl From<&DependabotAlertDependency> for DependabotAlertDependency {
8435	fn from(value: &DependabotAlertDependency) -> Self {
8436		value.clone()
8437	}
8438}
8439/// The execution scope of the vulnerable dependency.
8440#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8441pub enum DependabotAlertDependencyScope {
8442	#[serde(rename = "development")]
8443	Development,
8444	#[serde(rename = "runtime")]
8445	Runtime,
8446}
8447impl From<&DependabotAlertDependencyScope> for DependabotAlertDependencyScope {
8448	fn from(value: &DependabotAlertDependencyScope) -> Self {
8449		value.clone()
8450	}
8451}
8452impl ToString for DependabotAlertDependencyScope {
8453	fn to_string(&self) -> String {
8454		match *self {
8455			Self::Development => "development".to_string(),
8456			Self::Runtime => "runtime".to_string(),
8457		}
8458	}
8459}
8460impl std::str::FromStr for DependabotAlertDependencyScope {
8461	type Err = &'static str;
8462
8463	fn from_str(value: &str) -> Result<Self, &'static str> {
8464		match value {
8465			"development" => Ok(Self::Development),
8466			"runtime" => Ok(Self::Runtime),
8467			_ => Err("invalid value"),
8468		}
8469	}
8470}
8471impl std::convert::TryFrom<&str> for DependabotAlertDependencyScope {
8472	type Error = &'static str;
8473
8474	fn try_from(value: &str) -> Result<Self, &'static str> {
8475		value.parse()
8476	}
8477}
8478impl std::convert::TryFrom<&String> for DependabotAlertDependencyScope {
8479	type Error = &'static str;
8480
8481	fn try_from(value: &String) -> Result<Self, &'static str> {
8482		value.parse()
8483	}
8484}
8485impl std::convert::TryFrom<String> for DependabotAlertDependencyScope {
8486	type Error = &'static str;
8487
8488	fn try_from(value: String) -> Result<Self, &'static str> {
8489		value.parse()
8490	}
8491}
8492#[derive(Clone, Debug, Deserialize, Serialize)]
8493#[serde(deny_unknown_fields)]
8494pub struct DependabotAlertDismissed {
8495	pub action:       DependabotAlertDismissedAction,
8496	pub alert:        DependabotAlert,
8497	#[serde(default, skip_serializing_if = "Option::is_none")]
8498	pub installation: Option<InstallationLite>,
8499	#[serde(default, skip_serializing_if = "Option::is_none")]
8500	pub organization: Option<Organization>,
8501	pub repository:   Repository,
8502	pub sender:       User,
8503}
8504impl From<&DependabotAlertDismissed> for DependabotAlertDismissed {
8505	fn from(value: &DependabotAlertDismissed) -> Self {
8506		value.clone()
8507	}
8508}
8509#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8510pub enum DependabotAlertDismissedAction {
8511	#[serde(rename = "dismissed")]
8512	Dismissed,
8513}
8514impl From<&DependabotAlertDismissedAction> for DependabotAlertDismissedAction {
8515	fn from(value: &DependabotAlertDismissedAction) -> Self {
8516		value.clone()
8517	}
8518}
8519impl ToString for DependabotAlertDismissedAction {
8520	fn to_string(&self) -> String {
8521		match *self {
8522			Self::Dismissed => "dismissed".to_string(),
8523		}
8524	}
8525}
8526impl std::str::FromStr for DependabotAlertDismissedAction {
8527	type Err = &'static str;
8528
8529	fn from_str(value: &str) -> Result<Self, &'static str> {
8530		match value {
8531			"dismissed" => Ok(Self::Dismissed),
8532			_ => Err("invalid value"),
8533		}
8534	}
8535}
8536impl std::convert::TryFrom<&str> for DependabotAlertDismissedAction {
8537	type Error = &'static str;
8538
8539	fn try_from(value: &str) -> Result<Self, &'static str> {
8540		value.parse()
8541	}
8542}
8543impl std::convert::TryFrom<&String> for DependabotAlertDismissedAction {
8544	type Error = &'static str;
8545
8546	fn try_from(value: &String) -> Result<Self, &'static str> {
8547		value.parse()
8548	}
8549}
8550impl std::convert::TryFrom<String> for DependabotAlertDismissedAction {
8551	type Error = &'static str;
8552
8553	fn try_from(value: String) -> Result<Self, &'static str> {
8554		value.parse()
8555	}
8556}
8557/// The reason that the alert was dismissed.
8558#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8559pub enum DependabotAlertDismissedReason {
8560	#[serde(rename = "fix_started")]
8561	FixStarted,
8562	#[serde(rename = "inaccurate")]
8563	Inaccurate,
8564	#[serde(rename = "no_bandwidth")]
8565	NoBandwidth,
8566	#[serde(rename = "not_used")]
8567	NotUsed,
8568	#[serde(rename = "tolerable_risk")]
8569	TolerableRisk,
8570}
8571impl From<&DependabotAlertDismissedReason> for DependabotAlertDismissedReason {
8572	fn from(value: &DependabotAlertDismissedReason) -> Self {
8573		value.clone()
8574	}
8575}
8576impl ToString for DependabotAlertDismissedReason {
8577	fn to_string(&self) -> String {
8578		match *self {
8579			Self::FixStarted => "fix_started".to_string(),
8580			Self::Inaccurate => "inaccurate".to_string(),
8581			Self::NoBandwidth => "no_bandwidth".to_string(),
8582			Self::NotUsed => "not_used".to_string(),
8583			Self::TolerableRisk => "tolerable_risk".to_string(),
8584		}
8585	}
8586}
8587impl std::str::FromStr for DependabotAlertDismissedReason {
8588	type Err = &'static str;
8589
8590	fn from_str(value: &str) -> Result<Self, &'static str> {
8591		match value {
8592			"fix_started" => Ok(Self::FixStarted),
8593			"inaccurate" => Ok(Self::Inaccurate),
8594			"no_bandwidth" => Ok(Self::NoBandwidth),
8595			"not_used" => Ok(Self::NotUsed),
8596			"tolerable_risk" => Ok(Self::TolerableRisk),
8597			_ => Err("invalid value"),
8598		}
8599	}
8600}
8601impl std::convert::TryFrom<&str> for DependabotAlertDismissedReason {
8602	type Error = &'static str;
8603
8604	fn try_from(value: &str) -> Result<Self, &'static str> {
8605		value.parse()
8606	}
8607}
8608impl std::convert::TryFrom<&String> for DependabotAlertDismissedReason {
8609	type Error = &'static str;
8610
8611	fn try_from(value: &String) -> Result<Self, &'static str> {
8612		value.parse()
8613	}
8614}
8615impl std::convert::TryFrom<String> for DependabotAlertDismissedReason {
8616	type Error = &'static str;
8617
8618	fn try_from(value: String) -> Result<Self, &'static str> {
8619		value.parse()
8620	}
8621}
8622#[derive(Clone, Debug, Deserialize, Serialize)]
8623#[serde(untagged)]
8624pub enum DependabotAlertEvent {
8625	Created(DependabotAlertCreated),
8626	Dismissed(DependabotAlertDismissed),
8627	Fixed(DependabotAlertFixed),
8628	Reintroduced(DependabotAlertReintroduced),
8629	Reopened(DependabotAlertReopened),
8630}
8631impl From<&DependabotAlertEvent> for DependabotAlertEvent {
8632	fn from(value: &DependabotAlertEvent) -> Self {
8633		value.clone()
8634	}
8635}
8636impl From<DependabotAlertCreated> for DependabotAlertEvent {
8637	fn from(value: DependabotAlertCreated) -> Self {
8638		Self::Created(value)
8639	}
8640}
8641impl From<DependabotAlertDismissed> for DependabotAlertEvent {
8642	fn from(value: DependabotAlertDismissed) -> Self {
8643		Self::Dismissed(value)
8644	}
8645}
8646impl From<DependabotAlertFixed> for DependabotAlertEvent {
8647	fn from(value: DependabotAlertFixed) -> Self {
8648		Self::Fixed(value)
8649	}
8650}
8651impl From<DependabotAlertReintroduced> for DependabotAlertEvent {
8652	fn from(value: DependabotAlertReintroduced) -> Self {
8653		Self::Reintroduced(value)
8654	}
8655}
8656impl From<DependabotAlertReopened> for DependabotAlertEvent {
8657	fn from(value: DependabotAlertReopened) -> Self {
8658		Self::Reopened(value)
8659	}
8660}
8661#[derive(Clone, Debug, Deserialize, Serialize)]
8662#[serde(deny_unknown_fields)]
8663pub struct DependabotAlertFixed {
8664	pub action:       DependabotAlertFixedAction,
8665	pub alert:        DependabotAlert,
8666	#[serde(default, skip_serializing_if = "Option::is_none")]
8667	pub installation: Option<InstallationLite>,
8668	#[serde(default, skip_serializing_if = "Option::is_none")]
8669	pub organization: Option<Organization>,
8670	pub repository:   Repository,
8671	pub sender:       GithubOrg,
8672}
8673impl From<&DependabotAlertFixed> for DependabotAlertFixed {
8674	fn from(value: &DependabotAlertFixed) -> Self {
8675		value.clone()
8676	}
8677}
8678#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8679pub enum DependabotAlertFixedAction {
8680	#[serde(rename = "fixed")]
8681	Fixed,
8682}
8683impl From<&DependabotAlertFixedAction> for DependabotAlertFixedAction {
8684	fn from(value: &DependabotAlertFixedAction) -> Self {
8685		value.clone()
8686	}
8687}
8688impl ToString for DependabotAlertFixedAction {
8689	fn to_string(&self) -> String {
8690		match *self {
8691			Self::Fixed => "fixed".to_string(),
8692		}
8693	}
8694}
8695impl std::str::FromStr for DependabotAlertFixedAction {
8696	type Err = &'static str;
8697
8698	fn from_str(value: &str) -> Result<Self, &'static str> {
8699		match value {
8700			"fixed" => Ok(Self::Fixed),
8701			_ => Err("invalid value"),
8702		}
8703	}
8704}
8705impl std::convert::TryFrom<&str> for DependabotAlertFixedAction {
8706	type Error = &'static str;
8707
8708	fn try_from(value: &str) -> Result<Self, &'static str> {
8709		value.parse()
8710	}
8711}
8712impl std::convert::TryFrom<&String> for DependabotAlertFixedAction {
8713	type Error = &'static str;
8714
8715	fn try_from(value: &String) -> Result<Self, &'static str> {
8716		value.parse()
8717	}
8718}
8719impl std::convert::TryFrom<String> for DependabotAlertFixedAction {
8720	type Error = &'static str;
8721
8722	fn try_from(value: String) -> Result<Self, &'static str> {
8723		value.parse()
8724	}
8725}
8726/// Details for the vulnerable package.
8727#[derive(Clone, Debug, Deserialize, Serialize)]
8728#[serde(deny_unknown_fields)]
8729pub struct DependabotAlertPackage {
8730	/// The package's language or package management ecosystem.
8731	pub ecosystem: String,
8732	/// The unique package name within its ecosystem.
8733	pub name:      String,
8734}
8735impl From<&DependabotAlertPackage> for DependabotAlertPackage {
8736	fn from(value: &DependabotAlertPackage) -> Self {
8737		value.clone()
8738	}
8739}
8740#[derive(Clone, Debug, Deserialize, Serialize)]
8741#[serde(deny_unknown_fields)]
8742pub struct DependabotAlertReintroduced {
8743	pub action:       DependabotAlertReintroducedAction,
8744	pub alert:        DependabotAlert,
8745	#[serde(default, skip_serializing_if = "Option::is_none")]
8746	pub installation: Option<InstallationLite>,
8747	#[serde(default, skip_serializing_if = "Option::is_none")]
8748	pub organization: Option<Organization>,
8749	pub repository:   Repository,
8750	pub sender:       GithubOrg,
8751}
8752impl From<&DependabotAlertReintroduced> for DependabotAlertReintroduced {
8753	fn from(value: &DependabotAlertReintroduced) -> Self {
8754		value.clone()
8755	}
8756}
8757#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8758pub enum DependabotAlertReintroducedAction {
8759	#[serde(rename = "reintroduced")]
8760	Reintroduced,
8761}
8762impl From<&DependabotAlertReintroducedAction> for DependabotAlertReintroducedAction {
8763	fn from(value: &DependabotAlertReintroducedAction) -> Self {
8764		value.clone()
8765	}
8766}
8767impl ToString for DependabotAlertReintroducedAction {
8768	fn to_string(&self) -> String {
8769		match *self {
8770			Self::Reintroduced => "reintroduced".to_string(),
8771		}
8772	}
8773}
8774impl std::str::FromStr for DependabotAlertReintroducedAction {
8775	type Err = &'static str;
8776
8777	fn from_str(value: &str) -> Result<Self, &'static str> {
8778		match value {
8779			"reintroduced" => Ok(Self::Reintroduced),
8780			_ => Err("invalid value"),
8781		}
8782	}
8783}
8784impl std::convert::TryFrom<&str> for DependabotAlertReintroducedAction {
8785	type Error = &'static str;
8786
8787	fn try_from(value: &str) -> Result<Self, &'static str> {
8788		value.parse()
8789	}
8790}
8791impl std::convert::TryFrom<&String> for DependabotAlertReintroducedAction {
8792	type Error = &'static str;
8793
8794	fn try_from(value: &String) -> Result<Self, &'static str> {
8795		value.parse()
8796	}
8797}
8798impl std::convert::TryFrom<String> for DependabotAlertReintroducedAction {
8799	type Error = &'static str;
8800
8801	fn try_from(value: String) -> Result<Self, &'static str> {
8802		value.parse()
8803	}
8804}
8805#[derive(Clone, Debug, Deserialize, Serialize)]
8806#[serde(deny_unknown_fields)]
8807pub struct DependabotAlertReopened {
8808	pub action:       DependabotAlertReopenedAction,
8809	pub alert:        DependabotAlert,
8810	#[serde(default, skip_serializing_if = "Option::is_none")]
8811	pub installation: Option<InstallationLite>,
8812	#[serde(default, skip_serializing_if = "Option::is_none")]
8813	pub organization: Option<Organization>,
8814	pub repository:   Repository,
8815	pub sender:       User,
8816}
8817impl From<&DependabotAlertReopened> for DependabotAlertReopened {
8818	fn from(value: &DependabotAlertReopened) -> Self {
8819		value.clone()
8820	}
8821}
8822#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8823pub enum DependabotAlertReopenedAction {
8824	#[serde(rename = "reopened")]
8825	Reopened,
8826}
8827impl From<&DependabotAlertReopenedAction> for DependabotAlertReopenedAction {
8828	fn from(value: &DependabotAlertReopenedAction) -> Self {
8829		value.clone()
8830	}
8831}
8832impl ToString for DependabotAlertReopenedAction {
8833	fn to_string(&self) -> String {
8834		match *self {
8835			Self::Reopened => "reopened".to_string(),
8836		}
8837	}
8838}
8839impl std::str::FromStr for DependabotAlertReopenedAction {
8840	type Err = &'static str;
8841
8842	fn from_str(value: &str) -> Result<Self, &'static str> {
8843		match value {
8844			"reopened" => Ok(Self::Reopened),
8845			_ => Err("invalid value"),
8846		}
8847	}
8848}
8849impl std::convert::TryFrom<&str> for DependabotAlertReopenedAction {
8850	type Error = &'static str;
8851
8852	fn try_from(value: &str) -> Result<Self, &'static str> {
8853		value.parse()
8854	}
8855}
8856impl std::convert::TryFrom<&String> for DependabotAlertReopenedAction {
8857	type Error = &'static str;
8858
8859	fn try_from(value: &String) -> Result<Self, &'static str> {
8860		value.parse()
8861	}
8862}
8863impl std::convert::TryFrom<String> for DependabotAlertReopenedAction {
8864	type Error = &'static str;
8865
8866	fn try_from(value: String) -> Result<Self, &'static str> {
8867		value.parse()
8868	}
8869}
8870/// Details for the GitHub Security Advisory.
8871#[derive(Clone, Debug, Deserialize, Serialize)]
8872#[serde(deny_unknown_fields)]
8873pub struct DependabotAlertSecurityAdvisory {
8874	/// The unique CVE ID assigned to the advisory.
8875	pub cve_id:          Option<String>,
8876	pub cvss:            SecurityAdvisoryCvss,
8877	/// Details for the advisory pertaining to Common Weakness Enumeration.
8878	pub cwes:            Vec<SecurityAdvisoryCwes>,
8879	/// A long-form Markdown-supported description of the advisory.
8880	pub description:     String,
8881	/// Details for the GitHub Security Advisory.
8882	pub ghsa_id:         String,
8883	/// Values that identify this advisory among security information sources.
8884	pub identifiers:     Vec<DependabotAlertSecurityAdvisoryIdentifiersItem>,
8885	/// The time that the advisory was published in ISO 8601 format:
8886	/// `YYYY-MM-DDTHH:MM:SSZ`.
8887	pub published_at:    chrono::DateTime<chrono::offset::Utc>,
8888	/// Links to additional advisory information.
8889	pub references:      Vec<DependabotAlertSecurityAdvisoryReferencesItem>,
8890	/// The severity of the advisory.
8891	pub severity:        DependabotAlertSecurityAdvisorySeverity,
8892	/// A short, plain text summary of the advisory.
8893	pub summary:         String,
8894	/// The time that the advisory was last modified in ISO 8601 format:
8895	/// `YYYY-MM-DDTHH:MM:SSZ`.
8896	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
8897	/// Vulnerable version range information for the advisory.
8898	pub vulnerabilities: Vec<DependabotAlertSecurityAdvisoryVulnerabilitiesItem>,
8899	/// The time that the advisory was withdrawn in ISO 8601 format:
8900	/// `YYYY-MM-DDTHH:MM:SSZ`.
8901	pub withdrawn_at:    Option<chrono::DateTime<chrono::offset::Utc>>,
8902}
8903impl From<&DependabotAlertSecurityAdvisory> for DependabotAlertSecurityAdvisory {
8904	fn from(value: &DependabotAlertSecurityAdvisory) -> Self {
8905		value.clone()
8906	}
8907}
8908/// An advisory identifier.
8909#[derive(Clone, Debug, Deserialize, Serialize)]
8910#[serde(deny_unknown_fields)]
8911pub struct DependabotAlertSecurityAdvisoryIdentifiersItem {
8912	/// The type of advisory identifier.
8913	#[serde(rename = "type")]
8914	pub type_: DependabotAlertSecurityAdvisoryIdentifiersItemType,
8915	/// The value of the advisory identifer.
8916	pub value: String,
8917}
8918impl From<&DependabotAlertSecurityAdvisoryIdentifiersItem>
8919	for DependabotAlertSecurityAdvisoryIdentifiersItem
8920{
8921	fn from(value: &DependabotAlertSecurityAdvisoryIdentifiersItem) -> Self {
8922		value.clone()
8923	}
8924}
8925/// The type of advisory identifier.
8926#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8927pub enum DependabotAlertSecurityAdvisoryIdentifiersItemType {
8928	#[serde(rename = "CVE")]
8929	Cve,
8930	#[serde(rename = "GHSA")]
8931	Ghsa,
8932}
8933impl From<&DependabotAlertSecurityAdvisoryIdentifiersItemType>
8934	for DependabotAlertSecurityAdvisoryIdentifiersItemType
8935{
8936	fn from(value: &DependabotAlertSecurityAdvisoryIdentifiersItemType) -> Self {
8937		value.clone()
8938	}
8939}
8940impl ToString for DependabotAlertSecurityAdvisoryIdentifiersItemType {
8941	fn to_string(&self) -> String {
8942		match *self {
8943			Self::Cve => "CVE".to_string(),
8944			Self::Ghsa => "GHSA".to_string(),
8945		}
8946	}
8947}
8948impl std::str::FromStr for DependabotAlertSecurityAdvisoryIdentifiersItemType {
8949	type Err = &'static str;
8950
8951	fn from_str(value: &str) -> Result<Self, &'static str> {
8952		match value {
8953			"CVE" => Ok(Self::Cve),
8954			"GHSA" => Ok(Self::Ghsa),
8955			_ => Err("invalid value"),
8956		}
8957	}
8958}
8959impl std::convert::TryFrom<&str> for DependabotAlertSecurityAdvisoryIdentifiersItemType {
8960	type Error = &'static str;
8961
8962	fn try_from(value: &str) -> Result<Self, &'static str> {
8963		value.parse()
8964	}
8965}
8966impl std::convert::TryFrom<&String> for DependabotAlertSecurityAdvisoryIdentifiersItemType {
8967	type Error = &'static str;
8968
8969	fn try_from(value: &String) -> Result<Self, &'static str> {
8970		value.parse()
8971	}
8972}
8973impl std::convert::TryFrom<String> for DependabotAlertSecurityAdvisoryIdentifiersItemType {
8974	type Error = &'static str;
8975
8976	fn try_from(value: String) -> Result<Self, &'static str> {
8977		value.parse()
8978	}
8979}
8980#[derive(Clone, Debug, Deserialize, Serialize)]
8981#[serde(deny_unknown_fields)]
8982pub struct DependabotAlertSecurityAdvisoryReferencesItem {
8983	/// The URL of the reference.
8984	pub url: String,
8985}
8986impl From<&DependabotAlertSecurityAdvisoryReferencesItem>
8987	for DependabotAlertSecurityAdvisoryReferencesItem
8988{
8989	fn from(value: &DependabotAlertSecurityAdvisoryReferencesItem) -> Self {
8990		value.clone()
8991	}
8992}
8993/// The severity of the advisory.
8994#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8995pub enum DependabotAlertSecurityAdvisorySeverity {
8996	#[serde(rename = "low")]
8997	Low,
8998	#[serde(rename = "medium")]
8999	Medium,
9000	#[serde(rename = "high")]
9001	High,
9002	#[serde(rename = "critical")]
9003	Critical,
9004}
9005impl From<&DependabotAlertSecurityAdvisorySeverity> for DependabotAlertSecurityAdvisorySeverity {
9006	fn from(value: &DependabotAlertSecurityAdvisorySeverity) -> Self {
9007		value.clone()
9008	}
9009}
9010impl ToString for DependabotAlertSecurityAdvisorySeverity {
9011	fn to_string(&self) -> String {
9012		match *self {
9013			Self::Low => "low".to_string(),
9014			Self::Medium => "medium".to_string(),
9015			Self::High => "high".to_string(),
9016			Self::Critical => "critical".to_string(),
9017		}
9018	}
9019}
9020impl std::str::FromStr for DependabotAlertSecurityAdvisorySeverity {
9021	type Err = &'static str;
9022
9023	fn from_str(value: &str) -> Result<Self, &'static str> {
9024		match value {
9025			"low" => Ok(Self::Low),
9026			"medium" => Ok(Self::Medium),
9027			"high" => Ok(Self::High),
9028			"critical" => Ok(Self::Critical),
9029			_ => Err("invalid value"),
9030		}
9031	}
9032}
9033impl std::convert::TryFrom<&str> for DependabotAlertSecurityAdvisorySeverity {
9034	type Error = &'static str;
9035
9036	fn try_from(value: &str) -> Result<Self, &'static str> {
9037		value.parse()
9038	}
9039}
9040impl std::convert::TryFrom<&String> for DependabotAlertSecurityAdvisorySeverity {
9041	type Error = &'static str;
9042
9043	fn try_from(value: &String) -> Result<Self, &'static str> {
9044		value.parse()
9045	}
9046}
9047impl std::convert::TryFrom<String> for DependabotAlertSecurityAdvisorySeverity {
9048	type Error = &'static str;
9049
9050	fn try_from(value: String) -> Result<Self, &'static str> {
9051		value.parse()
9052	}
9053}
9054/// Details pertaining to one vulnerable version range for the advisory.
9055#[derive(Clone, Debug, Deserialize, Serialize)]
9056#[serde(deny_unknown_fields)]
9057pub struct DependabotAlertSecurityAdvisoryVulnerabilitiesItem {
9058	pub first_patched_version:
9059		DependabotAlertSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion,
9060	pub package:                  DependabotAlertPackage,
9061	/// The severity of the vulnerability.
9062	pub severity:                 DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity,
9063	/// Conditions that identify vulnerable versions of this vulnerability's
9064	/// package.
9065	pub vulnerable_version_range: String,
9066}
9067impl From<&DependabotAlertSecurityAdvisoryVulnerabilitiesItem>
9068	for DependabotAlertSecurityAdvisoryVulnerabilitiesItem
9069{
9070	fn from(value: &DependabotAlertSecurityAdvisoryVulnerabilitiesItem) -> Self {
9071		value.clone()
9072	}
9073}
9074/// Details pertaining to the package version that patches this vulnerability.
9075#[derive(Clone, Debug, Deserialize, Serialize)]
9076#[serde(deny_unknown_fields)]
9077pub struct DependabotAlertSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion {
9078	/// The package version that patches this vulnerability.
9079	pub identifier: String,
9080}
9081impl From<&DependabotAlertSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>
9082	for DependabotAlertSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion
9083{
9084	fn from(value: &DependabotAlertSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion) -> Self {
9085		value.clone()
9086	}
9087}
9088/// The severity of the vulnerability.
9089#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9090pub enum DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity {
9091	#[serde(rename = "low")]
9092	Low,
9093	#[serde(rename = "medium")]
9094	Medium,
9095	#[serde(rename = "high")]
9096	High,
9097	#[serde(rename = "critical")]
9098	Critical,
9099}
9100impl From<&DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity>
9101	for DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity
9102{
9103	fn from(value: &DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity) -> Self {
9104		value.clone()
9105	}
9106}
9107impl ToString for DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity {
9108	fn to_string(&self) -> String {
9109		match *self {
9110			Self::Low => "low".to_string(),
9111			Self::Medium => "medium".to_string(),
9112			Self::High => "high".to_string(),
9113			Self::Critical => "critical".to_string(),
9114		}
9115	}
9116}
9117impl std::str::FromStr for DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity {
9118	type Err = &'static str;
9119
9120	fn from_str(value: &str) -> Result<Self, &'static str> {
9121		match value {
9122			"low" => Ok(Self::Low),
9123			"medium" => Ok(Self::Medium),
9124			"high" => Ok(Self::High),
9125			"critical" => Ok(Self::Critical),
9126			_ => Err("invalid value"),
9127		}
9128	}
9129}
9130impl std::convert::TryFrom<&str> for DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity {
9131	type Error = &'static str;
9132
9133	fn try_from(value: &str) -> Result<Self, &'static str> {
9134		value.parse()
9135	}
9136}
9137impl std::convert::TryFrom<&String> for DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity {
9138	type Error = &'static str;
9139
9140	fn try_from(value: &String) -> Result<Self, &'static str> {
9141		value.parse()
9142	}
9143}
9144impl std::convert::TryFrom<String> for DependabotAlertSecurityAdvisoryVulnerabilitiesItemSeverity {
9145	type Error = &'static str;
9146
9147	fn try_from(value: String) -> Result<Self, &'static str> {
9148		value.parse()
9149	}
9150}
9151/// Details pertaining to one vulnerable version range for the advisory.
9152#[derive(Clone, Debug, Deserialize, Serialize)]
9153#[serde(deny_unknown_fields)]
9154pub struct DependabotAlertSecurityVulnerability {
9155	pub first_patched_version:    DependabotAlertSecurityVulnerabilityFirstPatchedVersion,
9156	pub package:                  DependabotAlertPackage,
9157	/// The severity of the vulnerability.
9158	pub severity:                 DependabotAlertSecurityVulnerabilitySeverity,
9159	/// Conditions that identify vulnerable versions of this vulnerability's
9160	/// package.
9161	pub vulnerable_version_range: String,
9162}
9163impl From<&DependabotAlertSecurityVulnerability> for DependabotAlertSecurityVulnerability {
9164	fn from(value: &DependabotAlertSecurityVulnerability) -> Self {
9165		value.clone()
9166	}
9167}
9168/// Details pertaining to the package version that patches this vulnerability.
9169#[derive(Clone, Debug, Deserialize, Serialize)]
9170#[serde(deny_unknown_fields)]
9171pub struct DependabotAlertSecurityVulnerabilityFirstPatchedVersion {
9172	/// The package version that patches this vulnerability.
9173	pub identifier: String,
9174}
9175impl From<&DependabotAlertSecurityVulnerabilityFirstPatchedVersion>
9176	for DependabotAlertSecurityVulnerabilityFirstPatchedVersion
9177{
9178	fn from(value: &DependabotAlertSecurityVulnerabilityFirstPatchedVersion) -> Self {
9179		value.clone()
9180	}
9181}
9182/// The severity of the vulnerability.
9183#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9184pub enum DependabotAlertSecurityVulnerabilitySeverity {
9185	#[serde(rename = "low")]
9186	Low,
9187	#[serde(rename = "medium")]
9188	Medium,
9189	#[serde(rename = "high")]
9190	High,
9191	#[serde(rename = "critical")]
9192	Critical,
9193}
9194impl From<&DependabotAlertSecurityVulnerabilitySeverity>
9195	for DependabotAlertSecurityVulnerabilitySeverity
9196{
9197	fn from(value: &DependabotAlertSecurityVulnerabilitySeverity) -> Self {
9198		value.clone()
9199	}
9200}
9201impl ToString for DependabotAlertSecurityVulnerabilitySeverity {
9202	fn to_string(&self) -> String {
9203		match *self {
9204			Self::Low => "low".to_string(),
9205			Self::Medium => "medium".to_string(),
9206			Self::High => "high".to_string(),
9207			Self::Critical => "critical".to_string(),
9208		}
9209	}
9210}
9211impl std::str::FromStr for DependabotAlertSecurityVulnerabilitySeverity {
9212	type Err = &'static str;
9213
9214	fn from_str(value: &str) -> Result<Self, &'static str> {
9215		match value {
9216			"low" => Ok(Self::Low),
9217			"medium" => Ok(Self::Medium),
9218			"high" => Ok(Self::High),
9219			"critical" => Ok(Self::Critical),
9220			_ => Err("invalid value"),
9221		}
9222	}
9223}
9224impl std::convert::TryFrom<&str> for DependabotAlertSecurityVulnerabilitySeverity {
9225	type Error = &'static str;
9226
9227	fn try_from(value: &str) -> Result<Self, &'static str> {
9228		value.parse()
9229	}
9230}
9231impl std::convert::TryFrom<&String> for DependabotAlertSecurityVulnerabilitySeverity {
9232	type Error = &'static str;
9233
9234	fn try_from(value: &String) -> Result<Self, &'static str> {
9235		value.parse()
9236	}
9237}
9238impl std::convert::TryFrom<String> for DependabotAlertSecurityVulnerabilitySeverity {
9239	type Error = &'static str;
9240
9241	fn try_from(value: String) -> Result<Self, &'static str> {
9242		value.parse()
9243	}
9244}
9245/// The state of the Dependabot alert.
9246#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9247pub enum DependabotAlertState {
9248	#[serde(rename = "dismissed")]
9249	Dismissed,
9250	#[serde(rename = "fixed")]
9251	Fixed,
9252	#[serde(rename = "open")]
9253	Open,
9254}
9255impl From<&DependabotAlertState> for DependabotAlertState {
9256	fn from(value: &DependabotAlertState) -> Self {
9257		value.clone()
9258	}
9259}
9260impl ToString for DependabotAlertState {
9261	fn to_string(&self) -> String {
9262		match *self {
9263			Self::Dismissed => "dismissed".to_string(),
9264			Self::Fixed => "fixed".to_string(),
9265			Self::Open => "open".to_string(),
9266		}
9267	}
9268}
9269impl std::str::FromStr for DependabotAlertState {
9270	type Err = &'static str;
9271
9272	fn from_str(value: &str) -> Result<Self, &'static str> {
9273		match value {
9274			"dismissed" => Ok(Self::Dismissed),
9275			"fixed" => Ok(Self::Fixed),
9276			"open" => Ok(Self::Open),
9277			_ => Err("invalid value"),
9278		}
9279	}
9280}
9281impl std::convert::TryFrom<&str> for DependabotAlertState {
9282	type Error = &'static str;
9283
9284	fn try_from(value: &str) -> Result<Self, &'static str> {
9285		value.parse()
9286	}
9287}
9288impl std::convert::TryFrom<&String> for DependabotAlertState {
9289	type Error = &'static str;
9290
9291	fn try_from(value: &String) -> Result<Self, &'static str> {
9292		value.parse()
9293	}
9294}
9295impl std::convert::TryFrom<String> for DependabotAlertState {
9296	type Error = &'static str;
9297
9298	fn try_from(value: String) -> Result<Self, &'static str> {
9299		value.parse()
9300	}
9301}
9302#[derive(Clone, Debug, Deserialize, Serialize)]
9303#[serde(deny_unknown_fields)]
9304pub struct DeployKeyCreated {
9305	pub action:       DeployKeyCreatedAction,
9306	#[serde(default, skip_serializing_if = "Option::is_none")]
9307	pub installation: Option<InstallationLite>,
9308	pub key:          DeployKeyCreatedKey,
9309	#[serde(default, skip_serializing_if = "Option::is_none")]
9310	pub organization: Option<Organization>,
9311	pub repository:   Repository,
9312	pub sender:       User,
9313}
9314impl From<&DeployKeyCreated> for DeployKeyCreated {
9315	fn from(value: &DeployKeyCreated) -> Self {
9316		value.clone()
9317	}
9318}
9319#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9320pub enum DeployKeyCreatedAction {
9321	#[serde(rename = "created")]
9322	Created,
9323}
9324impl From<&DeployKeyCreatedAction> for DeployKeyCreatedAction {
9325	fn from(value: &DeployKeyCreatedAction) -> Self {
9326		value.clone()
9327	}
9328}
9329impl ToString for DeployKeyCreatedAction {
9330	fn to_string(&self) -> String {
9331		match *self {
9332			Self::Created => "created".to_string(),
9333		}
9334	}
9335}
9336impl std::str::FromStr for DeployKeyCreatedAction {
9337	type Err = &'static str;
9338
9339	fn from_str(value: &str) -> Result<Self, &'static str> {
9340		match value {
9341			"created" => Ok(Self::Created),
9342			_ => Err("invalid value"),
9343		}
9344	}
9345}
9346impl std::convert::TryFrom<&str> for DeployKeyCreatedAction {
9347	type Error = &'static str;
9348
9349	fn try_from(value: &str) -> Result<Self, &'static str> {
9350		value.parse()
9351	}
9352}
9353impl std::convert::TryFrom<&String> for DeployKeyCreatedAction {
9354	type Error = &'static str;
9355
9356	fn try_from(value: &String) -> Result<Self, &'static str> {
9357		value.parse()
9358	}
9359}
9360impl std::convert::TryFrom<String> for DeployKeyCreatedAction {
9361	type Error = &'static str;
9362
9363	fn try_from(value: String) -> Result<Self, &'static str> {
9364		value.parse()
9365	}
9366}
9367/// The [`deploy key`](https://docs.github.com/en/rest/reference/deployments#get-a-deploy-key) resource.
9368#[derive(Clone, Debug, Deserialize, Serialize)]
9369#[serde(deny_unknown_fields)]
9370pub struct DeployKeyCreatedKey {
9371	pub created_at: chrono::DateTime<chrono::offset::Utc>,
9372	pub id:         i64,
9373	pub key:        String,
9374	pub read_only:  bool,
9375	pub title:      String,
9376	pub url:        String,
9377	pub verified:   bool,
9378}
9379impl From<&DeployKeyCreatedKey> for DeployKeyCreatedKey {
9380	fn from(value: &DeployKeyCreatedKey) -> Self {
9381		value.clone()
9382	}
9383}
9384#[derive(Clone, Debug, Deserialize, Serialize)]
9385#[serde(deny_unknown_fields)]
9386pub struct DeployKeyDeleted {
9387	pub action:       DeployKeyDeletedAction,
9388	#[serde(default, skip_serializing_if = "Option::is_none")]
9389	pub installation: Option<InstallationLite>,
9390	pub key:          DeployKeyDeletedKey,
9391	#[serde(default, skip_serializing_if = "Option::is_none")]
9392	pub organization: Option<Organization>,
9393	pub repository:   Repository,
9394	pub sender:       User,
9395}
9396impl From<&DeployKeyDeleted> for DeployKeyDeleted {
9397	fn from(value: &DeployKeyDeleted) -> Self {
9398		value.clone()
9399	}
9400}
9401#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9402pub enum DeployKeyDeletedAction {
9403	#[serde(rename = "deleted")]
9404	Deleted,
9405}
9406impl From<&DeployKeyDeletedAction> for DeployKeyDeletedAction {
9407	fn from(value: &DeployKeyDeletedAction) -> Self {
9408		value.clone()
9409	}
9410}
9411impl ToString for DeployKeyDeletedAction {
9412	fn to_string(&self) -> String {
9413		match *self {
9414			Self::Deleted => "deleted".to_string(),
9415		}
9416	}
9417}
9418impl std::str::FromStr for DeployKeyDeletedAction {
9419	type Err = &'static str;
9420
9421	fn from_str(value: &str) -> Result<Self, &'static str> {
9422		match value {
9423			"deleted" => Ok(Self::Deleted),
9424			_ => Err("invalid value"),
9425		}
9426	}
9427}
9428impl std::convert::TryFrom<&str> for DeployKeyDeletedAction {
9429	type Error = &'static str;
9430
9431	fn try_from(value: &str) -> Result<Self, &'static str> {
9432		value.parse()
9433	}
9434}
9435impl std::convert::TryFrom<&String> for DeployKeyDeletedAction {
9436	type Error = &'static str;
9437
9438	fn try_from(value: &String) -> Result<Self, &'static str> {
9439		value.parse()
9440	}
9441}
9442impl std::convert::TryFrom<String> for DeployKeyDeletedAction {
9443	type Error = &'static str;
9444
9445	fn try_from(value: String) -> Result<Self, &'static str> {
9446		value.parse()
9447	}
9448}
9449/// The [`deploy key`](https://docs.github.com/en/rest/reference/deployments#get-a-deploy-key) resource.
9450#[derive(Clone, Debug, Deserialize, Serialize)]
9451#[serde(deny_unknown_fields)]
9452pub struct DeployKeyDeletedKey {
9453	pub created_at: chrono::DateTime<chrono::offset::Utc>,
9454	pub id:         i64,
9455	pub key:        String,
9456	pub read_only:  bool,
9457	pub title:      String,
9458	pub url:        String,
9459	pub verified:   bool,
9460}
9461impl From<&DeployKeyDeletedKey> for DeployKeyDeletedKey {
9462	fn from(value: &DeployKeyDeletedKey) -> Self {
9463		value.clone()
9464	}
9465}
9466#[derive(Clone, Debug, Deserialize, Serialize)]
9467#[serde(untagged)]
9468pub enum DeployKeyEvent {
9469	Created(DeployKeyCreated),
9470	Deleted(DeployKeyDeleted),
9471}
9472impl From<&DeployKeyEvent> for DeployKeyEvent {
9473	fn from(value: &DeployKeyEvent) -> Self {
9474		value.clone()
9475	}
9476}
9477impl From<DeployKeyCreated> for DeployKeyEvent {
9478	fn from(value: DeployKeyCreated) -> Self {
9479		Self::Created(value)
9480	}
9481}
9482impl From<DeployKeyDeleted> for DeployKeyEvent {
9483	fn from(value: DeployKeyDeleted) -> Self {
9484		Self::Deleted(value)
9485	}
9486}
9487/// The [deployment](https://docs.github.com/en/rest/reference/deployments#list-deployments).
9488#[derive(Clone, Debug, Deserialize, Serialize)]
9489#[serde(deny_unknown_fields)]
9490pub struct Deployment {
9491	pub created_at: chrono::DateTime<chrono::offset::Utc>,
9492	pub creator: User,
9493	pub description: Option<String>,
9494	/// Name of the target deployment environment.
9495	pub environment: String,
9496	/// Unique identifier of the deployment
9497	pub id: i64,
9498	pub node_id: String,
9499	pub original_environment: String,
9500	pub payload: std::collections::HashMap<String, serde_json::Value>,
9501	#[serde(default, skip_serializing_if = "Option::is_none")]
9502	pub performed_via_github_app: Option<App>,
9503	/// Specifies if the given environment is one that end-users directly
9504	/// interact with. Default: false.
9505	#[serde(default, skip_serializing_if = "Option::is_none")]
9506	pub production_environment: Option<bool>,
9507	/// The ref to deploy. This can be a branch, tag, or sha.
9508	#[serde(rename = "ref")]
9509	pub ref_: String,
9510	pub repository_url: String,
9511	pub sha: String,
9512	pub statuses_url: String,
9513	/// Parameter to specify a task to execute
9514	pub task: String,
9515	/// Specifies if the given environment will no longer exist at some point in
9516	/// the future. Default: false.
9517	#[serde(default, skip_serializing_if = "Option::is_none")]
9518	pub transient_environment: Option<bool>,
9519	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
9520	pub url: String,
9521}
9522impl From<&Deployment> for Deployment {
9523	fn from(value: &Deployment) -> Self {
9524		value.clone()
9525	}
9526}
9527#[derive(Clone, Debug, Deserialize, Serialize)]
9528#[serde(deny_unknown_fields)]
9529pub struct DeploymentCreated {
9530	pub action:       DeploymentCreatedAction,
9531	pub deployment:   Deployment,
9532	#[serde(default, skip_serializing_if = "Option::is_none")]
9533	pub installation: Option<InstallationLite>,
9534	#[serde(default, skip_serializing_if = "Option::is_none")]
9535	pub organization: Option<Organization>,
9536	pub repository:   Repository,
9537	pub sender:       User,
9538	pub workflow:     Option<Workflow>,
9539	pub workflow_run: Option<DeploymentWorkflowRun>,
9540}
9541impl From<&DeploymentCreated> for DeploymentCreated {
9542	fn from(value: &DeploymentCreated) -> Self {
9543		value.clone()
9544	}
9545}
9546#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9547pub enum DeploymentCreatedAction {
9548	#[serde(rename = "created")]
9549	Created,
9550}
9551impl From<&DeploymentCreatedAction> for DeploymentCreatedAction {
9552	fn from(value: &DeploymentCreatedAction) -> Self {
9553		value.clone()
9554	}
9555}
9556impl ToString for DeploymentCreatedAction {
9557	fn to_string(&self) -> String {
9558		match *self {
9559			Self::Created => "created".to_string(),
9560		}
9561	}
9562}
9563impl std::str::FromStr for DeploymentCreatedAction {
9564	type Err = &'static str;
9565
9566	fn from_str(value: &str) -> Result<Self, &'static str> {
9567		match value {
9568			"created" => Ok(Self::Created),
9569			_ => Err("invalid value"),
9570		}
9571	}
9572}
9573impl std::convert::TryFrom<&str> for DeploymentCreatedAction {
9574	type Error = &'static str;
9575
9576	fn try_from(value: &str) -> Result<Self, &'static str> {
9577		value.parse()
9578	}
9579}
9580impl std::convert::TryFrom<&String> for DeploymentCreatedAction {
9581	type Error = &'static str;
9582
9583	fn try_from(value: &String) -> Result<Self, &'static str> {
9584		value.parse()
9585	}
9586}
9587impl std::convert::TryFrom<String> for DeploymentCreatedAction {
9588	type Error = &'static str;
9589
9590	fn try_from(value: String) -> Result<Self, &'static str> {
9591		value.parse()
9592	}
9593}
9594#[derive(Clone, Debug, Deserialize, Serialize)]
9595pub struct DeploymentEvent(pub DeploymentCreated);
9596impl std::ops::Deref for DeploymentEvent {
9597	type Target = DeploymentCreated;
9598
9599	fn deref(&self) -> &DeploymentCreated {
9600		&self.0
9601	}
9602}
9603impl From<DeploymentEvent> for DeploymentCreated {
9604	fn from(value: DeploymentEvent) -> Self {
9605		value.0
9606	}
9607}
9608impl From<&DeploymentEvent> for DeploymentEvent {
9609	fn from(value: &DeploymentEvent) -> Self {
9610		value.clone()
9611	}
9612}
9613impl From<DeploymentCreated> for DeploymentEvent {
9614	fn from(value: DeploymentCreated) -> Self {
9615		Self(value)
9616	}
9617}
9618#[derive(Clone, Debug, Deserialize, Serialize)]
9619#[serde(deny_unknown_fields)]
9620pub struct DeploymentStatusCreated {
9621	pub action:            DeploymentStatusCreatedAction,
9622	#[serde(default, skip_serializing_if = "Option::is_none")]
9623	pub check_run:         Option<DeploymentStatusCreatedCheckRun>,
9624	pub deployment:        Deployment,
9625	pub deployment_status: DeploymentStatusCreatedDeploymentStatus,
9626	#[serde(default, skip_serializing_if = "Option::is_none")]
9627	pub installation:      Option<InstallationLite>,
9628	#[serde(default, skip_serializing_if = "Option::is_none")]
9629	pub organization:      Option<Organization>,
9630	pub repository:        Repository,
9631	pub sender:            User,
9632	#[serde(default, skip_serializing_if = "Option::is_none")]
9633	pub workflow:          Option<Workflow>,
9634	#[serde(default, skip_serializing_if = "Option::is_none")]
9635	pub workflow_run:      Option<DeploymentWorkflowRun>,
9636}
9637impl From<&DeploymentStatusCreated> for DeploymentStatusCreated {
9638	fn from(value: &DeploymentStatusCreated) -> Self {
9639		value.clone()
9640	}
9641}
9642#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9643pub enum DeploymentStatusCreatedAction {
9644	#[serde(rename = "created")]
9645	Created,
9646}
9647impl From<&DeploymentStatusCreatedAction> for DeploymentStatusCreatedAction {
9648	fn from(value: &DeploymentStatusCreatedAction) -> Self {
9649		value.clone()
9650	}
9651}
9652impl ToString for DeploymentStatusCreatedAction {
9653	fn to_string(&self) -> String {
9654		match *self {
9655			Self::Created => "created".to_string(),
9656		}
9657	}
9658}
9659impl std::str::FromStr for DeploymentStatusCreatedAction {
9660	type Err = &'static str;
9661
9662	fn from_str(value: &str) -> Result<Self, &'static str> {
9663		match value {
9664			"created" => Ok(Self::Created),
9665			_ => Err("invalid value"),
9666		}
9667	}
9668}
9669impl std::convert::TryFrom<&str> for DeploymentStatusCreatedAction {
9670	type Error = &'static str;
9671
9672	fn try_from(value: &str) -> Result<Self, &'static str> {
9673		value.parse()
9674	}
9675}
9676impl std::convert::TryFrom<&String> for DeploymentStatusCreatedAction {
9677	type Error = &'static str;
9678
9679	fn try_from(value: &String) -> Result<Self, &'static str> {
9680		value.parse()
9681	}
9682}
9683impl std::convert::TryFrom<String> for DeploymentStatusCreatedAction {
9684	type Error = &'static str;
9685
9686	fn try_from(value: String) -> Result<Self, &'static str> {
9687		value.parse()
9688	}
9689}
9690#[derive(Clone, Debug, Deserialize, Serialize)]
9691#[serde(deny_unknown_fields)]
9692pub struct DeploymentStatusCreatedCheckRun {
9693	pub completed_at: Option<chrono::DateTime<chrono::offset::Utc>>,
9694	/// The result of the completed check run. Can be one of `success`,
9695	/// `failure`, `neutral`, `cancelled`, `timed_out`, `action_required` or
9696	/// `stale`. This value will be `null` until the check run has completed.
9697	pub conclusion:   Option<DeploymentStatusCreatedCheckRunConclusion>,
9698	pub details_url:  String,
9699	pub external_id:  String,
9700	/// The SHA of the commit that is being checked.
9701	pub head_sha:     String,
9702	pub html_url:     String,
9703	/// The id of the check.
9704	pub id:           i64,
9705	/// The name of the check run.
9706	pub name:         String,
9707	pub node_id:      String,
9708	pub started_at:   chrono::DateTime<chrono::offset::Utc>,
9709	/// The current status of the check run. Can be `queued`, `in_progress`, or
9710	/// `completed`.
9711	pub status:       DeploymentStatusCreatedCheckRunStatus,
9712	pub url:          String,
9713}
9714impl From<&DeploymentStatusCreatedCheckRun> for DeploymentStatusCreatedCheckRun {
9715	fn from(value: &DeploymentStatusCreatedCheckRun) -> Self {
9716		value.clone()
9717	}
9718}
9719/// The result of the completed check run. Can be one of `success`, `failure`,
9720/// `neutral`, `cancelled`, `timed_out`, `action_required` or `stale`. This
9721/// value will be `null` until the check run has completed.
9722#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9723pub enum DeploymentStatusCreatedCheckRunConclusion {
9724	#[serde(rename = "success")]
9725	Success,
9726	#[serde(rename = "failure")]
9727	Failure,
9728	#[serde(rename = "neutral")]
9729	Neutral,
9730	#[serde(rename = "cancelled")]
9731	Cancelled,
9732	#[serde(rename = "timed_out")]
9733	TimedOut,
9734	#[serde(rename = "action_required")]
9735	ActionRequired,
9736	#[serde(rename = "stale")]
9737	Stale,
9738	#[serde(rename = "skipped")]
9739	Skipped,
9740}
9741impl From<&DeploymentStatusCreatedCheckRunConclusion>
9742	for DeploymentStatusCreatedCheckRunConclusion
9743{
9744	fn from(value: &DeploymentStatusCreatedCheckRunConclusion) -> Self {
9745		value.clone()
9746	}
9747}
9748impl ToString for DeploymentStatusCreatedCheckRunConclusion {
9749	fn to_string(&self) -> String {
9750		match *self {
9751			Self::Success => "success".to_string(),
9752			Self::Failure => "failure".to_string(),
9753			Self::Neutral => "neutral".to_string(),
9754			Self::Cancelled => "cancelled".to_string(),
9755			Self::TimedOut => "timed_out".to_string(),
9756			Self::ActionRequired => "action_required".to_string(),
9757			Self::Stale => "stale".to_string(),
9758			Self::Skipped => "skipped".to_string(),
9759		}
9760	}
9761}
9762impl std::str::FromStr for DeploymentStatusCreatedCheckRunConclusion {
9763	type Err = &'static str;
9764
9765	fn from_str(value: &str) -> Result<Self, &'static str> {
9766		match value {
9767			"success" => Ok(Self::Success),
9768			"failure" => Ok(Self::Failure),
9769			"neutral" => Ok(Self::Neutral),
9770			"cancelled" => Ok(Self::Cancelled),
9771			"timed_out" => Ok(Self::TimedOut),
9772			"action_required" => Ok(Self::ActionRequired),
9773			"stale" => Ok(Self::Stale),
9774			"skipped" => Ok(Self::Skipped),
9775			_ => Err("invalid value"),
9776		}
9777	}
9778}
9779impl std::convert::TryFrom<&str> for DeploymentStatusCreatedCheckRunConclusion {
9780	type Error = &'static str;
9781
9782	fn try_from(value: &str) -> Result<Self, &'static str> {
9783		value.parse()
9784	}
9785}
9786impl std::convert::TryFrom<&String> for DeploymentStatusCreatedCheckRunConclusion {
9787	type Error = &'static str;
9788
9789	fn try_from(value: &String) -> Result<Self, &'static str> {
9790		value.parse()
9791	}
9792}
9793impl std::convert::TryFrom<String> for DeploymentStatusCreatedCheckRunConclusion {
9794	type Error = &'static str;
9795
9796	fn try_from(value: String) -> Result<Self, &'static str> {
9797		value.parse()
9798	}
9799}
9800/// The current status of the check run. Can be `queued`, `in_progress`, or
9801/// `completed`.
9802#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9803pub enum DeploymentStatusCreatedCheckRunStatus {
9804	#[serde(rename = "queued")]
9805	Queued,
9806	#[serde(rename = "in_progress")]
9807	InProgress,
9808	#[serde(rename = "completed")]
9809	Completed,
9810	#[serde(rename = "waiting")]
9811	Waiting,
9812}
9813impl From<&DeploymentStatusCreatedCheckRunStatus> for DeploymentStatusCreatedCheckRunStatus {
9814	fn from(value: &DeploymentStatusCreatedCheckRunStatus) -> Self {
9815		value.clone()
9816	}
9817}
9818impl ToString for DeploymentStatusCreatedCheckRunStatus {
9819	fn to_string(&self) -> String {
9820		match *self {
9821			Self::Queued => "queued".to_string(),
9822			Self::InProgress => "in_progress".to_string(),
9823			Self::Completed => "completed".to_string(),
9824			Self::Waiting => "waiting".to_string(),
9825		}
9826	}
9827}
9828impl std::str::FromStr for DeploymentStatusCreatedCheckRunStatus {
9829	type Err = &'static str;
9830
9831	fn from_str(value: &str) -> Result<Self, &'static str> {
9832		match value {
9833			"queued" => Ok(Self::Queued),
9834			"in_progress" => Ok(Self::InProgress),
9835			"completed" => Ok(Self::Completed),
9836			"waiting" => Ok(Self::Waiting),
9837			_ => Err("invalid value"),
9838		}
9839	}
9840}
9841impl std::convert::TryFrom<&str> for DeploymentStatusCreatedCheckRunStatus {
9842	type Error = &'static str;
9843
9844	fn try_from(value: &str) -> Result<Self, &'static str> {
9845		value.parse()
9846	}
9847}
9848impl std::convert::TryFrom<&String> for DeploymentStatusCreatedCheckRunStatus {
9849	type Error = &'static str;
9850
9851	fn try_from(value: &String) -> Result<Self, &'static str> {
9852		value.parse()
9853	}
9854}
9855impl std::convert::TryFrom<String> for DeploymentStatusCreatedCheckRunStatus {
9856	type Error = &'static str;
9857
9858	fn try_from(value: String) -> Result<Self, &'static str> {
9859		value.parse()
9860	}
9861}
9862/// The [deployment status](https://docs.github.com/en/rest/reference/deployments#list-deployment-statuses).
9863#[derive(Clone, Debug, Deserialize, Serialize)]
9864#[serde(deny_unknown_fields)]
9865pub struct DeploymentStatusCreatedDeploymentStatus {
9866	pub created_at: chrono::DateTime<chrono::offset::Utc>,
9867	pub creator: User,
9868	pub deployment_url: String,
9869	/// The optional human-readable description added to the status.
9870	pub description: String,
9871	pub environment: String,
9872	#[serde(default, skip_serializing_if = "Option::is_none")]
9873	pub environment_url: Option<DeploymentStatusCreatedDeploymentStatusEnvironmentUrl>,
9874	pub id: i64,
9875	#[serde(default, skip_serializing_if = "Option::is_none")]
9876	pub log_url: Option<String>,
9877	pub node_id: String,
9878	#[serde(default, skip_serializing_if = "Option::is_none")]
9879	pub performed_via_github_app: Option<App>,
9880	pub repository_url: String,
9881	/// The new state. Can be `pending`, `success`, `failure`, or `error`.
9882	pub state: String,
9883	/// The optional link added to the status.
9884	pub target_url: String,
9885	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
9886	pub url: String,
9887}
9888impl From<&DeploymentStatusCreatedDeploymentStatus> for DeploymentStatusCreatedDeploymentStatus {
9889	fn from(value: &DeploymentStatusCreatedDeploymentStatus) -> Self {
9890		value.clone()
9891	}
9892}
9893#[derive(Clone, Debug, Deserialize, Serialize)]
9894#[serde(untagged)]
9895pub enum DeploymentStatusCreatedDeploymentStatusEnvironmentUrl {
9896	Variant0(String),
9897	Variant1(DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1),
9898}
9899impl From<&DeploymentStatusCreatedDeploymentStatusEnvironmentUrl>
9900	for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl
9901{
9902	fn from(value: &DeploymentStatusCreatedDeploymentStatusEnvironmentUrl) -> Self {
9903		value.clone()
9904	}
9905}
9906impl std::str::FromStr for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl {
9907	type Err = &'static str;
9908
9909	fn from_str(value: &str) -> Result<Self, &'static str> {
9910		if let Ok(v) = value.parse() {
9911			Ok(Self::Variant0(v))
9912		} else if let Ok(v) = value.parse() {
9913			Ok(Self::Variant1(v))
9914		} else {
9915			Err("string conversion failed for all variants")
9916		}
9917	}
9918}
9919impl std::convert::TryFrom<&str> for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl {
9920	type Error = &'static str;
9921
9922	fn try_from(value: &str) -> Result<Self, &'static str> {
9923		value.parse()
9924	}
9925}
9926impl std::convert::TryFrom<&String> for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl {
9927	type Error = &'static str;
9928
9929	fn try_from(value: &String) -> Result<Self, &'static str> {
9930		value.parse()
9931	}
9932}
9933impl std::convert::TryFrom<String> for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl {
9934	type Error = &'static str;
9935
9936	fn try_from(value: String) -> Result<Self, &'static str> {
9937		value.parse()
9938	}
9939}
9940impl ToString for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl {
9941	fn to_string(&self) -> String {
9942		match self {
9943			Self::Variant0(x) => x.to_string(),
9944			Self::Variant1(x) => x.to_string(),
9945		}
9946	}
9947}
9948impl From<DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1>
9949	for DeploymentStatusCreatedDeploymentStatusEnvironmentUrl
9950{
9951	fn from(value: DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1) -> Self {
9952		Self::Variant1(value)
9953	}
9954}
9955#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9956pub enum DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1 {
9957	#[serde(rename = "")]
9958	X,
9959}
9960impl From<&DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1>
9961	for DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1
9962{
9963	fn from(value: &DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1) -> Self {
9964		value.clone()
9965	}
9966}
9967impl ToString for DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1 {
9968	fn to_string(&self) -> String {
9969		match *self {
9970			Self::X => "".to_string(),
9971		}
9972	}
9973}
9974impl std::str::FromStr for DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1 {
9975	type Err = &'static str;
9976
9977	fn from_str(value: &str) -> Result<Self, &'static str> {
9978		match value {
9979			"" => Ok(Self::X),
9980			_ => Err("invalid value"),
9981		}
9982	}
9983}
9984impl std::convert::TryFrom<&str> for DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1 {
9985	type Error = &'static str;
9986
9987	fn try_from(value: &str) -> Result<Self, &'static str> {
9988		value.parse()
9989	}
9990}
9991impl std::convert::TryFrom<&String>
9992	for DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1
9993{
9994	type Error = &'static str;
9995
9996	fn try_from(value: &String) -> Result<Self, &'static str> {
9997		value.parse()
9998	}
9999}
10000impl std::convert::TryFrom<String>
10001	for DeploymentStatusCreatedDeploymentStatusEnvironmentUrlVariant1
10002{
10003	type Error = &'static str;
10004
10005	fn try_from(value: String) -> Result<Self, &'static str> {
10006		value.parse()
10007	}
10008}
10009#[derive(Clone, Debug, Deserialize, Serialize)]
10010pub struct DeploymentStatusEvent(pub DeploymentStatusCreated);
10011impl std::ops::Deref for DeploymentStatusEvent {
10012	type Target = DeploymentStatusCreated;
10013
10014	fn deref(&self) -> &DeploymentStatusCreated {
10015		&self.0
10016	}
10017}
10018impl From<DeploymentStatusEvent> for DeploymentStatusCreated {
10019	fn from(value: DeploymentStatusEvent) -> Self {
10020		value.0
10021	}
10022}
10023impl From<&DeploymentStatusEvent> for DeploymentStatusEvent {
10024	fn from(value: &DeploymentStatusEvent) -> Self {
10025		value.clone()
10026	}
10027}
10028impl From<DeploymentStatusCreated> for DeploymentStatusEvent {
10029	fn from(value: DeploymentStatusCreated) -> Self {
10030		Self(value)
10031	}
10032}
10033#[derive(Clone, Debug, Deserialize, Serialize)]
10034#[serde(deny_unknown_fields)]
10035pub struct DeploymentWorkflowRun {
10036	pub actor:                User,
10037	pub check_suite_id:       i64,
10038	pub check_suite_node_id:  String,
10039	pub conclusion:           Option<DeploymentWorkflowRunConclusion>,
10040	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
10041	#[serde(default, skip_serializing_if = "Option::is_none")]
10042	pub display_title:        Option<String>,
10043	pub event:                String,
10044	pub head_branch:          String,
10045	pub head_sha:             String,
10046	pub html_url:             String,
10047	pub id:                   i64,
10048	pub name:                 String,
10049	pub node_id:              String,
10050	#[serde(default, skip_serializing_if = "Option::is_none")]
10051	pub path:                 Option<String>,
10052	pub pull_requests:        Vec<CheckRunPullRequest>,
10053	#[serde(default, skip_serializing_if = "Vec::is_empty")]
10054	pub referenced_workflows: Vec<ReferencedWorkflow>,
10055	pub run_attempt:          i64,
10056	pub run_number:           i64,
10057	pub run_started_at:       chrono::DateTime<chrono::offset::Utc>,
10058	pub status:               DeploymentWorkflowRunStatus,
10059	pub triggering_actor:     User,
10060	pub updated_at:           chrono::DateTime<chrono::offset::Utc>,
10061	pub url:                  String,
10062	pub workflow_id:          i64,
10063}
10064impl From<&DeploymentWorkflowRun> for DeploymentWorkflowRun {
10065	fn from(value: &DeploymentWorkflowRun) -> Self {
10066		value.clone()
10067	}
10068}
10069#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10070pub enum DeploymentWorkflowRunConclusion {
10071	#[serde(rename = "success")]
10072	Success,
10073	#[serde(rename = "failure")]
10074	Failure,
10075	#[serde(rename = "neutral")]
10076	Neutral,
10077	#[serde(rename = "cancelled")]
10078	Cancelled,
10079	#[serde(rename = "timed_out")]
10080	TimedOut,
10081	#[serde(rename = "action_required")]
10082	ActionRequired,
10083	#[serde(rename = "stale")]
10084	Stale,
10085}
10086impl From<&DeploymentWorkflowRunConclusion> for DeploymentWorkflowRunConclusion {
10087	fn from(value: &DeploymentWorkflowRunConclusion) -> Self {
10088		value.clone()
10089	}
10090}
10091impl ToString for DeploymentWorkflowRunConclusion {
10092	fn to_string(&self) -> String {
10093		match *self {
10094			Self::Success => "success".to_string(),
10095			Self::Failure => "failure".to_string(),
10096			Self::Neutral => "neutral".to_string(),
10097			Self::Cancelled => "cancelled".to_string(),
10098			Self::TimedOut => "timed_out".to_string(),
10099			Self::ActionRequired => "action_required".to_string(),
10100			Self::Stale => "stale".to_string(),
10101		}
10102	}
10103}
10104impl std::str::FromStr for DeploymentWorkflowRunConclusion {
10105	type Err = &'static str;
10106
10107	fn from_str(value: &str) -> Result<Self, &'static str> {
10108		match value {
10109			"success" => Ok(Self::Success),
10110			"failure" => Ok(Self::Failure),
10111			"neutral" => Ok(Self::Neutral),
10112			"cancelled" => Ok(Self::Cancelled),
10113			"timed_out" => Ok(Self::TimedOut),
10114			"action_required" => Ok(Self::ActionRequired),
10115			"stale" => Ok(Self::Stale),
10116			_ => Err("invalid value"),
10117		}
10118	}
10119}
10120impl std::convert::TryFrom<&str> for DeploymentWorkflowRunConclusion {
10121	type Error = &'static str;
10122
10123	fn try_from(value: &str) -> Result<Self, &'static str> {
10124		value.parse()
10125	}
10126}
10127impl std::convert::TryFrom<&String> for DeploymentWorkflowRunConclusion {
10128	type Error = &'static str;
10129
10130	fn try_from(value: &String) -> Result<Self, &'static str> {
10131		value.parse()
10132	}
10133}
10134impl std::convert::TryFrom<String> for DeploymentWorkflowRunConclusion {
10135	type Error = &'static str;
10136
10137	fn try_from(value: String) -> Result<Self, &'static str> {
10138		value.parse()
10139	}
10140}
10141#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10142pub enum DeploymentWorkflowRunStatus {
10143	#[serde(rename = "requested")]
10144	Requested,
10145	#[serde(rename = "in_progress")]
10146	InProgress,
10147	#[serde(rename = "completed")]
10148	Completed,
10149	#[serde(rename = "queued")]
10150	Queued,
10151}
10152impl From<&DeploymentWorkflowRunStatus> for DeploymentWorkflowRunStatus {
10153	fn from(value: &DeploymentWorkflowRunStatus) -> Self {
10154		value.clone()
10155	}
10156}
10157impl ToString for DeploymentWorkflowRunStatus {
10158	fn to_string(&self) -> String {
10159		match *self {
10160			Self::Requested => "requested".to_string(),
10161			Self::InProgress => "in_progress".to_string(),
10162			Self::Completed => "completed".to_string(),
10163			Self::Queued => "queued".to_string(),
10164		}
10165	}
10166}
10167impl std::str::FromStr for DeploymentWorkflowRunStatus {
10168	type Err = &'static str;
10169
10170	fn from_str(value: &str) -> Result<Self, &'static str> {
10171		match value {
10172			"requested" => Ok(Self::Requested),
10173			"in_progress" => Ok(Self::InProgress),
10174			"completed" => Ok(Self::Completed),
10175			"queued" => Ok(Self::Queued),
10176			_ => Err("invalid value"),
10177		}
10178	}
10179}
10180impl std::convert::TryFrom<&str> for DeploymentWorkflowRunStatus {
10181	type Error = &'static str;
10182
10183	fn try_from(value: &str) -> Result<Self, &'static str> {
10184		value.parse()
10185	}
10186}
10187impl std::convert::TryFrom<&String> for DeploymentWorkflowRunStatus {
10188	type Error = &'static str;
10189
10190	fn try_from(value: &String) -> Result<Self, &'static str> {
10191		value.parse()
10192	}
10193}
10194impl std::convert::TryFrom<String> for DeploymentWorkflowRunStatus {
10195	type Error = &'static str;
10196
10197	fn try_from(value: String) -> Result<Self, &'static str> {
10198		value.parse()
10199	}
10200}
10201#[derive(Clone, Debug, Deserialize, Serialize)]
10202#[serde(deny_unknown_fields)]
10203pub struct Discussion {
10204	pub active_lock_reason: Option<String>,
10205	pub answer_chosen_at:   Option<chrono::DateTime<chrono::offset::Utc>>,
10206	pub answer_chosen_by:   Option<User>,
10207	pub answer_html_url:    Option<String>,
10208	pub author_association: AuthorAssociation,
10209	/// The discussion post's body text.
10210	pub body:               String,
10211	pub category:           DiscussionCategory,
10212	pub comments:           i64,
10213	pub created_at:         chrono::DateTime<chrono::offset::Utc>,
10214	pub html_url:           String,
10215	pub id:                 i64,
10216	pub locked:             bool,
10217	pub node_id:            String,
10218	pub number:             i64,
10219	#[serde(default, skip_serializing_if = "Option::is_none")]
10220	pub reactions:          Option<Reactions>,
10221	pub repository_url:     String,
10222	pub state:              DiscussionState,
10223	/// The discussion post's title.
10224	pub title:              String,
10225	pub updated_at:         chrono::DateTime<chrono::offset::Utc>,
10226	pub user:               User,
10227}
10228impl From<&Discussion> for Discussion {
10229	fn from(value: &Discussion) -> Self {
10230		value.clone()
10231	}
10232}
10233#[derive(Clone, Debug, Deserialize, Serialize)]
10234#[serde(deny_unknown_fields)]
10235pub struct DiscussionAnswered {
10236	pub action:       DiscussionAnsweredAction,
10237	pub answer:       DiscussionAnsweredAnswer,
10238	pub discussion:   Discussion,
10239	#[serde(default, skip_serializing_if = "Option::is_none")]
10240	pub installation: Option<InstallationLite>,
10241	#[serde(default, skip_serializing_if = "Option::is_none")]
10242	pub organization: Option<Organization>,
10243	pub repository:   Repository,
10244	pub sender:       User,
10245}
10246impl From<&DiscussionAnswered> for DiscussionAnswered {
10247	fn from(value: &DiscussionAnswered) -> Self {
10248		value.clone()
10249	}
10250}
10251#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10252pub enum DiscussionAnsweredAction {
10253	#[serde(rename = "answered")]
10254	Answered,
10255}
10256impl From<&DiscussionAnsweredAction> for DiscussionAnsweredAction {
10257	fn from(value: &DiscussionAnsweredAction) -> Self {
10258		value.clone()
10259	}
10260}
10261impl ToString for DiscussionAnsweredAction {
10262	fn to_string(&self) -> String {
10263		match *self {
10264			Self::Answered => "answered".to_string(),
10265		}
10266	}
10267}
10268impl std::str::FromStr for DiscussionAnsweredAction {
10269	type Err = &'static str;
10270
10271	fn from_str(value: &str) -> Result<Self, &'static str> {
10272		match value {
10273			"answered" => Ok(Self::Answered),
10274			_ => Err("invalid value"),
10275		}
10276	}
10277}
10278impl std::convert::TryFrom<&str> for DiscussionAnsweredAction {
10279	type Error = &'static str;
10280
10281	fn try_from(value: &str) -> Result<Self, &'static str> {
10282		value.parse()
10283	}
10284}
10285impl std::convert::TryFrom<&String> for DiscussionAnsweredAction {
10286	type Error = &'static str;
10287
10288	fn try_from(value: &String) -> Result<Self, &'static str> {
10289		value.parse()
10290	}
10291}
10292impl std::convert::TryFrom<String> for DiscussionAnsweredAction {
10293	type Error = &'static str;
10294
10295	fn try_from(value: String) -> Result<Self, &'static str> {
10296		value.parse()
10297	}
10298}
10299#[derive(Clone, Debug, Deserialize, Serialize)]
10300#[serde(deny_unknown_fields)]
10301pub struct DiscussionAnsweredAnswer {
10302	pub author_association:  AuthorAssociation,
10303	pub body:                String,
10304	pub child_comment_count: i64,
10305	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
10306	pub discussion_id:       i64,
10307	pub html_url:            String,
10308	pub id:                  i64,
10309	pub node_id:             String,
10310	pub parent_id:           (),
10311	pub repository_url:      String,
10312	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
10313	pub user:                User,
10314}
10315impl From<&DiscussionAnsweredAnswer> for DiscussionAnsweredAnswer {
10316	fn from(value: &DiscussionAnsweredAnswer) -> Self {
10317		value.clone()
10318	}
10319}
10320#[derive(Clone, Debug, Deserialize, Serialize)]
10321#[serde(deny_unknown_fields)]
10322pub struct DiscussionCategory {
10323	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
10324	pub description:   String,
10325	pub emoji:         String,
10326	pub id:            i64,
10327	pub is_answerable: bool,
10328	pub name:          String,
10329	pub repository_id: i64,
10330	pub slug:          String,
10331	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
10332}
10333impl From<&DiscussionCategory> for DiscussionCategory {
10334	fn from(value: &DiscussionCategory) -> Self {
10335		value.clone()
10336	}
10337}
10338#[derive(Clone, Debug, Deserialize, Serialize)]
10339#[serde(deny_unknown_fields)]
10340pub struct DiscussionCategoryChanged {
10341	pub action:       DiscussionCategoryChangedAction,
10342	pub changes:      DiscussionCategoryChangedChanges,
10343	pub discussion:   Discussion,
10344	#[serde(default, skip_serializing_if = "Option::is_none")]
10345	pub installation: Option<InstallationLite>,
10346	#[serde(default, skip_serializing_if = "Option::is_none")]
10347	pub organization: Option<Organization>,
10348	pub repository:   Repository,
10349	pub sender:       User,
10350}
10351impl From<&DiscussionCategoryChanged> for DiscussionCategoryChanged {
10352	fn from(value: &DiscussionCategoryChanged) -> Self {
10353		value.clone()
10354	}
10355}
10356#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10357pub enum DiscussionCategoryChangedAction {
10358	#[serde(rename = "category_changed")]
10359	CategoryChanged,
10360}
10361impl From<&DiscussionCategoryChangedAction> for DiscussionCategoryChangedAction {
10362	fn from(value: &DiscussionCategoryChangedAction) -> Self {
10363		value.clone()
10364	}
10365}
10366impl ToString for DiscussionCategoryChangedAction {
10367	fn to_string(&self) -> String {
10368		match *self {
10369			Self::CategoryChanged => "category_changed".to_string(),
10370		}
10371	}
10372}
10373impl std::str::FromStr for DiscussionCategoryChangedAction {
10374	type Err = &'static str;
10375
10376	fn from_str(value: &str) -> Result<Self, &'static str> {
10377		match value {
10378			"category_changed" => Ok(Self::CategoryChanged),
10379			_ => Err("invalid value"),
10380		}
10381	}
10382}
10383impl std::convert::TryFrom<&str> for DiscussionCategoryChangedAction {
10384	type Error = &'static str;
10385
10386	fn try_from(value: &str) -> Result<Self, &'static str> {
10387		value.parse()
10388	}
10389}
10390impl std::convert::TryFrom<&String> for DiscussionCategoryChangedAction {
10391	type Error = &'static str;
10392
10393	fn try_from(value: &String) -> Result<Self, &'static str> {
10394		value.parse()
10395	}
10396}
10397impl std::convert::TryFrom<String> for DiscussionCategoryChangedAction {
10398	type Error = &'static str;
10399
10400	fn try_from(value: String) -> Result<Self, &'static str> {
10401		value.parse()
10402	}
10403}
10404#[derive(Clone, Debug, Deserialize, Serialize)]
10405#[serde(deny_unknown_fields)]
10406pub struct DiscussionCategoryChangedChanges {
10407	pub category: DiscussionCategoryChangedChangesCategory,
10408}
10409impl From<&DiscussionCategoryChangedChanges> for DiscussionCategoryChangedChanges {
10410	fn from(value: &DiscussionCategoryChangedChanges) -> Self {
10411		value.clone()
10412	}
10413}
10414#[derive(Clone, Debug, Deserialize, Serialize)]
10415#[serde(deny_unknown_fields)]
10416pub struct DiscussionCategoryChangedChangesCategory {
10417	pub from: DiscussionCategoryChangedChangesCategoryFrom,
10418}
10419impl From<&DiscussionCategoryChangedChangesCategory> for DiscussionCategoryChangedChangesCategory {
10420	fn from(value: &DiscussionCategoryChangedChangesCategory) -> Self {
10421		value.clone()
10422	}
10423}
10424#[derive(Clone, Debug, Deserialize, Serialize)]
10425#[serde(deny_unknown_fields)]
10426pub struct DiscussionCategoryChangedChangesCategoryFrom {
10427	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
10428	pub description:   String,
10429	pub emoji:         String,
10430	pub id:            i64,
10431	pub is_answerable: bool,
10432	pub name:          String,
10433	pub repository_id: i64,
10434	pub slug:          String,
10435	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
10436}
10437impl From<&DiscussionCategoryChangedChangesCategoryFrom>
10438	for DiscussionCategoryChangedChangesCategoryFrom
10439{
10440	fn from(value: &DiscussionCategoryChangedChangesCategoryFrom) -> Self {
10441		value.clone()
10442	}
10443}
10444#[derive(Clone, Debug, Deserialize, Serialize)]
10445#[serde(deny_unknown_fields)]
10446pub struct DiscussionCommentCreated {
10447	pub action:       DiscussionCommentCreatedAction,
10448	pub comment:      DiscussionCommentCreatedComment,
10449	pub discussion:   Discussion,
10450	pub installation: InstallationLite,
10451	#[serde(default, skip_serializing_if = "Option::is_none")]
10452	pub organization: Option<Organization>,
10453	pub repository:   Repository,
10454	pub sender:       User,
10455}
10456impl From<&DiscussionCommentCreated> for DiscussionCommentCreated {
10457	fn from(value: &DiscussionCommentCreated) -> Self {
10458		value.clone()
10459	}
10460}
10461#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10462pub enum DiscussionCommentCreatedAction {
10463	#[serde(rename = "created")]
10464	Created,
10465}
10466impl From<&DiscussionCommentCreatedAction> for DiscussionCommentCreatedAction {
10467	fn from(value: &DiscussionCommentCreatedAction) -> Self {
10468		value.clone()
10469	}
10470}
10471impl ToString for DiscussionCommentCreatedAction {
10472	fn to_string(&self) -> String {
10473		match *self {
10474			Self::Created => "created".to_string(),
10475		}
10476	}
10477}
10478impl std::str::FromStr for DiscussionCommentCreatedAction {
10479	type Err = &'static str;
10480
10481	fn from_str(value: &str) -> Result<Self, &'static str> {
10482		match value {
10483			"created" => Ok(Self::Created),
10484			_ => Err("invalid value"),
10485		}
10486	}
10487}
10488impl std::convert::TryFrom<&str> for DiscussionCommentCreatedAction {
10489	type Error = &'static str;
10490
10491	fn try_from(value: &str) -> Result<Self, &'static str> {
10492		value.parse()
10493	}
10494}
10495impl std::convert::TryFrom<&String> for DiscussionCommentCreatedAction {
10496	type Error = &'static str;
10497
10498	fn try_from(value: &String) -> Result<Self, &'static str> {
10499		value.parse()
10500	}
10501}
10502impl std::convert::TryFrom<String> for DiscussionCommentCreatedAction {
10503	type Error = &'static str;
10504
10505	fn try_from(value: String) -> Result<Self, &'static str> {
10506		value.parse()
10507	}
10508}
10509#[derive(Clone, Debug, Deserialize, Serialize)]
10510#[serde(deny_unknown_fields)]
10511pub struct DiscussionCommentCreatedComment {
10512	pub author_association:  AuthorAssociation,
10513	/// The main text of the comment.
10514	pub body:                String,
10515	pub child_comment_count: i64,
10516	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
10517	pub discussion_id:       i64,
10518	pub html_url:            String,
10519	pub id:                  i64,
10520	pub node_id:             String,
10521	pub parent_id:           Option<i64>,
10522	pub reactions:           Reactions,
10523	pub repository_url:      String,
10524	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
10525	pub user:                User,
10526}
10527impl From<&DiscussionCommentCreatedComment> for DiscussionCommentCreatedComment {
10528	fn from(value: &DiscussionCommentCreatedComment) -> Self {
10529		value.clone()
10530	}
10531}
10532#[derive(Clone, Debug, Deserialize, Serialize)]
10533#[serde(deny_unknown_fields)]
10534pub struct DiscussionCommentDeleted {
10535	pub action:       DiscussionCommentDeletedAction,
10536	pub comment:      DiscussionCommentDeletedComment,
10537	pub discussion:   Discussion,
10538	pub installation: InstallationLite,
10539	#[serde(default, skip_serializing_if = "Option::is_none")]
10540	pub organization: Option<Organization>,
10541	pub repository:   Repository,
10542	pub sender:       User,
10543}
10544impl From<&DiscussionCommentDeleted> for DiscussionCommentDeleted {
10545	fn from(value: &DiscussionCommentDeleted) -> Self {
10546		value.clone()
10547	}
10548}
10549#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10550pub enum DiscussionCommentDeletedAction {
10551	#[serde(rename = "deleted")]
10552	Deleted,
10553}
10554impl From<&DiscussionCommentDeletedAction> for DiscussionCommentDeletedAction {
10555	fn from(value: &DiscussionCommentDeletedAction) -> Self {
10556		value.clone()
10557	}
10558}
10559impl ToString for DiscussionCommentDeletedAction {
10560	fn to_string(&self) -> String {
10561		match *self {
10562			Self::Deleted => "deleted".to_string(),
10563		}
10564	}
10565}
10566impl std::str::FromStr for DiscussionCommentDeletedAction {
10567	type Err = &'static str;
10568
10569	fn from_str(value: &str) -> Result<Self, &'static str> {
10570		match value {
10571			"deleted" => Ok(Self::Deleted),
10572			_ => Err("invalid value"),
10573		}
10574	}
10575}
10576impl std::convert::TryFrom<&str> for DiscussionCommentDeletedAction {
10577	type Error = &'static str;
10578
10579	fn try_from(value: &str) -> Result<Self, &'static str> {
10580		value.parse()
10581	}
10582}
10583impl std::convert::TryFrom<&String> for DiscussionCommentDeletedAction {
10584	type Error = &'static str;
10585
10586	fn try_from(value: &String) -> Result<Self, &'static str> {
10587		value.parse()
10588	}
10589}
10590impl std::convert::TryFrom<String> for DiscussionCommentDeletedAction {
10591	type Error = &'static str;
10592
10593	fn try_from(value: String) -> Result<Self, &'static str> {
10594		value.parse()
10595	}
10596}
10597#[derive(Clone, Debug, Deserialize, Serialize)]
10598#[serde(deny_unknown_fields)]
10599pub struct DiscussionCommentDeletedComment {
10600	pub author_association:  AuthorAssociation,
10601	/// The main text of the comment.
10602	pub body:                String,
10603	pub child_comment_count: i64,
10604	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
10605	pub discussion_id:       i64,
10606	pub html_url:            String,
10607	pub id:                  i64,
10608	pub node_id:             String,
10609	pub parent_id:           Option<i64>,
10610	pub reactions:           Reactions,
10611	pub repository_url:      String,
10612	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
10613	pub user:                User,
10614}
10615impl From<&DiscussionCommentDeletedComment> for DiscussionCommentDeletedComment {
10616	fn from(value: &DiscussionCommentDeletedComment) -> Self {
10617		value.clone()
10618	}
10619}
10620#[derive(Clone, Debug, Deserialize, Serialize)]
10621#[serde(deny_unknown_fields)]
10622pub struct DiscussionCommentEdited {
10623	pub action:       DiscussionCommentEditedAction,
10624	pub changes:      DiscussionCommentEditedChanges,
10625	pub comment:      DiscussionCommentEditedComment,
10626	pub discussion:   Discussion,
10627	pub installation: InstallationLite,
10628	#[serde(default, skip_serializing_if = "Option::is_none")]
10629	pub organization: Option<Organization>,
10630	pub repository:   Repository,
10631	pub sender:       User,
10632}
10633impl From<&DiscussionCommentEdited> for DiscussionCommentEdited {
10634	fn from(value: &DiscussionCommentEdited) -> Self {
10635		value.clone()
10636	}
10637}
10638#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10639pub enum DiscussionCommentEditedAction {
10640	#[serde(rename = "edited")]
10641	Edited,
10642}
10643impl From<&DiscussionCommentEditedAction> for DiscussionCommentEditedAction {
10644	fn from(value: &DiscussionCommentEditedAction) -> Self {
10645		value.clone()
10646	}
10647}
10648impl ToString for DiscussionCommentEditedAction {
10649	fn to_string(&self) -> String {
10650		match *self {
10651			Self::Edited => "edited".to_string(),
10652		}
10653	}
10654}
10655impl std::str::FromStr for DiscussionCommentEditedAction {
10656	type Err = &'static str;
10657
10658	fn from_str(value: &str) -> Result<Self, &'static str> {
10659		match value {
10660			"edited" => Ok(Self::Edited),
10661			_ => Err("invalid value"),
10662		}
10663	}
10664}
10665impl std::convert::TryFrom<&str> for DiscussionCommentEditedAction {
10666	type Error = &'static str;
10667
10668	fn try_from(value: &str) -> Result<Self, &'static str> {
10669		value.parse()
10670	}
10671}
10672impl std::convert::TryFrom<&String> for DiscussionCommentEditedAction {
10673	type Error = &'static str;
10674
10675	fn try_from(value: &String) -> Result<Self, &'static str> {
10676		value.parse()
10677	}
10678}
10679impl std::convert::TryFrom<String> for DiscussionCommentEditedAction {
10680	type Error = &'static str;
10681
10682	fn try_from(value: String) -> Result<Self, &'static str> {
10683		value.parse()
10684	}
10685}
10686#[derive(Clone, Debug, Deserialize, Serialize)]
10687#[serde(deny_unknown_fields)]
10688pub struct DiscussionCommentEditedChanges {
10689	pub body: DiscussionCommentEditedChangesBody,
10690}
10691impl From<&DiscussionCommentEditedChanges> for DiscussionCommentEditedChanges {
10692	fn from(value: &DiscussionCommentEditedChanges) -> Self {
10693		value.clone()
10694	}
10695}
10696#[derive(Clone, Debug, Deserialize, Serialize)]
10697#[serde(deny_unknown_fields)]
10698pub struct DiscussionCommentEditedChangesBody {
10699	pub from: String,
10700}
10701impl From<&DiscussionCommentEditedChangesBody> for DiscussionCommentEditedChangesBody {
10702	fn from(value: &DiscussionCommentEditedChangesBody) -> Self {
10703		value.clone()
10704	}
10705}
10706#[derive(Clone, Debug, Deserialize, Serialize)]
10707#[serde(deny_unknown_fields)]
10708pub struct DiscussionCommentEditedComment {
10709	pub author_association:  AuthorAssociation,
10710	/// The main text of the comment.
10711	pub body:                String,
10712	pub child_comment_count: i64,
10713	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
10714	pub discussion_id:       i64,
10715	pub html_url:            String,
10716	pub id:                  i64,
10717	pub node_id:             String,
10718	pub parent_id:           Option<i64>,
10719	pub reactions:           Reactions,
10720	pub repository_url:      String,
10721	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
10722	pub user:                User,
10723}
10724impl From<&DiscussionCommentEditedComment> for DiscussionCommentEditedComment {
10725	fn from(value: &DiscussionCommentEditedComment) -> Self {
10726		value.clone()
10727	}
10728}
10729#[derive(Clone, Debug, Deserialize, Serialize)]
10730#[serde(untagged)]
10731pub enum DiscussionCommentEvent {
10732	Created(DiscussionCommentCreated),
10733	Deleted(DiscussionCommentDeleted),
10734	Edited(DiscussionCommentEdited),
10735}
10736impl From<&DiscussionCommentEvent> for DiscussionCommentEvent {
10737	fn from(value: &DiscussionCommentEvent) -> Self {
10738		value.clone()
10739	}
10740}
10741impl From<DiscussionCommentCreated> for DiscussionCommentEvent {
10742	fn from(value: DiscussionCommentCreated) -> Self {
10743		Self::Created(value)
10744	}
10745}
10746impl From<DiscussionCommentDeleted> for DiscussionCommentEvent {
10747	fn from(value: DiscussionCommentDeleted) -> Self {
10748		Self::Deleted(value)
10749	}
10750}
10751impl From<DiscussionCommentEdited> for DiscussionCommentEvent {
10752	fn from(value: DiscussionCommentEdited) -> Self {
10753		Self::Edited(value)
10754	}
10755}
10756#[derive(Clone, Debug, Deserialize, Serialize)]
10757#[serde(deny_unknown_fields)]
10758pub struct DiscussionCreated {
10759	pub action:       DiscussionCreatedAction,
10760	pub discussion:   Discussion,
10761	#[serde(default, skip_serializing_if = "Option::is_none")]
10762	pub installation: Option<InstallationLite>,
10763	#[serde(default, skip_serializing_if = "Option::is_none")]
10764	pub organization: Option<Organization>,
10765	pub repository:   Repository,
10766	pub sender:       User,
10767}
10768impl From<&DiscussionCreated> for DiscussionCreated {
10769	fn from(value: &DiscussionCreated) -> Self {
10770		value.clone()
10771	}
10772}
10773#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10774pub enum DiscussionCreatedAction {
10775	#[serde(rename = "created")]
10776	Created,
10777}
10778impl From<&DiscussionCreatedAction> for DiscussionCreatedAction {
10779	fn from(value: &DiscussionCreatedAction) -> Self {
10780		value.clone()
10781	}
10782}
10783impl ToString for DiscussionCreatedAction {
10784	fn to_string(&self) -> String {
10785		match *self {
10786			Self::Created => "created".to_string(),
10787		}
10788	}
10789}
10790impl std::str::FromStr for DiscussionCreatedAction {
10791	type Err = &'static str;
10792
10793	fn from_str(value: &str) -> Result<Self, &'static str> {
10794		match value {
10795			"created" => Ok(Self::Created),
10796			_ => Err("invalid value"),
10797		}
10798	}
10799}
10800impl std::convert::TryFrom<&str> for DiscussionCreatedAction {
10801	type Error = &'static str;
10802
10803	fn try_from(value: &str) -> Result<Self, &'static str> {
10804		value.parse()
10805	}
10806}
10807impl std::convert::TryFrom<&String> for DiscussionCreatedAction {
10808	type Error = &'static str;
10809
10810	fn try_from(value: &String) -> Result<Self, &'static str> {
10811		value.parse()
10812	}
10813}
10814impl std::convert::TryFrom<String> for DiscussionCreatedAction {
10815	type Error = &'static str;
10816
10817	fn try_from(value: String) -> Result<Self, &'static str> {
10818		value.parse()
10819	}
10820}
10821#[derive(Clone, Debug, Deserialize, Serialize)]
10822#[serde(deny_unknown_fields)]
10823pub struct DiscussionDeleted {
10824	pub action:       DiscussionDeletedAction,
10825	pub discussion:   Discussion,
10826	#[serde(default, skip_serializing_if = "Option::is_none")]
10827	pub installation: Option<InstallationLite>,
10828	#[serde(default, skip_serializing_if = "Option::is_none")]
10829	pub organization: Option<Organization>,
10830	pub repository:   Repository,
10831	pub sender:       User,
10832}
10833impl From<&DiscussionDeleted> for DiscussionDeleted {
10834	fn from(value: &DiscussionDeleted) -> Self {
10835		value.clone()
10836	}
10837}
10838#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10839pub enum DiscussionDeletedAction {
10840	#[serde(rename = "deleted")]
10841	Deleted,
10842}
10843impl From<&DiscussionDeletedAction> for DiscussionDeletedAction {
10844	fn from(value: &DiscussionDeletedAction) -> Self {
10845		value.clone()
10846	}
10847}
10848impl ToString for DiscussionDeletedAction {
10849	fn to_string(&self) -> String {
10850		match *self {
10851			Self::Deleted => "deleted".to_string(),
10852		}
10853	}
10854}
10855impl std::str::FromStr for DiscussionDeletedAction {
10856	type Err = &'static str;
10857
10858	fn from_str(value: &str) -> Result<Self, &'static str> {
10859		match value {
10860			"deleted" => Ok(Self::Deleted),
10861			_ => Err("invalid value"),
10862		}
10863	}
10864}
10865impl std::convert::TryFrom<&str> for DiscussionDeletedAction {
10866	type Error = &'static str;
10867
10868	fn try_from(value: &str) -> Result<Self, &'static str> {
10869		value.parse()
10870	}
10871}
10872impl std::convert::TryFrom<&String> for DiscussionDeletedAction {
10873	type Error = &'static str;
10874
10875	fn try_from(value: &String) -> Result<Self, &'static str> {
10876		value.parse()
10877	}
10878}
10879impl std::convert::TryFrom<String> for DiscussionDeletedAction {
10880	type Error = &'static str;
10881
10882	fn try_from(value: String) -> Result<Self, &'static str> {
10883		value.parse()
10884	}
10885}
10886#[derive(Clone, Debug, Deserialize, Serialize)]
10887#[serde(deny_unknown_fields)]
10888pub struct DiscussionEdited {
10889	pub action:       DiscussionEditedAction,
10890	#[serde(default, skip_serializing_if = "Option::is_none")]
10891	pub changes:      Option<DiscussionEditedChanges>,
10892	pub discussion:   Discussion,
10893	#[serde(default, skip_serializing_if = "Option::is_none")]
10894	pub installation: Option<InstallationLite>,
10895	#[serde(default, skip_serializing_if = "Option::is_none")]
10896	pub organization: Option<Organization>,
10897	pub repository:   Repository,
10898	pub sender:       User,
10899}
10900impl From<&DiscussionEdited> for DiscussionEdited {
10901	fn from(value: &DiscussionEdited) -> Self {
10902		value.clone()
10903	}
10904}
10905#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10906pub enum DiscussionEditedAction {
10907	#[serde(rename = "edited")]
10908	Edited,
10909}
10910impl From<&DiscussionEditedAction> for DiscussionEditedAction {
10911	fn from(value: &DiscussionEditedAction) -> Self {
10912		value.clone()
10913	}
10914}
10915impl ToString for DiscussionEditedAction {
10916	fn to_string(&self) -> String {
10917		match *self {
10918			Self::Edited => "edited".to_string(),
10919		}
10920	}
10921}
10922impl std::str::FromStr for DiscussionEditedAction {
10923	type Err = &'static str;
10924
10925	fn from_str(value: &str) -> Result<Self, &'static str> {
10926		match value {
10927			"edited" => Ok(Self::Edited),
10928			_ => Err("invalid value"),
10929		}
10930	}
10931}
10932impl std::convert::TryFrom<&str> for DiscussionEditedAction {
10933	type Error = &'static str;
10934
10935	fn try_from(value: &str) -> Result<Self, &'static str> {
10936		value.parse()
10937	}
10938}
10939impl std::convert::TryFrom<&String> for DiscussionEditedAction {
10940	type Error = &'static str;
10941
10942	fn try_from(value: &String) -> Result<Self, &'static str> {
10943		value.parse()
10944	}
10945}
10946impl std::convert::TryFrom<String> for DiscussionEditedAction {
10947	type Error = &'static str;
10948
10949	fn try_from(value: String) -> Result<Self, &'static str> {
10950		value.parse()
10951	}
10952}
10953#[derive(Clone, Debug, Deserialize, Serialize)]
10954#[serde(deny_unknown_fields)]
10955pub struct DiscussionEditedChanges {
10956	#[serde(default, skip_serializing_if = "Option::is_none")]
10957	pub body:  Option<DiscussionEditedChangesBody>,
10958	#[serde(default, skip_serializing_if = "Option::is_none")]
10959	pub title: Option<DiscussionEditedChangesTitle>,
10960}
10961impl From<&DiscussionEditedChanges> for DiscussionEditedChanges {
10962	fn from(value: &DiscussionEditedChanges) -> Self {
10963		value.clone()
10964	}
10965}
10966#[derive(Clone, Debug, Deserialize, Serialize)]
10967#[serde(deny_unknown_fields)]
10968pub struct DiscussionEditedChangesBody {
10969	pub from: String,
10970}
10971impl From<&DiscussionEditedChangesBody> for DiscussionEditedChangesBody {
10972	fn from(value: &DiscussionEditedChangesBody) -> Self {
10973		value.clone()
10974	}
10975}
10976#[derive(Clone, Debug, Deserialize, Serialize)]
10977#[serde(deny_unknown_fields)]
10978pub struct DiscussionEditedChangesTitle {
10979	pub from: String,
10980}
10981impl From<&DiscussionEditedChangesTitle> for DiscussionEditedChangesTitle {
10982	fn from(value: &DiscussionEditedChangesTitle) -> Self {
10983		value.clone()
10984	}
10985}
10986#[derive(Clone, Debug, Deserialize, Serialize)]
10987#[serde(untagged)]
10988pub enum DiscussionEvent {
10989	Answered(DiscussionAnswered),
10990	CategoryChanged(DiscussionCategoryChanged),
10991	Created(DiscussionCreated),
10992	Deleted(DiscussionDeleted),
10993	Edited(DiscussionEdited),
10994	Labeled(DiscussionLabeled),
10995	Locked(DiscussionLocked),
10996	Pinned(DiscussionPinned),
10997	Transferred(DiscussionTransferred),
10998	Unanswered(DiscussionUnanswered),
10999	Unlabeled(DiscussionUnlabeled),
11000	Unlocked(DiscussionUnlocked),
11001	Unpinned(DiscussionUnpinned),
11002}
11003impl From<&DiscussionEvent> for DiscussionEvent {
11004	fn from(value: &DiscussionEvent) -> Self {
11005		value.clone()
11006	}
11007}
11008impl From<DiscussionAnswered> for DiscussionEvent {
11009	fn from(value: DiscussionAnswered) -> Self {
11010		Self::Answered(value)
11011	}
11012}
11013impl From<DiscussionCategoryChanged> for DiscussionEvent {
11014	fn from(value: DiscussionCategoryChanged) -> Self {
11015		Self::CategoryChanged(value)
11016	}
11017}
11018impl From<DiscussionCreated> for DiscussionEvent {
11019	fn from(value: DiscussionCreated) -> Self {
11020		Self::Created(value)
11021	}
11022}
11023impl From<DiscussionDeleted> for DiscussionEvent {
11024	fn from(value: DiscussionDeleted) -> Self {
11025		Self::Deleted(value)
11026	}
11027}
11028impl From<DiscussionEdited> for DiscussionEvent {
11029	fn from(value: DiscussionEdited) -> Self {
11030		Self::Edited(value)
11031	}
11032}
11033impl From<DiscussionLabeled> for DiscussionEvent {
11034	fn from(value: DiscussionLabeled) -> Self {
11035		Self::Labeled(value)
11036	}
11037}
11038impl From<DiscussionLocked> for DiscussionEvent {
11039	fn from(value: DiscussionLocked) -> Self {
11040		Self::Locked(value)
11041	}
11042}
11043impl From<DiscussionPinned> for DiscussionEvent {
11044	fn from(value: DiscussionPinned) -> Self {
11045		Self::Pinned(value)
11046	}
11047}
11048impl From<DiscussionTransferred> for DiscussionEvent {
11049	fn from(value: DiscussionTransferred) -> Self {
11050		Self::Transferred(value)
11051	}
11052}
11053impl From<DiscussionUnanswered> for DiscussionEvent {
11054	fn from(value: DiscussionUnanswered) -> Self {
11055		Self::Unanswered(value)
11056	}
11057}
11058impl From<DiscussionUnlabeled> for DiscussionEvent {
11059	fn from(value: DiscussionUnlabeled) -> Self {
11060		Self::Unlabeled(value)
11061	}
11062}
11063impl From<DiscussionUnlocked> for DiscussionEvent {
11064	fn from(value: DiscussionUnlocked) -> Self {
11065		Self::Unlocked(value)
11066	}
11067}
11068impl From<DiscussionUnpinned> for DiscussionEvent {
11069	fn from(value: DiscussionUnpinned) -> Self {
11070		Self::Unpinned(value)
11071	}
11072}
11073#[derive(Clone, Debug, Deserialize, Serialize)]
11074#[serde(deny_unknown_fields)]
11075pub struct DiscussionLabeled {
11076	pub action:       DiscussionLabeledAction,
11077	pub discussion:   Discussion,
11078	#[serde(default, skip_serializing_if = "Option::is_none")]
11079	pub installation: Option<InstallationLite>,
11080	pub label:        Label,
11081	#[serde(default, skip_serializing_if = "Option::is_none")]
11082	pub organization: Option<Organization>,
11083	pub repository:   Repository,
11084	pub sender:       User,
11085}
11086impl From<&DiscussionLabeled> for DiscussionLabeled {
11087	fn from(value: &DiscussionLabeled) -> Self {
11088		value.clone()
11089	}
11090}
11091#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11092pub enum DiscussionLabeledAction {
11093	#[serde(rename = "labeled")]
11094	Labeled,
11095}
11096impl From<&DiscussionLabeledAction> for DiscussionLabeledAction {
11097	fn from(value: &DiscussionLabeledAction) -> Self {
11098		value.clone()
11099	}
11100}
11101impl ToString for DiscussionLabeledAction {
11102	fn to_string(&self) -> String {
11103		match *self {
11104			Self::Labeled => "labeled".to_string(),
11105		}
11106	}
11107}
11108impl std::str::FromStr for DiscussionLabeledAction {
11109	type Err = &'static str;
11110
11111	fn from_str(value: &str) -> Result<Self, &'static str> {
11112		match value {
11113			"labeled" => Ok(Self::Labeled),
11114			_ => Err("invalid value"),
11115		}
11116	}
11117}
11118impl std::convert::TryFrom<&str> for DiscussionLabeledAction {
11119	type Error = &'static str;
11120
11121	fn try_from(value: &str) -> Result<Self, &'static str> {
11122		value.parse()
11123	}
11124}
11125impl std::convert::TryFrom<&String> for DiscussionLabeledAction {
11126	type Error = &'static str;
11127
11128	fn try_from(value: &String) -> Result<Self, &'static str> {
11129		value.parse()
11130	}
11131}
11132impl std::convert::TryFrom<String> for DiscussionLabeledAction {
11133	type Error = &'static str;
11134
11135	fn try_from(value: String) -> Result<Self, &'static str> {
11136		value.parse()
11137	}
11138}
11139#[derive(Clone, Debug, Deserialize, Serialize)]
11140#[serde(deny_unknown_fields)]
11141pub struct DiscussionLocked {
11142	pub action:       DiscussionLockedAction,
11143	pub discussion:   Discussion,
11144	#[serde(default, skip_serializing_if = "Option::is_none")]
11145	pub installation: Option<InstallationLite>,
11146	#[serde(default, skip_serializing_if = "Option::is_none")]
11147	pub organization: Option<Organization>,
11148	pub repository:   Repository,
11149	pub sender:       User,
11150}
11151impl From<&DiscussionLocked> for DiscussionLocked {
11152	fn from(value: &DiscussionLocked) -> Self {
11153		value.clone()
11154	}
11155}
11156#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11157pub enum DiscussionLockedAction {
11158	#[serde(rename = "locked")]
11159	Locked,
11160}
11161impl From<&DiscussionLockedAction> for DiscussionLockedAction {
11162	fn from(value: &DiscussionLockedAction) -> Self {
11163		value.clone()
11164	}
11165}
11166impl ToString for DiscussionLockedAction {
11167	fn to_string(&self) -> String {
11168		match *self {
11169			Self::Locked => "locked".to_string(),
11170		}
11171	}
11172}
11173impl std::str::FromStr for DiscussionLockedAction {
11174	type Err = &'static str;
11175
11176	fn from_str(value: &str) -> Result<Self, &'static str> {
11177		match value {
11178			"locked" => Ok(Self::Locked),
11179			_ => Err("invalid value"),
11180		}
11181	}
11182}
11183impl std::convert::TryFrom<&str> for DiscussionLockedAction {
11184	type Error = &'static str;
11185
11186	fn try_from(value: &str) -> Result<Self, &'static str> {
11187		value.parse()
11188	}
11189}
11190impl std::convert::TryFrom<&String> for DiscussionLockedAction {
11191	type Error = &'static str;
11192
11193	fn try_from(value: &String) -> Result<Self, &'static str> {
11194		value.parse()
11195	}
11196}
11197impl std::convert::TryFrom<String> for DiscussionLockedAction {
11198	type Error = &'static str;
11199
11200	fn try_from(value: String) -> Result<Self, &'static str> {
11201		value.parse()
11202	}
11203}
11204#[derive(Clone, Debug, Deserialize, Serialize)]
11205#[serde(deny_unknown_fields)]
11206pub struct DiscussionPinned {
11207	pub action:       DiscussionPinnedAction,
11208	pub discussion:   Discussion,
11209	#[serde(default, skip_serializing_if = "Option::is_none")]
11210	pub installation: Option<InstallationLite>,
11211	#[serde(default, skip_serializing_if = "Option::is_none")]
11212	pub organization: Option<Organization>,
11213	pub repository:   Repository,
11214	pub sender:       User,
11215}
11216impl From<&DiscussionPinned> for DiscussionPinned {
11217	fn from(value: &DiscussionPinned) -> Self {
11218		value.clone()
11219	}
11220}
11221#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11222pub enum DiscussionPinnedAction {
11223	#[serde(rename = "pinned")]
11224	Pinned,
11225}
11226impl From<&DiscussionPinnedAction> for DiscussionPinnedAction {
11227	fn from(value: &DiscussionPinnedAction) -> Self {
11228		value.clone()
11229	}
11230}
11231impl ToString for DiscussionPinnedAction {
11232	fn to_string(&self) -> String {
11233		match *self {
11234			Self::Pinned => "pinned".to_string(),
11235		}
11236	}
11237}
11238impl std::str::FromStr for DiscussionPinnedAction {
11239	type Err = &'static str;
11240
11241	fn from_str(value: &str) -> Result<Self, &'static str> {
11242		match value {
11243			"pinned" => Ok(Self::Pinned),
11244			_ => Err("invalid value"),
11245		}
11246	}
11247}
11248impl std::convert::TryFrom<&str> for DiscussionPinnedAction {
11249	type Error = &'static str;
11250
11251	fn try_from(value: &str) -> Result<Self, &'static str> {
11252		value.parse()
11253	}
11254}
11255impl std::convert::TryFrom<&String> for DiscussionPinnedAction {
11256	type Error = &'static str;
11257
11258	fn try_from(value: &String) -> Result<Self, &'static str> {
11259		value.parse()
11260	}
11261}
11262impl std::convert::TryFrom<String> for DiscussionPinnedAction {
11263	type Error = &'static str;
11264
11265	fn try_from(value: String) -> Result<Self, &'static str> {
11266		value.parse()
11267	}
11268}
11269#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11270pub enum DiscussionState {
11271	#[serde(rename = "open")]
11272	Open,
11273	#[serde(rename = "locked")]
11274	Locked,
11275	#[serde(rename = "converting")]
11276	Converting,
11277}
11278impl From<&DiscussionState> for DiscussionState {
11279	fn from(value: &DiscussionState) -> Self {
11280		value.clone()
11281	}
11282}
11283impl ToString for DiscussionState {
11284	fn to_string(&self) -> String {
11285		match *self {
11286			Self::Open => "open".to_string(),
11287			Self::Locked => "locked".to_string(),
11288			Self::Converting => "converting".to_string(),
11289		}
11290	}
11291}
11292impl std::str::FromStr for DiscussionState {
11293	type Err = &'static str;
11294
11295	fn from_str(value: &str) -> Result<Self, &'static str> {
11296		match value {
11297			"open" => Ok(Self::Open),
11298			"locked" => Ok(Self::Locked),
11299			"converting" => Ok(Self::Converting),
11300			_ => Err("invalid value"),
11301		}
11302	}
11303}
11304impl std::convert::TryFrom<&str> for DiscussionState {
11305	type Error = &'static str;
11306
11307	fn try_from(value: &str) -> Result<Self, &'static str> {
11308		value.parse()
11309	}
11310}
11311impl std::convert::TryFrom<&String> for DiscussionState {
11312	type Error = &'static str;
11313
11314	fn try_from(value: &String) -> Result<Self, &'static str> {
11315		value.parse()
11316	}
11317}
11318impl std::convert::TryFrom<String> for DiscussionState {
11319	type Error = &'static str;
11320
11321	fn try_from(value: String) -> Result<Self, &'static str> {
11322		value.parse()
11323	}
11324}
11325#[derive(Clone, Debug, Deserialize, Serialize)]
11326#[serde(deny_unknown_fields)]
11327pub struct DiscussionTransferred {
11328	pub action:       DiscussionTransferredAction,
11329	pub changes:      DiscussionTransferredChanges,
11330	pub discussion:   Discussion,
11331	#[serde(default, skip_serializing_if = "Option::is_none")]
11332	pub installation: Option<InstallationLite>,
11333	#[serde(default, skip_serializing_if = "Option::is_none")]
11334	pub organization: Option<Organization>,
11335	pub repository:   Repository,
11336	pub sender:       User,
11337}
11338impl From<&DiscussionTransferred> for DiscussionTransferred {
11339	fn from(value: &DiscussionTransferred) -> Self {
11340		value.clone()
11341	}
11342}
11343#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11344pub enum DiscussionTransferredAction {
11345	#[serde(rename = "transferred")]
11346	Transferred,
11347}
11348impl From<&DiscussionTransferredAction> for DiscussionTransferredAction {
11349	fn from(value: &DiscussionTransferredAction) -> Self {
11350		value.clone()
11351	}
11352}
11353impl ToString for DiscussionTransferredAction {
11354	fn to_string(&self) -> String {
11355		match *self {
11356			Self::Transferred => "transferred".to_string(),
11357		}
11358	}
11359}
11360impl std::str::FromStr for DiscussionTransferredAction {
11361	type Err = &'static str;
11362
11363	fn from_str(value: &str) -> Result<Self, &'static str> {
11364		match value {
11365			"transferred" => Ok(Self::Transferred),
11366			_ => Err("invalid value"),
11367		}
11368	}
11369}
11370impl std::convert::TryFrom<&str> for DiscussionTransferredAction {
11371	type Error = &'static str;
11372
11373	fn try_from(value: &str) -> Result<Self, &'static str> {
11374		value.parse()
11375	}
11376}
11377impl std::convert::TryFrom<&String> for DiscussionTransferredAction {
11378	type Error = &'static str;
11379
11380	fn try_from(value: &String) -> Result<Self, &'static str> {
11381		value.parse()
11382	}
11383}
11384impl std::convert::TryFrom<String> for DiscussionTransferredAction {
11385	type Error = &'static str;
11386
11387	fn try_from(value: String) -> Result<Self, &'static str> {
11388		value.parse()
11389	}
11390}
11391#[derive(Clone, Debug, Deserialize, Serialize)]
11392#[serde(deny_unknown_fields)]
11393pub struct DiscussionTransferredChanges {
11394	pub new_discussion: Discussion,
11395	pub new_repository: Repository,
11396}
11397impl From<&DiscussionTransferredChanges> for DiscussionTransferredChanges {
11398	fn from(value: &DiscussionTransferredChanges) -> Self {
11399		value.clone()
11400	}
11401}
11402#[derive(Clone, Debug, Deserialize, Serialize)]
11403#[serde(deny_unknown_fields)]
11404pub struct DiscussionUnanswered {
11405	pub action:       DiscussionUnansweredAction,
11406	pub discussion:   Discussion,
11407	#[serde(default, skip_serializing_if = "Option::is_none")]
11408	pub installation: Option<InstallationLite>,
11409	pub old_answer:   DiscussionUnansweredOldAnswer,
11410	#[serde(default, skip_serializing_if = "Option::is_none")]
11411	pub organization: Option<Organization>,
11412	pub repository:   Repository,
11413	pub sender:       User,
11414}
11415impl From<&DiscussionUnanswered> for DiscussionUnanswered {
11416	fn from(value: &DiscussionUnanswered) -> Self {
11417		value.clone()
11418	}
11419}
11420#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11421pub enum DiscussionUnansweredAction {
11422	#[serde(rename = "unanswered")]
11423	Unanswered,
11424}
11425impl From<&DiscussionUnansweredAction> for DiscussionUnansweredAction {
11426	fn from(value: &DiscussionUnansweredAction) -> Self {
11427		value.clone()
11428	}
11429}
11430impl ToString for DiscussionUnansweredAction {
11431	fn to_string(&self) -> String {
11432		match *self {
11433			Self::Unanswered => "unanswered".to_string(),
11434		}
11435	}
11436}
11437impl std::str::FromStr for DiscussionUnansweredAction {
11438	type Err = &'static str;
11439
11440	fn from_str(value: &str) -> Result<Self, &'static str> {
11441		match value {
11442			"unanswered" => Ok(Self::Unanswered),
11443			_ => Err("invalid value"),
11444		}
11445	}
11446}
11447impl std::convert::TryFrom<&str> for DiscussionUnansweredAction {
11448	type Error = &'static str;
11449
11450	fn try_from(value: &str) -> Result<Self, &'static str> {
11451		value.parse()
11452	}
11453}
11454impl std::convert::TryFrom<&String> for DiscussionUnansweredAction {
11455	type Error = &'static str;
11456
11457	fn try_from(value: &String) -> Result<Self, &'static str> {
11458		value.parse()
11459	}
11460}
11461impl std::convert::TryFrom<String> for DiscussionUnansweredAction {
11462	type Error = &'static str;
11463
11464	fn try_from(value: String) -> Result<Self, &'static str> {
11465		value.parse()
11466	}
11467}
11468#[derive(Clone, Debug, Deserialize, Serialize)]
11469#[serde(deny_unknown_fields)]
11470pub struct DiscussionUnansweredOldAnswer {
11471	pub author_association:  AuthorAssociation,
11472	pub body:                String,
11473	pub child_comment_count: i64,
11474	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
11475	pub discussion_id:       i64,
11476	pub html_url:            String,
11477	pub id:                  i64,
11478	pub node_id:             String,
11479	pub parent_id:           (),
11480	pub repository_url:      String,
11481	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
11482	pub user:                User,
11483}
11484impl From<&DiscussionUnansweredOldAnswer> for DiscussionUnansweredOldAnswer {
11485	fn from(value: &DiscussionUnansweredOldAnswer) -> Self {
11486		value.clone()
11487	}
11488}
11489#[derive(Clone, Debug, Deserialize, Serialize)]
11490#[serde(deny_unknown_fields)]
11491pub struct DiscussionUnlabeled {
11492	pub action:       DiscussionUnlabeledAction,
11493	pub discussion:   Discussion,
11494	#[serde(default, skip_serializing_if = "Option::is_none")]
11495	pub installation: Option<InstallationLite>,
11496	pub label:        Label,
11497	#[serde(default, skip_serializing_if = "Option::is_none")]
11498	pub organization: Option<Organization>,
11499	pub repository:   Repository,
11500	pub sender:       User,
11501}
11502impl From<&DiscussionUnlabeled> for DiscussionUnlabeled {
11503	fn from(value: &DiscussionUnlabeled) -> Self {
11504		value.clone()
11505	}
11506}
11507#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11508pub enum DiscussionUnlabeledAction {
11509	#[serde(rename = "unlabeled")]
11510	Unlabeled,
11511}
11512impl From<&DiscussionUnlabeledAction> for DiscussionUnlabeledAction {
11513	fn from(value: &DiscussionUnlabeledAction) -> Self {
11514		value.clone()
11515	}
11516}
11517impl ToString for DiscussionUnlabeledAction {
11518	fn to_string(&self) -> String {
11519		match *self {
11520			Self::Unlabeled => "unlabeled".to_string(),
11521		}
11522	}
11523}
11524impl std::str::FromStr for DiscussionUnlabeledAction {
11525	type Err = &'static str;
11526
11527	fn from_str(value: &str) -> Result<Self, &'static str> {
11528		match value {
11529			"unlabeled" => Ok(Self::Unlabeled),
11530			_ => Err("invalid value"),
11531		}
11532	}
11533}
11534impl std::convert::TryFrom<&str> for DiscussionUnlabeledAction {
11535	type Error = &'static str;
11536
11537	fn try_from(value: &str) -> Result<Self, &'static str> {
11538		value.parse()
11539	}
11540}
11541impl std::convert::TryFrom<&String> for DiscussionUnlabeledAction {
11542	type Error = &'static str;
11543
11544	fn try_from(value: &String) -> Result<Self, &'static str> {
11545		value.parse()
11546	}
11547}
11548impl std::convert::TryFrom<String> for DiscussionUnlabeledAction {
11549	type Error = &'static str;
11550
11551	fn try_from(value: String) -> Result<Self, &'static str> {
11552		value.parse()
11553	}
11554}
11555#[derive(Clone, Debug, Deserialize, Serialize)]
11556#[serde(deny_unknown_fields)]
11557pub struct DiscussionUnlocked {
11558	pub action:       DiscussionUnlockedAction,
11559	pub discussion:   Discussion,
11560	#[serde(default, skip_serializing_if = "Option::is_none")]
11561	pub installation: Option<InstallationLite>,
11562	#[serde(default, skip_serializing_if = "Option::is_none")]
11563	pub organization: Option<Organization>,
11564	pub repository:   Repository,
11565	pub sender:       User,
11566}
11567impl From<&DiscussionUnlocked> for DiscussionUnlocked {
11568	fn from(value: &DiscussionUnlocked) -> Self {
11569		value.clone()
11570	}
11571}
11572#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11573pub enum DiscussionUnlockedAction {
11574	#[serde(rename = "unlocked")]
11575	Unlocked,
11576}
11577impl From<&DiscussionUnlockedAction> for DiscussionUnlockedAction {
11578	fn from(value: &DiscussionUnlockedAction) -> Self {
11579		value.clone()
11580	}
11581}
11582impl ToString for DiscussionUnlockedAction {
11583	fn to_string(&self) -> String {
11584		match *self {
11585			Self::Unlocked => "unlocked".to_string(),
11586		}
11587	}
11588}
11589impl std::str::FromStr for DiscussionUnlockedAction {
11590	type Err = &'static str;
11591
11592	fn from_str(value: &str) -> Result<Self, &'static str> {
11593		match value {
11594			"unlocked" => Ok(Self::Unlocked),
11595			_ => Err("invalid value"),
11596		}
11597	}
11598}
11599impl std::convert::TryFrom<&str> for DiscussionUnlockedAction {
11600	type Error = &'static str;
11601
11602	fn try_from(value: &str) -> Result<Self, &'static str> {
11603		value.parse()
11604	}
11605}
11606impl std::convert::TryFrom<&String> for DiscussionUnlockedAction {
11607	type Error = &'static str;
11608
11609	fn try_from(value: &String) -> Result<Self, &'static str> {
11610		value.parse()
11611	}
11612}
11613impl std::convert::TryFrom<String> for DiscussionUnlockedAction {
11614	type Error = &'static str;
11615
11616	fn try_from(value: String) -> Result<Self, &'static str> {
11617		value.parse()
11618	}
11619}
11620#[derive(Clone, Debug, Deserialize, Serialize)]
11621#[serde(deny_unknown_fields)]
11622pub struct DiscussionUnpinned {
11623	pub action:       DiscussionUnpinnedAction,
11624	pub discussion:   Discussion,
11625	#[serde(default, skip_serializing_if = "Option::is_none")]
11626	pub installation: Option<InstallationLite>,
11627	#[serde(default, skip_serializing_if = "Option::is_none")]
11628	pub organization: Option<Organization>,
11629	pub repository:   Repository,
11630	pub sender:       User,
11631}
11632impl From<&DiscussionUnpinned> for DiscussionUnpinned {
11633	fn from(value: &DiscussionUnpinned) -> Self {
11634		value.clone()
11635	}
11636}
11637#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11638pub enum DiscussionUnpinnedAction {
11639	#[serde(rename = "unpinned")]
11640	Unpinned,
11641}
11642impl From<&DiscussionUnpinnedAction> for DiscussionUnpinnedAction {
11643	fn from(value: &DiscussionUnpinnedAction) -> Self {
11644		value.clone()
11645	}
11646}
11647impl ToString for DiscussionUnpinnedAction {
11648	fn to_string(&self) -> String {
11649		match *self {
11650			Self::Unpinned => "unpinned".to_string(),
11651		}
11652	}
11653}
11654impl std::str::FromStr for DiscussionUnpinnedAction {
11655	type Err = &'static str;
11656
11657	fn from_str(value: &str) -> Result<Self, &'static str> {
11658		match value {
11659			"unpinned" => Ok(Self::Unpinned),
11660			_ => Err("invalid value"),
11661		}
11662	}
11663}
11664impl std::convert::TryFrom<&str> for DiscussionUnpinnedAction {
11665	type Error = &'static str;
11666
11667	fn try_from(value: &str) -> Result<Self, &'static str> {
11668		value.parse()
11669	}
11670}
11671impl std::convert::TryFrom<&String> for DiscussionUnpinnedAction {
11672	type Error = &'static str;
11673
11674	fn try_from(value: &String) -> Result<Self, &'static str> {
11675		value.parse()
11676	}
11677}
11678impl std::convert::TryFrom<String> for DiscussionUnpinnedAction {
11679	type Error = &'static str;
11680
11681	fn try_from(value: String) -> Result<Self, &'static str> {
11682		value.parse()
11683	}
11684}
11685/// A user forks a repository.
11686#[derive(Clone, Debug, Deserialize, Serialize)]
11687#[serde(deny_unknown_fields)]
11688pub struct ForkEvent {
11689	/// The created [`repository`](https://docs.github.com/en/rest/reference/repos#get-a-repository) resource.
11690	pub forkee:       Repository,
11691	#[serde(default, skip_serializing_if = "Option::is_none")]
11692	pub installation: Option<InstallationLite>,
11693	#[serde(default, skip_serializing_if = "Option::is_none")]
11694	pub organization: Option<Organization>,
11695	pub repository:   Repository,
11696	pub sender:       User,
11697}
11698impl From<&ForkEvent> for ForkEvent {
11699	fn from(value: &ForkEvent) -> Self {
11700		value.clone()
11701	}
11702}
11703#[derive(Clone, Debug, Deserialize, Serialize)]
11704pub struct GithubAppAuthorizationEvent(pub GithubAppAuthorizationRevoked);
11705impl std::ops::Deref for GithubAppAuthorizationEvent {
11706	type Target = GithubAppAuthorizationRevoked;
11707
11708	fn deref(&self) -> &GithubAppAuthorizationRevoked {
11709		&self.0
11710	}
11711}
11712impl From<GithubAppAuthorizationEvent> for GithubAppAuthorizationRevoked {
11713	fn from(value: GithubAppAuthorizationEvent) -> Self {
11714		value.0
11715	}
11716}
11717impl From<&GithubAppAuthorizationEvent> for GithubAppAuthorizationEvent {
11718	fn from(value: &GithubAppAuthorizationEvent) -> Self {
11719		value.clone()
11720	}
11721}
11722impl From<GithubAppAuthorizationRevoked> for GithubAppAuthorizationEvent {
11723	fn from(value: GithubAppAuthorizationRevoked) -> Self {
11724		Self(value)
11725	}
11726}
11727#[derive(Clone, Debug, Deserialize, Serialize)]
11728#[serde(deny_unknown_fields)]
11729pub struct GithubAppAuthorizationRevoked {
11730	pub action: GithubAppAuthorizationRevokedAction,
11731	pub sender: User,
11732}
11733impl From<&GithubAppAuthorizationRevoked> for GithubAppAuthorizationRevoked {
11734	fn from(value: &GithubAppAuthorizationRevoked) -> Self {
11735		value.clone()
11736	}
11737}
11738#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11739pub enum GithubAppAuthorizationRevokedAction {
11740	#[serde(rename = "revoked")]
11741	Revoked,
11742}
11743impl From<&GithubAppAuthorizationRevokedAction> for GithubAppAuthorizationRevokedAction {
11744	fn from(value: &GithubAppAuthorizationRevokedAction) -> Self {
11745		value.clone()
11746	}
11747}
11748impl ToString for GithubAppAuthorizationRevokedAction {
11749	fn to_string(&self) -> String {
11750		match *self {
11751			Self::Revoked => "revoked".to_string(),
11752		}
11753	}
11754}
11755impl std::str::FromStr for GithubAppAuthorizationRevokedAction {
11756	type Err = &'static str;
11757
11758	fn from_str(value: &str) -> Result<Self, &'static str> {
11759		match value {
11760			"revoked" => Ok(Self::Revoked),
11761			_ => Err("invalid value"),
11762		}
11763	}
11764}
11765impl std::convert::TryFrom<&str> for GithubAppAuthorizationRevokedAction {
11766	type Error = &'static str;
11767
11768	fn try_from(value: &str) -> Result<Self, &'static str> {
11769		value.parse()
11770	}
11771}
11772impl std::convert::TryFrom<&String> for GithubAppAuthorizationRevokedAction {
11773	type Error = &'static str;
11774
11775	fn try_from(value: &String) -> Result<Self, &'static str> {
11776		value.parse()
11777	}
11778}
11779impl std::convert::TryFrom<String> for GithubAppAuthorizationRevokedAction {
11780	type Error = &'static str;
11781
11782	fn try_from(value: String) -> Result<Self, &'static str> {
11783		value.parse()
11784	}
11785}
11786#[derive(Clone, Debug, Deserialize, Serialize)]
11787#[serde(deny_unknown_fields)]
11788pub struct GithubOrg {
11789	pub avatar_url:          String,
11790	#[serde(default)]
11791	pub email:               (),
11792	pub events_url:          String,
11793	pub followers_url:       String,
11794	pub following_url:       String,
11795	pub gists_url:           String,
11796	pub gravatar_id:         String,
11797	pub html_url:            String,
11798	pub id:                  i64,
11799	pub login:               String,
11800	#[serde(default, skip_serializing_if = "Option::is_none")]
11801	pub name:                Option<String>,
11802	pub node_id:             String,
11803	pub organizations_url:   String,
11804	pub received_events_url: String,
11805	pub repos_url:           String,
11806	pub site_admin:          bool,
11807	pub starred_url:         String,
11808	pub subscriptions_url:   String,
11809	#[serde(rename = "type")]
11810	pub type_:               String,
11811	pub url:                 String,
11812}
11813impl From<&GithubOrg> for GithubOrg {
11814	fn from(value: &GithubOrg) -> Self {
11815		value.clone()
11816	}
11817}
11818/// A wiki page is created or updated.
11819#[derive(Clone, Debug, Deserialize, Serialize)]
11820#[serde(deny_unknown_fields)]
11821pub struct GollumEvent {
11822	#[serde(default, skip_serializing_if = "Option::is_none")]
11823	pub installation: Option<InstallationLite>,
11824	#[serde(default, skip_serializing_if = "Option::is_none")]
11825	pub organization: Option<Organization>,
11826	/// The pages that were updated.
11827	pub pages:        Vec<GollumEventPagesItem>,
11828	pub repository:   Repository,
11829	pub sender:       User,
11830}
11831impl From<&GollumEvent> for GollumEvent {
11832	fn from(value: &GollumEvent) -> Self {
11833		value.clone()
11834	}
11835}
11836#[derive(Clone, Debug, Deserialize, Serialize)]
11837#[serde(deny_unknown_fields)]
11838pub struct GollumEventPagesItem {
11839	/// The action that was performed on the page. Can be `created` or `edited`.
11840	pub action:    GollumEventPagesItemAction,
11841	/// Points to the HTML wiki page.
11842	pub html_url:  String,
11843	/// The name of the page.
11844	pub page_name: String,
11845	/// The latest commit SHA of the page.
11846	pub sha:       String,
11847	pub summary:   (),
11848	/// The current page title.
11849	pub title:     String,
11850}
11851impl From<&GollumEventPagesItem> for GollumEventPagesItem {
11852	fn from(value: &GollumEventPagesItem) -> Self {
11853		value.clone()
11854	}
11855}
11856/// The action that was performed on the page. Can be `created` or `edited`.
11857#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11858pub enum GollumEventPagesItemAction {
11859	#[serde(rename = "created")]
11860	Created,
11861	#[serde(rename = "edited")]
11862	Edited,
11863}
11864impl From<&GollumEventPagesItemAction> for GollumEventPagesItemAction {
11865	fn from(value: &GollumEventPagesItemAction) -> Self {
11866		value.clone()
11867	}
11868}
11869impl ToString for GollumEventPagesItemAction {
11870	fn to_string(&self) -> String {
11871		match *self {
11872			Self::Created => "created".to_string(),
11873			Self::Edited => "edited".to_string(),
11874		}
11875	}
11876}
11877impl std::str::FromStr for GollumEventPagesItemAction {
11878	type Err = &'static str;
11879
11880	fn from_str(value: &str) -> Result<Self, &'static str> {
11881		match value {
11882			"created" => Ok(Self::Created),
11883			"edited" => Ok(Self::Edited),
11884			_ => Err("invalid value"),
11885		}
11886	}
11887}
11888impl std::convert::TryFrom<&str> for GollumEventPagesItemAction {
11889	type Error = &'static str;
11890
11891	fn try_from(value: &str) -> Result<Self, &'static str> {
11892		value.parse()
11893	}
11894}
11895impl std::convert::TryFrom<&String> for GollumEventPagesItemAction {
11896	type Error = &'static str;
11897
11898	fn try_from(value: &String) -> Result<Self, &'static str> {
11899		value.parse()
11900	}
11901}
11902impl std::convert::TryFrom<String> for GollumEventPagesItemAction {
11903	type Error = &'static str;
11904
11905	fn try_from(value: String) -> Result<Self, &'static str> {
11906		value.parse()
11907	}
11908}
11909/// The GitHub App installation.
11910#[derive(Clone, Debug, Deserialize, Serialize)]
11911#[serde(deny_unknown_fields)]
11912pub struct Installation {
11913	pub access_tokens_url: String,
11914	pub account: User,
11915	pub app_id: i64,
11916	#[serde(default, skip_serializing_if = "Option::is_none")]
11917	pub app_slug: Option<String>,
11918	pub created_at: InstallationCreatedAt,
11919	pub events: Vec<InstallationEventsItem>,
11920	#[serde(default, skip_serializing_if = "Option::is_none")]
11921	pub has_multiple_single_files: Option<bool>,
11922	pub html_url: String,
11923	/// The ID of the installation.
11924	pub id: i64,
11925	pub permissions: InstallationPermissions,
11926	pub repositories_url: String,
11927	/// Describe whether all repositories have been selected or there's a
11928	/// selection involved
11929	pub repository_selection: InstallationRepositorySelection,
11930	pub single_file_name: Option<String>,
11931	#[serde(default, skip_serializing_if = "Vec::is_empty")]
11932	pub single_file_paths: Vec<String>,
11933	pub suspended_at: Option<chrono::DateTime<chrono::offset::Utc>>,
11934	pub suspended_by: Option<User>,
11935	/// The ID of the user or organization this token is being scoped to.
11936	pub target_id: i64,
11937	pub target_type: InstallationTargetType,
11938	pub updated_at: InstallationUpdatedAt,
11939}
11940impl From<&Installation> for Installation {
11941	fn from(value: &Installation) -> Self {
11942		value.clone()
11943	}
11944}
11945#[derive(Clone, Debug, Deserialize, Serialize)]
11946#[serde(deny_unknown_fields)]
11947pub struct InstallationCreated {
11948	pub action:       InstallationCreatedAction,
11949	pub installation: Installation,
11950	/// An array of repository objects that the installation can access.
11951	#[serde(default, skip_serializing_if = "Vec::is_empty")]
11952	pub repositories: Vec<InstallationCreatedRepositoriesItem>,
11953	#[serde(default, skip_serializing_if = "Option::is_none")]
11954	pub requester:    Option<User>,
11955	pub sender:       User,
11956}
11957impl From<&InstallationCreated> for InstallationCreated {
11958	fn from(value: &InstallationCreated) -> Self {
11959		value.clone()
11960	}
11961}
11962#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11963pub enum InstallationCreatedAction {
11964	#[serde(rename = "created")]
11965	Created,
11966}
11967impl From<&InstallationCreatedAction> for InstallationCreatedAction {
11968	fn from(value: &InstallationCreatedAction) -> Self {
11969		value.clone()
11970	}
11971}
11972impl ToString for InstallationCreatedAction {
11973	fn to_string(&self) -> String {
11974		match *self {
11975			Self::Created => "created".to_string(),
11976		}
11977	}
11978}
11979impl std::str::FromStr for InstallationCreatedAction {
11980	type Err = &'static str;
11981
11982	fn from_str(value: &str) -> Result<Self, &'static str> {
11983		match value {
11984			"created" => Ok(Self::Created),
11985			_ => Err("invalid value"),
11986		}
11987	}
11988}
11989impl std::convert::TryFrom<&str> for InstallationCreatedAction {
11990	type Error = &'static str;
11991
11992	fn try_from(value: &str) -> Result<Self, &'static str> {
11993		value.parse()
11994	}
11995}
11996impl std::convert::TryFrom<&String> for InstallationCreatedAction {
11997	type Error = &'static str;
11998
11999	fn try_from(value: &String) -> Result<Self, &'static str> {
12000		value.parse()
12001	}
12002}
12003impl std::convert::TryFrom<String> for InstallationCreatedAction {
12004	type Error = &'static str;
12005
12006	fn try_from(value: String) -> Result<Self, &'static str> {
12007		value.parse()
12008	}
12009}
12010#[derive(Clone, Debug, Deserialize, Serialize)]
12011#[serde(untagged)]
12012pub enum InstallationCreatedAt {
12013	Variant0(chrono::DateTime<chrono::offset::Utc>),
12014	Variant1(i64),
12015}
12016impl From<&InstallationCreatedAt> for InstallationCreatedAt {
12017	fn from(value: &InstallationCreatedAt) -> Self {
12018		value.clone()
12019	}
12020}
12021impl std::str::FromStr for InstallationCreatedAt {
12022	type Err = &'static str;
12023
12024	fn from_str(value: &str) -> Result<Self, &'static str> {
12025		if let Ok(v) = value.parse() {
12026			Ok(Self::Variant0(v))
12027		} else if let Ok(v) = value.parse() {
12028			Ok(Self::Variant1(v))
12029		} else {
12030			Err("string conversion failed for all variants")
12031		}
12032	}
12033}
12034impl std::convert::TryFrom<&str> for InstallationCreatedAt {
12035	type Error = &'static str;
12036
12037	fn try_from(value: &str) -> Result<Self, &'static str> {
12038		value.parse()
12039	}
12040}
12041impl std::convert::TryFrom<&String> for InstallationCreatedAt {
12042	type Error = &'static str;
12043
12044	fn try_from(value: &String) -> Result<Self, &'static str> {
12045		value.parse()
12046	}
12047}
12048impl std::convert::TryFrom<String> for InstallationCreatedAt {
12049	type Error = &'static str;
12050
12051	fn try_from(value: String) -> Result<Self, &'static str> {
12052		value.parse()
12053	}
12054}
12055impl ToString for InstallationCreatedAt {
12056	fn to_string(&self) -> String {
12057		match self {
12058			Self::Variant0(x) => x.to_string(),
12059			Self::Variant1(x) => x.to_string(),
12060		}
12061	}
12062}
12063impl From<chrono::DateTime<chrono::offset::Utc>> for InstallationCreatedAt {
12064	fn from(value: chrono::DateTime<chrono::offset::Utc>) -> Self {
12065		Self::Variant0(value)
12066	}
12067}
12068impl From<i64> for InstallationCreatedAt {
12069	fn from(value: i64) -> Self {
12070		Self::Variant1(value)
12071	}
12072}
12073#[derive(Clone, Debug, Deserialize, Serialize)]
12074#[serde(deny_unknown_fields)]
12075pub struct InstallationCreatedRepositoriesItem {
12076	pub full_name: String,
12077	/// Unique identifier of the repository
12078	pub id:        i64,
12079	/// The name of the repository.
12080	pub name:      String,
12081	pub node_id:   String,
12082	/// Whether the repository is private or public.
12083	pub private:   bool,
12084}
12085impl From<&InstallationCreatedRepositoriesItem> for InstallationCreatedRepositoriesItem {
12086	fn from(value: &InstallationCreatedRepositoriesItem) -> Self {
12087		value.clone()
12088	}
12089}
12090#[derive(Clone, Debug, Deserialize, Serialize)]
12091#[serde(deny_unknown_fields)]
12092pub struct InstallationDeleted {
12093	pub action:       InstallationDeletedAction,
12094	pub installation: Installation,
12095	/// An array of repository objects that the installation can access.
12096	#[serde(default, skip_serializing_if = "Vec::is_empty")]
12097	pub repositories: Vec<InstallationDeletedRepositoriesItem>,
12098	#[serde(default)]
12099	pub requester:    (),
12100	pub sender:       User,
12101}
12102impl From<&InstallationDeleted> for InstallationDeleted {
12103	fn from(value: &InstallationDeleted) -> Self {
12104		value.clone()
12105	}
12106}
12107#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12108pub enum InstallationDeletedAction {
12109	#[serde(rename = "deleted")]
12110	Deleted,
12111}
12112impl From<&InstallationDeletedAction> for InstallationDeletedAction {
12113	fn from(value: &InstallationDeletedAction) -> Self {
12114		value.clone()
12115	}
12116}
12117impl ToString for InstallationDeletedAction {
12118	fn to_string(&self) -> String {
12119		match *self {
12120			Self::Deleted => "deleted".to_string(),
12121		}
12122	}
12123}
12124impl std::str::FromStr for InstallationDeletedAction {
12125	type Err = &'static str;
12126
12127	fn from_str(value: &str) -> Result<Self, &'static str> {
12128		match value {
12129			"deleted" => Ok(Self::Deleted),
12130			_ => Err("invalid value"),
12131		}
12132	}
12133}
12134impl std::convert::TryFrom<&str> for InstallationDeletedAction {
12135	type Error = &'static str;
12136
12137	fn try_from(value: &str) -> Result<Self, &'static str> {
12138		value.parse()
12139	}
12140}
12141impl std::convert::TryFrom<&String> for InstallationDeletedAction {
12142	type Error = &'static str;
12143
12144	fn try_from(value: &String) -> Result<Self, &'static str> {
12145		value.parse()
12146	}
12147}
12148impl std::convert::TryFrom<String> for InstallationDeletedAction {
12149	type Error = &'static str;
12150
12151	fn try_from(value: String) -> Result<Self, &'static str> {
12152		value.parse()
12153	}
12154}
12155#[derive(Clone, Debug, Deserialize, Serialize)]
12156#[serde(deny_unknown_fields)]
12157pub struct InstallationDeletedRepositoriesItem {
12158	pub full_name: String,
12159	/// Unique identifier of the repository
12160	pub id:        i64,
12161	/// The name of the repository.
12162	pub name:      String,
12163	pub node_id:   String,
12164	/// Whether the repository is private or public.
12165	pub private:   bool,
12166}
12167impl From<&InstallationDeletedRepositoriesItem> for InstallationDeletedRepositoriesItem {
12168	fn from(value: &InstallationDeletedRepositoriesItem) -> Self {
12169		value.clone()
12170	}
12171}
12172#[derive(Clone, Debug, Deserialize, Serialize)]
12173#[serde(untagged)]
12174pub enum InstallationEvent {
12175	Created(InstallationCreated),
12176	Deleted(InstallationDeleted),
12177	NewPermissionsAccepted(InstallationNewPermissionsAccepted),
12178	Suspend(InstallationSuspend),
12179	Unsuspend(InstallationUnsuspend),
12180}
12181impl From<&InstallationEvent> for InstallationEvent {
12182	fn from(value: &InstallationEvent) -> Self {
12183		value.clone()
12184	}
12185}
12186impl From<InstallationCreated> for InstallationEvent {
12187	fn from(value: InstallationCreated) -> Self {
12188		Self::Created(value)
12189	}
12190}
12191impl From<InstallationDeleted> for InstallationEvent {
12192	fn from(value: InstallationDeleted) -> Self {
12193		Self::Deleted(value)
12194	}
12195}
12196impl From<InstallationNewPermissionsAccepted> for InstallationEvent {
12197	fn from(value: InstallationNewPermissionsAccepted) -> Self {
12198		Self::NewPermissionsAccepted(value)
12199	}
12200}
12201impl From<InstallationSuspend> for InstallationEvent {
12202	fn from(value: InstallationSuspend) -> Self {
12203		Self::Suspend(value)
12204	}
12205}
12206impl From<InstallationUnsuspend> for InstallationEvent {
12207	fn from(value: InstallationUnsuspend) -> Self {
12208		Self::Unsuspend(value)
12209	}
12210}
12211#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12212pub enum InstallationEventsItem {
12213	#[serde(rename = "branch_protection_rule")]
12214	BranchProtectionRule,
12215	#[serde(rename = "check_run")]
12216	CheckRun,
12217	#[serde(rename = "check_suite")]
12218	CheckSuite,
12219	#[serde(rename = "code_scanning_alert")]
12220	CodeScanningAlert,
12221	#[serde(rename = "commit_comment")]
12222	CommitComment,
12223	#[serde(rename = "content_reference")]
12224	ContentReference,
12225	#[serde(rename = "create")]
12226	Create,
12227	#[serde(rename = "delete")]
12228	Delete,
12229	#[serde(rename = "deployment")]
12230	Deployment,
12231	#[serde(rename = "deployment_review")]
12232	DeploymentReview,
12233	#[serde(rename = "deployment_status")]
12234	DeploymentStatus,
12235	#[serde(rename = "deploy_key")]
12236	DeployKey,
12237	#[serde(rename = "discussion")]
12238	Discussion,
12239	#[serde(rename = "discussion_comment")]
12240	DiscussionComment,
12241	#[serde(rename = "fork")]
12242	Fork,
12243	#[serde(rename = "gollum")]
12244	Gollum,
12245	#[serde(rename = "issues")]
12246	Issues,
12247	#[serde(rename = "issue_comment")]
12248	IssueComment,
12249	#[serde(rename = "label")]
12250	Label,
12251	#[serde(rename = "member")]
12252	Member,
12253	#[serde(rename = "membership")]
12254	Membership,
12255	#[serde(rename = "merge_queue_entry")]
12256	MergeQueueEntry,
12257	#[serde(rename = "milestone")]
12258	Milestone,
12259	#[serde(rename = "organization")]
12260	Organization,
12261	#[serde(rename = "org_block")]
12262	OrgBlock,
12263	#[serde(rename = "page_build")]
12264	PageBuild,
12265	#[serde(rename = "project")]
12266	Project,
12267	#[serde(rename = "projects_v2_item")]
12268	ProjectsV2Item,
12269	#[serde(rename = "project_card")]
12270	ProjectCard,
12271	#[serde(rename = "project_column")]
12272	ProjectColumn,
12273	#[serde(rename = "public")]
12274	Public,
12275	#[serde(rename = "pull_request")]
12276	PullRequest,
12277	#[serde(rename = "pull_request_review")]
12278	PullRequestReview,
12279	#[serde(rename = "pull_request_review_comment")]
12280	PullRequestReviewComment,
12281	#[serde(rename = "pull_request_review_thread")]
12282	PullRequestReviewThread,
12283	#[serde(rename = "push")]
12284	Push,
12285	#[serde(rename = "registry_package")]
12286	RegistryPackage,
12287	#[serde(rename = "release")]
12288	Release,
12289	#[serde(rename = "repository")]
12290	Repository,
12291	#[serde(rename = "repository_dispatch")]
12292	RepositoryDispatch,
12293	#[serde(rename = "secret_scanning_alert")]
12294	SecretScanningAlert,
12295	#[serde(rename = "secret_scanning_alert_location")]
12296	SecretScanningAlertLocation,
12297	#[serde(rename = "star")]
12298	Star,
12299	#[serde(rename = "status")]
12300	Status,
12301	#[serde(rename = "team")]
12302	Team,
12303	#[serde(rename = "team_add")]
12304	TeamAdd,
12305	#[serde(rename = "watch")]
12306	Watch,
12307	#[serde(rename = "workflow_dispatch")]
12308	WorkflowDispatch,
12309	#[serde(rename = "workflow_job")]
12310	WorkflowJob,
12311	#[serde(rename = "workflow_run")]
12312	WorkflowRun,
12313}
12314impl From<&InstallationEventsItem> for InstallationEventsItem {
12315	fn from(value: &InstallationEventsItem) -> Self {
12316		value.clone()
12317	}
12318}
12319impl ToString for InstallationEventsItem {
12320	fn to_string(&self) -> String {
12321		match *self {
12322			Self::BranchProtectionRule => "branch_protection_rule".to_string(),
12323			Self::CheckRun => "check_run".to_string(),
12324			Self::CheckSuite => "check_suite".to_string(),
12325			Self::CodeScanningAlert => "code_scanning_alert".to_string(),
12326			Self::CommitComment => "commit_comment".to_string(),
12327			Self::ContentReference => "content_reference".to_string(),
12328			Self::Create => "create".to_string(),
12329			Self::Delete => "delete".to_string(),
12330			Self::Deployment => "deployment".to_string(),
12331			Self::DeploymentReview => "deployment_review".to_string(),
12332			Self::DeploymentStatus => "deployment_status".to_string(),
12333			Self::DeployKey => "deploy_key".to_string(),
12334			Self::Discussion => "discussion".to_string(),
12335			Self::DiscussionComment => "discussion_comment".to_string(),
12336			Self::Fork => "fork".to_string(),
12337			Self::Gollum => "gollum".to_string(),
12338			Self::Issues => "issues".to_string(),
12339			Self::IssueComment => "issue_comment".to_string(),
12340			Self::Label => "label".to_string(),
12341			Self::Member => "member".to_string(),
12342			Self::Membership => "membership".to_string(),
12343			Self::MergeQueueEntry => "merge_queue_entry".to_string(),
12344			Self::Milestone => "milestone".to_string(),
12345			Self::Organization => "organization".to_string(),
12346			Self::OrgBlock => "org_block".to_string(),
12347			Self::PageBuild => "page_build".to_string(),
12348			Self::Project => "project".to_string(),
12349			Self::ProjectsV2Item => "projects_v2_item".to_string(),
12350			Self::ProjectCard => "project_card".to_string(),
12351			Self::ProjectColumn => "project_column".to_string(),
12352			Self::Public => "public".to_string(),
12353			Self::PullRequest => "pull_request".to_string(),
12354			Self::PullRequestReview => "pull_request_review".to_string(),
12355			Self::PullRequestReviewComment => "pull_request_review_comment".to_string(),
12356			Self::PullRequestReviewThread => "pull_request_review_thread".to_string(),
12357			Self::Push => "push".to_string(),
12358			Self::RegistryPackage => "registry_package".to_string(),
12359			Self::Release => "release".to_string(),
12360			Self::Repository => "repository".to_string(),
12361			Self::RepositoryDispatch => "repository_dispatch".to_string(),
12362			Self::SecretScanningAlert => "secret_scanning_alert".to_string(),
12363			Self::SecretScanningAlertLocation => "secret_scanning_alert_location".to_string(),
12364			Self::Star => "star".to_string(),
12365			Self::Status => "status".to_string(),
12366			Self::Team => "team".to_string(),
12367			Self::TeamAdd => "team_add".to_string(),
12368			Self::Watch => "watch".to_string(),
12369			Self::WorkflowDispatch => "workflow_dispatch".to_string(),
12370			Self::WorkflowJob => "workflow_job".to_string(),
12371			Self::WorkflowRun => "workflow_run".to_string(),
12372		}
12373	}
12374}
12375impl std::str::FromStr for InstallationEventsItem {
12376	type Err = &'static str;
12377
12378	fn from_str(value: &str) -> Result<Self, &'static str> {
12379		match value {
12380			"branch_protection_rule" => Ok(Self::BranchProtectionRule),
12381			"check_run" => Ok(Self::CheckRun),
12382			"check_suite" => Ok(Self::CheckSuite),
12383			"code_scanning_alert" => Ok(Self::CodeScanningAlert),
12384			"commit_comment" => Ok(Self::CommitComment),
12385			"content_reference" => Ok(Self::ContentReference),
12386			"create" => Ok(Self::Create),
12387			"delete" => Ok(Self::Delete),
12388			"deployment" => Ok(Self::Deployment),
12389			"deployment_review" => Ok(Self::DeploymentReview),
12390			"deployment_status" => Ok(Self::DeploymentStatus),
12391			"deploy_key" => Ok(Self::DeployKey),
12392			"discussion" => Ok(Self::Discussion),
12393			"discussion_comment" => Ok(Self::DiscussionComment),
12394			"fork" => Ok(Self::Fork),
12395			"gollum" => Ok(Self::Gollum),
12396			"issues" => Ok(Self::Issues),
12397			"issue_comment" => Ok(Self::IssueComment),
12398			"label" => Ok(Self::Label),
12399			"member" => Ok(Self::Member),
12400			"membership" => Ok(Self::Membership),
12401			"merge_queue_entry" => Ok(Self::MergeQueueEntry),
12402			"milestone" => Ok(Self::Milestone),
12403			"organization" => Ok(Self::Organization),
12404			"org_block" => Ok(Self::OrgBlock),
12405			"page_build" => Ok(Self::PageBuild),
12406			"project" => Ok(Self::Project),
12407			"projects_v2_item" => Ok(Self::ProjectsV2Item),
12408			"project_card" => Ok(Self::ProjectCard),
12409			"project_column" => Ok(Self::ProjectColumn),
12410			"public" => Ok(Self::Public),
12411			"pull_request" => Ok(Self::PullRequest),
12412			"pull_request_review" => Ok(Self::PullRequestReview),
12413			"pull_request_review_comment" => Ok(Self::PullRequestReviewComment),
12414			"pull_request_review_thread" => Ok(Self::PullRequestReviewThread),
12415			"push" => Ok(Self::Push),
12416			"registry_package" => Ok(Self::RegistryPackage),
12417			"release" => Ok(Self::Release),
12418			"repository" => Ok(Self::Repository),
12419			"repository_dispatch" => Ok(Self::RepositoryDispatch),
12420			"secret_scanning_alert" => Ok(Self::SecretScanningAlert),
12421			"secret_scanning_alert_location" => Ok(Self::SecretScanningAlertLocation),
12422			"star" => Ok(Self::Star),
12423			"status" => Ok(Self::Status),
12424			"team" => Ok(Self::Team),
12425			"team_add" => Ok(Self::TeamAdd),
12426			"watch" => Ok(Self::Watch),
12427			"workflow_dispatch" => Ok(Self::WorkflowDispatch),
12428			"workflow_job" => Ok(Self::WorkflowJob),
12429			"workflow_run" => Ok(Self::WorkflowRun),
12430			_ => Err("invalid value"),
12431		}
12432	}
12433}
12434impl std::convert::TryFrom<&str> for InstallationEventsItem {
12435	type Error = &'static str;
12436
12437	fn try_from(value: &str) -> Result<Self, &'static str> {
12438		value.parse()
12439	}
12440}
12441impl std::convert::TryFrom<&String> for InstallationEventsItem {
12442	type Error = &'static str;
12443
12444	fn try_from(value: &String) -> Result<Self, &'static str> {
12445		value.parse()
12446	}
12447}
12448impl std::convert::TryFrom<String> for InstallationEventsItem {
12449	type Error = &'static str;
12450
12451	fn try_from(value: String) -> Result<Self, &'static str> {
12452		value.parse()
12453	}
12454}
12455/// Installation
12456#[derive(Clone, Debug, Deserialize, Serialize)]
12457#[serde(deny_unknown_fields)]
12458pub struct InstallationLite {
12459	/// The ID of the installation.
12460	pub id:      i64,
12461	pub node_id: String,
12462}
12463impl From<&InstallationLite> for InstallationLite {
12464	fn from(value: &InstallationLite) -> Self {
12465		value.clone()
12466	}
12467}
12468#[derive(Clone, Debug, Deserialize, Serialize)]
12469#[serde(deny_unknown_fields)]
12470pub struct InstallationNewPermissionsAccepted {
12471	pub action:       InstallationNewPermissionsAcceptedAction,
12472	pub installation: Installation,
12473	/// An array of repository objects that the installation can access.
12474	#[serde(default, skip_serializing_if = "Vec::is_empty")]
12475	pub repositories: Vec<InstallationNewPermissionsAcceptedRepositoriesItem>,
12476	#[serde(default)]
12477	pub requester:    (),
12478	pub sender:       User,
12479}
12480impl From<&InstallationNewPermissionsAccepted> for InstallationNewPermissionsAccepted {
12481	fn from(value: &InstallationNewPermissionsAccepted) -> Self {
12482		value.clone()
12483	}
12484}
12485#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12486pub enum InstallationNewPermissionsAcceptedAction {
12487	#[serde(rename = "new_permissions_accepted")]
12488	NewPermissionsAccepted,
12489}
12490impl From<&InstallationNewPermissionsAcceptedAction> for InstallationNewPermissionsAcceptedAction {
12491	fn from(value: &InstallationNewPermissionsAcceptedAction) -> Self {
12492		value.clone()
12493	}
12494}
12495impl ToString for InstallationNewPermissionsAcceptedAction {
12496	fn to_string(&self) -> String {
12497		match *self {
12498			Self::NewPermissionsAccepted => "new_permissions_accepted".to_string(),
12499		}
12500	}
12501}
12502impl std::str::FromStr for InstallationNewPermissionsAcceptedAction {
12503	type Err = &'static str;
12504
12505	fn from_str(value: &str) -> Result<Self, &'static str> {
12506		match value {
12507			"new_permissions_accepted" => Ok(Self::NewPermissionsAccepted),
12508			_ => Err("invalid value"),
12509		}
12510	}
12511}
12512impl std::convert::TryFrom<&str> for InstallationNewPermissionsAcceptedAction {
12513	type Error = &'static str;
12514
12515	fn try_from(value: &str) -> Result<Self, &'static str> {
12516		value.parse()
12517	}
12518}
12519impl std::convert::TryFrom<&String> for InstallationNewPermissionsAcceptedAction {
12520	type Error = &'static str;
12521
12522	fn try_from(value: &String) -> Result<Self, &'static str> {
12523		value.parse()
12524	}
12525}
12526impl std::convert::TryFrom<String> for InstallationNewPermissionsAcceptedAction {
12527	type Error = &'static str;
12528
12529	fn try_from(value: String) -> Result<Self, &'static str> {
12530		value.parse()
12531	}
12532}
12533#[derive(Clone, Debug, Deserialize, Serialize)]
12534#[serde(deny_unknown_fields)]
12535pub struct InstallationNewPermissionsAcceptedRepositoriesItem {
12536	pub full_name: String,
12537	/// Unique identifier of the repository
12538	pub id:        i64,
12539	/// The name of the repository.
12540	pub name:      String,
12541	pub node_id:   String,
12542	/// Whether the repository is private or public.
12543	pub private:   bool,
12544}
12545impl From<&InstallationNewPermissionsAcceptedRepositoriesItem>
12546	for InstallationNewPermissionsAcceptedRepositoriesItem
12547{
12548	fn from(value: &InstallationNewPermissionsAcceptedRepositoriesItem) -> Self {
12549		value.clone()
12550	}
12551}
12552#[derive(Clone, Debug, Deserialize, Serialize)]
12553#[serde(deny_unknown_fields)]
12554pub struct InstallationPermissions {
12555	/// The level of permission granted to the access token for GitHub Actions
12556	/// workflows, workflow runs, and artifacts.
12557	#[serde(default, skip_serializing_if = "Option::is_none")]
12558	pub actions: Option<InstallationPermissionsActions>,
12559	/// The level of permission granted to the access token for repository
12560	/// creation, deletion, settings, teams, and collaborators creation.
12561	#[serde(default, skip_serializing_if = "Option::is_none")]
12562	pub administration: Option<InstallationPermissionsAdministration>,
12563	#[serde(default, skip_serializing_if = "Option::is_none")]
12564	pub blocking: Option<InstallationPermissionsBlocking>,
12565	/// The level of permission granted to the access token for checks on code.
12566	#[serde(default, skip_serializing_if = "Option::is_none")]
12567	pub checks: Option<InstallationPermissionsChecks>,
12568	#[serde(default, skip_serializing_if = "Option::is_none")]
12569	pub content_references: Option<InstallationPermissionsContentReferences>,
12570	/// The level of permission granted to the access token for repository
12571	/// contents, commits, branches, downloads, releases, and merges.
12572	#[serde(default, skip_serializing_if = "Option::is_none")]
12573	pub contents: Option<InstallationPermissionsContents>,
12574	/// The level of permission granted to the access token for deployments and
12575	/// deployment statuses.
12576	#[serde(default, skip_serializing_if = "Option::is_none")]
12577	pub deployments: Option<InstallationPermissionsDeployments>,
12578	#[serde(default, skip_serializing_if = "Option::is_none")]
12579	pub discussions: Option<InstallationPermissionsDiscussions>,
12580	#[serde(default, skip_serializing_if = "Option::is_none")]
12581	pub emails: Option<InstallationPermissionsEmails>,
12582	/// The level of permission granted to the access token for managing
12583	/// repository environments.
12584	#[serde(default, skip_serializing_if = "Option::is_none")]
12585	pub environments: Option<InstallationPermissionsEnvironments>,
12586	/// The level of permission granted to the access token for issues and
12587	/// related comments, assignees, labels, and milestones.
12588	#[serde(default, skip_serializing_if = "Option::is_none")]
12589	pub issues: Option<InstallationPermissionsIssues>,
12590	/// The level of permission granted to the access token for organization
12591	/// teams and members.
12592	#[serde(default, skip_serializing_if = "Option::is_none")]
12593	pub members: Option<InstallationPermissionsMembers>,
12594	#[serde(default, skip_serializing_if = "Option::is_none")]
12595	pub merge_queues: Option<InstallationPermissionsMergeQueues>,
12596	/// The level of permission granted to the access token to search
12597	/// repositories, list collaborators, and access repository metadata.
12598	#[serde(default, skip_serializing_if = "Option::is_none")]
12599	pub metadata: Option<InstallationPermissionsMetadata>,
12600	/// The level of permission granted to the access token to manage access to
12601	/// an organization.
12602	#[serde(default, skip_serializing_if = "Option::is_none")]
12603	pub organization_administration: Option<InstallationPermissionsOrganizationAdministration>,
12604	#[serde(default, skip_serializing_if = "Option::is_none")]
12605	pub organization_events: Option<InstallationPermissionsOrganizationEvents>,
12606	/// The level of permission granted to the access token to manage the
12607	/// post-receive hooks for an organization.
12608	#[serde(default, skip_serializing_if = "Option::is_none")]
12609	pub organization_hooks: Option<InstallationPermissionsOrganizationHooks>,
12610	/// The level of permission granted to the access token for organization
12611	/// packages published to GitHub Packages.
12612	#[serde(default, skip_serializing_if = "Option::is_none")]
12613	pub organization_packages: Option<InstallationPermissionsOrganizationPackages>,
12614	/// The level of permission granted to the access token for viewing an
12615	/// organization's plan.
12616	#[serde(default, skip_serializing_if = "Option::is_none")]
12617	pub organization_plan: Option<InstallationPermissionsOrganizationPlan>,
12618	/// The level of permission granted to the access token to manage
12619	/// organization projects and projects beta (where available).
12620	#[serde(default, skip_serializing_if = "Option::is_none")]
12621	pub organization_projects: Option<InstallationPermissionsOrganizationProjects>,
12622	/// The level of permission granted to the access token to manage
12623	/// organization secrets.
12624	#[serde(default, skip_serializing_if = "Option::is_none")]
12625	pub organization_secrets: Option<InstallationPermissionsOrganizationSecrets>,
12626	/// The level of permission granted to the access token to view and manage
12627	/// GitHub Actions self-hosted runners available to an organization.
12628	#[serde(default, skip_serializing_if = "Option::is_none")]
12629	pub organization_self_hosted_runners:
12630		Option<InstallationPermissionsOrganizationSelfHostedRunners>,
12631	/// The level of permission granted to the access token to view and manage
12632	/// users blocked by the organization.
12633	#[serde(default, skip_serializing_if = "Option::is_none")]
12634	pub organization_user_blocking: Option<InstallationPermissionsOrganizationUserBlocking>,
12635	/// The level of permission granted to the access token for packages
12636	/// published to GitHub Packages.
12637	#[serde(default, skip_serializing_if = "Option::is_none")]
12638	pub packages: Option<InstallationPermissionsPackages>,
12639	/// The level of permission granted to the access token to retrieve Pages
12640	/// statuses, configuration, and builds, as well as create new builds.
12641	#[serde(default, skip_serializing_if = "Option::is_none")]
12642	pub pages: Option<InstallationPermissionsPages>,
12643	/// The level of permission granted to the access token for pull requests
12644	/// and related comments, assignees, labels, milestones, and merges.
12645	#[serde(default, skip_serializing_if = "Option::is_none")]
12646	pub pull_requests: Option<InstallationPermissionsPullRequests>,
12647	/// The level of permission granted to the access token to manage the
12648	/// post-receive hooks for a repository.
12649	#[serde(default, skip_serializing_if = "Option::is_none")]
12650	pub repository_hooks: Option<InstallationPermissionsRepositoryHooks>,
12651	/// The level of permission granted to the access token to manage repository
12652	/// projects, columns, and cards.
12653	#[serde(default, skip_serializing_if = "Option::is_none")]
12654	pub repository_projects: Option<InstallationPermissionsRepositoryProjects>,
12655	/// The level of permission granted to the access token to view and manage
12656	/// secret scanning alerts.
12657	#[serde(default, skip_serializing_if = "Option::is_none")]
12658	pub secret_scanning_alerts: Option<InstallationPermissionsSecretScanningAlerts>,
12659	/// The level of permission granted to the access token to manage repository
12660	/// secrets.
12661	#[serde(default, skip_serializing_if = "Option::is_none")]
12662	pub secrets: Option<InstallationPermissionsSecrets>,
12663	/// The level of permission granted to the access token to view and manage
12664	/// security events like code scanning alerts.
12665	#[serde(default, skip_serializing_if = "Option::is_none")]
12666	pub security_events: Option<InstallationPermissionsSecurityEvents>,
12667	#[serde(default, skip_serializing_if = "Option::is_none")]
12668	pub security_scanning_alert: Option<InstallationPermissionsSecurityScanningAlert>,
12669	/// The level of permission granted to the access token to manage just a
12670	/// single file.
12671	#[serde(default, skip_serializing_if = "Option::is_none")]
12672	pub single_file: Option<InstallationPermissionsSingleFile>,
12673	/// The level of permission granted to the access token for commit statuses.
12674	#[serde(default, skip_serializing_if = "Option::is_none")]
12675	pub statuses: Option<InstallationPermissionsStatuses>,
12676	/// The level of permission granted to the access token to manage team
12677	/// discussions and related comments.
12678	#[serde(default, skip_serializing_if = "Option::is_none")]
12679	pub team_discussions: Option<InstallationPermissionsTeamDiscussions>,
12680	/// The level of permission granted to the access token to manage Dependabot
12681	/// alerts.
12682	#[serde(default, skip_serializing_if = "Option::is_none")]
12683	pub vulnerability_alerts: Option<InstallationPermissionsVulnerabilityAlerts>,
12684	/// The level of permission granted to the access token to update GitHub
12685	/// Actions workflow files.
12686	#[serde(default, skip_serializing_if = "Option::is_none")]
12687	pub workflows: Option<InstallationPermissionsWorkflows>,
12688}
12689impl From<&InstallationPermissions> for InstallationPermissions {
12690	fn from(value: &InstallationPermissions) -> Self {
12691		value.clone()
12692	}
12693}
12694/// The level of permission granted to the access token for GitHub Actions
12695/// workflows, workflow runs, and artifacts.
12696#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12697pub enum InstallationPermissionsActions {
12698	#[serde(rename = "read")]
12699	Read,
12700	#[serde(rename = "write")]
12701	Write,
12702}
12703impl From<&InstallationPermissionsActions> for InstallationPermissionsActions {
12704	fn from(value: &InstallationPermissionsActions) -> Self {
12705		value.clone()
12706	}
12707}
12708impl ToString for InstallationPermissionsActions {
12709	fn to_string(&self) -> String {
12710		match *self {
12711			Self::Read => "read".to_string(),
12712			Self::Write => "write".to_string(),
12713		}
12714	}
12715}
12716impl std::str::FromStr for InstallationPermissionsActions {
12717	type Err = &'static str;
12718
12719	fn from_str(value: &str) -> Result<Self, &'static str> {
12720		match value {
12721			"read" => Ok(Self::Read),
12722			"write" => Ok(Self::Write),
12723			_ => Err("invalid value"),
12724		}
12725	}
12726}
12727impl std::convert::TryFrom<&str> for InstallationPermissionsActions {
12728	type Error = &'static str;
12729
12730	fn try_from(value: &str) -> Result<Self, &'static str> {
12731		value.parse()
12732	}
12733}
12734impl std::convert::TryFrom<&String> for InstallationPermissionsActions {
12735	type Error = &'static str;
12736
12737	fn try_from(value: &String) -> Result<Self, &'static str> {
12738		value.parse()
12739	}
12740}
12741impl std::convert::TryFrom<String> for InstallationPermissionsActions {
12742	type Error = &'static str;
12743
12744	fn try_from(value: String) -> Result<Self, &'static str> {
12745		value.parse()
12746	}
12747}
12748/// The level of permission granted to the access token for repository creation,
12749/// deletion, settings, teams, and collaborators creation.
12750#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12751pub enum InstallationPermissionsAdministration {
12752	#[serde(rename = "read")]
12753	Read,
12754	#[serde(rename = "write")]
12755	Write,
12756}
12757impl From<&InstallationPermissionsAdministration> for InstallationPermissionsAdministration {
12758	fn from(value: &InstallationPermissionsAdministration) -> Self {
12759		value.clone()
12760	}
12761}
12762impl ToString for InstallationPermissionsAdministration {
12763	fn to_string(&self) -> String {
12764		match *self {
12765			Self::Read => "read".to_string(),
12766			Self::Write => "write".to_string(),
12767		}
12768	}
12769}
12770impl std::str::FromStr for InstallationPermissionsAdministration {
12771	type Err = &'static str;
12772
12773	fn from_str(value: &str) -> Result<Self, &'static str> {
12774		match value {
12775			"read" => Ok(Self::Read),
12776			"write" => Ok(Self::Write),
12777			_ => Err("invalid value"),
12778		}
12779	}
12780}
12781impl std::convert::TryFrom<&str> for InstallationPermissionsAdministration {
12782	type Error = &'static str;
12783
12784	fn try_from(value: &str) -> Result<Self, &'static str> {
12785		value.parse()
12786	}
12787}
12788impl std::convert::TryFrom<&String> for InstallationPermissionsAdministration {
12789	type Error = &'static str;
12790
12791	fn try_from(value: &String) -> Result<Self, &'static str> {
12792		value.parse()
12793	}
12794}
12795impl std::convert::TryFrom<String> for InstallationPermissionsAdministration {
12796	type Error = &'static str;
12797
12798	fn try_from(value: String) -> Result<Self, &'static str> {
12799		value.parse()
12800	}
12801}
12802#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12803pub enum InstallationPermissionsBlocking {
12804	#[serde(rename = "read")]
12805	Read,
12806	#[serde(rename = "write")]
12807	Write,
12808}
12809impl From<&InstallationPermissionsBlocking> for InstallationPermissionsBlocking {
12810	fn from(value: &InstallationPermissionsBlocking) -> Self {
12811		value.clone()
12812	}
12813}
12814impl ToString for InstallationPermissionsBlocking {
12815	fn to_string(&self) -> String {
12816		match *self {
12817			Self::Read => "read".to_string(),
12818			Self::Write => "write".to_string(),
12819		}
12820	}
12821}
12822impl std::str::FromStr for InstallationPermissionsBlocking {
12823	type Err = &'static str;
12824
12825	fn from_str(value: &str) -> Result<Self, &'static str> {
12826		match value {
12827			"read" => Ok(Self::Read),
12828			"write" => Ok(Self::Write),
12829			_ => Err("invalid value"),
12830		}
12831	}
12832}
12833impl std::convert::TryFrom<&str> for InstallationPermissionsBlocking {
12834	type Error = &'static str;
12835
12836	fn try_from(value: &str) -> Result<Self, &'static str> {
12837		value.parse()
12838	}
12839}
12840impl std::convert::TryFrom<&String> for InstallationPermissionsBlocking {
12841	type Error = &'static str;
12842
12843	fn try_from(value: &String) -> Result<Self, &'static str> {
12844		value.parse()
12845	}
12846}
12847impl std::convert::TryFrom<String> for InstallationPermissionsBlocking {
12848	type Error = &'static str;
12849
12850	fn try_from(value: String) -> Result<Self, &'static str> {
12851		value.parse()
12852	}
12853}
12854/// The level of permission granted to the access token for checks on code.
12855#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12856pub enum InstallationPermissionsChecks {
12857	#[serde(rename = "read")]
12858	Read,
12859	#[serde(rename = "write")]
12860	Write,
12861}
12862impl From<&InstallationPermissionsChecks> for InstallationPermissionsChecks {
12863	fn from(value: &InstallationPermissionsChecks) -> Self {
12864		value.clone()
12865	}
12866}
12867impl ToString for InstallationPermissionsChecks {
12868	fn to_string(&self) -> String {
12869		match *self {
12870			Self::Read => "read".to_string(),
12871			Self::Write => "write".to_string(),
12872		}
12873	}
12874}
12875impl std::str::FromStr for InstallationPermissionsChecks {
12876	type Err = &'static str;
12877
12878	fn from_str(value: &str) -> Result<Self, &'static str> {
12879		match value {
12880			"read" => Ok(Self::Read),
12881			"write" => Ok(Self::Write),
12882			_ => Err("invalid value"),
12883		}
12884	}
12885}
12886impl std::convert::TryFrom<&str> for InstallationPermissionsChecks {
12887	type Error = &'static str;
12888
12889	fn try_from(value: &str) -> Result<Self, &'static str> {
12890		value.parse()
12891	}
12892}
12893impl std::convert::TryFrom<&String> for InstallationPermissionsChecks {
12894	type Error = &'static str;
12895
12896	fn try_from(value: &String) -> Result<Self, &'static str> {
12897		value.parse()
12898	}
12899}
12900impl std::convert::TryFrom<String> for InstallationPermissionsChecks {
12901	type Error = &'static str;
12902
12903	fn try_from(value: String) -> Result<Self, &'static str> {
12904		value.parse()
12905	}
12906}
12907#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12908pub enum InstallationPermissionsContentReferences {
12909	#[serde(rename = "read")]
12910	Read,
12911	#[serde(rename = "write")]
12912	Write,
12913}
12914impl From<&InstallationPermissionsContentReferences> for InstallationPermissionsContentReferences {
12915	fn from(value: &InstallationPermissionsContentReferences) -> Self {
12916		value.clone()
12917	}
12918}
12919impl ToString for InstallationPermissionsContentReferences {
12920	fn to_string(&self) -> String {
12921		match *self {
12922			Self::Read => "read".to_string(),
12923			Self::Write => "write".to_string(),
12924		}
12925	}
12926}
12927impl std::str::FromStr for InstallationPermissionsContentReferences {
12928	type Err = &'static str;
12929
12930	fn from_str(value: &str) -> Result<Self, &'static str> {
12931		match value {
12932			"read" => Ok(Self::Read),
12933			"write" => Ok(Self::Write),
12934			_ => Err("invalid value"),
12935		}
12936	}
12937}
12938impl std::convert::TryFrom<&str> for InstallationPermissionsContentReferences {
12939	type Error = &'static str;
12940
12941	fn try_from(value: &str) -> Result<Self, &'static str> {
12942		value.parse()
12943	}
12944}
12945impl std::convert::TryFrom<&String> for InstallationPermissionsContentReferences {
12946	type Error = &'static str;
12947
12948	fn try_from(value: &String) -> Result<Self, &'static str> {
12949		value.parse()
12950	}
12951}
12952impl std::convert::TryFrom<String> for InstallationPermissionsContentReferences {
12953	type Error = &'static str;
12954
12955	fn try_from(value: String) -> Result<Self, &'static str> {
12956		value.parse()
12957	}
12958}
12959/// The level of permission granted to the access token for repository contents,
12960/// commits, branches, downloads, releases, and merges.
12961#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
12962pub enum InstallationPermissionsContents {
12963	#[serde(rename = "read")]
12964	Read,
12965	#[serde(rename = "write")]
12966	Write,
12967}
12968impl From<&InstallationPermissionsContents> for InstallationPermissionsContents {
12969	fn from(value: &InstallationPermissionsContents) -> Self {
12970		value.clone()
12971	}
12972}
12973impl ToString for InstallationPermissionsContents {
12974	fn to_string(&self) -> String {
12975		match *self {
12976			Self::Read => "read".to_string(),
12977			Self::Write => "write".to_string(),
12978		}
12979	}
12980}
12981impl std::str::FromStr for InstallationPermissionsContents {
12982	type Err = &'static str;
12983
12984	fn from_str(value: &str) -> Result<Self, &'static str> {
12985		match value {
12986			"read" => Ok(Self::Read),
12987			"write" => Ok(Self::Write),
12988			_ => Err("invalid value"),
12989		}
12990	}
12991}
12992impl std::convert::TryFrom<&str> for InstallationPermissionsContents {
12993	type Error = &'static str;
12994
12995	fn try_from(value: &str) -> Result<Self, &'static str> {
12996		value.parse()
12997	}
12998}
12999impl std::convert::TryFrom<&String> for InstallationPermissionsContents {
13000	type Error = &'static str;
13001
13002	fn try_from(value: &String) -> Result<Self, &'static str> {
13003		value.parse()
13004	}
13005}
13006impl std::convert::TryFrom<String> for InstallationPermissionsContents {
13007	type Error = &'static str;
13008
13009	fn try_from(value: String) -> Result<Self, &'static str> {
13010		value.parse()
13011	}
13012}
13013/// The level of permission granted to the access token for deployments and
13014/// deployment statuses.
13015#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13016pub enum InstallationPermissionsDeployments {
13017	#[serde(rename = "read")]
13018	Read,
13019	#[serde(rename = "write")]
13020	Write,
13021}
13022impl From<&InstallationPermissionsDeployments> for InstallationPermissionsDeployments {
13023	fn from(value: &InstallationPermissionsDeployments) -> Self {
13024		value.clone()
13025	}
13026}
13027impl ToString for InstallationPermissionsDeployments {
13028	fn to_string(&self) -> String {
13029		match *self {
13030			Self::Read => "read".to_string(),
13031			Self::Write => "write".to_string(),
13032		}
13033	}
13034}
13035impl std::str::FromStr for InstallationPermissionsDeployments {
13036	type Err = &'static str;
13037
13038	fn from_str(value: &str) -> Result<Self, &'static str> {
13039		match value {
13040			"read" => Ok(Self::Read),
13041			"write" => Ok(Self::Write),
13042			_ => Err("invalid value"),
13043		}
13044	}
13045}
13046impl std::convert::TryFrom<&str> for InstallationPermissionsDeployments {
13047	type Error = &'static str;
13048
13049	fn try_from(value: &str) -> Result<Self, &'static str> {
13050		value.parse()
13051	}
13052}
13053impl std::convert::TryFrom<&String> for InstallationPermissionsDeployments {
13054	type Error = &'static str;
13055
13056	fn try_from(value: &String) -> Result<Self, &'static str> {
13057		value.parse()
13058	}
13059}
13060impl std::convert::TryFrom<String> for InstallationPermissionsDeployments {
13061	type Error = &'static str;
13062
13063	fn try_from(value: String) -> Result<Self, &'static str> {
13064		value.parse()
13065	}
13066}
13067#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13068pub enum InstallationPermissionsDiscussions {
13069	#[serde(rename = "read")]
13070	Read,
13071	#[serde(rename = "write")]
13072	Write,
13073}
13074impl From<&InstallationPermissionsDiscussions> for InstallationPermissionsDiscussions {
13075	fn from(value: &InstallationPermissionsDiscussions) -> Self {
13076		value.clone()
13077	}
13078}
13079impl ToString for InstallationPermissionsDiscussions {
13080	fn to_string(&self) -> String {
13081		match *self {
13082			Self::Read => "read".to_string(),
13083			Self::Write => "write".to_string(),
13084		}
13085	}
13086}
13087impl std::str::FromStr for InstallationPermissionsDiscussions {
13088	type Err = &'static str;
13089
13090	fn from_str(value: &str) -> Result<Self, &'static str> {
13091		match value {
13092			"read" => Ok(Self::Read),
13093			"write" => Ok(Self::Write),
13094			_ => Err("invalid value"),
13095		}
13096	}
13097}
13098impl std::convert::TryFrom<&str> for InstallationPermissionsDiscussions {
13099	type Error = &'static str;
13100
13101	fn try_from(value: &str) -> Result<Self, &'static str> {
13102		value.parse()
13103	}
13104}
13105impl std::convert::TryFrom<&String> for InstallationPermissionsDiscussions {
13106	type Error = &'static str;
13107
13108	fn try_from(value: &String) -> Result<Self, &'static str> {
13109		value.parse()
13110	}
13111}
13112impl std::convert::TryFrom<String> for InstallationPermissionsDiscussions {
13113	type Error = &'static str;
13114
13115	fn try_from(value: String) -> Result<Self, &'static str> {
13116		value.parse()
13117	}
13118}
13119#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13120pub enum InstallationPermissionsEmails {
13121	#[serde(rename = "read")]
13122	Read,
13123	#[serde(rename = "write")]
13124	Write,
13125}
13126impl From<&InstallationPermissionsEmails> for InstallationPermissionsEmails {
13127	fn from(value: &InstallationPermissionsEmails) -> Self {
13128		value.clone()
13129	}
13130}
13131impl ToString for InstallationPermissionsEmails {
13132	fn to_string(&self) -> String {
13133		match *self {
13134			Self::Read => "read".to_string(),
13135			Self::Write => "write".to_string(),
13136		}
13137	}
13138}
13139impl std::str::FromStr for InstallationPermissionsEmails {
13140	type Err = &'static str;
13141
13142	fn from_str(value: &str) -> Result<Self, &'static str> {
13143		match value {
13144			"read" => Ok(Self::Read),
13145			"write" => Ok(Self::Write),
13146			_ => Err("invalid value"),
13147		}
13148	}
13149}
13150impl std::convert::TryFrom<&str> for InstallationPermissionsEmails {
13151	type Error = &'static str;
13152
13153	fn try_from(value: &str) -> Result<Self, &'static str> {
13154		value.parse()
13155	}
13156}
13157impl std::convert::TryFrom<&String> for InstallationPermissionsEmails {
13158	type Error = &'static str;
13159
13160	fn try_from(value: &String) -> Result<Self, &'static str> {
13161		value.parse()
13162	}
13163}
13164impl std::convert::TryFrom<String> for InstallationPermissionsEmails {
13165	type Error = &'static str;
13166
13167	fn try_from(value: String) -> Result<Self, &'static str> {
13168		value.parse()
13169	}
13170}
13171/// The level of permission granted to the access token for managing repository
13172/// environments.
13173#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13174pub enum InstallationPermissionsEnvironments {
13175	#[serde(rename = "read")]
13176	Read,
13177	#[serde(rename = "write")]
13178	Write,
13179}
13180impl From<&InstallationPermissionsEnvironments> for InstallationPermissionsEnvironments {
13181	fn from(value: &InstallationPermissionsEnvironments) -> Self {
13182		value.clone()
13183	}
13184}
13185impl ToString for InstallationPermissionsEnvironments {
13186	fn to_string(&self) -> String {
13187		match *self {
13188			Self::Read => "read".to_string(),
13189			Self::Write => "write".to_string(),
13190		}
13191	}
13192}
13193impl std::str::FromStr for InstallationPermissionsEnvironments {
13194	type Err = &'static str;
13195
13196	fn from_str(value: &str) -> Result<Self, &'static str> {
13197		match value {
13198			"read" => Ok(Self::Read),
13199			"write" => Ok(Self::Write),
13200			_ => Err("invalid value"),
13201		}
13202	}
13203}
13204impl std::convert::TryFrom<&str> for InstallationPermissionsEnvironments {
13205	type Error = &'static str;
13206
13207	fn try_from(value: &str) -> Result<Self, &'static str> {
13208		value.parse()
13209	}
13210}
13211impl std::convert::TryFrom<&String> for InstallationPermissionsEnvironments {
13212	type Error = &'static str;
13213
13214	fn try_from(value: &String) -> Result<Self, &'static str> {
13215		value.parse()
13216	}
13217}
13218impl std::convert::TryFrom<String> for InstallationPermissionsEnvironments {
13219	type Error = &'static str;
13220
13221	fn try_from(value: String) -> Result<Self, &'static str> {
13222		value.parse()
13223	}
13224}
13225/// The level of permission granted to the access token for issues and related
13226/// comments, assignees, labels, and milestones.
13227#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13228pub enum InstallationPermissionsIssues {
13229	#[serde(rename = "read")]
13230	Read,
13231	#[serde(rename = "write")]
13232	Write,
13233}
13234impl From<&InstallationPermissionsIssues> for InstallationPermissionsIssues {
13235	fn from(value: &InstallationPermissionsIssues) -> Self {
13236		value.clone()
13237	}
13238}
13239impl ToString for InstallationPermissionsIssues {
13240	fn to_string(&self) -> String {
13241		match *self {
13242			Self::Read => "read".to_string(),
13243			Self::Write => "write".to_string(),
13244		}
13245	}
13246}
13247impl std::str::FromStr for InstallationPermissionsIssues {
13248	type Err = &'static str;
13249
13250	fn from_str(value: &str) -> Result<Self, &'static str> {
13251		match value {
13252			"read" => Ok(Self::Read),
13253			"write" => Ok(Self::Write),
13254			_ => Err("invalid value"),
13255		}
13256	}
13257}
13258impl std::convert::TryFrom<&str> for InstallationPermissionsIssues {
13259	type Error = &'static str;
13260
13261	fn try_from(value: &str) -> Result<Self, &'static str> {
13262		value.parse()
13263	}
13264}
13265impl std::convert::TryFrom<&String> for InstallationPermissionsIssues {
13266	type Error = &'static str;
13267
13268	fn try_from(value: &String) -> Result<Self, &'static str> {
13269		value.parse()
13270	}
13271}
13272impl std::convert::TryFrom<String> for InstallationPermissionsIssues {
13273	type Error = &'static str;
13274
13275	fn try_from(value: String) -> Result<Self, &'static str> {
13276		value.parse()
13277	}
13278}
13279/// The level of permission granted to the access token for organization teams
13280/// and members.
13281#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13282pub enum InstallationPermissionsMembers {
13283	#[serde(rename = "read")]
13284	Read,
13285	#[serde(rename = "write")]
13286	Write,
13287}
13288impl From<&InstallationPermissionsMembers> for InstallationPermissionsMembers {
13289	fn from(value: &InstallationPermissionsMembers) -> Self {
13290		value.clone()
13291	}
13292}
13293impl ToString for InstallationPermissionsMembers {
13294	fn to_string(&self) -> String {
13295		match *self {
13296			Self::Read => "read".to_string(),
13297			Self::Write => "write".to_string(),
13298		}
13299	}
13300}
13301impl std::str::FromStr for InstallationPermissionsMembers {
13302	type Err = &'static str;
13303
13304	fn from_str(value: &str) -> Result<Self, &'static str> {
13305		match value {
13306			"read" => Ok(Self::Read),
13307			"write" => Ok(Self::Write),
13308			_ => Err("invalid value"),
13309		}
13310	}
13311}
13312impl std::convert::TryFrom<&str> for InstallationPermissionsMembers {
13313	type Error = &'static str;
13314
13315	fn try_from(value: &str) -> Result<Self, &'static str> {
13316		value.parse()
13317	}
13318}
13319impl std::convert::TryFrom<&String> for InstallationPermissionsMembers {
13320	type Error = &'static str;
13321
13322	fn try_from(value: &String) -> Result<Self, &'static str> {
13323		value.parse()
13324	}
13325}
13326impl std::convert::TryFrom<String> for InstallationPermissionsMembers {
13327	type Error = &'static str;
13328
13329	fn try_from(value: String) -> Result<Self, &'static str> {
13330		value.parse()
13331	}
13332}
13333#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13334pub enum InstallationPermissionsMergeQueues {
13335	#[serde(rename = "read")]
13336	Read,
13337	#[serde(rename = "write")]
13338	Write,
13339}
13340impl From<&InstallationPermissionsMergeQueues> for InstallationPermissionsMergeQueues {
13341	fn from(value: &InstallationPermissionsMergeQueues) -> Self {
13342		value.clone()
13343	}
13344}
13345impl ToString for InstallationPermissionsMergeQueues {
13346	fn to_string(&self) -> String {
13347		match *self {
13348			Self::Read => "read".to_string(),
13349			Self::Write => "write".to_string(),
13350		}
13351	}
13352}
13353impl std::str::FromStr for InstallationPermissionsMergeQueues {
13354	type Err = &'static str;
13355
13356	fn from_str(value: &str) -> Result<Self, &'static str> {
13357		match value {
13358			"read" => Ok(Self::Read),
13359			"write" => Ok(Self::Write),
13360			_ => Err("invalid value"),
13361		}
13362	}
13363}
13364impl std::convert::TryFrom<&str> for InstallationPermissionsMergeQueues {
13365	type Error = &'static str;
13366
13367	fn try_from(value: &str) -> Result<Self, &'static str> {
13368		value.parse()
13369	}
13370}
13371impl std::convert::TryFrom<&String> for InstallationPermissionsMergeQueues {
13372	type Error = &'static str;
13373
13374	fn try_from(value: &String) -> Result<Self, &'static str> {
13375		value.parse()
13376	}
13377}
13378impl std::convert::TryFrom<String> for InstallationPermissionsMergeQueues {
13379	type Error = &'static str;
13380
13381	fn try_from(value: String) -> Result<Self, &'static str> {
13382		value.parse()
13383	}
13384}
13385/// The level of permission granted to the access token to search repositories,
13386/// list collaborators, and access repository metadata.
13387#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13388pub enum InstallationPermissionsMetadata {
13389	#[serde(rename = "read")]
13390	Read,
13391	#[serde(rename = "write")]
13392	Write,
13393}
13394impl From<&InstallationPermissionsMetadata> for InstallationPermissionsMetadata {
13395	fn from(value: &InstallationPermissionsMetadata) -> Self {
13396		value.clone()
13397	}
13398}
13399impl ToString for InstallationPermissionsMetadata {
13400	fn to_string(&self) -> String {
13401		match *self {
13402			Self::Read => "read".to_string(),
13403			Self::Write => "write".to_string(),
13404		}
13405	}
13406}
13407impl std::str::FromStr for InstallationPermissionsMetadata {
13408	type Err = &'static str;
13409
13410	fn from_str(value: &str) -> Result<Self, &'static str> {
13411		match value {
13412			"read" => Ok(Self::Read),
13413			"write" => Ok(Self::Write),
13414			_ => Err("invalid value"),
13415		}
13416	}
13417}
13418impl std::convert::TryFrom<&str> for InstallationPermissionsMetadata {
13419	type Error = &'static str;
13420
13421	fn try_from(value: &str) -> Result<Self, &'static str> {
13422		value.parse()
13423	}
13424}
13425impl std::convert::TryFrom<&String> for InstallationPermissionsMetadata {
13426	type Error = &'static str;
13427
13428	fn try_from(value: &String) -> Result<Self, &'static str> {
13429		value.parse()
13430	}
13431}
13432impl std::convert::TryFrom<String> for InstallationPermissionsMetadata {
13433	type Error = &'static str;
13434
13435	fn try_from(value: String) -> Result<Self, &'static str> {
13436		value.parse()
13437	}
13438}
13439/// The level of permission granted to the access token to manage access to an
13440/// organization.
13441#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13442pub enum InstallationPermissionsOrganizationAdministration {
13443	#[serde(rename = "read")]
13444	Read,
13445	#[serde(rename = "write")]
13446	Write,
13447}
13448impl From<&InstallationPermissionsOrganizationAdministration>
13449	for InstallationPermissionsOrganizationAdministration
13450{
13451	fn from(value: &InstallationPermissionsOrganizationAdministration) -> Self {
13452		value.clone()
13453	}
13454}
13455impl ToString for InstallationPermissionsOrganizationAdministration {
13456	fn to_string(&self) -> String {
13457		match *self {
13458			Self::Read => "read".to_string(),
13459			Self::Write => "write".to_string(),
13460		}
13461	}
13462}
13463impl std::str::FromStr for InstallationPermissionsOrganizationAdministration {
13464	type Err = &'static str;
13465
13466	fn from_str(value: &str) -> Result<Self, &'static str> {
13467		match value {
13468			"read" => Ok(Self::Read),
13469			"write" => Ok(Self::Write),
13470			_ => Err("invalid value"),
13471		}
13472	}
13473}
13474impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationAdministration {
13475	type Error = &'static str;
13476
13477	fn try_from(value: &str) -> Result<Self, &'static str> {
13478		value.parse()
13479	}
13480}
13481impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationAdministration {
13482	type Error = &'static str;
13483
13484	fn try_from(value: &String) -> Result<Self, &'static str> {
13485		value.parse()
13486	}
13487}
13488impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationAdministration {
13489	type Error = &'static str;
13490
13491	fn try_from(value: String) -> Result<Self, &'static str> {
13492		value.parse()
13493	}
13494}
13495#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13496pub enum InstallationPermissionsOrganizationEvents {
13497	#[serde(rename = "read")]
13498	Read,
13499	#[serde(rename = "write")]
13500	Write,
13501}
13502impl From<&InstallationPermissionsOrganizationEvents>
13503	for InstallationPermissionsOrganizationEvents
13504{
13505	fn from(value: &InstallationPermissionsOrganizationEvents) -> Self {
13506		value.clone()
13507	}
13508}
13509impl ToString for InstallationPermissionsOrganizationEvents {
13510	fn to_string(&self) -> String {
13511		match *self {
13512			Self::Read => "read".to_string(),
13513			Self::Write => "write".to_string(),
13514		}
13515	}
13516}
13517impl std::str::FromStr for InstallationPermissionsOrganizationEvents {
13518	type Err = &'static str;
13519
13520	fn from_str(value: &str) -> Result<Self, &'static str> {
13521		match value {
13522			"read" => Ok(Self::Read),
13523			"write" => Ok(Self::Write),
13524			_ => Err("invalid value"),
13525		}
13526	}
13527}
13528impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationEvents {
13529	type Error = &'static str;
13530
13531	fn try_from(value: &str) -> Result<Self, &'static str> {
13532		value.parse()
13533	}
13534}
13535impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationEvents {
13536	type Error = &'static str;
13537
13538	fn try_from(value: &String) -> Result<Self, &'static str> {
13539		value.parse()
13540	}
13541}
13542impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationEvents {
13543	type Error = &'static str;
13544
13545	fn try_from(value: String) -> Result<Self, &'static str> {
13546		value.parse()
13547	}
13548}
13549/// The level of permission granted to the access token to manage the
13550/// post-receive hooks for an organization.
13551#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13552pub enum InstallationPermissionsOrganizationHooks {
13553	#[serde(rename = "read")]
13554	Read,
13555	#[serde(rename = "write")]
13556	Write,
13557}
13558impl From<&InstallationPermissionsOrganizationHooks> for InstallationPermissionsOrganizationHooks {
13559	fn from(value: &InstallationPermissionsOrganizationHooks) -> Self {
13560		value.clone()
13561	}
13562}
13563impl ToString for InstallationPermissionsOrganizationHooks {
13564	fn to_string(&self) -> String {
13565		match *self {
13566			Self::Read => "read".to_string(),
13567			Self::Write => "write".to_string(),
13568		}
13569	}
13570}
13571impl std::str::FromStr for InstallationPermissionsOrganizationHooks {
13572	type Err = &'static str;
13573
13574	fn from_str(value: &str) -> Result<Self, &'static str> {
13575		match value {
13576			"read" => Ok(Self::Read),
13577			"write" => Ok(Self::Write),
13578			_ => Err("invalid value"),
13579		}
13580	}
13581}
13582impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationHooks {
13583	type Error = &'static str;
13584
13585	fn try_from(value: &str) -> Result<Self, &'static str> {
13586		value.parse()
13587	}
13588}
13589impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationHooks {
13590	type Error = &'static str;
13591
13592	fn try_from(value: &String) -> Result<Self, &'static str> {
13593		value.parse()
13594	}
13595}
13596impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationHooks {
13597	type Error = &'static str;
13598
13599	fn try_from(value: String) -> Result<Self, &'static str> {
13600		value.parse()
13601	}
13602}
13603/// The level of permission granted to the access token for organization
13604/// packages published to GitHub Packages.
13605#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13606pub enum InstallationPermissionsOrganizationPackages {
13607	#[serde(rename = "read")]
13608	Read,
13609	#[serde(rename = "write")]
13610	Write,
13611}
13612impl From<&InstallationPermissionsOrganizationPackages>
13613	for InstallationPermissionsOrganizationPackages
13614{
13615	fn from(value: &InstallationPermissionsOrganizationPackages) -> Self {
13616		value.clone()
13617	}
13618}
13619impl ToString for InstallationPermissionsOrganizationPackages {
13620	fn to_string(&self) -> String {
13621		match *self {
13622			Self::Read => "read".to_string(),
13623			Self::Write => "write".to_string(),
13624		}
13625	}
13626}
13627impl std::str::FromStr for InstallationPermissionsOrganizationPackages {
13628	type Err = &'static str;
13629
13630	fn from_str(value: &str) -> Result<Self, &'static str> {
13631		match value {
13632			"read" => Ok(Self::Read),
13633			"write" => Ok(Self::Write),
13634			_ => Err("invalid value"),
13635		}
13636	}
13637}
13638impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationPackages {
13639	type Error = &'static str;
13640
13641	fn try_from(value: &str) -> Result<Self, &'static str> {
13642		value.parse()
13643	}
13644}
13645impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationPackages {
13646	type Error = &'static str;
13647
13648	fn try_from(value: &String) -> Result<Self, &'static str> {
13649		value.parse()
13650	}
13651}
13652impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationPackages {
13653	type Error = &'static str;
13654
13655	fn try_from(value: String) -> Result<Self, &'static str> {
13656		value.parse()
13657	}
13658}
13659/// The level of permission granted to the access token for viewing an
13660/// organization's plan.
13661#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13662pub enum InstallationPermissionsOrganizationPlan {
13663	#[serde(rename = "read")]
13664	Read,
13665	#[serde(rename = "write")]
13666	Write,
13667}
13668impl From<&InstallationPermissionsOrganizationPlan> for InstallationPermissionsOrganizationPlan {
13669	fn from(value: &InstallationPermissionsOrganizationPlan) -> Self {
13670		value.clone()
13671	}
13672}
13673impl ToString for InstallationPermissionsOrganizationPlan {
13674	fn to_string(&self) -> String {
13675		match *self {
13676			Self::Read => "read".to_string(),
13677			Self::Write => "write".to_string(),
13678		}
13679	}
13680}
13681impl std::str::FromStr for InstallationPermissionsOrganizationPlan {
13682	type Err = &'static str;
13683
13684	fn from_str(value: &str) -> Result<Self, &'static str> {
13685		match value {
13686			"read" => Ok(Self::Read),
13687			"write" => Ok(Self::Write),
13688			_ => Err("invalid value"),
13689		}
13690	}
13691}
13692impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationPlan {
13693	type Error = &'static str;
13694
13695	fn try_from(value: &str) -> Result<Self, &'static str> {
13696		value.parse()
13697	}
13698}
13699impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationPlan {
13700	type Error = &'static str;
13701
13702	fn try_from(value: &String) -> Result<Self, &'static str> {
13703		value.parse()
13704	}
13705}
13706impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationPlan {
13707	type Error = &'static str;
13708
13709	fn try_from(value: String) -> Result<Self, &'static str> {
13710		value.parse()
13711	}
13712}
13713/// The level of permission granted to the access token to manage organization
13714/// projects and projects beta (where available).
13715#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13716pub enum InstallationPermissionsOrganizationProjects {
13717	#[serde(rename = "read")]
13718	Read,
13719	#[serde(rename = "write")]
13720	Write,
13721}
13722impl From<&InstallationPermissionsOrganizationProjects>
13723	for InstallationPermissionsOrganizationProjects
13724{
13725	fn from(value: &InstallationPermissionsOrganizationProjects) -> Self {
13726		value.clone()
13727	}
13728}
13729impl ToString for InstallationPermissionsOrganizationProjects {
13730	fn to_string(&self) -> String {
13731		match *self {
13732			Self::Read => "read".to_string(),
13733			Self::Write => "write".to_string(),
13734		}
13735	}
13736}
13737impl std::str::FromStr for InstallationPermissionsOrganizationProjects {
13738	type Err = &'static str;
13739
13740	fn from_str(value: &str) -> Result<Self, &'static str> {
13741		match value {
13742			"read" => Ok(Self::Read),
13743			"write" => Ok(Self::Write),
13744			_ => Err("invalid value"),
13745		}
13746	}
13747}
13748impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationProjects {
13749	type Error = &'static str;
13750
13751	fn try_from(value: &str) -> Result<Self, &'static str> {
13752		value.parse()
13753	}
13754}
13755impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationProjects {
13756	type Error = &'static str;
13757
13758	fn try_from(value: &String) -> Result<Self, &'static str> {
13759		value.parse()
13760	}
13761}
13762impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationProjects {
13763	type Error = &'static str;
13764
13765	fn try_from(value: String) -> Result<Self, &'static str> {
13766		value.parse()
13767	}
13768}
13769/// The level of permission granted to the access token to manage organization
13770/// secrets.
13771#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13772pub enum InstallationPermissionsOrganizationSecrets {
13773	#[serde(rename = "read")]
13774	Read,
13775	#[serde(rename = "write")]
13776	Write,
13777}
13778impl From<&InstallationPermissionsOrganizationSecrets>
13779	for InstallationPermissionsOrganizationSecrets
13780{
13781	fn from(value: &InstallationPermissionsOrganizationSecrets) -> Self {
13782		value.clone()
13783	}
13784}
13785impl ToString for InstallationPermissionsOrganizationSecrets {
13786	fn to_string(&self) -> String {
13787		match *self {
13788			Self::Read => "read".to_string(),
13789			Self::Write => "write".to_string(),
13790		}
13791	}
13792}
13793impl std::str::FromStr for InstallationPermissionsOrganizationSecrets {
13794	type Err = &'static str;
13795
13796	fn from_str(value: &str) -> Result<Self, &'static str> {
13797		match value {
13798			"read" => Ok(Self::Read),
13799			"write" => Ok(Self::Write),
13800			_ => Err("invalid value"),
13801		}
13802	}
13803}
13804impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationSecrets {
13805	type Error = &'static str;
13806
13807	fn try_from(value: &str) -> Result<Self, &'static str> {
13808		value.parse()
13809	}
13810}
13811impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationSecrets {
13812	type Error = &'static str;
13813
13814	fn try_from(value: &String) -> Result<Self, &'static str> {
13815		value.parse()
13816	}
13817}
13818impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationSecrets {
13819	type Error = &'static str;
13820
13821	fn try_from(value: String) -> Result<Self, &'static str> {
13822		value.parse()
13823	}
13824}
13825/// The level of permission granted to the access token to view and manage
13826/// GitHub Actions self-hosted runners available to an organization.
13827#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13828pub enum InstallationPermissionsOrganizationSelfHostedRunners {
13829	#[serde(rename = "read")]
13830	Read,
13831	#[serde(rename = "write")]
13832	Write,
13833}
13834impl From<&InstallationPermissionsOrganizationSelfHostedRunners>
13835	for InstallationPermissionsOrganizationSelfHostedRunners
13836{
13837	fn from(value: &InstallationPermissionsOrganizationSelfHostedRunners) -> Self {
13838		value.clone()
13839	}
13840}
13841impl ToString for InstallationPermissionsOrganizationSelfHostedRunners {
13842	fn to_string(&self) -> String {
13843		match *self {
13844			Self::Read => "read".to_string(),
13845			Self::Write => "write".to_string(),
13846		}
13847	}
13848}
13849impl std::str::FromStr for InstallationPermissionsOrganizationSelfHostedRunners {
13850	type Err = &'static str;
13851
13852	fn from_str(value: &str) -> Result<Self, &'static str> {
13853		match value {
13854			"read" => Ok(Self::Read),
13855			"write" => Ok(Self::Write),
13856			_ => Err("invalid value"),
13857		}
13858	}
13859}
13860impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationSelfHostedRunners {
13861	type Error = &'static str;
13862
13863	fn try_from(value: &str) -> Result<Self, &'static str> {
13864		value.parse()
13865	}
13866}
13867impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationSelfHostedRunners {
13868	type Error = &'static str;
13869
13870	fn try_from(value: &String) -> Result<Self, &'static str> {
13871		value.parse()
13872	}
13873}
13874impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationSelfHostedRunners {
13875	type Error = &'static str;
13876
13877	fn try_from(value: String) -> Result<Self, &'static str> {
13878		value.parse()
13879	}
13880}
13881/// The level of permission granted to the access token to view and manage users
13882/// blocked by the organization.
13883#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13884pub enum InstallationPermissionsOrganizationUserBlocking {
13885	#[serde(rename = "read")]
13886	Read,
13887	#[serde(rename = "write")]
13888	Write,
13889}
13890impl From<&InstallationPermissionsOrganizationUserBlocking>
13891	for InstallationPermissionsOrganizationUserBlocking
13892{
13893	fn from(value: &InstallationPermissionsOrganizationUserBlocking) -> Self {
13894		value.clone()
13895	}
13896}
13897impl ToString for InstallationPermissionsOrganizationUserBlocking {
13898	fn to_string(&self) -> String {
13899		match *self {
13900			Self::Read => "read".to_string(),
13901			Self::Write => "write".to_string(),
13902		}
13903	}
13904}
13905impl std::str::FromStr for InstallationPermissionsOrganizationUserBlocking {
13906	type Err = &'static str;
13907
13908	fn from_str(value: &str) -> Result<Self, &'static str> {
13909		match value {
13910			"read" => Ok(Self::Read),
13911			"write" => Ok(Self::Write),
13912			_ => Err("invalid value"),
13913		}
13914	}
13915}
13916impl std::convert::TryFrom<&str> for InstallationPermissionsOrganizationUserBlocking {
13917	type Error = &'static str;
13918
13919	fn try_from(value: &str) -> Result<Self, &'static str> {
13920		value.parse()
13921	}
13922}
13923impl std::convert::TryFrom<&String> for InstallationPermissionsOrganizationUserBlocking {
13924	type Error = &'static str;
13925
13926	fn try_from(value: &String) -> Result<Self, &'static str> {
13927		value.parse()
13928	}
13929}
13930impl std::convert::TryFrom<String> for InstallationPermissionsOrganizationUserBlocking {
13931	type Error = &'static str;
13932
13933	fn try_from(value: String) -> Result<Self, &'static str> {
13934		value.parse()
13935	}
13936}
13937/// The level of permission granted to the access token for packages published
13938/// to GitHub Packages.
13939#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13940pub enum InstallationPermissionsPackages {
13941	#[serde(rename = "read")]
13942	Read,
13943	#[serde(rename = "write")]
13944	Write,
13945}
13946impl From<&InstallationPermissionsPackages> for InstallationPermissionsPackages {
13947	fn from(value: &InstallationPermissionsPackages) -> Self {
13948		value.clone()
13949	}
13950}
13951impl ToString for InstallationPermissionsPackages {
13952	fn to_string(&self) -> String {
13953		match *self {
13954			Self::Read => "read".to_string(),
13955			Self::Write => "write".to_string(),
13956		}
13957	}
13958}
13959impl std::str::FromStr for InstallationPermissionsPackages {
13960	type Err = &'static str;
13961
13962	fn from_str(value: &str) -> Result<Self, &'static str> {
13963		match value {
13964			"read" => Ok(Self::Read),
13965			"write" => Ok(Self::Write),
13966			_ => Err("invalid value"),
13967		}
13968	}
13969}
13970impl std::convert::TryFrom<&str> for InstallationPermissionsPackages {
13971	type Error = &'static str;
13972
13973	fn try_from(value: &str) -> Result<Self, &'static str> {
13974		value.parse()
13975	}
13976}
13977impl std::convert::TryFrom<&String> for InstallationPermissionsPackages {
13978	type Error = &'static str;
13979
13980	fn try_from(value: &String) -> Result<Self, &'static str> {
13981		value.parse()
13982	}
13983}
13984impl std::convert::TryFrom<String> for InstallationPermissionsPackages {
13985	type Error = &'static str;
13986
13987	fn try_from(value: String) -> Result<Self, &'static str> {
13988		value.parse()
13989	}
13990}
13991/// The level of permission granted to the access token to retrieve Pages
13992/// statuses, configuration, and builds, as well as create new builds.
13993#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
13994pub enum InstallationPermissionsPages {
13995	#[serde(rename = "read")]
13996	Read,
13997	#[serde(rename = "write")]
13998	Write,
13999}
14000impl From<&InstallationPermissionsPages> for InstallationPermissionsPages {
14001	fn from(value: &InstallationPermissionsPages) -> Self {
14002		value.clone()
14003	}
14004}
14005impl ToString for InstallationPermissionsPages {
14006	fn to_string(&self) -> String {
14007		match *self {
14008			Self::Read => "read".to_string(),
14009			Self::Write => "write".to_string(),
14010		}
14011	}
14012}
14013impl std::str::FromStr for InstallationPermissionsPages {
14014	type Err = &'static str;
14015
14016	fn from_str(value: &str) -> Result<Self, &'static str> {
14017		match value {
14018			"read" => Ok(Self::Read),
14019			"write" => Ok(Self::Write),
14020			_ => Err("invalid value"),
14021		}
14022	}
14023}
14024impl std::convert::TryFrom<&str> for InstallationPermissionsPages {
14025	type Error = &'static str;
14026
14027	fn try_from(value: &str) -> Result<Self, &'static str> {
14028		value.parse()
14029	}
14030}
14031impl std::convert::TryFrom<&String> for InstallationPermissionsPages {
14032	type Error = &'static str;
14033
14034	fn try_from(value: &String) -> Result<Self, &'static str> {
14035		value.parse()
14036	}
14037}
14038impl std::convert::TryFrom<String> for InstallationPermissionsPages {
14039	type Error = &'static str;
14040
14041	fn try_from(value: String) -> Result<Self, &'static str> {
14042		value.parse()
14043	}
14044}
14045/// The level of permission granted to the access token for pull requests and
14046/// related comments, assignees, labels, milestones, and merges.
14047#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14048pub enum InstallationPermissionsPullRequests {
14049	#[serde(rename = "read")]
14050	Read,
14051	#[serde(rename = "write")]
14052	Write,
14053}
14054impl From<&InstallationPermissionsPullRequests> for InstallationPermissionsPullRequests {
14055	fn from(value: &InstallationPermissionsPullRequests) -> Self {
14056		value.clone()
14057	}
14058}
14059impl ToString for InstallationPermissionsPullRequests {
14060	fn to_string(&self) -> String {
14061		match *self {
14062			Self::Read => "read".to_string(),
14063			Self::Write => "write".to_string(),
14064		}
14065	}
14066}
14067impl std::str::FromStr for InstallationPermissionsPullRequests {
14068	type Err = &'static str;
14069
14070	fn from_str(value: &str) -> Result<Self, &'static str> {
14071		match value {
14072			"read" => Ok(Self::Read),
14073			"write" => Ok(Self::Write),
14074			_ => Err("invalid value"),
14075		}
14076	}
14077}
14078impl std::convert::TryFrom<&str> for InstallationPermissionsPullRequests {
14079	type Error = &'static str;
14080
14081	fn try_from(value: &str) -> Result<Self, &'static str> {
14082		value.parse()
14083	}
14084}
14085impl std::convert::TryFrom<&String> for InstallationPermissionsPullRequests {
14086	type Error = &'static str;
14087
14088	fn try_from(value: &String) -> Result<Self, &'static str> {
14089		value.parse()
14090	}
14091}
14092impl std::convert::TryFrom<String> for InstallationPermissionsPullRequests {
14093	type Error = &'static str;
14094
14095	fn try_from(value: String) -> Result<Self, &'static str> {
14096		value.parse()
14097	}
14098}
14099/// The level of permission granted to the access token to manage the
14100/// post-receive hooks for a repository.
14101#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14102pub enum InstallationPermissionsRepositoryHooks {
14103	#[serde(rename = "read")]
14104	Read,
14105	#[serde(rename = "write")]
14106	Write,
14107}
14108impl From<&InstallationPermissionsRepositoryHooks> for InstallationPermissionsRepositoryHooks {
14109	fn from(value: &InstallationPermissionsRepositoryHooks) -> Self {
14110		value.clone()
14111	}
14112}
14113impl ToString for InstallationPermissionsRepositoryHooks {
14114	fn to_string(&self) -> String {
14115		match *self {
14116			Self::Read => "read".to_string(),
14117			Self::Write => "write".to_string(),
14118		}
14119	}
14120}
14121impl std::str::FromStr for InstallationPermissionsRepositoryHooks {
14122	type Err = &'static str;
14123
14124	fn from_str(value: &str) -> Result<Self, &'static str> {
14125		match value {
14126			"read" => Ok(Self::Read),
14127			"write" => Ok(Self::Write),
14128			_ => Err("invalid value"),
14129		}
14130	}
14131}
14132impl std::convert::TryFrom<&str> for InstallationPermissionsRepositoryHooks {
14133	type Error = &'static str;
14134
14135	fn try_from(value: &str) -> Result<Self, &'static str> {
14136		value.parse()
14137	}
14138}
14139impl std::convert::TryFrom<&String> for InstallationPermissionsRepositoryHooks {
14140	type Error = &'static str;
14141
14142	fn try_from(value: &String) -> Result<Self, &'static str> {
14143		value.parse()
14144	}
14145}
14146impl std::convert::TryFrom<String> for InstallationPermissionsRepositoryHooks {
14147	type Error = &'static str;
14148
14149	fn try_from(value: String) -> Result<Self, &'static str> {
14150		value.parse()
14151	}
14152}
14153/// The level of permission granted to the access token to manage repository
14154/// projects, columns, and cards.
14155#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14156pub enum InstallationPermissionsRepositoryProjects {
14157	#[serde(rename = "read")]
14158	Read,
14159	#[serde(rename = "write")]
14160	Write,
14161}
14162impl From<&InstallationPermissionsRepositoryProjects>
14163	for InstallationPermissionsRepositoryProjects
14164{
14165	fn from(value: &InstallationPermissionsRepositoryProjects) -> Self {
14166		value.clone()
14167	}
14168}
14169impl ToString for InstallationPermissionsRepositoryProjects {
14170	fn to_string(&self) -> String {
14171		match *self {
14172			Self::Read => "read".to_string(),
14173			Self::Write => "write".to_string(),
14174		}
14175	}
14176}
14177impl std::str::FromStr for InstallationPermissionsRepositoryProjects {
14178	type Err = &'static str;
14179
14180	fn from_str(value: &str) -> Result<Self, &'static str> {
14181		match value {
14182			"read" => Ok(Self::Read),
14183			"write" => Ok(Self::Write),
14184			_ => Err("invalid value"),
14185		}
14186	}
14187}
14188impl std::convert::TryFrom<&str> for InstallationPermissionsRepositoryProjects {
14189	type Error = &'static str;
14190
14191	fn try_from(value: &str) -> Result<Self, &'static str> {
14192		value.parse()
14193	}
14194}
14195impl std::convert::TryFrom<&String> for InstallationPermissionsRepositoryProjects {
14196	type Error = &'static str;
14197
14198	fn try_from(value: &String) -> Result<Self, &'static str> {
14199		value.parse()
14200	}
14201}
14202impl std::convert::TryFrom<String> for InstallationPermissionsRepositoryProjects {
14203	type Error = &'static str;
14204
14205	fn try_from(value: String) -> Result<Self, &'static str> {
14206		value.parse()
14207	}
14208}
14209/// The level of permission granted to the access token to view and manage
14210/// secret scanning alerts.
14211#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14212pub enum InstallationPermissionsSecretScanningAlerts {
14213	#[serde(rename = "read")]
14214	Read,
14215	#[serde(rename = "write")]
14216	Write,
14217}
14218impl From<&InstallationPermissionsSecretScanningAlerts>
14219	for InstallationPermissionsSecretScanningAlerts
14220{
14221	fn from(value: &InstallationPermissionsSecretScanningAlerts) -> Self {
14222		value.clone()
14223	}
14224}
14225impl ToString for InstallationPermissionsSecretScanningAlerts {
14226	fn to_string(&self) -> String {
14227		match *self {
14228			Self::Read => "read".to_string(),
14229			Self::Write => "write".to_string(),
14230		}
14231	}
14232}
14233impl std::str::FromStr for InstallationPermissionsSecretScanningAlerts {
14234	type Err = &'static str;
14235
14236	fn from_str(value: &str) -> Result<Self, &'static str> {
14237		match value {
14238			"read" => Ok(Self::Read),
14239			"write" => Ok(Self::Write),
14240			_ => Err("invalid value"),
14241		}
14242	}
14243}
14244impl std::convert::TryFrom<&str> for InstallationPermissionsSecretScanningAlerts {
14245	type Error = &'static str;
14246
14247	fn try_from(value: &str) -> Result<Self, &'static str> {
14248		value.parse()
14249	}
14250}
14251impl std::convert::TryFrom<&String> for InstallationPermissionsSecretScanningAlerts {
14252	type Error = &'static str;
14253
14254	fn try_from(value: &String) -> Result<Self, &'static str> {
14255		value.parse()
14256	}
14257}
14258impl std::convert::TryFrom<String> for InstallationPermissionsSecretScanningAlerts {
14259	type Error = &'static str;
14260
14261	fn try_from(value: String) -> Result<Self, &'static str> {
14262		value.parse()
14263	}
14264}
14265/// The level of permission granted to the access token to manage repository
14266/// secrets.
14267#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14268pub enum InstallationPermissionsSecrets {
14269	#[serde(rename = "read")]
14270	Read,
14271	#[serde(rename = "write")]
14272	Write,
14273}
14274impl From<&InstallationPermissionsSecrets> for InstallationPermissionsSecrets {
14275	fn from(value: &InstallationPermissionsSecrets) -> Self {
14276		value.clone()
14277	}
14278}
14279impl ToString for InstallationPermissionsSecrets {
14280	fn to_string(&self) -> String {
14281		match *self {
14282			Self::Read => "read".to_string(),
14283			Self::Write => "write".to_string(),
14284		}
14285	}
14286}
14287impl std::str::FromStr for InstallationPermissionsSecrets {
14288	type Err = &'static str;
14289
14290	fn from_str(value: &str) -> Result<Self, &'static str> {
14291		match value {
14292			"read" => Ok(Self::Read),
14293			"write" => Ok(Self::Write),
14294			_ => Err("invalid value"),
14295		}
14296	}
14297}
14298impl std::convert::TryFrom<&str> for InstallationPermissionsSecrets {
14299	type Error = &'static str;
14300
14301	fn try_from(value: &str) -> Result<Self, &'static str> {
14302		value.parse()
14303	}
14304}
14305impl std::convert::TryFrom<&String> for InstallationPermissionsSecrets {
14306	type Error = &'static str;
14307
14308	fn try_from(value: &String) -> Result<Self, &'static str> {
14309		value.parse()
14310	}
14311}
14312impl std::convert::TryFrom<String> for InstallationPermissionsSecrets {
14313	type Error = &'static str;
14314
14315	fn try_from(value: String) -> Result<Self, &'static str> {
14316		value.parse()
14317	}
14318}
14319/// The level of permission granted to the access token to view and manage
14320/// security events like code scanning alerts.
14321#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14322pub enum InstallationPermissionsSecurityEvents {
14323	#[serde(rename = "read")]
14324	Read,
14325	#[serde(rename = "write")]
14326	Write,
14327}
14328impl From<&InstallationPermissionsSecurityEvents> for InstallationPermissionsSecurityEvents {
14329	fn from(value: &InstallationPermissionsSecurityEvents) -> Self {
14330		value.clone()
14331	}
14332}
14333impl ToString for InstallationPermissionsSecurityEvents {
14334	fn to_string(&self) -> String {
14335		match *self {
14336			Self::Read => "read".to_string(),
14337			Self::Write => "write".to_string(),
14338		}
14339	}
14340}
14341impl std::str::FromStr for InstallationPermissionsSecurityEvents {
14342	type Err = &'static str;
14343
14344	fn from_str(value: &str) -> Result<Self, &'static str> {
14345		match value {
14346			"read" => Ok(Self::Read),
14347			"write" => Ok(Self::Write),
14348			_ => Err("invalid value"),
14349		}
14350	}
14351}
14352impl std::convert::TryFrom<&str> for InstallationPermissionsSecurityEvents {
14353	type Error = &'static str;
14354
14355	fn try_from(value: &str) -> Result<Self, &'static str> {
14356		value.parse()
14357	}
14358}
14359impl std::convert::TryFrom<&String> for InstallationPermissionsSecurityEvents {
14360	type Error = &'static str;
14361
14362	fn try_from(value: &String) -> Result<Self, &'static str> {
14363		value.parse()
14364	}
14365}
14366impl std::convert::TryFrom<String> for InstallationPermissionsSecurityEvents {
14367	type Error = &'static str;
14368
14369	fn try_from(value: String) -> Result<Self, &'static str> {
14370		value.parse()
14371	}
14372}
14373#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14374pub enum InstallationPermissionsSecurityScanningAlert {
14375	#[serde(rename = "read")]
14376	Read,
14377	#[serde(rename = "write")]
14378	Write,
14379}
14380impl From<&InstallationPermissionsSecurityScanningAlert>
14381	for InstallationPermissionsSecurityScanningAlert
14382{
14383	fn from(value: &InstallationPermissionsSecurityScanningAlert) -> Self {
14384		value.clone()
14385	}
14386}
14387impl ToString for InstallationPermissionsSecurityScanningAlert {
14388	fn to_string(&self) -> String {
14389		match *self {
14390			Self::Read => "read".to_string(),
14391			Self::Write => "write".to_string(),
14392		}
14393	}
14394}
14395impl std::str::FromStr for InstallationPermissionsSecurityScanningAlert {
14396	type Err = &'static str;
14397
14398	fn from_str(value: &str) -> Result<Self, &'static str> {
14399		match value {
14400			"read" => Ok(Self::Read),
14401			"write" => Ok(Self::Write),
14402			_ => Err("invalid value"),
14403		}
14404	}
14405}
14406impl std::convert::TryFrom<&str> for InstallationPermissionsSecurityScanningAlert {
14407	type Error = &'static str;
14408
14409	fn try_from(value: &str) -> Result<Self, &'static str> {
14410		value.parse()
14411	}
14412}
14413impl std::convert::TryFrom<&String> for InstallationPermissionsSecurityScanningAlert {
14414	type Error = &'static str;
14415
14416	fn try_from(value: &String) -> Result<Self, &'static str> {
14417		value.parse()
14418	}
14419}
14420impl std::convert::TryFrom<String> for InstallationPermissionsSecurityScanningAlert {
14421	type Error = &'static str;
14422
14423	fn try_from(value: String) -> Result<Self, &'static str> {
14424		value.parse()
14425	}
14426}
14427/// The level of permission granted to the access token to manage just a single
14428/// file.
14429#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14430pub enum InstallationPermissionsSingleFile {
14431	#[serde(rename = "read")]
14432	Read,
14433	#[serde(rename = "write")]
14434	Write,
14435}
14436impl From<&InstallationPermissionsSingleFile> for InstallationPermissionsSingleFile {
14437	fn from(value: &InstallationPermissionsSingleFile) -> Self {
14438		value.clone()
14439	}
14440}
14441impl ToString for InstallationPermissionsSingleFile {
14442	fn to_string(&self) -> String {
14443		match *self {
14444			Self::Read => "read".to_string(),
14445			Self::Write => "write".to_string(),
14446		}
14447	}
14448}
14449impl std::str::FromStr for InstallationPermissionsSingleFile {
14450	type Err = &'static str;
14451
14452	fn from_str(value: &str) -> Result<Self, &'static str> {
14453		match value {
14454			"read" => Ok(Self::Read),
14455			"write" => Ok(Self::Write),
14456			_ => Err("invalid value"),
14457		}
14458	}
14459}
14460impl std::convert::TryFrom<&str> for InstallationPermissionsSingleFile {
14461	type Error = &'static str;
14462
14463	fn try_from(value: &str) -> Result<Self, &'static str> {
14464		value.parse()
14465	}
14466}
14467impl std::convert::TryFrom<&String> for InstallationPermissionsSingleFile {
14468	type Error = &'static str;
14469
14470	fn try_from(value: &String) -> Result<Self, &'static str> {
14471		value.parse()
14472	}
14473}
14474impl std::convert::TryFrom<String> for InstallationPermissionsSingleFile {
14475	type Error = &'static str;
14476
14477	fn try_from(value: String) -> Result<Self, &'static str> {
14478		value.parse()
14479	}
14480}
14481/// The level of permission granted to the access token for commit statuses.
14482#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14483pub enum InstallationPermissionsStatuses {
14484	#[serde(rename = "read")]
14485	Read,
14486	#[serde(rename = "write")]
14487	Write,
14488}
14489impl From<&InstallationPermissionsStatuses> for InstallationPermissionsStatuses {
14490	fn from(value: &InstallationPermissionsStatuses) -> Self {
14491		value.clone()
14492	}
14493}
14494impl ToString for InstallationPermissionsStatuses {
14495	fn to_string(&self) -> String {
14496		match *self {
14497			Self::Read => "read".to_string(),
14498			Self::Write => "write".to_string(),
14499		}
14500	}
14501}
14502impl std::str::FromStr for InstallationPermissionsStatuses {
14503	type Err = &'static str;
14504
14505	fn from_str(value: &str) -> Result<Self, &'static str> {
14506		match value {
14507			"read" => Ok(Self::Read),
14508			"write" => Ok(Self::Write),
14509			_ => Err("invalid value"),
14510		}
14511	}
14512}
14513impl std::convert::TryFrom<&str> for InstallationPermissionsStatuses {
14514	type Error = &'static str;
14515
14516	fn try_from(value: &str) -> Result<Self, &'static str> {
14517		value.parse()
14518	}
14519}
14520impl std::convert::TryFrom<&String> for InstallationPermissionsStatuses {
14521	type Error = &'static str;
14522
14523	fn try_from(value: &String) -> Result<Self, &'static str> {
14524		value.parse()
14525	}
14526}
14527impl std::convert::TryFrom<String> for InstallationPermissionsStatuses {
14528	type Error = &'static str;
14529
14530	fn try_from(value: String) -> Result<Self, &'static str> {
14531		value.parse()
14532	}
14533}
14534/// The level of permission granted to the access token to manage team
14535/// discussions and related comments.
14536#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14537pub enum InstallationPermissionsTeamDiscussions {
14538	#[serde(rename = "read")]
14539	Read,
14540	#[serde(rename = "write")]
14541	Write,
14542}
14543impl From<&InstallationPermissionsTeamDiscussions> for InstallationPermissionsTeamDiscussions {
14544	fn from(value: &InstallationPermissionsTeamDiscussions) -> Self {
14545		value.clone()
14546	}
14547}
14548impl ToString for InstallationPermissionsTeamDiscussions {
14549	fn to_string(&self) -> String {
14550		match *self {
14551			Self::Read => "read".to_string(),
14552			Self::Write => "write".to_string(),
14553		}
14554	}
14555}
14556impl std::str::FromStr for InstallationPermissionsTeamDiscussions {
14557	type Err = &'static str;
14558
14559	fn from_str(value: &str) -> Result<Self, &'static str> {
14560		match value {
14561			"read" => Ok(Self::Read),
14562			"write" => Ok(Self::Write),
14563			_ => Err("invalid value"),
14564		}
14565	}
14566}
14567impl std::convert::TryFrom<&str> for InstallationPermissionsTeamDiscussions {
14568	type Error = &'static str;
14569
14570	fn try_from(value: &str) -> Result<Self, &'static str> {
14571		value.parse()
14572	}
14573}
14574impl std::convert::TryFrom<&String> for InstallationPermissionsTeamDiscussions {
14575	type Error = &'static str;
14576
14577	fn try_from(value: &String) -> Result<Self, &'static str> {
14578		value.parse()
14579	}
14580}
14581impl std::convert::TryFrom<String> for InstallationPermissionsTeamDiscussions {
14582	type Error = &'static str;
14583
14584	fn try_from(value: String) -> Result<Self, &'static str> {
14585		value.parse()
14586	}
14587}
14588/// The level of permission granted to the access token to manage Dependabot
14589/// alerts.
14590#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14591pub enum InstallationPermissionsVulnerabilityAlerts {
14592	#[serde(rename = "read")]
14593	Read,
14594	#[serde(rename = "write")]
14595	Write,
14596}
14597impl From<&InstallationPermissionsVulnerabilityAlerts>
14598	for InstallationPermissionsVulnerabilityAlerts
14599{
14600	fn from(value: &InstallationPermissionsVulnerabilityAlerts) -> Self {
14601		value.clone()
14602	}
14603}
14604impl ToString for InstallationPermissionsVulnerabilityAlerts {
14605	fn to_string(&self) -> String {
14606		match *self {
14607			Self::Read => "read".to_string(),
14608			Self::Write => "write".to_string(),
14609		}
14610	}
14611}
14612impl std::str::FromStr for InstallationPermissionsVulnerabilityAlerts {
14613	type Err = &'static str;
14614
14615	fn from_str(value: &str) -> Result<Self, &'static str> {
14616		match value {
14617			"read" => Ok(Self::Read),
14618			"write" => Ok(Self::Write),
14619			_ => Err("invalid value"),
14620		}
14621	}
14622}
14623impl std::convert::TryFrom<&str> for InstallationPermissionsVulnerabilityAlerts {
14624	type Error = &'static str;
14625
14626	fn try_from(value: &str) -> Result<Self, &'static str> {
14627		value.parse()
14628	}
14629}
14630impl std::convert::TryFrom<&String> for InstallationPermissionsVulnerabilityAlerts {
14631	type Error = &'static str;
14632
14633	fn try_from(value: &String) -> Result<Self, &'static str> {
14634		value.parse()
14635	}
14636}
14637impl std::convert::TryFrom<String> for InstallationPermissionsVulnerabilityAlerts {
14638	type Error = &'static str;
14639
14640	fn try_from(value: String) -> Result<Self, &'static str> {
14641		value.parse()
14642	}
14643}
14644/// The level of permission granted to the access token to update GitHub Actions
14645/// workflow files.
14646#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14647pub enum InstallationPermissionsWorkflows {
14648	#[serde(rename = "read")]
14649	Read,
14650	#[serde(rename = "write")]
14651	Write,
14652}
14653impl From<&InstallationPermissionsWorkflows> for InstallationPermissionsWorkflows {
14654	fn from(value: &InstallationPermissionsWorkflows) -> Self {
14655		value.clone()
14656	}
14657}
14658impl ToString for InstallationPermissionsWorkflows {
14659	fn to_string(&self) -> String {
14660		match *self {
14661			Self::Read => "read".to_string(),
14662			Self::Write => "write".to_string(),
14663		}
14664	}
14665}
14666impl std::str::FromStr for InstallationPermissionsWorkflows {
14667	type Err = &'static str;
14668
14669	fn from_str(value: &str) -> Result<Self, &'static str> {
14670		match value {
14671			"read" => Ok(Self::Read),
14672			"write" => Ok(Self::Write),
14673			_ => Err("invalid value"),
14674		}
14675	}
14676}
14677impl std::convert::TryFrom<&str> for InstallationPermissionsWorkflows {
14678	type Error = &'static str;
14679
14680	fn try_from(value: &str) -> Result<Self, &'static str> {
14681		value.parse()
14682	}
14683}
14684impl std::convert::TryFrom<&String> for InstallationPermissionsWorkflows {
14685	type Error = &'static str;
14686
14687	fn try_from(value: &String) -> Result<Self, &'static str> {
14688		value.parse()
14689	}
14690}
14691impl std::convert::TryFrom<String> for InstallationPermissionsWorkflows {
14692	type Error = &'static str;
14693
14694	fn try_from(value: String) -> Result<Self, &'static str> {
14695		value.parse()
14696	}
14697}
14698#[derive(Clone, Debug, Deserialize, Serialize)]
14699#[serde(deny_unknown_fields)]
14700pub struct InstallationRepositoriesAdded {
14701	pub action:               InstallationRepositoriesAddedAction,
14702	pub installation:         Installation,
14703	/// An array of repository objects, which were added to the installation.
14704	pub repositories_added:   Vec<InstallationRepositoriesAddedRepositoriesAddedItem>,
14705	/// An array of repository objects, which were removed from the
14706	/// installation.
14707	pub repositories_removed: Vec<InstallationRepositoriesAddedRepositoriesRemovedItem>,
14708	/// Describe whether all repositories have been selected or there's a
14709	/// selection involved
14710	pub repository_selection: InstallationRepositoriesAddedRepositorySelection,
14711	pub requester:            Option<User>,
14712	pub sender:               User,
14713}
14714impl From<&InstallationRepositoriesAdded> for InstallationRepositoriesAdded {
14715	fn from(value: &InstallationRepositoriesAdded) -> Self {
14716		value.clone()
14717	}
14718}
14719#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14720pub enum InstallationRepositoriesAddedAction {
14721	#[serde(rename = "added")]
14722	Added,
14723}
14724impl From<&InstallationRepositoriesAddedAction> for InstallationRepositoriesAddedAction {
14725	fn from(value: &InstallationRepositoriesAddedAction) -> Self {
14726		value.clone()
14727	}
14728}
14729impl ToString for InstallationRepositoriesAddedAction {
14730	fn to_string(&self) -> String {
14731		match *self {
14732			Self::Added => "added".to_string(),
14733		}
14734	}
14735}
14736impl std::str::FromStr for InstallationRepositoriesAddedAction {
14737	type Err = &'static str;
14738
14739	fn from_str(value: &str) -> Result<Self, &'static str> {
14740		match value {
14741			"added" => Ok(Self::Added),
14742			_ => Err("invalid value"),
14743		}
14744	}
14745}
14746impl std::convert::TryFrom<&str> for InstallationRepositoriesAddedAction {
14747	type Error = &'static str;
14748
14749	fn try_from(value: &str) -> Result<Self, &'static str> {
14750		value.parse()
14751	}
14752}
14753impl std::convert::TryFrom<&String> for InstallationRepositoriesAddedAction {
14754	type Error = &'static str;
14755
14756	fn try_from(value: &String) -> Result<Self, &'static str> {
14757		value.parse()
14758	}
14759}
14760impl std::convert::TryFrom<String> for InstallationRepositoriesAddedAction {
14761	type Error = &'static str;
14762
14763	fn try_from(value: String) -> Result<Self, &'static str> {
14764		value.parse()
14765	}
14766}
14767#[derive(Clone, Debug, Deserialize, Serialize)]
14768#[serde(deny_unknown_fields)]
14769pub struct InstallationRepositoriesAddedRepositoriesAddedItem {
14770	pub full_name: String,
14771	/// Unique identifier of the repository
14772	pub id:        i64,
14773	/// The name of the repository.
14774	pub name:      String,
14775	pub node_id:   String,
14776	/// Whether the repository is private or public.
14777	pub private:   bool,
14778}
14779impl From<&InstallationRepositoriesAddedRepositoriesAddedItem>
14780	for InstallationRepositoriesAddedRepositoriesAddedItem
14781{
14782	fn from(value: &InstallationRepositoriesAddedRepositoriesAddedItem) -> Self {
14783		value.clone()
14784	}
14785}
14786#[derive(Clone, Debug, Deserialize, Serialize)]
14787#[serde(deny_unknown_fields)]
14788pub struct InstallationRepositoriesAddedRepositoriesRemovedItem {
14789	#[serde(default, skip_serializing_if = "Option::is_none")]
14790	pub full_name: Option<String>,
14791	/// Unique identifier of the repository
14792	#[serde(default, skip_serializing_if = "Option::is_none")]
14793	pub id:        Option<i64>,
14794	/// The name of the repository.
14795	#[serde(default, skip_serializing_if = "Option::is_none")]
14796	pub name:      Option<String>,
14797	#[serde(default, skip_serializing_if = "Option::is_none")]
14798	pub node_id:   Option<String>,
14799	/// Whether the repository is private or public.
14800	#[serde(default, skip_serializing_if = "Option::is_none")]
14801	pub private:   Option<bool>,
14802}
14803impl From<&InstallationRepositoriesAddedRepositoriesRemovedItem>
14804	for InstallationRepositoriesAddedRepositoriesRemovedItem
14805{
14806	fn from(value: &InstallationRepositoriesAddedRepositoriesRemovedItem) -> Self {
14807		value.clone()
14808	}
14809}
14810/// Describe whether all repositories have been selected or there's a selection
14811/// involved
14812#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14813pub enum InstallationRepositoriesAddedRepositorySelection {
14814	#[serde(rename = "all")]
14815	All,
14816	#[serde(rename = "selected")]
14817	Selected,
14818}
14819impl From<&InstallationRepositoriesAddedRepositorySelection>
14820	for InstallationRepositoriesAddedRepositorySelection
14821{
14822	fn from(value: &InstallationRepositoriesAddedRepositorySelection) -> Self {
14823		value.clone()
14824	}
14825}
14826impl ToString for InstallationRepositoriesAddedRepositorySelection {
14827	fn to_string(&self) -> String {
14828		match *self {
14829			Self::All => "all".to_string(),
14830			Self::Selected => "selected".to_string(),
14831		}
14832	}
14833}
14834impl std::str::FromStr for InstallationRepositoriesAddedRepositorySelection {
14835	type Err = &'static str;
14836
14837	fn from_str(value: &str) -> Result<Self, &'static str> {
14838		match value {
14839			"all" => Ok(Self::All),
14840			"selected" => Ok(Self::Selected),
14841			_ => Err("invalid value"),
14842		}
14843	}
14844}
14845impl std::convert::TryFrom<&str> for InstallationRepositoriesAddedRepositorySelection {
14846	type Error = &'static str;
14847
14848	fn try_from(value: &str) -> Result<Self, &'static str> {
14849		value.parse()
14850	}
14851}
14852impl std::convert::TryFrom<&String> for InstallationRepositoriesAddedRepositorySelection {
14853	type Error = &'static str;
14854
14855	fn try_from(value: &String) -> Result<Self, &'static str> {
14856		value.parse()
14857	}
14858}
14859impl std::convert::TryFrom<String> for InstallationRepositoriesAddedRepositorySelection {
14860	type Error = &'static str;
14861
14862	fn try_from(value: String) -> Result<Self, &'static str> {
14863		value.parse()
14864	}
14865}
14866#[derive(Clone, Debug, Deserialize, Serialize)]
14867#[serde(untagged)]
14868pub enum InstallationRepositoriesEvent {
14869	Added(InstallationRepositoriesAdded),
14870	Removed(InstallationRepositoriesRemoved),
14871}
14872impl From<&InstallationRepositoriesEvent> for InstallationRepositoriesEvent {
14873	fn from(value: &InstallationRepositoriesEvent) -> Self {
14874		value.clone()
14875	}
14876}
14877impl From<InstallationRepositoriesAdded> for InstallationRepositoriesEvent {
14878	fn from(value: InstallationRepositoriesAdded) -> Self {
14879		Self::Added(value)
14880	}
14881}
14882impl From<InstallationRepositoriesRemoved> for InstallationRepositoriesEvent {
14883	fn from(value: InstallationRepositoriesRemoved) -> Self {
14884		Self::Removed(value)
14885	}
14886}
14887#[derive(Clone, Debug, Deserialize, Serialize)]
14888#[serde(deny_unknown_fields)]
14889pub struct InstallationRepositoriesRemoved {
14890	pub action:               InstallationRepositoriesRemovedAction,
14891	pub installation:         Installation,
14892	/// An array of repository objects, which were added to the installation.
14893	pub repositories_added:   Vec<InstallationRepositoriesRemovedRepositoriesAddedItem>,
14894	/// An array of repository objects, which were removed from the
14895	/// installation.
14896	pub repositories_removed: Vec<InstallationRepositoriesRemovedRepositoriesRemovedItem>,
14897	/// Describe whether all repositories have been selected or there's a
14898	/// selection involved
14899	pub repository_selection: InstallationRepositoriesRemovedRepositorySelection,
14900	pub requester:            Option<User>,
14901	pub sender:               User,
14902}
14903impl From<&InstallationRepositoriesRemoved> for InstallationRepositoriesRemoved {
14904	fn from(value: &InstallationRepositoriesRemoved) -> Self {
14905		value.clone()
14906	}
14907}
14908#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14909pub enum InstallationRepositoriesRemovedAction {
14910	#[serde(rename = "removed")]
14911	Removed,
14912}
14913impl From<&InstallationRepositoriesRemovedAction> for InstallationRepositoriesRemovedAction {
14914	fn from(value: &InstallationRepositoriesRemovedAction) -> Self {
14915		value.clone()
14916	}
14917}
14918impl ToString for InstallationRepositoriesRemovedAction {
14919	fn to_string(&self) -> String {
14920		match *self {
14921			Self::Removed => "removed".to_string(),
14922		}
14923	}
14924}
14925impl std::str::FromStr for InstallationRepositoriesRemovedAction {
14926	type Err = &'static str;
14927
14928	fn from_str(value: &str) -> Result<Self, &'static str> {
14929		match value {
14930			"removed" => Ok(Self::Removed),
14931			_ => Err("invalid value"),
14932		}
14933	}
14934}
14935impl std::convert::TryFrom<&str> for InstallationRepositoriesRemovedAction {
14936	type Error = &'static str;
14937
14938	fn try_from(value: &str) -> Result<Self, &'static str> {
14939		value.parse()
14940	}
14941}
14942impl std::convert::TryFrom<&String> for InstallationRepositoriesRemovedAction {
14943	type Error = &'static str;
14944
14945	fn try_from(value: &String) -> Result<Self, &'static str> {
14946		value.parse()
14947	}
14948}
14949impl std::convert::TryFrom<String> for InstallationRepositoriesRemovedAction {
14950	type Error = &'static str;
14951
14952	fn try_from(value: String) -> Result<Self, &'static str> {
14953		value.parse()
14954	}
14955}
14956#[derive(Clone, Debug, Deserialize, Serialize)]
14957#[serde(deny_unknown_fields)]
14958pub struct InstallationRepositoriesRemovedRepositoriesAddedItem {
14959	pub full_name: String,
14960	/// Unique identifier of the repository
14961	pub id:        i64,
14962	/// The name of the repository.
14963	pub name:      String,
14964	pub node_id:   String,
14965	/// Whether the repository is private or public.
14966	pub private:   bool,
14967}
14968impl From<&InstallationRepositoriesRemovedRepositoriesAddedItem>
14969	for InstallationRepositoriesRemovedRepositoriesAddedItem
14970{
14971	fn from(value: &InstallationRepositoriesRemovedRepositoriesAddedItem) -> Self {
14972		value.clone()
14973	}
14974}
14975#[derive(Clone, Debug, Deserialize, Serialize)]
14976#[serde(deny_unknown_fields)]
14977pub struct InstallationRepositoriesRemovedRepositoriesRemovedItem {
14978	pub full_name: String,
14979	/// Unique identifier of the repository
14980	pub id:        i64,
14981	/// The name of the repository.
14982	pub name:      String,
14983	pub node_id:   String,
14984	/// Whether the repository is private or public.
14985	pub private:   bool,
14986}
14987impl From<&InstallationRepositoriesRemovedRepositoriesRemovedItem>
14988	for InstallationRepositoriesRemovedRepositoriesRemovedItem
14989{
14990	fn from(value: &InstallationRepositoriesRemovedRepositoriesRemovedItem) -> Self {
14991		value.clone()
14992	}
14993}
14994/// Describe whether all repositories have been selected or there's a selection
14995/// involved
14996#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
14997pub enum InstallationRepositoriesRemovedRepositorySelection {
14998	#[serde(rename = "all")]
14999	All,
15000	#[serde(rename = "selected")]
15001	Selected,
15002}
15003impl From<&InstallationRepositoriesRemovedRepositorySelection>
15004	for InstallationRepositoriesRemovedRepositorySelection
15005{
15006	fn from(value: &InstallationRepositoriesRemovedRepositorySelection) -> Self {
15007		value.clone()
15008	}
15009}
15010impl ToString for InstallationRepositoriesRemovedRepositorySelection {
15011	fn to_string(&self) -> String {
15012		match *self {
15013			Self::All => "all".to_string(),
15014			Self::Selected => "selected".to_string(),
15015		}
15016	}
15017}
15018impl std::str::FromStr for InstallationRepositoriesRemovedRepositorySelection {
15019	type Err = &'static str;
15020
15021	fn from_str(value: &str) -> Result<Self, &'static str> {
15022		match value {
15023			"all" => Ok(Self::All),
15024			"selected" => Ok(Self::Selected),
15025			_ => Err("invalid value"),
15026		}
15027	}
15028}
15029impl std::convert::TryFrom<&str> for InstallationRepositoriesRemovedRepositorySelection {
15030	type Error = &'static str;
15031
15032	fn try_from(value: &str) -> Result<Self, &'static str> {
15033		value.parse()
15034	}
15035}
15036impl std::convert::TryFrom<&String> for InstallationRepositoriesRemovedRepositorySelection {
15037	type Error = &'static str;
15038
15039	fn try_from(value: &String) -> Result<Self, &'static str> {
15040		value.parse()
15041	}
15042}
15043impl std::convert::TryFrom<String> for InstallationRepositoriesRemovedRepositorySelection {
15044	type Error = &'static str;
15045
15046	fn try_from(value: String) -> Result<Self, &'static str> {
15047		value.parse()
15048	}
15049}
15050/// Describe whether all repositories have been selected or there's a selection
15051/// involved
15052#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15053pub enum InstallationRepositorySelection {
15054	#[serde(rename = "all")]
15055	All,
15056	#[serde(rename = "selected")]
15057	Selected,
15058}
15059impl From<&InstallationRepositorySelection> for InstallationRepositorySelection {
15060	fn from(value: &InstallationRepositorySelection) -> Self {
15061		value.clone()
15062	}
15063}
15064impl ToString for InstallationRepositorySelection {
15065	fn to_string(&self) -> String {
15066		match *self {
15067			Self::All => "all".to_string(),
15068			Self::Selected => "selected".to_string(),
15069		}
15070	}
15071}
15072impl std::str::FromStr for InstallationRepositorySelection {
15073	type Err = &'static str;
15074
15075	fn from_str(value: &str) -> Result<Self, &'static str> {
15076		match value {
15077			"all" => Ok(Self::All),
15078			"selected" => Ok(Self::Selected),
15079			_ => Err("invalid value"),
15080		}
15081	}
15082}
15083impl std::convert::TryFrom<&str> for InstallationRepositorySelection {
15084	type Error = &'static str;
15085
15086	fn try_from(value: &str) -> Result<Self, &'static str> {
15087		value.parse()
15088	}
15089}
15090impl std::convert::TryFrom<&String> for InstallationRepositorySelection {
15091	type Error = &'static str;
15092
15093	fn try_from(value: &String) -> Result<Self, &'static str> {
15094		value.parse()
15095	}
15096}
15097impl std::convert::TryFrom<String> for InstallationRepositorySelection {
15098	type Error = &'static str;
15099
15100	fn try_from(value: String) -> Result<Self, &'static str> {
15101		value.parse()
15102	}
15103}
15104#[derive(Clone, Debug, Deserialize, Serialize)]
15105#[serde(deny_unknown_fields)]
15106pub struct InstallationSuspend {
15107	pub action:       InstallationSuspendAction,
15108	pub installation: Installation,
15109	/// An array of repository objects that the installation can access.
15110	#[serde(default, skip_serializing_if = "Vec::is_empty")]
15111	pub repositories: Vec<InstallationSuspendRepositoriesItem>,
15112	#[serde(default)]
15113	pub requester:    (),
15114	pub sender:       User,
15115}
15116impl From<&InstallationSuspend> for InstallationSuspend {
15117	fn from(value: &InstallationSuspend) -> Self {
15118		value.clone()
15119	}
15120}
15121#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15122pub enum InstallationSuspendAction {
15123	#[serde(rename = "suspend")]
15124	Suspend,
15125}
15126impl From<&InstallationSuspendAction> for InstallationSuspendAction {
15127	fn from(value: &InstallationSuspendAction) -> Self {
15128		value.clone()
15129	}
15130}
15131impl ToString for InstallationSuspendAction {
15132	fn to_string(&self) -> String {
15133		match *self {
15134			Self::Suspend => "suspend".to_string(),
15135		}
15136	}
15137}
15138impl std::str::FromStr for InstallationSuspendAction {
15139	type Err = &'static str;
15140
15141	fn from_str(value: &str) -> Result<Self, &'static str> {
15142		match value {
15143			"suspend" => Ok(Self::Suspend),
15144			_ => Err("invalid value"),
15145		}
15146	}
15147}
15148impl std::convert::TryFrom<&str> for InstallationSuspendAction {
15149	type Error = &'static str;
15150
15151	fn try_from(value: &str) -> Result<Self, &'static str> {
15152		value.parse()
15153	}
15154}
15155impl std::convert::TryFrom<&String> for InstallationSuspendAction {
15156	type Error = &'static str;
15157
15158	fn try_from(value: &String) -> Result<Self, &'static str> {
15159		value.parse()
15160	}
15161}
15162impl std::convert::TryFrom<String> for InstallationSuspendAction {
15163	type Error = &'static str;
15164
15165	fn try_from(value: String) -> Result<Self, &'static str> {
15166		value.parse()
15167	}
15168}
15169#[derive(Clone, Debug, Deserialize, Serialize)]
15170#[serde(deny_unknown_fields)]
15171pub struct InstallationSuspendRepositoriesItem {
15172	pub full_name: String,
15173	/// Unique identifier of the repository
15174	pub id:        i64,
15175	/// The name of the repository.
15176	pub name:      String,
15177	pub node_id:   String,
15178	/// Whether the repository is private or public.
15179	pub private:   bool,
15180}
15181impl From<&InstallationSuspendRepositoriesItem> for InstallationSuspendRepositoriesItem {
15182	fn from(value: &InstallationSuspendRepositoriesItem) -> Self {
15183		value.clone()
15184	}
15185}
15186#[derive(Clone, Debug, Deserialize, Serialize)]
15187pub struct InstallationTargetEvent(pub InstallationTargetRenamed);
15188impl std::ops::Deref for InstallationTargetEvent {
15189	type Target = InstallationTargetRenamed;
15190
15191	fn deref(&self) -> &InstallationTargetRenamed {
15192		&self.0
15193	}
15194}
15195impl From<InstallationTargetEvent> for InstallationTargetRenamed {
15196	fn from(value: InstallationTargetEvent) -> Self {
15197		value.0
15198	}
15199}
15200impl From<&InstallationTargetEvent> for InstallationTargetEvent {
15201	fn from(value: &InstallationTargetEvent) -> Self {
15202		value.clone()
15203	}
15204}
15205impl From<InstallationTargetRenamed> for InstallationTargetEvent {
15206	fn from(value: InstallationTargetRenamed) -> Self {
15207		Self(value)
15208	}
15209}
15210/// Somebody renamed the user or organization account that a GitHub App is
15211/// installed on.
15212#[derive(Clone, Debug, Deserialize, Serialize)]
15213#[serde(deny_unknown_fields)]
15214pub struct InstallationTargetRenamed {
15215	pub account:      InstallationTargetRenamedAccount,
15216	pub action:       InstallationTargetRenamedAction,
15217	pub changes:      InstallationTargetRenamedChanges,
15218	pub installation: InstallationLite,
15219	#[serde(default, skip_serializing_if = "Option::is_none")]
15220	pub organization: Option<Organization>,
15221	#[serde(default, skip_serializing_if = "Option::is_none")]
15222	pub repository:   Option<Repository>,
15223	#[serde(default, skip_serializing_if = "Option::is_none")]
15224	pub sender:       Option<User>,
15225	pub target_type:  String,
15226}
15227impl From<&InstallationTargetRenamed> for InstallationTargetRenamed {
15228	fn from(value: &InstallationTargetRenamed) -> Self {
15229		value.clone()
15230	}
15231}
15232#[derive(Clone, Debug, Deserialize, Serialize)]
15233#[serde(deny_unknown_fields)]
15234pub struct InstallationTargetRenamedAccount {
15235	pub avatar_url: String,
15236	#[serde(default, skip_serializing_if = "Option::is_none")]
15237	pub created_at: Option<chrono::DateTime<chrono::offset::Utc>>,
15238	#[serde(default, skip_serializing_if = "Option::is_none")]
15239	pub description: Option<InstallationTargetRenamedAccountDescription>,
15240	#[serde(default, skip_serializing_if = "Option::is_none")]
15241	pub events_url: Option<String>,
15242	#[serde(default, skip_serializing_if = "Option::is_none")]
15243	pub followers: Option<i64>,
15244	#[serde(default, skip_serializing_if = "Option::is_none")]
15245	pub followers_url: Option<String>,
15246	#[serde(default, skip_serializing_if = "Option::is_none")]
15247	pub following: Option<i64>,
15248	#[serde(default, skip_serializing_if = "Option::is_none")]
15249	pub following_url: Option<String>,
15250	#[serde(default, skip_serializing_if = "Option::is_none")]
15251	pub gists_url: Option<String>,
15252	#[serde(default, skip_serializing_if = "Option::is_none")]
15253	pub gravatar_id: Option<String>,
15254	#[serde(default, skip_serializing_if = "Option::is_none")]
15255	pub has_organization_projects: Option<bool>,
15256	#[serde(default, skip_serializing_if = "Option::is_none")]
15257	pub has_repository_projects: Option<bool>,
15258	#[serde(default, skip_serializing_if = "Option::is_none")]
15259	pub hooks_url: Option<String>,
15260	pub html_url: String,
15261	pub id: i64,
15262	#[serde(default, skip_serializing_if = "Option::is_none")]
15263	pub is_verified: Option<bool>,
15264	#[serde(default, skip_serializing_if = "Option::is_none")]
15265	pub issues_url: Option<String>,
15266	#[serde(default, skip_serializing_if = "Option::is_none")]
15267	pub login: Option<String>,
15268	#[serde(default, skip_serializing_if = "Option::is_none")]
15269	pub members_url: Option<String>,
15270	#[serde(default, skip_serializing_if = "Option::is_none")]
15271	pub name: Option<String>,
15272	pub node_id: String,
15273	#[serde(default, skip_serializing_if = "Option::is_none")]
15274	pub organizations_url: Option<String>,
15275	#[serde(default, skip_serializing_if = "Option::is_none")]
15276	pub public_gists: Option<i64>,
15277	#[serde(default, skip_serializing_if = "Option::is_none")]
15278	pub public_members_url: Option<String>,
15279	#[serde(default, skip_serializing_if = "Option::is_none")]
15280	pub public_repos: Option<i64>,
15281	#[serde(default, skip_serializing_if = "Option::is_none")]
15282	pub received_events_url: Option<String>,
15283	#[serde(default, skip_serializing_if = "Option::is_none")]
15284	pub repos_url: Option<String>,
15285	#[serde(default, skip_serializing_if = "Option::is_none")]
15286	pub site_admin: Option<bool>,
15287	#[serde(default, skip_serializing_if = "Option::is_none")]
15288	pub slug: Option<String>,
15289	#[serde(default, skip_serializing_if = "Option::is_none")]
15290	pub starred_url: Option<String>,
15291	#[serde(default, skip_serializing_if = "Option::is_none")]
15292	pub subscriptions_url: Option<String>,
15293	#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
15294	pub type_: Option<InstallationTargetRenamedAccountType>,
15295	#[serde(default, skip_serializing_if = "Option::is_none")]
15296	pub updated_at: Option<chrono::DateTime<chrono::offset::Utc>>,
15297	#[serde(default, skip_serializing_if = "Option::is_none")]
15298	pub url: Option<String>,
15299	#[serde(default, skip_serializing_if = "Option::is_none")]
15300	pub website_url: Option<InstallationTargetRenamedAccountWebsiteUrl>,
15301}
15302impl From<&InstallationTargetRenamedAccount> for InstallationTargetRenamedAccount {
15303	fn from(value: &InstallationTargetRenamedAccount) -> Self {
15304		value.clone()
15305	}
15306}
15307#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15308#[serde(untagged)]
15309pub enum InstallationTargetRenamedAccountDescription {
15310	Null,
15311}
15312impl From<&InstallationTargetRenamedAccountDescription>
15313	for InstallationTargetRenamedAccountDescription
15314{
15315	fn from(value: &InstallationTargetRenamedAccountDescription) -> Self {
15316		value.clone()
15317	}
15318}
15319#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15320pub enum InstallationTargetRenamedAccountType {
15321	Bot,
15322	User,
15323	Organization,
15324}
15325impl From<&InstallationTargetRenamedAccountType> for InstallationTargetRenamedAccountType {
15326	fn from(value: &InstallationTargetRenamedAccountType) -> Self {
15327		value.clone()
15328	}
15329}
15330impl ToString for InstallationTargetRenamedAccountType {
15331	fn to_string(&self) -> String {
15332		match *self {
15333			Self::Bot => "Bot".to_string(),
15334			Self::User => "User".to_string(),
15335			Self::Organization => "Organization".to_string(),
15336		}
15337	}
15338}
15339impl std::str::FromStr for InstallationTargetRenamedAccountType {
15340	type Err = &'static str;
15341
15342	fn from_str(value: &str) -> Result<Self, &'static str> {
15343		match value {
15344			"Bot" => Ok(Self::Bot),
15345			"User" => Ok(Self::User),
15346			"Organization" => Ok(Self::Organization),
15347			_ => Err("invalid value"),
15348		}
15349	}
15350}
15351impl std::convert::TryFrom<&str> for InstallationTargetRenamedAccountType {
15352	type Error = &'static str;
15353
15354	fn try_from(value: &str) -> Result<Self, &'static str> {
15355		value.parse()
15356	}
15357}
15358impl std::convert::TryFrom<&String> for InstallationTargetRenamedAccountType {
15359	type Error = &'static str;
15360
15361	fn try_from(value: &String) -> Result<Self, &'static str> {
15362		value.parse()
15363	}
15364}
15365impl std::convert::TryFrom<String> for InstallationTargetRenamedAccountType {
15366	type Error = &'static str;
15367
15368	fn try_from(value: String) -> Result<Self, &'static str> {
15369		value.parse()
15370	}
15371}
15372#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15373#[serde(untagged)]
15374pub enum InstallationTargetRenamedAccountWebsiteUrl {
15375	Null,
15376}
15377impl From<&InstallationTargetRenamedAccountWebsiteUrl>
15378	for InstallationTargetRenamedAccountWebsiteUrl
15379{
15380	fn from(value: &InstallationTargetRenamedAccountWebsiteUrl) -> Self {
15381		value.clone()
15382	}
15383}
15384#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15385pub enum InstallationTargetRenamedAction {
15386	#[serde(rename = "renamed")]
15387	Renamed,
15388}
15389impl From<&InstallationTargetRenamedAction> for InstallationTargetRenamedAction {
15390	fn from(value: &InstallationTargetRenamedAction) -> Self {
15391		value.clone()
15392	}
15393}
15394impl ToString for InstallationTargetRenamedAction {
15395	fn to_string(&self) -> String {
15396		match *self {
15397			Self::Renamed => "renamed".to_string(),
15398		}
15399	}
15400}
15401impl std::str::FromStr for InstallationTargetRenamedAction {
15402	type Err = &'static str;
15403
15404	fn from_str(value: &str) -> Result<Self, &'static str> {
15405		match value {
15406			"renamed" => Ok(Self::Renamed),
15407			_ => Err("invalid value"),
15408		}
15409	}
15410}
15411impl std::convert::TryFrom<&str> for InstallationTargetRenamedAction {
15412	type Error = &'static str;
15413
15414	fn try_from(value: &str) -> Result<Self, &'static str> {
15415		value.parse()
15416	}
15417}
15418impl std::convert::TryFrom<&String> for InstallationTargetRenamedAction {
15419	type Error = &'static str;
15420
15421	fn try_from(value: &String) -> Result<Self, &'static str> {
15422		value.parse()
15423	}
15424}
15425impl std::convert::TryFrom<String> for InstallationTargetRenamedAction {
15426	type Error = &'static str;
15427
15428	fn try_from(value: String) -> Result<Self, &'static str> {
15429		value.parse()
15430	}
15431}
15432#[derive(Clone, Debug, Deserialize, Serialize)]
15433#[serde(deny_unknown_fields)]
15434pub struct InstallationTargetRenamedChanges {
15435	#[serde(default, skip_serializing_if = "Option::is_none")]
15436	pub login: Option<InstallationTargetRenamedChangesLogin>,
15437	#[serde(default, skip_serializing_if = "Option::is_none")]
15438	pub slug:  Option<InstallationTargetRenamedChangesSlug>,
15439}
15440impl From<&InstallationTargetRenamedChanges> for InstallationTargetRenamedChanges {
15441	fn from(value: &InstallationTargetRenamedChanges) -> Self {
15442		value.clone()
15443	}
15444}
15445#[derive(Clone, Debug, Deserialize, Serialize)]
15446#[serde(deny_unknown_fields)]
15447pub struct InstallationTargetRenamedChangesLogin {
15448	pub from: String,
15449}
15450impl From<&InstallationTargetRenamedChangesLogin> for InstallationTargetRenamedChangesLogin {
15451	fn from(value: &InstallationTargetRenamedChangesLogin) -> Self {
15452		value.clone()
15453	}
15454}
15455#[derive(Clone, Debug, Deserialize, Serialize)]
15456#[serde(deny_unknown_fields)]
15457pub struct InstallationTargetRenamedChangesSlug {
15458	pub from: String,
15459}
15460impl From<&InstallationTargetRenamedChangesSlug> for InstallationTargetRenamedChangesSlug {
15461	fn from(value: &InstallationTargetRenamedChangesSlug) -> Self {
15462		value.clone()
15463	}
15464}
15465#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15466pub enum InstallationTargetType {
15467	User,
15468	Organization,
15469}
15470impl From<&InstallationTargetType> for InstallationTargetType {
15471	fn from(value: &InstallationTargetType) -> Self {
15472		value.clone()
15473	}
15474}
15475impl ToString for InstallationTargetType {
15476	fn to_string(&self) -> String {
15477		match *self {
15478			Self::User => "User".to_string(),
15479			Self::Organization => "Organization".to_string(),
15480		}
15481	}
15482}
15483impl std::str::FromStr for InstallationTargetType {
15484	type Err = &'static str;
15485
15486	fn from_str(value: &str) -> Result<Self, &'static str> {
15487		match value {
15488			"User" => Ok(Self::User),
15489			"Organization" => Ok(Self::Organization),
15490			_ => Err("invalid value"),
15491		}
15492	}
15493}
15494impl std::convert::TryFrom<&str> for InstallationTargetType {
15495	type Error = &'static str;
15496
15497	fn try_from(value: &str) -> Result<Self, &'static str> {
15498		value.parse()
15499	}
15500}
15501impl std::convert::TryFrom<&String> for InstallationTargetType {
15502	type Error = &'static str;
15503
15504	fn try_from(value: &String) -> Result<Self, &'static str> {
15505		value.parse()
15506	}
15507}
15508impl std::convert::TryFrom<String> for InstallationTargetType {
15509	type Error = &'static str;
15510
15511	fn try_from(value: String) -> Result<Self, &'static str> {
15512		value.parse()
15513	}
15514}
15515#[derive(Clone, Debug, Deserialize, Serialize)]
15516#[serde(deny_unknown_fields)]
15517pub struct InstallationUnsuspend {
15518	pub action:       InstallationUnsuspendAction,
15519	pub installation: Installation,
15520	/// An array of repository objects that the installation can access.
15521	#[serde(default, skip_serializing_if = "Vec::is_empty")]
15522	pub repositories: Vec<InstallationUnsuspendRepositoriesItem>,
15523	#[serde(default)]
15524	pub requester:    (),
15525	pub sender:       User,
15526}
15527impl From<&InstallationUnsuspend> for InstallationUnsuspend {
15528	fn from(value: &InstallationUnsuspend) -> Self {
15529		value.clone()
15530	}
15531}
15532#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15533pub enum InstallationUnsuspendAction {
15534	#[serde(rename = "unsuspend")]
15535	Unsuspend,
15536}
15537impl From<&InstallationUnsuspendAction> for InstallationUnsuspendAction {
15538	fn from(value: &InstallationUnsuspendAction) -> Self {
15539		value.clone()
15540	}
15541}
15542impl ToString for InstallationUnsuspendAction {
15543	fn to_string(&self) -> String {
15544		match *self {
15545			Self::Unsuspend => "unsuspend".to_string(),
15546		}
15547	}
15548}
15549impl std::str::FromStr for InstallationUnsuspendAction {
15550	type Err = &'static str;
15551
15552	fn from_str(value: &str) -> Result<Self, &'static str> {
15553		match value {
15554			"unsuspend" => Ok(Self::Unsuspend),
15555			_ => Err("invalid value"),
15556		}
15557	}
15558}
15559impl std::convert::TryFrom<&str> for InstallationUnsuspendAction {
15560	type Error = &'static str;
15561
15562	fn try_from(value: &str) -> Result<Self, &'static str> {
15563		value.parse()
15564	}
15565}
15566impl std::convert::TryFrom<&String> for InstallationUnsuspendAction {
15567	type Error = &'static str;
15568
15569	fn try_from(value: &String) -> Result<Self, &'static str> {
15570		value.parse()
15571	}
15572}
15573impl std::convert::TryFrom<String> for InstallationUnsuspendAction {
15574	type Error = &'static str;
15575
15576	fn try_from(value: String) -> Result<Self, &'static str> {
15577		value.parse()
15578	}
15579}
15580#[derive(Clone, Debug, Deserialize, Serialize)]
15581#[serde(deny_unknown_fields)]
15582pub struct InstallationUnsuspendRepositoriesItem {
15583	pub full_name: String,
15584	/// Unique identifier of the repository
15585	pub id:        i64,
15586	/// The name of the repository.
15587	pub name:      String,
15588	pub node_id:   String,
15589	/// Whether the repository is private or public.
15590	pub private:   bool,
15591}
15592impl From<&InstallationUnsuspendRepositoriesItem> for InstallationUnsuspendRepositoriesItem {
15593	fn from(value: &InstallationUnsuspendRepositoriesItem) -> Self {
15594		value.clone()
15595	}
15596}
15597#[derive(Clone, Debug, Deserialize, Serialize)]
15598#[serde(untagged)]
15599pub enum InstallationUpdatedAt {
15600	Variant0(chrono::DateTime<chrono::offset::Utc>),
15601	Variant1(i64),
15602}
15603impl From<&InstallationUpdatedAt> for InstallationUpdatedAt {
15604	fn from(value: &InstallationUpdatedAt) -> Self {
15605		value.clone()
15606	}
15607}
15608impl std::str::FromStr for InstallationUpdatedAt {
15609	type Err = &'static str;
15610
15611	fn from_str(value: &str) -> Result<Self, &'static str> {
15612		if let Ok(v) = value.parse() {
15613			Ok(Self::Variant0(v))
15614		} else if let Ok(v) = value.parse() {
15615			Ok(Self::Variant1(v))
15616		} else {
15617			Err("string conversion failed for all variants")
15618		}
15619	}
15620}
15621impl std::convert::TryFrom<&str> for InstallationUpdatedAt {
15622	type Error = &'static str;
15623
15624	fn try_from(value: &str) -> Result<Self, &'static str> {
15625		value.parse()
15626	}
15627}
15628impl std::convert::TryFrom<&String> for InstallationUpdatedAt {
15629	type Error = &'static str;
15630
15631	fn try_from(value: &String) -> Result<Self, &'static str> {
15632		value.parse()
15633	}
15634}
15635impl std::convert::TryFrom<String> for InstallationUpdatedAt {
15636	type Error = &'static str;
15637
15638	fn try_from(value: String) -> Result<Self, &'static str> {
15639		value.parse()
15640	}
15641}
15642impl ToString for InstallationUpdatedAt {
15643	fn to_string(&self) -> String {
15644		match self {
15645			Self::Variant0(x) => x.to_string(),
15646			Self::Variant1(x) => x.to_string(),
15647		}
15648	}
15649}
15650impl From<chrono::DateTime<chrono::offset::Utc>> for InstallationUpdatedAt {
15651	fn from(value: chrono::DateTime<chrono::offset::Utc>) -> Self {
15652		Self::Variant0(value)
15653	}
15654}
15655impl From<i64> for InstallationUpdatedAt {
15656	fn from(value: i64) -> Self {
15657		Self::Variant1(value)
15658	}
15659}
15660/// The [issue](https://docs.github.com/en/rest/reference/issues) itself.
15661#[derive(Clone, Debug, Deserialize, Serialize)]
15662#[serde(deny_unknown_fields)]
15663pub struct Issue {
15664	pub active_lock_reason: Option<IssueActiveLockReason>,
15665	#[serde(default, skip_serializing_if = "Option::is_none")]
15666	pub assignee: Option<User>,
15667	pub assignees: Vec<User>,
15668	pub author_association: AuthorAssociation,
15669	/// Contents of the issue
15670	pub body: Option<String>,
15671	pub closed_at: Option<chrono::DateTime<chrono::offset::Utc>>,
15672	pub comments: i64,
15673	pub comments_url: String,
15674	pub created_at: chrono::DateTime<chrono::offset::Utc>,
15675	#[serde(default, skip_serializing_if = "Option::is_none")]
15676	pub draft: Option<bool>,
15677	pub events_url: String,
15678	pub html_url: String,
15679	pub id: i64,
15680	#[serde(default, skip_serializing_if = "Vec::is_empty")]
15681	pub labels: Vec<Label>,
15682	pub labels_url: String,
15683	#[serde(default, skip_serializing_if = "Option::is_none")]
15684	pub locked: Option<bool>,
15685	pub milestone: Option<Milestone>,
15686	pub node_id: String,
15687	/// Number uniquely identifying the issue within its repository
15688	pub number: i64,
15689	#[serde(default, skip_serializing_if = "Option::is_none")]
15690	pub performed_via_github_app: Option<App>,
15691	#[serde(default, skip_serializing_if = "Option::is_none")]
15692	pub pull_request: Option<IssuePullRequest>,
15693	pub reactions: Reactions,
15694	pub repository_url: String,
15695	/// State of the issue; either 'open' or 'closed'
15696	#[serde(default, skip_serializing_if = "Option::is_none")]
15697	pub state: Option<IssueState>,
15698	/// The reason for the current state
15699	#[serde(default, skip_serializing_if = "Option::is_none")]
15700	pub state_reason: Option<String>,
15701	#[serde(default, skip_serializing_if = "Option::is_none")]
15702	pub timeline_url: Option<String>,
15703	/// Title of the issue
15704	pub title: String,
15705	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
15706	/// URL for the issue
15707	pub url: String,
15708	pub user: User,
15709}
15710impl From<&Issue> for Issue {
15711	fn from(value: &Issue) -> Self {
15712		value.clone()
15713	}
15714}
15715#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15716pub enum IssueActiveLockReason {
15717	#[serde(rename = "resolved")]
15718	Resolved,
15719	#[serde(rename = "off-topic")]
15720	OffTopic,
15721	#[serde(rename = "too heated")]
15722	TooHeated,
15723	#[serde(rename = "spam")]
15724	Spam,
15725}
15726impl From<&IssueActiveLockReason> for IssueActiveLockReason {
15727	fn from(value: &IssueActiveLockReason) -> Self {
15728		value.clone()
15729	}
15730}
15731impl ToString for IssueActiveLockReason {
15732	fn to_string(&self) -> String {
15733		match *self {
15734			Self::Resolved => "resolved".to_string(),
15735			Self::OffTopic => "off-topic".to_string(),
15736			Self::TooHeated => "too heated".to_string(),
15737			Self::Spam => "spam".to_string(),
15738		}
15739	}
15740}
15741impl std::str::FromStr for IssueActiveLockReason {
15742	type Err = &'static str;
15743
15744	fn from_str(value: &str) -> Result<Self, &'static str> {
15745		match value {
15746			"resolved" => Ok(Self::Resolved),
15747			"off-topic" => Ok(Self::OffTopic),
15748			"too heated" => Ok(Self::TooHeated),
15749			"spam" => Ok(Self::Spam),
15750			_ => Err("invalid value"),
15751		}
15752	}
15753}
15754impl std::convert::TryFrom<&str> for IssueActiveLockReason {
15755	type Error = &'static str;
15756
15757	fn try_from(value: &str) -> Result<Self, &'static str> {
15758		value.parse()
15759	}
15760}
15761impl std::convert::TryFrom<&String> for IssueActiveLockReason {
15762	type Error = &'static str;
15763
15764	fn try_from(value: &String) -> Result<Self, &'static str> {
15765		value.parse()
15766	}
15767}
15768impl std::convert::TryFrom<String> for IssueActiveLockReason {
15769	type Error = &'static str;
15770
15771	fn try_from(value: String) -> Result<Self, &'static str> {
15772		value.parse()
15773	}
15774}
15775/// The [comment](https://docs.github.com/en/rest/reference/issues#comments) itself.
15776#[derive(Clone, Debug, Deserialize, Serialize)]
15777#[serde(deny_unknown_fields)]
15778pub struct IssueComment {
15779	pub author_association: AuthorAssociation,
15780	/// Contents of the issue comment
15781	pub body: String,
15782	pub created_at: chrono::DateTime<chrono::offset::Utc>,
15783	pub html_url: String,
15784	/// Unique identifier of the issue comment
15785	pub id: i64,
15786	pub issue_url: String,
15787	pub node_id: String,
15788	pub performed_via_github_app: Option<App>,
15789	pub reactions: Reactions,
15790	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
15791	/// URL for the issue comment
15792	pub url: String,
15793	pub user: User,
15794}
15795impl From<&IssueComment> for IssueComment {
15796	fn from(value: &IssueComment) -> Self {
15797		value.clone()
15798	}
15799}
15800#[derive(Clone, Debug, Deserialize, Serialize)]
15801#[serde(deny_unknown_fields)]
15802pub struct IssueCommentCreated {
15803	pub action:       IssueCommentCreatedAction,
15804	pub comment:      IssueComment,
15805	#[serde(default, skip_serializing_if = "Option::is_none")]
15806	pub installation: Option<InstallationLite>,
15807	/// The [issue](https://docs.github.com/en/rest/reference/issues) the comment belongs to.
15808	pub issue:        Issue,
15809	#[serde(default, skip_serializing_if = "Option::is_none")]
15810	pub organization: Option<Organization>,
15811	pub repository:   Repository,
15812	pub sender:       User,
15813}
15814impl From<&IssueCommentCreated> for IssueCommentCreated {
15815	fn from(value: &IssueCommentCreated) -> Self {
15816		value.clone()
15817	}
15818}
15819#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15820pub enum IssueCommentCreatedAction {
15821	#[serde(rename = "created")]
15822	Created,
15823}
15824impl From<&IssueCommentCreatedAction> for IssueCommentCreatedAction {
15825	fn from(value: &IssueCommentCreatedAction) -> Self {
15826		value.clone()
15827	}
15828}
15829impl ToString for IssueCommentCreatedAction {
15830	fn to_string(&self) -> String {
15831		match *self {
15832			Self::Created => "created".to_string(),
15833		}
15834	}
15835}
15836impl std::str::FromStr for IssueCommentCreatedAction {
15837	type Err = &'static str;
15838
15839	fn from_str(value: &str) -> Result<Self, &'static str> {
15840		match value {
15841			"created" => Ok(Self::Created),
15842			_ => Err("invalid value"),
15843		}
15844	}
15845}
15846impl std::convert::TryFrom<&str> for IssueCommentCreatedAction {
15847	type Error = &'static str;
15848
15849	fn try_from(value: &str) -> Result<Self, &'static str> {
15850		value.parse()
15851	}
15852}
15853impl std::convert::TryFrom<&String> for IssueCommentCreatedAction {
15854	type Error = &'static str;
15855
15856	fn try_from(value: &String) -> Result<Self, &'static str> {
15857		value.parse()
15858	}
15859}
15860impl std::convert::TryFrom<String> for IssueCommentCreatedAction {
15861	type Error = &'static str;
15862
15863	fn try_from(value: String) -> Result<Self, &'static str> {
15864		value.parse()
15865	}
15866}
15867#[derive(Clone, Debug, Deserialize, Serialize)]
15868#[serde(deny_unknown_fields)]
15869pub struct IssueCommentDeleted {
15870	pub action:       IssueCommentDeletedAction,
15871	pub comment:      IssueComment,
15872	#[serde(default, skip_serializing_if = "Option::is_none")]
15873	pub installation: Option<InstallationLite>,
15874	/// The [issue](https://docs.github.com/en/rest/reference/issues) the comment belongs to.
15875	pub issue:        Issue,
15876	#[serde(default, skip_serializing_if = "Option::is_none")]
15877	pub organization: Option<Organization>,
15878	pub repository:   Repository,
15879	pub sender:       User,
15880}
15881impl From<&IssueCommentDeleted> for IssueCommentDeleted {
15882	fn from(value: &IssueCommentDeleted) -> Self {
15883		value.clone()
15884	}
15885}
15886#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15887pub enum IssueCommentDeletedAction {
15888	#[serde(rename = "deleted")]
15889	Deleted,
15890}
15891impl From<&IssueCommentDeletedAction> for IssueCommentDeletedAction {
15892	fn from(value: &IssueCommentDeletedAction) -> Self {
15893		value.clone()
15894	}
15895}
15896impl ToString for IssueCommentDeletedAction {
15897	fn to_string(&self) -> String {
15898		match *self {
15899			Self::Deleted => "deleted".to_string(),
15900		}
15901	}
15902}
15903impl std::str::FromStr for IssueCommentDeletedAction {
15904	type Err = &'static str;
15905
15906	fn from_str(value: &str) -> Result<Self, &'static str> {
15907		match value {
15908			"deleted" => Ok(Self::Deleted),
15909			_ => Err("invalid value"),
15910		}
15911	}
15912}
15913impl std::convert::TryFrom<&str> for IssueCommentDeletedAction {
15914	type Error = &'static str;
15915
15916	fn try_from(value: &str) -> Result<Self, &'static str> {
15917		value.parse()
15918	}
15919}
15920impl std::convert::TryFrom<&String> for IssueCommentDeletedAction {
15921	type Error = &'static str;
15922
15923	fn try_from(value: &String) -> Result<Self, &'static str> {
15924		value.parse()
15925	}
15926}
15927impl std::convert::TryFrom<String> for IssueCommentDeletedAction {
15928	type Error = &'static str;
15929
15930	fn try_from(value: String) -> Result<Self, &'static str> {
15931		value.parse()
15932	}
15933}
15934#[derive(Clone, Debug, Deserialize, Serialize)]
15935#[serde(deny_unknown_fields)]
15936pub struct IssueCommentEdited {
15937	pub action:       IssueCommentEditedAction,
15938	pub changes:      IssueCommentEditedChanges,
15939	pub comment:      IssueComment,
15940	#[serde(default, skip_serializing_if = "Option::is_none")]
15941	pub installation: Option<InstallationLite>,
15942	/// The [issue](https://docs.github.com/en/rest/reference/issues) the comment belongs to.
15943	pub issue:        Issue,
15944	#[serde(default, skip_serializing_if = "Option::is_none")]
15945	pub organization: Option<Organization>,
15946	pub repository:   Repository,
15947	pub sender:       User,
15948}
15949impl From<&IssueCommentEdited> for IssueCommentEdited {
15950	fn from(value: &IssueCommentEdited) -> Self {
15951		value.clone()
15952	}
15953}
15954#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15955pub enum IssueCommentEditedAction {
15956	#[serde(rename = "edited")]
15957	Edited,
15958}
15959impl From<&IssueCommentEditedAction> for IssueCommentEditedAction {
15960	fn from(value: &IssueCommentEditedAction) -> Self {
15961		value.clone()
15962	}
15963}
15964impl ToString for IssueCommentEditedAction {
15965	fn to_string(&self) -> String {
15966		match *self {
15967			Self::Edited => "edited".to_string(),
15968		}
15969	}
15970}
15971impl std::str::FromStr for IssueCommentEditedAction {
15972	type Err = &'static str;
15973
15974	fn from_str(value: &str) -> Result<Self, &'static str> {
15975		match value {
15976			"edited" => Ok(Self::Edited),
15977			_ => Err("invalid value"),
15978		}
15979	}
15980}
15981impl std::convert::TryFrom<&str> for IssueCommentEditedAction {
15982	type Error = &'static str;
15983
15984	fn try_from(value: &str) -> Result<Self, &'static str> {
15985		value.parse()
15986	}
15987}
15988impl std::convert::TryFrom<&String> for IssueCommentEditedAction {
15989	type Error = &'static str;
15990
15991	fn try_from(value: &String) -> Result<Self, &'static str> {
15992		value.parse()
15993	}
15994}
15995impl std::convert::TryFrom<String> for IssueCommentEditedAction {
15996	type Error = &'static str;
15997
15998	fn try_from(value: String) -> Result<Self, &'static str> {
15999		value.parse()
16000	}
16001}
16002/// The changes to the comment.
16003#[derive(Clone, Debug, Deserialize, Serialize)]
16004#[serde(deny_unknown_fields)]
16005pub struct IssueCommentEditedChanges {
16006	#[serde(default, skip_serializing_if = "Option::is_none")]
16007	pub body: Option<IssueCommentEditedChangesBody>,
16008}
16009impl From<&IssueCommentEditedChanges> for IssueCommentEditedChanges {
16010	fn from(value: &IssueCommentEditedChanges) -> Self {
16011		value.clone()
16012	}
16013}
16014#[derive(Clone, Debug, Deserialize, Serialize)]
16015#[serde(deny_unknown_fields)]
16016pub struct IssueCommentEditedChangesBody {
16017	/// The previous version of the body.
16018	pub from: String,
16019}
16020impl From<&IssueCommentEditedChangesBody> for IssueCommentEditedChangesBody {
16021	fn from(value: &IssueCommentEditedChangesBody) -> Self {
16022		value.clone()
16023	}
16024}
16025#[derive(Clone, Debug, Deserialize, Serialize)]
16026#[serde(untagged)]
16027pub enum IssueCommentEvent {
16028	Created(IssueCommentCreated),
16029	Deleted(IssueCommentDeleted),
16030	Edited(IssueCommentEdited),
16031}
16032impl From<&IssueCommentEvent> for IssueCommentEvent {
16033	fn from(value: &IssueCommentEvent) -> Self {
16034		value.clone()
16035	}
16036}
16037impl From<IssueCommentCreated> for IssueCommentEvent {
16038	fn from(value: IssueCommentCreated) -> Self {
16039		Self::Created(value)
16040	}
16041}
16042impl From<IssueCommentDeleted> for IssueCommentEvent {
16043	fn from(value: IssueCommentDeleted) -> Self {
16044		Self::Deleted(value)
16045	}
16046}
16047impl From<IssueCommentEdited> for IssueCommentEvent {
16048	fn from(value: IssueCommentEdited) -> Self {
16049		Self::Edited(value)
16050	}
16051}
16052#[derive(Clone, Debug, Deserialize, Serialize)]
16053#[serde(deny_unknown_fields)]
16054pub struct IssuePullRequest {
16055	#[serde(default, skip_serializing_if = "Option::is_none")]
16056	pub diff_url:  Option<String>,
16057	#[serde(default, skip_serializing_if = "Option::is_none")]
16058	pub html_url:  Option<String>,
16059	#[serde(default, skip_serializing_if = "Option::is_none")]
16060	pub merged_at: Option<chrono::DateTime<chrono::offset::Utc>>,
16061	#[serde(default, skip_serializing_if = "Option::is_none")]
16062	pub patch_url: Option<String>,
16063	#[serde(default, skip_serializing_if = "Option::is_none")]
16064	pub url:       Option<String>,
16065}
16066impl From<&IssuePullRequest> for IssuePullRequest {
16067	fn from(value: &IssuePullRequest) -> Self {
16068		value.clone()
16069	}
16070}
16071/// State of the issue; either 'open' or 'closed'
16072#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16073pub enum IssueState {
16074	#[serde(rename = "open")]
16075	Open,
16076	#[serde(rename = "closed")]
16077	Closed,
16078}
16079impl From<&IssueState> for IssueState {
16080	fn from(value: &IssueState) -> Self {
16081		value.clone()
16082	}
16083}
16084impl ToString for IssueState {
16085	fn to_string(&self) -> String {
16086		match *self {
16087			Self::Open => "open".to_string(),
16088			Self::Closed => "closed".to_string(),
16089		}
16090	}
16091}
16092impl std::str::FromStr for IssueState {
16093	type Err = &'static str;
16094
16095	fn from_str(value: &str) -> Result<Self, &'static str> {
16096		match value {
16097			"open" => Ok(Self::Open),
16098			"closed" => Ok(Self::Closed),
16099			_ => Err("invalid value"),
16100		}
16101	}
16102}
16103impl std::convert::TryFrom<&str> for IssueState {
16104	type Error = &'static str;
16105
16106	fn try_from(value: &str) -> Result<Self, &'static str> {
16107		value.parse()
16108	}
16109}
16110impl std::convert::TryFrom<&String> for IssueState {
16111	type Error = &'static str;
16112
16113	fn try_from(value: &String) -> Result<Self, &'static str> {
16114		value.parse()
16115	}
16116}
16117impl std::convert::TryFrom<String> for IssueState {
16118	type Error = &'static str;
16119
16120	fn try_from(value: String) -> Result<Self, &'static str> {
16121		value.parse()
16122	}
16123}
16124/// Activity related to an issue. The type of activity is specified in the
16125/// action property.
16126#[derive(Clone, Debug, Deserialize, Serialize)]
16127#[serde(deny_unknown_fields)]
16128pub struct IssuesAssigned {
16129	/// The action that was performed.
16130	pub action:       IssuesAssignedAction,
16131	/// The optional user who was assigned or unassigned from the issue.
16132	#[serde(default, skip_serializing_if = "Option::is_none")]
16133	pub assignee:     Option<User>,
16134	#[serde(default, skip_serializing_if = "Option::is_none")]
16135	pub installation: Option<InstallationLite>,
16136	pub issue:        Issue,
16137	#[serde(default, skip_serializing_if = "Option::is_none")]
16138	pub organization: Option<Organization>,
16139	pub repository:   Repository,
16140	pub sender:       User,
16141}
16142impl From<&IssuesAssigned> for IssuesAssigned {
16143	fn from(value: &IssuesAssigned) -> Self {
16144		value.clone()
16145	}
16146}
16147/// The action that was performed.
16148#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16149pub enum IssuesAssignedAction {
16150	#[serde(rename = "assigned")]
16151	Assigned,
16152}
16153impl From<&IssuesAssignedAction> for IssuesAssignedAction {
16154	fn from(value: &IssuesAssignedAction) -> Self {
16155		value.clone()
16156	}
16157}
16158impl ToString for IssuesAssignedAction {
16159	fn to_string(&self) -> String {
16160		match *self {
16161			Self::Assigned => "assigned".to_string(),
16162		}
16163	}
16164}
16165impl std::str::FromStr for IssuesAssignedAction {
16166	type Err = &'static str;
16167
16168	fn from_str(value: &str) -> Result<Self, &'static str> {
16169		match value {
16170			"assigned" => Ok(Self::Assigned),
16171			_ => Err("invalid value"),
16172		}
16173	}
16174}
16175impl std::convert::TryFrom<&str> for IssuesAssignedAction {
16176	type Error = &'static str;
16177
16178	fn try_from(value: &str) -> Result<Self, &'static str> {
16179		value.parse()
16180	}
16181}
16182impl std::convert::TryFrom<&String> for IssuesAssignedAction {
16183	type Error = &'static str;
16184
16185	fn try_from(value: &String) -> Result<Self, &'static str> {
16186		value.parse()
16187	}
16188}
16189impl std::convert::TryFrom<String> for IssuesAssignedAction {
16190	type Error = &'static str;
16191
16192	fn try_from(value: String) -> Result<Self, &'static str> {
16193		value.parse()
16194	}
16195}
16196#[derive(Clone, Debug, Deserialize, Serialize)]
16197#[serde(deny_unknown_fields)]
16198pub struct IssuesClosed {
16199	/// The action that was performed.
16200	pub action:       IssuesClosedAction,
16201	#[serde(default, skip_serializing_if = "Option::is_none")]
16202	pub installation: Option<InstallationLite>,
16203	/// The [issue](https://docs.github.com/en/rest/reference/issues) itself.
16204	pub issue:        Issue,
16205	#[serde(default, skip_serializing_if = "Option::is_none")]
16206	pub organization: Option<Organization>,
16207	pub repository:   Repository,
16208	pub sender:       User,
16209}
16210impl From<&IssuesClosed> for IssuesClosed {
16211	fn from(value: &IssuesClosed) -> Self {
16212		value.clone()
16213	}
16214}
16215/// The action that was performed.
16216#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16217pub enum IssuesClosedAction {
16218	#[serde(rename = "closed")]
16219	Closed,
16220}
16221impl From<&IssuesClosedAction> for IssuesClosedAction {
16222	fn from(value: &IssuesClosedAction) -> Self {
16223		value.clone()
16224	}
16225}
16226impl ToString for IssuesClosedAction {
16227	fn to_string(&self) -> String {
16228		match *self {
16229			Self::Closed => "closed".to_string(),
16230		}
16231	}
16232}
16233impl std::str::FromStr for IssuesClosedAction {
16234	type Err = &'static str;
16235
16236	fn from_str(value: &str) -> Result<Self, &'static str> {
16237		match value {
16238			"closed" => Ok(Self::Closed),
16239			_ => Err("invalid value"),
16240		}
16241	}
16242}
16243impl std::convert::TryFrom<&str> for IssuesClosedAction {
16244	type Error = &'static str;
16245
16246	fn try_from(value: &str) -> Result<Self, &'static str> {
16247		value.parse()
16248	}
16249}
16250impl std::convert::TryFrom<&String> for IssuesClosedAction {
16251	type Error = &'static str;
16252
16253	fn try_from(value: &String) -> Result<Self, &'static str> {
16254		value.parse()
16255	}
16256}
16257impl std::convert::TryFrom<String> for IssuesClosedAction {
16258	type Error = &'static str;
16259
16260	fn try_from(value: String) -> Result<Self, &'static str> {
16261		value.parse()
16262	}
16263}
16264#[derive(Clone, Debug, Deserialize, Serialize)]
16265#[serde(deny_unknown_fields)]
16266pub struct IssuesDeleted {
16267	pub action:       IssuesDeletedAction,
16268	#[serde(default, skip_serializing_if = "Option::is_none")]
16269	pub installation: Option<InstallationLite>,
16270	pub issue:        Issue,
16271	#[serde(default, skip_serializing_if = "Option::is_none")]
16272	pub organization: Option<Organization>,
16273	pub repository:   Repository,
16274	pub sender:       User,
16275}
16276impl From<&IssuesDeleted> for IssuesDeleted {
16277	fn from(value: &IssuesDeleted) -> Self {
16278		value.clone()
16279	}
16280}
16281#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16282pub enum IssuesDeletedAction {
16283	#[serde(rename = "deleted")]
16284	Deleted,
16285}
16286impl From<&IssuesDeletedAction> for IssuesDeletedAction {
16287	fn from(value: &IssuesDeletedAction) -> Self {
16288		value.clone()
16289	}
16290}
16291impl ToString for IssuesDeletedAction {
16292	fn to_string(&self) -> String {
16293		match *self {
16294			Self::Deleted => "deleted".to_string(),
16295		}
16296	}
16297}
16298impl std::str::FromStr for IssuesDeletedAction {
16299	type Err = &'static str;
16300
16301	fn from_str(value: &str) -> Result<Self, &'static str> {
16302		match value {
16303			"deleted" => Ok(Self::Deleted),
16304			_ => Err("invalid value"),
16305		}
16306	}
16307}
16308impl std::convert::TryFrom<&str> for IssuesDeletedAction {
16309	type Error = &'static str;
16310
16311	fn try_from(value: &str) -> Result<Self, &'static str> {
16312		value.parse()
16313	}
16314}
16315impl std::convert::TryFrom<&String> for IssuesDeletedAction {
16316	type Error = &'static str;
16317
16318	fn try_from(value: &String) -> Result<Self, &'static str> {
16319		value.parse()
16320	}
16321}
16322impl std::convert::TryFrom<String> for IssuesDeletedAction {
16323	type Error = &'static str;
16324
16325	fn try_from(value: String) -> Result<Self, &'static str> {
16326		value.parse()
16327	}
16328}
16329#[derive(Clone, Debug, Deserialize, Serialize)]
16330#[serde(deny_unknown_fields)]
16331pub struct IssuesDemilestoned {
16332	pub action:       IssuesDemilestonedAction,
16333	#[serde(default, skip_serializing_if = "Option::is_none")]
16334	pub installation: Option<InstallationLite>,
16335	pub issue:        Issue,
16336	pub milestone:    Milestone,
16337	#[serde(default, skip_serializing_if = "Option::is_none")]
16338	pub organization: Option<Organization>,
16339	pub repository:   Repository,
16340	pub sender:       User,
16341}
16342impl From<&IssuesDemilestoned> for IssuesDemilestoned {
16343	fn from(value: &IssuesDemilestoned) -> Self {
16344		value.clone()
16345	}
16346}
16347#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16348pub enum IssuesDemilestonedAction {
16349	#[serde(rename = "demilestoned")]
16350	Demilestoned,
16351}
16352impl From<&IssuesDemilestonedAction> for IssuesDemilestonedAction {
16353	fn from(value: &IssuesDemilestonedAction) -> Self {
16354		value.clone()
16355	}
16356}
16357impl ToString for IssuesDemilestonedAction {
16358	fn to_string(&self) -> String {
16359		match *self {
16360			Self::Demilestoned => "demilestoned".to_string(),
16361		}
16362	}
16363}
16364impl std::str::FromStr for IssuesDemilestonedAction {
16365	type Err = &'static str;
16366
16367	fn from_str(value: &str) -> Result<Self, &'static str> {
16368		match value {
16369			"demilestoned" => Ok(Self::Demilestoned),
16370			_ => Err("invalid value"),
16371		}
16372	}
16373}
16374impl std::convert::TryFrom<&str> for IssuesDemilestonedAction {
16375	type Error = &'static str;
16376
16377	fn try_from(value: &str) -> Result<Self, &'static str> {
16378		value.parse()
16379	}
16380}
16381impl std::convert::TryFrom<&String> for IssuesDemilestonedAction {
16382	type Error = &'static str;
16383
16384	fn try_from(value: &String) -> Result<Self, &'static str> {
16385		value.parse()
16386	}
16387}
16388impl std::convert::TryFrom<String> for IssuesDemilestonedAction {
16389	type Error = &'static str;
16390
16391	fn try_from(value: String) -> Result<Self, &'static str> {
16392		value.parse()
16393	}
16394}
16395#[derive(Clone, Debug, Deserialize, Serialize)]
16396#[serde(deny_unknown_fields)]
16397pub struct IssuesEdited {
16398	pub action:       IssuesEditedAction,
16399	pub changes:      IssuesEditedChanges,
16400	#[serde(default, skip_serializing_if = "Option::is_none")]
16401	pub installation: Option<InstallationLite>,
16402	pub issue:        Issue,
16403	#[serde(default, skip_serializing_if = "Option::is_none")]
16404	pub label:        Option<Label>,
16405	#[serde(default, skip_serializing_if = "Option::is_none")]
16406	pub organization: Option<Organization>,
16407	pub repository:   Repository,
16408	pub sender:       User,
16409}
16410impl From<&IssuesEdited> for IssuesEdited {
16411	fn from(value: &IssuesEdited) -> Self {
16412		value.clone()
16413	}
16414}
16415#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16416pub enum IssuesEditedAction {
16417	#[serde(rename = "edited")]
16418	Edited,
16419}
16420impl From<&IssuesEditedAction> for IssuesEditedAction {
16421	fn from(value: &IssuesEditedAction) -> Self {
16422		value.clone()
16423	}
16424}
16425impl ToString for IssuesEditedAction {
16426	fn to_string(&self) -> String {
16427		match *self {
16428			Self::Edited => "edited".to_string(),
16429		}
16430	}
16431}
16432impl std::str::FromStr for IssuesEditedAction {
16433	type Err = &'static str;
16434
16435	fn from_str(value: &str) -> Result<Self, &'static str> {
16436		match value {
16437			"edited" => Ok(Self::Edited),
16438			_ => Err("invalid value"),
16439		}
16440	}
16441}
16442impl std::convert::TryFrom<&str> for IssuesEditedAction {
16443	type Error = &'static str;
16444
16445	fn try_from(value: &str) -> Result<Self, &'static str> {
16446		value.parse()
16447	}
16448}
16449impl std::convert::TryFrom<&String> for IssuesEditedAction {
16450	type Error = &'static str;
16451
16452	fn try_from(value: &String) -> Result<Self, &'static str> {
16453		value.parse()
16454	}
16455}
16456impl std::convert::TryFrom<String> for IssuesEditedAction {
16457	type Error = &'static str;
16458
16459	fn try_from(value: String) -> Result<Self, &'static str> {
16460		value.parse()
16461	}
16462}
16463/// The changes to the issue.
16464#[derive(Clone, Debug, Deserialize, Serialize)]
16465#[serde(deny_unknown_fields)]
16466pub struct IssuesEditedChanges {
16467	#[serde(default, skip_serializing_if = "Option::is_none")]
16468	pub body:  Option<IssuesEditedChangesBody>,
16469	#[serde(default, skip_serializing_if = "Option::is_none")]
16470	pub title: Option<IssuesEditedChangesTitle>,
16471}
16472impl From<&IssuesEditedChanges> for IssuesEditedChanges {
16473	fn from(value: &IssuesEditedChanges) -> Self {
16474		value.clone()
16475	}
16476}
16477#[derive(Clone, Debug, Deserialize, Serialize)]
16478#[serde(deny_unknown_fields)]
16479pub struct IssuesEditedChangesBody {
16480	/// The previous version of the body.
16481	pub from: String,
16482}
16483impl From<&IssuesEditedChangesBody> for IssuesEditedChangesBody {
16484	fn from(value: &IssuesEditedChangesBody) -> Self {
16485		value.clone()
16486	}
16487}
16488#[derive(Clone, Debug, Deserialize, Serialize)]
16489#[serde(deny_unknown_fields)]
16490pub struct IssuesEditedChangesTitle {
16491	/// The previous version of the title.
16492	pub from: String,
16493}
16494impl From<&IssuesEditedChangesTitle> for IssuesEditedChangesTitle {
16495	fn from(value: &IssuesEditedChangesTitle) -> Self {
16496		value.clone()
16497	}
16498}
16499#[derive(Clone, Debug, Deserialize, Serialize)]
16500#[serde(untagged)]
16501pub enum IssuesEvent {
16502	Assigned(IssuesAssigned),
16503	Closed(IssuesClosed),
16504	Deleted(IssuesDeleted),
16505	Demilestoned(IssuesDemilestoned),
16506	Edited(IssuesEdited),
16507	Labeled(IssuesLabeled),
16508	Locked(IssuesLocked),
16509	Milestoned(IssuesMilestoned),
16510	Opened(IssuesOpened),
16511	Pinned(IssuesPinned),
16512	Reopened(IssuesReopened),
16513	Transferred(IssuesTransferred),
16514	Unassigned(IssuesUnassigned),
16515	Unlabeled(IssuesUnlabeled),
16516	Unlocked(IssuesUnlocked),
16517	Unpinned(IssuesUnpinned),
16518}
16519impl From<&IssuesEvent> for IssuesEvent {
16520	fn from(value: &IssuesEvent) -> Self {
16521		value.clone()
16522	}
16523}
16524impl From<IssuesAssigned> for IssuesEvent {
16525	fn from(value: IssuesAssigned) -> Self {
16526		Self::Assigned(value)
16527	}
16528}
16529impl From<IssuesClosed> for IssuesEvent {
16530	fn from(value: IssuesClosed) -> Self {
16531		Self::Closed(value)
16532	}
16533}
16534impl From<IssuesDeleted> for IssuesEvent {
16535	fn from(value: IssuesDeleted) -> Self {
16536		Self::Deleted(value)
16537	}
16538}
16539impl From<IssuesDemilestoned> for IssuesEvent {
16540	fn from(value: IssuesDemilestoned) -> Self {
16541		Self::Demilestoned(value)
16542	}
16543}
16544impl From<IssuesEdited> for IssuesEvent {
16545	fn from(value: IssuesEdited) -> Self {
16546		Self::Edited(value)
16547	}
16548}
16549impl From<IssuesLabeled> for IssuesEvent {
16550	fn from(value: IssuesLabeled) -> Self {
16551		Self::Labeled(value)
16552	}
16553}
16554impl From<IssuesLocked> for IssuesEvent {
16555	fn from(value: IssuesLocked) -> Self {
16556		Self::Locked(value)
16557	}
16558}
16559impl From<IssuesMilestoned> for IssuesEvent {
16560	fn from(value: IssuesMilestoned) -> Self {
16561		Self::Milestoned(value)
16562	}
16563}
16564impl From<IssuesOpened> for IssuesEvent {
16565	fn from(value: IssuesOpened) -> Self {
16566		Self::Opened(value)
16567	}
16568}
16569impl From<IssuesPinned> for IssuesEvent {
16570	fn from(value: IssuesPinned) -> Self {
16571		Self::Pinned(value)
16572	}
16573}
16574impl From<IssuesReopened> for IssuesEvent {
16575	fn from(value: IssuesReopened) -> Self {
16576		Self::Reopened(value)
16577	}
16578}
16579impl From<IssuesTransferred> for IssuesEvent {
16580	fn from(value: IssuesTransferred) -> Self {
16581		Self::Transferred(value)
16582	}
16583}
16584impl From<IssuesUnassigned> for IssuesEvent {
16585	fn from(value: IssuesUnassigned) -> Self {
16586		Self::Unassigned(value)
16587	}
16588}
16589impl From<IssuesUnlabeled> for IssuesEvent {
16590	fn from(value: IssuesUnlabeled) -> Self {
16591		Self::Unlabeled(value)
16592	}
16593}
16594impl From<IssuesUnlocked> for IssuesEvent {
16595	fn from(value: IssuesUnlocked) -> Self {
16596		Self::Unlocked(value)
16597	}
16598}
16599impl From<IssuesUnpinned> for IssuesEvent {
16600	fn from(value: IssuesUnpinned) -> Self {
16601		Self::Unpinned(value)
16602	}
16603}
16604#[derive(Clone, Debug, Deserialize, Serialize)]
16605#[serde(deny_unknown_fields)]
16606pub struct IssuesLabeled {
16607	pub action:       IssuesLabeledAction,
16608	#[serde(default, skip_serializing_if = "Option::is_none")]
16609	pub installation: Option<InstallationLite>,
16610	pub issue:        Issue,
16611	/// The label that was added to the issue.
16612	#[serde(default, skip_serializing_if = "Option::is_none")]
16613	pub label:        Option<Label>,
16614	#[serde(default, skip_serializing_if = "Option::is_none")]
16615	pub organization: Option<Organization>,
16616	pub repository:   Repository,
16617	pub sender:       User,
16618}
16619impl From<&IssuesLabeled> for IssuesLabeled {
16620	fn from(value: &IssuesLabeled) -> Self {
16621		value.clone()
16622	}
16623}
16624#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16625pub enum IssuesLabeledAction {
16626	#[serde(rename = "labeled")]
16627	Labeled,
16628}
16629impl From<&IssuesLabeledAction> for IssuesLabeledAction {
16630	fn from(value: &IssuesLabeledAction) -> Self {
16631		value.clone()
16632	}
16633}
16634impl ToString for IssuesLabeledAction {
16635	fn to_string(&self) -> String {
16636		match *self {
16637			Self::Labeled => "labeled".to_string(),
16638		}
16639	}
16640}
16641impl std::str::FromStr for IssuesLabeledAction {
16642	type Err = &'static str;
16643
16644	fn from_str(value: &str) -> Result<Self, &'static str> {
16645		match value {
16646			"labeled" => Ok(Self::Labeled),
16647			_ => Err("invalid value"),
16648		}
16649	}
16650}
16651impl std::convert::TryFrom<&str> for IssuesLabeledAction {
16652	type Error = &'static str;
16653
16654	fn try_from(value: &str) -> Result<Self, &'static str> {
16655		value.parse()
16656	}
16657}
16658impl std::convert::TryFrom<&String> for IssuesLabeledAction {
16659	type Error = &'static str;
16660
16661	fn try_from(value: &String) -> Result<Self, &'static str> {
16662		value.parse()
16663	}
16664}
16665impl std::convert::TryFrom<String> for IssuesLabeledAction {
16666	type Error = &'static str;
16667
16668	fn try_from(value: String) -> Result<Self, &'static str> {
16669		value.parse()
16670	}
16671}
16672#[derive(Clone, Debug, Deserialize, Serialize)]
16673#[serde(deny_unknown_fields)]
16674pub struct IssuesLocked {
16675	pub action:       IssuesLockedAction,
16676	#[serde(default, skip_serializing_if = "Option::is_none")]
16677	pub installation: Option<InstallationLite>,
16678	pub issue:        Issue,
16679	#[serde(default, skip_serializing_if = "Option::is_none")]
16680	pub organization: Option<Organization>,
16681	pub repository:   Repository,
16682	pub sender:       User,
16683}
16684impl From<&IssuesLocked> for IssuesLocked {
16685	fn from(value: &IssuesLocked) -> Self {
16686		value.clone()
16687	}
16688}
16689#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16690pub enum IssuesLockedAction {
16691	#[serde(rename = "locked")]
16692	Locked,
16693}
16694impl From<&IssuesLockedAction> for IssuesLockedAction {
16695	fn from(value: &IssuesLockedAction) -> Self {
16696		value.clone()
16697	}
16698}
16699impl ToString for IssuesLockedAction {
16700	fn to_string(&self) -> String {
16701		match *self {
16702			Self::Locked => "locked".to_string(),
16703		}
16704	}
16705}
16706impl std::str::FromStr for IssuesLockedAction {
16707	type Err = &'static str;
16708
16709	fn from_str(value: &str) -> Result<Self, &'static str> {
16710		match value {
16711			"locked" => Ok(Self::Locked),
16712			_ => Err("invalid value"),
16713		}
16714	}
16715}
16716impl std::convert::TryFrom<&str> for IssuesLockedAction {
16717	type Error = &'static str;
16718
16719	fn try_from(value: &str) -> Result<Self, &'static str> {
16720		value.parse()
16721	}
16722}
16723impl std::convert::TryFrom<&String> for IssuesLockedAction {
16724	type Error = &'static str;
16725
16726	fn try_from(value: &String) -> Result<Self, &'static str> {
16727		value.parse()
16728	}
16729}
16730impl std::convert::TryFrom<String> for IssuesLockedAction {
16731	type Error = &'static str;
16732
16733	fn try_from(value: String) -> Result<Self, &'static str> {
16734		value.parse()
16735	}
16736}
16737#[derive(Clone, Debug, Deserialize, Serialize)]
16738#[serde(deny_unknown_fields)]
16739pub struct IssuesMilestoned {
16740	pub action:       IssuesMilestonedAction,
16741	#[serde(default, skip_serializing_if = "Option::is_none")]
16742	pub installation: Option<InstallationLite>,
16743	pub issue:        Issue,
16744	pub milestone:    Milestone,
16745	#[serde(default, skip_serializing_if = "Option::is_none")]
16746	pub organization: Option<Organization>,
16747	pub repository:   Repository,
16748	pub sender:       User,
16749}
16750impl From<&IssuesMilestoned> for IssuesMilestoned {
16751	fn from(value: &IssuesMilestoned) -> Self {
16752		value.clone()
16753	}
16754}
16755#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16756pub enum IssuesMilestonedAction {
16757	#[serde(rename = "milestoned")]
16758	Milestoned,
16759}
16760impl From<&IssuesMilestonedAction> for IssuesMilestonedAction {
16761	fn from(value: &IssuesMilestonedAction) -> Self {
16762		value.clone()
16763	}
16764}
16765impl ToString for IssuesMilestonedAction {
16766	fn to_string(&self) -> String {
16767		match *self {
16768			Self::Milestoned => "milestoned".to_string(),
16769		}
16770	}
16771}
16772impl std::str::FromStr for IssuesMilestonedAction {
16773	type Err = &'static str;
16774
16775	fn from_str(value: &str) -> Result<Self, &'static str> {
16776		match value {
16777			"milestoned" => Ok(Self::Milestoned),
16778			_ => Err("invalid value"),
16779		}
16780	}
16781}
16782impl std::convert::TryFrom<&str> for IssuesMilestonedAction {
16783	type Error = &'static str;
16784
16785	fn try_from(value: &str) -> Result<Self, &'static str> {
16786		value.parse()
16787	}
16788}
16789impl std::convert::TryFrom<&String> for IssuesMilestonedAction {
16790	type Error = &'static str;
16791
16792	fn try_from(value: &String) -> Result<Self, &'static str> {
16793		value.parse()
16794	}
16795}
16796impl std::convert::TryFrom<String> for IssuesMilestonedAction {
16797	type Error = &'static str;
16798
16799	fn try_from(value: String) -> Result<Self, &'static str> {
16800		value.parse()
16801	}
16802}
16803#[derive(Clone, Debug, Deserialize, Serialize)]
16804#[serde(deny_unknown_fields)]
16805pub struct IssuesOpened {
16806	pub action:       IssuesOpenedAction,
16807	#[serde(default, skip_serializing_if = "Option::is_none")]
16808	pub changes:      Option<IssuesOpenedChanges>,
16809	#[serde(default, skip_serializing_if = "Option::is_none")]
16810	pub installation: Option<InstallationLite>,
16811	pub issue:        Issue,
16812	#[serde(default, skip_serializing_if = "Option::is_none")]
16813	pub organization: Option<Organization>,
16814	pub repository:   Repository,
16815	pub sender:       User,
16816}
16817impl From<&IssuesOpened> for IssuesOpened {
16818	fn from(value: &IssuesOpened) -> Self {
16819		value.clone()
16820	}
16821}
16822#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16823pub enum IssuesOpenedAction {
16824	#[serde(rename = "opened")]
16825	Opened,
16826}
16827impl From<&IssuesOpenedAction> for IssuesOpenedAction {
16828	fn from(value: &IssuesOpenedAction) -> Self {
16829		value.clone()
16830	}
16831}
16832impl ToString for IssuesOpenedAction {
16833	fn to_string(&self) -> String {
16834		match *self {
16835			Self::Opened => "opened".to_string(),
16836		}
16837	}
16838}
16839impl std::str::FromStr for IssuesOpenedAction {
16840	type Err = &'static str;
16841
16842	fn from_str(value: &str) -> Result<Self, &'static str> {
16843		match value {
16844			"opened" => Ok(Self::Opened),
16845			_ => Err("invalid value"),
16846		}
16847	}
16848}
16849impl std::convert::TryFrom<&str> for IssuesOpenedAction {
16850	type Error = &'static str;
16851
16852	fn try_from(value: &str) -> Result<Self, &'static str> {
16853		value.parse()
16854	}
16855}
16856impl std::convert::TryFrom<&String> for IssuesOpenedAction {
16857	type Error = &'static str;
16858
16859	fn try_from(value: &String) -> Result<Self, &'static str> {
16860		value.parse()
16861	}
16862}
16863impl std::convert::TryFrom<String> for IssuesOpenedAction {
16864	type Error = &'static str;
16865
16866	fn try_from(value: String) -> Result<Self, &'static str> {
16867		value.parse()
16868	}
16869}
16870#[derive(Clone, Debug, Deserialize, Serialize)]
16871#[serde(deny_unknown_fields)]
16872pub struct IssuesOpenedChanges {
16873	pub old_issue:      Issue,
16874	pub old_repository: Repository,
16875}
16876impl From<&IssuesOpenedChanges> for IssuesOpenedChanges {
16877	fn from(value: &IssuesOpenedChanges) -> Self {
16878		value.clone()
16879	}
16880}
16881#[derive(Clone, Debug, Deserialize, Serialize)]
16882#[serde(deny_unknown_fields)]
16883pub struct IssuesPinned {
16884	pub action:       IssuesPinnedAction,
16885	#[serde(default, skip_serializing_if = "Option::is_none")]
16886	pub installation: Option<InstallationLite>,
16887	pub issue:        Issue,
16888	#[serde(default, skip_serializing_if = "Option::is_none")]
16889	pub organization: Option<Organization>,
16890	pub repository:   Repository,
16891	pub sender:       User,
16892}
16893impl From<&IssuesPinned> for IssuesPinned {
16894	fn from(value: &IssuesPinned) -> Self {
16895		value.clone()
16896	}
16897}
16898#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16899pub enum IssuesPinnedAction {
16900	#[serde(rename = "pinned")]
16901	Pinned,
16902}
16903impl From<&IssuesPinnedAction> for IssuesPinnedAction {
16904	fn from(value: &IssuesPinnedAction) -> Self {
16905		value.clone()
16906	}
16907}
16908impl ToString for IssuesPinnedAction {
16909	fn to_string(&self) -> String {
16910		match *self {
16911			Self::Pinned => "pinned".to_string(),
16912		}
16913	}
16914}
16915impl std::str::FromStr for IssuesPinnedAction {
16916	type Err = &'static str;
16917
16918	fn from_str(value: &str) -> Result<Self, &'static str> {
16919		match value {
16920			"pinned" => Ok(Self::Pinned),
16921			_ => Err("invalid value"),
16922		}
16923	}
16924}
16925impl std::convert::TryFrom<&str> for IssuesPinnedAction {
16926	type Error = &'static str;
16927
16928	fn try_from(value: &str) -> Result<Self, &'static str> {
16929		value.parse()
16930	}
16931}
16932impl std::convert::TryFrom<&String> for IssuesPinnedAction {
16933	type Error = &'static str;
16934
16935	fn try_from(value: &String) -> Result<Self, &'static str> {
16936		value.parse()
16937	}
16938}
16939impl std::convert::TryFrom<String> for IssuesPinnedAction {
16940	type Error = &'static str;
16941
16942	fn try_from(value: String) -> Result<Self, &'static str> {
16943		value.parse()
16944	}
16945}
16946#[derive(Clone, Debug, Deserialize, Serialize)]
16947#[serde(deny_unknown_fields)]
16948pub struct IssuesReopened {
16949	pub action:       IssuesReopenedAction,
16950	#[serde(default, skip_serializing_if = "Option::is_none")]
16951	pub installation: Option<InstallationLite>,
16952	pub issue:        Issue,
16953	#[serde(default, skip_serializing_if = "Option::is_none")]
16954	pub organization: Option<Organization>,
16955	pub repository:   Repository,
16956	pub sender:       User,
16957}
16958impl From<&IssuesReopened> for IssuesReopened {
16959	fn from(value: &IssuesReopened) -> Self {
16960		value.clone()
16961	}
16962}
16963#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
16964pub enum IssuesReopenedAction {
16965	#[serde(rename = "reopened")]
16966	Reopened,
16967}
16968impl From<&IssuesReopenedAction> for IssuesReopenedAction {
16969	fn from(value: &IssuesReopenedAction) -> Self {
16970		value.clone()
16971	}
16972}
16973impl ToString for IssuesReopenedAction {
16974	fn to_string(&self) -> String {
16975		match *self {
16976			Self::Reopened => "reopened".to_string(),
16977		}
16978	}
16979}
16980impl std::str::FromStr for IssuesReopenedAction {
16981	type Err = &'static str;
16982
16983	fn from_str(value: &str) -> Result<Self, &'static str> {
16984		match value {
16985			"reopened" => Ok(Self::Reopened),
16986			_ => Err("invalid value"),
16987		}
16988	}
16989}
16990impl std::convert::TryFrom<&str> for IssuesReopenedAction {
16991	type Error = &'static str;
16992
16993	fn try_from(value: &str) -> Result<Self, &'static str> {
16994		value.parse()
16995	}
16996}
16997impl std::convert::TryFrom<&String> for IssuesReopenedAction {
16998	type Error = &'static str;
16999
17000	fn try_from(value: &String) -> Result<Self, &'static str> {
17001		value.parse()
17002	}
17003}
17004impl std::convert::TryFrom<String> for IssuesReopenedAction {
17005	type Error = &'static str;
17006
17007	fn try_from(value: String) -> Result<Self, &'static str> {
17008		value.parse()
17009	}
17010}
17011#[derive(Clone, Debug, Deserialize, Serialize)]
17012#[serde(deny_unknown_fields)]
17013pub struct IssuesTransferred {
17014	pub action:       IssuesTransferredAction,
17015	pub changes:      IssuesTransferredChanges,
17016	#[serde(default, skip_serializing_if = "Option::is_none")]
17017	pub installation: Option<InstallationLite>,
17018	pub issue:        Issue,
17019	#[serde(default, skip_serializing_if = "Option::is_none")]
17020	pub organization: Option<Organization>,
17021	pub repository:   Repository,
17022	pub sender:       User,
17023}
17024impl From<&IssuesTransferred> for IssuesTransferred {
17025	fn from(value: &IssuesTransferred) -> Self {
17026		value.clone()
17027	}
17028}
17029#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17030pub enum IssuesTransferredAction {
17031	#[serde(rename = "transferred")]
17032	Transferred,
17033}
17034impl From<&IssuesTransferredAction> for IssuesTransferredAction {
17035	fn from(value: &IssuesTransferredAction) -> Self {
17036		value.clone()
17037	}
17038}
17039impl ToString for IssuesTransferredAction {
17040	fn to_string(&self) -> String {
17041		match *self {
17042			Self::Transferred => "transferred".to_string(),
17043		}
17044	}
17045}
17046impl std::str::FromStr for IssuesTransferredAction {
17047	type Err = &'static str;
17048
17049	fn from_str(value: &str) -> Result<Self, &'static str> {
17050		match value {
17051			"transferred" => Ok(Self::Transferred),
17052			_ => Err("invalid value"),
17053		}
17054	}
17055}
17056impl std::convert::TryFrom<&str> for IssuesTransferredAction {
17057	type Error = &'static str;
17058
17059	fn try_from(value: &str) -> Result<Self, &'static str> {
17060		value.parse()
17061	}
17062}
17063impl std::convert::TryFrom<&String> for IssuesTransferredAction {
17064	type Error = &'static str;
17065
17066	fn try_from(value: &String) -> Result<Self, &'static str> {
17067		value.parse()
17068	}
17069}
17070impl std::convert::TryFrom<String> for IssuesTransferredAction {
17071	type Error = &'static str;
17072
17073	fn try_from(value: String) -> Result<Self, &'static str> {
17074		value.parse()
17075	}
17076}
17077#[derive(Clone, Debug, Deserialize, Serialize)]
17078#[serde(deny_unknown_fields)]
17079pub struct IssuesTransferredChanges {
17080	pub new_issue:      Issue,
17081	pub new_repository: Repository,
17082}
17083impl From<&IssuesTransferredChanges> for IssuesTransferredChanges {
17084	fn from(value: &IssuesTransferredChanges) -> Self {
17085		value.clone()
17086	}
17087}
17088#[derive(Clone, Debug, Deserialize, Serialize)]
17089#[serde(deny_unknown_fields)]
17090pub struct IssuesUnassigned {
17091	/// The action that was performed.
17092	pub action:       IssuesUnassignedAction,
17093	/// The optional user who was assigned or unassigned from the issue.
17094	#[serde(default, skip_serializing_if = "Option::is_none")]
17095	pub assignee:     Option<User>,
17096	#[serde(default, skip_serializing_if = "Option::is_none")]
17097	pub installation: Option<InstallationLite>,
17098	pub issue:        Issue,
17099	#[serde(default, skip_serializing_if = "Option::is_none")]
17100	pub organization: Option<Organization>,
17101	pub repository:   Repository,
17102	pub sender:       User,
17103}
17104impl From<&IssuesUnassigned> for IssuesUnassigned {
17105	fn from(value: &IssuesUnassigned) -> Self {
17106		value.clone()
17107	}
17108}
17109/// The action that was performed.
17110#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17111pub enum IssuesUnassignedAction {
17112	#[serde(rename = "unassigned")]
17113	Unassigned,
17114}
17115impl From<&IssuesUnassignedAction> for IssuesUnassignedAction {
17116	fn from(value: &IssuesUnassignedAction) -> Self {
17117		value.clone()
17118	}
17119}
17120impl ToString for IssuesUnassignedAction {
17121	fn to_string(&self) -> String {
17122		match *self {
17123			Self::Unassigned => "unassigned".to_string(),
17124		}
17125	}
17126}
17127impl std::str::FromStr for IssuesUnassignedAction {
17128	type Err = &'static str;
17129
17130	fn from_str(value: &str) -> Result<Self, &'static str> {
17131		match value {
17132			"unassigned" => Ok(Self::Unassigned),
17133			_ => Err("invalid value"),
17134		}
17135	}
17136}
17137impl std::convert::TryFrom<&str> for IssuesUnassignedAction {
17138	type Error = &'static str;
17139
17140	fn try_from(value: &str) -> Result<Self, &'static str> {
17141		value.parse()
17142	}
17143}
17144impl std::convert::TryFrom<&String> for IssuesUnassignedAction {
17145	type Error = &'static str;
17146
17147	fn try_from(value: &String) -> Result<Self, &'static str> {
17148		value.parse()
17149	}
17150}
17151impl std::convert::TryFrom<String> for IssuesUnassignedAction {
17152	type Error = &'static str;
17153
17154	fn try_from(value: String) -> Result<Self, &'static str> {
17155		value.parse()
17156	}
17157}
17158#[derive(Clone, Debug, Deserialize, Serialize)]
17159#[serde(deny_unknown_fields)]
17160pub struct IssuesUnlabeled {
17161	pub action:       IssuesUnlabeledAction,
17162	#[serde(default, skip_serializing_if = "Option::is_none")]
17163	pub installation: Option<InstallationLite>,
17164	pub issue:        Issue,
17165	/// The label that was removed from the issue.
17166	#[serde(default, skip_serializing_if = "Option::is_none")]
17167	pub label:        Option<Label>,
17168	#[serde(default, skip_serializing_if = "Option::is_none")]
17169	pub organization: Option<Organization>,
17170	pub repository:   Repository,
17171	pub sender:       User,
17172}
17173impl From<&IssuesUnlabeled> for IssuesUnlabeled {
17174	fn from(value: &IssuesUnlabeled) -> Self {
17175		value.clone()
17176	}
17177}
17178#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17179pub enum IssuesUnlabeledAction {
17180	#[serde(rename = "unlabeled")]
17181	Unlabeled,
17182}
17183impl From<&IssuesUnlabeledAction> for IssuesUnlabeledAction {
17184	fn from(value: &IssuesUnlabeledAction) -> Self {
17185		value.clone()
17186	}
17187}
17188impl ToString for IssuesUnlabeledAction {
17189	fn to_string(&self) -> String {
17190		match *self {
17191			Self::Unlabeled => "unlabeled".to_string(),
17192		}
17193	}
17194}
17195impl std::str::FromStr for IssuesUnlabeledAction {
17196	type Err = &'static str;
17197
17198	fn from_str(value: &str) -> Result<Self, &'static str> {
17199		match value {
17200			"unlabeled" => Ok(Self::Unlabeled),
17201			_ => Err("invalid value"),
17202		}
17203	}
17204}
17205impl std::convert::TryFrom<&str> for IssuesUnlabeledAction {
17206	type Error = &'static str;
17207
17208	fn try_from(value: &str) -> Result<Self, &'static str> {
17209		value.parse()
17210	}
17211}
17212impl std::convert::TryFrom<&String> for IssuesUnlabeledAction {
17213	type Error = &'static str;
17214
17215	fn try_from(value: &String) -> Result<Self, &'static str> {
17216		value.parse()
17217	}
17218}
17219impl std::convert::TryFrom<String> for IssuesUnlabeledAction {
17220	type Error = &'static str;
17221
17222	fn try_from(value: String) -> Result<Self, &'static str> {
17223		value.parse()
17224	}
17225}
17226#[derive(Clone, Debug, Deserialize, Serialize)]
17227#[serde(deny_unknown_fields)]
17228pub struct IssuesUnlocked {
17229	pub action:       IssuesUnlockedAction,
17230	#[serde(default, skip_serializing_if = "Option::is_none")]
17231	pub installation: Option<InstallationLite>,
17232	pub issue:        Issue,
17233	#[serde(default, skip_serializing_if = "Option::is_none")]
17234	pub organization: Option<Organization>,
17235	pub repository:   Repository,
17236	pub sender:       User,
17237}
17238impl From<&IssuesUnlocked> for IssuesUnlocked {
17239	fn from(value: &IssuesUnlocked) -> Self {
17240		value.clone()
17241	}
17242}
17243#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17244pub enum IssuesUnlockedAction {
17245	#[serde(rename = "unlocked")]
17246	Unlocked,
17247}
17248impl From<&IssuesUnlockedAction> for IssuesUnlockedAction {
17249	fn from(value: &IssuesUnlockedAction) -> Self {
17250		value.clone()
17251	}
17252}
17253impl ToString for IssuesUnlockedAction {
17254	fn to_string(&self) -> String {
17255		match *self {
17256			Self::Unlocked => "unlocked".to_string(),
17257		}
17258	}
17259}
17260impl std::str::FromStr for IssuesUnlockedAction {
17261	type Err = &'static str;
17262
17263	fn from_str(value: &str) -> Result<Self, &'static str> {
17264		match value {
17265			"unlocked" => Ok(Self::Unlocked),
17266			_ => Err("invalid value"),
17267		}
17268	}
17269}
17270impl std::convert::TryFrom<&str> for IssuesUnlockedAction {
17271	type Error = &'static str;
17272
17273	fn try_from(value: &str) -> Result<Self, &'static str> {
17274		value.parse()
17275	}
17276}
17277impl std::convert::TryFrom<&String> for IssuesUnlockedAction {
17278	type Error = &'static str;
17279
17280	fn try_from(value: &String) -> Result<Self, &'static str> {
17281		value.parse()
17282	}
17283}
17284impl std::convert::TryFrom<String> for IssuesUnlockedAction {
17285	type Error = &'static str;
17286
17287	fn try_from(value: String) -> Result<Self, &'static str> {
17288		value.parse()
17289	}
17290}
17291#[derive(Clone, Debug, Deserialize, Serialize)]
17292#[serde(deny_unknown_fields)]
17293pub struct IssuesUnpinned {
17294	pub action:       IssuesUnpinnedAction,
17295	#[serde(default, skip_serializing_if = "Option::is_none")]
17296	pub installation: Option<InstallationLite>,
17297	pub issue:        Issue,
17298	#[serde(default, skip_serializing_if = "Option::is_none")]
17299	pub organization: Option<Organization>,
17300	pub repository:   Repository,
17301	pub sender:       User,
17302}
17303impl From<&IssuesUnpinned> for IssuesUnpinned {
17304	fn from(value: &IssuesUnpinned) -> Self {
17305		value.clone()
17306	}
17307}
17308#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17309pub enum IssuesUnpinnedAction {
17310	#[serde(rename = "unpinned")]
17311	Unpinned,
17312}
17313impl From<&IssuesUnpinnedAction> for IssuesUnpinnedAction {
17314	fn from(value: &IssuesUnpinnedAction) -> Self {
17315		value.clone()
17316	}
17317}
17318impl ToString for IssuesUnpinnedAction {
17319	fn to_string(&self) -> String {
17320		match *self {
17321			Self::Unpinned => "unpinned".to_string(),
17322		}
17323	}
17324}
17325impl std::str::FromStr for IssuesUnpinnedAction {
17326	type Err = &'static str;
17327
17328	fn from_str(value: &str) -> Result<Self, &'static str> {
17329		match value {
17330			"unpinned" => Ok(Self::Unpinned),
17331			_ => Err("invalid value"),
17332		}
17333	}
17334}
17335impl std::convert::TryFrom<&str> for IssuesUnpinnedAction {
17336	type Error = &'static str;
17337
17338	fn try_from(value: &str) -> Result<Self, &'static str> {
17339		value.parse()
17340	}
17341}
17342impl std::convert::TryFrom<&String> for IssuesUnpinnedAction {
17343	type Error = &'static str;
17344
17345	fn try_from(value: &String) -> Result<Self, &'static str> {
17346		value.parse()
17347	}
17348}
17349impl std::convert::TryFrom<String> for IssuesUnpinnedAction {
17350	type Error = &'static str;
17351
17352	fn try_from(value: String) -> Result<Self, &'static str> {
17353		value.parse()
17354	}
17355}
17356#[derive(Clone, Debug, Deserialize, Serialize)]
17357#[serde(deny_unknown_fields)]
17358pub struct Label {
17359	/// 6-character hex code, without the leading #, identifying the color
17360	pub color:       String,
17361	pub default:     bool,
17362	pub description: Option<String>,
17363	pub id:          i64,
17364	/// The name of the label.
17365	pub name:        String,
17366	pub node_id:     String,
17367	/// URL for the label
17368	pub url:         String,
17369}
17370impl From<&Label> for Label {
17371	fn from(value: &Label) -> Self {
17372		value.clone()
17373	}
17374}
17375#[derive(Clone, Debug, Deserialize, Serialize)]
17376#[serde(deny_unknown_fields)]
17377pub struct LabelCreated {
17378	pub action:       LabelCreatedAction,
17379	#[serde(default, skip_serializing_if = "Option::is_none")]
17380	pub installation: Option<InstallationLite>,
17381	/// The label that was added.
17382	pub label:        Label,
17383	#[serde(default, skip_serializing_if = "Option::is_none")]
17384	pub organization: Option<Organization>,
17385	pub repository:   Repository,
17386	pub sender:       User,
17387}
17388impl From<&LabelCreated> for LabelCreated {
17389	fn from(value: &LabelCreated) -> Self {
17390		value.clone()
17391	}
17392}
17393#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17394pub enum LabelCreatedAction {
17395	#[serde(rename = "created")]
17396	Created,
17397}
17398impl From<&LabelCreatedAction> for LabelCreatedAction {
17399	fn from(value: &LabelCreatedAction) -> Self {
17400		value.clone()
17401	}
17402}
17403impl ToString for LabelCreatedAction {
17404	fn to_string(&self) -> String {
17405		match *self {
17406			Self::Created => "created".to_string(),
17407		}
17408	}
17409}
17410impl std::str::FromStr for LabelCreatedAction {
17411	type Err = &'static str;
17412
17413	fn from_str(value: &str) -> Result<Self, &'static str> {
17414		match value {
17415			"created" => Ok(Self::Created),
17416			_ => Err("invalid value"),
17417		}
17418	}
17419}
17420impl std::convert::TryFrom<&str> for LabelCreatedAction {
17421	type Error = &'static str;
17422
17423	fn try_from(value: &str) -> Result<Self, &'static str> {
17424		value.parse()
17425	}
17426}
17427impl std::convert::TryFrom<&String> for LabelCreatedAction {
17428	type Error = &'static str;
17429
17430	fn try_from(value: &String) -> Result<Self, &'static str> {
17431		value.parse()
17432	}
17433}
17434impl std::convert::TryFrom<String> for LabelCreatedAction {
17435	type Error = &'static str;
17436
17437	fn try_from(value: String) -> Result<Self, &'static str> {
17438		value.parse()
17439	}
17440}
17441#[derive(Clone, Debug, Deserialize, Serialize)]
17442#[serde(deny_unknown_fields)]
17443pub struct LabelDeleted {
17444	pub action:       LabelDeletedAction,
17445	#[serde(default, skip_serializing_if = "Option::is_none")]
17446	pub installation: Option<InstallationLite>,
17447	/// The label that was removed.
17448	pub label:        Label,
17449	#[serde(default, skip_serializing_if = "Option::is_none")]
17450	pub organization: Option<Organization>,
17451	pub repository:   Repository,
17452	pub sender:       User,
17453}
17454impl From<&LabelDeleted> for LabelDeleted {
17455	fn from(value: &LabelDeleted) -> Self {
17456		value.clone()
17457	}
17458}
17459#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17460pub enum LabelDeletedAction {
17461	#[serde(rename = "deleted")]
17462	Deleted,
17463}
17464impl From<&LabelDeletedAction> for LabelDeletedAction {
17465	fn from(value: &LabelDeletedAction) -> Self {
17466		value.clone()
17467	}
17468}
17469impl ToString for LabelDeletedAction {
17470	fn to_string(&self) -> String {
17471		match *self {
17472			Self::Deleted => "deleted".to_string(),
17473		}
17474	}
17475}
17476impl std::str::FromStr for LabelDeletedAction {
17477	type Err = &'static str;
17478
17479	fn from_str(value: &str) -> Result<Self, &'static str> {
17480		match value {
17481			"deleted" => Ok(Self::Deleted),
17482			_ => Err("invalid value"),
17483		}
17484	}
17485}
17486impl std::convert::TryFrom<&str> for LabelDeletedAction {
17487	type Error = &'static str;
17488
17489	fn try_from(value: &str) -> Result<Self, &'static str> {
17490		value.parse()
17491	}
17492}
17493impl std::convert::TryFrom<&String> for LabelDeletedAction {
17494	type Error = &'static str;
17495
17496	fn try_from(value: &String) -> Result<Self, &'static str> {
17497		value.parse()
17498	}
17499}
17500impl std::convert::TryFrom<String> for LabelDeletedAction {
17501	type Error = &'static str;
17502
17503	fn try_from(value: String) -> Result<Self, &'static str> {
17504		value.parse()
17505	}
17506}
17507#[derive(Clone, Debug, Deserialize, Serialize)]
17508#[serde(deny_unknown_fields)]
17509pub struct LabelEdited {
17510	pub action:       LabelEditedAction,
17511	#[serde(default, skip_serializing_if = "Option::is_none")]
17512	pub changes:      Option<LabelEditedChanges>,
17513	#[serde(default, skip_serializing_if = "Option::is_none")]
17514	pub installation: Option<InstallationLite>,
17515	/// The label that was edited.
17516	pub label:        Label,
17517	#[serde(default, skip_serializing_if = "Option::is_none")]
17518	pub organization: Option<Organization>,
17519	pub repository:   Repository,
17520	pub sender:       User,
17521}
17522impl From<&LabelEdited> for LabelEdited {
17523	fn from(value: &LabelEdited) -> Self {
17524		value.clone()
17525	}
17526}
17527#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17528pub enum LabelEditedAction {
17529	#[serde(rename = "edited")]
17530	Edited,
17531}
17532impl From<&LabelEditedAction> for LabelEditedAction {
17533	fn from(value: &LabelEditedAction) -> Self {
17534		value.clone()
17535	}
17536}
17537impl ToString for LabelEditedAction {
17538	fn to_string(&self) -> String {
17539		match *self {
17540			Self::Edited => "edited".to_string(),
17541		}
17542	}
17543}
17544impl std::str::FromStr for LabelEditedAction {
17545	type Err = &'static str;
17546
17547	fn from_str(value: &str) -> Result<Self, &'static str> {
17548		match value {
17549			"edited" => Ok(Self::Edited),
17550			_ => Err("invalid value"),
17551		}
17552	}
17553}
17554impl std::convert::TryFrom<&str> for LabelEditedAction {
17555	type Error = &'static str;
17556
17557	fn try_from(value: &str) -> Result<Self, &'static str> {
17558		value.parse()
17559	}
17560}
17561impl std::convert::TryFrom<&String> for LabelEditedAction {
17562	type Error = &'static str;
17563
17564	fn try_from(value: &String) -> Result<Self, &'static str> {
17565		value.parse()
17566	}
17567}
17568impl std::convert::TryFrom<String> for LabelEditedAction {
17569	type Error = &'static str;
17570
17571	fn try_from(value: String) -> Result<Self, &'static str> {
17572		value.parse()
17573	}
17574}
17575/// The changes to the label if the action was `edited`.
17576#[derive(Clone, Debug, Deserialize, Serialize)]
17577#[serde(deny_unknown_fields)]
17578pub struct LabelEditedChanges {
17579	#[serde(default, skip_serializing_if = "Option::is_none")]
17580	pub color:       Option<LabelEditedChangesColor>,
17581	#[serde(default, skip_serializing_if = "Option::is_none")]
17582	pub description: Option<LabelEditedChangesDescription>,
17583	#[serde(default, skip_serializing_if = "Option::is_none")]
17584	pub name:        Option<LabelEditedChangesName>,
17585}
17586impl From<&LabelEditedChanges> for LabelEditedChanges {
17587	fn from(value: &LabelEditedChanges) -> Self {
17588		value.clone()
17589	}
17590}
17591#[derive(Clone, Debug, Deserialize, Serialize)]
17592#[serde(deny_unknown_fields)]
17593pub struct LabelEditedChangesColor {
17594	/// The previous version of the color if the action was `edited`.
17595	pub from: String,
17596}
17597impl From<&LabelEditedChangesColor> for LabelEditedChangesColor {
17598	fn from(value: &LabelEditedChangesColor) -> Self {
17599		value.clone()
17600	}
17601}
17602#[derive(Clone, Debug, Deserialize, Serialize)]
17603#[serde(deny_unknown_fields)]
17604pub struct LabelEditedChangesDescription {
17605	/// The previous version of the description if the action was `edited`.
17606	pub from: String,
17607}
17608impl From<&LabelEditedChangesDescription> for LabelEditedChangesDescription {
17609	fn from(value: &LabelEditedChangesDescription) -> Self {
17610		value.clone()
17611	}
17612}
17613#[derive(Clone, Debug, Deserialize, Serialize)]
17614#[serde(deny_unknown_fields)]
17615pub struct LabelEditedChangesName {
17616	/// The previous version of the name if the action was `edited`.
17617	pub from: String,
17618}
17619impl From<&LabelEditedChangesName> for LabelEditedChangesName {
17620	fn from(value: &LabelEditedChangesName) -> Self {
17621		value.clone()
17622	}
17623}
17624#[derive(Clone, Debug, Deserialize, Serialize)]
17625#[serde(untagged)]
17626pub enum LabelEvent {
17627	Created(LabelCreated),
17628	Deleted(LabelDeleted),
17629	Edited(LabelEdited),
17630}
17631impl From<&LabelEvent> for LabelEvent {
17632	fn from(value: &LabelEvent) -> Self {
17633		value.clone()
17634	}
17635}
17636impl From<LabelCreated> for LabelEvent {
17637	fn from(value: LabelCreated) -> Self {
17638		Self::Created(value)
17639	}
17640}
17641impl From<LabelDeleted> for LabelEvent {
17642	fn from(value: LabelDeleted) -> Self {
17643		Self::Deleted(value)
17644	}
17645}
17646impl From<LabelEdited> for LabelEvent {
17647	fn from(value: LabelEdited) -> Self {
17648		Self::Edited(value)
17649	}
17650}
17651#[derive(Clone, Debug, Deserialize, Serialize)]
17652#[serde(deny_unknown_fields)]
17653pub struct License {
17654	pub key:     String,
17655	pub name:    String,
17656	pub node_id: String,
17657	pub spdx_id: String,
17658	pub url:     Option<String>,
17659}
17660impl From<&License> for License {
17661	fn from(value: &License) -> Self {
17662		value.clone()
17663	}
17664}
17665#[derive(Clone, Debug, Deserialize, Serialize)]
17666#[serde(deny_unknown_fields)]
17667pub struct Link {
17668	pub href: String,
17669}
17670impl From<&Link> for Link {
17671	fn from(value: &Link) -> Self {
17672		value.clone()
17673	}
17674}
17675#[derive(Clone, Debug, Deserialize, Serialize)]
17676#[serde(deny_unknown_fields)]
17677pub struct MarketplacePurchase {
17678	pub account:            MarketplacePurchaseAccount,
17679	pub billing_cycle:      String,
17680	pub free_trial_ends_on: Option<chrono::DateTime<chrono::offset::Utc>>,
17681	#[serde(default, skip_serializing_if = "Option::is_none")]
17682	pub next_billing_date:  Option<String>,
17683	pub on_free_trial:      bool,
17684	pub plan:               MarketplacePurchasePlan,
17685	pub unit_count:         i64,
17686}
17687impl From<&MarketplacePurchase> for MarketplacePurchase {
17688	fn from(value: &MarketplacePurchase) -> Self {
17689		value.clone()
17690	}
17691}
17692#[derive(Clone, Debug, Deserialize, Serialize)]
17693#[serde(deny_unknown_fields)]
17694pub struct MarketplacePurchaseAccount {
17695	pub id: i64,
17696	pub login: String,
17697	pub node_id: String,
17698	pub organization_billing_email: String,
17699	#[serde(rename = "type")]
17700	pub type_: String,
17701}
17702impl From<&MarketplacePurchaseAccount> for MarketplacePurchaseAccount {
17703	fn from(value: &MarketplacePurchaseAccount) -> Self {
17704		value.clone()
17705	}
17706}
17707#[derive(Clone, Debug, Deserialize, Serialize)]
17708#[serde(deny_unknown_fields)]
17709pub struct MarketplacePurchaseCancelled {
17710	pub action: MarketplacePurchaseCancelledAction,
17711	pub effective_date: chrono::DateTime<chrono::offset::Utc>,
17712	pub marketplace_purchase: MarketplacePurchase,
17713	#[serde(default, skip_serializing_if = "Option::is_none")]
17714	pub previous_marketplace_purchase: Option<MarketplacePurchase>,
17715	pub sender: MarketplacePurchaseCancelledSender,
17716}
17717impl From<&MarketplacePurchaseCancelled> for MarketplacePurchaseCancelled {
17718	fn from(value: &MarketplacePurchaseCancelled) -> Self {
17719		value.clone()
17720	}
17721}
17722#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17723pub enum MarketplacePurchaseCancelledAction {
17724	#[serde(rename = "cancelled")]
17725	Cancelled,
17726}
17727impl From<&MarketplacePurchaseCancelledAction> for MarketplacePurchaseCancelledAction {
17728	fn from(value: &MarketplacePurchaseCancelledAction) -> Self {
17729		value.clone()
17730	}
17731}
17732impl ToString for MarketplacePurchaseCancelledAction {
17733	fn to_string(&self) -> String {
17734		match *self {
17735			Self::Cancelled => "cancelled".to_string(),
17736		}
17737	}
17738}
17739impl std::str::FromStr for MarketplacePurchaseCancelledAction {
17740	type Err = &'static str;
17741
17742	fn from_str(value: &str) -> Result<Self, &'static str> {
17743		match value {
17744			"cancelled" => Ok(Self::Cancelled),
17745			_ => Err("invalid value"),
17746		}
17747	}
17748}
17749impl std::convert::TryFrom<&str> for MarketplacePurchaseCancelledAction {
17750	type Error = &'static str;
17751
17752	fn try_from(value: &str) -> Result<Self, &'static str> {
17753		value.parse()
17754	}
17755}
17756impl std::convert::TryFrom<&String> for MarketplacePurchaseCancelledAction {
17757	type Error = &'static str;
17758
17759	fn try_from(value: &String) -> Result<Self, &'static str> {
17760		value.parse()
17761	}
17762}
17763impl std::convert::TryFrom<String> for MarketplacePurchaseCancelledAction {
17764	type Error = &'static str;
17765
17766	fn try_from(value: String) -> Result<Self, &'static str> {
17767		value.parse()
17768	}
17769}
17770#[derive(Clone, Debug, Deserialize, Serialize)]
17771#[serde(deny_unknown_fields)]
17772pub struct MarketplacePurchaseCancelledSender {
17773	pub avatar_url:          String,
17774	pub email:               String,
17775	pub events_url:          String,
17776	pub followers_url:       String,
17777	pub following_url:       String,
17778	pub gists_url:           String,
17779	pub gravatar_id:         String,
17780	pub html_url:            String,
17781	pub id:                  i64,
17782	pub login:               String,
17783	pub organizations_url:   String,
17784	pub received_events_url: String,
17785	pub repos_url:           String,
17786	pub site_admin:          bool,
17787	pub starred_url:         String,
17788	pub subscriptions_url:   String,
17789	#[serde(rename = "type")]
17790	pub type_:               String,
17791	pub url:                 String,
17792}
17793impl From<&MarketplacePurchaseCancelledSender> for MarketplacePurchaseCancelledSender {
17794	fn from(value: &MarketplacePurchaseCancelledSender) -> Self {
17795		value.clone()
17796	}
17797}
17798#[derive(Clone, Debug, Deserialize, Serialize)]
17799#[serde(deny_unknown_fields)]
17800pub struct MarketplacePurchaseChanged {
17801	pub action: MarketplacePurchaseChangedAction,
17802	pub effective_date: chrono::DateTime<chrono::offset::Utc>,
17803	pub marketplace_purchase: MarketplacePurchase,
17804	#[serde(default, skip_serializing_if = "Option::is_none")]
17805	pub previous_marketplace_purchase: Option<MarketplacePurchase>,
17806	pub sender: MarketplacePurchaseChangedSender,
17807}
17808impl From<&MarketplacePurchaseChanged> for MarketplacePurchaseChanged {
17809	fn from(value: &MarketplacePurchaseChanged) -> Self {
17810		value.clone()
17811	}
17812}
17813#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17814pub enum MarketplacePurchaseChangedAction {
17815	#[serde(rename = "changed")]
17816	Changed,
17817}
17818impl From<&MarketplacePurchaseChangedAction> for MarketplacePurchaseChangedAction {
17819	fn from(value: &MarketplacePurchaseChangedAction) -> Self {
17820		value.clone()
17821	}
17822}
17823impl ToString for MarketplacePurchaseChangedAction {
17824	fn to_string(&self) -> String {
17825		match *self {
17826			Self::Changed => "changed".to_string(),
17827		}
17828	}
17829}
17830impl std::str::FromStr for MarketplacePurchaseChangedAction {
17831	type Err = &'static str;
17832
17833	fn from_str(value: &str) -> Result<Self, &'static str> {
17834		match value {
17835			"changed" => Ok(Self::Changed),
17836			_ => Err("invalid value"),
17837		}
17838	}
17839}
17840impl std::convert::TryFrom<&str> for MarketplacePurchaseChangedAction {
17841	type Error = &'static str;
17842
17843	fn try_from(value: &str) -> Result<Self, &'static str> {
17844		value.parse()
17845	}
17846}
17847impl std::convert::TryFrom<&String> for MarketplacePurchaseChangedAction {
17848	type Error = &'static str;
17849
17850	fn try_from(value: &String) -> Result<Self, &'static str> {
17851		value.parse()
17852	}
17853}
17854impl std::convert::TryFrom<String> for MarketplacePurchaseChangedAction {
17855	type Error = &'static str;
17856
17857	fn try_from(value: String) -> Result<Self, &'static str> {
17858		value.parse()
17859	}
17860}
17861#[derive(Clone, Debug, Deserialize, Serialize)]
17862#[serde(deny_unknown_fields)]
17863pub struct MarketplacePurchaseChangedSender {
17864	pub avatar_url:          String,
17865	pub email:               String,
17866	pub events_url:          String,
17867	pub followers_url:       String,
17868	pub following_url:       String,
17869	pub gists_url:           String,
17870	pub gravatar_id:         String,
17871	pub html_url:            String,
17872	pub id:                  i64,
17873	pub login:               String,
17874	pub organizations_url:   String,
17875	pub received_events_url: String,
17876	pub repos_url:           String,
17877	pub site_admin:          bool,
17878	pub starred_url:         String,
17879	pub subscriptions_url:   String,
17880	#[serde(rename = "type")]
17881	pub type_:               String,
17882	pub url:                 String,
17883}
17884impl From<&MarketplacePurchaseChangedSender> for MarketplacePurchaseChangedSender {
17885	fn from(value: &MarketplacePurchaseChangedSender) -> Self {
17886		value.clone()
17887	}
17888}
17889#[derive(Clone, Debug, Deserialize, Serialize)]
17890#[serde(untagged)]
17891pub enum MarketplacePurchaseEvent {
17892	Cancelled(MarketplacePurchaseCancelled),
17893	Changed(MarketplacePurchaseChanged),
17894	PendingChange(MarketplacePurchasePendingChange),
17895	PendingChangeCancelled(MarketplacePurchasePendingChangeCancelled),
17896	Purchased(MarketplacePurchasePurchased),
17897}
17898impl From<&MarketplacePurchaseEvent> for MarketplacePurchaseEvent {
17899	fn from(value: &MarketplacePurchaseEvent) -> Self {
17900		value.clone()
17901	}
17902}
17903impl From<MarketplacePurchaseCancelled> for MarketplacePurchaseEvent {
17904	fn from(value: MarketplacePurchaseCancelled) -> Self {
17905		Self::Cancelled(value)
17906	}
17907}
17908impl From<MarketplacePurchaseChanged> for MarketplacePurchaseEvent {
17909	fn from(value: MarketplacePurchaseChanged) -> Self {
17910		Self::Changed(value)
17911	}
17912}
17913impl From<MarketplacePurchasePendingChange> for MarketplacePurchaseEvent {
17914	fn from(value: MarketplacePurchasePendingChange) -> Self {
17915		Self::PendingChange(value)
17916	}
17917}
17918impl From<MarketplacePurchasePendingChangeCancelled> for MarketplacePurchaseEvent {
17919	fn from(value: MarketplacePurchasePendingChangeCancelled) -> Self {
17920		Self::PendingChangeCancelled(value)
17921	}
17922}
17923impl From<MarketplacePurchasePurchased> for MarketplacePurchaseEvent {
17924	fn from(value: MarketplacePurchasePurchased) -> Self {
17925		Self::Purchased(value)
17926	}
17927}
17928#[derive(Clone, Debug, Deserialize, Serialize)]
17929#[serde(deny_unknown_fields)]
17930pub struct MarketplacePurchasePendingChange {
17931	pub action: MarketplacePurchasePendingChangeAction,
17932	pub effective_date: chrono::DateTime<chrono::offset::Utc>,
17933	pub marketplace_purchase: MarketplacePurchase,
17934	#[serde(default, skip_serializing_if = "Option::is_none")]
17935	pub previous_marketplace_purchase: Option<MarketplacePurchase>,
17936	pub sender: MarketplacePurchasePendingChangeSender,
17937}
17938impl From<&MarketplacePurchasePendingChange> for MarketplacePurchasePendingChange {
17939	fn from(value: &MarketplacePurchasePendingChange) -> Self {
17940		value.clone()
17941	}
17942}
17943#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
17944pub enum MarketplacePurchasePendingChangeAction {
17945	#[serde(rename = "pending_change")]
17946	PendingChange,
17947}
17948impl From<&MarketplacePurchasePendingChangeAction> for MarketplacePurchasePendingChangeAction {
17949	fn from(value: &MarketplacePurchasePendingChangeAction) -> Self {
17950		value.clone()
17951	}
17952}
17953impl ToString for MarketplacePurchasePendingChangeAction {
17954	fn to_string(&self) -> String {
17955		match *self {
17956			Self::PendingChange => "pending_change".to_string(),
17957		}
17958	}
17959}
17960impl std::str::FromStr for MarketplacePurchasePendingChangeAction {
17961	type Err = &'static str;
17962
17963	fn from_str(value: &str) -> Result<Self, &'static str> {
17964		match value {
17965			"pending_change" => Ok(Self::PendingChange),
17966			_ => Err("invalid value"),
17967		}
17968	}
17969}
17970impl std::convert::TryFrom<&str> for MarketplacePurchasePendingChangeAction {
17971	type Error = &'static str;
17972
17973	fn try_from(value: &str) -> Result<Self, &'static str> {
17974		value.parse()
17975	}
17976}
17977impl std::convert::TryFrom<&String> for MarketplacePurchasePendingChangeAction {
17978	type Error = &'static str;
17979
17980	fn try_from(value: &String) -> Result<Self, &'static str> {
17981		value.parse()
17982	}
17983}
17984impl std::convert::TryFrom<String> for MarketplacePurchasePendingChangeAction {
17985	type Error = &'static str;
17986
17987	fn try_from(value: String) -> Result<Self, &'static str> {
17988		value.parse()
17989	}
17990}
17991#[derive(Clone, Debug, Deserialize, Serialize)]
17992#[serde(deny_unknown_fields)]
17993pub struct MarketplacePurchasePendingChangeCancelled {
17994	pub action: MarketplacePurchasePendingChangeCancelledAction,
17995	pub effective_date: chrono::DateTime<chrono::offset::Utc>,
17996	pub marketplace_purchase: MarketplacePurchase,
17997	#[serde(default, skip_serializing_if = "Option::is_none")]
17998	pub previous_marketplace_purchase: Option<MarketplacePurchase>,
17999	pub sender: MarketplacePurchasePendingChangeCancelledSender,
18000}
18001impl From<&MarketplacePurchasePendingChangeCancelled>
18002	for MarketplacePurchasePendingChangeCancelled
18003{
18004	fn from(value: &MarketplacePurchasePendingChangeCancelled) -> Self {
18005		value.clone()
18006	}
18007}
18008#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18009pub enum MarketplacePurchasePendingChangeCancelledAction {
18010	#[serde(rename = "pending_change_cancelled")]
18011	PendingChangeCancelled,
18012}
18013impl From<&MarketplacePurchasePendingChangeCancelledAction>
18014	for MarketplacePurchasePendingChangeCancelledAction
18015{
18016	fn from(value: &MarketplacePurchasePendingChangeCancelledAction) -> Self {
18017		value.clone()
18018	}
18019}
18020impl ToString for MarketplacePurchasePendingChangeCancelledAction {
18021	fn to_string(&self) -> String {
18022		match *self {
18023			Self::PendingChangeCancelled => "pending_change_cancelled".to_string(),
18024		}
18025	}
18026}
18027impl std::str::FromStr for MarketplacePurchasePendingChangeCancelledAction {
18028	type Err = &'static str;
18029
18030	fn from_str(value: &str) -> Result<Self, &'static str> {
18031		match value {
18032			"pending_change_cancelled" => Ok(Self::PendingChangeCancelled),
18033			_ => Err("invalid value"),
18034		}
18035	}
18036}
18037impl std::convert::TryFrom<&str> for MarketplacePurchasePendingChangeCancelledAction {
18038	type Error = &'static str;
18039
18040	fn try_from(value: &str) -> Result<Self, &'static str> {
18041		value.parse()
18042	}
18043}
18044impl std::convert::TryFrom<&String> for MarketplacePurchasePendingChangeCancelledAction {
18045	type Error = &'static str;
18046
18047	fn try_from(value: &String) -> Result<Self, &'static str> {
18048		value.parse()
18049	}
18050}
18051impl std::convert::TryFrom<String> for MarketplacePurchasePendingChangeCancelledAction {
18052	type Error = &'static str;
18053
18054	fn try_from(value: String) -> Result<Self, &'static str> {
18055		value.parse()
18056	}
18057}
18058#[derive(Clone, Debug, Deserialize, Serialize)]
18059#[serde(deny_unknown_fields)]
18060pub struct MarketplacePurchasePendingChangeCancelledSender {
18061	pub avatar_url:          String,
18062	pub email:               String,
18063	pub events_url:          String,
18064	pub followers_url:       String,
18065	pub following_url:       String,
18066	pub gists_url:           String,
18067	pub gravatar_id:         String,
18068	pub html_url:            String,
18069	pub id:                  i64,
18070	pub login:               String,
18071	pub organizations_url:   String,
18072	pub received_events_url: String,
18073	pub repos_url:           String,
18074	pub site_admin:          bool,
18075	pub starred_url:         String,
18076	pub subscriptions_url:   String,
18077	#[serde(rename = "type")]
18078	pub type_:               String,
18079	pub url:                 String,
18080}
18081impl From<&MarketplacePurchasePendingChangeCancelledSender>
18082	for MarketplacePurchasePendingChangeCancelledSender
18083{
18084	fn from(value: &MarketplacePurchasePendingChangeCancelledSender) -> Self {
18085		value.clone()
18086	}
18087}
18088#[derive(Clone, Debug, Deserialize, Serialize)]
18089#[serde(deny_unknown_fields)]
18090pub struct MarketplacePurchasePendingChangeSender {
18091	pub avatar_url:          String,
18092	pub email:               String,
18093	pub events_url:          String,
18094	pub followers_url:       String,
18095	pub following_url:       String,
18096	pub gists_url:           String,
18097	pub gravatar_id:         String,
18098	pub html_url:            String,
18099	pub id:                  i64,
18100	pub login:               String,
18101	pub organizations_url:   String,
18102	pub received_events_url: String,
18103	pub repos_url:           String,
18104	pub site_admin:          bool,
18105	pub starred_url:         String,
18106	pub subscriptions_url:   String,
18107	#[serde(rename = "type")]
18108	pub type_:               String,
18109	pub url:                 String,
18110}
18111impl From<&MarketplacePurchasePendingChangeSender> for MarketplacePurchasePendingChangeSender {
18112	fn from(value: &MarketplacePurchasePendingChangeSender) -> Self {
18113		value.clone()
18114	}
18115}
18116#[derive(Clone, Debug, Deserialize, Serialize)]
18117#[serde(deny_unknown_fields)]
18118pub struct MarketplacePurchasePlan {
18119	pub bullets:                Vec<String>,
18120	pub description:            String,
18121	pub has_free_trial:         bool,
18122	pub id:                     i64,
18123	pub monthly_price_in_cents: i64,
18124	pub name:                   String,
18125	pub price_model:            String,
18126	pub unit_name:              Option<String>,
18127	pub yearly_price_in_cents:  i64,
18128}
18129impl From<&MarketplacePurchasePlan> for MarketplacePurchasePlan {
18130	fn from(value: &MarketplacePurchasePlan) -> Self {
18131		value.clone()
18132	}
18133}
18134#[derive(Clone, Debug, Deserialize, Serialize)]
18135#[serde(deny_unknown_fields)]
18136pub struct MarketplacePurchasePurchased {
18137	pub action: MarketplacePurchasePurchasedAction,
18138	pub effective_date: chrono::DateTime<chrono::offset::Utc>,
18139	pub marketplace_purchase: MarketplacePurchase,
18140	#[serde(default, skip_serializing_if = "Option::is_none")]
18141	pub previous_marketplace_purchase: Option<MarketplacePurchase>,
18142	pub sender: MarketplacePurchasePurchasedSender,
18143}
18144impl From<&MarketplacePurchasePurchased> for MarketplacePurchasePurchased {
18145	fn from(value: &MarketplacePurchasePurchased) -> Self {
18146		value.clone()
18147	}
18148}
18149#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18150pub enum MarketplacePurchasePurchasedAction {
18151	#[serde(rename = "purchased")]
18152	Purchased,
18153}
18154impl From<&MarketplacePurchasePurchasedAction> for MarketplacePurchasePurchasedAction {
18155	fn from(value: &MarketplacePurchasePurchasedAction) -> Self {
18156		value.clone()
18157	}
18158}
18159impl ToString for MarketplacePurchasePurchasedAction {
18160	fn to_string(&self) -> String {
18161		match *self {
18162			Self::Purchased => "purchased".to_string(),
18163		}
18164	}
18165}
18166impl std::str::FromStr for MarketplacePurchasePurchasedAction {
18167	type Err = &'static str;
18168
18169	fn from_str(value: &str) -> Result<Self, &'static str> {
18170		match value {
18171			"purchased" => Ok(Self::Purchased),
18172			_ => Err("invalid value"),
18173		}
18174	}
18175}
18176impl std::convert::TryFrom<&str> for MarketplacePurchasePurchasedAction {
18177	type Error = &'static str;
18178
18179	fn try_from(value: &str) -> Result<Self, &'static str> {
18180		value.parse()
18181	}
18182}
18183impl std::convert::TryFrom<&String> for MarketplacePurchasePurchasedAction {
18184	type Error = &'static str;
18185
18186	fn try_from(value: &String) -> Result<Self, &'static str> {
18187		value.parse()
18188	}
18189}
18190impl std::convert::TryFrom<String> for MarketplacePurchasePurchasedAction {
18191	type Error = &'static str;
18192
18193	fn try_from(value: String) -> Result<Self, &'static str> {
18194		value.parse()
18195	}
18196}
18197#[derive(Clone, Debug, Deserialize, Serialize)]
18198#[serde(deny_unknown_fields)]
18199pub struct MarketplacePurchasePurchasedSender {
18200	pub avatar_url:          String,
18201	pub email:               String,
18202	pub events_url:          String,
18203	pub followers_url:       String,
18204	pub following_url:       String,
18205	pub gists_url:           String,
18206	pub gravatar_id:         String,
18207	pub html_url:            String,
18208	pub id:                  i64,
18209	pub login:               String,
18210	pub organizations_url:   String,
18211	pub received_events_url: String,
18212	pub repos_url:           String,
18213	pub site_admin:          bool,
18214	pub starred_url:         String,
18215	pub subscriptions_url:   String,
18216	#[serde(rename = "type")]
18217	pub type_:               String,
18218	pub url:                 String,
18219}
18220impl From<&MarketplacePurchasePurchasedSender> for MarketplacePurchasePurchasedSender {
18221	fn from(value: &MarketplacePurchasePurchasedSender) -> Self {
18222		value.clone()
18223	}
18224}
18225/// Activity related to repository collaborators. The type of activity is
18226/// specified in the action property.
18227#[derive(Clone, Debug, Deserialize, Serialize)]
18228#[serde(deny_unknown_fields)]
18229pub struct MemberAdded {
18230	pub action:       MemberAddedAction,
18231	#[serde(default, skip_serializing_if = "Option::is_none")]
18232	pub changes:      Option<MemberAddedChanges>,
18233	#[serde(default, skip_serializing_if = "Option::is_none")]
18234	pub installation: Option<InstallationLite>,
18235	/// The user that was added.
18236	pub member:       User,
18237	#[serde(default, skip_serializing_if = "Option::is_none")]
18238	pub organization: Option<Organization>,
18239	pub repository:   Repository,
18240	pub sender:       User,
18241}
18242impl From<&MemberAdded> for MemberAdded {
18243	fn from(value: &MemberAdded) -> Self {
18244		value.clone()
18245	}
18246}
18247#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18248pub enum MemberAddedAction {
18249	#[serde(rename = "added")]
18250	Added,
18251}
18252impl From<&MemberAddedAction> for MemberAddedAction {
18253	fn from(value: &MemberAddedAction) -> Self {
18254		value.clone()
18255	}
18256}
18257impl ToString for MemberAddedAction {
18258	fn to_string(&self) -> String {
18259		match *self {
18260			Self::Added => "added".to_string(),
18261		}
18262	}
18263}
18264impl std::str::FromStr for MemberAddedAction {
18265	type Err = &'static str;
18266
18267	fn from_str(value: &str) -> Result<Self, &'static str> {
18268		match value {
18269			"added" => Ok(Self::Added),
18270			_ => Err("invalid value"),
18271		}
18272	}
18273}
18274impl std::convert::TryFrom<&str> for MemberAddedAction {
18275	type Error = &'static str;
18276
18277	fn try_from(value: &str) -> Result<Self, &'static str> {
18278		value.parse()
18279	}
18280}
18281impl std::convert::TryFrom<&String> for MemberAddedAction {
18282	type Error = &'static str;
18283
18284	fn try_from(value: &String) -> Result<Self, &'static str> {
18285		value.parse()
18286	}
18287}
18288impl std::convert::TryFrom<String> for MemberAddedAction {
18289	type Error = &'static str;
18290
18291	fn try_from(value: String) -> Result<Self, &'static str> {
18292		value.parse()
18293	}
18294}
18295#[derive(Clone, Debug, Deserialize, Serialize)]
18296#[serde(deny_unknown_fields)]
18297pub struct MemberAddedChanges {
18298	#[serde(default, skip_serializing_if = "Option::is_none")]
18299	pub permission: Option<MemberAddedChangesPermission>,
18300}
18301impl From<&MemberAddedChanges> for MemberAddedChanges {
18302	fn from(value: &MemberAddedChanges) -> Self {
18303		value.clone()
18304	}
18305}
18306#[derive(Clone, Debug, Deserialize, Serialize)]
18307#[serde(deny_unknown_fields)]
18308pub struct MemberAddedChangesPermission {
18309	pub to: MemberAddedChangesPermissionTo,
18310}
18311impl From<&MemberAddedChangesPermission> for MemberAddedChangesPermission {
18312	fn from(value: &MemberAddedChangesPermission) -> Self {
18313		value.clone()
18314	}
18315}
18316#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18317pub enum MemberAddedChangesPermissionTo {
18318	#[serde(rename = "write")]
18319	Write,
18320	#[serde(rename = "admin")]
18321	Admin,
18322}
18323impl From<&MemberAddedChangesPermissionTo> for MemberAddedChangesPermissionTo {
18324	fn from(value: &MemberAddedChangesPermissionTo) -> Self {
18325		value.clone()
18326	}
18327}
18328impl ToString for MemberAddedChangesPermissionTo {
18329	fn to_string(&self) -> String {
18330		match *self {
18331			Self::Write => "write".to_string(),
18332			Self::Admin => "admin".to_string(),
18333		}
18334	}
18335}
18336impl std::str::FromStr for MemberAddedChangesPermissionTo {
18337	type Err = &'static str;
18338
18339	fn from_str(value: &str) -> Result<Self, &'static str> {
18340		match value {
18341			"write" => Ok(Self::Write),
18342			"admin" => Ok(Self::Admin),
18343			_ => Err("invalid value"),
18344		}
18345	}
18346}
18347impl std::convert::TryFrom<&str> for MemberAddedChangesPermissionTo {
18348	type Error = &'static str;
18349
18350	fn try_from(value: &str) -> Result<Self, &'static str> {
18351		value.parse()
18352	}
18353}
18354impl std::convert::TryFrom<&String> for MemberAddedChangesPermissionTo {
18355	type Error = &'static str;
18356
18357	fn try_from(value: &String) -> Result<Self, &'static str> {
18358		value.parse()
18359	}
18360}
18361impl std::convert::TryFrom<String> for MemberAddedChangesPermissionTo {
18362	type Error = &'static str;
18363
18364	fn try_from(value: String) -> Result<Self, &'static str> {
18365		value.parse()
18366	}
18367}
18368#[derive(Clone, Debug, Deserialize, Serialize)]
18369#[serde(deny_unknown_fields)]
18370pub struct MemberEdited {
18371	pub action:       MemberEditedAction,
18372	pub changes:      MemberEditedChanges,
18373	#[serde(default, skip_serializing_if = "Option::is_none")]
18374	pub installation: Option<InstallationLite>,
18375	/// The user who's permissions are changed.
18376	pub member:       User,
18377	#[serde(default, skip_serializing_if = "Option::is_none")]
18378	pub organization: Option<Organization>,
18379	pub repository:   Repository,
18380	pub sender:       User,
18381}
18382impl From<&MemberEdited> for MemberEdited {
18383	fn from(value: &MemberEdited) -> Self {
18384		value.clone()
18385	}
18386}
18387#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18388pub enum MemberEditedAction {
18389	#[serde(rename = "edited")]
18390	Edited,
18391}
18392impl From<&MemberEditedAction> for MemberEditedAction {
18393	fn from(value: &MemberEditedAction) -> Self {
18394		value.clone()
18395	}
18396}
18397impl ToString for MemberEditedAction {
18398	fn to_string(&self) -> String {
18399		match *self {
18400			Self::Edited => "edited".to_string(),
18401		}
18402	}
18403}
18404impl std::str::FromStr for MemberEditedAction {
18405	type Err = &'static str;
18406
18407	fn from_str(value: &str) -> Result<Self, &'static str> {
18408		match value {
18409			"edited" => Ok(Self::Edited),
18410			_ => Err("invalid value"),
18411		}
18412	}
18413}
18414impl std::convert::TryFrom<&str> for MemberEditedAction {
18415	type Error = &'static str;
18416
18417	fn try_from(value: &str) -> Result<Self, &'static str> {
18418		value.parse()
18419	}
18420}
18421impl std::convert::TryFrom<&String> for MemberEditedAction {
18422	type Error = &'static str;
18423
18424	fn try_from(value: &String) -> Result<Self, &'static str> {
18425		value.parse()
18426	}
18427}
18428impl std::convert::TryFrom<String> for MemberEditedAction {
18429	type Error = &'static str;
18430
18431	fn try_from(value: String) -> Result<Self, &'static str> {
18432		value.parse()
18433	}
18434}
18435/// The changes to the collaborator permissions
18436#[derive(Clone, Debug, Deserialize, Serialize)]
18437#[serde(deny_unknown_fields)]
18438pub struct MemberEditedChanges {
18439	pub old_permission: MemberEditedChangesOldPermission,
18440}
18441impl From<&MemberEditedChanges> for MemberEditedChanges {
18442	fn from(value: &MemberEditedChanges) -> Self {
18443		value.clone()
18444	}
18445}
18446#[derive(Clone, Debug, Deserialize, Serialize)]
18447#[serde(deny_unknown_fields)]
18448pub struct MemberEditedChangesOldPermission {
18449	/// The previous permissions of the collaborator if the action was edited.
18450	pub from: String,
18451}
18452impl From<&MemberEditedChangesOldPermission> for MemberEditedChangesOldPermission {
18453	fn from(value: &MemberEditedChangesOldPermission) -> Self {
18454		value.clone()
18455	}
18456}
18457#[derive(Clone, Debug, Deserialize, Serialize)]
18458#[serde(untagged)]
18459pub enum MemberEvent {
18460	Added(MemberAdded),
18461	Edited(MemberEdited),
18462	Removed(MemberRemoved),
18463}
18464impl From<&MemberEvent> for MemberEvent {
18465	fn from(value: &MemberEvent) -> Self {
18466		value.clone()
18467	}
18468}
18469impl From<MemberAdded> for MemberEvent {
18470	fn from(value: MemberAdded) -> Self {
18471		Self::Added(value)
18472	}
18473}
18474impl From<MemberEdited> for MemberEvent {
18475	fn from(value: MemberEdited) -> Self {
18476		Self::Edited(value)
18477	}
18478}
18479impl From<MemberRemoved> for MemberEvent {
18480	fn from(value: MemberRemoved) -> Self {
18481		Self::Removed(value)
18482	}
18483}
18484#[derive(Clone, Debug, Deserialize, Serialize)]
18485#[serde(deny_unknown_fields)]
18486pub struct MemberRemoved {
18487	pub action:       MemberRemovedAction,
18488	#[serde(default, skip_serializing_if = "Option::is_none")]
18489	pub installation: Option<InstallationLite>,
18490	/// The user that was removed.
18491	pub member:       User,
18492	#[serde(default, skip_serializing_if = "Option::is_none")]
18493	pub organization: Option<Organization>,
18494	pub repository:   Repository,
18495	pub sender:       User,
18496}
18497impl From<&MemberRemoved> for MemberRemoved {
18498	fn from(value: &MemberRemoved) -> Self {
18499		value.clone()
18500	}
18501}
18502#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18503pub enum MemberRemovedAction {
18504	#[serde(rename = "removed")]
18505	Removed,
18506}
18507impl From<&MemberRemovedAction> for MemberRemovedAction {
18508	fn from(value: &MemberRemovedAction) -> Self {
18509		value.clone()
18510	}
18511}
18512impl ToString for MemberRemovedAction {
18513	fn to_string(&self) -> String {
18514		match *self {
18515			Self::Removed => "removed".to_string(),
18516		}
18517	}
18518}
18519impl std::str::FromStr for MemberRemovedAction {
18520	type Err = &'static str;
18521
18522	fn from_str(value: &str) -> Result<Self, &'static str> {
18523		match value {
18524			"removed" => Ok(Self::Removed),
18525			_ => Err("invalid value"),
18526		}
18527	}
18528}
18529impl std::convert::TryFrom<&str> for MemberRemovedAction {
18530	type Error = &'static str;
18531
18532	fn try_from(value: &str) -> Result<Self, &'static str> {
18533		value.parse()
18534	}
18535}
18536impl std::convert::TryFrom<&String> for MemberRemovedAction {
18537	type Error = &'static str;
18538
18539	fn try_from(value: &String) -> Result<Self, &'static str> {
18540		value.parse()
18541	}
18542}
18543impl std::convert::TryFrom<String> for MemberRemovedAction {
18544	type Error = &'static str;
18545
18546	fn try_from(value: String) -> Result<Self, &'static str> {
18547		value.parse()
18548	}
18549}
18550/// The membership between the user and the organization. Not present when the
18551/// action is `member_invited`.
18552#[derive(Clone, Debug, Deserialize, Serialize)]
18553#[serde(deny_unknown_fields)]
18554pub struct Membership {
18555	pub organization_url: String,
18556	/// The role of the user in the team.
18557	pub role:             String,
18558	/// The state of the user's membership in the team.
18559	pub state:            String,
18560	pub url:              String,
18561	pub user:             User,
18562}
18563impl From<&Membership> for Membership {
18564	fn from(value: &Membership) -> Self {
18565		value.clone()
18566	}
18567}
18568#[derive(Clone, Debug, Deserialize, Serialize)]
18569#[serde(deny_unknown_fields)]
18570pub struct MembershipAdded {
18571	pub action:       MembershipAddedAction,
18572	#[serde(default, skip_serializing_if = "Option::is_none")]
18573	pub installation: Option<InstallationLite>,
18574	/// The [user](https://docs.github.com/en/rest/reference/users) that was added or removed.
18575	pub member:       User,
18576	pub organization: Organization,
18577	/// The scope of the membership. Currently, can only be `team`.
18578	pub scope:        MembershipAddedScope,
18579	pub sender:       User,
18580	/// The [team](https://docs.github.com/en/rest/reference/teams) for the membership.
18581	pub team:         Team,
18582}
18583impl From<&MembershipAdded> for MembershipAdded {
18584	fn from(value: &MembershipAdded) -> Self {
18585		value.clone()
18586	}
18587}
18588#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18589pub enum MembershipAddedAction {
18590	#[serde(rename = "added")]
18591	Added,
18592}
18593impl From<&MembershipAddedAction> for MembershipAddedAction {
18594	fn from(value: &MembershipAddedAction) -> Self {
18595		value.clone()
18596	}
18597}
18598impl ToString for MembershipAddedAction {
18599	fn to_string(&self) -> String {
18600		match *self {
18601			Self::Added => "added".to_string(),
18602		}
18603	}
18604}
18605impl std::str::FromStr for MembershipAddedAction {
18606	type Err = &'static str;
18607
18608	fn from_str(value: &str) -> Result<Self, &'static str> {
18609		match value {
18610			"added" => Ok(Self::Added),
18611			_ => Err("invalid value"),
18612		}
18613	}
18614}
18615impl std::convert::TryFrom<&str> for MembershipAddedAction {
18616	type Error = &'static str;
18617
18618	fn try_from(value: &str) -> Result<Self, &'static str> {
18619		value.parse()
18620	}
18621}
18622impl std::convert::TryFrom<&String> for MembershipAddedAction {
18623	type Error = &'static str;
18624
18625	fn try_from(value: &String) -> Result<Self, &'static str> {
18626		value.parse()
18627	}
18628}
18629impl std::convert::TryFrom<String> for MembershipAddedAction {
18630	type Error = &'static str;
18631
18632	fn try_from(value: String) -> Result<Self, &'static str> {
18633		value.parse()
18634	}
18635}
18636/// The scope of the membership. Currently, can only be `team`.
18637#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18638pub enum MembershipAddedScope {
18639	#[serde(rename = "team")]
18640	Team,
18641}
18642impl From<&MembershipAddedScope> for MembershipAddedScope {
18643	fn from(value: &MembershipAddedScope) -> Self {
18644		value.clone()
18645	}
18646}
18647impl ToString for MembershipAddedScope {
18648	fn to_string(&self) -> String {
18649		match *self {
18650			Self::Team => "team".to_string(),
18651		}
18652	}
18653}
18654impl std::str::FromStr for MembershipAddedScope {
18655	type Err = &'static str;
18656
18657	fn from_str(value: &str) -> Result<Self, &'static str> {
18658		match value {
18659			"team" => Ok(Self::Team),
18660			_ => Err("invalid value"),
18661		}
18662	}
18663}
18664impl std::convert::TryFrom<&str> for MembershipAddedScope {
18665	type Error = &'static str;
18666
18667	fn try_from(value: &str) -> Result<Self, &'static str> {
18668		value.parse()
18669	}
18670}
18671impl std::convert::TryFrom<&String> for MembershipAddedScope {
18672	type Error = &'static str;
18673
18674	fn try_from(value: &String) -> Result<Self, &'static str> {
18675		value.parse()
18676	}
18677}
18678impl std::convert::TryFrom<String> for MembershipAddedScope {
18679	type Error = &'static str;
18680
18681	fn try_from(value: String) -> Result<Self, &'static str> {
18682		value.parse()
18683	}
18684}
18685#[derive(Clone, Debug, Deserialize, Serialize)]
18686#[serde(untagged)]
18687pub enum MembershipEvent {
18688	Added(MembershipAdded),
18689	Removed(MembershipRemoved),
18690}
18691impl From<&MembershipEvent> for MembershipEvent {
18692	fn from(value: &MembershipEvent) -> Self {
18693		value.clone()
18694	}
18695}
18696impl From<MembershipAdded> for MembershipEvent {
18697	fn from(value: MembershipAdded) -> Self {
18698		Self::Added(value)
18699	}
18700}
18701impl From<MembershipRemoved> for MembershipEvent {
18702	fn from(value: MembershipRemoved) -> Self {
18703		Self::Removed(value)
18704	}
18705}
18706#[derive(Clone, Debug, Deserialize, Serialize)]
18707#[serde(deny_unknown_fields)]
18708pub struct MembershipRemoved {
18709	pub action:       MembershipRemovedAction,
18710	#[serde(default, skip_serializing_if = "Option::is_none")]
18711	pub installation: Option<InstallationLite>,
18712	/// The [user](https://docs.github.com/en/rest/reference/users) that was added or removed.
18713	pub member:       User,
18714	pub organization: Organization,
18715	/// The scope of the membership. Currently, can only be `team`.
18716	pub scope:        MembershipRemovedScope,
18717	pub sender:       User,
18718	/// The [team](https://docs.github.com/en/rest/reference/teams) for the membership.
18719	pub team:         MembershipRemovedTeam,
18720}
18721impl From<&MembershipRemoved> for MembershipRemoved {
18722	fn from(value: &MembershipRemoved) -> Self {
18723		value.clone()
18724	}
18725}
18726#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18727pub enum MembershipRemovedAction {
18728	#[serde(rename = "removed")]
18729	Removed,
18730}
18731impl From<&MembershipRemovedAction> for MembershipRemovedAction {
18732	fn from(value: &MembershipRemovedAction) -> Self {
18733		value.clone()
18734	}
18735}
18736impl ToString for MembershipRemovedAction {
18737	fn to_string(&self) -> String {
18738		match *self {
18739			Self::Removed => "removed".to_string(),
18740		}
18741	}
18742}
18743impl std::str::FromStr for MembershipRemovedAction {
18744	type Err = &'static str;
18745
18746	fn from_str(value: &str) -> Result<Self, &'static str> {
18747		match value {
18748			"removed" => Ok(Self::Removed),
18749			_ => Err("invalid value"),
18750		}
18751	}
18752}
18753impl std::convert::TryFrom<&str> for MembershipRemovedAction {
18754	type Error = &'static str;
18755
18756	fn try_from(value: &str) -> Result<Self, &'static str> {
18757		value.parse()
18758	}
18759}
18760impl std::convert::TryFrom<&String> for MembershipRemovedAction {
18761	type Error = &'static str;
18762
18763	fn try_from(value: &String) -> Result<Self, &'static str> {
18764		value.parse()
18765	}
18766}
18767impl std::convert::TryFrom<String> for MembershipRemovedAction {
18768	type Error = &'static str;
18769
18770	fn try_from(value: String) -> Result<Self, &'static str> {
18771		value.parse()
18772	}
18773}
18774/// The scope of the membership. Currently, can only be `team`.
18775#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18776pub enum MembershipRemovedScope {
18777	#[serde(rename = "team")]
18778	Team,
18779	#[serde(rename = "organization")]
18780	Organization,
18781}
18782impl From<&MembershipRemovedScope> for MembershipRemovedScope {
18783	fn from(value: &MembershipRemovedScope) -> Self {
18784		value.clone()
18785	}
18786}
18787impl ToString for MembershipRemovedScope {
18788	fn to_string(&self) -> String {
18789		match *self {
18790			Self::Team => "team".to_string(),
18791			Self::Organization => "organization".to_string(),
18792		}
18793	}
18794}
18795impl std::str::FromStr for MembershipRemovedScope {
18796	type Err = &'static str;
18797
18798	fn from_str(value: &str) -> Result<Self, &'static str> {
18799		match value {
18800			"team" => Ok(Self::Team),
18801			"organization" => Ok(Self::Organization),
18802			_ => Err("invalid value"),
18803		}
18804	}
18805}
18806impl std::convert::TryFrom<&str> for MembershipRemovedScope {
18807	type Error = &'static str;
18808
18809	fn try_from(value: &str) -> Result<Self, &'static str> {
18810		value.parse()
18811	}
18812}
18813impl std::convert::TryFrom<&String> for MembershipRemovedScope {
18814	type Error = &'static str;
18815
18816	fn try_from(value: &String) -> Result<Self, &'static str> {
18817		value.parse()
18818	}
18819}
18820impl std::convert::TryFrom<String> for MembershipRemovedScope {
18821	type Error = &'static str;
18822
18823	fn try_from(value: String) -> Result<Self, &'static str> {
18824		value.parse()
18825	}
18826}
18827/// The [team](https://docs.github.com/en/rest/reference/teams) for the membership.
18828#[derive(Clone, Debug, Deserialize, Serialize)]
18829#[serde(untagged, deny_unknown_fields)]
18830pub enum MembershipRemovedTeam {
18831	Variant0(Team),
18832	Variant1 {
18833		#[serde(default, skip_serializing_if = "Option::is_none")]
18834		deleted: Option<bool>,
18835		id:      i64,
18836		name:    String,
18837	},
18838}
18839impl From<&MembershipRemovedTeam> for MembershipRemovedTeam {
18840	fn from(value: &MembershipRemovedTeam) -> Self {
18841		value.clone()
18842	}
18843}
18844impl From<Team> for MembershipRemovedTeam {
18845	fn from(value: Team) -> Self {
18846		Self::Variant0(value)
18847	}
18848}
18849#[derive(Clone, Debug, Deserialize, Serialize)]
18850#[serde(deny_unknown_fields)]
18851pub struct MergeGroupChecksRequested {
18852	pub action:       MergeGroupChecksRequestedAction,
18853	#[serde(default, skip_serializing_if = "Option::is_none")]
18854	pub installation: Option<InstallationLite>,
18855	pub merge_group:  MergeGroupChecksRequestedMergeGroup,
18856	#[serde(default, skip_serializing_if = "Option::is_none")]
18857	pub organization: Option<Organization>,
18858	pub repository:   Repository,
18859	pub sender:       User,
18860}
18861impl From<&MergeGroupChecksRequested> for MergeGroupChecksRequested {
18862	fn from(value: &MergeGroupChecksRequested) -> Self {
18863		value.clone()
18864	}
18865}
18866#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
18867pub enum MergeGroupChecksRequestedAction {
18868	#[serde(rename = "checks_requested")]
18869	ChecksRequested,
18870}
18871impl From<&MergeGroupChecksRequestedAction> for MergeGroupChecksRequestedAction {
18872	fn from(value: &MergeGroupChecksRequestedAction) -> Self {
18873		value.clone()
18874	}
18875}
18876impl ToString for MergeGroupChecksRequestedAction {
18877	fn to_string(&self) -> String {
18878		match *self {
18879			Self::ChecksRequested => "checks_requested".to_string(),
18880		}
18881	}
18882}
18883impl std::str::FromStr for MergeGroupChecksRequestedAction {
18884	type Err = &'static str;
18885
18886	fn from_str(value: &str) -> Result<Self, &'static str> {
18887		match value {
18888			"checks_requested" => Ok(Self::ChecksRequested),
18889			_ => Err("invalid value"),
18890		}
18891	}
18892}
18893impl std::convert::TryFrom<&str> for MergeGroupChecksRequestedAction {
18894	type Error = &'static str;
18895
18896	fn try_from(value: &str) -> Result<Self, &'static str> {
18897		value.parse()
18898	}
18899}
18900impl std::convert::TryFrom<&String> for MergeGroupChecksRequestedAction {
18901	type Error = &'static str;
18902
18903	fn try_from(value: &String) -> Result<Self, &'static str> {
18904		value.parse()
18905	}
18906}
18907impl std::convert::TryFrom<String> for MergeGroupChecksRequestedAction {
18908	type Error = &'static str;
18909
18910	fn try_from(value: String) -> Result<Self, &'static str> {
18911		value.parse()
18912	}
18913}
18914/// The merge group.
18915#[derive(Clone, Debug, Deserialize, Serialize)]
18916#[serde(deny_unknown_fields)]
18917pub struct MergeGroupChecksRequestedMergeGroup {
18918	/// The full ref of the branch the merge group will be merged into.
18919	pub base_ref:    String,
18920	/// The SHA of the merge group's parent commit.
18921	pub base_sha:    String,
18922	pub head_commit: MergeGroupChecksRequestedMergeGroupHeadCommit,
18923	/// The full ref of the merge group.
18924	pub head_ref:    String,
18925	/// The SHA of the merge group.
18926	pub head_sha:    String,
18927}
18928impl From<&MergeGroupChecksRequestedMergeGroup> for MergeGroupChecksRequestedMergeGroup {
18929	fn from(value: &MergeGroupChecksRequestedMergeGroup) -> Self {
18930		value.clone()
18931	}
18932}
18933/// An expanded representation of the `head_sha` commit.
18934#[derive(Clone, Debug, Deserialize, Serialize)]
18935#[serde(deny_unknown_fields)]
18936pub struct MergeGroupChecksRequestedMergeGroupHeadCommit {
18937	pub author:    MergeGroupChecksRequestedMergeGroupHeadCommitAuthor,
18938	pub committer: MergeGroupChecksRequestedMergeGroupHeadCommitCommitter,
18939	pub id:        String,
18940	pub message:   String,
18941	pub timestamp: chrono::DateTime<chrono::offset::Utc>,
18942	pub tree_id:   String,
18943}
18944impl From<&MergeGroupChecksRequestedMergeGroupHeadCommit>
18945	for MergeGroupChecksRequestedMergeGroupHeadCommit
18946{
18947	fn from(value: &MergeGroupChecksRequestedMergeGroupHeadCommit) -> Self {
18948		value.clone()
18949	}
18950}
18951#[derive(Clone, Debug, Deserialize, Serialize)]
18952#[serde(deny_unknown_fields)]
18953pub struct MergeGroupChecksRequestedMergeGroupHeadCommitAuthor {
18954	pub email: String,
18955	pub name:  String,
18956}
18957impl From<&MergeGroupChecksRequestedMergeGroupHeadCommitAuthor>
18958	for MergeGroupChecksRequestedMergeGroupHeadCommitAuthor
18959{
18960	fn from(value: &MergeGroupChecksRequestedMergeGroupHeadCommitAuthor) -> Self {
18961		value.clone()
18962	}
18963}
18964#[derive(Clone, Debug, Deserialize, Serialize)]
18965#[serde(deny_unknown_fields)]
18966pub struct MergeGroupChecksRequestedMergeGroupHeadCommitCommitter {
18967	pub email: String,
18968	pub name:  String,
18969}
18970impl From<&MergeGroupChecksRequestedMergeGroupHeadCommitCommitter>
18971	for MergeGroupChecksRequestedMergeGroupHeadCommitCommitter
18972{
18973	fn from(value: &MergeGroupChecksRequestedMergeGroupHeadCommitCommitter) -> Self {
18974		value.clone()
18975	}
18976}
18977#[derive(Clone, Debug, Deserialize, Serialize)]
18978pub struct MergeGroupEvent(pub MergeGroupChecksRequested);
18979impl std::ops::Deref for MergeGroupEvent {
18980	type Target = MergeGroupChecksRequested;
18981
18982	fn deref(&self) -> &MergeGroupChecksRequested {
18983		&self.0
18984	}
18985}
18986impl From<MergeGroupEvent> for MergeGroupChecksRequested {
18987	fn from(value: MergeGroupEvent) -> Self {
18988		value.0
18989	}
18990}
18991impl From<&MergeGroupEvent> for MergeGroupEvent {
18992	fn from(value: &MergeGroupEvent) -> Self {
18993		value.clone()
18994	}
18995}
18996impl From<MergeGroupChecksRequested> for MergeGroupEvent {
18997	fn from(value: MergeGroupChecksRequested) -> Self {
18998		Self(value)
18999	}
19000}
19001#[derive(Clone, Debug, Deserialize, Serialize)]
19002#[serde(deny_unknown_fields)]
19003pub struct MetaDeleted {
19004	pub action:     MetaDeletedAction,
19005	pub hook:       MetaDeletedHook,
19006	/// The id of the modified webhook.
19007	pub hook_id:    i64,
19008	pub repository: Repository,
19009	pub sender:     User,
19010}
19011impl From<&MetaDeleted> for MetaDeleted {
19012	fn from(value: &MetaDeleted) -> Self {
19013		value.clone()
19014	}
19015}
19016#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19017pub enum MetaDeletedAction {
19018	#[serde(rename = "deleted")]
19019	Deleted,
19020}
19021impl From<&MetaDeletedAction> for MetaDeletedAction {
19022	fn from(value: &MetaDeletedAction) -> Self {
19023		value.clone()
19024	}
19025}
19026impl ToString for MetaDeletedAction {
19027	fn to_string(&self) -> String {
19028		match *self {
19029			Self::Deleted => "deleted".to_string(),
19030		}
19031	}
19032}
19033impl std::str::FromStr for MetaDeletedAction {
19034	type Err = &'static str;
19035
19036	fn from_str(value: &str) -> Result<Self, &'static str> {
19037		match value {
19038			"deleted" => Ok(Self::Deleted),
19039			_ => Err("invalid value"),
19040		}
19041	}
19042}
19043impl std::convert::TryFrom<&str> for MetaDeletedAction {
19044	type Error = &'static str;
19045
19046	fn try_from(value: &str) -> Result<Self, &'static str> {
19047		value.parse()
19048	}
19049}
19050impl std::convert::TryFrom<&String> for MetaDeletedAction {
19051	type Error = &'static str;
19052
19053	fn try_from(value: &String) -> Result<Self, &'static str> {
19054		value.parse()
19055	}
19056}
19057impl std::convert::TryFrom<String> for MetaDeletedAction {
19058	type Error = &'static str;
19059
19060	fn try_from(value: String) -> Result<Self, &'static str> {
19061		value.parse()
19062	}
19063}
19064/// The modified webhook. This will contain different keys based on the type of
19065/// webhook it is: repository, organization, business, app, or GitHub
19066/// Marketplace.
19067#[derive(Clone, Debug, Deserialize, Serialize)]
19068#[serde(deny_unknown_fields)]
19069pub struct MetaDeletedHook {
19070	pub active:     bool,
19071	pub config:     MetaDeletedHookConfig,
19072	pub created_at: chrono::DateTime<chrono::offset::Utc>,
19073	pub events:     WebhookEvents,
19074	pub id:         i64,
19075	pub name:       String,
19076	#[serde(rename = "type")]
19077	pub type_:      String,
19078	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
19079}
19080impl From<&MetaDeletedHook> for MetaDeletedHook {
19081	fn from(value: &MetaDeletedHook) -> Self {
19082		value.clone()
19083	}
19084}
19085/// Configuration object of the webhook
19086#[derive(Clone, Debug, Deserialize, Serialize)]
19087#[serde(deny_unknown_fields)]
19088pub struct MetaDeletedHookConfig {
19089	/// The media type used to serialize the payloads. Supported values include
19090	/// `json` and `form`. The default is `form`.
19091	pub content_type: MetaDeletedHookConfigContentType,
19092	/// Determines whether the SSL certificate of the host for `url` will be
19093	/// verified when delivering payloads. Supported values include `0`
19094	/// (verification is performed) and `1` (verification is not performed). The
19095	/// default is `0`.
19096	pub insecure_ssl: MetaDeletedHookConfigInsecureSsl,
19097	/// If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers).
19098	#[serde(default, skip_serializing_if = "Option::is_none")]
19099	pub secret:       Option<String>,
19100	/// The URL to which the payloads will be delivered.
19101	pub url:          String,
19102}
19103impl From<&MetaDeletedHookConfig> for MetaDeletedHookConfig {
19104	fn from(value: &MetaDeletedHookConfig) -> Self {
19105		value.clone()
19106	}
19107}
19108/// The media type used to serialize the payloads. Supported values include
19109/// `json` and `form`. The default is `form`.
19110#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19111pub enum MetaDeletedHookConfigContentType {
19112	#[serde(rename = "json")]
19113	Json,
19114	#[serde(rename = "form")]
19115	Form,
19116}
19117impl From<&MetaDeletedHookConfigContentType> for MetaDeletedHookConfigContentType {
19118	fn from(value: &MetaDeletedHookConfigContentType) -> Self {
19119		value.clone()
19120	}
19121}
19122impl ToString for MetaDeletedHookConfigContentType {
19123	fn to_string(&self) -> String {
19124		match *self {
19125			Self::Json => "json".to_string(),
19126			Self::Form => "form".to_string(),
19127		}
19128	}
19129}
19130impl std::str::FromStr for MetaDeletedHookConfigContentType {
19131	type Err = &'static str;
19132
19133	fn from_str(value: &str) -> Result<Self, &'static str> {
19134		match value {
19135			"json" => Ok(Self::Json),
19136			"form" => Ok(Self::Form),
19137			_ => Err("invalid value"),
19138		}
19139	}
19140}
19141impl std::convert::TryFrom<&str> for MetaDeletedHookConfigContentType {
19142	type Error = &'static str;
19143
19144	fn try_from(value: &str) -> Result<Self, &'static str> {
19145		value.parse()
19146	}
19147}
19148impl std::convert::TryFrom<&String> for MetaDeletedHookConfigContentType {
19149	type Error = &'static str;
19150
19151	fn try_from(value: &String) -> Result<Self, &'static str> {
19152		value.parse()
19153	}
19154}
19155impl std::convert::TryFrom<String> for MetaDeletedHookConfigContentType {
19156	type Error = &'static str;
19157
19158	fn try_from(value: String) -> Result<Self, &'static str> {
19159		value.parse()
19160	}
19161}
19162/// Determines whether the SSL certificate of the host for `url` will be
19163/// verified when delivering payloads. Supported values include `0`
19164/// (verification is performed) and `1` (verification is not performed). The
19165/// default is `0`.
19166#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19167pub enum MetaDeletedHookConfigInsecureSsl {
19168	#[serde(rename = "0")]
19169	_0,
19170	#[serde(rename = "1")]
19171	_1,
19172}
19173impl From<&MetaDeletedHookConfigInsecureSsl> for MetaDeletedHookConfigInsecureSsl {
19174	fn from(value: &MetaDeletedHookConfigInsecureSsl) -> Self {
19175		value.clone()
19176	}
19177}
19178impl ToString for MetaDeletedHookConfigInsecureSsl {
19179	fn to_string(&self) -> String {
19180		match *self {
19181			Self::_0 => "0".to_string(),
19182			Self::_1 => "1".to_string(),
19183		}
19184	}
19185}
19186impl std::str::FromStr for MetaDeletedHookConfigInsecureSsl {
19187	type Err = &'static str;
19188
19189	fn from_str(value: &str) -> Result<Self, &'static str> {
19190		match value {
19191			"0" => Ok(Self::_0),
19192			"1" => Ok(Self::_1),
19193			_ => Err("invalid value"),
19194		}
19195	}
19196}
19197impl std::convert::TryFrom<&str> for MetaDeletedHookConfigInsecureSsl {
19198	type Error = &'static str;
19199
19200	fn try_from(value: &str) -> Result<Self, &'static str> {
19201		value.parse()
19202	}
19203}
19204impl std::convert::TryFrom<&String> for MetaDeletedHookConfigInsecureSsl {
19205	type Error = &'static str;
19206
19207	fn try_from(value: &String) -> Result<Self, &'static str> {
19208		value.parse()
19209	}
19210}
19211impl std::convert::TryFrom<String> for MetaDeletedHookConfigInsecureSsl {
19212	type Error = &'static str;
19213
19214	fn try_from(value: String) -> Result<Self, &'static str> {
19215		value.parse()
19216	}
19217}
19218#[derive(Clone, Debug, Deserialize, Serialize)]
19219pub struct MetaEvent(pub MetaDeleted);
19220impl std::ops::Deref for MetaEvent {
19221	type Target = MetaDeleted;
19222
19223	fn deref(&self) -> &MetaDeleted {
19224		&self.0
19225	}
19226}
19227impl From<MetaEvent> for MetaDeleted {
19228	fn from(value: MetaEvent) -> Self {
19229		value.0
19230	}
19231}
19232impl From<&MetaEvent> for MetaEvent {
19233	fn from(value: &MetaEvent) -> Self {
19234		value.clone()
19235	}
19236}
19237impl From<MetaDeleted> for MetaEvent {
19238	fn from(value: MetaDeleted) -> Self {
19239		Self(value)
19240	}
19241}
19242/// A collection of related issues and pull requests.
19243#[derive(Clone, Debug, Deserialize, Serialize)]
19244#[serde(deny_unknown_fields)]
19245pub struct Milestone {
19246	pub closed_at:     Option<chrono::DateTime<chrono::offset::Utc>>,
19247	pub closed_issues: i64,
19248	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
19249	pub creator:       User,
19250	pub description:   Option<String>,
19251	pub due_on:        Option<chrono::DateTime<chrono::offset::Utc>>,
19252	pub html_url:      String,
19253	pub id:            i64,
19254	pub labels_url:    String,
19255	pub node_id:       String,
19256	/// The number of the milestone.
19257	pub number:        i64,
19258	pub open_issues:   i64,
19259	/// The state of the milestone.
19260	pub state:         MilestoneState,
19261	/// The title of the milestone.
19262	pub title:         String,
19263	pub updated_at:    chrono::DateTime<chrono::offset::Utc>,
19264	pub url:           String,
19265}
19266impl From<&Milestone> for Milestone {
19267	fn from(value: &Milestone) -> Self {
19268		value.clone()
19269	}
19270}
19271#[derive(Clone, Debug, Deserialize, Serialize)]
19272#[serde(deny_unknown_fields)]
19273pub struct MilestoneClosed {
19274	pub action:       MilestoneClosedAction,
19275	#[serde(default, skip_serializing_if = "Option::is_none")]
19276	pub installation: Option<InstallationLite>,
19277	pub milestone:    Milestone,
19278	#[serde(default, skip_serializing_if = "Option::is_none")]
19279	pub organization: Option<Organization>,
19280	pub repository:   Repository,
19281	pub sender:       User,
19282}
19283impl From<&MilestoneClosed> for MilestoneClosed {
19284	fn from(value: &MilestoneClosed) -> Self {
19285		value.clone()
19286	}
19287}
19288#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19289pub enum MilestoneClosedAction {
19290	#[serde(rename = "closed")]
19291	Closed,
19292}
19293impl From<&MilestoneClosedAction> for MilestoneClosedAction {
19294	fn from(value: &MilestoneClosedAction) -> Self {
19295		value.clone()
19296	}
19297}
19298impl ToString for MilestoneClosedAction {
19299	fn to_string(&self) -> String {
19300		match *self {
19301			Self::Closed => "closed".to_string(),
19302		}
19303	}
19304}
19305impl std::str::FromStr for MilestoneClosedAction {
19306	type Err = &'static str;
19307
19308	fn from_str(value: &str) -> Result<Self, &'static str> {
19309		match value {
19310			"closed" => Ok(Self::Closed),
19311			_ => Err("invalid value"),
19312		}
19313	}
19314}
19315impl std::convert::TryFrom<&str> for MilestoneClosedAction {
19316	type Error = &'static str;
19317
19318	fn try_from(value: &str) -> Result<Self, &'static str> {
19319		value.parse()
19320	}
19321}
19322impl std::convert::TryFrom<&String> for MilestoneClosedAction {
19323	type Error = &'static str;
19324
19325	fn try_from(value: &String) -> Result<Self, &'static str> {
19326		value.parse()
19327	}
19328}
19329impl std::convert::TryFrom<String> for MilestoneClosedAction {
19330	type Error = &'static str;
19331
19332	fn try_from(value: String) -> Result<Self, &'static str> {
19333		value.parse()
19334	}
19335}
19336#[derive(Clone, Debug, Deserialize, Serialize)]
19337#[serde(deny_unknown_fields)]
19338pub struct MilestoneCreated {
19339	pub action:       MilestoneCreatedAction,
19340	#[serde(default, skip_serializing_if = "Option::is_none")]
19341	pub installation: Option<InstallationLite>,
19342	pub milestone:    Milestone,
19343	#[serde(default, skip_serializing_if = "Option::is_none")]
19344	pub organization: Option<Organization>,
19345	pub repository:   Repository,
19346	pub sender:       User,
19347}
19348impl From<&MilestoneCreated> for MilestoneCreated {
19349	fn from(value: &MilestoneCreated) -> Self {
19350		value.clone()
19351	}
19352}
19353#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19354pub enum MilestoneCreatedAction {
19355	#[serde(rename = "created")]
19356	Created,
19357}
19358impl From<&MilestoneCreatedAction> for MilestoneCreatedAction {
19359	fn from(value: &MilestoneCreatedAction) -> Self {
19360		value.clone()
19361	}
19362}
19363impl ToString for MilestoneCreatedAction {
19364	fn to_string(&self) -> String {
19365		match *self {
19366			Self::Created => "created".to_string(),
19367		}
19368	}
19369}
19370impl std::str::FromStr for MilestoneCreatedAction {
19371	type Err = &'static str;
19372
19373	fn from_str(value: &str) -> Result<Self, &'static str> {
19374		match value {
19375			"created" => Ok(Self::Created),
19376			_ => Err("invalid value"),
19377		}
19378	}
19379}
19380impl std::convert::TryFrom<&str> for MilestoneCreatedAction {
19381	type Error = &'static str;
19382
19383	fn try_from(value: &str) -> Result<Self, &'static str> {
19384		value.parse()
19385	}
19386}
19387impl std::convert::TryFrom<&String> for MilestoneCreatedAction {
19388	type Error = &'static str;
19389
19390	fn try_from(value: &String) -> Result<Self, &'static str> {
19391		value.parse()
19392	}
19393}
19394impl std::convert::TryFrom<String> for MilestoneCreatedAction {
19395	type Error = &'static str;
19396
19397	fn try_from(value: String) -> Result<Self, &'static str> {
19398		value.parse()
19399	}
19400}
19401#[derive(Clone, Debug, Deserialize, Serialize)]
19402#[serde(deny_unknown_fields)]
19403pub struct MilestoneDeleted {
19404	pub action:       MilestoneDeletedAction,
19405	#[serde(default, skip_serializing_if = "Option::is_none")]
19406	pub installation: Option<InstallationLite>,
19407	pub milestone:    Milestone,
19408	#[serde(default, skip_serializing_if = "Option::is_none")]
19409	pub organization: Option<Organization>,
19410	pub repository:   Repository,
19411	pub sender:       User,
19412}
19413impl From<&MilestoneDeleted> for MilestoneDeleted {
19414	fn from(value: &MilestoneDeleted) -> Self {
19415		value.clone()
19416	}
19417}
19418#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19419pub enum MilestoneDeletedAction {
19420	#[serde(rename = "deleted")]
19421	Deleted,
19422}
19423impl From<&MilestoneDeletedAction> for MilestoneDeletedAction {
19424	fn from(value: &MilestoneDeletedAction) -> Self {
19425		value.clone()
19426	}
19427}
19428impl ToString for MilestoneDeletedAction {
19429	fn to_string(&self) -> String {
19430		match *self {
19431			Self::Deleted => "deleted".to_string(),
19432		}
19433	}
19434}
19435impl std::str::FromStr for MilestoneDeletedAction {
19436	type Err = &'static str;
19437
19438	fn from_str(value: &str) -> Result<Self, &'static str> {
19439		match value {
19440			"deleted" => Ok(Self::Deleted),
19441			_ => Err("invalid value"),
19442		}
19443	}
19444}
19445impl std::convert::TryFrom<&str> for MilestoneDeletedAction {
19446	type Error = &'static str;
19447
19448	fn try_from(value: &str) -> Result<Self, &'static str> {
19449		value.parse()
19450	}
19451}
19452impl std::convert::TryFrom<&String> for MilestoneDeletedAction {
19453	type Error = &'static str;
19454
19455	fn try_from(value: &String) -> Result<Self, &'static str> {
19456		value.parse()
19457	}
19458}
19459impl std::convert::TryFrom<String> for MilestoneDeletedAction {
19460	type Error = &'static str;
19461
19462	fn try_from(value: String) -> Result<Self, &'static str> {
19463		value.parse()
19464	}
19465}
19466#[derive(Clone, Debug, Deserialize, Serialize)]
19467#[serde(deny_unknown_fields)]
19468pub struct MilestoneEdited {
19469	pub action:       MilestoneEditedAction,
19470	pub changes:      MilestoneEditedChanges,
19471	#[serde(default, skip_serializing_if = "Option::is_none")]
19472	pub installation: Option<InstallationLite>,
19473	pub milestone:    Milestone,
19474	#[serde(default, skip_serializing_if = "Option::is_none")]
19475	pub organization: Option<Organization>,
19476	pub repository:   Repository,
19477	pub sender:       User,
19478}
19479impl From<&MilestoneEdited> for MilestoneEdited {
19480	fn from(value: &MilestoneEdited) -> Self {
19481		value.clone()
19482	}
19483}
19484#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19485pub enum MilestoneEditedAction {
19486	#[serde(rename = "edited")]
19487	Edited,
19488}
19489impl From<&MilestoneEditedAction> for MilestoneEditedAction {
19490	fn from(value: &MilestoneEditedAction) -> Self {
19491		value.clone()
19492	}
19493}
19494impl ToString for MilestoneEditedAction {
19495	fn to_string(&self) -> String {
19496		match *self {
19497			Self::Edited => "edited".to_string(),
19498		}
19499	}
19500}
19501impl std::str::FromStr for MilestoneEditedAction {
19502	type Err = &'static str;
19503
19504	fn from_str(value: &str) -> Result<Self, &'static str> {
19505		match value {
19506			"edited" => Ok(Self::Edited),
19507			_ => Err("invalid value"),
19508		}
19509	}
19510}
19511impl std::convert::TryFrom<&str> for MilestoneEditedAction {
19512	type Error = &'static str;
19513
19514	fn try_from(value: &str) -> Result<Self, &'static str> {
19515		value.parse()
19516	}
19517}
19518impl std::convert::TryFrom<&String> for MilestoneEditedAction {
19519	type Error = &'static str;
19520
19521	fn try_from(value: &String) -> Result<Self, &'static str> {
19522		value.parse()
19523	}
19524}
19525impl std::convert::TryFrom<String> for MilestoneEditedAction {
19526	type Error = &'static str;
19527
19528	fn try_from(value: String) -> Result<Self, &'static str> {
19529		value.parse()
19530	}
19531}
19532/// The changes to the milestone if the action was `edited`.
19533#[derive(Clone, Debug, Deserialize, Serialize)]
19534#[serde(deny_unknown_fields)]
19535pub struct MilestoneEditedChanges {
19536	#[serde(default, skip_serializing_if = "Option::is_none")]
19537	pub description: Option<MilestoneEditedChangesDescription>,
19538	#[serde(default, skip_serializing_if = "Option::is_none")]
19539	pub due_on:      Option<MilestoneEditedChangesDueOn>,
19540	#[serde(default, skip_serializing_if = "Option::is_none")]
19541	pub title:       Option<MilestoneEditedChangesTitle>,
19542}
19543impl From<&MilestoneEditedChanges> for MilestoneEditedChanges {
19544	fn from(value: &MilestoneEditedChanges) -> Self {
19545		value.clone()
19546	}
19547}
19548#[derive(Clone, Debug, Deserialize, Serialize)]
19549#[serde(deny_unknown_fields)]
19550pub struct MilestoneEditedChangesDescription {
19551	/// The previous version of the description if the action was `edited`.
19552	pub from: String,
19553}
19554impl From<&MilestoneEditedChangesDescription> for MilestoneEditedChangesDescription {
19555	fn from(value: &MilestoneEditedChangesDescription) -> Self {
19556		value.clone()
19557	}
19558}
19559#[derive(Clone, Debug, Deserialize, Serialize)]
19560#[serde(deny_unknown_fields)]
19561pub struct MilestoneEditedChangesDueOn {
19562	/// The previous version of the due date if the action was `edited`.
19563	pub from: String,
19564}
19565impl From<&MilestoneEditedChangesDueOn> for MilestoneEditedChangesDueOn {
19566	fn from(value: &MilestoneEditedChangesDueOn) -> Self {
19567		value.clone()
19568	}
19569}
19570#[derive(Clone, Debug, Deserialize, Serialize)]
19571#[serde(deny_unknown_fields)]
19572pub struct MilestoneEditedChangesTitle {
19573	/// The previous version of the title if the action was `edited`.
19574	pub from: String,
19575}
19576impl From<&MilestoneEditedChangesTitle> for MilestoneEditedChangesTitle {
19577	fn from(value: &MilestoneEditedChangesTitle) -> Self {
19578		value.clone()
19579	}
19580}
19581#[derive(Clone, Debug, Deserialize, Serialize)]
19582#[serde(untagged)]
19583pub enum MilestoneEvent {
19584	Closed(MilestoneClosed),
19585	Created(MilestoneCreated),
19586	Deleted(MilestoneDeleted),
19587	Edited(MilestoneEdited),
19588	Opened(MilestoneOpened),
19589}
19590impl From<&MilestoneEvent> for MilestoneEvent {
19591	fn from(value: &MilestoneEvent) -> Self {
19592		value.clone()
19593	}
19594}
19595impl From<MilestoneClosed> for MilestoneEvent {
19596	fn from(value: MilestoneClosed) -> Self {
19597		Self::Closed(value)
19598	}
19599}
19600impl From<MilestoneCreated> for MilestoneEvent {
19601	fn from(value: MilestoneCreated) -> Self {
19602		Self::Created(value)
19603	}
19604}
19605impl From<MilestoneDeleted> for MilestoneEvent {
19606	fn from(value: MilestoneDeleted) -> Self {
19607		Self::Deleted(value)
19608	}
19609}
19610impl From<MilestoneEdited> for MilestoneEvent {
19611	fn from(value: MilestoneEdited) -> Self {
19612		Self::Edited(value)
19613	}
19614}
19615impl From<MilestoneOpened> for MilestoneEvent {
19616	fn from(value: MilestoneOpened) -> Self {
19617		Self::Opened(value)
19618	}
19619}
19620#[derive(Clone, Debug, Deserialize, Serialize)]
19621#[serde(deny_unknown_fields)]
19622pub struct MilestoneOpened {
19623	pub action:       MilestoneOpenedAction,
19624	#[serde(default, skip_serializing_if = "Option::is_none")]
19625	pub installation: Option<InstallationLite>,
19626	pub milestone:    Milestone,
19627	#[serde(default, skip_serializing_if = "Option::is_none")]
19628	pub organization: Option<Organization>,
19629	pub repository:   Repository,
19630	pub sender:       User,
19631}
19632impl From<&MilestoneOpened> for MilestoneOpened {
19633	fn from(value: &MilestoneOpened) -> Self {
19634		value.clone()
19635	}
19636}
19637#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19638pub enum MilestoneOpenedAction {
19639	#[serde(rename = "opened")]
19640	Opened,
19641}
19642impl From<&MilestoneOpenedAction> for MilestoneOpenedAction {
19643	fn from(value: &MilestoneOpenedAction) -> Self {
19644		value.clone()
19645	}
19646}
19647impl ToString for MilestoneOpenedAction {
19648	fn to_string(&self) -> String {
19649		match *self {
19650			Self::Opened => "opened".to_string(),
19651		}
19652	}
19653}
19654impl std::str::FromStr for MilestoneOpenedAction {
19655	type Err = &'static str;
19656
19657	fn from_str(value: &str) -> Result<Self, &'static str> {
19658		match value {
19659			"opened" => Ok(Self::Opened),
19660			_ => Err("invalid value"),
19661		}
19662	}
19663}
19664impl std::convert::TryFrom<&str> for MilestoneOpenedAction {
19665	type Error = &'static str;
19666
19667	fn try_from(value: &str) -> Result<Self, &'static str> {
19668		value.parse()
19669	}
19670}
19671impl std::convert::TryFrom<&String> for MilestoneOpenedAction {
19672	type Error = &'static str;
19673
19674	fn try_from(value: &String) -> Result<Self, &'static str> {
19675		value.parse()
19676	}
19677}
19678impl std::convert::TryFrom<String> for MilestoneOpenedAction {
19679	type Error = &'static str;
19680
19681	fn try_from(value: String) -> Result<Self, &'static str> {
19682		value.parse()
19683	}
19684}
19685/// The state of the milestone.
19686#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19687pub enum MilestoneState {
19688	#[serde(rename = "open")]
19689	Open,
19690	#[serde(rename = "closed")]
19691	Closed,
19692}
19693impl From<&MilestoneState> for MilestoneState {
19694	fn from(value: &MilestoneState) -> Self {
19695		value.clone()
19696	}
19697}
19698impl ToString for MilestoneState {
19699	fn to_string(&self) -> String {
19700		match *self {
19701			Self::Open => "open".to_string(),
19702			Self::Closed => "closed".to_string(),
19703		}
19704	}
19705}
19706impl std::str::FromStr for MilestoneState {
19707	type Err = &'static str;
19708
19709	fn from_str(value: &str) -> Result<Self, &'static str> {
19710		match value {
19711			"open" => Ok(Self::Open),
19712			"closed" => Ok(Self::Closed),
19713			_ => Err("invalid value"),
19714		}
19715	}
19716}
19717impl std::convert::TryFrom<&str> for MilestoneState {
19718	type Error = &'static str;
19719
19720	fn try_from(value: &str) -> Result<Self, &'static str> {
19721		value.parse()
19722	}
19723}
19724impl std::convert::TryFrom<&String> for MilestoneState {
19725	type Error = &'static str;
19726
19727	fn try_from(value: &String) -> Result<Self, &'static str> {
19728		value.parse()
19729	}
19730}
19731impl std::convert::TryFrom<String> for MilestoneState {
19732	type Error = &'static str;
19733
19734	fn try_from(value: String) -> Result<Self, &'static str> {
19735		value.parse()
19736	}
19737}
19738#[derive(Clone, Debug, Deserialize, Serialize)]
19739#[serde(deny_unknown_fields)]
19740pub struct OrgBlockBlocked {
19741	pub action:       OrgBlockBlockedAction,
19742	/// Information about the user that was blocked or unblocked.
19743	pub blocked_user: User,
19744	#[serde(default, skip_serializing_if = "Option::is_none")]
19745	pub installation: Option<InstallationLite>,
19746	pub organization: Organization,
19747	pub sender:       User,
19748}
19749impl From<&OrgBlockBlocked> for OrgBlockBlocked {
19750	fn from(value: &OrgBlockBlocked) -> Self {
19751		value.clone()
19752	}
19753}
19754#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19755pub enum OrgBlockBlockedAction {
19756	#[serde(rename = "blocked")]
19757	Blocked,
19758}
19759impl From<&OrgBlockBlockedAction> for OrgBlockBlockedAction {
19760	fn from(value: &OrgBlockBlockedAction) -> Self {
19761		value.clone()
19762	}
19763}
19764impl ToString for OrgBlockBlockedAction {
19765	fn to_string(&self) -> String {
19766		match *self {
19767			Self::Blocked => "blocked".to_string(),
19768		}
19769	}
19770}
19771impl std::str::FromStr for OrgBlockBlockedAction {
19772	type Err = &'static str;
19773
19774	fn from_str(value: &str) -> Result<Self, &'static str> {
19775		match value {
19776			"blocked" => Ok(Self::Blocked),
19777			_ => Err("invalid value"),
19778		}
19779	}
19780}
19781impl std::convert::TryFrom<&str> for OrgBlockBlockedAction {
19782	type Error = &'static str;
19783
19784	fn try_from(value: &str) -> Result<Self, &'static str> {
19785		value.parse()
19786	}
19787}
19788impl std::convert::TryFrom<&String> for OrgBlockBlockedAction {
19789	type Error = &'static str;
19790
19791	fn try_from(value: &String) -> Result<Self, &'static str> {
19792		value.parse()
19793	}
19794}
19795impl std::convert::TryFrom<String> for OrgBlockBlockedAction {
19796	type Error = &'static str;
19797
19798	fn try_from(value: String) -> Result<Self, &'static str> {
19799		value.parse()
19800	}
19801}
19802#[derive(Clone, Debug, Deserialize, Serialize)]
19803#[serde(untagged)]
19804pub enum OrgBlockEvent {
19805	Blocked(OrgBlockBlocked),
19806	Unblocked(OrgBlockUnblocked),
19807}
19808impl From<&OrgBlockEvent> for OrgBlockEvent {
19809	fn from(value: &OrgBlockEvent) -> Self {
19810		value.clone()
19811	}
19812}
19813impl From<OrgBlockBlocked> for OrgBlockEvent {
19814	fn from(value: OrgBlockBlocked) -> Self {
19815		Self::Blocked(value)
19816	}
19817}
19818impl From<OrgBlockUnblocked> for OrgBlockEvent {
19819	fn from(value: OrgBlockUnblocked) -> Self {
19820		Self::Unblocked(value)
19821	}
19822}
19823#[derive(Clone, Debug, Deserialize, Serialize)]
19824#[serde(deny_unknown_fields)]
19825pub struct OrgBlockUnblocked {
19826	pub action:       OrgBlockUnblockedAction,
19827	/// Information about the user that was blocked or unblocked.
19828	pub blocked_user: User,
19829	#[serde(default, skip_serializing_if = "Option::is_none")]
19830	pub installation: Option<InstallationLite>,
19831	pub organization: Organization,
19832	pub sender:       User,
19833}
19834impl From<&OrgBlockUnblocked> for OrgBlockUnblocked {
19835	fn from(value: &OrgBlockUnblocked) -> Self {
19836		value.clone()
19837	}
19838}
19839#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19840pub enum OrgBlockUnblockedAction {
19841	#[serde(rename = "unblocked")]
19842	Unblocked,
19843}
19844impl From<&OrgBlockUnblockedAction> for OrgBlockUnblockedAction {
19845	fn from(value: &OrgBlockUnblockedAction) -> Self {
19846		value.clone()
19847	}
19848}
19849impl ToString for OrgBlockUnblockedAction {
19850	fn to_string(&self) -> String {
19851		match *self {
19852			Self::Unblocked => "unblocked".to_string(),
19853		}
19854	}
19855}
19856impl std::str::FromStr for OrgBlockUnblockedAction {
19857	type Err = &'static str;
19858
19859	fn from_str(value: &str) -> Result<Self, &'static str> {
19860		match value {
19861			"unblocked" => Ok(Self::Unblocked),
19862			_ => Err("invalid value"),
19863		}
19864	}
19865}
19866impl std::convert::TryFrom<&str> for OrgBlockUnblockedAction {
19867	type Error = &'static str;
19868
19869	fn try_from(value: &str) -> Result<Self, &'static str> {
19870		value.parse()
19871	}
19872}
19873impl std::convert::TryFrom<&String> for OrgBlockUnblockedAction {
19874	type Error = &'static str;
19875
19876	fn try_from(value: &String) -> Result<Self, &'static str> {
19877		value.parse()
19878	}
19879}
19880impl std::convert::TryFrom<String> for OrgBlockUnblockedAction {
19881	type Error = &'static str;
19882
19883	fn try_from(value: String) -> Result<Self, &'static str> {
19884		value.parse()
19885	}
19886}
19887#[derive(Clone, Debug, Deserialize, Serialize)]
19888#[serde(deny_unknown_fields)]
19889pub struct Organization {
19890	pub avatar_url:         String,
19891	pub description:        Option<String>,
19892	pub events_url:         String,
19893	pub hooks_url:          String,
19894	#[serde(default, skip_serializing_if = "Option::is_none")]
19895	pub html_url:           Option<String>,
19896	pub id:                 i64,
19897	pub issues_url:         String,
19898	pub login:              String,
19899	pub members_url:        String,
19900	pub node_id:            String,
19901	pub public_members_url: String,
19902	pub repos_url:          String,
19903	pub url:                String,
19904}
19905impl From<&Organization> for Organization {
19906	fn from(value: &Organization) -> Self {
19907		value.clone()
19908	}
19909}
19910#[derive(Clone, Debug, Deserialize, Serialize)]
19911#[serde(deny_unknown_fields)]
19912pub struct OrganizationDeleted {
19913	pub action:       OrganizationDeletedAction,
19914	#[serde(default, skip_serializing_if = "Option::is_none")]
19915	pub installation: Option<InstallationLite>,
19916	#[serde(default, skip_serializing_if = "Option::is_none")]
19917	pub membership:   Option<Membership>,
19918	pub organization: Organization,
19919	pub sender:       User,
19920}
19921impl From<&OrganizationDeleted> for OrganizationDeleted {
19922	fn from(value: &OrganizationDeleted) -> Self {
19923		value.clone()
19924	}
19925}
19926#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
19927pub enum OrganizationDeletedAction {
19928	#[serde(rename = "deleted")]
19929	Deleted,
19930}
19931impl From<&OrganizationDeletedAction> for OrganizationDeletedAction {
19932	fn from(value: &OrganizationDeletedAction) -> Self {
19933		value.clone()
19934	}
19935}
19936impl ToString for OrganizationDeletedAction {
19937	fn to_string(&self) -> String {
19938		match *self {
19939			Self::Deleted => "deleted".to_string(),
19940		}
19941	}
19942}
19943impl std::str::FromStr for OrganizationDeletedAction {
19944	type Err = &'static str;
19945
19946	fn from_str(value: &str) -> Result<Self, &'static str> {
19947		match value {
19948			"deleted" => Ok(Self::Deleted),
19949			_ => Err("invalid value"),
19950		}
19951	}
19952}
19953impl std::convert::TryFrom<&str> for OrganizationDeletedAction {
19954	type Error = &'static str;
19955
19956	fn try_from(value: &str) -> Result<Self, &'static str> {
19957		value.parse()
19958	}
19959}
19960impl std::convert::TryFrom<&String> for OrganizationDeletedAction {
19961	type Error = &'static str;
19962
19963	fn try_from(value: &String) -> Result<Self, &'static str> {
19964		value.parse()
19965	}
19966}
19967impl std::convert::TryFrom<String> for OrganizationDeletedAction {
19968	type Error = &'static str;
19969
19970	fn try_from(value: String) -> Result<Self, &'static str> {
19971		value.parse()
19972	}
19973}
19974#[derive(Clone, Debug, Deserialize, Serialize)]
19975#[serde(untagged)]
19976pub enum OrganizationEvent {
19977	Deleted(OrganizationDeleted),
19978	MemberAdded(OrganizationMemberAdded),
19979	MemberInvited(OrganizationMemberInvited),
19980	MemberRemoved(OrganizationMemberRemoved),
19981	Renamed(OrganizationRenamed),
19982}
19983impl From<&OrganizationEvent> for OrganizationEvent {
19984	fn from(value: &OrganizationEvent) -> Self {
19985		value.clone()
19986	}
19987}
19988impl From<OrganizationDeleted> for OrganizationEvent {
19989	fn from(value: OrganizationDeleted) -> Self {
19990		Self::Deleted(value)
19991	}
19992}
19993impl From<OrganizationMemberAdded> for OrganizationEvent {
19994	fn from(value: OrganizationMemberAdded) -> Self {
19995		Self::MemberAdded(value)
19996	}
19997}
19998impl From<OrganizationMemberInvited> for OrganizationEvent {
19999	fn from(value: OrganizationMemberInvited) -> Self {
20000		Self::MemberInvited(value)
20001	}
20002}
20003impl From<OrganizationMemberRemoved> for OrganizationEvent {
20004	fn from(value: OrganizationMemberRemoved) -> Self {
20005		Self::MemberRemoved(value)
20006	}
20007}
20008impl From<OrganizationRenamed> for OrganizationEvent {
20009	fn from(value: OrganizationRenamed) -> Self {
20010		Self::Renamed(value)
20011	}
20012}
20013#[derive(Clone, Debug, Deserialize, Serialize)]
20014#[serde(deny_unknown_fields)]
20015pub struct OrganizationMemberAdded {
20016	pub action:       OrganizationMemberAddedAction,
20017	#[serde(default, skip_serializing_if = "Option::is_none")]
20018	pub installation: Option<InstallationLite>,
20019	pub membership:   Membership,
20020	pub organization: Organization,
20021	pub sender:       User,
20022}
20023impl From<&OrganizationMemberAdded> for OrganizationMemberAdded {
20024	fn from(value: &OrganizationMemberAdded) -> Self {
20025		value.clone()
20026	}
20027}
20028#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20029pub enum OrganizationMemberAddedAction {
20030	#[serde(rename = "member_added")]
20031	MemberAdded,
20032}
20033impl From<&OrganizationMemberAddedAction> for OrganizationMemberAddedAction {
20034	fn from(value: &OrganizationMemberAddedAction) -> Self {
20035		value.clone()
20036	}
20037}
20038impl ToString for OrganizationMemberAddedAction {
20039	fn to_string(&self) -> String {
20040		match *self {
20041			Self::MemberAdded => "member_added".to_string(),
20042		}
20043	}
20044}
20045impl std::str::FromStr for OrganizationMemberAddedAction {
20046	type Err = &'static str;
20047
20048	fn from_str(value: &str) -> Result<Self, &'static str> {
20049		match value {
20050			"member_added" => Ok(Self::MemberAdded),
20051			_ => Err("invalid value"),
20052		}
20053	}
20054}
20055impl std::convert::TryFrom<&str> for OrganizationMemberAddedAction {
20056	type Error = &'static str;
20057
20058	fn try_from(value: &str) -> Result<Self, &'static str> {
20059		value.parse()
20060	}
20061}
20062impl std::convert::TryFrom<&String> for OrganizationMemberAddedAction {
20063	type Error = &'static str;
20064
20065	fn try_from(value: &String) -> Result<Self, &'static str> {
20066		value.parse()
20067	}
20068}
20069impl std::convert::TryFrom<String> for OrganizationMemberAddedAction {
20070	type Error = &'static str;
20071
20072	fn try_from(value: String) -> Result<Self, &'static str> {
20073		value.parse()
20074	}
20075}
20076#[derive(Clone, Debug, Deserialize, Serialize)]
20077#[serde(deny_unknown_fields)]
20078pub struct OrganizationMemberInvited {
20079	pub action:       OrganizationMemberInvitedAction,
20080	#[serde(default, skip_serializing_if = "Option::is_none")]
20081	pub installation: Option<InstallationLite>,
20082	pub invitation:   OrganizationMemberInvitedInvitation,
20083	pub organization: Organization,
20084	pub sender:       User,
20085	pub user:         User,
20086}
20087impl From<&OrganizationMemberInvited> for OrganizationMemberInvited {
20088	fn from(value: &OrganizationMemberInvited) -> Self {
20089		value.clone()
20090	}
20091}
20092#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20093pub enum OrganizationMemberInvitedAction {
20094	#[serde(rename = "member_invited")]
20095	MemberInvited,
20096}
20097impl From<&OrganizationMemberInvitedAction> for OrganizationMemberInvitedAction {
20098	fn from(value: &OrganizationMemberInvitedAction) -> Self {
20099		value.clone()
20100	}
20101}
20102impl ToString for OrganizationMemberInvitedAction {
20103	fn to_string(&self) -> String {
20104		match *self {
20105			Self::MemberInvited => "member_invited".to_string(),
20106		}
20107	}
20108}
20109impl std::str::FromStr for OrganizationMemberInvitedAction {
20110	type Err = &'static str;
20111
20112	fn from_str(value: &str) -> Result<Self, &'static str> {
20113		match value {
20114			"member_invited" => Ok(Self::MemberInvited),
20115			_ => Err("invalid value"),
20116		}
20117	}
20118}
20119impl std::convert::TryFrom<&str> for OrganizationMemberInvitedAction {
20120	type Error = &'static str;
20121
20122	fn try_from(value: &str) -> Result<Self, &'static str> {
20123		value.parse()
20124	}
20125}
20126impl std::convert::TryFrom<&String> for OrganizationMemberInvitedAction {
20127	type Error = &'static str;
20128
20129	fn try_from(value: &String) -> Result<Self, &'static str> {
20130		value.parse()
20131	}
20132}
20133impl std::convert::TryFrom<String> for OrganizationMemberInvitedAction {
20134	type Error = &'static str;
20135
20136	fn try_from(value: String) -> Result<Self, &'static str> {
20137		value.parse()
20138	}
20139}
20140/// The invitation for the user or email if the action is `member_invited`.
20141#[derive(Clone, Debug, Deserialize, Serialize)]
20142#[serde(deny_unknown_fields)]
20143pub struct OrganizationMemberInvitedInvitation {
20144	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
20145	pub email:                Option<String>,
20146	pub failed_at:            Option<chrono::DateTime<chrono::offset::Utc>>,
20147	pub failed_reason:        Option<String>,
20148	pub id:                   f64,
20149	pub invitation_teams_url: String,
20150	pub inviter:              User,
20151	pub login:                String,
20152	pub node_id:              String,
20153	pub role:                 String,
20154	pub team_count:           f64,
20155}
20156impl From<&OrganizationMemberInvitedInvitation> for OrganizationMemberInvitedInvitation {
20157	fn from(value: &OrganizationMemberInvitedInvitation) -> Self {
20158		value.clone()
20159	}
20160}
20161#[derive(Clone, Debug, Deserialize, Serialize)]
20162#[serde(deny_unknown_fields)]
20163pub struct OrganizationMemberRemoved {
20164	pub action:       OrganizationMemberRemovedAction,
20165	#[serde(default, skip_serializing_if = "Option::is_none")]
20166	pub installation: Option<InstallationLite>,
20167	pub membership:   Membership,
20168	pub organization: Organization,
20169	pub sender:       User,
20170}
20171impl From<&OrganizationMemberRemoved> for OrganizationMemberRemoved {
20172	fn from(value: &OrganizationMemberRemoved) -> Self {
20173		value.clone()
20174	}
20175}
20176#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20177pub enum OrganizationMemberRemovedAction {
20178	#[serde(rename = "member_removed")]
20179	MemberRemoved,
20180}
20181impl From<&OrganizationMemberRemovedAction> for OrganizationMemberRemovedAction {
20182	fn from(value: &OrganizationMemberRemovedAction) -> Self {
20183		value.clone()
20184	}
20185}
20186impl ToString for OrganizationMemberRemovedAction {
20187	fn to_string(&self) -> String {
20188		match *self {
20189			Self::MemberRemoved => "member_removed".to_string(),
20190		}
20191	}
20192}
20193impl std::str::FromStr for OrganizationMemberRemovedAction {
20194	type Err = &'static str;
20195
20196	fn from_str(value: &str) -> Result<Self, &'static str> {
20197		match value {
20198			"member_removed" => Ok(Self::MemberRemoved),
20199			_ => Err("invalid value"),
20200		}
20201	}
20202}
20203impl std::convert::TryFrom<&str> for OrganizationMemberRemovedAction {
20204	type Error = &'static str;
20205
20206	fn try_from(value: &str) -> Result<Self, &'static str> {
20207		value.parse()
20208	}
20209}
20210impl std::convert::TryFrom<&String> for OrganizationMemberRemovedAction {
20211	type Error = &'static str;
20212
20213	fn try_from(value: &String) -> Result<Self, &'static str> {
20214		value.parse()
20215	}
20216}
20217impl std::convert::TryFrom<String> for OrganizationMemberRemovedAction {
20218	type Error = &'static str;
20219
20220	fn try_from(value: String) -> Result<Self, &'static str> {
20221		value.parse()
20222	}
20223}
20224#[derive(Clone, Debug, Deserialize, Serialize)]
20225#[serde(deny_unknown_fields)]
20226pub struct OrganizationRenamed {
20227	pub action:       OrganizationRenamedAction,
20228	pub changes:      OrganizationRenamedChanges,
20229	#[serde(default, skip_serializing_if = "Option::is_none")]
20230	pub installation: Option<InstallationLite>,
20231	pub organization: Organization,
20232	pub sender:       User,
20233}
20234impl From<&OrganizationRenamed> for OrganizationRenamed {
20235	fn from(value: &OrganizationRenamed) -> Self {
20236		value.clone()
20237	}
20238}
20239#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20240pub enum OrganizationRenamedAction {
20241	#[serde(rename = "renamed")]
20242	Renamed,
20243}
20244impl From<&OrganizationRenamedAction> for OrganizationRenamedAction {
20245	fn from(value: &OrganizationRenamedAction) -> Self {
20246		value.clone()
20247	}
20248}
20249impl ToString for OrganizationRenamedAction {
20250	fn to_string(&self) -> String {
20251		match *self {
20252			Self::Renamed => "renamed".to_string(),
20253		}
20254	}
20255}
20256impl std::str::FromStr for OrganizationRenamedAction {
20257	type Err = &'static str;
20258
20259	fn from_str(value: &str) -> Result<Self, &'static str> {
20260		match value {
20261			"renamed" => Ok(Self::Renamed),
20262			_ => Err("invalid value"),
20263		}
20264	}
20265}
20266impl std::convert::TryFrom<&str> for OrganizationRenamedAction {
20267	type Error = &'static str;
20268
20269	fn try_from(value: &str) -> Result<Self, &'static str> {
20270		value.parse()
20271	}
20272}
20273impl std::convert::TryFrom<&String> for OrganizationRenamedAction {
20274	type Error = &'static str;
20275
20276	fn try_from(value: &String) -> Result<Self, &'static str> {
20277		value.parse()
20278	}
20279}
20280impl std::convert::TryFrom<String> for OrganizationRenamedAction {
20281	type Error = &'static str;
20282
20283	fn try_from(value: String) -> Result<Self, &'static str> {
20284		value.parse()
20285	}
20286}
20287#[derive(Clone, Debug, Deserialize, Serialize)]
20288#[serde(deny_unknown_fields)]
20289pub struct OrganizationRenamedChanges {
20290	pub login: OrganizationRenamedChangesLogin,
20291}
20292impl From<&OrganizationRenamedChanges> for OrganizationRenamedChanges {
20293	fn from(value: &OrganizationRenamedChanges) -> Self {
20294		value.clone()
20295	}
20296}
20297#[derive(Clone, Debug, Deserialize, Serialize)]
20298#[serde(deny_unknown_fields)]
20299pub struct OrganizationRenamedChangesLogin {
20300	pub from: String,
20301}
20302impl From<&OrganizationRenamedChangesLogin> for OrganizationRenamedChangesLogin {
20303	fn from(value: &OrganizationRenamedChangesLogin) -> Self {
20304		value.clone()
20305	}
20306}
20307#[derive(Clone, Debug, Deserialize, Serialize)]
20308#[serde(untagged)]
20309pub enum PackageEvent {
20310	Published(PackagePublished),
20311	Updated(PackageUpdated),
20312}
20313impl From<&PackageEvent> for PackageEvent {
20314	fn from(value: &PackageEvent) -> Self {
20315		value.clone()
20316	}
20317}
20318impl From<PackagePublished> for PackageEvent {
20319	fn from(value: PackagePublished) -> Self {
20320		Self::Published(value)
20321	}
20322}
20323impl From<PackageUpdated> for PackageEvent {
20324	fn from(value: PackageUpdated) -> Self {
20325		Self::Updated(value)
20326	}
20327}
20328#[derive(Clone, Debug, Deserialize, Serialize)]
20329#[serde(deny_unknown_fields)]
20330pub struct PackageNpmMetadata {
20331	#[serde(default, skip_serializing_if = "Option::is_none")]
20332	pub author:                Option<std::collections::HashMap<String, String>>,
20333	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20334	pub bin:                   std::collections::HashMap<String, serde_json::Value>,
20335	#[serde(default, skip_serializing_if = "Option::is_none")]
20336	pub bugs:                  Option<std::collections::HashMap<String, String>>,
20337	#[serde(default, skip_serializing_if = "Option::is_none")]
20338	pub commit_oid:            Option<String>,
20339	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20340	pub contributors:          Vec<std::collections::HashMap<String, serde_json::Value>>,
20341	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20342	pub cpu:                   Vec<String>,
20343	#[serde(default, skip_serializing_if = "Option::is_none")]
20344	pub deleted_by_id:         Option<i64>,
20345	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20346	pub dependencies:          std::collections::HashMap<String, String>,
20347	#[serde(default, skip_serializing_if = "Option::is_none")]
20348	pub description:           Option<String>,
20349	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20350	pub dev_dependencies:      std::collections::HashMap<String, String>,
20351	#[serde(default, skip_serializing_if = "Option::is_none")]
20352	pub directories:           Option<std::collections::HashMap<String, String>>,
20353	#[serde(default, skip_serializing_if = "Option::is_none")]
20354	pub dist:                  Option<std::collections::HashMap<String, String>>,
20355	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20356	pub engines:               std::collections::HashMap<String, String>,
20357	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20358	pub files:                 Vec<String>,
20359	#[serde(default, skip_serializing_if = "Option::is_none")]
20360	pub git_head:              Option<String>,
20361	#[serde(default, skip_serializing_if = "Option::is_none")]
20362	pub has_shrinkwrap:        Option<bool>,
20363	#[serde(default, skip_serializing_if = "Option::is_none")]
20364	pub homepage:              Option<String>,
20365	#[serde(default, skip_serializing_if = "Option::is_none")]
20366	pub id:                    Option<String>,
20367	#[serde(default, skip_serializing_if = "Option::is_none")]
20368	pub installation_command:  Option<String>,
20369	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20370	pub keywords:              Vec<String>,
20371	#[serde(default, skip_serializing_if = "Option::is_none")]
20372	pub license:               Option<String>,
20373	#[serde(default, skip_serializing_if = "Option::is_none")]
20374	pub main:                  Option<String>,
20375	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20376	pub maintainers:           Vec<std::collections::HashMap<String, serde_json::Value>>,
20377	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20378	pub man:                   std::collections::HashMap<String, serde_json::Value>,
20379	#[serde(default, skip_serializing_if = "Option::is_none")]
20380	pub name:                  Option<String>,
20381	#[serde(default, skip_serializing_if = "Option::is_none")]
20382	pub node_version:          Option<String>,
20383	#[serde(default, skip_serializing_if = "Option::is_none")]
20384	pub npm_user:              Option<String>,
20385	#[serde(default, skip_serializing_if = "Option::is_none")]
20386	pub npm_version:           Option<String>,
20387	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20388	pub optional_dependencies: std::collections::HashMap<String, String>,
20389	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20390	pub os:                    Vec<String>,
20391	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20392	pub peer_dependencies:     std::collections::HashMap<String, String>,
20393	#[serde(default, skip_serializing_if = "Option::is_none")]
20394	pub published_via_actions: Option<bool>,
20395	#[serde(default, skip_serializing_if = "Option::is_none")]
20396	pub readme:                Option<String>,
20397	#[serde(default, skip_serializing_if = "Option::is_none")]
20398	pub release_id:            Option<i64>,
20399	#[serde(default, skip_serializing_if = "Option::is_none")]
20400	pub repository:            Option<std::collections::HashMap<String, String>>,
20401	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
20402	pub scripts:               std::collections::HashMap<String, serde_json::Value>,
20403	#[serde(default, skip_serializing_if = "Option::is_none")]
20404	pub version:               Option<String>,
20405}
20406impl From<&PackageNpmMetadata> for PackageNpmMetadata {
20407	fn from(value: &PackageNpmMetadata) -> Self {
20408		value.clone()
20409	}
20410}
20411#[derive(Clone, Debug, Deserialize, Serialize)]
20412#[serde(deny_unknown_fields)]
20413pub struct PackageNugetMetadata {
20414	#[serde(default, skip_serializing_if = "Option::is_none")]
20415	pub id:    Option<PackageNugetMetadataId>,
20416	#[serde(default, skip_serializing_if = "Option::is_none")]
20417	pub name:  Option<String>,
20418	#[serde(default, skip_serializing_if = "Option::is_none")]
20419	pub value: Option<PackageNugetMetadataValue>,
20420}
20421impl From<&PackageNugetMetadata> for PackageNugetMetadata {
20422	fn from(value: &PackageNugetMetadata) -> Self {
20423		value.clone()
20424	}
20425}
20426#[derive(Clone, Debug, Deserialize, Serialize)]
20427#[serde(untagged)]
20428pub enum PackageNugetMetadataId {
20429	Variant0(String),
20430	Variant1(std::collections::HashMap<String, serde_json::Value>),
20431	Variant2(i64),
20432}
20433impl From<&PackageNugetMetadataId> for PackageNugetMetadataId {
20434	fn from(value: &PackageNugetMetadataId) -> Self {
20435		value.clone()
20436	}
20437}
20438impl From<std::collections::HashMap<String, serde_json::Value>> for PackageNugetMetadataId {
20439	fn from(value: std::collections::HashMap<String, serde_json::Value>) -> Self {
20440		Self::Variant1(value)
20441	}
20442}
20443impl From<i64> for PackageNugetMetadataId {
20444	fn from(value: i64) -> Self {
20445		Self::Variant2(value)
20446	}
20447}
20448#[derive(Clone, Debug, Deserialize, Serialize)]
20449#[serde(untagged, deny_unknown_fields)]
20450pub enum PackageNugetMetadataValue {
20451	Variant0(bool),
20452	Variant1(String),
20453	Variant2(i64),
20454	Variant3 {
20455		#[serde(default, skip_serializing_if = "Option::is_none")]
20456		branch: Option<String>,
20457		#[serde(default, skip_serializing_if = "Option::is_none")]
20458		commit: Option<String>,
20459		#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
20460		type_:  Option<String>,
20461		#[serde(default, skip_serializing_if = "Option::is_none")]
20462		url:    Option<String>,
20463	},
20464}
20465impl From<&PackageNugetMetadataValue> for PackageNugetMetadataValue {
20466	fn from(value: &PackageNugetMetadataValue) -> Self {
20467		value.clone()
20468	}
20469}
20470impl From<bool> for PackageNugetMetadataValue {
20471	fn from(value: bool) -> Self {
20472		Self::Variant0(value)
20473	}
20474}
20475impl From<i64> for PackageNugetMetadataValue {
20476	fn from(value: i64) -> Self {
20477		Self::Variant2(value)
20478	}
20479}
20480#[derive(Clone, Debug, Deserialize, Serialize)]
20481#[serde(deny_unknown_fields)]
20482pub struct PackagePublished {
20483	pub action:       PackagePublishedAction,
20484	#[serde(default, skip_serializing_if = "Option::is_none")]
20485	pub organization: Option<Organization>,
20486	pub package:      PackagePublishedPackage,
20487	pub repository:   Repository,
20488	pub sender:       User,
20489}
20490impl From<&PackagePublished> for PackagePublished {
20491	fn from(value: &PackagePublished) -> Self {
20492		value.clone()
20493	}
20494}
20495#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20496pub enum PackagePublishedAction {
20497	#[serde(rename = "published")]
20498	Published,
20499}
20500impl From<&PackagePublishedAction> for PackagePublishedAction {
20501	fn from(value: &PackagePublishedAction) -> Self {
20502		value.clone()
20503	}
20504}
20505impl ToString for PackagePublishedAction {
20506	fn to_string(&self) -> String {
20507		match *self {
20508			Self::Published => "published".to_string(),
20509		}
20510	}
20511}
20512impl std::str::FromStr for PackagePublishedAction {
20513	type Err = &'static str;
20514
20515	fn from_str(value: &str) -> Result<Self, &'static str> {
20516		match value {
20517			"published" => Ok(Self::Published),
20518			_ => Err("invalid value"),
20519		}
20520	}
20521}
20522impl std::convert::TryFrom<&str> for PackagePublishedAction {
20523	type Error = &'static str;
20524
20525	fn try_from(value: &str) -> Result<Self, &'static str> {
20526		value.parse()
20527	}
20528}
20529impl std::convert::TryFrom<&String> for PackagePublishedAction {
20530	type Error = &'static str;
20531
20532	fn try_from(value: &String) -> Result<Self, &'static str> {
20533		value.parse()
20534	}
20535}
20536impl std::convert::TryFrom<String> for PackagePublishedAction {
20537	type Error = &'static str;
20538
20539	fn try_from(value: String) -> Result<Self, &'static str> {
20540		value.parse()
20541	}
20542}
20543/// Information about the package.
20544#[derive(Clone, Debug, Deserialize, Serialize)]
20545#[serde(deny_unknown_fields)]
20546pub struct PackagePublishedPackage {
20547	pub created_at:      chrono::DateTime<chrono::offset::Utc>,
20548	pub description:     Option<String>,
20549	pub ecosystem:       String,
20550	pub html_url:        String,
20551	/// Unique identifier of the package.
20552	pub id:              i64,
20553	/// The name of the package.
20554	pub name:            String,
20555	pub namespace:       String,
20556	pub owner:           User,
20557	/// The type of supported package. Packages in GitHub's Gradle registry have
20558	/// the type `maven`. Docker images pushed to GitHub's Container registry
20559	/// (`ghcr.io`) have the type `container`. You can use the type `docker` to
20560	/// find images that were pushed to GitHub's Docker registry
20561	/// (`docker.pkg.github.com`), even if these have now been migrated to the
20562	/// Container registry.
20563	pub package_type:    PackagePublishedPackagePackageType,
20564	/// A version of a software package
20565	pub package_version: Option<PackagePublishedPackagePackageVersion>,
20566	pub registry:        PackagePublishedPackageRegistry,
20567	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
20568}
20569impl From<&PackagePublishedPackage> for PackagePublishedPackage {
20570	fn from(value: &PackagePublishedPackage) -> Self {
20571		value.clone()
20572	}
20573}
20574/// The type of supported package. Packages in GitHub's Gradle registry have the
20575/// type `maven`. Docker images pushed to GitHub's Container registry
20576/// (`ghcr.io`) have the type `container`. You can use the type `docker` to find
20577/// images that were pushed to GitHub's Docker registry
20578/// (`docker.pkg.github.com`), even if these have now been migrated to the
20579/// Container registry.
20580#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20581pub enum PackagePublishedPackagePackageType {
20582	#[serde(rename = "npm")]
20583	Npm,
20584	#[serde(rename = "maven")]
20585	Maven,
20586	#[serde(rename = "rubygems")]
20587	Rubygems,
20588	#[serde(rename = "docker")]
20589	Docker,
20590	#[serde(rename = "nuget")]
20591	Nuget,
20592	#[serde(rename = "CONTAINER")]
20593	Container,
20594}
20595impl From<&PackagePublishedPackagePackageType> for PackagePublishedPackagePackageType {
20596	fn from(value: &PackagePublishedPackagePackageType) -> Self {
20597		value.clone()
20598	}
20599}
20600impl ToString for PackagePublishedPackagePackageType {
20601	fn to_string(&self) -> String {
20602		match *self {
20603			Self::Npm => "npm".to_string(),
20604			Self::Maven => "maven".to_string(),
20605			Self::Rubygems => "rubygems".to_string(),
20606			Self::Docker => "docker".to_string(),
20607			Self::Nuget => "nuget".to_string(),
20608			Self::Container => "CONTAINER".to_string(),
20609		}
20610	}
20611}
20612impl std::str::FromStr for PackagePublishedPackagePackageType {
20613	type Err = &'static str;
20614
20615	fn from_str(value: &str) -> Result<Self, &'static str> {
20616		match value {
20617			"npm" => Ok(Self::Npm),
20618			"maven" => Ok(Self::Maven),
20619			"rubygems" => Ok(Self::Rubygems),
20620			"docker" => Ok(Self::Docker),
20621			"nuget" => Ok(Self::Nuget),
20622			"CONTAINER" => Ok(Self::Container),
20623			_ => Err("invalid value"),
20624		}
20625	}
20626}
20627impl std::convert::TryFrom<&str> for PackagePublishedPackagePackageType {
20628	type Error = &'static str;
20629
20630	fn try_from(value: &str) -> Result<Self, &'static str> {
20631		value.parse()
20632	}
20633}
20634impl std::convert::TryFrom<&String> for PackagePublishedPackagePackageType {
20635	type Error = &'static str;
20636
20637	fn try_from(value: &String) -> Result<Self, &'static str> {
20638		value.parse()
20639	}
20640}
20641impl std::convert::TryFrom<String> for PackagePublishedPackagePackageType {
20642	type Error = &'static str;
20643
20644	fn try_from(value: String) -> Result<Self, &'static str> {
20645		value.parse()
20646	}
20647}
20648#[derive(Clone, Debug, Deserialize, Serialize)]
20649#[serde(deny_unknown_fields)]
20650pub struct PackagePublishedPackagePackageVersion {
20651	#[serde(default, skip_serializing_if = "Option::is_none")]
20652	pub author:               Option<User>,
20653	#[serde(default, skip_serializing_if = "Option::is_none")]
20654	pub body:                 Option<PackagePublishedPackagePackageVersionBody>,
20655	#[serde(default, skip_serializing_if = "Option::is_none")]
20656	pub body_html:            Option<String>,
20657	#[serde(default, skip_serializing_if = "Option::is_none")]
20658	pub container_metadata:   Option<PackagePublishedPackagePackageVersionContainerMetadata>,
20659	#[serde(default, skip_serializing_if = "Option::is_none")]
20660	pub created_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
20661	pub description:          String,
20662	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20663	pub docker_metadata:      Vec<serde_json::Value>,
20664	#[serde(default, skip_serializing_if = "Option::is_none")]
20665	pub draft:                Option<bool>,
20666	pub html_url:             String,
20667	/// Unique identifier of the package version.
20668	pub id:                   i64,
20669	pub installation_command: String,
20670	#[serde(default, skip_serializing_if = "Option::is_none")]
20671	pub manifest:             Option<String>,
20672	/// Package Version Metadata
20673	pub metadata:             Vec<serde_json::Value>,
20674	/// The name of the package version.
20675	pub name:                 String,
20676	#[serde(default, skip_serializing_if = "Option::is_none")]
20677	pub npm_metadata:         Option<PackageNpmMetadata>,
20678	#[serde(default, skip_serializing_if = "Option::is_none")]
20679	pub nuget_metadata:       Option<Vec<PackageNugetMetadata>>,
20680	pub package_files:        Vec<PackagePublishedPackagePackageVersionPackageFilesItem>,
20681	#[serde(default, skip_serializing_if = "Option::is_none")]
20682	pub package_url:          Option<String>,
20683	#[serde(default, skip_serializing_if = "Option::is_none")]
20684	pub prerelease:           Option<bool>,
20685	#[serde(default, skip_serializing_if = "Option::is_none")]
20686	pub release:              Option<PackagePublishedPackagePackageVersionRelease>,
20687	#[serde(default, skip_serializing_if = "Vec::is_empty")]
20688	pub rubygems_metadata:    Vec<serde_json::Value>,
20689	#[serde(default, skip_serializing_if = "Option::is_none")]
20690	pub source_url:           Option<String>,
20691	pub summary:              String,
20692	#[serde(default, skip_serializing_if = "Option::is_none")]
20693	pub tag_name:             Option<String>,
20694	#[serde(default, skip_serializing_if = "Option::is_none")]
20695	pub target_commitish:     Option<String>,
20696	#[serde(default, skip_serializing_if = "Option::is_none")]
20697	pub target_oid:           Option<String>,
20698	#[serde(default, skip_serializing_if = "Option::is_none")]
20699	pub updated_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
20700	pub version:              String,
20701}
20702impl From<&PackagePublishedPackagePackageVersion> for PackagePublishedPackagePackageVersion {
20703	fn from(value: &PackagePublishedPackagePackageVersion) -> Self {
20704		value.clone()
20705	}
20706}
20707#[derive(Clone, Debug, Deserialize, Serialize)]
20708#[serde(untagged, deny_unknown_fields)]
20709pub enum PackagePublishedPackagePackageVersionBody {
20710	Variant0(String),
20711	Variant1 {
20712		attributes: PackagePublishedPackagePackageVersionBodyVariant1Attributes,
20713		#[serde(rename = "_formatted")]
20714		formatted:  bool,
20715		info:       PackagePublishedPackagePackageVersionBodyVariant1Info,
20716		repository: PackagePublishedPackagePackageVersionBodyVariant1Repository,
20717	},
20718}
20719impl From<&PackagePublishedPackagePackageVersionBody>
20720	for PackagePublishedPackagePackageVersionBody
20721{
20722	fn from(value: &PackagePublishedPackagePackageVersionBody) -> Self {
20723		value.clone()
20724	}
20725}
20726#[derive(Clone, Debug, Deserialize, Serialize)]
20727#[serde(deny_unknown_fields)]
20728pub struct PackagePublishedPackagePackageVersionBodyVariant1Attributes {}
20729impl From<&PackagePublishedPackagePackageVersionBodyVariant1Attributes>
20730	for PackagePublishedPackagePackageVersionBodyVariant1Attributes
20731{
20732	fn from(value: &PackagePublishedPackagePackageVersionBodyVariant1Attributes) -> Self {
20733		value.clone()
20734	}
20735}
20736#[derive(Clone, Debug, Deserialize, Serialize)]
20737#[serde(deny_unknown_fields)]
20738pub struct PackagePublishedPackagePackageVersionBodyVariant1Info {
20739	pub collection: bool,
20740	pub mode:       i64,
20741	pub name:       String,
20742	pub oid:        String,
20743	pub path:       String,
20744	pub size:       Option<i64>,
20745	#[serde(rename = "type")]
20746	pub type_:      String,
20747}
20748impl From<&PackagePublishedPackagePackageVersionBodyVariant1Info>
20749	for PackagePublishedPackagePackageVersionBodyVariant1Info
20750{
20751	fn from(value: &PackagePublishedPackagePackageVersionBodyVariant1Info) -> Self {
20752		value.clone()
20753	}
20754}
20755#[derive(Clone, Debug, Deserialize, Serialize)]
20756#[serde(deny_unknown_fields)]
20757pub struct PackagePublishedPackagePackageVersionBodyVariant1Repository {
20758	pub repository: Repository,
20759}
20760impl From<&PackagePublishedPackagePackageVersionBodyVariant1Repository>
20761	for PackagePublishedPackagePackageVersionBodyVariant1Repository
20762{
20763	fn from(value: &PackagePublishedPackagePackageVersionBodyVariant1Repository) -> Self {
20764		value.clone()
20765	}
20766}
20767#[derive(Clone, Debug, Deserialize, Serialize)]
20768#[serde(deny_unknown_fields)]
20769pub struct PackagePublishedPackagePackageVersionContainerMetadata {
20770	#[serde(default, skip_serializing_if = "Option::is_none")]
20771	pub labels:   Option<std::collections::HashMap<String, serde_json::Value>>,
20772	#[serde(default, skip_serializing_if = "Option::is_none")]
20773	pub manifest: Option<std::collections::HashMap<String, serde_json::Value>>,
20774	#[serde(default, skip_serializing_if = "Option::is_none")]
20775	pub tag:      Option<PackagePublishedPackagePackageVersionContainerMetadataTag>,
20776}
20777impl From<&PackagePublishedPackagePackageVersionContainerMetadata>
20778	for PackagePublishedPackagePackageVersionContainerMetadata
20779{
20780	fn from(value: &PackagePublishedPackagePackageVersionContainerMetadata) -> Self {
20781		value.clone()
20782	}
20783}
20784#[derive(Clone, Debug, Deserialize, Serialize)]
20785#[serde(deny_unknown_fields)]
20786pub struct PackagePublishedPackagePackageVersionContainerMetadataTag {
20787	#[serde(default, skip_serializing_if = "Option::is_none")]
20788	pub digest: Option<String>,
20789	#[serde(default, skip_serializing_if = "Option::is_none")]
20790	pub name:   Option<String>,
20791}
20792impl From<&PackagePublishedPackagePackageVersionContainerMetadataTag>
20793	for PackagePublishedPackagePackageVersionContainerMetadataTag
20794{
20795	fn from(value: &PackagePublishedPackagePackageVersionContainerMetadataTag) -> Self {
20796		value.clone()
20797	}
20798}
20799#[derive(Clone, Debug, Deserialize, Serialize)]
20800#[serde(deny_unknown_fields)]
20801pub struct PackagePublishedPackagePackageVersionPackageFilesItem {
20802	pub content_type: String,
20803	pub created_at:   chrono::DateTime<chrono::offset::Utc>,
20804	pub download_url: String,
20805	pub id:           i64,
20806	pub md5:          String,
20807	pub name:         String,
20808	pub sha1:         String,
20809	pub sha256:       String,
20810	pub size:         i64,
20811	pub state:        String,
20812	pub updated_at:   chrono::DateTime<chrono::offset::Utc>,
20813}
20814impl From<&PackagePublishedPackagePackageVersionPackageFilesItem>
20815	for PackagePublishedPackagePackageVersionPackageFilesItem
20816{
20817	fn from(value: &PackagePublishedPackagePackageVersionPackageFilesItem) -> Self {
20818		value.clone()
20819	}
20820}
20821#[derive(Clone, Debug, Deserialize, Serialize)]
20822#[serde(deny_unknown_fields)]
20823pub struct PackagePublishedPackagePackageVersionRelease {
20824	pub author:           User,
20825	pub created_at:       chrono::DateTime<chrono::offset::Utc>,
20826	pub draft:            bool,
20827	pub html_url:         String,
20828	pub id:               i64,
20829	pub name:             String,
20830	pub prerelease:       bool,
20831	pub published_at:     chrono::DateTime<chrono::offset::Utc>,
20832	pub tag_name:         String,
20833	pub target_commitish: String,
20834	pub url:              String,
20835}
20836impl From<&PackagePublishedPackagePackageVersionRelease>
20837	for PackagePublishedPackagePackageVersionRelease
20838{
20839	fn from(value: &PackagePublishedPackagePackageVersionRelease) -> Self {
20840		value.clone()
20841	}
20842}
20843#[derive(Clone, Debug, Deserialize, Serialize)]
20844#[serde(deny_unknown_fields)]
20845pub struct PackagePublishedPackageRegistry {
20846	pub about_url: String,
20847	pub name:      String,
20848	#[serde(rename = "type")]
20849	pub type_:     String,
20850	pub url:       String,
20851	pub vendor:    String,
20852}
20853impl From<&PackagePublishedPackageRegistry> for PackagePublishedPackageRegistry {
20854	fn from(value: &PackagePublishedPackageRegistry) -> Self {
20855		value.clone()
20856	}
20857}
20858#[derive(Clone, Debug, Deserialize, Serialize)]
20859#[serde(deny_unknown_fields)]
20860pub struct PackageUpdated {
20861	pub action:       PackageUpdatedAction,
20862	#[serde(default, skip_serializing_if = "Option::is_none")]
20863	pub organization: Option<Organization>,
20864	pub package:      PackageUpdatedPackage,
20865	pub repository:   Repository,
20866	pub sender:       User,
20867}
20868impl From<&PackageUpdated> for PackageUpdated {
20869	fn from(value: &PackageUpdated) -> Self {
20870		value.clone()
20871	}
20872}
20873#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20874pub enum PackageUpdatedAction {
20875	#[serde(rename = "updated")]
20876	Updated,
20877}
20878impl From<&PackageUpdatedAction> for PackageUpdatedAction {
20879	fn from(value: &PackageUpdatedAction) -> Self {
20880		value.clone()
20881	}
20882}
20883impl ToString for PackageUpdatedAction {
20884	fn to_string(&self) -> String {
20885		match *self {
20886			Self::Updated => "updated".to_string(),
20887		}
20888	}
20889}
20890impl std::str::FromStr for PackageUpdatedAction {
20891	type Err = &'static str;
20892
20893	fn from_str(value: &str) -> Result<Self, &'static str> {
20894		match value {
20895			"updated" => Ok(Self::Updated),
20896			_ => Err("invalid value"),
20897		}
20898	}
20899}
20900impl std::convert::TryFrom<&str> for PackageUpdatedAction {
20901	type Error = &'static str;
20902
20903	fn try_from(value: &str) -> Result<Self, &'static str> {
20904		value.parse()
20905	}
20906}
20907impl std::convert::TryFrom<&String> for PackageUpdatedAction {
20908	type Error = &'static str;
20909
20910	fn try_from(value: &String) -> Result<Self, &'static str> {
20911		value.parse()
20912	}
20913}
20914impl std::convert::TryFrom<String> for PackageUpdatedAction {
20915	type Error = &'static str;
20916
20917	fn try_from(value: String) -> Result<Self, &'static str> {
20918		value.parse()
20919	}
20920}
20921/// Information about the package.
20922#[derive(Clone, Debug, Deserialize, Serialize)]
20923#[serde(deny_unknown_fields)]
20924pub struct PackageUpdatedPackage {
20925	pub created_at:      chrono::DateTime<chrono::offset::Utc>,
20926	pub description:     Option<String>,
20927	pub ecosystem:       String,
20928	pub html_url:        String,
20929	/// Unique identifier of the package.
20930	pub id:              i64,
20931	/// The name of the package.
20932	pub name:            String,
20933	pub namespace:       String,
20934	pub owner:           User,
20935	pub package_type:    PackageUpdatedPackagePackageType,
20936	/// A version of a software package
20937	pub package_version: Option<PackageUpdatedPackagePackageVersion>,
20938	pub registry:        PackageUpdatedPackageRegistry,
20939	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
20940}
20941impl From<&PackageUpdatedPackage> for PackageUpdatedPackage {
20942	fn from(value: &PackageUpdatedPackage) -> Self {
20943		value.clone()
20944	}
20945}
20946#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
20947pub enum PackageUpdatedPackagePackageType {
20948	#[serde(rename = "npm")]
20949	Npm,
20950	#[serde(rename = "maven")]
20951	Maven,
20952	#[serde(rename = "rubygems")]
20953	Rubygems,
20954	#[serde(rename = "docker")]
20955	Docker,
20956	#[serde(rename = "nuget")]
20957	Nuget,
20958	#[serde(rename = "CONTAINER")]
20959	Container,
20960}
20961impl From<&PackageUpdatedPackagePackageType> for PackageUpdatedPackagePackageType {
20962	fn from(value: &PackageUpdatedPackagePackageType) -> Self {
20963		value.clone()
20964	}
20965}
20966impl ToString for PackageUpdatedPackagePackageType {
20967	fn to_string(&self) -> String {
20968		match *self {
20969			Self::Npm => "npm".to_string(),
20970			Self::Maven => "maven".to_string(),
20971			Self::Rubygems => "rubygems".to_string(),
20972			Self::Docker => "docker".to_string(),
20973			Self::Nuget => "nuget".to_string(),
20974			Self::Container => "CONTAINER".to_string(),
20975		}
20976	}
20977}
20978impl std::str::FromStr for PackageUpdatedPackagePackageType {
20979	type Err = &'static str;
20980
20981	fn from_str(value: &str) -> Result<Self, &'static str> {
20982		match value {
20983			"npm" => Ok(Self::Npm),
20984			"maven" => Ok(Self::Maven),
20985			"rubygems" => Ok(Self::Rubygems),
20986			"docker" => Ok(Self::Docker),
20987			"nuget" => Ok(Self::Nuget),
20988			"CONTAINER" => Ok(Self::Container),
20989			_ => Err("invalid value"),
20990		}
20991	}
20992}
20993impl std::convert::TryFrom<&str> for PackageUpdatedPackagePackageType {
20994	type Error = &'static str;
20995
20996	fn try_from(value: &str) -> Result<Self, &'static str> {
20997		value.parse()
20998	}
20999}
21000impl std::convert::TryFrom<&String> for PackageUpdatedPackagePackageType {
21001	type Error = &'static str;
21002
21003	fn try_from(value: &String) -> Result<Self, &'static str> {
21004		value.parse()
21005	}
21006}
21007impl std::convert::TryFrom<String> for PackageUpdatedPackagePackageType {
21008	type Error = &'static str;
21009
21010	fn try_from(value: String) -> Result<Self, &'static str> {
21011		value.parse()
21012	}
21013}
21014#[derive(Clone, Debug, Deserialize, Serialize)]
21015#[serde(deny_unknown_fields)]
21016pub struct PackageUpdatedPackagePackageVersion {
21017	#[serde(default, skip_serializing_if = "Option::is_none")]
21018	pub author:               Option<User>,
21019	#[serde(default, skip_serializing_if = "Option::is_none")]
21020	pub body:                 Option<PackageUpdatedPackagePackageVersionBody>,
21021	#[serde(default, skip_serializing_if = "Option::is_none")]
21022	pub body_html:            Option<String>,
21023	#[serde(default, skip_serializing_if = "Option::is_none")]
21024	pub container_metadata:   Option<PackageUpdatedPackagePackageVersionContainerMetadata>,
21025	#[serde(default, skip_serializing_if = "Option::is_none")]
21026	pub created_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
21027	pub description:          String,
21028	#[serde(default, skip_serializing_if = "Vec::is_empty")]
21029	pub docker_metadata:      Vec<serde_json::Value>,
21030	#[serde(default, skip_serializing_if = "Option::is_none")]
21031	pub draft:                Option<bool>,
21032	pub html_url:             String,
21033	/// Unique identifier of the package version.
21034	pub id:                   i64,
21035	pub installation_command: String,
21036	#[serde(default, skip_serializing_if = "Option::is_none")]
21037	pub manifest:             Option<String>,
21038	/// Package Version Metadata
21039	pub metadata:             Vec<serde_json::Value>,
21040	/// The name of the package version.
21041	pub name:                 String,
21042	#[serde(default, skip_serializing_if = "Option::is_none")]
21043	pub npm_metadata:         Option<PackageNpmMetadata>,
21044	#[serde(default, skip_serializing_if = "Option::is_none")]
21045	pub nuget_metadata:       Option<Vec<PackageNugetMetadata>>,
21046	pub package_files:        Vec<PackageUpdatedPackagePackageVersionPackageFilesItem>,
21047	#[serde(default, skip_serializing_if = "Option::is_none")]
21048	pub package_url:          Option<String>,
21049	#[serde(default, skip_serializing_if = "Option::is_none")]
21050	pub prerelease:           Option<bool>,
21051	#[serde(default, skip_serializing_if = "Option::is_none")]
21052	pub release:              Option<PackageUpdatedPackagePackageVersionRelease>,
21053	#[serde(default, skip_serializing_if = "Vec::is_empty")]
21054	pub rubygems_metadata:    Vec<serde_json::Value>,
21055	#[serde(default, skip_serializing_if = "Option::is_none")]
21056	pub source_url:           Option<String>,
21057	pub summary:              String,
21058	#[serde(default, skip_serializing_if = "Option::is_none")]
21059	pub tag_name:             Option<String>,
21060	#[serde(default, skip_serializing_if = "Option::is_none")]
21061	pub target_commitish:     Option<String>,
21062	#[serde(default, skip_serializing_if = "Option::is_none")]
21063	pub target_oid:           Option<String>,
21064	#[serde(default, skip_serializing_if = "Option::is_none")]
21065	pub updated_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
21066	pub version:              String,
21067}
21068impl From<&PackageUpdatedPackagePackageVersion> for PackageUpdatedPackagePackageVersion {
21069	fn from(value: &PackageUpdatedPackagePackageVersion) -> Self {
21070		value.clone()
21071	}
21072}
21073#[derive(Clone, Debug, Deserialize, Serialize)]
21074#[serde(untagged, deny_unknown_fields)]
21075pub enum PackageUpdatedPackagePackageVersionBody {
21076	Variant0(String),
21077	Variant1 {
21078		attributes: PackageUpdatedPackagePackageVersionBodyVariant1Attributes,
21079		#[serde(rename = "_formatted")]
21080		formatted:  bool,
21081		info:       PackageUpdatedPackagePackageVersionBodyVariant1Info,
21082		repository: PackageUpdatedPackagePackageVersionBodyVariant1Repository,
21083	},
21084}
21085impl From<&PackageUpdatedPackagePackageVersionBody> for PackageUpdatedPackagePackageVersionBody {
21086	fn from(value: &PackageUpdatedPackagePackageVersionBody) -> Self {
21087		value.clone()
21088	}
21089}
21090#[derive(Clone, Debug, Deserialize, Serialize)]
21091#[serde(deny_unknown_fields)]
21092pub struct PackageUpdatedPackagePackageVersionBodyVariant1Attributes {}
21093impl From<&PackageUpdatedPackagePackageVersionBodyVariant1Attributes>
21094	for PackageUpdatedPackagePackageVersionBodyVariant1Attributes
21095{
21096	fn from(value: &PackageUpdatedPackagePackageVersionBodyVariant1Attributes) -> Self {
21097		value.clone()
21098	}
21099}
21100#[derive(Clone, Debug, Deserialize, Serialize)]
21101#[serde(deny_unknown_fields)]
21102pub struct PackageUpdatedPackagePackageVersionBodyVariant1Info {
21103	pub collection: bool,
21104	pub mode:       i64,
21105	pub name:       String,
21106	pub oid:        String,
21107	pub path:       String,
21108	pub size:       Option<i64>,
21109	#[serde(rename = "type")]
21110	pub type_:      String,
21111}
21112impl From<&PackageUpdatedPackagePackageVersionBodyVariant1Info>
21113	for PackageUpdatedPackagePackageVersionBodyVariant1Info
21114{
21115	fn from(value: &PackageUpdatedPackagePackageVersionBodyVariant1Info) -> Self {
21116		value.clone()
21117	}
21118}
21119#[derive(Clone, Debug, Deserialize, Serialize)]
21120#[serde(deny_unknown_fields)]
21121pub struct PackageUpdatedPackagePackageVersionBodyVariant1Repository {
21122	pub repository: Repository,
21123}
21124impl From<&PackageUpdatedPackagePackageVersionBodyVariant1Repository>
21125	for PackageUpdatedPackagePackageVersionBodyVariant1Repository
21126{
21127	fn from(value: &PackageUpdatedPackagePackageVersionBodyVariant1Repository) -> Self {
21128		value.clone()
21129	}
21130}
21131#[derive(Clone, Debug, Deserialize, Serialize)]
21132#[serde(deny_unknown_fields)]
21133pub struct PackageUpdatedPackagePackageVersionContainerMetadata {
21134	#[serde(default, skip_serializing_if = "Option::is_none")]
21135	pub labels:   Option<std::collections::HashMap<String, serde_json::Value>>,
21136	#[serde(default, skip_serializing_if = "Option::is_none")]
21137	pub manifest: Option<std::collections::HashMap<String, serde_json::Value>>,
21138	#[serde(default, skip_serializing_if = "Option::is_none")]
21139	pub tag:      Option<PackageUpdatedPackagePackageVersionContainerMetadataTag>,
21140}
21141impl From<&PackageUpdatedPackagePackageVersionContainerMetadata>
21142	for PackageUpdatedPackagePackageVersionContainerMetadata
21143{
21144	fn from(value: &PackageUpdatedPackagePackageVersionContainerMetadata) -> Self {
21145		value.clone()
21146	}
21147}
21148#[derive(Clone, Debug, Deserialize, Serialize)]
21149#[serde(deny_unknown_fields)]
21150pub struct PackageUpdatedPackagePackageVersionContainerMetadataTag {
21151	#[serde(default, skip_serializing_if = "Option::is_none")]
21152	pub digest: Option<String>,
21153	#[serde(default, skip_serializing_if = "Option::is_none")]
21154	pub name:   Option<String>,
21155}
21156impl From<&PackageUpdatedPackagePackageVersionContainerMetadataTag>
21157	for PackageUpdatedPackagePackageVersionContainerMetadataTag
21158{
21159	fn from(value: &PackageUpdatedPackagePackageVersionContainerMetadataTag) -> Self {
21160		value.clone()
21161	}
21162}
21163#[derive(Clone, Debug, Deserialize, Serialize)]
21164#[serde(deny_unknown_fields)]
21165pub struct PackageUpdatedPackagePackageVersionPackageFilesItem {
21166	pub content_type: String,
21167	pub created_at:   chrono::DateTime<chrono::offset::Utc>,
21168	pub download_url: String,
21169	pub id:           i64,
21170	pub md5:          String,
21171	pub name:         String,
21172	pub sha1:         String,
21173	pub sha256:       String,
21174	pub size:         i64,
21175	pub state:        String,
21176	pub updated_at:   chrono::DateTime<chrono::offset::Utc>,
21177}
21178impl From<&PackageUpdatedPackagePackageVersionPackageFilesItem>
21179	for PackageUpdatedPackagePackageVersionPackageFilesItem
21180{
21181	fn from(value: &PackageUpdatedPackagePackageVersionPackageFilesItem) -> Self {
21182		value.clone()
21183	}
21184}
21185#[derive(Clone, Debug, Deserialize, Serialize)]
21186#[serde(deny_unknown_fields)]
21187pub struct PackageUpdatedPackagePackageVersionRelease {
21188	pub author:           User,
21189	pub created_at:       chrono::DateTime<chrono::offset::Utc>,
21190	pub draft:            bool,
21191	pub html_url:         String,
21192	pub id:               i64,
21193	pub name:             String,
21194	pub prerelease:       bool,
21195	pub published_at:     chrono::DateTime<chrono::offset::Utc>,
21196	pub tag_name:         String,
21197	pub target_commitish: String,
21198	pub url:              String,
21199}
21200impl From<&PackageUpdatedPackagePackageVersionRelease>
21201	for PackageUpdatedPackagePackageVersionRelease
21202{
21203	fn from(value: &PackageUpdatedPackagePackageVersionRelease) -> Self {
21204		value.clone()
21205	}
21206}
21207#[derive(Clone, Debug, Deserialize, Serialize)]
21208#[serde(deny_unknown_fields)]
21209pub struct PackageUpdatedPackageRegistry {
21210	pub about_url: String,
21211	pub name:      String,
21212	#[serde(rename = "type")]
21213	pub type_:     String,
21214	pub url:       String,
21215	pub vendor:    String,
21216}
21217impl From<&PackageUpdatedPackageRegistry> for PackageUpdatedPackageRegistry {
21218	fn from(value: &PackageUpdatedPackageRegistry) -> Self {
21219		value.clone()
21220	}
21221}
21222/// Page Build
21223#[derive(Clone, Debug, Deserialize, Serialize)]
21224#[serde(deny_unknown_fields)]
21225pub struct PageBuildEvent {
21226	pub build:        PageBuildEventBuild,
21227	pub id:           i64,
21228	#[serde(default, skip_serializing_if = "Option::is_none")]
21229	pub installation: Option<InstallationLite>,
21230	#[serde(default, skip_serializing_if = "Option::is_none")]
21231	pub organization: Option<Organization>,
21232	pub repository:   Repository,
21233	pub sender:       User,
21234}
21235impl From<&PageBuildEvent> for PageBuildEvent {
21236	fn from(value: &PageBuildEvent) -> Self {
21237		value.clone()
21238	}
21239}
21240/// The [List GitHub Pages builds](https://docs.github.com/en/rest/reference/repos#list-github-pages-builds) itself.
21241#[derive(Clone, Debug, Deserialize, Serialize)]
21242#[serde(deny_unknown_fields)]
21243pub struct PageBuildEventBuild {
21244	pub commit:     String,
21245	pub created_at: chrono::DateTime<chrono::offset::Utc>,
21246	pub duration:   i64,
21247	pub error:      PageBuildEventBuildError,
21248	pub pusher:     User,
21249	pub status:     String,
21250	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
21251	pub url:        String,
21252}
21253impl From<&PageBuildEventBuild> for PageBuildEventBuild {
21254	fn from(value: &PageBuildEventBuild) -> Self {
21255		value.clone()
21256	}
21257}
21258#[derive(Clone, Debug, Deserialize, Serialize)]
21259#[serde(deny_unknown_fields)]
21260pub struct PageBuildEventBuildError {
21261	pub message: Option<String>,
21262}
21263impl From<&PageBuildEventBuildError> for PageBuildEventBuildError {
21264	fn from(value: &PageBuildEventBuildError) -> Self {
21265		value.clone()
21266	}
21267}
21268#[derive(Clone, Debug, Deserialize, Serialize)]
21269#[serde(deny_unknown_fields)]
21270pub struct PingEvent {
21271	pub hook:         PingEventHook,
21272	/// The ID of the webhook that triggered the ping.
21273	pub hook_id:      i64,
21274	#[serde(default, skip_serializing_if = "Option::is_none")]
21275	pub organization: Option<Organization>,
21276	#[serde(default, skip_serializing_if = "Option::is_none")]
21277	pub repository:   Option<Repository>,
21278	#[serde(default, skip_serializing_if = "Option::is_none")]
21279	pub sender:       Option<User>,
21280	pub zen:          String,
21281}
21282impl From<&PingEvent> for PingEvent {
21283	fn from(value: &PingEvent) -> Self {
21284		value.clone()
21285	}
21286}
21287/// The [webhook configuration](https://docs.github.com/en/rest/reference/repos#get-a-repository-webhook).
21288#[derive(Clone, Debug, Deserialize, Serialize)]
21289#[serde(deny_unknown_fields)]
21290pub struct PingEventHook {
21291	pub active:         bool,
21292	/// When you register a new GitHub App, GitHub sends a ping event to the **webhook URL** you specified during registration. The event contains the `app_id`, which is required for [authenticating](https://docs.github.com/en/apps/building-integrations/setting-up-and-registering-github-apps/about-authentication-options-for-github-apps) an app.
21293	#[serde(default, skip_serializing_if = "Option::is_none")]
21294	pub app_id:         Option<i64>,
21295	pub config:         PingEventHookConfig,
21296	pub created_at:     chrono::DateTime<chrono::offset::Utc>,
21297	pub deliveries_url: String,
21298	pub events:         WebhookEvents,
21299	pub id:             i64,
21300	#[serde(default, skip_serializing_if = "Option::is_none")]
21301	pub last_response:  Option<PingEventHookLastResponse>,
21302	pub name:           String,
21303	pub ping_url:       String,
21304	#[serde(default, skip_serializing_if = "Option::is_none")]
21305	pub test_url:       Option<String>,
21306	#[serde(rename = "type")]
21307	pub type_:          PingEventHookType,
21308	pub updated_at:     chrono::DateTime<chrono::offset::Utc>,
21309	pub url:            String,
21310}
21311impl From<&PingEventHook> for PingEventHook {
21312	fn from(value: &PingEventHook) -> Self {
21313		value.clone()
21314	}
21315}
21316/// Configuration object of the webhook
21317#[derive(Clone, Debug, Deserialize, Serialize)]
21318#[serde(deny_unknown_fields)]
21319pub struct PingEventHookConfig {
21320	/// The media type used to serialize the payloads. Supported values include
21321	/// `json` and `form`. The default is `form`.
21322	pub content_type: PingEventHookConfigContentType,
21323	/// Determines whether the SSL certificate of the host for `url` will be
21324	/// verified when delivering payloads. Supported values include `0`
21325	/// (verification is performed) and `1` (verification is not performed). The
21326	/// default is `0`.
21327	pub insecure_ssl: PingEventHookConfigInsecureSsl,
21328	/// If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers).
21329	#[serde(default, skip_serializing_if = "Option::is_none")]
21330	pub secret:       Option<String>,
21331	/// The URL to which the payloads will be delivered.
21332	pub url:          String,
21333}
21334impl From<&PingEventHookConfig> for PingEventHookConfig {
21335	fn from(value: &PingEventHookConfig) -> Self {
21336		value.clone()
21337	}
21338}
21339/// The media type used to serialize the payloads. Supported values include
21340/// `json` and `form`. The default is `form`.
21341#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21342pub enum PingEventHookConfigContentType {
21343	#[serde(rename = "json")]
21344	Json,
21345	#[serde(rename = "form")]
21346	Form,
21347}
21348impl From<&PingEventHookConfigContentType> for PingEventHookConfigContentType {
21349	fn from(value: &PingEventHookConfigContentType) -> Self {
21350		value.clone()
21351	}
21352}
21353impl ToString for PingEventHookConfigContentType {
21354	fn to_string(&self) -> String {
21355		match *self {
21356			Self::Json => "json".to_string(),
21357			Self::Form => "form".to_string(),
21358		}
21359	}
21360}
21361impl std::str::FromStr for PingEventHookConfigContentType {
21362	type Err = &'static str;
21363
21364	fn from_str(value: &str) -> Result<Self, &'static str> {
21365		match value {
21366			"json" => Ok(Self::Json),
21367			"form" => Ok(Self::Form),
21368			_ => Err("invalid value"),
21369		}
21370	}
21371}
21372impl std::convert::TryFrom<&str> for PingEventHookConfigContentType {
21373	type Error = &'static str;
21374
21375	fn try_from(value: &str) -> Result<Self, &'static str> {
21376		value.parse()
21377	}
21378}
21379impl std::convert::TryFrom<&String> for PingEventHookConfigContentType {
21380	type Error = &'static str;
21381
21382	fn try_from(value: &String) -> Result<Self, &'static str> {
21383		value.parse()
21384	}
21385}
21386impl std::convert::TryFrom<String> for PingEventHookConfigContentType {
21387	type Error = &'static str;
21388
21389	fn try_from(value: String) -> Result<Self, &'static str> {
21390		value.parse()
21391	}
21392}
21393/// Determines whether the SSL certificate of the host for `url` will be
21394/// verified when delivering payloads. Supported values include `0`
21395/// (verification is performed) and `1` (verification is not performed). The
21396/// default is `0`.
21397#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21398pub enum PingEventHookConfigInsecureSsl {
21399	#[serde(rename = "0")]
21400	_0,
21401	#[serde(rename = "1")]
21402	_1,
21403}
21404impl From<&PingEventHookConfigInsecureSsl> for PingEventHookConfigInsecureSsl {
21405	fn from(value: &PingEventHookConfigInsecureSsl) -> Self {
21406		value.clone()
21407	}
21408}
21409impl ToString for PingEventHookConfigInsecureSsl {
21410	fn to_string(&self) -> String {
21411		match *self {
21412			Self::_0 => "0".to_string(),
21413			Self::_1 => "1".to_string(),
21414		}
21415	}
21416}
21417impl std::str::FromStr for PingEventHookConfigInsecureSsl {
21418	type Err = &'static str;
21419
21420	fn from_str(value: &str) -> Result<Self, &'static str> {
21421		match value {
21422			"0" => Ok(Self::_0),
21423			"1" => Ok(Self::_1),
21424			_ => Err("invalid value"),
21425		}
21426	}
21427}
21428impl std::convert::TryFrom<&str> for PingEventHookConfigInsecureSsl {
21429	type Error = &'static str;
21430
21431	fn try_from(value: &str) -> Result<Self, &'static str> {
21432		value.parse()
21433	}
21434}
21435impl std::convert::TryFrom<&String> for PingEventHookConfigInsecureSsl {
21436	type Error = &'static str;
21437
21438	fn try_from(value: &String) -> Result<Self, &'static str> {
21439		value.parse()
21440	}
21441}
21442impl std::convert::TryFrom<String> for PingEventHookConfigInsecureSsl {
21443	type Error = &'static str;
21444
21445	fn try_from(value: String) -> Result<Self, &'static str> {
21446		value.parse()
21447	}
21448}
21449#[derive(Clone, Debug, Deserialize, Serialize)]
21450#[serde(deny_unknown_fields)]
21451pub struct PingEventHookLastResponse {
21452	pub code:    (),
21453	pub message: (),
21454	pub status:  String,
21455}
21456impl From<&PingEventHookLastResponse> for PingEventHookLastResponse {
21457	fn from(value: &PingEventHookLastResponse) -> Self {
21458		value.clone()
21459	}
21460}
21461#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21462pub enum PingEventHookType {
21463	Repository,
21464	Organization,
21465	App,
21466}
21467impl From<&PingEventHookType> for PingEventHookType {
21468	fn from(value: &PingEventHookType) -> Self {
21469		value.clone()
21470	}
21471}
21472impl ToString for PingEventHookType {
21473	fn to_string(&self) -> String {
21474		match *self {
21475			Self::Repository => "Repository".to_string(),
21476			Self::Organization => "Organization".to_string(),
21477			Self::App => "App".to_string(),
21478		}
21479	}
21480}
21481impl std::str::FromStr for PingEventHookType {
21482	type Err = &'static str;
21483
21484	fn from_str(value: &str) -> Result<Self, &'static str> {
21485		match value {
21486			"Repository" => Ok(Self::Repository),
21487			"Organization" => Ok(Self::Organization),
21488			"App" => Ok(Self::App),
21489			_ => Err("invalid value"),
21490		}
21491	}
21492}
21493impl std::convert::TryFrom<&str> for PingEventHookType {
21494	type Error = &'static str;
21495
21496	fn try_from(value: &str) -> Result<Self, &'static str> {
21497		value.parse()
21498	}
21499}
21500impl std::convert::TryFrom<&String> for PingEventHookType {
21501	type Error = &'static str;
21502
21503	fn try_from(value: &String) -> Result<Self, &'static str> {
21504		value.parse()
21505	}
21506}
21507impl std::convert::TryFrom<String> for PingEventHookType {
21508	type Error = &'static str;
21509
21510	fn try_from(value: String) -> Result<Self, &'static str> {
21511		value.parse()
21512	}
21513}
21514#[derive(Clone, Debug, Deserialize, Serialize)]
21515#[serde(deny_unknown_fields)]
21516pub struct Project {
21517	/// Body of the project
21518	pub body:        Option<String>,
21519	pub columns_url: String,
21520	pub created_at:  chrono::DateTime<chrono::offset::Utc>,
21521	pub creator:     User,
21522	pub html_url:    String,
21523	pub id:          i64,
21524	/// Name of the project
21525	pub name:        String,
21526	pub node_id:     String,
21527	pub number:      i64,
21528	pub owner_url:   String,
21529	/// State of the project; either 'open' or 'closed'
21530	pub state:       ProjectState,
21531	pub updated_at:  chrono::DateTime<chrono::offset::Utc>,
21532	pub url:         String,
21533}
21534impl From<&Project> for Project {
21535	fn from(value: &Project) -> Self {
21536		value.clone()
21537	}
21538}
21539#[derive(Clone, Debug, Deserialize, Serialize)]
21540#[serde(deny_unknown_fields)]
21541pub struct ProjectCard {
21542	#[serde(default, skip_serializing_if = "Option::is_none")]
21543	pub after_id:    Option<ProjectCardAfterId>,
21544	/// Whether or not the card is archived
21545	pub archived:    bool,
21546	pub column_id:   i64,
21547	pub column_url:  String,
21548	#[serde(default, skip_serializing_if = "Option::is_none")]
21549	pub content_url: Option<String>,
21550	pub created_at:  chrono::DateTime<chrono::offset::Utc>,
21551	pub creator:     User,
21552	/// The project card's ID
21553	pub id:          i64,
21554	pub node_id:     String,
21555	pub note:        Option<String>,
21556	pub project_url: String,
21557	pub updated_at:  chrono::DateTime<chrono::offset::Utc>,
21558	pub url:         String,
21559}
21560impl From<&ProjectCard> for ProjectCard {
21561	fn from(value: &ProjectCard) -> Self {
21562		value.clone()
21563	}
21564}
21565#[derive(Clone, Debug, Deserialize, Serialize)]
21566#[serde(untagged)]
21567pub enum ProjectCardAfterId {
21568	Variant0(String),
21569	Variant1(f64),
21570	Variant2,
21571}
21572impl From<&ProjectCardAfterId> for ProjectCardAfterId {
21573	fn from(value: &ProjectCardAfterId) -> Self {
21574		value.clone()
21575	}
21576}
21577impl From<f64> for ProjectCardAfterId {
21578	fn from(value: f64) -> Self {
21579		Self::Variant1(value)
21580	}
21581}
21582#[derive(Clone, Debug, Deserialize, Serialize)]
21583#[serde(deny_unknown_fields)]
21584pub struct ProjectCardConverted {
21585	pub action:       ProjectCardConvertedAction,
21586	pub changes:      ProjectCardConvertedChanges,
21587	#[serde(default, skip_serializing_if = "Option::is_none")]
21588	pub installation: Option<InstallationLite>,
21589	#[serde(default, skip_serializing_if = "Option::is_none")]
21590	pub organization: Option<Organization>,
21591	pub project_card: ProjectCard,
21592	#[serde(default, skip_serializing_if = "Option::is_none")]
21593	pub repository:   Option<Repository>,
21594	pub sender:       User,
21595}
21596impl From<&ProjectCardConverted> for ProjectCardConverted {
21597	fn from(value: &ProjectCardConverted) -> Self {
21598		value.clone()
21599	}
21600}
21601#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21602pub enum ProjectCardConvertedAction {
21603	#[serde(rename = "converted")]
21604	Converted,
21605}
21606impl From<&ProjectCardConvertedAction> for ProjectCardConvertedAction {
21607	fn from(value: &ProjectCardConvertedAction) -> Self {
21608		value.clone()
21609	}
21610}
21611impl ToString for ProjectCardConvertedAction {
21612	fn to_string(&self) -> String {
21613		match *self {
21614			Self::Converted => "converted".to_string(),
21615		}
21616	}
21617}
21618impl std::str::FromStr for ProjectCardConvertedAction {
21619	type Err = &'static str;
21620
21621	fn from_str(value: &str) -> Result<Self, &'static str> {
21622		match value {
21623			"converted" => Ok(Self::Converted),
21624			_ => Err("invalid value"),
21625		}
21626	}
21627}
21628impl std::convert::TryFrom<&str> for ProjectCardConvertedAction {
21629	type Error = &'static str;
21630
21631	fn try_from(value: &str) -> Result<Self, &'static str> {
21632		value.parse()
21633	}
21634}
21635impl std::convert::TryFrom<&String> for ProjectCardConvertedAction {
21636	type Error = &'static str;
21637
21638	fn try_from(value: &String) -> Result<Self, &'static str> {
21639		value.parse()
21640	}
21641}
21642impl std::convert::TryFrom<String> for ProjectCardConvertedAction {
21643	type Error = &'static str;
21644
21645	fn try_from(value: String) -> Result<Self, &'static str> {
21646		value.parse()
21647	}
21648}
21649#[derive(Clone, Debug, Deserialize, Serialize)]
21650#[serde(deny_unknown_fields)]
21651pub struct ProjectCardConvertedChanges {
21652	pub note: ProjectCardConvertedChangesNote,
21653}
21654impl From<&ProjectCardConvertedChanges> for ProjectCardConvertedChanges {
21655	fn from(value: &ProjectCardConvertedChanges) -> Self {
21656		value.clone()
21657	}
21658}
21659#[derive(Clone, Debug, Deserialize, Serialize)]
21660#[serde(deny_unknown_fields)]
21661pub struct ProjectCardConvertedChangesNote {
21662	pub from: String,
21663}
21664impl From<&ProjectCardConvertedChangesNote> for ProjectCardConvertedChangesNote {
21665	fn from(value: &ProjectCardConvertedChangesNote) -> Self {
21666		value.clone()
21667	}
21668}
21669#[derive(Clone, Debug, Deserialize, Serialize)]
21670#[serde(deny_unknown_fields)]
21671pub struct ProjectCardCreated {
21672	pub action:       ProjectCardCreatedAction,
21673	#[serde(default, skip_serializing_if = "Option::is_none")]
21674	pub installation: Option<InstallationLite>,
21675	#[serde(default, skip_serializing_if = "Option::is_none")]
21676	pub organization: Option<Organization>,
21677	pub project_card: ProjectCard,
21678	#[serde(default, skip_serializing_if = "Option::is_none")]
21679	pub repository:   Option<Repository>,
21680	pub sender:       User,
21681}
21682impl From<&ProjectCardCreated> for ProjectCardCreated {
21683	fn from(value: &ProjectCardCreated) -> Self {
21684		value.clone()
21685	}
21686}
21687#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21688pub enum ProjectCardCreatedAction {
21689	#[serde(rename = "created")]
21690	Created,
21691}
21692impl From<&ProjectCardCreatedAction> for ProjectCardCreatedAction {
21693	fn from(value: &ProjectCardCreatedAction) -> Self {
21694		value.clone()
21695	}
21696}
21697impl ToString for ProjectCardCreatedAction {
21698	fn to_string(&self) -> String {
21699		match *self {
21700			Self::Created => "created".to_string(),
21701		}
21702	}
21703}
21704impl std::str::FromStr for ProjectCardCreatedAction {
21705	type Err = &'static str;
21706
21707	fn from_str(value: &str) -> Result<Self, &'static str> {
21708		match value {
21709			"created" => Ok(Self::Created),
21710			_ => Err("invalid value"),
21711		}
21712	}
21713}
21714impl std::convert::TryFrom<&str> for ProjectCardCreatedAction {
21715	type Error = &'static str;
21716
21717	fn try_from(value: &str) -> Result<Self, &'static str> {
21718		value.parse()
21719	}
21720}
21721impl std::convert::TryFrom<&String> for ProjectCardCreatedAction {
21722	type Error = &'static str;
21723
21724	fn try_from(value: &String) -> Result<Self, &'static str> {
21725		value.parse()
21726	}
21727}
21728impl std::convert::TryFrom<String> for ProjectCardCreatedAction {
21729	type Error = &'static str;
21730
21731	fn try_from(value: String) -> Result<Self, &'static str> {
21732		value.parse()
21733	}
21734}
21735#[derive(Clone, Debug, Deserialize, Serialize)]
21736#[serde(deny_unknown_fields)]
21737pub struct ProjectCardDeleted {
21738	pub action:       ProjectCardDeletedAction,
21739	#[serde(default, skip_serializing_if = "Option::is_none")]
21740	pub installation: Option<InstallationLite>,
21741	#[serde(default, skip_serializing_if = "Option::is_none")]
21742	pub organization: Option<Organization>,
21743	pub project_card: ProjectCard,
21744	#[serde(default, skip_serializing_if = "Option::is_none")]
21745	pub repository:   Option<Repository>,
21746	pub sender:       User,
21747}
21748impl From<&ProjectCardDeleted> for ProjectCardDeleted {
21749	fn from(value: &ProjectCardDeleted) -> Self {
21750		value.clone()
21751	}
21752}
21753#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21754pub enum ProjectCardDeletedAction {
21755	#[serde(rename = "deleted")]
21756	Deleted,
21757}
21758impl From<&ProjectCardDeletedAction> for ProjectCardDeletedAction {
21759	fn from(value: &ProjectCardDeletedAction) -> Self {
21760		value.clone()
21761	}
21762}
21763impl ToString for ProjectCardDeletedAction {
21764	fn to_string(&self) -> String {
21765		match *self {
21766			Self::Deleted => "deleted".to_string(),
21767		}
21768	}
21769}
21770impl std::str::FromStr for ProjectCardDeletedAction {
21771	type Err = &'static str;
21772
21773	fn from_str(value: &str) -> Result<Self, &'static str> {
21774		match value {
21775			"deleted" => Ok(Self::Deleted),
21776			_ => Err("invalid value"),
21777		}
21778	}
21779}
21780impl std::convert::TryFrom<&str> for ProjectCardDeletedAction {
21781	type Error = &'static str;
21782
21783	fn try_from(value: &str) -> Result<Self, &'static str> {
21784		value.parse()
21785	}
21786}
21787impl std::convert::TryFrom<&String> for ProjectCardDeletedAction {
21788	type Error = &'static str;
21789
21790	fn try_from(value: &String) -> Result<Self, &'static str> {
21791		value.parse()
21792	}
21793}
21794impl std::convert::TryFrom<String> for ProjectCardDeletedAction {
21795	type Error = &'static str;
21796
21797	fn try_from(value: String) -> Result<Self, &'static str> {
21798		value.parse()
21799	}
21800}
21801#[derive(Clone, Debug, Deserialize, Serialize)]
21802#[serde(deny_unknown_fields)]
21803pub struct ProjectCardEdited {
21804	pub action:       ProjectCardEditedAction,
21805	pub changes:      ProjectCardEditedChanges,
21806	#[serde(default, skip_serializing_if = "Option::is_none")]
21807	pub installation: Option<InstallationLite>,
21808	#[serde(default, skip_serializing_if = "Option::is_none")]
21809	pub organization: Option<Organization>,
21810	pub project_card: ProjectCard,
21811	#[serde(default, skip_serializing_if = "Option::is_none")]
21812	pub repository:   Option<Repository>,
21813	pub sender:       User,
21814}
21815impl From<&ProjectCardEdited> for ProjectCardEdited {
21816	fn from(value: &ProjectCardEdited) -> Self {
21817		value.clone()
21818	}
21819}
21820#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21821pub enum ProjectCardEditedAction {
21822	#[serde(rename = "edited")]
21823	Edited,
21824}
21825impl From<&ProjectCardEditedAction> for ProjectCardEditedAction {
21826	fn from(value: &ProjectCardEditedAction) -> Self {
21827		value.clone()
21828	}
21829}
21830impl ToString for ProjectCardEditedAction {
21831	fn to_string(&self) -> String {
21832		match *self {
21833			Self::Edited => "edited".to_string(),
21834		}
21835	}
21836}
21837impl std::str::FromStr for ProjectCardEditedAction {
21838	type Err = &'static str;
21839
21840	fn from_str(value: &str) -> Result<Self, &'static str> {
21841		match value {
21842			"edited" => Ok(Self::Edited),
21843			_ => Err("invalid value"),
21844		}
21845	}
21846}
21847impl std::convert::TryFrom<&str> for ProjectCardEditedAction {
21848	type Error = &'static str;
21849
21850	fn try_from(value: &str) -> Result<Self, &'static str> {
21851		value.parse()
21852	}
21853}
21854impl std::convert::TryFrom<&String> for ProjectCardEditedAction {
21855	type Error = &'static str;
21856
21857	fn try_from(value: &String) -> Result<Self, &'static str> {
21858		value.parse()
21859	}
21860}
21861impl std::convert::TryFrom<String> for ProjectCardEditedAction {
21862	type Error = &'static str;
21863
21864	fn try_from(value: String) -> Result<Self, &'static str> {
21865		value.parse()
21866	}
21867}
21868#[derive(Clone, Debug, Deserialize, Serialize)]
21869#[serde(deny_unknown_fields)]
21870pub struct ProjectCardEditedChanges {
21871	pub note: ProjectCardEditedChangesNote,
21872}
21873impl From<&ProjectCardEditedChanges> for ProjectCardEditedChanges {
21874	fn from(value: &ProjectCardEditedChanges) -> Self {
21875		value.clone()
21876	}
21877}
21878#[derive(Clone, Debug, Deserialize, Serialize)]
21879#[serde(deny_unknown_fields)]
21880pub struct ProjectCardEditedChangesNote {
21881	pub from: String,
21882}
21883impl From<&ProjectCardEditedChangesNote> for ProjectCardEditedChangesNote {
21884	fn from(value: &ProjectCardEditedChangesNote) -> Self {
21885		value.clone()
21886	}
21887}
21888#[derive(Clone, Debug, Deserialize, Serialize)]
21889#[serde(untagged)]
21890pub enum ProjectCardEvent {
21891	Converted(ProjectCardConverted),
21892	Created(ProjectCardCreated),
21893	Deleted(ProjectCardDeleted),
21894	Edited(ProjectCardEdited),
21895	Moved(ProjectCardMoved),
21896}
21897impl From<&ProjectCardEvent> for ProjectCardEvent {
21898	fn from(value: &ProjectCardEvent) -> Self {
21899		value.clone()
21900	}
21901}
21902impl From<ProjectCardConverted> for ProjectCardEvent {
21903	fn from(value: ProjectCardConverted) -> Self {
21904		Self::Converted(value)
21905	}
21906}
21907impl From<ProjectCardCreated> for ProjectCardEvent {
21908	fn from(value: ProjectCardCreated) -> Self {
21909		Self::Created(value)
21910	}
21911}
21912impl From<ProjectCardDeleted> for ProjectCardEvent {
21913	fn from(value: ProjectCardDeleted) -> Self {
21914		Self::Deleted(value)
21915	}
21916}
21917impl From<ProjectCardEdited> for ProjectCardEvent {
21918	fn from(value: ProjectCardEdited) -> Self {
21919		Self::Edited(value)
21920	}
21921}
21922impl From<ProjectCardMoved> for ProjectCardEvent {
21923	fn from(value: ProjectCardMoved) -> Self {
21924		Self::Moved(value)
21925	}
21926}
21927#[derive(Clone, Debug, Deserialize, Serialize)]
21928#[serde(deny_unknown_fields)]
21929pub struct ProjectCardMoved {
21930	pub action:       ProjectCardMovedAction,
21931	#[serde(default, skip_serializing_if = "Option::is_none")]
21932	pub changes:      Option<ProjectCardMovedChanges>,
21933	#[serde(default, skip_serializing_if = "Option::is_none")]
21934	pub installation: Option<InstallationLite>,
21935	#[serde(default, skip_serializing_if = "Option::is_none")]
21936	pub organization: Option<Organization>,
21937	pub project_card: ProjectCard,
21938	#[serde(default, skip_serializing_if = "Option::is_none")]
21939	pub repository:   Option<Repository>,
21940	pub sender:       User,
21941}
21942impl From<&ProjectCardMoved> for ProjectCardMoved {
21943	fn from(value: &ProjectCardMoved) -> Self {
21944		value.clone()
21945	}
21946}
21947#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
21948pub enum ProjectCardMovedAction {
21949	#[serde(rename = "moved")]
21950	Moved,
21951}
21952impl From<&ProjectCardMovedAction> for ProjectCardMovedAction {
21953	fn from(value: &ProjectCardMovedAction) -> Self {
21954		value.clone()
21955	}
21956}
21957impl ToString for ProjectCardMovedAction {
21958	fn to_string(&self) -> String {
21959		match *self {
21960			Self::Moved => "moved".to_string(),
21961		}
21962	}
21963}
21964impl std::str::FromStr for ProjectCardMovedAction {
21965	type Err = &'static str;
21966
21967	fn from_str(value: &str) -> Result<Self, &'static str> {
21968		match value {
21969			"moved" => Ok(Self::Moved),
21970			_ => Err("invalid value"),
21971		}
21972	}
21973}
21974impl std::convert::TryFrom<&str> for ProjectCardMovedAction {
21975	type Error = &'static str;
21976
21977	fn try_from(value: &str) -> Result<Self, &'static str> {
21978		value.parse()
21979	}
21980}
21981impl std::convert::TryFrom<&String> for ProjectCardMovedAction {
21982	type Error = &'static str;
21983
21984	fn try_from(value: &String) -> Result<Self, &'static str> {
21985		value.parse()
21986	}
21987}
21988impl std::convert::TryFrom<String> for ProjectCardMovedAction {
21989	type Error = &'static str;
21990
21991	fn try_from(value: String) -> Result<Self, &'static str> {
21992		value.parse()
21993	}
21994}
21995#[derive(Clone, Debug, Deserialize, Serialize)]
21996#[serde(deny_unknown_fields)]
21997pub struct ProjectCardMovedChanges {
21998	pub column_id: ProjectCardMovedChangesColumnId,
21999}
22000impl From<&ProjectCardMovedChanges> for ProjectCardMovedChanges {
22001	fn from(value: &ProjectCardMovedChanges) -> Self {
22002		value.clone()
22003	}
22004}
22005#[derive(Clone, Debug, Deserialize, Serialize)]
22006#[serde(deny_unknown_fields)]
22007pub struct ProjectCardMovedChangesColumnId {
22008	pub from: i64,
22009}
22010impl From<&ProjectCardMovedChangesColumnId> for ProjectCardMovedChangesColumnId {
22011	fn from(value: &ProjectCardMovedChangesColumnId) -> Self {
22012		value.clone()
22013	}
22014}
22015#[derive(Clone, Debug, Deserialize, Serialize)]
22016#[serde(deny_unknown_fields)]
22017pub struct ProjectClosed {
22018	pub action:       ProjectClosedAction,
22019	#[serde(default, skip_serializing_if = "Option::is_none")]
22020	pub installation: Option<InstallationLite>,
22021	#[serde(default, skip_serializing_if = "Option::is_none")]
22022	pub organization: Option<Organization>,
22023	pub project:      Project,
22024	pub repository:   Repository,
22025	pub sender:       User,
22026}
22027impl From<&ProjectClosed> for ProjectClosed {
22028	fn from(value: &ProjectClosed) -> Self {
22029		value.clone()
22030	}
22031}
22032#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22033pub enum ProjectClosedAction {
22034	#[serde(rename = "closed")]
22035	Closed,
22036}
22037impl From<&ProjectClosedAction> for ProjectClosedAction {
22038	fn from(value: &ProjectClosedAction) -> Self {
22039		value.clone()
22040	}
22041}
22042impl ToString for ProjectClosedAction {
22043	fn to_string(&self) -> String {
22044		match *self {
22045			Self::Closed => "closed".to_string(),
22046		}
22047	}
22048}
22049impl std::str::FromStr for ProjectClosedAction {
22050	type Err = &'static str;
22051
22052	fn from_str(value: &str) -> Result<Self, &'static str> {
22053		match value {
22054			"closed" => Ok(Self::Closed),
22055			_ => Err("invalid value"),
22056		}
22057	}
22058}
22059impl std::convert::TryFrom<&str> for ProjectClosedAction {
22060	type Error = &'static str;
22061
22062	fn try_from(value: &str) -> Result<Self, &'static str> {
22063		value.parse()
22064	}
22065}
22066impl std::convert::TryFrom<&String> for ProjectClosedAction {
22067	type Error = &'static str;
22068
22069	fn try_from(value: &String) -> Result<Self, &'static str> {
22070		value.parse()
22071	}
22072}
22073impl std::convert::TryFrom<String> for ProjectClosedAction {
22074	type Error = &'static str;
22075
22076	fn try_from(value: String) -> Result<Self, &'static str> {
22077		value.parse()
22078	}
22079}
22080#[derive(Clone, Debug, Deserialize, Serialize)]
22081#[serde(deny_unknown_fields)]
22082pub struct ProjectColumn {
22083	pub cards_url:   String,
22084	pub created_at:  chrono::DateTime<chrono::offset::Utc>,
22085	/// The unique identifier of the project column
22086	pub id:          i64,
22087	/// Name of the project column
22088	pub name:        String,
22089	pub node_id:     String,
22090	pub project_url: String,
22091	pub updated_at:  chrono::DateTime<chrono::offset::Utc>,
22092	pub url:         String,
22093}
22094impl From<&ProjectColumn> for ProjectColumn {
22095	fn from(value: &ProjectColumn) -> Self {
22096		value.clone()
22097	}
22098}
22099#[derive(Clone, Debug, Deserialize, Serialize)]
22100#[serde(deny_unknown_fields)]
22101pub struct ProjectColumnCreated {
22102	pub action:         ProjectColumnCreatedAction,
22103	#[serde(default, skip_serializing_if = "Option::is_none")]
22104	pub installation:   Option<InstallationLite>,
22105	#[serde(default, skip_serializing_if = "Option::is_none")]
22106	pub organization:   Option<Organization>,
22107	pub project_column: ProjectColumn,
22108	#[serde(default, skip_serializing_if = "Option::is_none")]
22109	pub repository:     Option<Repository>,
22110	pub sender:         User,
22111}
22112impl From<&ProjectColumnCreated> for ProjectColumnCreated {
22113	fn from(value: &ProjectColumnCreated) -> Self {
22114		value.clone()
22115	}
22116}
22117#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22118pub enum ProjectColumnCreatedAction {
22119	#[serde(rename = "created")]
22120	Created,
22121}
22122impl From<&ProjectColumnCreatedAction> for ProjectColumnCreatedAction {
22123	fn from(value: &ProjectColumnCreatedAction) -> Self {
22124		value.clone()
22125	}
22126}
22127impl ToString for ProjectColumnCreatedAction {
22128	fn to_string(&self) -> String {
22129		match *self {
22130			Self::Created => "created".to_string(),
22131		}
22132	}
22133}
22134impl std::str::FromStr for ProjectColumnCreatedAction {
22135	type Err = &'static str;
22136
22137	fn from_str(value: &str) -> Result<Self, &'static str> {
22138		match value {
22139			"created" => Ok(Self::Created),
22140			_ => Err("invalid value"),
22141		}
22142	}
22143}
22144impl std::convert::TryFrom<&str> for ProjectColumnCreatedAction {
22145	type Error = &'static str;
22146
22147	fn try_from(value: &str) -> Result<Self, &'static str> {
22148		value.parse()
22149	}
22150}
22151impl std::convert::TryFrom<&String> for ProjectColumnCreatedAction {
22152	type Error = &'static str;
22153
22154	fn try_from(value: &String) -> Result<Self, &'static str> {
22155		value.parse()
22156	}
22157}
22158impl std::convert::TryFrom<String> for ProjectColumnCreatedAction {
22159	type Error = &'static str;
22160
22161	fn try_from(value: String) -> Result<Self, &'static str> {
22162		value.parse()
22163	}
22164}
22165#[derive(Clone, Debug, Deserialize, Serialize)]
22166#[serde(deny_unknown_fields)]
22167pub struct ProjectColumnDeleted {
22168	pub action:         ProjectColumnDeletedAction,
22169	#[serde(default, skip_serializing_if = "Option::is_none")]
22170	pub installation:   Option<InstallationLite>,
22171	#[serde(default, skip_serializing_if = "Option::is_none")]
22172	pub organization:   Option<Organization>,
22173	pub project_column: ProjectColumn,
22174	#[serde(default, skip_serializing_if = "Option::is_none")]
22175	pub repository:     Option<Repository>,
22176	pub sender:         User,
22177}
22178impl From<&ProjectColumnDeleted> for ProjectColumnDeleted {
22179	fn from(value: &ProjectColumnDeleted) -> Self {
22180		value.clone()
22181	}
22182}
22183#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22184pub enum ProjectColumnDeletedAction {
22185	#[serde(rename = "deleted")]
22186	Deleted,
22187}
22188impl From<&ProjectColumnDeletedAction> for ProjectColumnDeletedAction {
22189	fn from(value: &ProjectColumnDeletedAction) -> Self {
22190		value.clone()
22191	}
22192}
22193impl ToString for ProjectColumnDeletedAction {
22194	fn to_string(&self) -> String {
22195		match *self {
22196			Self::Deleted => "deleted".to_string(),
22197		}
22198	}
22199}
22200impl std::str::FromStr for ProjectColumnDeletedAction {
22201	type Err = &'static str;
22202
22203	fn from_str(value: &str) -> Result<Self, &'static str> {
22204		match value {
22205			"deleted" => Ok(Self::Deleted),
22206			_ => Err("invalid value"),
22207		}
22208	}
22209}
22210impl std::convert::TryFrom<&str> for ProjectColumnDeletedAction {
22211	type Error = &'static str;
22212
22213	fn try_from(value: &str) -> Result<Self, &'static str> {
22214		value.parse()
22215	}
22216}
22217impl std::convert::TryFrom<&String> for ProjectColumnDeletedAction {
22218	type Error = &'static str;
22219
22220	fn try_from(value: &String) -> Result<Self, &'static str> {
22221		value.parse()
22222	}
22223}
22224impl std::convert::TryFrom<String> for ProjectColumnDeletedAction {
22225	type Error = &'static str;
22226
22227	fn try_from(value: String) -> Result<Self, &'static str> {
22228		value.parse()
22229	}
22230}
22231#[derive(Clone, Debug, Deserialize, Serialize)]
22232#[serde(deny_unknown_fields)]
22233pub struct ProjectColumnEdited {
22234	pub action:         ProjectColumnEditedAction,
22235	pub changes:        ProjectColumnEditedChanges,
22236	#[serde(default, skip_serializing_if = "Option::is_none")]
22237	pub installation:   Option<InstallationLite>,
22238	#[serde(default, skip_serializing_if = "Option::is_none")]
22239	pub organization:   Option<Organization>,
22240	pub project_column: ProjectColumn,
22241	#[serde(default, skip_serializing_if = "Option::is_none")]
22242	pub repository:     Option<Repository>,
22243	pub sender:         User,
22244}
22245impl From<&ProjectColumnEdited> for ProjectColumnEdited {
22246	fn from(value: &ProjectColumnEdited) -> Self {
22247		value.clone()
22248	}
22249}
22250#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22251pub enum ProjectColumnEditedAction {
22252	#[serde(rename = "edited")]
22253	Edited,
22254}
22255impl From<&ProjectColumnEditedAction> for ProjectColumnEditedAction {
22256	fn from(value: &ProjectColumnEditedAction) -> Self {
22257		value.clone()
22258	}
22259}
22260impl ToString for ProjectColumnEditedAction {
22261	fn to_string(&self) -> String {
22262		match *self {
22263			Self::Edited => "edited".to_string(),
22264		}
22265	}
22266}
22267impl std::str::FromStr for ProjectColumnEditedAction {
22268	type Err = &'static str;
22269
22270	fn from_str(value: &str) -> Result<Self, &'static str> {
22271		match value {
22272			"edited" => Ok(Self::Edited),
22273			_ => Err("invalid value"),
22274		}
22275	}
22276}
22277impl std::convert::TryFrom<&str> for ProjectColumnEditedAction {
22278	type Error = &'static str;
22279
22280	fn try_from(value: &str) -> Result<Self, &'static str> {
22281		value.parse()
22282	}
22283}
22284impl std::convert::TryFrom<&String> for ProjectColumnEditedAction {
22285	type Error = &'static str;
22286
22287	fn try_from(value: &String) -> Result<Self, &'static str> {
22288		value.parse()
22289	}
22290}
22291impl std::convert::TryFrom<String> for ProjectColumnEditedAction {
22292	type Error = &'static str;
22293
22294	fn try_from(value: String) -> Result<Self, &'static str> {
22295		value.parse()
22296	}
22297}
22298#[derive(Clone, Debug, Deserialize, Serialize)]
22299#[serde(deny_unknown_fields)]
22300pub struct ProjectColumnEditedChanges {
22301	#[serde(default, skip_serializing_if = "Option::is_none")]
22302	pub name: Option<ProjectColumnEditedChangesName>,
22303}
22304impl From<&ProjectColumnEditedChanges> for ProjectColumnEditedChanges {
22305	fn from(value: &ProjectColumnEditedChanges) -> Self {
22306		value.clone()
22307	}
22308}
22309#[derive(Clone, Debug, Deserialize, Serialize)]
22310#[serde(deny_unknown_fields)]
22311pub struct ProjectColumnEditedChangesName {
22312	pub from: String,
22313}
22314impl From<&ProjectColumnEditedChangesName> for ProjectColumnEditedChangesName {
22315	fn from(value: &ProjectColumnEditedChangesName) -> Self {
22316		value.clone()
22317	}
22318}
22319#[derive(Clone, Debug, Deserialize, Serialize)]
22320#[serde(untagged)]
22321pub enum ProjectColumnEvent {
22322	Created(ProjectColumnCreated),
22323	Deleted(ProjectColumnDeleted),
22324	Edited(ProjectColumnEdited),
22325	Moved(ProjectColumnMoved),
22326}
22327impl From<&ProjectColumnEvent> for ProjectColumnEvent {
22328	fn from(value: &ProjectColumnEvent) -> Self {
22329		value.clone()
22330	}
22331}
22332impl From<ProjectColumnCreated> for ProjectColumnEvent {
22333	fn from(value: ProjectColumnCreated) -> Self {
22334		Self::Created(value)
22335	}
22336}
22337impl From<ProjectColumnDeleted> for ProjectColumnEvent {
22338	fn from(value: ProjectColumnDeleted) -> Self {
22339		Self::Deleted(value)
22340	}
22341}
22342impl From<ProjectColumnEdited> for ProjectColumnEvent {
22343	fn from(value: ProjectColumnEdited) -> Self {
22344		Self::Edited(value)
22345	}
22346}
22347impl From<ProjectColumnMoved> for ProjectColumnEvent {
22348	fn from(value: ProjectColumnMoved) -> Self {
22349		Self::Moved(value)
22350	}
22351}
22352#[derive(Clone, Debug, Deserialize, Serialize)]
22353#[serde(deny_unknown_fields)]
22354pub struct ProjectColumnMoved {
22355	pub action:         ProjectColumnMovedAction,
22356	#[serde(default, skip_serializing_if = "Option::is_none")]
22357	pub installation:   Option<InstallationLite>,
22358	#[serde(default, skip_serializing_if = "Option::is_none")]
22359	pub organization:   Option<Organization>,
22360	pub project_column: ProjectColumn,
22361	#[serde(default, skip_serializing_if = "Option::is_none")]
22362	pub repository:     Option<Repository>,
22363	pub sender:         User,
22364}
22365impl From<&ProjectColumnMoved> for ProjectColumnMoved {
22366	fn from(value: &ProjectColumnMoved) -> Self {
22367		value.clone()
22368	}
22369}
22370#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22371pub enum ProjectColumnMovedAction {
22372	#[serde(rename = "moved")]
22373	Moved,
22374}
22375impl From<&ProjectColumnMovedAction> for ProjectColumnMovedAction {
22376	fn from(value: &ProjectColumnMovedAction) -> Self {
22377		value.clone()
22378	}
22379}
22380impl ToString for ProjectColumnMovedAction {
22381	fn to_string(&self) -> String {
22382		match *self {
22383			Self::Moved => "moved".to_string(),
22384		}
22385	}
22386}
22387impl std::str::FromStr for ProjectColumnMovedAction {
22388	type Err = &'static str;
22389
22390	fn from_str(value: &str) -> Result<Self, &'static str> {
22391		match value {
22392			"moved" => Ok(Self::Moved),
22393			_ => Err("invalid value"),
22394		}
22395	}
22396}
22397impl std::convert::TryFrom<&str> for ProjectColumnMovedAction {
22398	type Error = &'static str;
22399
22400	fn try_from(value: &str) -> Result<Self, &'static str> {
22401		value.parse()
22402	}
22403}
22404impl std::convert::TryFrom<&String> for ProjectColumnMovedAction {
22405	type Error = &'static str;
22406
22407	fn try_from(value: &String) -> Result<Self, &'static str> {
22408		value.parse()
22409	}
22410}
22411impl std::convert::TryFrom<String> for ProjectColumnMovedAction {
22412	type Error = &'static str;
22413
22414	fn try_from(value: String) -> Result<Self, &'static str> {
22415		value.parse()
22416	}
22417}
22418#[derive(Clone, Debug, Deserialize, Serialize)]
22419#[serde(deny_unknown_fields)]
22420pub struct ProjectCreated {
22421	pub action:       ProjectCreatedAction,
22422	#[serde(default, skip_serializing_if = "Option::is_none")]
22423	pub installation: Option<InstallationLite>,
22424	#[serde(default, skip_serializing_if = "Option::is_none")]
22425	pub organization: Option<Organization>,
22426	pub project:      Project,
22427	pub repository:   Repository,
22428	pub sender:       User,
22429}
22430impl From<&ProjectCreated> for ProjectCreated {
22431	fn from(value: &ProjectCreated) -> Self {
22432		value.clone()
22433	}
22434}
22435#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22436pub enum ProjectCreatedAction {
22437	#[serde(rename = "created")]
22438	Created,
22439}
22440impl From<&ProjectCreatedAction> for ProjectCreatedAction {
22441	fn from(value: &ProjectCreatedAction) -> Self {
22442		value.clone()
22443	}
22444}
22445impl ToString for ProjectCreatedAction {
22446	fn to_string(&self) -> String {
22447		match *self {
22448			Self::Created => "created".to_string(),
22449		}
22450	}
22451}
22452impl std::str::FromStr for ProjectCreatedAction {
22453	type Err = &'static str;
22454
22455	fn from_str(value: &str) -> Result<Self, &'static str> {
22456		match value {
22457			"created" => Ok(Self::Created),
22458			_ => Err("invalid value"),
22459		}
22460	}
22461}
22462impl std::convert::TryFrom<&str> for ProjectCreatedAction {
22463	type Error = &'static str;
22464
22465	fn try_from(value: &str) -> Result<Self, &'static str> {
22466		value.parse()
22467	}
22468}
22469impl std::convert::TryFrom<&String> for ProjectCreatedAction {
22470	type Error = &'static str;
22471
22472	fn try_from(value: &String) -> Result<Self, &'static str> {
22473		value.parse()
22474	}
22475}
22476impl std::convert::TryFrom<String> for ProjectCreatedAction {
22477	type Error = &'static str;
22478
22479	fn try_from(value: String) -> Result<Self, &'static str> {
22480		value.parse()
22481	}
22482}
22483#[derive(Clone, Debug, Deserialize, Serialize)]
22484#[serde(deny_unknown_fields)]
22485pub struct ProjectDeleted {
22486	pub action:       ProjectDeletedAction,
22487	#[serde(default, skip_serializing_if = "Option::is_none")]
22488	pub installation: Option<InstallationLite>,
22489	#[serde(default, skip_serializing_if = "Option::is_none")]
22490	pub organization: Option<Organization>,
22491	pub project:      Project,
22492	pub repository:   Repository,
22493	pub sender:       User,
22494}
22495impl From<&ProjectDeleted> for ProjectDeleted {
22496	fn from(value: &ProjectDeleted) -> Self {
22497		value.clone()
22498	}
22499}
22500#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22501pub enum ProjectDeletedAction {
22502	#[serde(rename = "deleted")]
22503	Deleted,
22504}
22505impl From<&ProjectDeletedAction> for ProjectDeletedAction {
22506	fn from(value: &ProjectDeletedAction) -> Self {
22507		value.clone()
22508	}
22509}
22510impl ToString for ProjectDeletedAction {
22511	fn to_string(&self) -> String {
22512		match *self {
22513			Self::Deleted => "deleted".to_string(),
22514		}
22515	}
22516}
22517impl std::str::FromStr for ProjectDeletedAction {
22518	type Err = &'static str;
22519
22520	fn from_str(value: &str) -> Result<Self, &'static str> {
22521		match value {
22522			"deleted" => Ok(Self::Deleted),
22523			_ => Err("invalid value"),
22524		}
22525	}
22526}
22527impl std::convert::TryFrom<&str> for ProjectDeletedAction {
22528	type Error = &'static str;
22529
22530	fn try_from(value: &str) -> Result<Self, &'static str> {
22531		value.parse()
22532	}
22533}
22534impl std::convert::TryFrom<&String> for ProjectDeletedAction {
22535	type Error = &'static str;
22536
22537	fn try_from(value: &String) -> Result<Self, &'static str> {
22538		value.parse()
22539	}
22540}
22541impl std::convert::TryFrom<String> for ProjectDeletedAction {
22542	type Error = &'static str;
22543
22544	fn try_from(value: String) -> Result<Self, &'static str> {
22545		value.parse()
22546	}
22547}
22548#[derive(Clone, Debug, Deserialize, Serialize)]
22549#[serde(deny_unknown_fields)]
22550pub struct ProjectEdited {
22551	pub action:       ProjectEditedAction,
22552	#[serde(default, skip_serializing_if = "Option::is_none")]
22553	pub changes:      Option<ProjectEditedChanges>,
22554	#[serde(default, skip_serializing_if = "Option::is_none")]
22555	pub installation: Option<InstallationLite>,
22556	#[serde(default, skip_serializing_if = "Option::is_none")]
22557	pub organization: Option<Organization>,
22558	pub project:      Project,
22559	pub repository:   Repository,
22560	pub sender:       User,
22561}
22562impl From<&ProjectEdited> for ProjectEdited {
22563	fn from(value: &ProjectEdited) -> Self {
22564		value.clone()
22565	}
22566}
22567#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22568pub enum ProjectEditedAction {
22569	#[serde(rename = "edited")]
22570	Edited,
22571}
22572impl From<&ProjectEditedAction> for ProjectEditedAction {
22573	fn from(value: &ProjectEditedAction) -> Self {
22574		value.clone()
22575	}
22576}
22577impl ToString for ProjectEditedAction {
22578	fn to_string(&self) -> String {
22579		match *self {
22580			Self::Edited => "edited".to_string(),
22581		}
22582	}
22583}
22584impl std::str::FromStr for ProjectEditedAction {
22585	type Err = &'static str;
22586
22587	fn from_str(value: &str) -> Result<Self, &'static str> {
22588		match value {
22589			"edited" => Ok(Self::Edited),
22590			_ => Err("invalid value"),
22591		}
22592	}
22593}
22594impl std::convert::TryFrom<&str> for ProjectEditedAction {
22595	type Error = &'static str;
22596
22597	fn try_from(value: &str) -> Result<Self, &'static str> {
22598		value.parse()
22599	}
22600}
22601impl std::convert::TryFrom<&String> for ProjectEditedAction {
22602	type Error = &'static str;
22603
22604	fn try_from(value: &String) -> Result<Self, &'static str> {
22605		value.parse()
22606	}
22607}
22608impl std::convert::TryFrom<String> for ProjectEditedAction {
22609	type Error = &'static str;
22610
22611	fn try_from(value: String) -> Result<Self, &'static str> {
22612		value.parse()
22613	}
22614}
22615/// The changes to the project if the action was `edited`.
22616#[derive(Clone, Debug, Deserialize, Serialize)]
22617#[serde(deny_unknown_fields)]
22618pub struct ProjectEditedChanges {
22619	#[serde(default, skip_serializing_if = "Option::is_none")]
22620	pub body: Option<ProjectEditedChangesBody>,
22621	#[serde(default, skip_serializing_if = "Option::is_none")]
22622	pub name: Option<ProjectEditedChangesName>,
22623}
22624impl From<&ProjectEditedChanges> for ProjectEditedChanges {
22625	fn from(value: &ProjectEditedChanges) -> Self {
22626		value.clone()
22627	}
22628}
22629#[derive(Clone, Debug, Deserialize, Serialize)]
22630#[serde(deny_unknown_fields)]
22631pub struct ProjectEditedChangesBody {
22632	/// The previous version of the body if the action was `edited`.
22633	pub from: String,
22634}
22635impl From<&ProjectEditedChangesBody> for ProjectEditedChangesBody {
22636	fn from(value: &ProjectEditedChangesBody) -> Self {
22637		value.clone()
22638	}
22639}
22640#[derive(Clone, Debug, Deserialize, Serialize)]
22641#[serde(deny_unknown_fields)]
22642pub struct ProjectEditedChangesName {
22643	/// The changes to the project if the action was `edited`.
22644	pub from: String,
22645}
22646impl From<&ProjectEditedChangesName> for ProjectEditedChangesName {
22647	fn from(value: &ProjectEditedChangesName) -> Self {
22648		value.clone()
22649	}
22650}
22651#[derive(Clone, Debug, Deserialize, Serialize)]
22652#[serde(untagged)]
22653pub enum ProjectEvent {
22654	Closed(ProjectClosed),
22655	Created(ProjectCreated),
22656	Deleted(ProjectDeleted),
22657	Edited(ProjectEdited),
22658	Reopened(ProjectReopened),
22659}
22660impl From<&ProjectEvent> for ProjectEvent {
22661	fn from(value: &ProjectEvent) -> Self {
22662		value.clone()
22663	}
22664}
22665impl From<ProjectClosed> for ProjectEvent {
22666	fn from(value: ProjectClosed) -> Self {
22667		Self::Closed(value)
22668	}
22669}
22670impl From<ProjectCreated> for ProjectEvent {
22671	fn from(value: ProjectCreated) -> Self {
22672		Self::Created(value)
22673	}
22674}
22675impl From<ProjectDeleted> for ProjectEvent {
22676	fn from(value: ProjectDeleted) -> Self {
22677		Self::Deleted(value)
22678	}
22679}
22680impl From<ProjectEdited> for ProjectEvent {
22681	fn from(value: ProjectEdited) -> Self {
22682		Self::Edited(value)
22683	}
22684}
22685impl From<ProjectReopened> for ProjectEvent {
22686	fn from(value: ProjectReopened) -> Self {
22687		Self::Reopened(value)
22688	}
22689}
22690#[derive(Clone, Debug, Deserialize, Serialize)]
22691#[serde(deny_unknown_fields)]
22692pub struct ProjectReopened {
22693	pub action:       ProjectReopenedAction,
22694	#[serde(default, skip_serializing_if = "Option::is_none")]
22695	pub installation: Option<InstallationLite>,
22696	#[serde(default, skip_serializing_if = "Option::is_none")]
22697	pub organization: Option<Organization>,
22698	pub project:      Project,
22699	pub repository:   Repository,
22700	pub sender:       User,
22701}
22702impl From<&ProjectReopened> for ProjectReopened {
22703	fn from(value: &ProjectReopened) -> Self {
22704		value.clone()
22705	}
22706}
22707#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22708pub enum ProjectReopenedAction {
22709	#[serde(rename = "reopened")]
22710	Reopened,
22711}
22712impl From<&ProjectReopenedAction> for ProjectReopenedAction {
22713	fn from(value: &ProjectReopenedAction) -> Self {
22714		value.clone()
22715	}
22716}
22717impl ToString for ProjectReopenedAction {
22718	fn to_string(&self) -> String {
22719		match *self {
22720			Self::Reopened => "reopened".to_string(),
22721		}
22722	}
22723}
22724impl std::str::FromStr for ProjectReopenedAction {
22725	type Err = &'static str;
22726
22727	fn from_str(value: &str) -> Result<Self, &'static str> {
22728		match value {
22729			"reopened" => Ok(Self::Reopened),
22730			_ => Err("invalid value"),
22731		}
22732	}
22733}
22734impl std::convert::TryFrom<&str> for ProjectReopenedAction {
22735	type Error = &'static str;
22736
22737	fn try_from(value: &str) -> Result<Self, &'static str> {
22738		value.parse()
22739	}
22740}
22741impl std::convert::TryFrom<&String> for ProjectReopenedAction {
22742	type Error = &'static str;
22743
22744	fn try_from(value: &String) -> Result<Self, &'static str> {
22745		value.parse()
22746	}
22747}
22748impl std::convert::TryFrom<String> for ProjectReopenedAction {
22749	type Error = &'static str;
22750
22751	fn try_from(value: String) -> Result<Self, &'static str> {
22752		value.parse()
22753	}
22754}
22755/// State of the project; either 'open' or 'closed'
22756#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22757pub enum ProjectState {
22758	#[serde(rename = "open")]
22759	Open,
22760	#[serde(rename = "closed")]
22761	Closed,
22762}
22763impl From<&ProjectState> for ProjectState {
22764	fn from(value: &ProjectState) -> Self {
22765		value.clone()
22766	}
22767}
22768impl ToString for ProjectState {
22769	fn to_string(&self) -> String {
22770		match *self {
22771			Self::Open => "open".to_string(),
22772			Self::Closed => "closed".to_string(),
22773		}
22774	}
22775}
22776impl std::str::FromStr for ProjectState {
22777	type Err = &'static str;
22778
22779	fn from_str(value: &str) -> Result<Self, &'static str> {
22780		match value {
22781			"open" => Ok(Self::Open),
22782			"closed" => Ok(Self::Closed),
22783			_ => Err("invalid value"),
22784		}
22785	}
22786}
22787impl std::convert::TryFrom<&str> for ProjectState {
22788	type Error = &'static str;
22789
22790	fn try_from(value: &str) -> Result<Self, &'static str> {
22791		value.parse()
22792	}
22793}
22794impl std::convert::TryFrom<&String> for ProjectState {
22795	type Error = &'static str;
22796
22797	fn try_from(value: &String) -> Result<Self, &'static str> {
22798		value.parse()
22799	}
22800}
22801impl std::convert::TryFrom<String> for ProjectState {
22802	type Error = &'static str;
22803
22804	fn try_from(value: String) -> Result<Self, &'static str> {
22805		value.parse()
22806	}
22807}
22808/// The project item itself. To find more information about the project item, you can use `node_id` (the node ID of the project item) and `project_node_id` (the node ID of the project) to query information in the GraphQL API. For more information, see "[Using the API to manage projects](https://docs.github.com/en/issues/trying-out-the-new-projects-experience/using-the-api-to-manage-projects)."
22809#[derive(Clone, Debug, Deserialize, Serialize)]
22810#[serde(deny_unknown_fields)]
22811pub struct ProjectsV2Item {
22812	pub archived_at:     Option<chrono::DateTime<chrono::offset::Utc>>,
22813	pub content_node_id: String,
22814	pub content_type:    ProjectsV2ItemContentType,
22815	pub created_at:      chrono::DateTime<chrono::offset::Utc>,
22816	pub creator:         User,
22817	pub id:              f64,
22818	pub node_id:         String,
22819	pub project_node_id: String,
22820	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
22821}
22822impl From<&ProjectsV2Item> for ProjectsV2Item {
22823	fn from(value: &ProjectsV2Item) -> Self {
22824		value.clone()
22825	}
22826}
22827#[derive(Clone, Debug, Deserialize, Serialize)]
22828#[serde(deny_unknown_fields)]
22829pub struct ProjectsV2ItemArchived {
22830	pub action:           ProjectsV2ItemArchivedAction,
22831	pub changes:          ProjectsV2ItemArchivedChanges,
22832	#[serde(default, skip_serializing_if = "Option::is_none")]
22833	pub installation:     Option<InstallationLite>,
22834	#[serde(default, skip_serializing_if = "Option::is_none")]
22835	pub organization:     Option<Organization>,
22836	pub projects_v2_item: ProjectsV2Item,
22837	pub sender:           User,
22838}
22839impl From<&ProjectsV2ItemArchived> for ProjectsV2ItemArchived {
22840	fn from(value: &ProjectsV2ItemArchived) -> Self {
22841		value.clone()
22842	}
22843}
22844#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22845pub enum ProjectsV2ItemArchivedAction {
22846	#[serde(rename = "archived")]
22847	Archived,
22848}
22849impl From<&ProjectsV2ItemArchivedAction> for ProjectsV2ItemArchivedAction {
22850	fn from(value: &ProjectsV2ItemArchivedAction) -> Self {
22851		value.clone()
22852	}
22853}
22854impl ToString for ProjectsV2ItemArchivedAction {
22855	fn to_string(&self) -> String {
22856		match *self {
22857			Self::Archived => "archived".to_string(),
22858		}
22859	}
22860}
22861impl std::str::FromStr for ProjectsV2ItemArchivedAction {
22862	type Err = &'static str;
22863
22864	fn from_str(value: &str) -> Result<Self, &'static str> {
22865		match value {
22866			"archived" => Ok(Self::Archived),
22867			_ => Err("invalid value"),
22868		}
22869	}
22870}
22871impl std::convert::TryFrom<&str> for ProjectsV2ItemArchivedAction {
22872	type Error = &'static str;
22873
22874	fn try_from(value: &str) -> Result<Self, &'static str> {
22875		value.parse()
22876	}
22877}
22878impl std::convert::TryFrom<&String> for ProjectsV2ItemArchivedAction {
22879	type Error = &'static str;
22880
22881	fn try_from(value: &String) -> Result<Self, &'static str> {
22882		value.parse()
22883	}
22884}
22885impl std::convert::TryFrom<String> for ProjectsV2ItemArchivedAction {
22886	type Error = &'static str;
22887
22888	fn try_from(value: String) -> Result<Self, &'static str> {
22889		value.parse()
22890	}
22891}
22892#[derive(Clone, Debug, Deserialize, Serialize)]
22893#[serde(deny_unknown_fields)]
22894pub struct ProjectsV2ItemArchivedChanges {
22895	pub archived_at: ProjectsV2ItemArchivedChangesArchivedAt,
22896}
22897impl From<&ProjectsV2ItemArchivedChanges> for ProjectsV2ItemArchivedChanges {
22898	fn from(value: &ProjectsV2ItemArchivedChanges) -> Self {
22899		value.clone()
22900	}
22901}
22902#[derive(Clone, Debug, Deserialize, Serialize)]
22903#[serde(deny_unknown_fields)]
22904pub struct ProjectsV2ItemArchivedChangesArchivedAt {
22905	pub from: (),
22906	pub to:   chrono::DateTime<chrono::offset::Utc>,
22907}
22908impl From<&ProjectsV2ItemArchivedChangesArchivedAt> for ProjectsV2ItemArchivedChangesArchivedAt {
22909	fn from(value: &ProjectsV2ItemArchivedChangesArchivedAt) -> Self {
22910		value.clone()
22911	}
22912}
22913#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22914pub enum ProjectsV2ItemContentType {
22915	DraftIssue,
22916	Issue,
22917	PullRequest,
22918}
22919impl From<&ProjectsV2ItemContentType> for ProjectsV2ItemContentType {
22920	fn from(value: &ProjectsV2ItemContentType) -> Self {
22921		value.clone()
22922	}
22923}
22924impl ToString for ProjectsV2ItemContentType {
22925	fn to_string(&self) -> String {
22926		match *self {
22927			Self::DraftIssue => "DraftIssue".to_string(),
22928			Self::Issue => "Issue".to_string(),
22929			Self::PullRequest => "PullRequest".to_string(),
22930		}
22931	}
22932}
22933impl std::str::FromStr for ProjectsV2ItemContentType {
22934	type Err = &'static str;
22935
22936	fn from_str(value: &str) -> Result<Self, &'static str> {
22937		match value {
22938			"DraftIssue" => Ok(Self::DraftIssue),
22939			"Issue" => Ok(Self::Issue),
22940			"PullRequest" => Ok(Self::PullRequest),
22941			_ => Err("invalid value"),
22942		}
22943	}
22944}
22945impl std::convert::TryFrom<&str> for ProjectsV2ItemContentType {
22946	type Error = &'static str;
22947
22948	fn try_from(value: &str) -> Result<Self, &'static str> {
22949		value.parse()
22950	}
22951}
22952impl std::convert::TryFrom<&String> for ProjectsV2ItemContentType {
22953	type Error = &'static str;
22954
22955	fn try_from(value: &String) -> Result<Self, &'static str> {
22956		value.parse()
22957	}
22958}
22959impl std::convert::TryFrom<String> for ProjectsV2ItemContentType {
22960	type Error = &'static str;
22961
22962	fn try_from(value: String) -> Result<Self, &'static str> {
22963		value.parse()
22964	}
22965}
22966#[derive(Clone, Debug, Deserialize, Serialize)]
22967#[serde(deny_unknown_fields)]
22968pub struct ProjectsV2ItemConverted {
22969	pub action:           ProjectsV2ItemConvertedAction,
22970	pub changes:          ProjectsV2ItemConvertedChanges,
22971	#[serde(default, skip_serializing_if = "Option::is_none")]
22972	pub installation:     Option<InstallationLite>,
22973	#[serde(default, skip_serializing_if = "Option::is_none")]
22974	pub organization:     Option<Organization>,
22975	pub projects_v2_item: ProjectsV2Item,
22976	pub sender:           User,
22977}
22978impl From<&ProjectsV2ItemConverted> for ProjectsV2ItemConverted {
22979	fn from(value: &ProjectsV2ItemConverted) -> Self {
22980		value.clone()
22981	}
22982}
22983#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22984pub enum ProjectsV2ItemConvertedAction {
22985	#[serde(rename = "converted")]
22986	Converted,
22987}
22988impl From<&ProjectsV2ItemConvertedAction> for ProjectsV2ItemConvertedAction {
22989	fn from(value: &ProjectsV2ItemConvertedAction) -> Self {
22990		value.clone()
22991	}
22992}
22993impl ToString for ProjectsV2ItemConvertedAction {
22994	fn to_string(&self) -> String {
22995		match *self {
22996			Self::Converted => "converted".to_string(),
22997		}
22998	}
22999}
23000impl std::str::FromStr for ProjectsV2ItemConvertedAction {
23001	type Err = &'static str;
23002
23003	fn from_str(value: &str) -> Result<Self, &'static str> {
23004		match value {
23005			"converted" => Ok(Self::Converted),
23006			_ => Err("invalid value"),
23007		}
23008	}
23009}
23010impl std::convert::TryFrom<&str> for ProjectsV2ItemConvertedAction {
23011	type Error = &'static str;
23012
23013	fn try_from(value: &str) -> Result<Self, &'static str> {
23014		value.parse()
23015	}
23016}
23017impl std::convert::TryFrom<&String> for ProjectsV2ItemConvertedAction {
23018	type Error = &'static str;
23019
23020	fn try_from(value: &String) -> Result<Self, &'static str> {
23021		value.parse()
23022	}
23023}
23024impl std::convert::TryFrom<String> for ProjectsV2ItemConvertedAction {
23025	type Error = &'static str;
23026
23027	fn try_from(value: String) -> Result<Self, &'static str> {
23028		value.parse()
23029	}
23030}
23031#[derive(Clone, Debug, Deserialize, Serialize)]
23032#[serde(deny_unknown_fields)]
23033pub struct ProjectsV2ItemConvertedChanges {
23034	pub content_type: ProjectsV2ItemConvertedChangesContentType,
23035}
23036impl From<&ProjectsV2ItemConvertedChanges> for ProjectsV2ItemConvertedChanges {
23037	fn from(value: &ProjectsV2ItemConvertedChanges) -> Self {
23038		value.clone()
23039	}
23040}
23041#[derive(Clone, Debug, Deserialize, Serialize)]
23042#[serde(deny_unknown_fields)]
23043pub struct ProjectsV2ItemConvertedChangesContentType {
23044	pub from: ProjectsV2ItemConvertedChangesContentTypeFrom,
23045	pub to:   ProjectsV2ItemConvertedChangesContentTypeTo,
23046}
23047impl From<&ProjectsV2ItemConvertedChangesContentType>
23048	for ProjectsV2ItemConvertedChangesContentType
23049{
23050	fn from(value: &ProjectsV2ItemConvertedChangesContentType) -> Self {
23051		value.clone()
23052	}
23053}
23054#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23055pub enum ProjectsV2ItemConvertedChangesContentTypeFrom {
23056	DraftIssue,
23057}
23058impl From<&ProjectsV2ItemConvertedChangesContentTypeFrom>
23059	for ProjectsV2ItemConvertedChangesContentTypeFrom
23060{
23061	fn from(value: &ProjectsV2ItemConvertedChangesContentTypeFrom) -> Self {
23062		value.clone()
23063	}
23064}
23065impl ToString for ProjectsV2ItemConvertedChangesContentTypeFrom {
23066	fn to_string(&self) -> String {
23067		match *self {
23068			Self::DraftIssue => "DraftIssue".to_string(),
23069		}
23070	}
23071}
23072impl std::str::FromStr for ProjectsV2ItemConvertedChangesContentTypeFrom {
23073	type Err = &'static str;
23074
23075	fn from_str(value: &str) -> Result<Self, &'static str> {
23076		match value {
23077			"DraftIssue" => Ok(Self::DraftIssue),
23078			_ => Err("invalid value"),
23079		}
23080	}
23081}
23082impl std::convert::TryFrom<&str> for ProjectsV2ItemConvertedChangesContentTypeFrom {
23083	type Error = &'static str;
23084
23085	fn try_from(value: &str) -> Result<Self, &'static str> {
23086		value.parse()
23087	}
23088}
23089impl std::convert::TryFrom<&String> for ProjectsV2ItemConvertedChangesContentTypeFrom {
23090	type Error = &'static str;
23091
23092	fn try_from(value: &String) -> Result<Self, &'static str> {
23093		value.parse()
23094	}
23095}
23096impl std::convert::TryFrom<String> for ProjectsV2ItemConvertedChangesContentTypeFrom {
23097	type Error = &'static str;
23098
23099	fn try_from(value: String) -> Result<Self, &'static str> {
23100		value.parse()
23101	}
23102}
23103#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23104pub enum ProjectsV2ItemConvertedChangesContentTypeTo {
23105	Issue,
23106}
23107impl From<&ProjectsV2ItemConvertedChangesContentTypeTo>
23108	for ProjectsV2ItemConvertedChangesContentTypeTo
23109{
23110	fn from(value: &ProjectsV2ItemConvertedChangesContentTypeTo) -> Self {
23111		value.clone()
23112	}
23113}
23114impl ToString for ProjectsV2ItemConvertedChangesContentTypeTo {
23115	fn to_string(&self) -> String {
23116		match *self {
23117			Self::Issue => "Issue".to_string(),
23118		}
23119	}
23120}
23121impl std::str::FromStr for ProjectsV2ItemConvertedChangesContentTypeTo {
23122	type Err = &'static str;
23123
23124	fn from_str(value: &str) -> Result<Self, &'static str> {
23125		match value {
23126			"Issue" => Ok(Self::Issue),
23127			_ => Err("invalid value"),
23128		}
23129	}
23130}
23131impl std::convert::TryFrom<&str> for ProjectsV2ItemConvertedChangesContentTypeTo {
23132	type Error = &'static str;
23133
23134	fn try_from(value: &str) -> Result<Self, &'static str> {
23135		value.parse()
23136	}
23137}
23138impl std::convert::TryFrom<&String> for ProjectsV2ItemConvertedChangesContentTypeTo {
23139	type Error = &'static str;
23140
23141	fn try_from(value: &String) -> Result<Self, &'static str> {
23142		value.parse()
23143	}
23144}
23145impl std::convert::TryFrom<String> for ProjectsV2ItemConvertedChangesContentTypeTo {
23146	type Error = &'static str;
23147
23148	fn try_from(value: String) -> Result<Self, &'static str> {
23149		value.parse()
23150	}
23151}
23152#[derive(Clone, Debug, Deserialize, Serialize)]
23153#[serde(deny_unknown_fields)]
23154pub struct ProjectsV2ItemCreated {
23155	pub action:           ProjectsV2ItemCreatedAction,
23156	#[serde(default, skip_serializing_if = "Option::is_none")]
23157	pub installation:     Option<InstallationLite>,
23158	#[serde(default, skip_serializing_if = "Option::is_none")]
23159	pub organization:     Option<Organization>,
23160	pub projects_v2_item: ProjectsV2Item,
23161	pub sender:           User,
23162}
23163impl From<&ProjectsV2ItemCreated> for ProjectsV2ItemCreated {
23164	fn from(value: &ProjectsV2ItemCreated) -> Self {
23165		value.clone()
23166	}
23167}
23168#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23169pub enum ProjectsV2ItemCreatedAction {
23170	#[serde(rename = "created")]
23171	Created,
23172}
23173impl From<&ProjectsV2ItemCreatedAction> for ProjectsV2ItemCreatedAction {
23174	fn from(value: &ProjectsV2ItemCreatedAction) -> Self {
23175		value.clone()
23176	}
23177}
23178impl ToString for ProjectsV2ItemCreatedAction {
23179	fn to_string(&self) -> String {
23180		match *self {
23181			Self::Created => "created".to_string(),
23182		}
23183	}
23184}
23185impl std::str::FromStr for ProjectsV2ItemCreatedAction {
23186	type Err = &'static str;
23187
23188	fn from_str(value: &str) -> Result<Self, &'static str> {
23189		match value {
23190			"created" => Ok(Self::Created),
23191			_ => Err("invalid value"),
23192		}
23193	}
23194}
23195impl std::convert::TryFrom<&str> for ProjectsV2ItemCreatedAction {
23196	type Error = &'static str;
23197
23198	fn try_from(value: &str) -> Result<Self, &'static str> {
23199		value.parse()
23200	}
23201}
23202impl std::convert::TryFrom<&String> for ProjectsV2ItemCreatedAction {
23203	type Error = &'static str;
23204
23205	fn try_from(value: &String) -> Result<Self, &'static str> {
23206		value.parse()
23207	}
23208}
23209impl std::convert::TryFrom<String> for ProjectsV2ItemCreatedAction {
23210	type Error = &'static str;
23211
23212	fn try_from(value: String) -> Result<Self, &'static str> {
23213		value.parse()
23214	}
23215}
23216#[derive(Clone, Debug, Deserialize, Serialize)]
23217#[serde(deny_unknown_fields)]
23218pub struct ProjectsV2ItemDeleted {
23219	pub action:           ProjectsV2ItemDeletedAction,
23220	#[serde(default, skip_serializing_if = "Option::is_none")]
23221	pub installation:     Option<InstallationLite>,
23222	#[serde(default, skip_serializing_if = "Option::is_none")]
23223	pub organization:     Option<Organization>,
23224	pub projects_v2_item: ProjectsV2Item,
23225	pub sender:           User,
23226}
23227impl From<&ProjectsV2ItemDeleted> for ProjectsV2ItemDeleted {
23228	fn from(value: &ProjectsV2ItemDeleted) -> Self {
23229		value.clone()
23230	}
23231}
23232#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23233pub enum ProjectsV2ItemDeletedAction {
23234	#[serde(rename = "deleted")]
23235	Deleted,
23236}
23237impl From<&ProjectsV2ItemDeletedAction> for ProjectsV2ItemDeletedAction {
23238	fn from(value: &ProjectsV2ItemDeletedAction) -> Self {
23239		value.clone()
23240	}
23241}
23242impl ToString for ProjectsV2ItemDeletedAction {
23243	fn to_string(&self) -> String {
23244		match *self {
23245			Self::Deleted => "deleted".to_string(),
23246		}
23247	}
23248}
23249impl std::str::FromStr for ProjectsV2ItemDeletedAction {
23250	type Err = &'static str;
23251
23252	fn from_str(value: &str) -> Result<Self, &'static str> {
23253		match value {
23254			"deleted" => Ok(Self::Deleted),
23255			_ => Err("invalid value"),
23256		}
23257	}
23258}
23259impl std::convert::TryFrom<&str> for ProjectsV2ItemDeletedAction {
23260	type Error = &'static str;
23261
23262	fn try_from(value: &str) -> Result<Self, &'static str> {
23263		value.parse()
23264	}
23265}
23266impl std::convert::TryFrom<&String> for ProjectsV2ItemDeletedAction {
23267	type Error = &'static str;
23268
23269	fn try_from(value: &String) -> Result<Self, &'static str> {
23270		value.parse()
23271	}
23272}
23273impl std::convert::TryFrom<String> for ProjectsV2ItemDeletedAction {
23274	type Error = &'static str;
23275
23276	fn try_from(value: String) -> Result<Self, &'static str> {
23277		value.parse()
23278	}
23279}
23280#[derive(Clone, Debug, Deserialize, Serialize)]
23281#[serde(deny_unknown_fields)]
23282pub struct ProjectsV2ItemEdited {
23283	pub action:           ProjectsV2ItemEditedAction,
23284	pub changes:          ProjectsV2ItemEditedChanges,
23285	#[serde(default, skip_serializing_if = "Option::is_none")]
23286	pub installation:     Option<InstallationLite>,
23287	#[serde(default, skip_serializing_if = "Option::is_none")]
23288	pub organization:     Option<Organization>,
23289	pub projects_v2_item: ProjectsV2Item,
23290	pub sender:           User,
23291}
23292impl From<&ProjectsV2ItemEdited> for ProjectsV2ItemEdited {
23293	fn from(value: &ProjectsV2ItemEdited) -> Self {
23294		value.clone()
23295	}
23296}
23297#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23298pub enum ProjectsV2ItemEditedAction {
23299	#[serde(rename = "edited")]
23300	Edited,
23301}
23302impl From<&ProjectsV2ItemEditedAction> for ProjectsV2ItemEditedAction {
23303	fn from(value: &ProjectsV2ItemEditedAction) -> Self {
23304		value.clone()
23305	}
23306}
23307impl ToString for ProjectsV2ItemEditedAction {
23308	fn to_string(&self) -> String {
23309		match *self {
23310			Self::Edited => "edited".to_string(),
23311		}
23312	}
23313}
23314impl std::str::FromStr for ProjectsV2ItemEditedAction {
23315	type Err = &'static str;
23316
23317	fn from_str(value: &str) -> Result<Self, &'static str> {
23318		match value {
23319			"edited" => Ok(Self::Edited),
23320			_ => Err("invalid value"),
23321		}
23322	}
23323}
23324impl std::convert::TryFrom<&str> for ProjectsV2ItemEditedAction {
23325	type Error = &'static str;
23326
23327	fn try_from(value: &str) -> Result<Self, &'static str> {
23328		value.parse()
23329	}
23330}
23331impl std::convert::TryFrom<&String> for ProjectsV2ItemEditedAction {
23332	type Error = &'static str;
23333
23334	fn try_from(value: &String) -> Result<Self, &'static str> {
23335		value.parse()
23336	}
23337}
23338impl std::convert::TryFrom<String> for ProjectsV2ItemEditedAction {
23339	type Error = &'static str;
23340
23341	fn try_from(value: String) -> Result<Self, &'static str> {
23342		value.parse()
23343	}
23344}
23345#[derive(Clone, Debug, Deserialize, Serialize)]
23346#[serde(deny_unknown_fields)]
23347pub struct ProjectsV2ItemEditedChanges {
23348	pub field_value: ProjectsV2ItemEditedChangesFieldValue,
23349}
23350impl From<&ProjectsV2ItemEditedChanges> for ProjectsV2ItemEditedChanges {
23351	fn from(value: &ProjectsV2ItemEditedChanges) -> Self {
23352		value.clone()
23353	}
23354}
23355#[derive(Clone, Debug, Deserialize, Serialize)]
23356#[serde(deny_unknown_fields)]
23357pub struct ProjectsV2ItemEditedChangesFieldValue {
23358	pub field_node_id: String,
23359	pub field_type:    ProjectsV2ItemEditedChangesFieldValueFieldType,
23360}
23361impl From<&ProjectsV2ItemEditedChangesFieldValue> for ProjectsV2ItemEditedChangesFieldValue {
23362	fn from(value: &ProjectsV2ItemEditedChangesFieldValue) -> Self {
23363		value.clone()
23364	}
23365}
23366#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23367pub enum ProjectsV2ItemEditedChangesFieldValueFieldType {
23368	#[serde(rename = "single_select")]
23369	SingleSelect,
23370	#[serde(rename = "date")]
23371	Date,
23372	#[serde(rename = "number")]
23373	Number,
23374	#[serde(rename = "text")]
23375	Text,
23376	#[serde(rename = "iteration")]
23377	Iteration,
23378}
23379impl From<&ProjectsV2ItemEditedChangesFieldValueFieldType>
23380	for ProjectsV2ItemEditedChangesFieldValueFieldType
23381{
23382	fn from(value: &ProjectsV2ItemEditedChangesFieldValueFieldType) -> Self {
23383		value.clone()
23384	}
23385}
23386impl ToString for ProjectsV2ItemEditedChangesFieldValueFieldType {
23387	fn to_string(&self) -> String {
23388		match *self {
23389			Self::SingleSelect => "single_select".to_string(),
23390			Self::Date => "date".to_string(),
23391			Self::Number => "number".to_string(),
23392			Self::Text => "text".to_string(),
23393			Self::Iteration => "iteration".to_string(),
23394		}
23395	}
23396}
23397impl std::str::FromStr for ProjectsV2ItemEditedChangesFieldValueFieldType {
23398	type Err = &'static str;
23399
23400	fn from_str(value: &str) -> Result<Self, &'static str> {
23401		match value {
23402			"single_select" => Ok(Self::SingleSelect),
23403			"date" => Ok(Self::Date),
23404			"number" => Ok(Self::Number),
23405			"text" => Ok(Self::Text),
23406			"iteration" => Ok(Self::Iteration),
23407			_ => Err("invalid value"),
23408		}
23409	}
23410}
23411impl std::convert::TryFrom<&str> for ProjectsV2ItemEditedChangesFieldValueFieldType {
23412	type Error = &'static str;
23413
23414	fn try_from(value: &str) -> Result<Self, &'static str> {
23415		value.parse()
23416	}
23417}
23418impl std::convert::TryFrom<&String> for ProjectsV2ItemEditedChangesFieldValueFieldType {
23419	type Error = &'static str;
23420
23421	fn try_from(value: &String) -> Result<Self, &'static str> {
23422		value.parse()
23423	}
23424}
23425impl std::convert::TryFrom<String> for ProjectsV2ItemEditedChangesFieldValueFieldType {
23426	type Error = &'static str;
23427
23428	fn try_from(value: String) -> Result<Self, &'static str> {
23429		value.parse()
23430	}
23431}
23432#[derive(Clone, Debug, Deserialize, Serialize)]
23433#[serde(untagged)]
23434pub enum ProjectsV2ItemEvent {
23435	Archived(ProjectsV2ItemArchived),
23436	Converted(ProjectsV2ItemConverted),
23437	Created(ProjectsV2ItemCreated),
23438	Deleted(ProjectsV2ItemDeleted),
23439	Edited(ProjectsV2ItemEdited),
23440	Reordered(ProjectsV2ItemReordered),
23441	Restored(ProjectsV2ItemRestored),
23442}
23443impl From<&ProjectsV2ItemEvent> for ProjectsV2ItemEvent {
23444	fn from(value: &ProjectsV2ItemEvent) -> Self {
23445		value.clone()
23446	}
23447}
23448impl From<ProjectsV2ItemArchived> for ProjectsV2ItemEvent {
23449	fn from(value: ProjectsV2ItemArchived) -> Self {
23450		Self::Archived(value)
23451	}
23452}
23453impl From<ProjectsV2ItemConverted> for ProjectsV2ItemEvent {
23454	fn from(value: ProjectsV2ItemConverted) -> Self {
23455		Self::Converted(value)
23456	}
23457}
23458impl From<ProjectsV2ItemCreated> for ProjectsV2ItemEvent {
23459	fn from(value: ProjectsV2ItemCreated) -> Self {
23460		Self::Created(value)
23461	}
23462}
23463impl From<ProjectsV2ItemDeleted> for ProjectsV2ItemEvent {
23464	fn from(value: ProjectsV2ItemDeleted) -> Self {
23465		Self::Deleted(value)
23466	}
23467}
23468impl From<ProjectsV2ItemEdited> for ProjectsV2ItemEvent {
23469	fn from(value: ProjectsV2ItemEdited) -> Self {
23470		Self::Edited(value)
23471	}
23472}
23473impl From<ProjectsV2ItemReordered> for ProjectsV2ItemEvent {
23474	fn from(value: ProjectsV2ItemReordered) -> Self {
23475		Self::Reordered(value)
23476	}
23477}
23478impl From<ProjectsV2ItemRestored> for ProjectsV2ItemEvent {
23479	fn from(value: ProjectsV2ItemRestored) -> Self {
23480		Self::Restored(value)
23481	}
23482}
23483#[derive(Clone, Debug, Deserialize, Serialize)]
23484#[serde(deny_unknown_fields)]
23485pub struct ProjectsV2ItemReordered {
23486	pub action:           ProjectsV2ItemReorderedAction,
23487	pub changes:          ProjectsV2ItemReorderedChanges,
23488	#[serde(default, skip_serializing_if = "Option::is_none")]
23489	pub installation:     Option<InstallationLite>,
23490	#[serde(default, skip_serializing_if = "Option::is_none")]
23491	pub organization:     Option<Organization>,
23492	pub projects_v2_item: ProjectsV2Item,
23493	pub sender:           User,
23494}
23495impl From<&ProjectsV2ItemReordered> for ProjectsV2ItemReordered {
23496	fn from(value: &ProjectsV2ItemReordered) -> Self {
23497		value.clone()
23498	}
23499}
23500#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23501pub enum ProjectsV2ItemReorderedAction {
23502	#[serde(rename = "reordered")]
23503	Reordered,
23504}
23505impl From<&ProjectsV2ItemReorderedAction> for ProjectsV2ItemReorderedAction {
23506	fn from(value: &ProjectsV2ItemReorderedAction) -> Self {
23507		value.clone()
23508	}
23509}
23510impl ToString for ProjectsV2ItemReorderedAction {
23511	fn to_string(&self) -> String {
23512		match *self {
23513			Self::Reordered => "reordered".to_string(),
23514		}
23515	}
23516}
23517impl std::str::FromStr for ProjectsV2ItemReorderedAction {
23518	type Err = &'static str;
23519
23520	fn from_str(value: &str) -> Result<Self, &'static str> {
23521		match value {
23522			"reordered" => Ok(Self::Reordered),
23523			_ => Err("invalid value"),
23524		}
23525	}
23526}
23527impl std::convert::TryFrom<&str> for ProjectsV2ItemReorderedAction {
23528	type Error = &'static str;
23529
23530	fn try_from(value: &str) -> Result<Self, &'static str> {
23531		value.parse()
23532	}
23533}
23534impl std::convert::TryFrom<&String> for ProjectsV2ItemReorderedAction {
23535	type Error = &'static str;
23536
23537	fn try_from(value: &String) -> Result<Self, &'static str> {
23538		value.parse()
23539	}
23540}
23541impl std::convert::TryFrom<String> for ProjectsV2ItemReorderedAction {
23542	type Error = &'static str;
23543
23544	fn try_from(value: String) -> Result<Self, &'static str> {
23545		value.parse()
23546	}
23547}
23548#[derive(Clone, Debug, Deserialize, Serialize)]
23549#[serde(deny_unknown_fields)]
23550pub struct ProjectsV2ItemReorderedChanges {
23551	pub previous_projects_v2_item_node_id:
23552		ProjectsV2ItemReorderedChangesPreviousProjectsV2ItemNodeId,
23553}
23554impl From<&ProjectsV2ItemReorderedChanges> for ProjectsV2ItemReorderedChanges {
23555	fn from(value: &ProjectsV2ItemReorderedChanges) -> Self {
23556		value.clone()
23557	}
23558}
23559#[derive(Clone, Debug, Deserialize, Serialize)]
23560#[serde(deny_unknown_fields)]
23561pub struct ProjectsV2ItemReorderedChangesPreviousProjectsV2ItemNodeId {
23562	pub from: String,
23563	pub to:   Option<String>,
23564}
23565impl From<&ProjectsV2ItemReorderedChangesPreviousProjectsV2ItemNodeId>
23566	for ProjectsV2ItemReorderedChangesPreviousProjectsV2ItemNodeId
23567{
23568	fn from(value: &ProjectsV2ItemReorderedChangesPreviousProjectsV2ItemNodeId) -> Self {
23569		value.clone()
23570	}
23571}
23572#[derive(Clone, Debug, Deserialize, Serialize)]
23573#[serde(deny_unknown_fields)]
23574pub struct ProjectsV2ItemRestored {
23575	pub action:           ProjectsV2ItemRestoredAction,
23576	pub changes:          ProjectsV2ItemRestoredChanges,
23577	#[serde(default, skip_serializing_if = "Option::is_none")]
23578	pub installation:     Option<InstallationLite>,
23579	#[serde(default, skip_serializing_if = "Option::is_none")]
23580	pub organization:     Option<Organization>,
23581	pub projects_v2_item: ProjectsV2Item,
23582	pub sender:           User,
23583}
23584impl From<&ProjectsV2ItemRestored> for ProjectsV2ItemRestored {
23585	fn from(value: &ProjectsV2ItemRestored) -> Self {
23586		value.clone()
23587	}
23588}
23589#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23590pub enum ProjectsV2ItemRestoredAction {
23591	#[serde(rename = "restored")]
23592	Restored,
23593}
23594impl From<&ProjectsV2ItemRestoredAction> for ProjectsV2ItemRestoredAction {
23595	fn from(value: &ProjectsV2ItemRestoredAction) -> Self {
23596		value.clone()
23597	}
23598}
23599impl ToString for ProjectsV2ItemRestoredAction {
23600	fn to_string(&self) -> String {
23601		match *self {
23602			Self::Restored => "restored".to_string(),
23603		}
23604	}
23605}
23606impl std::str::FromStr for ProjectsV2ItemRestoredAction {
23607	type Err = &'static str;
23608
23609	fn from_str(value: &str) -> Result<Self, &'static str> {
23610		match value {
23611			"restored" => Ok(Self::Restored),
23612			_ => Err("invalid value"),
23613		}
23614	}
23615}
23616impl std::convert::TryFrom<&str> for ProjectsV2ItemRestoredAction {
23617	type Error = &'static str;
23618
23619	fn try_from(value: &str) -> Result<Self, &'static str> {
23620		value.parse()
23621	}
23622}
23623impl std::convert::TryFrom<&String> for ProjectsV2ItemRestoredAction {
23624	type Error = &'static str;
23625
23626	fn try_from(value: &String) -> Result<Self, &'static str> {
23627		value.parse()
23628	}
23629}
23630impl std::convert::TryFrom<String> for ProjectsV2ItemRestoredAction {
23631	type Error = &'static str;
23632
23633	fn try_from(value: String) -> Result<Self, &'static str> {
23634		value.parse()
23635	}
23636}
23637#[derive(Clone, Debug, Deserialize, Serialize)]
23638#[serde(deny_unknown_fields)]
23639pub struct ProjectsV2ItemRestoredChanges {
23640	pub archived_at: ProjectsV2ItemRestoredChangesArchivedAt,
23641}
23642impl From<&ProjectsV2ItemRestoredChanges> for ProjectsV2ItemRestoredChanges {
23643	fn from(value: &ProjectsV2ItemRestoredChanges) -> Self {
23644		value.clone()
23645	}
23646}
23647#[derive(Clone, Debug, Deserialize, Serialize)]
23648#[serde(deny_unknown_fields)]
23649pub struct ProjectsV2ItemRestoredChangesArchivedAt {
23650	pub from: chrono::DateTime<chrono::offset::Utc>,
23651	pub to:   (),
23652}
23653impl From<&ProjectsV2ItemRestoredChangesArchivedAt> for ProjectsV2ItemRestoredChangesArchivedAt {
23654	fn from(value: &ProjectsV2ItemRestoredChangesArchivedAt) -> Self {
23655		value.clone()
23656	}
23657}
23658/// When a private repository is made public.
23659#[derive(Clone, Debug, Deserialize, Serialize)]
23660#[serde(deny_unknown_fields)]
23661pub struct PublicEvent {
23662	#[serde(default, skip_serializing_if = "Option::is_none")]
23663	pub installation: Option<InstallationLite>,
23664	#[serde(default, skip_serializing_if = "Option::is_none")]
23665	pub organization: Option<Organization>,
23666	pub repository:   Repository,
23667	pub sender:       User,
23668}
23669impl From<&PublicEvent> for PublicEvent {
23670	fn from(value: &PublicEvent) -> Self {
23671		value.clone()
23672	}
23673}
23674#[derive(Clone, Debug, Deserialize, Serialize)]
23675#[serde(deny_unknown_fields)]
23676pub struct PullRequest {
23677	pub active_lock_reason:    Option<PullRequestActiveLockReason>,
23678	pub additions:             i64,
23679	pub assignee:              Option<User>,
23680	pub assignees:             Vec<User>,
23681	pub author_association:    AuthorAssociation,
23682	pub auto_merge:            Option<AutoMerge>,
23683	pub base:                  PullRequestBase,
23684	pub body:                  Option<String>,
23685	pub changed_files:         i64,
23686	pub closed_at:             Option<chrono::DateTime<chrono::offset::Utc>>,
23687	pub comments:              i64,
23688	pub comments_url:          String,
23689	pub commits:               i64,
23690	pub commits_url:           String,
23691	pub created_at:            chrono::DateTime<chrono::offset::Utc>,
23692	pub deletions:             i64,
23693	pub diff_url:              String,
23694	/// Indicates whether or not the pull request is a draft.
23695	pub draft:                 bool,
23696	pub head:                  PullRequestHead,
23697	pub html_url:              String,
23698	pub id:                    i64,
23699	pub issue_url:             String,
23700	pub labels:                Vec<Label>,
23701	#[serde(rename = "_links")]
23702	pub links:                 PullRequestLinks,
23703	pub locked:                bool,
23704	/// Indicates whether maintainers can modify the pull request.
23705	pub maintainer_can_modify: bool,
23706	pub merge_commit_sha:      Option<String>,
23707	pub mergeable:             Option<bool>,
23708	pub mergeable_state:       String,
23709	pub merged:                Option<bool>,
23710	pub merged_at:             Option<chrono::DateTime<chrono::offset::Utc>>,
23711	pub merged_by:             Option<User>,
23712	pub milestone:             Option<Milestone>,
23713	pub node_id:               String,
23714	/// Number uniquely identifying the pull request within its repository.
23715	pub number:                i64,
23716	pub patch_url:             String,
23717	pub rebaseable:            Option<bool>,
23718	pub requested_reviewers:   Vec<PullRequestRequestedReviewersItem>,
23719	pub requested_teams:       Vec<Team>,
23720	pub review_comment_url:    String,
23721	pub review_comments:       i64,
23722	pub review_comments_url:   String,
23723	/// State of this Pull Request. Either `open` or `closed`.
23724	pub state:                 PullRequestState,
23725	pub statuses_url:          String,
23726	/// The title of the pull request.
23727	pub title:                 String,
23728	pub updated_at:            chrono::DateTime<chrono::offset::Utc>,
23729	pub url:                   String,
23730	pub user:                  User,
23731}
23732impl From<&PullRequest> for PullRequest {
23733	fn from(value: &PullRequest) -> Self {
23734		value.clone()
23735	}
23736}
23737#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23738pub enum PullRequestActiveLockReason {
23739	#[serde(rename = "resolved")]
23740	Resolved,
23741	#[serde(rename = "off-topic")]
23742	OffTopic,
23743	#[serde(rename = "too heated")]
23744	TooHeated,
23745	#[serde(rename = "spam")]
23746	Spam,
23747}
23748impl From<&PullRequestActiveLockReason> for PullRequestActiveLockReason {
23749	fn from(value: &PullRequestActiveLockReason) -> Self {
23750		value.clone()
23751	}
23752}
23753impl ToString for PullRequestActiveLockReason {
23754	fn to_string(&self) -> String {
23755		match *self {
23756			Self::Resolved => "resolved".to_string(),
23757			Self::OffTopic => "off-topic".to_string(),
23758			Self::TooHeated => "too heated".to_string(),
23759			Self::Spam => "spam".to_string(),
23760		}
23761	}
23762}
23763impl std::str::FromStr for PullRequestActiveLockReason {
23764	type Err = &'static str;
23765
23766	fn from_str(value: &str) -> Result<Self, &'static str> {
23767		match value {
23768			"resolved" => Ok(Self::Resolved),
23769			"off-topic" => Ok(Self::OffTopic),
23770			"too heated" => Ok(Self::TooHeated),
23771			"spam" => Ok(Self::Spam),
23772			_ => Err("invalid value"),
23773		}
23774	}
23775}
23776impl std::convert::TryFrom<&str> for PullRequestActiveLockReason {
23777	type Error = &'static str;
23778
23779	fn try_from(value: &str) -> Result<Self, &'static str> {
23780		value.parse()
23781	}
23782}
23783impl std::convert::TryFrom<&String> for PullRequestActiveLockReason {
23784	type Error = &'static str;
23785
23786	fn try_from(value: &String) -> Result<Self, &'static str> {
23787		value.parse()
23788	}
23789}
23790impl std::convert::TryFrom<String> for PullRequestActiveLockReason {
23791	type Error = &'static str;
23792
23793	fn try_from(value: String) -> Result<Self, &'static str> {
23794		value.parse()
23795	}
23796}
23797#[derive(Clone, Debug, Deserialize, Serialize)]
23798#[serde(deny_unknown_fields)]
23799pub struct PullRequestAssigned {
23800	pub action:       PullRequestAssignedAction,
23801	pub assignee:     User,
23802	#[serde(default, skip_serializing_if = "Option::is_none")]
23803	pub installation: Option<InstallationLite>,
23804	/// The pull request number.
23805	pub number:       i64,
23806	#[serde(default, skip_serializing_if = "Option::is_none")]
23807	pub organization: Option<Organization>,
23808	pub pull_request: PullRequest,
23809	pub repository:   Repository,
23810	pub sender:       User,
23811}
23812impl From<&PullRequestAssigned> for PullRequestAssigned {
23813	fn from(value: &PullRequestAssigned) -> Self {
23814		value.clone()
23815	}
23816}
23817#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23818pub enum PullRequestAssignedAction {
23819	#[serde(rename = "assigned")]
23820	Assigned,
23821}
23822impl From<&PullRequestAssignedAction> for PullRequestAssignedAction {
23823	fn from(value: &PullRequestAssignedAction) -> Self {
23824		value.clone()
23825	}
23826}
23827impl ToString for PullRequestAssignedAction {
23828	fn to_string(&self) -> String {
23829		match *self {
23830			Self::Assigned => "assigned".to_string(),
23831		}
23832	}
23833}
23834impl std::str::FromStr for PullRequestAssignedAction {
23835	type Err = &'static str;
23836
23837	fn from_str(value: &str) -> Result<Self, &'static str> {
23838		match value {
23839			"assigned" => Ok(Self::Assigned),
23840			_ => Err("invalid value"),
23841		}
23842	}
23843}
23844impl std::convert::TryFrom<&str> for PullRequestAssignedAction {
23845	type Error = &'static str;
23846
23847	fn try_from(value: &str) -> Result<Self, &'static str> {
23848		value.parse()
23849	}
23850}
23851impl std::convert::TryFrom<&String> for PullRequestAssignedAction {
23852	type Error = &'static str;
23853
23854	fn try_from(value: &String) -> Result<Self, &'static str> {
23855		value.parse()
23856	}
23857}
23858impl std::convert::TryFrom<String> for PullRequestAssignedAction {
23859	type Error = &'static str;
23860
23861	fn try_from(value: String) -> Result<Self, &'static str> {
23862		value.parse()
23863	}
23864}
23865#[derive(Clone, Debug, Deserialize, Serialize)]
23866#[serde(deny_unknown_fields)]
23867pub struct PullRequestAutoMergeDisabled {
23868	pub action:       PullRequestAutoMergeDisabledAction,
23869	#[serde(default, skip_serializing_if = "Option::is_none")]
23870	pub installation: Option<InstallationLite>,
23871	pub number:       i64,
23872	#[serde(default, skip_serializing_if = "Option::is_none")]
23873	pub organization: Option<Organization>,
23874	pub pull_request: PullRequest,
23875	pub reason:       String,
23876	pub repository:   Repository,
23877	pub sender:       User,
23878}
23879impl From<&PullRequestAutoMergeDisabled> for PullRequestAutoMergeDisabled {
23880	fn from(value: &PullRequestAutoMergeDisabled) -> Self {
23881		value.clone()
23882	}
23883}
23884#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23885pub enum PullRequestAutoMergeDisabledAction {
23886	#[serde(rename = "auto_merge_disabled")]
23887	AutoMergeDisabled,
23888}
23889impl From<&PullRequestAutoMergeDisabledAction> for PullRequestAutoMergeDisabledAction {
23890	fn from(value: &PullRequestAutoMergeDisabledAction) -> Self {
23891		value.clone()
23892	}
23893}
23894impl ToString for PullRequestAutoMergeDisabledAction {
23895	fn to_string(&self) -> String {
23896		match *self {
23897			Self::AutoMergeDisabled => "auto_merge_disabled".to_string(),
23898		}
23899	}
23900}
23901impl std::str::FromStr for PullRequestAutoMergeDisabledAction {
23902	type Err = &'static str;
23903
23904	fn from_str(value: &str) -> Result<Self, &'static str> {
23905		match value {
23906			"auto_merge_disabled" => Ok(Self::AutoMergeDisabled),
23907			_ => Err("invalid value"),
23908		}
23909	}
23910}
23911impl std::convert::TryFrom<&str> for PullRequestAutoMergeDisabledAction {
23912	type Error = &'static str;
23913
23914	fn try_from(value: &str) -> Result<Self, &'static str> {
23915		value.parse()
23916	}
23917}
23918impl std::convert::TryFrom<&String> for PullRequestAutoMergeDisabledAction {
23919	type Error = &'static str;
23920
23921	fn try_from(value: &String) -> Result<Self, &'static str> {
23922		value.parse()
23923	}
23924}
23925impl std::convert::TryFrom<String> for PullRequestAutoMergeDisabledAction {
23926	type Error = &'static str;
23927
23928	fn try_from(value: String) -> Result<Self, &'static str> {
23929		value.parse()
23930	}
23931}
23932#[derive(Clone, Debug, Deserialize, Serialize)]
23933#[serde(deny_unknown_fields)]
23934pub struct PullRequestAutoMergeEnabled {
23935	pub action:       PullRequestAutoMergeEnabledAction,
23936	#[serde(default, skip_serializing_if = "Option::is_none")]
23937	pub installation: Option<InstallationLite>,
23938	pub number:       i64,
23939	#[serde(default, skip_serializing_if = "Option::is_none")]
23940	pub organization: Option<Organization>,
23941	pub pull_request: PullRequest,
23942	pub reason:       String,
23943	pub repository:   Repository,
23944	pub sender:       User,
23945}
23946impl From<&PullRequestAutoMergeEnabled> for PullRequestAutoMergeEnabled {
23947	fn from(value: &PullRequestAutoMergeEnabled) -> Self {
23948		value.clone()
23949	}
23950}
23951#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
23952pub enum PullRequestAutoMergeEnabledAction {
23953	#[serde(rename = "auto_merge_enabled")]
23954	AutoMergeEnabled,
23955}
23956impl From<&PullRequestAutoMergeEnabledAction> for PullRequestAutoMergeEnabledAction {
23957	fn from(value: &PullRequestAutoMergeEnabledAction) -> Self {
23958		value.clone()
23959	}
23960}
23961impl ToString for PullRequestAutoMergeEnabledAction {
23962	fn to_string(&self) -> String {
23963		match *self {
23964			Self::AutoMergeEnabled => "auto_merge_enabled".to_string(),
23965		}
23966	}
23967}
23968impl std::str::FromStr for PullRequestAutoMergeEnabledAction {
23969	type Err = &'static str;
23970
23971	fn from_str(value: &str) -> Result<Self, &'static str> {
23972		match value {
23973			"auto_merge_enabled" => Ok(Self::AutoMergeEnabled),
23974			_ => Err("invalid value"),
23975		}
23976	}
23977}
23978impl std::convert::TryFrom<&str> for PullRequestAutoMergeEnabledAction {
23979	type Error = &'static str;
23980
23981	fn try_from(value: &str) -> Result<Self, &'static str> {
23982		value.parse()
23983	}
23984}
23985impl std::convert::TryFrom<&String> for PullRequestAutoMergeEnabledAction {
23986	type Error = &'static str;
23987
23988	fn try_from(value: &String) -> Result<Self, &'static str> {
23989		value.parse()
23990	}
23991}
23992impl std::convert::TryFrom<String> for PullRequestAutoMergeEnabledAction {
23993	type Error = &'static str;
23994
23995	fn try_from(value: String) -> Result<Self, &'static str> {
23996		value.parse()
23997	}
23998}
23999#[derive(Clone, Debug, Deserialize, Serialize)]
24000#[serde(deny_unknown_fields)]
24001pub struct PullRequestBase {
24002	pub label: String,
24003	#[serde(rename = "ref")]
24004	pub ref_:  String,
24005	pub repo:  Repository,
24006	pub sha:   String,
24007	pub user:  User,
24008}
24009impl From<&PullRequestBase> for PullRequestBase {
24010	fn from(value: &PullRequestBase) -> Self {
24011		value.clone()
24012	}
24013}
24014#[derive(Clone, Debug, Deserialize, Serialize)]
24015#[serde(deny_unknown_fields)]
24016pub struct PullRequestClosed {
24017	pub action:       PullRequestClosedAction,
24018	#[serde(default, skip_serializing_if = "Option::is_none")]
24019	pub installation: Option<InstallationLite>,
24020	/// The pull request number.
24021	pub number:       i64,
24022	#[serde(default, skip_serializing_if = "Option::is_none")]
24023	pub organization: Option<Organization>,
24024	pub pull_request: PullRequest,
24025	pub repository:   Repository,
24026	pub sender:       User,
24027}
24028impl From<&PullRequestClosed> for PullRequestClosed {
24029	fn from(value: &PullRequestClosed) -> Self {
24030		value.clone()
24031	}
24032}
24033#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24034pub enum PullRequestClosedAction {
24035	#[serde(rename = "closed")]
24036	Closed,
24037}
24038impl From<&PullRequestClosedAction> for PullRequestClosedAction {
24039	fn from(value: &PullRequestClosedAction) -> Self {
24040		value.clone()
24041	}
24042}
24043impl ToString for PullRequestClosedAction {
24044	fn to_string(&self) -> String {
24045		match *self {
24046			Self::Closed => "closed".to_string(),
24047		}
24048	}
24049}
24050impl std::str::FromStr for PullRequestClosedAction {
24051	type Err = &'static str;
24052
24053	fn from_str(value: &str) -> Result<Self, &'static str> {
24054		match value {
24055			"closed" => Ok(Self::Closed),
24056			_ => Err("invalid value"),
24057		}
24058	}
24059}
24060impl std::convert::TryFrom<&str> for PullRequestClosedAction {
24061	type Error = &'static str;
24062
24063	fn try_from(value: &str) -> Result<Self, &'static str> {
24064		value.parse()
24065	}
24066}
24067impl std::convert::TryFrom<&String> for PullRequestClosedAction {
24068	type Error = &'static str;
24069
24070	fn try_from(value: &String) -> Result<Self, &'static str> {
24071		value.parse()
24072	}
24073}
24074impl std::convert::TryFrom<String> for PullRequestClosedAction {
24075	type Error = &'static str;
24076
24077	fn try_from(value: String) -> Result<Self, &'static str> {
24078		value.parse()
24079	}
24080}
24081#[derive(Clone, Debug, Deserialize, Serialize)]
24082#[serde(deny_unknown_fields)]
24083pub struct PullRequestConvertedToDraft {
24084	pub action:       PullRequestConvertedToDraftAction,
24085	#[serde(default, skip_serializing_if = "Option::is_none")]
24086	pub installation: Option<InstallationLite>,
24087	/// The pull request number.
24088	pub number:       i64,
24089	#[serde(default, skip_serializing_if = "Option::is_none")]
24090	pub organization: Option<Organization>,
24091	pub pull_request: PullRequest,
24092	pub repository:   Repository,
24093	pub sender:       User,
24094}
24095impl From<&PullRequestConvertedToDraft> for PullRequestConvertedToDraft {
24096	fn from(value: &PullRequestConvertedToDraft) -> Self {
24097		value.clone()
24098	}
24099}
24100#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24101pub enum PullRequestConvertedToDraftAction {
24102	#[serde(rename = "converted_to_draft")]
24103	ConvertedToDraft,
24104}
24105impl From<&PullRequestConvertedToDraftAction> for PullRequestConvertedToDraftAction {
24106	fn from(value: &PullRequestConvertedToDraftAction) -> Self {
24107		value.clone()
24108	}
24109}
24110impl ToString for PullRequestConvertedToDraftAction {
24111	fn to_string(&self) -> String {
24112		match *self {
24113			Self::ConvertedToDraft => "converted_to_draft".to_string(),
24114		}
24115	}
24116}
24117impl std::str::FromStr for PullRequestConvertedToDraftAction {
24118	type Err = &'static str;
24119
24120	fn from_str(value: &str) -> Result<Self, &'static str> {
24121		match value {
24122			"converted_to_draft" => Ok(Self::ConvertedToDraft),
24123			_ => Err("invalid value"),
24124		}
24125	}
24126}
24127impl std::convert::TryFrom<&str> for PullRequestConvertedToDraftAction {
24128	type Error = &'static str;
24129
24130	fn try_from(value: &str) -> Result<Self, &'static str> {
24131		value.parse()
24132	}
24133}
24134impl std::convert::TryFrom<&String> for PullRequestConvertedToDraftAction {
24135	type Error = &'static str;
24136
24137	fn try_from(value: &String) -> Result<Self, &'static str> {
24138		value.parse()
24139	}
24140}
24141impl std::convert::TryFrom<String> for PullRequestConvertedToDraftAction {
24142	type Error = &'static str;
24143
24144	fn try_from(value: String) -> Result<Self, &'static str> {
24145		value.parse()
24146	}
24147}
24148#[derive(Clone, Debug, Deserialize, Serialize)]
24149#[serde(deny_unknown_fields)]
24150pub struct PullRequestDemilestoned {
24151	pub action:       PullRequestDemilestonedAction,
24152	#[serde(default, skip_serializing_if = "Option::is_none")]
24153	pub installation: Option<InstallationLite>,
24154	pub milestone:    Milestone,
24155	/// The pull request number.
24156	pub number:       i64,
24157	#[serde(default, skip_serializing_if = "Option::is_none")]
24158	pub organization: Option<Organization>,
24159	pub pull_request: PullRequest,
24160	pub repository:   Repository,
24161	pub sender:       User,
24162}
24163impl From<&PullRequestDemilestoned> for PullRequestDemilestoned {
24164	fn from(value: &PullRequestDemilestoned) -> Self {
24165		value.clone()
24166	}
24167}
24168#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24169pub enum PullRequestDemilestonedAction {
24170	#[serde(rename = "demilestoned")]
24171	Demilestoned,
24172}
24173impl From<&PullRequestDemilestonedAction> for PullRequestDemilestonedAction {
24174	fn from(value: &PullRequestDemilestonedAction) -> Self {
24175		value.clone()
24176	}
24177}
24178impl ToString for PullRequestDemilestonedAction {
24179	fn to_string(&self) -> String {
24180		match *self {
24181			Self::Demilestoned => "demilestoned".to_string(),
24182		}
24183	}
24184}
24185impl std::str::FromStr for PullRequestDemilestonedAction {
24186	type Err = &'static str;
24187
24188	fn from_str(value: &str) -> Result<Self, &'static str> {
24189		match value {
24190			"demilestoned" => Ok(Self::Demilestoned),
24191			_ => Err("invalid value"),
24192		}
24193	}
24194}
24195impl std::convert::TryFrom<&str> for PullRequestDemilestonedAction {
24196	type Error = &'static str;
24197
24198	fn try_from(value: &str) -> Result<Self, &'static str> {
24199		value.parse()
24200	}
24201}
24202impl std::convert::TryFrom<&String> for PullRequestDemilestonedAction {
24203	type Error = &'static str;
24204
24205	fn try_from(value: &String) -> Result<Self, &'static str> {
24206		value.parse()
24207	}
24208}
24209impl std::convert::TryFrom<String> for PullRequestDemilestonedAction {
24210	type Error = &'static str;
24211
24212	fn try_from(value: String) -> Result<Self, &'static str> {
24213		value.parse()
24214	}
24215}
24216#[derive(Clone, Debug, Deserialize, Serialize)]
24217#[serde(deny_unknown_fields)]
24218pub struct PullRequestDequeued {
24219	pub action:       PullRequestDequeuedAction,
24220	#[serde(default, skip_serializing_if = "Option::is_none")]
24221	pub installation: Option<InstallationLite>,
24222	/// The pull request number.
24223	pub number:       i64,
24224	#[serde(default, skip_serializing_if = "Option::is_none")]
24225	pub organization: Option<Organization>,
24226	pub pull_request: PullRequest,
24227	/// The reason the pull request was removed from a merge queue.
24228	pub reason:       String,
24229	pub repository:   Repository,
24230	pub sender:       User,
24231}
24232impl From<&PullRequestDequeued> for PullRequestDequeued {
24233	fn from(value: &PullRequestDequeued) -> Self {
24234		value.clone()
24235	}
24236}
24237#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24238pub enum PullRequestDequeuedAction {
24239	#[serde(rename = "dequeued")]
24240	Dequeued,
24241}
24242impl From<&PullRequestDequeuedAction> for PullRequestDequeuedAction {
24243	fn from(value: &PullRequestDequeuedAction) -> Self {
24244		value.clone()
24245	}
24246}
24247impl ToString for PullRequestDequeuedAction {
24248	fn to_string(&self) -> String {
24249		match *self {
24250			Self::Dequeued => "dequeued".to_string(),
24251		}
24252	}
24253}
24254impl std::str::FromStr for PullRequestDequeuedAction {
24255	type Err = &'static str;
24256
24257	fn from_str(value: &str) -> Result<Self, &'static str> {
24258		match value {
24259			"dequeued" => Ok(Self::Dequeued),
24260			_ => Err("invalid value"),
24261		}
24262	}
24263}
24264impl std::convert::TryFrom<&str> for PullRequestDequeuedAction {
24265	type Error = &'static str;
24266
24267	fn try_from(value: &str) -> Result<Self, &'static str> {
24268		value.parse()
24269	}
24270}
24271impl std::convert::TryFrom<&String> for PullRequestDequeuedAction {
24272	type Error = &'static str;
24273
24274	fn try_from(value: &String) -> Result<Self, &'static str> {
24275		value.parse()
24276	}
24277}
24278impl std::convert::TryFrom<String> for PullRequestDequeuedAction {
24279	type Error = &'static str;
24280
24281	fn try_from(value: String) -> Result<Self, &'static str> {
24282		value.parse()
24283	}
24284}
24285#[derive(Clone, Debug, Deserialize, Serialize)]
24286#[serde(deny_unknown_fields)]
24287pub struct PullRequestEdited {
24288	pub action:       PullRequestEditedAction,
24289	pub changes:      PullRequestEditedChanges,
24290	#[serde(default, skip_serializing_if = "Option::is_none")]
24291	pub installation: Option<InstallationLite>,
24292	/// The pull request number.
24293	pub number:       i64,
24294	#[serde(default, skip_serializing_if = "Option::is_none")]
24295	pub organization: Option<Organization>,
24296	pub pull_request: PullRequest,
24297	pub repository:   Repository,
24298	pub sender:       User,
24299}
24300impl From<&PullRequestEdited> for PullRequestEdited {
24301	fn from(value: &PullRequestEdited) -> Self {
24302		value.clone()
24303	}
24304}
24305#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24306pub enum PullRequestEditedAction {
24307	#[serde(rename = "edited")]
24308	Edited,
24309}
24310impl From<&PullRequestEditedAction> for PullRequestEditedAction {
24311	fn from(value: &PullRequestEditedAction) -> Self {
24312		value.clone()
24313	}
24314}
24315impl ToString for PullRequestEditedAction {
24316	fn to_string(&self) -> String {
24317		match *self {
24318			Self::Edited => "edited".to_string(),
24319		}
24320	}
24321}
24322impl std::str::FromStr for PullRequestEditedAction {
24323	type Err = &'static str;
24324
24325	fn from_str(value: &str) -> Result<Self, &'static str> {
24326		match value {
24327			"edited" => Ok(Self::Edited),
24328			_ => Err("invalid value"),
24329		}
24330	}
24331}
24332impl std::convert::TryFrom<&str> for PullRequestEditedAction {
24333	type Error = &'static str;
24334
24335	fn try_from(value: &str) -> Result<Self, &'static str> {
24336		value.parse()
24337	}
24338}
24339impl std::convert::TryFrom<&String> for PullRequestEditedAction {
24340	type Error = &'static str;
24341
24342	fn try_from(value: &String) -> Result<Self, &'static str> {
24343		value.parse()
24344	}
24345}
24346impl std::convert::TryFrom<String> for PullRequestEditedAction {
24347	type Error = &'static str;
24348
24349	fn try_from(value: String) -> Result<Self, &'static str> {
24350		value.parse()
24351	}
24352}
24353/// The changes to the comment if the action was `edited`.
24354#[derive(Clone, Debug, Deserialize, Serialize)]
24355#[serde(deny_unknown_fields)]
24356pub struct PullRequestEditedChanges {
24357	#[serde(default, skip_serializing_if = "Option::is_none")]
24358	pub base:  Option<PullRequestEditedChangesBase>,
24359	#[serde(default, skip_serializing_if = "Option::is_none")]
24360	pub body:  Option<PullRequestEditedChangesBody>,
24361	#[serde(default, skip_serializing_if = "Option::is_none")]
24362	pub title: Option<PullRequestEditedChangesTitle>,
24363}
24364impl From<&PullRequestEditedChanges> for PullRequestEditedChanges {
24365	fn from(value: &PullRequestEditedChanges) -> Self {
24366		value.clone()
24367	}
24368}
24369#[derive(Clone, Debug, Deserialize, Serialize)]
24370#[serde(deny_unknown_fields)]
24371pub struct PullRequestEditedChangesBase {
24372	#[serde(rename = "ref")]
24373	pub ref_: PullRequestEditedChangesBaseRef,
24374	pub sha:  PullRequestEditedChangesBaseSha,
24375}
24376impl From<&PullRequestEditedChangesBase> for PullRequestEditedChangesBase {
24377	fn from(value: &PullRequestEditedChangesBase) -> Self {
24378		value.clone()
24379	}
24380}
24381#[derive(Clone, Debug, Deserialize, Serialize)]
24382#[serde(deny_unknown_fields)]
24383pub struct PullRequestEditedChangesBaseRef {
24384	pub from: String,
24385}
24386impl From<&PullRequestEditedChangesBaseRef> for PullRequestEditedChangesBaseRef {
24387	fn from(value: &PullRequestEditedChangesBaseRef) -> Self {
24388		value.clone()
24389	}
24390}
24391#[derive(Clone, Debug, Deserialize, Serialize)]
24392#[serde(deny_unknown_fields)]
24393pub struct PullRequestEditedChangesBaseSha {
24394	pub from: String,
24395}
24396impl From<&PullRequestEditedChangesBaseSha> for PullRequestEditedChangesBaseSha {
24397	fn from(value: &PullRequestEditedChangesBaseSha) -> Self {
24398		value.clone()
24399	}
24400}
24401#[derive(Clone, Debug, Deserialize, Serialize)]
24402#[serde(deny_unknown_fields)]
24403pub struct PullRequestEditedChangesBody {
24404	/// The previous version of the body if the action was `edited`.
24405	pub from: String,
24406}
24407impl From<&PullRequestEditedChangesBody> for PullRequestEditedChangesBody {
24408	fn from(value: &PullRequestEditedChangesBody) -> Self {
24409		value.clone()
24410	}
24411}
24412#[derive(Clone, Debug, Deserialize, Serialize)]
24413#[serde(deny_unknown_fields)]
24414pub struct PullRequestEditedChangesTitle {
24415	/// The previous version of the title if the action was `edited`.
24416	pub from: String,
24417}
24418impl From<&PullRequestEditedChangesTitle> for PullRequestEditedChangesTitle {
24419	fn from(value: &PullRequestEditedChangesTitle) -> Self {
24420		value.clone()
24421	}
24422}
24423#[derive(Clone, Debug, Deserialize, Serialize)]
24424#[serde(untagged)]
24425pub enum PullRequestEvent {
24426	Assigned(PullRequestAssigned),
24427	AutoMergeDisabled(PullRequestAutoMergeDisabled),
24428	AutoMergeEnabled(PullRequestAutoMergeEnabled),
24429	Closed(PullRequestClosed),
24430	ConvertedToDraft(PullRequestConvertedToDraft),
24431	Demilestoned(PullRequestDemilestoned),
24432	Dequeued(PullRequestDequeued),
24433	Edited(PullRequestEdited),
24434	Labeled(PullRequestLabeled),
24435	Locked(PullRequestLocked),
24436	Milestoned(PullRequestMilestoned),
24437	Opened(PullRequestOpened),
24438	Queued(PullRequestQueued),
24439	ReadyForReview(PullRequestReadyForReview),
24440	Reopened(PullRequestReopened),
24441	ReviewRequestRemoved(PullRequestReviewRequestRemoved),
24442	ReviewRequested(PullRequestReviewRequested),
24443	Synchronize(PullRequestSynchronize),
24444	Unassigned(PullRequestUnassigned),
24445	Unlabeled(PullRequestUnlabeled),
24446	Unlocked(PullRequestUnlocked),
24447}
24448impl From<&PullRequestEvent> for PullRequestEvent {
24449	fn from(value: &PullRequestEvent) -> Self {
24450		value.clone()
24451	}
24452}
24453impl From<PullRequestAssigned> for PullRequestEvent {
24454	fn from(value: PullRequestAssigned) -> Self {
24455		Self::Assigned(value)
24456	}
24457}
24458impl From<PullRequestAutoMergeDisabled> for PullRequestEvent {
24459	fn from(value: PullRequestAutoMergeDisabled) -> Self {
24460		Self::AutoMergeDisabled(value)
24461	}
24462}
24463impl From<PullRequestAutoMergeEnabled> for PullRequestEvent {
24464	fn from(value: PullRequestAutoMergeEnabled) -> Self {
24465		Self::AutoMergeEnabled(value)
24466	}
24467}
24468impl From<PullRequestClosed> for PullRequestEvent {
24469	fn from(value: PullRequestClosed) -> Self {
24470		Self::Closed(value)
24471	}
24472}
24473impl From<PullRequestConvertedToDraft> for PullRequestEvent {
24474	fn from(value: PullRequestConvertedToDraft) -> Self {
24475		Self::ConvertedToDraft(value)
24476	}
24477}
24478impl From<PullRequestDemilestoned> for PullRequestEvent {
24479	fn from(value: PullRequestDemilestoned) -> Self {
24480		Self::Demilestoned(value)
24481	}
24482}
24483impl From<PullRequestDequeued> for PullRequestEvent {
24484	fn from(value: PullRequestDequeued) -> Self {
24485		Self::Dequeued(value)
24486	}
24487}
24488impl From<PullRequestEdited> for PullRequestEvent {
24489	fn from(value: PullRequestEdited) -> Self {
24490		Self::Edited(value)
24491	}
24492}
24493impl From<PullRequestLabeled> for PullRequestEvent {
24494	fn from(value: PullRequestLabeled) -> Self {
24495		Self::Labeled(value)
24496	}
24497}
24498impl From<PullRequestLocked> for PullRequestEvent {
24499	fn from(value: PullRequestLocked) -> Self {
24500		Self::Locked(value)
24501	}
24502}
24503impl From<PullRequestMilestoned> for PullRequestEvent {
24504	fn from(value: PullRequestMilestoned) -> Self {
24505		Self::Milestoned(value)
24506	}
24507}
24508impl From<PullRequestOpened> for PullRequestEvent {
24509	fn from(value: PullRequestOpened) -> Self {
24510		Self::Opened(value)
24511	}
24512}
24513impl From<PullRequestQueued> for PullRequestEvent {
24514	fn from(value: PullRequestQueued) -> Self {
24515		Self::Queued(value)
24516	}
24517}
24518impl From<PullRequestReadyForReview> for PullRequestEvent {
24519	fn from(value: PullRequestReadyForReview) -> Self {
24520		Self::ReadyForReview(value)
24521	}
24522}
24523impl From<PullRequestReopened> for PullRequestEvent {
24524	fn from(value: PullRequestReopened) -> Self {
24525		Self::Reopened(value)
24526	}
24527}
24528impl From<PullRequestReviewRequestRemoved> for PullRequestEvent {
24529	fn from(value: PullRequestReviewRequestRemoved) -> Self {
24530		Self::ReviewRequestRemoved(value)
24531	}
24532}
24533impl From<PullRequestReviewRequested> for PullRequestEvent {
24534	fn from(value: PullRequestReviewRequested) -> Self {
24535		Self::ReviewRequested(value)
24536	}
24537}
24538impl From<PullRequestSynchronize> for PullRequestEvent {
24539	fn from(value: PullRequestSynchronize) -> Self {
24540		Self::Synchronize(value)
24541	}
24542}
24543impl From<PullRequestUnassigned> for PullRequestEvent {
24544	fn from(value: PullRequestUnassigned) -> Self {
24545		Self::Unassigned(value)
24546	}
24547}
24548impl From<PullRequestUnlabeled> for PullRequestEvent {
24549	fn from(value: PullRequestUnlabeled) -> Self {
24550		Self::Unlabeled(value)
24551	}
24552}
24553impl From<PullRequestUnlocked> for PullRequestEvent {
24554	fn from(value: PullRequestUnlocked) -> Self {
24555		Self::Unlocked(value)
24556	}
24557}
24558#[derive(Clone, Debug, Deserialize, Serialize)]
24559#[serde(deny_unknown_fields)]
24560pub struct PullRequestHead {
24561	pub label: String,
24562	#[serde(rename = "ref")]
24563	pub ref_:  String,
24564	pub repo:  Option<Repository>,
24565	pub sha:   String,
24566	pub user:  User,
24567}
24568impl From<&PullRequestHead> for PullRequestHead {
24569	fn from(value: &PullRequestHead) -> Self {
24570		value.clone()
24571	}
24572}
24573#[derive(Clone, Debug, Deserialize, Serialize)]
24574#[serde(deny_unknown_fields)]
24575pub struct PullRequestLabeled {
24576	pub action:       PullRequestLabeledAction,
24577	#[serde(default, skip_serializing_if = "Option::is_none")]
24578	pub installation: Option<InstallationLite>,
24579	pub label:        Label,
24580	/// The pull request number.
24581	pub number:       i64,
24582	#[serde(default, skip_serializing_if = "Option::is_none")]
24583	pub organization: Option<Organization>,
24584	pub pull_request: PullRequest,
24585	pub repository:   Repository,
24586	pub sender:       User,
24587}
24588impl From<&PullRequestLabeled> for PullRequestLabeled {
24589	fn from(value: &PullRequestLabeled) -> Self {
24590		value.clone()
24591	}
24592}
24593#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24594pub enum PullRequestLabeledAction {
24595	#[serde(rename = "labeled")]
24596	Labeled,
24597}
24598impl From<&PullRequestLabeledAction> for PullRequestLabeledAction {
24599	fn from(value: &PullRequestLabeledAction) -> Self {
24600		value.clone()
24601	}
24602}
24603impl ToString for PullRequestLabeledAction {
24604	fn to_string(&self) -> String {
24605		match *self {
24606			Self::Labeled => "labeled".to_string(),
24607		}
24608	}
24609}
24610impl std::str::FromStr for PullRequestLabeledAction {
24611	type Err = &'static str;
24612
24613	fn from_str(value: &str) -> Result<Self, &'static str> {
24614		match value {
24615			"labeled" => Ok(Self::Labeled),
24616			_ => Err("invalid value"),
24617		}
24618	}
24619}
24620impl std::convert::TryFrom<&str> for PullRequestLabeledAction {
24621	type Error = &'static str;
24622
24623	fn try_from(value: &str) -> Result<Self, &'static str> {
24624		value.parse()
24625	}
24626}
24627impl std::convert::TryFrom<&String> for PullRequestLabeledAction {
24628	type Error = &'static str;
24629
24630	fn try_from(value: &String) -> Result<Self, &'static str> {
24631		value.parse()
24632	}
24633}
24634impl std::convert::TryFrom<String> for PullRequestLabeledAction {
24635	type Error = &'static str;
24636
24637	fn try_from(value: String) -> Result<Self, &'static str> {
24638		value.parse()
24639	}
24640}
24641#[derive(Clone, Debug, Deserialize, Serialize)]
24642#[serde(deny_unknown_fields)]
24643pub struct PullRequestLinks {
24644	pub comments:        Link,
24645	pub commits:         Link,
24646	pub html:            Link,
24647	pub issue:           Link,
24648	pub review_comment:  Link,
24649	pub review_comments: Link,
24650	#[serde(rename = "self")]
24651	pub self_:           Link,
24652	pub statuses:        Link,
24653}
24654impl From<&PullRequestLinks> for PullRequestLinks {
24655	fn from(value: &PullRequestLinks) -> Self {
24656		value.clone()
24657	}
24658}
24659#[derive(Clone, Debug, Deserialize, Serialize)]
24660#[serde(deny_unknown_fields)]
24661pub struct PullRequestLocked {
24662	pub action:       PullRequestLockedAction,
24663	#[serde(default, skip_serializing_if = "Option::is_none")]
24664	pub installation: Option<InstallationLite>,
24665	/// The pull request number.
24666	pub number:       i64,
24667	#[serde(default, skip_serializing_if = "Option::is_none")]
24668	pub organization: Option<Organization>,
24669	pub pull_request: PullRequest,
24670	pub repository:   Repository,
24671	pub sender:       User,
24672}
24673impl From<&PullRequestLocked> for PullRequestLocked {
24674	fn from(value: &PullRequestLocked) -> Self {
24675		value.clone()
24676	}
24677}
24678#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24679pub enum PullRequestLockedAction {
24680	#[serde(rename = "locked")]
24681	Locked,
24682}
24683impl From<&PullRequestLockedAction> for PullRequestLockedAction {
24684	fn from(value: &PullRequestLockedAction) -> Self {
24685		value.clone()
24686	}
24687}
24688impl ToString for PullRequestLockedAction {
24689	fn to_string(&self) -> String {
24690		match *self {
24691			Self::Locked => "locked".to_string(),
24692		}
24693	}
24694}
24695impl std::str::FromStr for PullRequestLockedAction {
24696	type Err = &'static str;
24697
24698	fn from_str(value: &str) -> Result<Self, &'static str> {
24699		match value {
24700			"locked" => Ok(Self::Locked),
24701			_ => Err("invalid value"),
24702		}
24703	}
24704}
24705impl std::convert::TryFrom<&str> for PullRequestLockedAction {
24706	type Error = &'static str;
24707
24708	fn try_from(value: &str) -> Result<Self, &'static str> {
24709		value.parse()
24710	}
24711}
24712impl std::convert::TryFrom<&String> for PullRequestLockedAction {
24713	type Error = &'static str;
24714
24715	fn try_from(value: &String) -> Result<Self, &'static str> {
24716		value.parse()
24717	}
24718}
24719impl std::convert::TryFrom<String> for PullRequestLockedAction {
24720	type Error = &'static str;
24721
24722	fn try_from(value: String) -> Result<Self, &'static str> {
24723		value.parse()
24724	}
24725}
24726#[derive(Clone, Debug, Deserialize, Serialize)]
24727#[serde(deny_unknown_fields)]
24728pub struct PullRequestMilestoned {
24729	pub action:       PullRequestMilestonedAction,
24730	#[serde(default, skip_serializing_if = "Option::is_none")]
24731	pub installation: Option<InstallationLite>,
24732	pub milestone:    Milestone,
24733	/// The pull request number.
24734	pub number:       i64,
24735	#[serde(default, skip_serializing_if = "Option::is_none")]
24736	pub organization: Option<Organization>,
24737	pub pull_request: PullRequest,
24738	pub repository:   Repository,
24739	pub sender:       User,
24740}
24741impl From<&PullRequestMilestoned> for PullRequestMilestoned {
24742	fn from(value: &PullRequestMilestoned) -> Self {
24743		value.clone()
24744	}
24745}
24746#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24747pub enum PullRequestMilestonedAction {
24748	#[serde(rename = "milestoned")]
24749	Milestoned,
24750}
24751impl From<&PullRequestMilestonedAction> for PullRequestMilestonedAction {
24752	fn from(value: &PullRequestMilestonedAction) -> Self {
24753		value.clone()
24754	}
24755}
24756impl ToString for PullRequestMilestonedAction {
24757	fn to_string(&self) -> String {
24758		match *self {
24759			Self::Milestoned => "milestoned".to_string(),
24760		}
24761	}
24762}
24763impl std::str::FromStr for PullRequestMilestonedAction {
24764	type Err = &'static str;
24765
24766	fn from_str(value: &str) -> Result<Self, &'static str> {
24767		match value {
24768			"milestoned" => Ok(Self::Milestoned),
24769			_ => Err("invalid value"),
24770		}
24771	}
24772}
24773impl std::convert::TryFrom<&str> for PullRequestMilestonedAction {
24774	type Error = &'static str;
24775
24776	fn try_from(value: &str) -> Result<Self, &'static str> {
24777		value.parse()
24778	}
24779}
24780impl std::convert::TryFrom<&String> for PullRequestMilestonedAction {
24781	type Error = &'static str;
24782
24783	fn try_from(value: &String) -> Result<Self, &'static str> {
24784		value.parse()
24785	}
24786}
24787impl std::convert::TryFrom<String> for PullRequestMilestonedAction {
24788	type Error = &'static str;
24789
24790	fn try_from(value: String) -> Result<Self, &'static str> {
24791		value.parse()
24792	}
24793}
24794#[derive(Clone, Debug, Deserialize, Serialize)]
24795#[serde(deny_unknown_fields)]
24796pub struct PullRequestOpened {
24797	pub action:       PullRequestOpenedAction,
24798	#[serde(default, skip_serializing_if = "Option::is_none")]
24799	pub installation: Option<InstallationLite>,
24800	/// The pull request number.
24801	pub number:       i64,
24802	#[serde(default, skip_serializing_if = "Option::is_none")]
24803	pub organization: Option<Organization>,
24804	pub pull_request: PullRequest,
24805	pub repository:   Repository,
24806	pub sender:       User,
24807}
24808impl From<&PullRequestOpened> for PullRequestOpened {
24809	fn from(value: &PullRequestOpened) -> Self {
24810		value.clone()
24811	}
24812}
24813#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24814pub enum PullRequestOpenedAction {
24815	#[serde(rename = "opened")]
24816	Opened,
24817}
24818impl From<&PullRequestOpenedAction> for PullRequestOpenedAction {
24819	fn from(value: &PullRequestOpenedAction) -> Self {
24820		value.clone()
24821	}
24822}
24823impl ToString for PullRequestOpenedAction {
24824	fn to_string(&self) -> String {
24825		match *self {
24826			Self::Opened => "opened".to_string(),
24827		}
24828	}
24829}
24830impl std::str::FromStr for PullRequestOpenedAction {
24831	type Err = &'static str;
24832
24833	fn from_str(value: &str) -> Result<Self, &'static str> {
24834		match value {
24835			"opened" => Ok(Self::Opened),
24836			_ => Err("invalid value"),
24837		}
24838	}
24839}
24840impl std::convert::TryFrom<&str> for PullRequestOpenedAction {
24841	type Error = &'static str;
24842
24843	fn try_from(value: &str) -> Result<Self, &'static str> {
24844		value.parse()
24845	}
24846}
24847impl std::convert::TryFrom<&String> for PullRequestOpenedAction {
24848	type Error = &'static str;
24849
24850	fn try_from(value: &String) -> Result<Self, &'static str> {
24851		value.parse()
24852	}
24853}
24854impl std::convert::TryFrom<String> for PullRequestOpenedAction {
24855	type Error = &'static str;
24856
24857	fn try_from(value: String) -> Result<Self, &'static str> {
24858		value.parse()
24859	}
24860}
24861#[derive(Clone, Debug, Deserialize, Serialize)]
24862#[serde(deny_unknown_fields)]
24863pub struct PullRequestQueued {
24864	pub action:       PullRequestQueuedAction,
24865	#[serde(default, skip_serializing_if = "Option::is_none")]
24866	pub installation: Option<InstallationLite>,
24867	/// The pull request number.
24868	pub number:       i64,
24869	#[serde(default, skip_serializing_if = "Option::is_none")]
24870	pub organization: Option<Organization>,
24871	pub pull_request: PullRequest,
24872	pub repository:   Repository,
24873	pub sender:       User,
24874}
24875impl From<&PullRequestQueued> for PullRequestQueued {
24876	fn from(value: &PullRequestQueued) -> Self {
24877		value.clone()
24878	}
24879}
24880#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24881pub enum PullRequestQueuedAction {
24882	#[serde(rename = "queued")]
24883	Queued,
24884}
24885impl From<&PullRequestQueuedAction> for PullRequestQueuedAction {
24886	fn from(value: &PullRequestQueuedAction) -> Self {
24887		value.clone()
24888	}
24889}
24890impl ToString for PullRequestQueuedAction {
24891	fn to_string(&self) -> String {
24892		match *self {
24893			Self::Queued => "queued".to_string(),
24894		}
24895	}
24896}
24897impl std::str::FromStr for PullRequestQueuedAction {
24898	type Err = &'static str;
24899
24900	fn from_str(value: &str) -> Result<Self, &'static str> {
24901		match value {
24902			"queued" => Ok(Self::Queued),
24903			_ => Err("invalid value"),
24904		}
24905	}
24906}
24907impl std::convert::TryFrom<&str> for PullRequestQueuedAction {
24908	type Error = &'static str;
24909
24910	fn try_from(value: &str) -> Result<Self, &'static str> {
24911		value.parse()
24912	}
24913}
24914impl std::convert::TryFrom<&String> for PullRequestQueuedAction {
24915	type Error = &'static str;
24916
24917	fn try_from(value: &String) -> Result<Self, &'static str> {
24918		value.parse()
24919	}
24920}
24921impl std::convert::TryFrom<String> for PullRequestQueuedAction {
24922	type Error = &'static str;
24923
24924	fn try_from(value: String) -> Result<Self, &'static str> {
24925		value.parse()
24926	}
24927}
24928#[derive(Clone, Debug, Deserialize, Serialize)]
24929#[serde(deny_unknown_fields)]
24930pub struct PullRequestReadyForReview {
24931	pub action:       PullRequestReadyForReviewAction,
24932	#[serde(default, skip_serializing_if = "Option::is_none")]
24933	pub installation: Option<InstallationLite>,
24934	/// The pull request number.
24935	pub number:       i64,
24936	#[serde(default, skip_serializing_if = "Option::is_none")]
24937	pub organization: Option<Organization>,
24938	pub pull_request: PullRequest,
24939	pub repository:   Repository,
24940	pub sender:       User,
24941}
24942impl From<&PullRequestReadyForReview> for PullRequestReadyForReview {
24943	fn from(value: &PullRequestReadyForReview) -> Self {
24944		value.clone()
24945	}
24946}
24947#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
24948pub enum PullRequestReadyForReviewAction {
24949	#[serde(rename = "ready_for_review")]
24950	ReadyForReview,
24951}
24952impl From<&PullRequestReadyForReviewAction> for PullRequestReadyForReviewAction {
24953	fn from(value: &PullRequestReadyForReviewAction) -> Self {
24954		value.clone()
24955	}
24956}
24957impl ToString for PullRequestReadyForReviewAction {
24958	fn to_string(&self) -> String {
24959		match *self {
24960			Self::ReadyForReview => "ready_for_review".to_string(),
24961		}
24962	}
24963}
24964impl std::str::FromStr for PullRequestReadyForReviewAction {
24965	type Err = &'static str;
24966
24967	fn from_str(value: &str) -> Result<Self, &'static str> {
24968		match value {
24969			"ready_for_review" => Ok(Self::ReadyForReview),
24970			_ => Err("invalid value"),
24971		}
24972	}
24973}
24974impl std::convert::TryFrom<&str> for PullRequestReadyForReviewAction {
24975	type Error = &'static str;
24976
24977	fn try_from(value: &str) -> Result<Self, &'static str> {
24978		value.parse()
24979	}
24980}
24981impl std::convert::TryFrom<&String> for PullRequestReadyForReviewAction {
24982	type Error = &'static str;
24983
24984	fn try_from(value: &String) -> Result<Self, &'static str> {
24985		value.parse()
24986	}
24987}
24988impl std::convert::TryFrom<String> for PullRequestReadyForReviewAction {
24989	type Error = &'static str;
24990
24991	fn try_from(value: String) -> Result<Self, &'static str> {
24992		value.parse()
24993	}
24994}
24995#[derive(Clone, Debug, Deserialize, Serialize)]
24996#[serde(deny_unknown_fields)]
24997pub struct PullRequestReopened {
24998	pub action:       PullRequestReopenedAction,
24999	#[serde(default, skip_serializing_if = "Option::is_none")]
25000	pub installation: Option<InstallationLite>,
25001	/// The pull request number.
25002	pub number:       i64,
25003	#[serde(default, skip_serializing_if = "Option::is_none")]
25004	pub organization: Option<Organization>,
25005	pub pull_request: PullRequest,
25006	pub repository:   Repository,
25007	pub sender:       User,
25008}
25009impl From<&PullRequestReopened> for PullRequestReopened {
25010	fn from(value: &PullRequestReopened) -> Self {
25011		value.clone()
25012	}
25013}
25014#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25015pub enum PullRequestReopenedAction {
25016	#[serde(rename = "reopened")]
25017	Reopened,
25018}
25019impl From<&PullRequestReopenedAction> for PullRequestReopenedAction {
25020	fn from(value: &PullRequestReopenedAction) -> Self {
25021		value.clone()
25022	}
25023}
25024impl ToString for PullRequestReopenedAction {
25025	fn to_string(&self) -> String {
25026		match *self {
25027			Self::Reopened => "reopened".to_string(),
25028		}
25029	}
25030}
25031impl std::str::FromStr for PullRequestReopenedAction {
25032	type Err = &'static str;
25033
25034	fn from_str(value: &str) -> Result<Self, &'static str> {
25035		match value {
25036			"reopened" => Ok(Self::Reopened),
25037			_ => Err("invalid value"),
25038		}
25039	}
25040}
25041impl std::convert::TryFrom<&str> for PullRequestReopenedAction {
25042	type Error = &'static str;
25043
25044	fn try_from(value: &str) -> Result<Self, &'static str> {
25045		value.parse()
25046	}
25047}
25048impl std::convert::TryFrom<&String> for PullRequestReopenedAction {
25049	type Error = &'static str;
25050
25051	fn try_from(value: &String) -> Result<Self, &'static str> {
25052		value.parse()
25053	}
25054}
25055impl std::convert::TryFrom<String> for PullRequestReopenedAction {
25056	type Error = &'static str;
25057
25058	fn try_from(value: String) -> Result<Self, &'static str> {
25059		value.parse()
25060	}
25061}
25062#[derive(Clone, Debug, Deserialize, Serialize)]
25063#[serde(untagged)]
25064pub enum PullRequestRequestedReviewersItem {
25065	User(User),
25066	Team(Team),
25067}
25068impl From<&PullRequestRequestedReviewersItem> for PullRequestRequestedReviewersItem {
25069	fn from(value: &PullRequestRequestedReviewersItem) -> Self {
25070		value.clone()
25071	}
25072}
25073impl From<User> for PullRequestRequestedReviewersItem {
25074	fn from(value: User) -> Self {
25075		Self::User(value)
25076	}
25077}
25078impl From<Team> for PullRequestRequestedReviewersItem {
25079	fn from(value: Team) -> Self {
25080		Self::Team(value)
25081	}
25082}
25083/// The review that was affected.
25084#[derive(Clone, Debug, Deserialize, Serialize)]
25085#[serde(deny_unknown_fields)]
25086pub struct PullRequestReview {
25087	pub author_association: AuthorAssociation,
25088	/// The text of the review.
25089	pub body:               Option<String>,
25090	/// A commit SHA for the review.
25091	pub commit_id:          String,
25092	pub html_url:           String,
25093	/// Unique identifier of the review
25094	pub id:                 i64,
25095	#[serde(rename = "_links")]
25096	pub links:              PullRequestReviewLinks,
25097	pub node_id:            String,
25098	pub pull_request_url:   String,
25099	pub state:              PullRequestReviewState,
25100	pub submitted_at:       Option<chrono::DateTime<chrono::offset::Utc>>,
25101	pub user:               User,
25102}
25103impl From<&PullRequestReview> for PullRequestReview {
25104	fn from(value: &PullRequestReview) -> Self {
25105		value.clone()
25106	}
25107}
25108/// The [comment](https://docs.github.com/en/rest/reference/pulls#comments) itself.
25109#[derive(Clone, Debug, Deserialize, Serialize)]
25110#[serde(deny_unknown_fields)]
25111pub struct PullRequestReviewComment {
25112	pub author_association:     AuthorAssociation,
25113	/// The text of the comment.
25114	pub body:                   String,
25115	/// The SHA of the commit to which the comment applies.
25116	pub commit_id:              String,
25117	pub created_at:             chrono::DateTime<chrono::offset::Utc>,
25118	/// The diff of the line that the comment refers to.
25119	pub diff_hunk:              String,
25120	/// HTML URL for the pull request review comment.
25121	pub html_url:               String,
25122	/// The ID of the pull request review comment.
25123	pub id:                     i64,
25124	/// The comment ID to reply to.
25125	#[serde(default, skip_serializing_if = "Option::is_none")]
25126	pub in_reply_to_id:         Option<i64>,
25127	/// The line of the blob to which the comment applies. The last line of the
25128	/// range for a multi-line comment
25129	pub line:                   Option<i64>,
25130	#[serde(rename = "_links")]
25131	pub links:                  PullRequestReviewCommentLinks,
25132	/// The node ID of the pull request review comment.
25133	pub node_id:                String,
25134	/// The SHA of the original commit to which the comment applies.
25135	pub original_commit_id:     String,
25136	/// The line of the blob to which the comment applies. The last line of the
25137	/// range for a multi-line comment
25138	pub original_line:          i64,
25139	/// The index of the original line in the diff to which the comment applies.
25140	pub original_position:      i64,
25141	/// The first line of the range for a multi-line comment.
25142	pub original_start_line:    Option<i64>,
25143	/// The relative path of the file to which the comment applies.
25144	pub path:                   String,
25145	/// The line index in the diff to which the comment applies.
25146	pub position:               Option<i64>,
25147	/// The ID of the pull request review to which the comment belongs.
25148	pub pull_request_review_id: i64,
25149	/// URL for the pull request that the review comment belongs to.
25150	pub pull_request_url:       String,
25151	pub reactions:              Reactions,
25152	/// The side of the first line of the range for a multi-line comment.
25153	pub side:                   PullRequestReviewCommentSide,
25154	/// The first line of the range for a multi-line comment.
25155	pub start_line:             Option<i64>,
25156	/// The side of the first line of the range for a multi-line comment.
25157	pub start_side:             Option<PullRequestReviewCommentStartSide>,
25158	/// The level at which the comment is targeted, can be a diff line or a
25159	/// file.
25160	#[serde(default, skip_serializing_if = "Option::is_none")]
25161	pub subject_type:           Option<PullRequestReviewCommentSubjectType>,
25162	pub updated_at:             chrono::DateTime<chrono::offset::Utc>,
25163	/// URL for the pull request review comment
25164	pub url:                    String,
25165	pub user:                   User,
25166}
25167impl From<&PullRequestReviewComment> for PullRequestReviewComment {
25168	fn from(value: &PullRequestReviewComment) -> Self {
25169		value.clone()
25170	}
25171}
25172#[derive(Clone, Debug, Deserialize, Serialize)]
25173#[serde(deny_unknown_fields)]
25174pub struct PullRequestReviewCommentCreated {
25175	pub action:       PullRequestReviewCommentCreatedAction,
25176	pub comment:      PullRequestReviewComment,
25177	#[serde(default, skip_serializing_if = "Option::is_none")]
25178	pub installation: Option<InstallationLite>,
25179	#[serde(default, skip_serializing_if = "Option::is_none")]
25180	pub organization: Option<Organization>,
25181	pub pull_request: PullRequestReviewCommentCreatedPullRequest,
25182	pub repository:   Repository,
25183	pub sender:       User,
25184}
25185impl From<&PullRequestReviewCommentCreated> for PullRequestReviewCommentCreated {
25186	fn from(value: &PullRequestReviewCommentCreated) -> Self {
25187		value.clone()
25188	}
25189}
25190#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25191pub enum PullRequestReviewCommentCreatedAction {
25192	#[serde(rename = "created")]
25193	Created,
25194}
25195impl From<&PullRequestReviewCommentCreatedAction> for PullRequestReviewCommentCreatedAction {
25196	fn from(value: &PullRequestReviewCommentCreatedAction) -> Self {
25197		value.clone()
25198	}
25199}
25200impl ToString for PullRequestReviewCommentCreatedAction {
25201	fn to_string(&self) -> String {
25202		match *self {
25203			Self::Created => "created".to_string(),
25204		}
25205	}
25206}
25207impl std::str::FromStr for PullRequestReviewCommentCreatedAction {
25208	type Err = &'static str;
25209
25210	fn from_str(value: &str) -> Result<Self, &'static str> {
25211		match value {
25212			"created" => Ok(Self::Created),
25213			_ => Err("invalid value"),
25214		}
25215	}
25216}
25217impl std::convert::TryFrom<&str> for PullRequestReviewCommentCreatedAction {
25218	type Error = &'static str;
25219
25220	fn try_from(value: &str) -> Result<Self, &'static str> {
25221		value.parse()
25222	}
25223}
25224impl std::convert::TryFrom<&String> for PullRequestReviewCommentCreatedAction {
25225	type Error = &'static str;
25226
25227	fn try_from(value: &String) -> Result<Self, &'static str> {
25228		value.parse()
25229	}
25230}
25231impl std::convert::TryFrom<String> for PullRequestReviewCommentCreatedAction {
25232	type Error = &'static str;
25233
25234	fn try_from(value: String) -> Result<Self, &'static str> {
25235		value.parse()
25236	}
25237}
25238#[derive(Clone, Debug, Deserialize, Serialize)]
25239#[serde(deny_unknown_fields)]
25240pub struct PullRequestReviewCommentCreatedPullRequest {
25241	pub active_lock_reason:  Option<PullRequestReviewCommentCreatedPullRequestActiveLockReason>,
25242	pub assignee:            Option<User>,
25243	pub assignees:           Vec<User>,
25244	pub author_association:  AuthorAssociation,
25245	#[serde(default, skip_serializing_if = "Option::is_none")]
25246	pub auto_merge:          Option<AutoMerge>,
25247	pub base:                PullRequestReviewCommentCreatedPullRequestBase,
25248	pub body:                Option<String>,
25249	pub closed_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
25250	pub comments_url:        String,
25251	pub commits_url:         String,
25252	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
25253	pub diff_url:            String,
25254	#[serde(default, skip_serializing_if = "Option::is_none")]
25255	pub draft:               Option<bool>,
25256	pub head:                PullRequestReviewCommentCreatedPullRequestHead,
25257	pub html_url:            String,
25258	pub id:                  i64,
25259	pub issue_url:           String,
25260	pub labels:              Vec<Label>,
25261	#[serde(rename = "_links")]
25262	pub links:               PullRequestReviewCommentCreatedPullRequestLinks,
25263	pub locked:              bool,
25264	pub merge_commit_sha:    Option<String>,
25265	pub merged_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
25266	pub milestone:           Option<Milestone>,
25267	pub node_id:             String,
25268	pub number:              i64,
25269	pub patch_url:           String,
25270	pub requested_reviewers: Vec<PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem>,
25271	pub requested_teams:     Vec<Team>,
25272	pub review_comment_url:  String,
25273	pub review_comments_url: String,
25274	pub state:               PullRequestReviewCommentCreatedPullRequestState,
25275	pub statuses_url:        String,
25276	pub title:               String,
25277	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
25278	pub url:                 String,
25279	pub user:                User,
25280}
25281impl From<&PullRequestReviewCommentCreatedPullRequest>
25282	for PullRequestReviewCommentCreatedPullRequest
25283{
25284	fn from(value: &PullRequestReviewCommentCreatedPullRequest) -> Self {
25285		value.clone()
25286	}
25287}
25288#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25289pub enum PullRequestReviewCommentCreatedPullRequestActiveLockReason {
25290	#[serde(rename = "resolved")]
25291	Resolved,
25292	#[serde(rename = "off-topic")]
25293	OffTopic,
25294	#[serde(rename = "too heated")]
25295	TooHeated,
25296	#[serde(rename = "spam")]
25297	Spam,
25298}
25299impl From<&PullRequestReviewCommentCreatedPullRequestActiveLockReason>
25300	for PullRequestReviewCommentCreatedPullRequestActiveLockReason
25301{
25302	fn from(value: &PullRequestReviewCommentCreatedPullRequestActiveLockReason) -> Self {
25303		value.clone()
25304	}
25305}
25306impl ToString for PullRequestReviewCommentCreatedPullRequestActiveLockReason {
25307	fn to_string(&self) -> String {
25308		match *self {
25309			Self::Resolved => "resolved".to_string(),
25310			Self::OffTopic => "off-topic".to_string(),
25311			Self::TooHeated => "too heated".to_string(),
25312			Self::Spam => "spam".to_string(),
25313		}
25314	}
25315}
25316impl std::str::FromStr for PullRequestReviewCommentCreatedPullRequestActiveLockReason {
25317	type Err = &'static str;
25318
25319	fn from_str(value: &str) -> Result<Self, &'static str> {
25320		match value {
25321			"resolved" => Ok(Self::Resolved),
25322			"off-topic" => Ok(Self::OffTopic),
25323			"too heated" => Ok(Self::TooHeated),
25324			"spam" => Ok(Self::Spam),
25325			_ => Err("invalid value"),
25326		}
25327	}
25328}
25329impl std::convert::TryFrom<&str> for PullRequestReviewCommentCreatedPullRequestActiveLockReason {
25330	type Error = &'static str;
25331
25332	fn try_from(value: &str) -> Result<Self, &'static str> {
25333		value.parse()
25334	}
25335}
25336impl std::convert::TryFrom<&String> for PullRequestReviewCommentCreatedPullRequestActiveLockReason {
25337	type Error = &'static str;
25338
25339	fn try_from(value: &String) -> Result<Self, &'static str> {
25340		value.parse()
25341	}
25342}
25343impl std::convert::TryFrom<String> for PullRequestReviewCommentCreatedPullRequestActiveLockReason {
25344	type Error = &'static str;
25345
25346	fn try_from(value: String) -> Result<Self, &'static str> {
25347		value.parse()
25348	}
25349}
25350#[derive(Clone, Debug, Deserialize, Serialize)]
25351#[serde(deny_unknown_fields)]
25352pub struct PullRequestReviewCommentCreatedPullRequestBase {
25353	pub label: String,
25354	#[serde(rename = "ref")]
25355	pub ref_:  String,
25356	pub repo:  Repository,
25357	pub sha:   String,
25358	pub user:  User,
25359}
25360impl From<&PullRequestReviewCommentCreatedPullRequestBase>
25361	for PullRequestReviewCommentCreatedPullRequestBase
25362{
25363	fn from(value: &PullRequestReviewCommentCreatedPullRequestBase) -> Self {
25364		value.clone()
25365	}
25366}
25367#[derive(Clone, Debug, Deserialize, Serialize)]
25368#[serde(deny_unknown_fields)]
25369pub struct PullRequestReviewCommentCreatedPullRequestHead {
25370	pub label: String,
25371	#[serde(rename = "ref")]
25372	pub ref_:  String,
25373	pub repo:  Repository,
25374	pub sha:   String,
25375	pub user:  User,
25376}
25377impl From<&PullRequestReviewCommentCreatedPullRequestHead>
25378	for PullRequestReviewCommentCreatedPullRequestHead
25379{
25380	fn from(value: &PullRequestReviewCommentCreatedPullRequestHead) -> Self {
25381		value.clone()
25382	}
25383}
25384#[derive(Clone, Debug, Deserialize, Serialize)]
25385#[serde(deny_unknown_fields)]
25386pub struct PullRequestReviewCommentCreatedPullRequestLinks {
25387	pub comments:        Link,
25388	pub commits:         Link,
25389	pub html:            Link,
25390	pub issue:           Link,
25391	pub review_comment:  Link,
25392	pub review_comments: Link,
25393	#[serde(rename = "self")]
25394	pub self_:           Link,
25395	pub statuses:        Link,
25396}
25397impl From<&PullRequestReviewCommentCreatedPullRequestLinks>
25398	for PullRequestReviewCommentCreatedPullRequestLinks
25399{
25400	fn from(value: &PullRequestReviewCommentCreatedPullRequestLinks) -> Self {
25401		value.clone()
25402	}
25403}
25404#[derive(Clone, Debug, Deserialize, Serialize)]
25405#[serde(untagged)]
25406pub enum PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem {
25407	User(User),
25408	Team(Team),
25409}
25410impl From<&PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem>
25411	for PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem
25412{
25413	fn from(value: &PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem) -> Self {
25414		value.clone()
25415	}
25416}
25417impl From<User> for PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem {
25418	fn from(value: User) -> Self {
25419		Self::User(value)
25420	}
25421}
25422impl From<Team> for PullRequestReviewCommentCreatedPullRequestRequestedReviewersItem {
25423	fn from(value: Team) -> Self {
25424		Self::Team(value)
25425	}
25426}
25427#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25428pub enum PullRequestReviewCommentCreatedPullRequestState {
25429	#[serde(rename = "open")]
25430	Open,
25431	#[serde(rename = "closed")]
25432	Closed,
25433}
25434impl From<&PullRequestReviewCommentCreatedPullRequestState>
25435	for PullRequestReviewCommentCreatedPullRequestState
25436{
25437	fn from(value: &PullRequestReviewCommentCreatedPullRequestState) -> Self {
25438		value.clone()
25439	}
25440}
25441impl ToString for PullRequestReviewCommentCreatedPullRequestState {
25442	fn to_string(&self) -> String {
25443		match *self {
25444			Self::Open => "open".to_string(),
25445			Self::Closed => "closed".to_string(),
25446		}
25447	}
25448}
25449impl std::str::FromStr for PullRequestReviewCommentCreatedPullRequestState {
25450	type Err = &'static str;
25451
25452	fn from_str(value: &str) -> Result<Self, &'static str> {
25453		match value {
25454			"open" => Ok(Self::Open),
25455			"closed" => Ok(Self::Closed),
25456			_ => Err("invalid value"),
25457		}
25458	}
25459}
25460impl std::convert::TryFrom<&str> for PullRequestReviewCommentCreatedPullRequestState {
25461	type Error = &'static str;
25462
25463	fn try_from(value: &str) -> Result<Self, &'static str> {
25464		value.parse()
25465	}
25466}
25467impl std::convert::TryFrom<&String> for PullRequestReviewCommentCreatedPullRequestState {
25468	type Error = &'static str;
25469
25470	fn try_from(value: &String) -> Result<Self, &'static str> {
25471		value.parse()
25472	}
25473}
25474impl std::convert::TryFrom<String> for PullRequestReviewCommentCreatedPullRequestState {
25475	type Error = &'static str;
25476
25477	fn try_from(value: String) -> Result<Self, &'static str> {
25478		value.parse()
25479	}
25480}
25481#[derive(Clone, Debug, Deserialize, Serialize)]
25482#[serde(deny_unknown_fields)]
25483pub struct PullRequestReviewCommentDeleted {
25484	pub action:       PullRequestReviewCommentDeletedAction,
25485	pub comment:      PullRequestReviewComment,
25486	#[serde(default, skip_serializing_if = "Option::is_none")]
25487	pub installation: Option<InstallationLite>,
25488	#[serde(default, skip_serializing_if = "Option::is_none")]
25489	pub organization: Option<Organization>,
25490	pub pull_request: PullRequestReviewCommentDeletedPullRequest,
25491	pub repository:   Repository,
25492	pub sender:       User,
25493}
25494impl From<&PullRequestReviewCommentDeleted> for PullRequestReviewCommentDeleted {
25495	fn from(value: &PullRequestReviewCommentDeleted) -> Self {
25496		value.clone()
25497	}
25498}
25499#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25500pub enum PullRequestReviewCommentDeletedAction {
25501	#[serde(rename = "deleted")]
25502	Deleted,
25503}
25504impl From<&PullRequestReviewCommentDeletedAction> for PullRequestReviewCommentDeletedAction {
25505	fn from(value: &PullRequestReviewCommentDeletedAction) -> Self {
25506		value.clone()
25507	}
25508}
25509impl ToString for PullRequestReviewCommentDeletedAction {
25510	fn to_string(&self) -> String {
25511		match *self {
25512			Self::Deleted => "deleted".to_string(),
25513		}
25514	}
25515}
25516impl std::str::FromStr for PullRequestReviewCommentDeletedAction {
25517	type Err = &'static str;
25518
25519	fn from_str(value: &str) -> Result<Self, &'static str> {
25520		match value {
25521			"deleted" => Ok(Self::Deleted),
25522			_ => Err("invalid value"),
25523		}
25524	}
25525}
25526impl std::convert::TryFrom<&str> for PullRequestReviewCommentDeletedAction {
25527	type Error = &'static str;
25528
25529	fn try_from(value: &str) -> Result<Self, &'static str> {
25530		value.parse()
25531	}
25532}
25533impl std::convert::TryFrom<&String> for PullRequestReviewCommentDeletedAction {
25534	type Error = &'static str;
25535
25536	fn try_from(value: &String) -> Result<Self, &'static str> {
25537		value.parse()
25538	}
25539}
25540impl std::convert::TryFrom<String> for PullRequestReviewCommentDeletedAction {
25541	type Error = &'static str;
25542
25543	fn try_from(value: String) -> Result<Self, &'static str> {
25544		value.parse()
25545	}
25546}
25547#[derive(Clone, Debug, Deserialize, Serialize)]
25548#[serde(deny_unknown_fields)]
25549pub struct PullRequestReviewCommentDeletedPullRequest {
25550	pub active_lock_reason:  Option<PullRequestReviewCommentDeletedPullRequestActiveLockReason>,
25551	pub assignee:            Option<User>,
25552	pub assignees:           Vec<User>,
25553	pub author_association:  AuthorAssociation,
25554	#[serde(default, skip_serializing_if = "Option::is_none")]
25555	pub auto_merge:          Option<AutoMerge>,
25556	pub base:                PullRequestReviewCommentDeletedPullRequestBase,
25557	pub body:                Option<String>,
25558	pub closed_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
25559	pub comments_url:        String,
25560	pub commits_url:         String,
25561	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
25562	pub diff_url:            String,
25563	#[serde(default, skip_serializing_if = "Option::is_none")]
25564	pub draft:               Option<bool>,
25565	pub head:                PullRequestReviewCommentDeletedPullRequestHead,
25566	pub html_url:            String,
25567	pub id:                  i64,
25568	pub issue_url:           String,
25569	pub labels:              Vec<Label>,
25570	#[serde(rename = "_links")]
25571	pub links:               PullRequestReviewCommentDeletedPullRequestLinks,
25572	pub locked:              bool,
25573	pub merge_commit_sha:    Option<String>,
25574	pub merged_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
25575	pub milestone:           Option<Milestone>,
25576	pub node_id:             String,
25577	pub number:              i64,
25578	pub patch_url:           String,
25579	pub requested_reviewers: Vec<PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem>,
25580	pub requested_teams:     Vec<Team>,
25581	pub review_comment_url:  String,
25582	pub review_comments_url: String,
25583	pub state:               PullRequestReviewCommentDeletedPullRequestState,
25584	pub statuses_url:        String,
25585	pub title:               String,
25586	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
25587	pub url:                 String,
25588	pub user:                User,
25589}
25590impl From<&PullRequestReviewCommentDeletedPullRequest>
25591	for PullRequestReviewCommentDeletedPullRequest
25592{
25593	fn from(value: &PullRequestReviewCommentDeletedPullRequest) -> Self {
25594		value.clone()
25595	}
25596}
25597#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25598pub enum PullRequestReviewCommentDeletedPullRequestActiveLockReason {
25599	#[serde(rename = "resolved")]
25600	Resolved,
25601	#[serde(rename = "off-topic")]
25602	OffTopic,
25603	#[serde(rename = "too heated")]
25604	TooHeated,
25605	#[serde(rename = "spam")]
25606	Spam,
25607}
25608impl From<&PullRequestReviewCommentDeletedPullRequestActiveLockReason>
25609	for PullRequestReviewCommentDeletedPullRequestActiveLockReason
25610{
25611	fn from(value: &PullRequestReviewCommentDeletedPullRequestActiveLockReason) -> Self {
25612		value.clone()
25613	}
25614}
25615impl ToString for PullRequestReviewCommentDeletedPullRequestActiveLockReason {
25616	fn to_string(&self) -> String {
25617		match *self {
25618			Self::Resolved => "resolved".to_string(),
25619			Self::OffTopic => "off-topic".to_string(),
25620			Self::TooHeated => "too heated".to_string(),
25621			Self::Spam => "spam".to_string(),
25622		}
25623	}
25624}
25625impl std::str::FromStr for PullRequestReviewCommentDeletedPullRequestActiveLockReason {
25626	type Err = &'static str;
25627
25628	fn from_str(value: &str) -> Result<Self, &'static str> {
25629		match value {
25630			"resolved" => Ok(Self::Resolved),
25631			"off-topic" => Ok(Self::OffTopic),
25632			"too heated" => Ok(Self::TooHeated),
25633			"spam" => Ok(Self::Spam),
25634			_ => Err("invalid value"),
25635		}
25636	}
25637}
25638impl std::convert::TryFrom<&str> for PullRequestReviewCommentDeletedPullRequestActiveLockReason {
25639	type Error = &'static str;
25640
25641	fn try_from(value: &str) -> Result<Self, &'static str> {
25642		value.parse()
25643	}
25644}
25645impl std::convert::TryFrom<&String> for PullRequestReviewCommentDeletedPullRequestActiveLockReason {
25646	type Error = &'static str;
25647
25648	fn try_from(value: &String) -> Result<Self, &'static str> {
25649		value.parse()
25650	}
25651}
25652impl std::convert::TryFrom<String> for PullRequestReviewCommentDeletedPullRequestActiveLockReason {
25653	type Error = &'static str;
25654
25655	fn try_from(value: String) -> Result<Self, &'static str> {
25656		value.parse()
25657	}
25658}
25659#[derive(Clone, Debug, Deserialize, Serialize)]
25660#[serde(deny_unknown_fields)]
25661pub struct PullRequestReviewCommentDeletedPullRequestBase {
25662	pub label: String,
25663	#[serde(rename = "ref")]
25664	pub ref_:  String,
25665	pub repo:  Repository,
25666	pub sha:   String,
25667	pub user:  User,
25668}
25669impl From<&PullRequestReviewCommentDeletedPullRequestBase>
25670	for PullRequestReviewCommentDeletedPullRequestBase
25671{
25672	fn from(value: &PullRequestReviewCommentDeletedPullRequestBase) -> Self {
25673		value.clone()
25674	}
25675}
25676#[derive(Clone, Debug, Deserialize, Serialize)]
25677#[serde(deny_unknown_fields)]
25678pub struct PullRequestReviewCommentDeletedPullRequestHead {
25679	pub label: String,
25680	#[serde(rename = "ref")]
25681	pub ref_:  String,
25682	pub repo:  Repository,
25683	pub sha:   String,
25684	pub user:  User,
25685}
25686impl From<&PullRequestReviewCommentDeletedPullRequestHead>
25687	for PullRequestReviewCommentDeletedPullRequestHead
25688{
25689	fn from(value: &PullRequestReviewCommentDeletedPullRequestHead) -> Self {
25690		value.clone()
25691	}
25692}
25693#[derive(Clone, Debug, Deserialize, Serialize)]
25694#[serde(deny_unknown_fields)]
25695pub struct PullRequestReviewCommentDeletedPullRequestLinks {
25696	pub comments:        Link,
25697	pub commits:         Link,
25698	pub html:            Link,
25699	pub issue:           Link,
25700	pub review_comment:  Link,
25701	pub review_comments: Link,
25702	#[serde(rename = "self")]
25703	pub self_:           Link,
25704	pub statuses:        Link,
25705}
25706impl From<&PullRequestReviewCommentDeletedPullRequestLinks>
25707	for PullRequestReviewCommentDeletedPullRequestLinks
25708{
25709	fn from(value: &PullRequestReviewCommentDeletedPullRequestLinks) -> Self {
25710		value.clone()
25711	}
25712}
25713#[derive(Clone, Debug, Deserialize, Serialize)]
25714#[serde(untagged)]
25715pub enum PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem {
25716	User(User),
25717	Team(Team),
25718}
25719impl From<&PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem>
25720	for PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem
25721{
25722	fn from(value: &PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem) -> Self {
25723		value.clone()
25724	}
25725}
25726impl From<User> for PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem {
25727	fn from(value: User) -> Self {
25728		Self::User(value)
25729	}
25730}
25731impl From<Team> for PullRequestReviewCommentDeletedPullRequestRequestedReviewersItem {
25732	fn from(value: Team) -> Self {
25733		Self::Team(value)
25734	}
25735}
25736#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25737pub enum PullRequestReviewCommentDeletedPullRequestState {
25738	#[serde(rename = "open")]
25739	Open,
25740	#[serde(rename = "closed")]
25741	Closed,
25742}
25743impl From<&PullRequestReviewCommentDeletedPullRequestState>
25744	for PullRequestReviewCommentDeletedPullRequestState
25745{
25746	fn from(value: &PullRequestReviewCommentDeletedPullRequestState) -> Self {
25747		value.clone()
25748	}
25749}
25750impl ToString for PullRequestReviewCommentDeletedPullRequestState {
25751	fn to_string(&self) -> String {
25752		match *self {
25753			Self::Open => "open".to_string(),
25754			Self::Closed => "closed".to_string(),
25755		}
25756	}
25757}
25758impl std::str::FromStr for PullRequestReviewCommentDeletedPullRequestState {
25759	type Err = &'static str;
25760
25761	fn from_str(value: &str) -> Result<Self, &'static str> {
25762		match value {
25763			"open" => Ok(Self::Open),
25764			"closed" => Ok(Self::Closed),
25765			_ => Err("invalid value"),
25766		}
25767	}
25768}
25769impl std::convert::TryFrom<&str> for PullRequestReviewCommentDeletedPullRequestState {
25770	type Error = &'static str;
25771
25772	fn try_from(value: &str) -> Result<Self, &'static str> {
25773		value.parse()
25774	}
25775}
25776impl std::convert::TryFrom<&String> for PullRequestReviewCommentDeletedPullRequestState {
25777	type Error = &'static str;
25778
25779	fn try_from(value: &String) -> Result<Self, &'static str> {
25780		value.parse()
25781	}
25782}
25783impl std::convert::TryFrom<String> for PullRequestReviewCommentDeletedPullRequestState {
25784	type Error = &'static str;
25785
25786	fn try_from(value: String) -> Result<Self, &'static str> {
25787		value.parse()
25788	}
25789}
25790#[derive(Clone, Debug, Deserialize, Serialize)]
25791#[serde(deny_unknown_fields)]
25792pub struct PullRequestReviewCommentEdited {
25793	pub action:       PullRequestReviewCommentEditedAction,
25794	pub changes:      PullRequestReviewCommentEditedChanges,
25795	pub comment:      PullRequestReviewComment,
25796	#[serde(default, skip_serializing_if = "Option::is_none")]
25797	pub installation: Option<InstallationLite>,
25798	#[serde(default, skip_serializing_if = "Option::is_none")]
25799	pub organization: Option<Organization>,
25800	pub pull_request: PullRequestReviewCommentEditedPullRequest,
25801	pub repository:   Repository,
25802	pub sender:       User,
25803}
25804impl From<&PullRequestReviewCommentEdited> for PullRequestReviewCommentEdited {
25805	fn from(value: &PullRequestReviewCommentEdited) -> Self {
25806		value.clone()
25807	}
25808}
25809#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25810pub enum PullRequestReviewCommentEditedAction {
25811	#[serde(rename = "edited")]
25812	Edited,
25813}
25814impl From<&PullRequestReviewCommentEditedAction> for PullRequestReviewCommentEditedAction {
25815	fn from(value: &PullRequestReviewCommentEditedAction) -> Self {
25816		value.clone()
25817	}
25818}
25819impl ToString for PullRequestReviewCommentEditedAction {
25820	fn to_string(&self) -> String {
25821		match *self {
25822			Self::Edited => "edited".to_string(),
25823		}
25824	}
25825}
25826impl std::str::FromStr for PullRequestReviewCommentEditedAction {
25827	type Err = &'static str;
25828
25829	fn from_str(value: &str) -> Result<Self, &'static str> {
25830		match value {
25831			"edited" => Ok(Self::Edited),
25832			_ => Err("invalid value"),
25833		}
25834	}
25835}
25836impl std::convert::TryFrom<&str> for PullRequestReviewCommentEditedAction {
25837	type Error = &'static str;
25838
25839	fn try_from(value: &str) -> Result<Self, &'static str> {
25840		value.parse()
25841	}
25842}
25843impl std::convert::TryFrom<&String> for PullRequestReviewCommentEditedAction {
25844	type Error = &'static str;
25845
25846	fn try_from(value: &String) -> Result<Self, &'static str> {
25847		value.parse()
25848	}
25849}
25850impl std::convert::TryFrom<String> for PullRequestReviewCommentEditedAction {
25851	type Error = &'static str;
25852
25853	fn try_from(value: String) -> Result<Self, &'static str> {
25854		value.parse()
25855	}
25856}
25857/// The changes to the comment.
25858#[derive(Clone, Debug, Deserialize, Serialize)]
25859#[serde(deny_unknown_fields)]
25860pub struct PullRequestReviewCommentEditedChanges {
25861	#[serde(default, skip_serializing_if = "Option::is_none")]
25862	pub body: Option<PullRequestReviewCommentEditedChangesBody>,
25863}
25864impl From<&PullRequestReviewCommentEditedChanges> for PullRequestReviewCommentEditedChanges {
25865	fn from(value: &PullRequestReviewCommentEditedChanges) -> Self {
25866		value.clone()
25867	}
25868}
25869#[derive(Clone, Debug, Deserialize, Serialize)]
25870#[serde(deny_unknown_fields)]
25871pub struct PullRequestReviewCommentEditedChangesBody {
25872	/// The previous version of the body.
25873	pub from: String,
25874}
25875impl From<&PullRequestReviewCommentEditedChangesBody>
25876	for PullRequestReviewCommentEditedChangesBody
25877{
25878	fn from(value: &PullRequestReviewCommentEditedChangesBody) -> Self {
25879		value.clone()
25880	}
25881}
25882#[derive(Clone, Debug, Deserialize, Serialize)]
25883#[serde(deny_unknown_fields)]
25884pub struct PullRequestReviewCommentEditedPullRequest {
25885	pub active_lock_reason:  Option<PullRequestReviewCommentEditedPullRequestActiveLockReason>,
25886	pub assignee:            Option<User>,
25887	pub assignees:           Vec<User>,
25888	pub author_association:  AuthorAssociation,
25889	#[serde(default, skip_serializing_if = "Option::is_none")]
25890	pub auto_merge:          Option<AutoMerge>,
25891	pub base:                PullRequestReviewCommentEditedPullRequestBase,
25892	pub body:                Option<String>,
25893	pub closed_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
25894	pub comments_url:        String,
25895	pub commits_url:         String,
25896	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
25897	pub diff_url:            String,
25898	#[serde(default, skip_serializing_if = "Option::is_none")]
25899	pub draft:               Option<bool>,
25900	pub head:                PullRequestReviewCommentEditedPullRequestHead,
25901	pub html_url:            String,
25902	pub id:                  i64,
25903	pub issue_url:           String,
25904	pub labels:              Vec<Label>,
25905	#[serde(rename = "_links")]
25906	pub links:               PullRequestReviewCommentEditedPullRequestLinks,
25907	pub locked:              bool,
25908	pub merge_commit_sha:    Option<String>,
25909	pub merged_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
25910	pub milestone:           Option<Milestone>,
25911	pub node_id:             String,
25912	pub number:              i64,
25913	pub patch_url:           String,
25914	pub requested_reviewers: Vec<PullRequestReviewCommentEditedPullRequestRequestedReviewersItem>,
25915	pub requested_teams:     Vec<Team>,
25916	pub review_comment_url:  String,
25917	pub review_comments_url: String,
25918	pub state:               PullRequestReviewCommentEditedPullRequestState,
25919	pub statuses_url:        String,
25920	pub title:               String,
25921	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
25922	pub url:                 String,
25923	pub user:                User,
25924}
25925impl From<&PullRequestReviewCommentEditedPullRequest>
25926	for PullRequestReviewCommentEditedPullRequest
25927{
25928	fn from(value: &PullRequestReviewCommentEditedPullRequest) -> Self {
25929		value.clone()
25930	}
25931}
25932#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
25933pub enum PullRequestReviewCommentEditedPullRequestActiveLockReason {
25934	#[serde(rename = "resolved")]
25935	Resolved,
25936	#[serde(rename = "off-topic")]
25937	OffTopic,
25938	#[serde(rename = "too heated")]
25939	TooHeated,
25940	#[serde(rename = "spam")]
25941	Spam,
25942}
25943impl From<&PullRequestReviewCommentEditedPullRequestActiveLockReason>
25944	for PullRequestReviewCommentEditedPullRequestActiveLockReason
25945{
25946	fn from(value: &PullRequestReviewCommentEditedPullRequestActiveLockReason) -> Self {
25947		value.clone()
25948	}
25949}
25950impl ToString for PullRequestReviewCommentEditedPullRequestActiveLockReason {
25951	fn to_string(&self) -> String {
25952		match *self {
25953			Self::Resolved => "resolved".to_string(),
25954			Self::OffTopic => "off-topic".to_string(),
25955			Self::TooHeated => "too heated".to_string(),
25956			Self::Spam => "spam".to_string(),
25957		}
25958	}
25959}
25960impl std::str::FromStr for PullRequestReviewCommentEditedPullRequestActiveLockReason {
25961	type Err = &'static str;
25962
25963	fn from_str(value: &str) -> Result<Self, &'static str> {
25964		match value {
25965			"resolved" => Ok(Self::Resolved),
25966			"off-topic" => Ok(Self::OffTopic),
25967			"too heated" => Ok(Self::TooHeated),
25968			"spam" => Ok(Self::Spam),
25969			_ => Err("invalid value"),
25970		}
25971	}
25972}
25973impl std::convert::TryFrom<&str> for PullRequestReviewCommentEditedPullRequestActiveLockReason {
25974	type Error = &'static str;
25975
25976	fn try_from(value: &str) -> Result<Self, &'static str> {
25977		value.parse()
25978	}
25979}
25980impl std::convert::TryFrom<&String> for PullRequestReviewCommentEditedPullRequestActiveLockReason {
25981	type Error = &'static str;
25982
25983	fn try_from(value: &String) -> Result<Self, &'static str> {
25984		value.parse()
25985	}
25986}
25987impl std::convert::TryFrom<String> for PullRequestReviewCommentEditedPullRequestActiveLockReason {
25988	type Error = &'static str;
25989
25990	fn try_from(value: String) -> Result<Self, &'static str> {
25991		value.parse()
25992	}
25993}
25994#[derive(Clone, Debug, Deserialize, Serialize)]
25995#[serde(deny_unknown_fields)]
25996pub struct PullRequestReviewCommentEditedPullRequestBase {
25997	pub label: String,
25998	#[serde(rename = "ref")]
25999	pub ref_:  String,
26000	pub repo:  Repository,
26001	pub sha:   String,
26002	pub user:  User,
26003}
26004impl From<&PullRequestReviewCommentEditedPullRequestBase>
26005	for PullRequestReviewCommentEditedPullRequestBase
26006{
26007	fn from(value: &PullRequestReviewCommentEditedPullRequestBase) -> Self {
26008		value.clone()
26009	}
26010}
26011#[derive(Clone, Debug, Deserialize, Serialize)]
26012#[serde(deny_unknown_fields)]
26013pub struct PullRequestReviewCommentEditedPullRequestHead {
26014	pub label: String,
26015	#[serde(rename = "ref")]
26016	pub ref_:  String,
26017	pub repo:  Repository,
26018	pub sha:   String,
26019	pub user:  User,
26020}
26021impl From<&PullRequestReviewCommentEditedPullRequestHead>
26022	for PullRequestReviewCommentEditedPullRequestHead
26023{
26024	fn from(value: &PullRequestReviewCommentEditedPullRequestHead) -> Self {
26025		value.clone()
26026	}
26027}
26028#[derive(Clone, Debug, Deserialize, Serialize)]
26029#[serde(deny_unknown_fields)]
26030pub struct PullRequestReviewCommentEditedPullRequestLinks {
26031	pub comments:        Link,
26032	pub commits:         Link,
26033	pub html:            Link,
26034	pub issue:           Link,
26035	pub review_comment:  Link,
26036	pub review_comments: Link,
26037	#[serde(rename = "self")]
26038	pub self_:           Link,
26039	pub statuses:        Link,
26040}
26041impl From<&PullRequestReviewCommentEditedPullRequestLinks>
26042	for PullRequestReviewCommentEditedPullRequestLinks
26043{
26044	fn from(value: &PullRequestReviewCommentEditedPullRequestLinks) -> Self {
26045		value.clone()
26046	}
26047}
26048#[derive(Clone, Debug, Deserialize, Serialize)]
26049#[serde(untagged)]
26050pub enum PullRequestReviewCommentEditedPullRequestRequestedReviewersItem {
26051	User(User),
26052	Team(Team),
26053}
26054impl From<&PullRequestReviewCommentEditedPullRequestRequestedReviewersItem>
26055	for PullRequestReviewCommentEditedPullRequestRequestedReviewersItem
26056{
26057	fn from(value: &PullRequestReviewCommentEditedPullRequestRequestedReviewersItem) -> Self {
26058		value.clone()
26059	}
26060}
26061impl From<User> for PullRequestReviewCommentEditedPullRequestRequestedReviewersItem {
26062	fn from(value: User) -> Self {
26063		Self::User(value)
26064	}
26065}
26066impl From<Team> for PullRequestReviewCommentEditedPullRequestRequestedReviewersItem {
26067	fn from(value: Team) -> Self {
26068		Self::Team(value)
26069	}
26070}
26071#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26072pub enum PullRequestReviewCommentEditedPullRequestState {
26073	#[serde(rename = "open")]
26074	Open,
26075	#[serde(rename = "closed")]
26076	Closed,
26077}
26078impl From<&PullRequestReviewCommentEditedPullRequestState>
26079	for PullRequestReviewCommentEditedPullRequestState
26080{
26081	fn from(value: &PullRequestReviewCommentEditedPullRequestState) -> Self {
26082		value.clone()
26083	}
26084}
26085impl ToString for PullRequestReviewCommentEditedPullRequestState {
26086	fn to_string(&self) -> String {
26087		match *self {
26088			Self::Open => "open".to_string(),
26089			Self::Closed => "closed".to_string(),
26090		}
26091	}
26092}
26093impl std::str::FromStr for PullRequestReviewCommentEditedPullRequestState {
26094	type Err = &'static str;
26095
26096	fn from_str(value: &str) -> Result<Self, &'static str> {
26097		match value {
26098			"open" => Ok(Self::Open),
26099			"closed" => Ok(Self::Closed),
26100			_ => Err("invalid value"),
26101		}
26102	}
26103}
26104impl std::convert::TryFrom<&str> for PullRequestReviewCommentEditedPullRequestState {
26105	type Error = &'static str;
26106
26107	fn try_from(value: &str) -> Result<Self, &'static str> {
26108		value.parse()
26109	}
26110}
26111impl std::convert::TryFrom<&String> for PullRequestReviewCommentEditedPullRequestState {
26112	type Error = &'static str;
26113
26114	fn try_from(value: &String) -> Result<Self, &'static str> {
26115		value.parse()
26116	}
26117}
26118impl std::convert::TryFrom<String> for PullRequestReviewCommentEditedPullRequestState {
26119	type Error = &'static str;
26120
26121	fn try_from(value: String) -> Result<Self, &'static str> {
26122		value.parse()
26123	}
26124}
26125#[derive(Clone, Debug, Deserialize, Serialize)]
26126#[serde(untagged)]
26127pub enum PullRequestReviewCommentEvent {
26128	Created(PullRequestReviewCommentCreated),
26129	Deleted(PullRequestReviewCommentDeleted),
26130	Edited(PullRequestReviewCommentEdited),
26131}
26132impl From<&PullRequestReviewCommentEvent> for PullRequestReviewCommentEvent {
26133	fn from(value: &PullRequestReviewCommentEvent) -> Self {
26134		value.clone()
26135	}
26136}
26137impl From<PullRequestReviewCommentCreated> for PullRequestReviewCommentEvent {
26138	fn from(value: PullRequestReviewCommentCreated) -> Self {
26139		Self::Created(value)
26140	}
26141}
26142impl From<PullRequestReviewCommentDeleted> for PullRequestReviewCommentEvent {
26143	fn from(value: PullRequestReviewCommentDeleted) -> Self {
26144		Self::Deleted(value)
26145	}
26146}
26147impl From<PullRequestReviewCommentEdited> for PullRequestReviewCommentEvent {
26148	fn from(value: PullRequestReviewCommentEdited) -> Self {
26149		Self::Edited(value)
26150	}
26151}
26152#[derive(Clone, Debug, Deserialize, Serialize)]
26153#[serde(deny_unknown_fields)]
26154pub struct PullRequestReviewCommentLinks {
26155	pub html:         Link,
26156	pub pull_request: Link,
26157	#[serde(rename = "self")]
26158	pub self_:        Link,
26159}
26160impl From<&PullRequestReviewCommentLinks> for PullRequestReviewCommentLinks {
26161	fn from(value: &PullRequestReviewCommentLinks) -> Self {
26162		value.clone()
26163	}
26164}
26165/// The side of the first line of the range for a multi-line comment.
26166#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26167pub enum PullRequestReviewCommentSide {
26168	#[serde(rename = "LEFT")]
26169	Left,
26170	#[serde(rename = "RIGHT")]
26171	Right,
26172}
26173impl From<&PullRequestReviewCommentSide> for PullRequestReviewCommentSide {
26174	fn from(value: &PullRequestReviewCommentSide) -> Self {
26175		value.clone()
26176	}
26177}
26178impl ToString for PullRequestReviewCommentSide {
26179	fn to_string(&self) -> String {
26180		match *self {
26181			Self::Left => "LEFT".to_string(),
26182			Self::Right => "RIGHT".to_string(),
26183		}
26184	}
26185}
26186impl std::str::FromStr for PullRequestReviewCommentSide {
26187	type Err = &'static str;
26188
26189	fn from_str(value: &str) -> Result<Self, &'static str> {
26190		match value {
26191			"LEFT" => Ok(Self::Left),
26192			"RIGHT" => Ok(Self::Right),
26193			_ => Err("invalid value"),
26194		}
26195	}
26196}
26197impl std::convert::TryFrom<&str> for PullRequestReviewCommentSide {
26198	type Error = &'static str;
26199
26200	fn try_from(value: &str) -> Result<Self, &'static str> {
26201		value.parse()
26202	}
26203}
26204impl std::convert::TryFrom<&String> for PullRequestReviewCommentSide {
26205	type Error = &'static str;
26206
26207	fn try_from(value: &String) -> Result<Self, &'static str> {
26208		value.parse()
26209	}
26210}
26211impl std::convert::TryFrom<String> for PullRequestReviewCommentSide {
26212	type Error = &'static str;
26213
26214	fn try_from(value: String) -> Result<Self, &'static str> {
26215		value.parse()
26216	}
26217}
26218/// The side of the first line of the range for a multi-line comment.
26219#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26220pub enum PullRequestReviewCommentStartSide {
26221	#[serde(rename = "LEFT")]
26222	Left,
26223	#[serde(rename = "RIGHT")]
26224	Right,
26225}
26226impl From<&PullRequestReviewCommentStartSide> for PullRequestReviewCommentStartSide {
26227	fn from(value: &PullRequestReviewCommentStartSide) -> Self {
26228		value.clone()
26229	}
26230}
26231impl ToString for PullRequestReviewCommentStartSide {
26232	fn to_string(&self) -> String {
26233		match *self {
26234			Self::Left => "LEFT".to_string(),
26235			Self::Right => "RIGHT".to_string(),
26236		}
26237	}
26238}
26239impl std::str::FromStr for PullRequestReviewCommentStartSide {
26240	type Err = &'static str;
26241
26242	fn from_str(value: &str) -> Result<Self, &'static str> {
26243		match value {
26244			"LEFT" => Ok(Self::Left),
26245			"RIGHT" => Ok(Self::Right),
26246			_ => Err("invalid value"),
26247		}
26248	}
26249}
26250impl std::convert::TryFrom<&str> for PullRequestReviewCommentStartSide {
26251	type Error = &'static str;
26252
26253	fn try_from(value: &str) -> Result<Self, &'static str> {
26254		value.parse()
26255	}
26256}
26257impl std::convert::TryFrom<&String> for PullRequestReviewCommentStartSide {
26258	type Error = &'static str;
26259
26260	fn try_from(value: &String) -> Result<Self, &'static str> {
26261		value.parse()
26262	}
26263}
26264impl std::convert::TryFrom<String> for PullRequestReviewCommentStartSide {
26265	type Error = &'static str;
26266
26267	fn try_from(value: String) -> Result<Self, &'static str> {
26268		value.parse()
26269	}
26270}
26271/// The level at which the comment is targeted, can be a diff line or a file.
26272#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26273pub enum PullRequestReviewCommentSubjectType {
26274	#[serde(rename = "line")]
26275	Line,
26276	#[serde(rename = "file")]
26277	File,
26278}
26279impl From<&PullRequestReviewCommentSubjectType> for PullRequestReviewCommentSubjectType {
26280	fn from(value: &PullRequestReviewCommentSubjectType) -> Self {
26281		value.clone()
26282	}
26283}
26284impl ToString for PullRequestReviewCommentSubjectType {
26285	fn to_string(&self) -> String {
26286		match *self {
26287			Self::Line => "line".to_string(),
26288			Self::File => "file".to_string(),
26289		}
26290	}
26291}
26292impl std::str::FromStr for PullRequestReviewCommentSubjectType {
26293	type Err = &'static str;
26294
26295	fn from_str(value: &str) -> Result<Self, &'static str> {
26296		match value {
26297			"line" => Ok(Self::Line),
26298			"file" => Ok(Self::File),
26299			_ => Err("invalid value"),
26300		}
26301	}
26302}
26303impl std::convert::TryFrom<&str> for PullRequestReviewCommentSubjectType {
26304	type Error = &'static str;
26305
26306	fn try_from(value: &str) -> Result<Self, &'static str> {
26307		value.parse()
26308	}
26309}
26310impl std::convert::TryFrom<&String> for PullRequestReviewCommentSubjectType {
26311	type Error = &'static str;
26312
26313	fn try_from(value: &String) -> Result<Self, &'static str> {
26314		value.parse()
26315	}
26316}
26317impl std::convert::TryFrom<String> for PullRequestReviewCommentSubjectType {
26318	type Error = &'static str;
26319
26320	fn try_from(value: String) -> Result<Self, &'static str> {
26321		value.parse()
26322	}
26323}
26324#[derive(Clone, Debug, Deserialize, Serialize)]
26325#[serde(deny_unknown_fields)]
26326pub struct PullRequestReviewDismissed {
26327	pub action:       PullRequestReviewDismissedAction,
26328	#[serde(default, skip_serializing_if = "Option::is_none")]
26329	pub installation: Option<InstallationLite>,
26330	#[serde(default, skip_serializing_if = "Option::is_none")]
26331	pub organization: Option<Organization>,
26332	pub pull_request: SimplePullRequest,
26333	pub repository:   Repository,
26334	pub review:       PullRequestReview,
26335	pub sender:       User,
26336}
26337impl From<&PullRequestReviewDismissed> for PullRequestReviewDismissed {
26338	fn from(value: &PullRequestReviewDismissed) -> Self {
26339		value.clone()
26340	}
26341}
26342#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26343pub enum PullRequestReviewDismissedAction {
26344	#[serde(rename = "dismissed")]
26345	Dismissed,
26346}
26347impl From<&PullRequestReviewDismissedAction> for PullRequestReviewDismissedAction {
26348	fn from(value: &PullRequestReviewDismissedAction) -> Self {
26349		value.clone()
26350	}
26351}
26352impl ToString for PullRequestReviewDismissedAction {
26353	fn to_string(&self) -> String {
26354		match *self {
26355			Self::Dismissed => "dismissed".to_string(),
26356		}
26357	}
26358}
26359impl std::str::FromStr for PullRequestReviewDismissedAction {
26360	type Err = &'static str;
26361
26362	fn from_str(value: &str) -> Result<Self, &'static str> {
26363		match value {
26364			"dismissed" => Ok(Self::Dismissed),
26365			_ => Err("invalid value"),
26366		}
26367	}
26368}
26369impl std::convert::TryFrom<&str> for PullRequestReviewDismissedAction {
26370	type Error = &'static str;
26371
26372	fn try_from(value: &str) -> Result<Self, &'static str> {
26373		value.parse()
26374	}
26375}
26376impl std::convert::TryFrom<&String> for PullRequestReviewDismissedAction {
26377	type Error = &'static str;
26378
26379	fn try_from(value: &String) -> Result<Self, &'static str> {
26380		value.parse()
26381	}
26382}
26383impl std::convert::TryFrom<String> for PullRequestReviewDismissedAction {
26384	type Error = &'static str;
26385
26386	fn try_from(value: String) -> Result<Self, &'static str> {
26387		value.parse()
26388	}
26389}
26390#[derive(Clone, Debug, Deserialize, Serialize)]
26391#[serde(deny_unknown_fields)]
26392pub struct PullRequestReviewEdited {
26393	pub action:       PullRequestReviewEditedAction,
26394	pub changes:      PullRequestReviewEditedChanges,
26395	#[serde(default, skip_serializing_if = "Option::is_none")]
26396	pub installation: Option<InstallationLite>,
26397	#[serde(default, skip_serializing_if = "Option::is_none")]
26398	pub organization: Option<Organization>,
26399	pub pull_request: SimplePullRequest,
26400	pub repository:   Repository,
26401	pub review:       PullRequestReview,
26402	pub sender:       User,
26403}
26404impl From<&PullRequestReviewEdited> for PullRequestReviewEdited {
26405	fn from(value: &PullRequestReviewEdited) -> Self {
26406		value.clone()
26407	}
26408}
26409#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26410pub enum PullRequestReviewEditedAction {
26411	#[serde(rename = "edited")]
26412	Edited,
26413}
26414impl From<&PullRequestReviewEditedAction> for PullRequestReviewEditedAction {
26415	fn from(value: &PullRequestReviewEditedAction) -> Self {
26416		value.clone()
26417	}
26418}
26419impl ToString for PullRequestReviewEditedAction {
26420	fn to_string(&self) -> String {
26421		match *self {
26422			Self::Edited => "edited".to_string(),
26423		}
26424	}
26425}
26426impl std::str::FromStr for PullRequestReviewEditedAction {
26427	type Err = &'static str;
26428
26429	fn from_str(value: &str) -> Result<Self, &'static str> {
26430		match value {
26431			"edited" => Ok(Self::Edited),
26432			_ => Err("invalid value"),
26433		}
26434	}
26435}
26436impl std::convert::TryFrom<&str> for PullRequestReviewEditedAction {
26437	type Error = &'static str;
26438
26439	fn try_from(value: &str) -> Result<Self, &'static str> {
26440		value.parse()
26441	}
26442}
26443impl std::convert::TryFrom<&String> for PullRequestReviewEditedAction {
26444	type Error = &'static str;
26445
26446	fn try_from(value: &String) -> Result<Self, &'static str> {
26447		value.parse()
26448	}
26449}
26450impl std::convert::TryFrom<String> for PullRequestReviewEditedAction {
26451	type Error = &'static str;
26452
26453	fn try_from(value: String) -> Result<Self, &'static str> {
26454		value.parse()
26455	}
26456}
26457#[derive(Clone, Debug, Deserialize, Serialize)]
26458#[serde(deny_unknown_fields)]
26459pub struct PullRequestReviewEditedChanges {
26460	#[serde(default, skip_serializing_if = "Option::is_none")]
26461	pub body: Option<PullRequestReviewEditedChangesBody>,
26462}
26463impl From<&PullRequestReviewEditedChanges> for PullRequestReviewEditedChanges {
26464	fn from(value: &PullRequestReviewEditedChanges) -> Self {
26465		value.clone()
26466	}
26467}
26468#[derive(Clone, Debug, Deserialize, Serialize)]
26469#[serde(deny_unknown_fields)]
26470pub struct PullRequestReviewEditedChangesBody {
26471	/// The previous version of the body if the action was `edited`.
26472	pub from: String,
26473}
26474impl From<&PullRequestReviewEditedChangesBody> for PullRequestReviewEditedChangesBody {
26475	fn from(value: &PullRequestReviewEditedChangesBody) -> Self {
26476		value.clone()
26477	}
26478}
26479#[derive(Clone, Debug, Deserialize, Serialize)]
26480#[serde(untagged)]
26481pub enum PullRequestReviewEvent {
26482	Dismissed(PullRequestReviewDismissed),
26483	Edited(PullRequestReviewEdited),
26484	Submitted(PullRequestReviewSubmitted),
26485}
26486impl From<&PullRequestReviewEvent> for PullRequestReviewEvent {
26487	fn from(value: &PullRequestReviewEvent) -> Self {
26488		value.clone()
26489	}
26490}
26491impl From<PullRequestReviewDismissed> for PullRequestReviewEvent {
26492	fn from(value: PullRequestReviewDismissed) -> Self {
26493		Self::Dismissed(value)
26494	}
26495}
26496impl From<PullRequestReviewEdited> for PullRequestReviewEvent {
26497	fn from(value: PullRequestReviewEdited) -> Self {
26498		Self::Edited(value)
26499	}
26500}
26501impl From<PullRequestReviewSubmitted> for PullRequestReviewEvent {
26502	fn from(value: PullRequestReviewSubmitted) -> Self {
26503		Self::Submitted(value)
26504	}
26505}
26506#[derive(Clone, Debug, Deserialize, Serialize)]
26507#[serde(deny_unknown_fields)]
26508pub struct PullRequestReviewLinks {
26509	pub html:         Link,
26510	pub pull_request: Link,
26511}
26512impl From<&PullRequestReviewLinks> for PullRequestReviewLinks {
26513	fn from(value: &PullRequestReviewLinks) -> Self {
26514		value.clone()
26515	}
26516}
26517#[derive(Clone, Debug, Deserialize, Serialize)]
26518#[serde(untagged, deny_unknown_fields)]
26519pub enum PullRequestReviewRequestRemoved {
26520	Variant0 {
26521		action:             PullRequestReviewRequestRemovedVariant0Action,
26522		#[serde(default, skip_serializing_if = "Option::is_none")]
26523		installation:       Option<InstallationLite>,
26524		/// The pull request number.
26525		number:             i64,
26526		#[serde(default, skip_serializing_if = "Option::is_none")]
26527		organization:       Option<Organization>,
26528		pull_request:       PullRequest,
26529		repository:         Repository,
26530		requested_reviewer: User,
26531		sender:             User,
26532	},
26533	Variant1 {
26534		action:         PullRequestReviewRequestRemovedVariant1Action,
26535		#[serde(default, skip_serializing_if = "Option::is_none")]
26536		installation:   Option<InstallationLite>,
26537		/// The pull request number.
26538		number:         i64,
26539		#[serde(default, skip_serializing_if = "Option::is_none")]
26540		organization:   Option<Organization>,
26541		pull_request:   PullRequest,
26542		repository:     Repository,
26543		requested_team: Team,
26544		sender:         User,
26545	},
26546}
26547impl From<&PullRequestReviewRequestRemoved> for PullRequestReviewRequestRemoved {
26548	fn from(value: &PullRequestReviewRequestRemoved) -> Self {
26549		value.clone()
26550	}
26551}
26552#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26553pub enum PullRequestReviewRequestRemovedVariant0Action {
26554	#[serde(rename = "review_request_removed")]
26555	ReviewRequestRemoved,
26556}
26557impl From<&PullRequestReviewRequestRemovedVariant0Action>
26558	for PullRequestReviewRequestRemovedVariant0Action
26559{
26560	fn from(value: &PullRequestReviewRequestRemovedVariant0Action) -> Self {
26561		value.clone()
26562	}
26563}
26564impl ToString for PullRequestReviewRequestRemovedVariant0Action {
26565	fn to_string(&self) -> String {
26566		match *self {
26567			Self::ReviewRequestRemoved => "review_request_removed".to_string(),
26568		}
26569	}
26570}
26571impl std::str::FromStr for PullRequestReviewRequestRemovedVariant0Action {
26572	type Err = &'static str;
26573
26574	fn from_str(value: &str) -> Result<Self, &'static str> {
26575		match value {
26576			"review_request_removed" => Ok(Self::ReviewRequestRemoved),
26577			_ => Err("invalid value"),
26578		}
26579	}
26580}
26581impl std::convert::TryFrom<&str> for PullRequestReviewRequestRemovedVariant0Action {
26582	type Error = &'static str;
26583
26584	fn try_from(value: &str) -> Result<Self, &'static str> {
26585		value.parse()
26586	}
26587}
26588impl std::convert::TryFrom<&String> for PullRequestReviewRequestRemovedVariant0Action {
26589	type Error = &'static str;
26590
26591	fn try_from(value: &String) -> Result<Self, &'static str> {
26592		value.parse()
26593	}
26594}
26595impl std::convert::TryFrom<String> for PullRequestReviewRequestRemovedVariant0Action {
26596	type Error = &'static str;
26597
26598	fn try_from(value: String) -> Result<Self, &'static str> {
26599		value.parse()
26600	}
26601}
26602#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26603pub enum PullRequestReviewRequestRemovedVariant1Action {
26604	#[serde(rename = "review_request_removed")]
26605	ReviewRequestRemoved,
26606}
26607impl From<&PullRequestReviewRequestRemovedVariant1Action>
26608	for PullRequestReviewRequestRemovedVariant1Action
26609{
26610	fn from(value: &PullRequestReviewRequestRemovedVariant1Action) -> Self {
26611		value.clone()
26612	}
26613}
26614impl ToString for PullRequestReviewRequestRemovedVariant1Action {
26615	fn to_string(&self) -> String {
26616		match *self {
26617			Self::ReviewRequestRemoved => "review_request_removed".to_string(),
26618		}
26619	}
26620}
26621impl std::str::FromStr for PullRequestReviewRequestRemovedVariant1Action {
26622	type Err = &'static str;
26623
26624	fn from_str(value: &str) -> Result<Self, &'static str> {
26625		match value {
26626			"review_request_removed" => Ok(Self::ReviewRequestRemoved),
26627			_ => Err("invalid value"),
26628		}
26629	}
26630}
26631impl std::convert::TryFrom<&str> for PullRequestReviewRequestRemovedVariant1Action {
26632	type Error = &'static str;
26633
26634	fn try_from(value: &str) -> Result<Self, &'static str> {
26635		value.parse()
26636	}
26637}
26638impl std::convert::TryFrom<&String> for PullRequestReviewRequestRemovedVariant1Action {
26639	type Error = &'static str;
26640
26641	fn try_from(value: &String) -> Result<Self, &'static str> {
26642		value.parse()
26643	}
26644}
26645impl std::convert::TryFrom<String> for PullRequestReviewRequestRemovedVariant1Action {
26646	type Error = &'static str;
26647
26648	fn try_from(value: String) -> Result<Self, &'static str> {
26649		value.parse()
26650	}
26651}
26652#[derive(Clone, Debug, Deserialize, Serialize)]
26653#[serde(untagged, deny_unknown_fields)]
26654pub enum PullRequestReviewRequested {
26655	Variant0 {
26656		action:             PullRequestReviewRequestedVariant0Action,
26657		#[serde(default, skip_serializing_if = "Option::is_none")]
26658		installation:       Option<InstallationLite>,
26659		/// The pull request number.
26660		number:             i64,
26661		#[serde(default, skip_serializing_if = "Option::is_none")]
26662		organization:       Option<Organization>,
26663		pull_request:       PullRequest,
26664		repository:         Repository,
26665		requested_reviewer: User,
26666		sender:             User,
26667	},
26668	Variant1 {
26669		action:         PullRequestReviewRequestedVariant1Action,
26670		#[serde(default, skip_serializing_if = "Option::is_none")]
26671		installation:   Option<InstallationLite>,
26672		/// The pull request number.
26673		number:         i64,
26674		#[serde(default, skip_serializing_if = "Option::is_none")]
26675		organization:   Option<Organization>,
26676		pull_request:   PullRequest,
26677		repository:     Repository,
26678		requested_team: Team,
26679		sender:         User,
26680	},
26681}
26682impl From<&PullRequestReviewRequested> for PullRequestReviewRequested {
26683	fn from(value: &PullRequestReviewRequested) -> Self {
26684		value.clone()
26685	}
26686}
26687#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26688pub enum PullRequestReviewRequestedVariant0Action {
26689	#[serde(rename = "review_requested")]
26690	ReviewRequested,
26691}
26692impl From<&PullRequestReviewRequestedVariant0Action> for PullRequestReviewRequestedVariant0Action {
26693	fn from(value: &PullRequestReviewRequestedVariant0Action) -> Self {
26694		value.clone()
26695	}
26696}
26697impl ToString for PullRequestReviewRequestedVariant0Action {
26698	fn to_string(&self) -> String {
26699		match *self {
26700			Self::ReviewRequested => "review_requested".to_string(),
26701		}
26702	}
26703}
26704impl std::str::FromStr for PullRequestReviewRequestedVariant0Action {
26705	type Err = &'static str;
26706
26707	fn from_str(value: &str) -> Result<Self, &'static str> {
26708		match value {
26709			"review_requested" => Ok(Self::ReviewRequested),
26710			_ => Err("invalid value"),
26711		}
26712	}
26713}
26714impl std::convert::TryFrom<&str> for PullRequestReviewRequestedVariant0Action {
26715	type Error = &'static str;
26716
26717	fn try_from(value: &str) -> Result<Self, &'static str> {
26718		value.parse()
26719	}
26720}
26721impl std::convert::TryFrom<&String> for PullRequestReviewRequestedVariant0Action {
26722	type Error = &'static str;
26723
26724	fn try_from(value: &String) -> Result<Self, &'static str> {
26725		value.parse()
26726	}
26727}
26728impl std::convert::TryFrom<String> for PullRequestReviewRequestedVariant0Action {
26729	type Error = &'static str;
26730
26731	fn try_from(value: String) -> Result<Self, &'static str> {
26732		value.parse()
26733	}
26734}
26735#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26736pub enum PullRequestReviewRequestedVariant1Action {
26737	#[serde(rename = "review_requested")]
26738	ReviewRequested,
26739}
26740impl From<&PullRequestReviewRequestedVariant1Action> for PullRequestReviewRequestedVariant1Action {
26741	fn from(value: &PullRequestReviewRequestedVariant1Action) -> Self {
26742		value.clone()
26743	}
26744}
26745impl ToString for PullRequestReviewRequestedVariant1Action {
26746	fn to_string(&self) -> String {
26747		match *self {
26748			Self::ReviewRequested => "review_requested".to_string(),
26749		}
26750	}
26751}
26752impl std::str::FromStr for PullRequestReviewRequestedVariant1Action {
26753	type Err = &'static str;
26754
26755	fn from_str(value: &str) -> Result<Self, &'static str> {
26756		match value {
26757			"review_requested" => Ok(Self::ReviewRequested),
26758			_ => Err("invalid value"),
26759		}
26760	}
26761}
26762impl std::convert::TryFrom<&str> for PullRequestReviewRequestedVariant1Action {
26763	type Error = &'static str;
26764
26765	fn try_from(value: &str) -> Result<Self, &'static str> {
26766		value.parse()
26767	}
26768}
26769impl std::convert::TryFrom<&String> for PullRequestReviewRequestedVariant1Action {
26770	type Error = &'static str;
26771
26772	fn try_from(value: &String) -> Result<Self, &'static str> {
26773		value.parse()
26774	}
26775}
26776impl std::convert::TryFrom<String> for PullRequestReviewRequestedVariant1Action {
26777	type Error = &'static str;
26778
26779	fn try_from(value: String) -> Result<Self, &'static str> {
26780		value.parse()
26781	}
26782}
26783#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26784pub enum PullRequestReviewState {
26785	#[serde(rename = "commented")]
26786	Commented,
26787	#[serde(rename = "changes_requested")]
26788	ChangesRequested,
26789	#[serde(rename = "approved")]
26790	Approved,
26791	#[serde(rename = "dismissed")]
26792	Dismissed,
26793}
26794impl From<&PullRequestReviewState> for PullRequestReviewState {
26795	fn from(value: &PullRequestReviewState) -> Self {
26796		value.clone()
26797	}
26798}
26799impl ToString for PullRequestReviewState {
26800	fn to_string(&self) -> String {
26801		match *self {
26802			Self::Commented => "commented".to_string(),
26803			Self::ChangesRequested => "changes_requested".to_string(),
26804			Self::Approved => "approved".to_string(),
26805			Self::Dismissed => "dismissed".to_string(),
26806		}
26807	}
26808}
26809impl std::str::FromStr for PullRequestReviewState {
26810	type Err = &'static str;
26811
26812	fn from_str(value: &str) -> Result<Self, &'static str> {
26813		match value {
26814			"commented" => Ok(Self::Commented),
26815			"changes_requested" => Ok(Self::ChangesRequested),
26816			"approved" => Ok(Self::Approved),
26817			"dismissed" => Ok(Self::Dismissed),
26818			_ => Err("invalid value"),
26819		}
26820	}
26821}
26822impl std::convert::TryFrom<&str> for PullRequestReviewState {
26823	type Error = &'static str;
26824
26825	fn try_from(value: &str) -> Result<Self, &'static str> {
26826		value.parse()
26827	}
26828}
26829impl std::convert::TryFrom<&String> for PullRequestReviewState {
26830	type Error = &'static str;
26831
26832	fn try_from(value: &String) -> Result<Self, &'static str> {
26833		value.parse()
26834	}
26835}
26836impl std::convert::TryFrom<String> for PullRequestReviewState {
26837	type Error = &'static str;
26838
26839	fn try_from(value: String) -> Result<Self, &'static str> {
26840		value.parse()
26841	}
26842}
26843#[derive(Clone, Debug, Deserialize, Serialize)]
26844#[serde(deny_unknown_fields)]
26845pub struct PullRequestReviewSubmitted {
26846	pub action:       PullRequestReviewSubmittedAction,
26847	#[serde(default, skip_serializing_if = "Option::is_none")]
26848	pub installation: Option<InstallationLite>,
26849	#[serde(default, skip_serializing_if = "Option::is_none")]
26850	pub organization: Option<Organization>,
26851	pub pull_request: SimplePullRequest,
26852	pub repository:   Repository,
26853	pub review:       PullRequestReview,
26854	pub sender:       User,
26855}
26856impl From<&PullRequestReviewSubmitted> for PullRequestReviewSubmitted {
26857	fn from(value: &PullRequestReviewSubmitted) -> Self {
26858		value.clone()
26859	}
26860}
26861#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26862pub enum PullRequestReviewSubmittedAction {
26863	#[serde(rename = "submitted")]
26864	Submitted,
26865}
26866impl From<&PullRequestReviewSubmittedAction> for PullRequestReviewSubmittedAction {
26867	fn from(value: &PullRequestReviewSubmittedAction) -> Self {
26868		value.clone()
26869	}
26870}
26871impl ToString for PullRequestReviewSubmittedAction {
26872	fn to_string(&self) -> String {
26873		match *self {
26874			Self::Submitted => "submitted".to_string(),
26875		}
26876	}
26877}
26878impl std::str::FromStr for PullRequestReviewSubmittedAction {
26879	type Err = &'static str;
26880
26881	fn from_str(value: &str) -> Result<Self, &'static str> {
26882		match value {
26883			"submitted" => Ok(Self::Submitted),
26884			_ => Err("invalid value"),
26885		}
26886	}
26887}
26888impl std::convert::TryFrom<&str> for PullRequestReviewSubmittedAction {
26889	type Error = &'static str;
26890
26891	fn try_from(value: &str) -> Result<Self, &'static str> {
26892		value.parse()
26893	}
26894}
26895impl std::convert::TryFrom<&String> for PullRequestReviewSubmittedAction {
26896	type Error = &'static str;
26897
26898	fn try_from(value: &String) -> Result<Self, &'static str> {
26899		value.parse()
26900	}
26901}
26902impl std::convert::TryFrom<String> for PullRequestReviewSubmittedAction {
26903	type Error = &'static str;
26904
26905	fn try_from(value: String) -> Result<Self, &'static str> {
26906		value.parse()
26907	}
26908}
26909#[derive(Clone, Debug, Deserialize, Serialize)]
26910#[serde(untagged)]
26911pub enum PullRequestReviewThreadEvent {
26912	Resolved(PullRequestReviewThreadResolved),
26913	Unresolved(PullRequestReviewThreadUnresolved),
26914}
26915impl From<&PullRequestReviewThreadEvent> for PullRequestReviewThreadEvent {
26916	fn from(value: &PullRequestReviewThreadEvent) -> Self {
26917		value.clone()
26918	}
26919}
26920impl From<PullRequestReviewThreadResolved> for PullRequestReviewThreadEvent {
26921	fn from(value: PullRequestReviewThreadResolved) -> Self {
26922		Self::Resolved(value)
26923	}
26924}
26925impl From<PullRequestReviewThreadUnresolved> for PullRequestReviewThreadEvent {
26926	fn from(value: PullRequestReviewThreadUnresolved) -> Self {
26927		Self::Unresolved(value)
26928	}
26929}
26930#[derive(Clone, Debug, Deserialize, Serialize)]
26931#[serde(deny_unknown_fields)]
26932pub struct PullRequestReviewThreadResolved {
26933	pub action:       PullRequestReviewThreadResolvedAction,
26934	#[serde(default, skip_serializing_if = "Option::is_none")]
26935	pub installation: Option<InstallationLite>,
26936	#[serde(default, skip_serializing_if = "Option::is_none")]
26937	pub organization: Option<Organization>,
26938	pub pull_request: SimplePullRequest,
26939	pub repository:   Repository,
26940	pub sender:       User,
26941	pub thread:       PullRequestReviewThreadResolvedThread,
26942}
26943impl From<&PullRequestReviewThreadResolved> for PullRequestReviewThreadResolved {
26944	fn from(value: &PullRequestReviewThreadResolved) -> Self {
26945		value.clone()
26946	}
26947}
26948#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
26949pub enum PullRequestReviewThreadResolvedAction {
26950	#[serde(rename = "resolved")]
26951	Resolved,
26952}
26953impl From<&PullRequestReviewThreadResolvedAction> for PullRequestReviewThreadResolvedAction {
26954	fn from(value: &PullRequestReviewThreadResolvedAction) -> Self {
26955		value.clone()
26956	}
26957}
26958impl ToString for PullRequestReviewThreadResolvedAction {
26959	fn to_string(&self) -> String {
26960		match *self {
26961			Self::Resolved => "resolved".to_string(),
26962		}
26963	}
26964}
26965impl std::str::FromStr for PullRequestReviewThreadResolvedAction {
26966	type Err = &'static str;
26967
26968	fn from_str(value: &str) -> Result<Self, &'static str> {
26969		match value {
26970			"resolved" => Ok(Self::Resolved),
26971			_ => Err("invalid value"),
26972		}
26973	}
26974}
26975impl std::convert::TryFrom<&str> for PullRequestReviewThreadResolvedAction {
26976	type Error = &'static str;
26977
26978	fn try_from(value: &str) -> Result<Self, &'static str> {
26979		value.parse()
26980	}
26981}
26982impl std::convert::TryFrom<&String> for PullRequestReviewThreadResolvedAction {
26983	type Error = &'static str;
26984
26985	fn try_from(value: &String) -> Result<Self, &'static str> {
26986		value.parse()
26987	}
26988}
26989impl std::convert::TryFrom<String> for PullRequestReviewThreadResolvedAction {
26990	type Error = &'static str;
26991
26992	fn try_from(value: String) -> Result<Self, &'static str> {
26993		value.parse()
26994	}
26995}
26996#[derive(Clone, Debug, Deserialize, Serialize)]
26997#[serde(deny_unknown_fields)]
26998pub struct PullRequestReviewThreadResolvedThread {
26999	pub comments: Vec<PullRequestReviewComment>,
27000	pub node_id:  String,
27001}
27002impl From<&PullRequestReviewThreadResolvedThread> for PullRequestReviewThreadResolvedThread {
27003	fn from(value: &PullRequestReviewThreadResolvedThread) -> Self {
27004		value.clone()
27005	}
27006}
27007#[derive(Clone, Debug, Deserialize, Serialize)]
27008#[serde(deny_unknown_fields)]
27009pub struct PullRequestReviewThreadUnresolved {
27010	pub action:       PullRequestReviewThreadUnresolvedAction,
27011	#[serde(default, skip_serializing_if = "Option::is_none")]
27012	pub installation: Option<InstallationLite>,
27013	#[serde(default, skip_serializing_if = "Option::is_none")]
27014	pub organization: Option<Organization>,
27015	pub pull_request: SimplePullRequest,
27016	pub repository:   Repository,
27017	pub sender:       User,
27018	pub thread:       PullRequestReviewThreadUnresolvedThread,
27019}
27020impl From<&PullRequestReviewThreadUnresolved> for PullRequestReviewThreadUnresolved {
27021	fn from(value: &PullRequestReviewThreadUnresolved) -> Self {
27022		value.clone()
27023	}
27024}
27025#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27026pub enum PullRequestReviewThreadUnresolvedAction {
27027	#[serde(rename = "unresolved")]
27028	Unresolved,
27029}
27030impl From<&PullRequestReviewThreadUnresolvedAction> for PullRequestReviewThreadUnresolvedAction {
27031	fn from(value: &PullRequestReviewThreadUnresolvedAction) -> Self {
27032		value.clone()
27033	}
27034}
27035impl ToString for PullRequestReviewThreadUnresolvedAction {
27036	fn to_string(&self) -> String {
27037		match *self {
27038			Self::Unresolved => "unresolved".to_string(),
27039		}
27040	}
27041}
27042impl std::str::FromStr for PullRequestReviewThreadUnresolvedAction {
27043	type Err = &'static str;
27044
27045	fn from_str(value: &str) -> Result<Self, &'static str> {
27046		match value {
27047			"unresolved" => Ok(Self::Unresolved),
27048			_ => Err("invalid value"),
27049		}
27050	}
27051}
27052impl std::convert::TryFrom<&str> for PullRequestReviewThreadUnresolvedAction {
27053	type Error = &'static str;
27054
27055	fn try_from(value: &str) -> Result<Self, &'static str> {
27056		value.parse()
27057	}
27058}
27059impl std::convert::TryFrom<&String> for PullRequestReviewThreadUnresolvedAction {
27060	type Error = &'static str;
27061
27062	fn try_from(value: &String) -> Result<Self, &'static str> {
27063		value.parse()
27064	}
27065}
27066impl std::convert::TryFrom<String> for PullRequestReviewThreadUnresolvedAction {
27067	type Error = &'static str;
27068
27069	fn try_from(value: String) -> Result<Self, &'static str> {
27070		value.parse()
27071	}
27072}
27073#[derive(Clone, Debug, Deserialize, Serialize)]
27074#[serde(deny_unknown_fields)]
27075pub struct PullRequestReviewThreadUnresolvedThread {
27076	pub comments: Vec<PullRequestReviewComment>,
27077	pub node_id:  String,
27078}
27079impl From<&PullRequestReviewThreadUnresolvedThread> for PullRequestReviewThreadUnresolvedThread {
27080	fn from(value: &PullRequestReviewThreadUnresolvedThread) -> Self {
27081		value.clone()
27082	}
27083}
27084/// State of this Pull Request. Either `open` or `closed`.
27085#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27086pub enum PullRequestState {
27087	#[serde(rename = "open")]
27088	Open,
27089	#[serde(rename = "closed")]
27090	Closed,
27091}
27092impl From<&PullRequestState> for PullRequestState {
27093	fn from(value: &PullRequestState) -> Self {
27094		value.clone()
27095	}
27096}
27097impl ToString for PullRequestState {
27098	fn to_string(&self) -> String {
27099		match *self {
27100			Self::Open => "open".to_string(),
27101			Self::Closed => "closed".to_string(),
27102		}
27103	}
27104}
27105impl std::str::FromStr for PullRequestState {
27106	type Err = &'static str;
27107
27108	fn from_str(value: &str) -> Result<Self, &'static str> {
27109		match value {
27110			"open" => Ok(Self::Open),
27111			"closed" => Ok(Self::Closed),
27112			_ => Err("invalid value"),
27113		}
27114	}
27115}
27116impl std::convert::TryFrom<&str> for PullRequestState {
27117	type Error = &'static str;
27118
27119	fn try_from(value: &str) -> Result<Self, &'static str> {
27120		value.parse()
27121	}
27122}
27123impl std::convert::TryFrom<&String> for PullRequestState {
27124	type Error = &'static str;
27125
27126	fn try_from(value: &String) -> Result<Self, &'static str> {
27127		value.parse()
27128	}
27129}
27130impl std::convert::TryFrom<String> for PullRequestState {
27131	type Error = &'static str;
27132
27133	fn try_from(value: String) -> Result<Self, &'static str> {
27134		value.parse()
27135	}
27136}
27137#[derive(Clone, Debug, Deserialize, Serialize)]
27138#[serde(deny_unknown_fields)]
27139pub struct PullRequestSynchronize {
27140	pub action:       PullRequestSynchronizeAction,
27141	pub after:        String,
27142	pub before:       String,
27143	#[serde(default, skip_serializing_if = "Option::is_none")]
27144	pub installation: Option<InstallationLite>,
27145	/// The pull request number.
27146	pub number:       i64,
27147	#[serde(default, skip_serializing_if = "Option::is_none")]
27148	pub organization: Option<Organization>,
27149	pub pull_request: PullRequest,
27150	pub repository:   Repository,
27151	pub sender:       User,
27152}
27153impl From<&PullRequestSynchronize> for PullRequestSynchronize {
27154	fn from(value: &PullRequestSynchronize) -> Self {
27155		value.clone()
27156	}
27157}
27158#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27159pub enum PullRequestSynchronizeAction {
27160	#[serde(rename = "synchronize")]
27161	Synchronize,
27162}
27163impl From<&PullRequestSynchronizeAction> for PullRequestSynchronizeAction {
27164	fn from(value: &PullRequestSynchronizeAction) -> Self {
27165		value.clone()
27166	}
27167}
27168impl ToString for PullRequestSynchronizeAction {
27169	fn to_string(&self) -> String {
27170		match *self {
27171			Self::Synchronize => "synchronize".to_string(),
27172		}
27173	}
27174}
27175impl std::str::FromStr for PullRequestSynchronizeAction {
27176	type Err = &'static str;
27177
27178	fn from_str(value: &str) -> Result<Self, &'static str> {
27179		match value {
27180			"synchronize" => Ok(Self::Synchronize),
27181			_ => Err("invalid value"),
27182		}
27183	}
27184}
27185impl std::convert::TryFrom<&str> for PullRequestSynchronizeAction {
27186	type Error = &'static str;
27187
27188	fn try_from(value: &str) -> Result<Self, &'static str> {
27189		value.parse()
27190	}
27191}
27192impl std::convert::TryFrom<&String> for PullRequestSynchronizeAction {
27193	type Error = &'static str;
27194
27195	fn try_from(value: &String) -> Result<Self, &'static str> {
27196		value.parse()
27197	}
27198}
27199impl std::convert::TryFrom<String> for PullRequestSynchronizeAction {
27200	type Error = &'static str;
27201
27202	fn try_from(value: String) -> Result<Self, &'static str> {
27203		value.parse()
27204	}
27205}
27206#[derive(Clone, Debug, Deserialize, Serialize)]
27207#[serde(deny_unknown_fields)]
27208pub struct PullRequestUnassigned {
27209	pub action:       PullRequestUnassignedAction,
27210	pub assignee:     User,
27211	#[serde(default, skip_serializing_if = "Option::is_none")]
27212	pub installation: Option<InstallationLite>,
27213	/// The pull request number.
27214	pub number:       i64,
27215	#[serde(default, skip_serializing_if = "Option::is_none")]
27216	pub organization: Option<Organization>,
27217	pub pull_request: PullRequest,
27218	pub repository:   Repository,
27219	pub sender:       User,
27220}
27221impl From<&PullRequestUnassigned> for PullRequestUnassigned {
27222	fn from(value: &PullRequestUnassigned) -> Self {
27223		value.clone()
27224	}
27225}
27226#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27227pub enum PullRequestUnassignedAction {
27228	#[serde(rename = "unassigned")]
27229	Unassigned,
27230}
27231impl From<&PullRequestUnassignedAction> for PullRequestUnassignedAction {
27232	fn from(value: &PullRequestUnassignedAction) -> Self {
27233		value.clone()
27234	}
27235}
27236impl ToString for PullRequestUnassignedAction {
27237	fn to_string(&self) -> String {
27238		match *self {
27239			Self::Unassigned => "unassigned".to_string(),
27240		}
27241	}
27242}
27243impl std::str::FromStr for PullRequestUnassignedAction {
27244	type Err = &'static str;
27245
27246	fn from_str(value: &str) -> Result<Self, &'static str> {
27247		match value {
27248			"unassigned" => Ok(Self::Unassigned),
27249			_ => Err("invalid value"),
27250		}
27251	}
27252}
27253impl std::convert::TryFrom<&str> for PullRequestUnassignedAction {
27254	type Error = &'static str;
27255
27256	fn try_from(value: &str) -> Result<Self, &'static str> {
27257		value.parse()
27258	}
27259}
27260impl std::convert::TryFrom<&String> for PullRequestUnassignedAction {
27261	type Error = &'static str;
27262
27263	fn try_from(value: &String) -> Result<Self, &'static str> {
27264		value.parse()
27265	}
27266}
27267impl std::convert::TryFrom<String> for PullRequestUnassignedAction {
27268	type Error = &'static str;
27269
27270	fn try_from(value: String) -> Result<Self, &'static str> {
27271		value.parse()
27272	}
27273}
27274#[derive(Clone, Debug, Deserialize, Serialize)]
27275#[serde(deny_unknown_fields)]
27276pub struct PullRequestUnlabeled {
27277	pub action:       PullRequestUnlabeledAction,
27278	#[serde(default, skip_serializing_if = "Option::is_none")]
27279	pub installation: Option<InstallationLite>,
27280	pub label:        Label,
27281	/// The pull request number.
27282	pub number:       i64,
27283	#[serde(default, skip_serializing_if = "Option::is_none")]
27284	pub organization: Option<Organization>,
27285	pub pull_request: PullRequest,
27286	pub repository:   Repository,
27287	pub sender:       User,
27288}
27289impl From<&PullRequestUnlabeled> for PullRequestUnlabeled {
27290	fn from(value: &PullRequestUnlabeled) -> Self {
27291		value.clone()
27292	}
27293}
27294#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27295pub enum PullRequestUnlabeledAction {
27296	#[serde(rename = "unlabeled")]
27297	Unlabeled,
27298}
27299impl From<&PullRequestUnlabeledAction> for PullRequestUnlabeledAction {
27300	fn from(value: &PullRequestUnlabeledAction) -> Self {
27301		value.clone()
27302	}
27303}
27304impl ToString for PullRequestUnlabeledAction {
27305	fn to_string(&self) -> String {
27306		match *self {
27307			Self::Unlabeled => "unlabeled".to_string(),
27308		}
27309	}
27310}
27311impl std::str::FromStr for PullRequestUnlabeledAction {
27312	type Err = &'static str;
27313
27314	fn from_str(value: &str) -> Result<Self, &'static str> {
27315		match value {
27316			"unlabeled" => Ok(Self::Unlabeled),
27317			_ => Err("invalid value"),
27318		}
27319	}
27320}
27321impl std::convert::TryFrom<&str> for PullRequestUnlabeledAction {
27322	type Error = &'static str;
27323
27324	fn try_from(value: &str) -> Result<Self, &'static str> {
27325		value.parse()
27326	}
27327}
27328impl std::convert::TryFrom<&String> for PullRequestUnlabeledAction {
27329	type Error = &'static str;
27330
27331	fn try_from(value: &String) -> Result<Self, &'static str> {
27332		value.parse()
27333	}
27334}
27335impl std::convert::TryFrom<String> for PullRequestUnlabeledAction {
27336	type Error = &'static str;
27337
27338	fn try_from(value: String) -> Result<Self, &'static str> {
27339		value.parse()
27340	}
27341}
27342#[derive(Clone, Debug, Deserialize, Serialize)]
27343#[serde(deny_unknown_fields)]
27344pub struct PullRequestUnlocked {
27345	pub action:       PullRequestUnlockedAction,
27346	#[serde(default, skip_serializing_if = "Option::is_none")]
27347	pub installation: Option<InstallationLite>,
27348	/// The pull request number.
27349	pub number:       i64,
27350	#[serde(default, skip_serializing_if = "Option::is_none")]
27351	pub organization: Option<Organization>,
27352	pub pull_request: PullRequest,
27353	pub repository:   Repository,
27354	pub sender:       User,
27355}
27356impl From<&PullRequestUnlocked> for PullRequestUnlocked {
27357	fn from(value: &PullRequestUnlocked) -> Self {
27358		value.clone()
27359	}
27360}
27361#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27362pub enum PullRequestUnlockedAction {
27363	#[serde(rename = "unlocked")]
27364	Unlocked,
27365}
27366impl From<&PullRequestUnlockedAction> for PullRequestUnlockedAction {
27367	fn from(value: &PullRequestUnlockedAction) -> Self {
27368		value.clone()
27369	}
27370}
27371impl ToString for PullRequestUnlockedAction {
27372	fn to_string(&self) -> String {
27373		match *self {
27374			Self::Unlocked => "unlocked".to_string(),
27375		}
27376	}
27377}
27378impl std::str::FromStr for PullRequestUnlockedAction {
27379	type Err = &'static str;
27380
27381	fn from_str(value: &str) -> Result<Self, &'static str> {
27382		match value {
27383			"unlocked" => Ok(Self::Unlocked),
27384			_ => Err("invalid value"),
27385		}
27386	}
27387}
27388impl std::convert::TryFrom<&str> for PullRequestUnlockedAction {
27389	type Error = &'static str;
27390
27391	fn try_from(value: &str) -> Result<Self, &'static str> {
27392		value.parse()
27393	}
27394}
27395impl std::convert::TryFrom<&String> for PullRequestUnlockedAction {
27396	type Error = &'static str;
27397
27398	fn try_from(value: &String) -> Result<Self, &'static str> {
27399		value.parse()
27400	}
27401}
27402impl std::convert::TryFrom<String> for PullRequestUnlockedAction {
27403	type Error = &'static str;
27404
27405	fn try_from(value: String) -> Result<Self, &'static str> {
27406		value.parse()
27407	}
27408}
27409#[derive(Clone, Debug, Deserialize, Serialize)]
27410#[serde(deny_unknown_fields)]
27411pub struct PushEvent {
27412	/// The SHA of the most recent commit on `ref` after the push.
27413	pub after:        String,
27414	pub base_ref:     Option<String>,
27415	/// The SHA of the most recent commit on `ref` before the push.
27416	pub before:       String,
27417	/// An array of commit objects describing the pushed commits. (Pushed commits are all commits that are included in the `compare` between the `before` commit and the `after` commit.) The array includes a maximum of 20 commits. If necessary, you can use the [Commits API](https://docs.github.com/en/rest/reference/repos#commits) to fetch additional commits. This limit is applied to timeline events only and isn't applied to webhook deliveries.
27418	pub commits:      Vec<Commit>,
27419	/// URL that shows the changes in this `ref` update, from the `before`
27420	/// commit to the `after` commit. For a newly created `ref` that is directly
27421	/// based on the default branch, this is the comparison between the head of
27422	/// the default branch and the `after` commit. Otherwise, this shows all
27423	/// commits until the `after` commit.
27424	pub compare:      String,
27425	/// Whether this push created the `ref`.
27426	pub created:      bool,
27427	/// Whether this push deleted the `ref`.
27428	pub deleted:      bool,
27429	/// Whether this push was a force push of the `ref`.
27430	pub forced:       bool,
27431	/// For pushes where `after` is or points to a commit object, an expanded
27432	/// representation of that commit. For pushes where `after` refers to an
27433	/// annotated tag object, an expanded representation of the commit pointed
27434	/// to by the annotated tag.
27435	pub head_commit:  Option<Commit>,
27436	#[serde(default, skip_serializing_if = "Option::is_none")]
27437	pub installation: Option<InstallationLite>,
27438	#[serde(default, skip_serializing_if = "Option::is_none")]
27439	pub organization: Option<Organization>,
27440	pub pusher:       Committer,
27441	/// The full git ref that was pushed. Example: `refs/heads/main` or
27442	/// `refs/tags/v3.14.1`.
27443	#[serde(rename = "ref")]
27444	pub ref_:         String,
27445	pub repository:   Repository,
27446	pub sender:       User,
27447}
27448impl From<&PushEvent> for PushEvent {
27449	fn from(value: &PushEvent) -> Self {
27450		value.clone()
27451	}
27452}
27453#[derive(Clone, Debug, Deserialize, Serialize)]
27454#[serde(deny_unknown_fields)]
27455pub struct Reactions {
27456	pub confused:    i64,
27457	pub eyes:        i64,
27458	pub heart:       i64,
27459	pub hooray:      i64,
27460	pub laugh:       i64,
27461	#[serde(rename = "-1")]
27462	pub minus1:      i64,
27463	#[serde(rename = "+1")]
27464	pub plus1:       i64,
27465	pub rocket:      i64,
27466	pub total_count: i64,
27467	pub url:         String,
27468}
27469impl From<&Reactions> for Reactions {
27470	fn from(value: &Reactions) -> Self {
27471		value.clone()
27472	}
27473}
27474/// A workflow referenced/reused by the initial caller workflow
27475#[derive(Clone, Debug, Deserialize, Serialize)]
27476#[serde(deny_unknown_fields)]
27477pub struct ReferencedWorkflow {
27478	pub path: String,
27479	#[serde(rename = "ref", default, skip_serializing_if = "Option::is_none")]
27480	pub ref_: Option<String>,
27481	pub sha:  String,
27482}
27483impl From<&ReferencedWorkflow> for ReferencedWorkflow {
27484	fn from(value: &ReferencedWorkflow) -> Self {
27485		value.clone()
27486	}
27487}
27488#[derive(Clone, Debug, Deserialize, Serialize)]
27489#[serde(untagged)]
27490pub enum RegistryPackageEvent {
27491	Published(RegistryPackagePublished),
27492	Updated(RegistryPackageUpdated),
27493}
27494impl From<&RegistryPackageEvent> for RegistryPackageEvent {
27495	fn from(value: &RegistryPackageEvent) -> Self {
27496		value.clone()
27497	}
27498}
27499impl From<RegistryPackagePublished> for RegistryPackageEvent {
27500	fn from(value: RegistryPackagePublished) -> Self {
27501		Self::Published(value)
27502	}
27503}
27504impl From<RegistryPackageUpdated> for RegistryPackageEvent {
27505	fn from(value: RegistryPackageUpdated) -> Self {
27506		Self::Updated(value)
27507	}
27508}
27509#[derive(Clone, Debug, Deserialize, Serialize)]
27510#[serde(deny_unknown_fields)]
27511pub struct RegistryPackagePublished {
27512	pub action:           RegistryPackagePublishedAction,
27513	#[serde(default, skip_serializing_if = "Option::is_none")]
27514	pub organization:     Option<Organization>,
27515	pub registry_package: RegistryPackagePublishedRegistryPackage,
27516	pub repository:       Repository,
27517	pub sender:           User,
27518}
27519impl From<&RegistryPackagePublished> for RegistryPackagePublished {
27520	fn from(value: &RegistryPackagePublished) -> Self {
27521		value.clone()
27522	}
27523}
27524#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27525pub enum RegistryPackagePublishedAction {
27526	#[serde(rename = "published")]
27527	Published,
27528}
27529impl From<&RegistryPackagePublishedAction> for RegistryPackagePublishedAction {
27530	fn from(value: &RegistryPackagePublishedAction) -> Self {
27531		value.clone()
27532	}
27533}
27534impl ToString for RegistryPackagePublishedAction {
27535	fn to_string(&self) -> String {
27536		match *self {
27537			Self::Published => "published".to_string(),
27538		}
27539	}
27540}
27541impl std::str::FromStr for RegistryPackagePublishedAction {
27542	type Err = &'static str;
27543
27544	fn from_str(value: &str) -> Result<Self, &'static str> {
27545		match value {
27546			"published" => Ok(Self::Published),
27547			_ => Err("invalid value"),
27548		}
27549	}
27550}
27551impl std::convert::TryFrom<&str> for RegistryPackagePublishedAction {
27552	type Error = &'static str;
27553
27554	fn try_from(value: &str) -> Result<Self, &'static str> {
27555		value.parse()
27556	}
27557}
27558impl std::convert::TryFrom<&String> for RegistryPackagePublishedAction {
27559	type Error = &'static str;
27560
27561	fn try_from(value: &String) -> Result<Self, &'static str> {
27562		value.parse()
27563	}
27564}
27565impl std::convert::TryFrom<String> for RegistryPackagePublishedAction {
27566	type Error = &'static str;
27567
27568	fn try_from(value: String) -> Result<Self, &'static str> {
27569		value.parse()
27570	}
27571}
27572/// Information about the package.
27573#[derive(Clone, Debug, Deserialize, Serialize)]
27574#[serde(deny_unknown_fields)]
27575pub struct RegistryPackagePublishedRegistryPackage {
27576	pub created_at:      chrono::DateTime<chrono::offset::Utc>,
27577	pub description:     Option<String>,
27578	pub ecosystem:       String,
27579	pub html_url:        String,
27580	/// Unique identifier of the package.
27581	pub id:              i64,
27582	/// The name of the package.
27583	pub name:            String,
27584	pub namespace:       String,
27585	pub owner:           User,
27586	/// The type of supported package. Packages in GitHub's Gradle registry have
27587	/// the type `maven`. Docker images pushed to GitHub's Container registry
27588	/// (`ghcr.io`) have the type `container`. You can use the type `docker` to
27589	/// find images that were pushed to GitHub's Docker registry
27590	/// (`docker.pkg.github.com`), even if these have now been migrated to the
27591	/// Container registry.
27592	pub package_type:    RegistryPackagePublishedRegistryPackagePackageType,
27593	/// A version of a software package
27594	pub package_version: Option<RegistryPackagePublishedRegistryPackagePackageVersion>,
27595	pub registry:        RegistryPackagePublishedRegistryPackageRegistry,
27596	pub updated_at:      Option<chrono::DateTime<chrono::offset::Utc>>,
27597}
27598impl From<&RegistryPackagePublishedRegistryPackage> for RegistryPackagePublishedRegistryPackage {
27599	fn from(value: &RegistryPackagePublishedRegistryPackage) -> Self {
27600		value.clone()
27601	}
27602}
27603/// The type of supported package. Packages in GitHub's Gradle registry have the
27604/// type `maven`. Docker images pushed to GitHub's Container registry
27605/// (`ghcr.io`) have the type `container`. You can use the type `docker` to find
27606/// images that were pushed to GitHub's Docker registry
27607/// (`docker.pkg.github.com`), even if these have now been migrated to the
27608/// Container registry.
27609#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
27610pub enum RegistryPackagePublishedRegistryPackagePackageType {
27611	#[serde(rename = "npm")]
27612	Npm,
27613	#[serde(rename = "maven")]
27614	Maven,
27615	#[serde(rename = "rubygems")]
27616	Rubygems,
27617	#[serde(rename = "docker")]
27618	Docker,
27619	#[serde(rename = "nuget")]
27620	Nuget,
27621	#[serde(rename = "CONTAINER")]
27622	Container,
27623}
27624impl From<&RegistryPackagePublishedRegistryPackagePackageType>
27625	for RegistryPackagePublishedRegistryPackagePackageType
27626{
27627	fn from(value: &RegistryPackagePublishedRegistryPackagePackageType) -> Self {
27628		value.clone()
27629	}
27630}
27631impl ToString for RegistryPackagePublishedRegistryPackagePackageType {
27632	fn to_string(&self) -> String {
27633		match *self {
27634			Self::Npm => "npm".to_string(),
27635			Self::Maven => "maven".to_string(),
27636			Self::Rubygems => "rubygems".to_string(),
27637			Self::Docker => "docker".to_string(),
27638			Self::Nuget => "nuget".to_string(),
27639			Self::Container => "CONTAINER".to_string(),
27640		}
27641	}
27642}
27643impl std::str::FromStr for RegistryPackagePublishedRegistryPackagePackageType {
27644	type Err = &'static str;
27645
27646	fn from_str(value: &str) -> Result<Self, &'static str> {
27647		match value {
27648			"npm" => Ok(Self::Npm),
27649			"maven" => Ok(Self::Maven),
27650			"rubygems" => Ok(Self::Rubygems),
27651			"docker" => Ok(Self::Docker),
27652			"nuget" => Ok(Self::Nuget),
27653			"CONTAINER" => Ok(Self::Container),
27654			_ => Err("invalid value"),
27655		}
27656	}
27657}
27658impl std::convert::TryFrom<&str> for RegistryPackagePublishedRegistryPackagePackageType {
27659	type Error = &'static str;
27660
27661	fn try_from(value: &str) -> Result<Self, &'static str> {
27662		value.parse()
27663	}
27664}
27665impl std::convert::TryFrom<&String> for RegistryPackagePublishedRegistryPackagePackageType {
27666	type Error = &'static str;
27667
27668	fn try_from(value: &String) -> Result<Self, &'static str> {
27669		value.parse()
27670	}
27671}
27672impl std::convert::TryFrom<String> for RegistryPackagePublishedRegistryPackagePackageType {
27673	type Error = &'static str;
27674
27675	fn try_from(value: String) -> Result<Self, &'static str> {
27676		value.parse()
27677	}
27678}
27679#[derive(Clone, Debug, Deserialize, Serialize)]
27680#[serde(deny_unknown_fields)]
27681pub struct RegistryPackagePublishedRegistryPackagePackageVersion {
27682	#[serde(default, skip_serializing_if = "Option::is_none")]
27683	pub author:               Option<RegistryPackagePublishedRegistryPackagePackageVersionAuthor>,
27684	#[serde(default, skip_serializing_if = "Option::is_none")]
27685	pub body:                 Option<RegistryPackagePublishedRegistryPackagePackageVersionBody>,
27686	#[serde(default, skip_serializing_if = "Option::is_none")]
27687	pub body_html:            Option<String>,
27688	#[serde(default, skip_serializing_if = "Option::is_none")]
27689	pub container_metadata:
27690		Option<RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadata>,
27691	#[serde(default, skip_serializing_if = "Option::is_none")]
27692	pub created_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
27693	pub description:          String,
27694	#[serde(default, skip_serializing_if = "Vec::is_empty")]
27695	pub docker_metadata:      Vec<serde_json::Value>,
27696	#[serde(default, skip_serializing_if = "Option::is_none")]
27697	pub draft:                Option<bool>,
27698	pub html_url:             String,
27699	/// Unique identifier of the package version.
27700	pub id:                   i64,
27701	pub installation_command: String,
27702	#[serde(default, skip_serializing_if = "Option::is_none")]
27703	pub manifest:             Option<String>,
27704	/// Package Version Metadata
27705	pub metadata:             Vec<serde_json::Value>,
27706	/// The name of the package version.
27707	pub name:                 String,
27708	#[serde(default, skip_serializing_if = "Option::is_none")]
27709	pub npm_metadata:         Option<PackageNpmMetadata>,
27710	#[serde(default, skip_serializing_if = "Option::is_none")]
27711	pub nuget_metadata:       Option<Vec<PackageNugetMetadata>>,
27712	pub package_files: Vec<RegistryPackagePublishedRegistryPackagePackageVersionPackageFilesItem>,
27713	#[serde(default, skip_serializing_if = "Option::is_none")]
27714	pub package_url:          Option<String>,
27715	#[serde(default, skip_serializing_if = "Option::is_none")]
27716	pub prerelease:           Option<bool>,
27717	#[serde(default, skip_serializing_if = "Option::is_none")]
27718	pub release:              Option<RegistryPackagePublishedRegistryPackagePackageVersionRelease>,
27719	#[serde(default, skip_serializing_if = "Vec::is_empty")]
27720	pub rubygems_metadata:    Vec<serde_json::Value>,
27721	#[serde(default, skip_serializing_if = "Option::is_none")]
27722	pub source_url:           Option<String>,
27723	pub summary:              String,
27724	#[serde(default, skip_serializing_if = "Option::is_none")]
27725	pub tag_name:             Option<String>,
27726	#[serde(default, skip_serializing_if = "Option::is_none")]
27727	pub target_commitish:     Option<String>,
27728	#[serde(default, skip_serializing_if = "Option::is_none")]
27729	pub target_oid:           Option<String>,
27730	#[serde(default, skip_serializing_if = "Option::is_none")]
27731	pub updated_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
27732	pub version:              String,
27733}
27734impl From<&RegistryPackagePublishedRegistryPackagePackageVersion>
27735	for RegistryPackagePublishedRegistryPackagePackageVersion
27736{
27737	fn from(value: &RegistryPackagePublishedRegistryPackagePackageVersion) -> Self {
27738		value.clone()
27739	}
27740}
27741#[derive(Clone, Debug, Deserialize, Serialize)]
27742#[serde(deny_unknown_fields)]
27743pub struct RegistryPackagePublishedRegistryPackagePackageVersionAuthor {
27744	pub avatar_url:          String,
27745	pub events_url:          String,
27746	pub followers_url:       String,
27747	pub following_url:       String,
27748	pub gists_url:           String,
27749	pub gravatar_id:         String,
27750	pub html_url:            String,
27751	pub id:                  i64,
27752	pub login:               String,
27753	pub node_id:             String,
27754	pub organizations_url:   String,
27755	pub received_events_url: String,
27756	pub repos_url:           String,
27757	pub site_admin:          bool,
27758	pub starred_url:         String,
27759	pub subscriptions_url:   String,
27760	#[serde(rename = "type")]
27761	pub type_:               String,
27762	pub url:                 String,
27763}
27764impl From<&RegistryPackagePublishedRegistryPackagePackageVersionAuthor>
27765	for RegistryPackagePublishedRegistryPackagePackageVersionAuthor
27766{
27767	fn from(value: &RegistryPackagePublishedRegistryPackagePackageVersionAuthor) -> Self {
27768		value.clone()
27769	}
27770}
27771#[derive(Clone, Debug, Deserialize, Serialize)]
27772#[serde(untagged, deny_unknown_fields)]
27773pub enum RegistryPackagePublishedRegistryPackagePackageVersionBody {
27774	Variant0(String),
27775	Variant1 {
27776		#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
27777		attributes: std::collections::HashMap<String, serde_json::Value>,
27778		#[serde(
27779			rename = "_formatted",
27780			default,
27781			skip_serializing_if = "Option::is_none"
27782		)]
27783		formatted:  Option<bool>,
27784		info:       RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Info,
27785		repository: RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Repository,
27786	},
27787}
27788impl From<&RegistryPackagePublishedRegistryPackagePackageVersionBody>
27789	for RegistryPackagePublishedRegistryPackagePackageVersionBody
27790{
27791	fn from(value: &RegistryPackagePublishedRegistryPackagePackageVersionBody) -> Self {
27792		value.clone()
27793	}
27794}
27795#[derive(Clone, Debug, Deserialize, Serialize)]
27796#[serde(deny_unknown_fields)]
27797pub struct RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Info {
27798	pub collection: Option<bool>,
27799	pub mode:       i64,
27800	pub name:       String,
27801	pub oid:        String,
27802	pub path:       String,
27803	pub size:       Option<i64>,
27804	#[serde(rename = "type")]
27805	pub type_:      String,
27806}
27807impl From<&RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Info>
27808	for RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Info
27809{
27810	fn from(value: &RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Info) -> Self {
27811		value.clone()
27812	}
27813}
27814#[derive(Clone, Debug, Deserialize, Serialize)]
27815#[serde(deny_unknown_fields)]
27816pub struct RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Repository {
27817	pub repository: Repository,
27818}
27819impl From<&RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Repository>
27820	for RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Repository
27821{
27822	fn from(
27823		value: &RegistryPackagePublishedRegistryPackagePackageVersionBodyVariant1Repository,
27824	) -> Self {
27825		value.clone()
27826	}
27827}
27828#[derive(Clone, Debug, Deserialize, Serialize)]
27829#[serde(deny_unknown_fields)]
27830pub struct RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadata {
27831	#[serde(default, skip_serializing_if = "Option::is_none")]
27832	pub labels:
27833		Option<RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataLabels>,
27834	#[serde(default, skip_serializing_if = "Option::is_none")]
27835	pub manifest:
27836		Option<RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifest>,
27837	#[serde(default, skip_serializing_if = "Option::is_none")]
27838	pub tag:      Option<RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataTag>,
27839}
27840impl From<&RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadata>
27841	for RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadata
27842{
27843	fn from(
27844		value: &RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadata,
27845	) -> Self {
27846		value.clone()
27847	}
27848}
27849#[derive(Clone, Debug, Deserialize, Serialize)]
27850#[serde(deny_unknown_fields)]
27851pub struct RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataLabels {
27852	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
27853	pub all_labels:  std::collections::HashMap<String, String>,
27854	#[serde(default, skip_serializing_if = "Option::is_none")]
27855	pub description: Option<String>,
27856	#[serde(default, skip_serializing_if = "Option::is_none")]
27857	pub image_url:   Option<String>,
27858	#[serde(default, skip_serializing_if = "Option::is_none")]
27859	pub licenses:    Option<String>,
27860	#[serde(default, skip_serializing_if = "Option::is_none")]
27861	pub revision:    Option<String>,
27862	#[serde(default, skip_serializing_if = "Option::is_none")]
27863	pub source:      Option<String>,
27864}
27865impl From<&RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataLabels>
27866	for RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataLabels
27867{
27868	fn from(
27869		value: &RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataLabels,
27870	) -> Self {
27871		value.clone()
27872	}
27873}
27874#[derive(Clone, Debug, Deserialize, Serialize)]
27875#[serde(deny_unknown_fields)]
27876pub struct RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifest {
27877	#[serde(default, skip_serializing_if = "Option::is_none")]
27878	pub config: Option<
27879		RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestConfig,
27880	>,
27881	#[serde(default, skip_serializing_if = "Option::is_none")]
27882	pub digest:     Option<String>,
27883	#[serde(default, skip_serializing_if = "Vec::is_empty")]
27884	pub layers: Vec<
27885		RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestLayersItem,
27886	>,
27887	#[serde(default, skip_serializing_if = "Option::is_none")]
27888	pub media_type: Option<String>,
27889	#[serde(default, skip_serializing_if = "Option::is_none")]
27890	pub size:       Option<i64>,
27891	#[serde(default, skip_serializing_if = "Option::is_none")]
27892	pub uri:        Option<String>,
27893}
27894impl From<&RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifest>
27895	for RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifest
27896{
27897	fn from(
27898		value: &RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifest,
27899	) -> Self {
27900		value.clone()
27901	}
27902}
27903#[derive(Clone, Debug, Deserialize, Serialize)]
27904#[serde(deny_unknown_fields)]
27905pub struct RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestConfig {
27906	#[serde(default, skip_serializing_if = "Option::is_none")]
27907	pub digest:     Option<String>,
27908	#[serde(default, skip_serializing_if = "Option::is_none")]
27909	pub media_type: Option<String>,
27910	#[serde(default, skip_serializing_if = "Option::is_none")]
27911	pub size:       Option<i64>,
27912}
27913impl From<&RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestConfig>
27914	for RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestConfig
27915{
27916	fn from(
27917		value : & RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestConfig,
27918	) -> Self {
27919		value.clone()
27920	}
27921}
27922#[derive(Clone, Debug, Deserialize, Serialize)]
27923#[serde(deny_unknown_fields)]
27924pub struct RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestLayersItem
27925{
27926	#[serde(default, skip_serializing_if = "Option::is_none")]
27927	pub digest:     Option<String>,
27928	#[serde(default, skip_serializing_if = "Option::is_none")]
27929	pub media_type: Option<String>,
27930	#[serde(default, skip_serializing_if = "Option::is_none")]
27931	pub size:       Option<i64>,
27932}
27933impl From<&RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestLayersItem>
27934	for RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestLayersItem
27935{
27936	fn from(
27937		value : & RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataManifestLayersItem,
27938	) -> Self {
27939		value.clone()
27940	}
27941}
27942#[derive(Clone, Debug, Deserialize, Serialize)]
27943#[serde(deny_unknown_fields)]
27944pub struct RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataTag {
27945	#[serde(default, skip_serializing_if = "Option::is_none")]
27946	pub digest: Option<String>,
27947	#[serde(default, skip_serializing_if = "Option::is_none")]
27948	pub name:   Option<String>,
27949}
27950impl From<&RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataTag>
27951	for RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataTag
27952{
27953	fn from(
27954		value: &RegistryPackagePublishedRegistryPackagePackageVersionContainerMetadataTag,
27955	) -> Self {
27956		value.clone()
27957	}
27958}
27959#[derive(Clone, Debug, Deserialize, Serialize)]
27960#[serde(deny_unknown_fields)]
27961pub struct RegistryPackagePublishedRegistryPackagePackageVersionPackageFilesItem {
27962	pub content_type: String,
27963	pub created_at:   chrono::DateTime<chrono::offset::Utc>,
27964	pub download_url: String,
27965	pub id:           i64,
27966	pub md5:          String,
27967	pub name:         String,
27968	pub sha1:         String,
27969	pub sha256:       String,
27970	pub size:         i64,
27971	pub state:        String,
27972	pub updated_at:   chrono::DateTime<chrono::offset::Utc>,
27973}
27974impl From<&RegistryPackagePublishedRegistryPackagePackageVersionPackageFilesItem>
27975	for RegistryPackagePublishedRegistryPackagePackageVersionPackageFilesItem
27976{
27977	fn from(value: &RegistryPackagePublishedRegistryPackagePackageVersionPackageFilesItem) -> Self {
27978		value.clone()
27979	}
27980}
27981#[derive(Clone, Debug, Deserialize, Serialize)]
27982#[serde(deny_unknown_fields)]
27983pub struct RegistryPackagePublishedRegistryPackagePackageVersionRelease {
27984	pub author:           User,
27985	pub created_at:       chrono::DateTime<chrono::offset::Utc>,
27986	pub draft:            bool,
27987	pub html_url:         String,
27988	pub id:               i64,
27989	pub name:             String,
27990	pub prerelease:       bool,
27991	pub published_at:     chrono::DateTime<chrono::offset::Utc>,
27992	pub tag_name:         String,
27993	pub target_commitish: String,
27994	pub url:              String,
27995}
27996impl From<&RegistryPackagePublishedRegistryPackagePackageVersionRelease>
27997	for RegistryPackagePublishedRegistryPackagePackageVersionRelease
27998{
27999	fn from(value: &RegistryPackagePublishedRegistryPackagePackageVersionRelease) -> Self {
28000		value.clone()
28001	}
28002}
28003#[derive(Clone, Debug, Deserialize, Serialize)]
28004#[serde(deny_unknown_fields)]
28005pub struct RegistryPackagePublishedRegistryPackageRegistry {
28006	pub about_url: String,
28007	pub name:      String,
28008	#[serde(rename = "type")]
28009	pub type_:     String,
28010	pub url:       String,
28011	pub vendor:    String,
28012}
28013impl From<&RegistryPackagePublishedRegistryPackageRegistry>
28014	for RegistryPackagePublishedRegistryPackageRegistry
28015{
28016	fn from(value: &RegistryPackagePublishedRegistryPackageRegistry) -> Self {
28017		value.clone()
28018	}
28019}
28020#[derive(Clone, Debug, Deserialize, Serialize)]
28021#[serde(deny_unknown_fields)]
28022pub struct RegistryPackageUpdated {
28023	pub action:           RegistryPackageUpdatedAction,
28024	#[serde(default, skip_serializing_if = "Option::is_none")]
28025	pub organization:     Option<Organization>,
28026	pub registry_package: RegistryPackageUpdatedRegistryPackage,
28027	pub repository:       Repository,
28028	pub sender:           User,
28029}
28030impl From<&RegistryPackageUpdated> for RegistryPackageUpdated {
28031	fn from(value: &RegistryPackageUpdated) -> Self {
28032		value.clone()
28033	}
28034}
28035#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28036pub enum RegistryPackageUpdatedAction {
28037	#[serde(rename = "updated")]
28038	Updated,
28039}
28040impl From<&RegistryPackageUpdatedAction> for RegistryPackageUpdatedAction {
28041	fn from(value: &RegistryPackageUpdatedAction) -> Self {
28042		value.clone()
28043	}
28044}
28045impl ToString for RegistryPackageUpdatedAction {
28046	fn to_string(&self) -> String {
28047		match *self {
28048			Self::Updated => "updated".to_string(),
28049		}
28050	}
28051}
28052impl std::str::FromStr for RegistryPackageUpdatedAction {
28053	type Err = &'static str;
28054
28055	fn from_str(value: &str) -> Result<Self, &'static str> {
28056		match value {
28057			"updated" => Ok(Self::Updated),
28058			_ => Err("invalid value"),
28059		}
28060	}
28061}
28062impl std::convert::TryFrom<&str> for RegistryPackageUpdatedAction {
28063	type Error = &'static str;
28064
28065	fn try_from(value: &str) -> Result<Self, &'static str> {
28066		value.parse()
28067	}
28068}
28069impl std::convert::TryFrom<&String> for RegistryPackageUpdatedAction {
28070	type Error = &'static str;
28071
28072	fn try_from(value: &String) -> Result<Self, &'static str> {
28073		value.parse()
28074	}
28075}
28076impl std::convert::TryFrom<String> for RegistryPackageUpdatedAction {
28077	type Error = &'static str;
28078
28079	fn try_from(value: String) -> Result<Self, &'static str> {
28080		value.parse()
28081	}
28082}
28083/// Information about the package.
28084#[derive(Clone, Debug, Deserialize, Serialize)]
28085#[serde(deny_unknown_fields)]
28086pub struct RegistryPackageUpdatedRegistryPackage {
28087	pub created_at:      chrono::DateTime<chrono::offset::Utc>,
28088	pub description:     Option<String>,
28089	pub ecosystem:       String,
28090	pub html_url:        String,
28091	/// Unique identifier of the package.
28092	pub id:              i64,
28093	/// The name of the package.
28094	pub name:            String,
28095	pub namespace:       String,
28096	pub owner:           User,
28097	/// The type of supported package. Packages in GitHub's Gradle registry have
28098	/// the type `maven`. Docker images pushed to GitHub's Container registry
28099	/// (`ghcr.io`) have the type `container`. You can use the type `docker` to
28100	/// find images that were pushed to GitHub's Docker registry
28101	/// (`docker.pkg.github.com`), even if these have now been migrated to the
28102	/// Container registry.
28103	pub package_type:    RegistryPackageUpdatedRegistryPackagePackageType,
28104	/// A version of a software package
28105	pub package_version: Option<RegistryPackageUpdatedRegistryPackagePackageVersion>,
28106	pub registry:        RegistryPackageUpdatedRegistryPackageRegistry,
28107	pub updated_at:      Option<chrono::DateTime<chrono::offset::Utc>>,
28108}
28109impl From<&RegistryPackageUpdatedRegistryPackage> for RegistryPackageUpdatedRegistryPackage {
28110	fn from(value: &RegistryPackageUpdatedRegistryPackage) -> Self {
28111		value.clone()
28112	}
28113}
28114/// The type of supported package. Packages in GitHub's Gradle registry have the
28115/// type `maven`. Docker images pushed to GitHub's Container registry
28116/// (`ghcr.io`) have the type `container`. You can use the type `docker` to find
28117/// images that were pushed to GitHub's Docker registry
28118/// (`docker.pkg.github.com`), even if these have now been migrated to the
28119/// Container registry.
28120#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28121pub enum RegistryPackageUpdatedRegistryPackagePackageType {
28122	#[serde(rename = "npm")]
28123	Npm,
28124	#[serde(rename = "maven")]
28125	Maven,
28126	#[serde(rename = "rubygems")]
28127	Rubygems,
28128	#[serde(rename = "docker")]
28129	Docker,
28130	#[serde(rename = "nuget")]
28131	Nuget,
28132	#[serde(rename = "CONTAINER")]
28133	Container,
28134}
28135impl From<&RegistryPackageUpdatedRegistryPackagePackageType>
28136	for RegistryPackageUpdatedRegistryPackagePackageType
28137{
28138	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageType) -> Self {
28139		value.clone()
28140	}
28141}
28142impl ToString for RegistryPackageUpdatedRegistryPackagePackageType {
28143	fn to_string(&self) -> String {
28144		match *self {
28145			Self::Npm => "npm".to_string(),
28146			Self::Maven => "maven".to_string(),
28147			Self::Rubygems => "rubygems".to_string(),
28148			Self::Docker => "docker".to_string(),
28149			Self::Nuget => "nuget".to_string(),
28150			Self::Container => "CONTAINER".to_string(),
28151		}
28152	}
28153}
28154impl std::str::FromStr for RegistryPackageUpdatedRegistryPackagePackageType {
28155	type Err = &'static str;
28156
28157	fn from_str(value: &str) -> Result<Self, &'static str> {
28158		match value {
28159			"npm" => Ok(Self::Npm),
28160			"maven" => Ok(Self::Maven),
28161			"rubygems" => Ok(Self::Rubygems),
28162			"docker" => Ok(Self::Docker),
28163			"nuget" => Ok(Self::Nuget),
28164			"CONTAINER" => Ok(Self::Container),
28165			_ => Err("invalid value"),
28166		}
28167	}
28168}
28169impl std::convert::TryFrom<&str> for RegistryPackageUpdatedRegistryPackagePackageType {
28170	type Error = &'static str;
28171
28172	fn try_from(value: &str) -> Result<Self, &'static str> {
28173		value.parse()
28174	}
28175}
28176impl std::convert::TryFrom<&String> for RegistryPackageUpdatedRegistryPackagePackageType {
28177	type Error = &'static str;
28178
28179	fn try_from(value: &String) -> Result<Self, &'static str> {
28180		value.parse()
28181	}
28182}
28183impl std::convert::TryFrom<String> for RegistryPackageUpdatedRegistryPackagePackageType {
28184	type Error = &'static str;
28185
28186	fn try_from(value: String) -> Result<Self, &'static str> {
28187		value.parse()
28188	}
28189}
28190#[derive(Clone, Debug, Deserialize, Serialize)]
28191#[serde(deny_unknown_fields)]
28192pub struct RegistryPackageUpdatedRegistryPackagePackageVersion {
28193	#[serde(default, skip_serializing_if = "Option::is_none")]
28194	pub author:               Option<RegistryPackageUpdatedRegistryPackagePackageVersionAuthor>,
28195	#[serde(default, skip_serializing_if = "Option::is_none")]
28196	pub body:                 Option<RegistryPackageUpdatedRegistryPackagePackageVersionBody>,
28197	#[serde(default, skip_serializing_if = "Option::is_none")]
28198	pub body_html:            Option<String>,
28199	#[serde(default, skip_serializing_if = "Option::is_none")]
28200	pub container_metadata:
28201		Option<RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadata>,
28202	#[serde(default, skip_serializing_if = "Option::is_none")]
28203	pub created_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
28204	pub description:          String,
28205	#[serde(default, skip_serializing_if = "Vec::is_empty")]
28206	pub docker_metadata:      Vec<serde_json::Value>,
28207	#[serde(default, skip_serializing_if = "Option::is_none")]
28208	pub draft:                Option<bool>,
28209	pub html_url:             String,
28210	/// Unique identifier of the package version.
28211	pub id:                   i64,
28212	pub installation_command: String,
28213	#[serde(default, skip_serializing_if = "Option::is_none")]
28214	pub manifest:             Option<String>,
28215	/// Package Version Metadata
28216	pub metadata:             Vec<serde_json::Value>,
28217	/// The name of the package version.
28218	pub name:                 String,
28219	#[serde(default, skip_serializing_if = "Option::is_none")]
28220	pub npm_metadata:         Option<PackageNpmMetadata>,
28221	#[serde(default, skip_serializing_if = "Option::is_none")]
28222	pub nuget_metadata:       Option<Vec<PackageNugetMetadata>>,
28223	pub package_files: Vec<RegistryPackageUpdatedRegistryPackagePackageVersionPackageFilesItem>,
28224	#[serde(default, skip_serializing_if = "Option::is_none")]
28225	pub package_url:          Option<String>,
28226	#[serde(default, skip_serializing_if = "Option::is_none")]
28227	pub prerelease:           Option<bool>,
28228	#[serde(default, skip_serializing_if = "Option::is_none")]
28229	pub release:              Option<RegistryPackageUpdatedRegistryPackagePackageVersionRelease>,
28230	#[serde(default, skip_serializing_if = "Vec::is_empty")]
28231	pub rubygems_metadata:    Vec<serde_json::Value>,
28232	#[serde(default, skip_serializing_if = "Option::is_none")]
28233	pub source_url:           Option<String>,
28234	pub summary:              String,
28235	#[serde(default, skip_serializing_if = "Option::is_none")]
28236	pub tag_name:             Option<String>,
28237	#[serde(default, skip_serializing_if = "Option::is_none")]
28238	pub target_commitish:     Option<String>,
28239	#[serde(default, skip_serializing_if = "Option::is_none")]
28240	pub target_oid:           Option<String>,
28241	#[serde(default, skip_serializing_if = "Option::is_none")]
28242	pub updated_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
28243	pub version:              String,
28244}
28245impl From<&RegistryPackageUpdatedRegistryPackagePackageVersion>
28246	for RegistryPackageUpdatedRegistryPackagePackageVersion
28247{
28248	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersion) -> Self {
28249		value.clone()
28250	}
28251}
28252#[derive(Clone, Debug, Deserialize, Serialize)]
28253#[serde(deny_unknown_fields)]
28254pub struct RegistryPackageUpdatedRegistryPackagePackageVersionAuthor {
28255	pub avatar_url:          String,
28256	pub events_url:          String,
28257	pub followers_url:       String,
28258	pub following_url:       String,
28259	pub gists_url:           String,
28260	pub gravatar_id:         String,
28261	pub html_url:            String,
28262	pub id:                  i64,
28263	pub login:               String,
28264	pub node_id:             String,
28265	pub organizations_url:   String,
28266	pub received_events_url: String,
28267	pub repos_url:           String,
28268	pub site_admin:          bool,
28269	pub starred_url:         String,
28270	pub subscriptions_url:   String,
28271	#[serde(rename = "type")]
28272	pub type_:               String,
28273	pub url:                 String,
28274}
28275impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionAuthor>
28276	for RegistryPackageUpdatedRegistryPackagePackageVersionAuthor
28277{
28278	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersionAuthor) -> Self {
28279		value.clone()
28280	}
28281}
28282#[derive(Clone, Debug, Deserialize, Serialize)]
28283#[serde(untagged, deny_unknown_fields)]
28284pub enum RegistryPackageUpdatedRegistryPackagePackageVersionBody {
28285	Variant0(String),
28286	Variant1 {
28287		#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
28288		attributes: std::collections::HashMap<String, serde_json::Value>,
28289		#[serde(
28290			rename = "_formatted",
28291			default,
28292			skip_serializing_if = "Option::is_none"
28293		)]
28294		formatted:  Option<bool>,
28295		info:       RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Info,
28296		repository: RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Repository,
28297	},
28298}
28299impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionBody>
28300	for RegistryPackageUpdatedRegistryPackagePackageVersionBody
28301{
28302	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersionBody) -> Self {
28303		value.clone()
28304	}
28305}
28306#[derive(Clone, Debug, Deserialize, Serialize)]
28307#[serde(deny_unknown_fields)]
28308pub struct RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Info {
28309	pub collection: Option<bool>,
28310	pub mode:       i64,
28311	pub name:       String,
28312	pub oid:        String,
28313	pub path:       String,
28314	pub size:       Option<i64>,
28315	#[serde(rename = "type")]
28316	pub type_:      String,
28317}
28318impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Info>
28319	for RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Info
28320{
28321	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Info) -> Self {
28322		value.clone()
28323	}
28324}
28325#[derive(Clone, Debug, Deserialize, Serialize)]
28326#[serde(deny_unknown_fields)]
28327pub struct RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Repository {
28328	pub repository: Repository,
28329}
28330impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Repository>
28331	for RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Repository
28332{
28333	fn from(
28334		value: &RegistryPackageUpdatedRegistryPackagePackageVersionBodyVariant1Repository,
28335	) -> Self {
28336		value.clone()
28337	}
28338}
28339#[derive(Clone, Debug, Deserialize, Serialize)]
28340#[serde(deny_unknown_fields)]
28341pub struct RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadata {
28342	#[serde(default, skip_serializing_if = "Option::is_none")]
28343	pub labels: Option<RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataLabels>,
28344	#[serde(default, skip_serializing_if = "Option::is_none")]
28345	pub manifest:
28346		Option<RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifest>,
28347	#[serde(default, skip_serializing_if = "Option::is_none")]
28348	pub tag:      Option<RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataTag>,
28349}
28350impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadata>
28351	for RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadata
28352{
28353	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadata) -> Self {
28354		value.clone()
28355	}
28356}
28357#[derive(Clone, Debug, Deserialize, Serialize)]
28358#[serde(deny_unknown_fields)]
28359pub struct RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataLabels {
28360	#[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
28361	pub all_labels:  std::collections::HashMap<String, String>,
28362	#[serde(default, skip_serializing_if = "Option::is_none")]
28363	pub description: Option<String>,
28364	#[serde(default, skip_serializing_if = "Option::is_none")]
28365	pub image_url:   Option<String>,
28366	#[serde(default, skip_serializing_if = "Option::is_none")]
28367	pub licenses:    Option<String>,
28368	#[serde(default, skip_serializing_if = "Option::is_none")]
28369	pub revision:    Option<String>,
28370	#[serde(default, skip_serializing_if = "Option::is_none")]
28371	pub source:      Option<String>,
28372}
28373impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataLabels>
28374	for RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataLabels
28375{
28376	fn from(
28377		value: &RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataLabels,
28378	) -> Self {
28379		value.clone()
28380	}
28381}
28382#[derive(Clone, Debug, Deserialize, Serialize)]
28383#[serde(deny_unknown_fields)]
28384pub struct RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifest {
28385	#[serde(default, skip_serializing_if = "Option::is_none")]
28386	pub config:
28387		Option<RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestConfig>,
28388	#[serde(default, skip_serializing_if = "Option::is_none")]
28389	pub digest:     Option<String>,
28390	#[serde(default, skip_serializing_if = "Vec::is_empty")]
28391	pub layers:
28392		Vec<RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestLayersItem>,
28393	#[serde(default, skip_serializing_if = "Option::is_none")]
28394	pub media_type: Option<String>,
28395	#[serde(default, skip_serializing_if = "Option::is_none")]
28396	pub size:       Option<i64>,
28397	#[serde(default, skip_serializing_if = "Option::is_none")]
28398	pub uri:        Option<String>,
28399}
28400impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifest>
28401	for RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifest
28402{
28403	fn from(
28404		value: &RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifest,
28405	) -> Self {
28406		value.clone()
28407	}
28408}
28409#[derive(Clone, Debug, Deserialize, Serialize)]
28410#[serde(deny_unknown_fields)]
28411pub struct RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestConfig {
28412	#[serde(default, skip_serializing_if = "Option::is_none")]
28413	pub digest:     Option<String>,
28414	#[serde(default, skip_serializing_if = "Option::is_none")]
28415	pub media_type: Option<String>,
28416	#[serde(default, skip_serializing_if = "Option::is_none")]
28417	pub size:       Option<i64>,
28418}
28419impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestConfig>
28420	for RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestConfig
28421{
28422	fn from(
28423		value: &RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestConfig,
28424	) -> Self {
28425		value.clone()
28426	}
28427}
28428#[derive(Clone, Debug, Deserialize, Serialize)]
28429#[serde(deny_unknown_fields)]
28430pub struct RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestLayersItem {
28431	#[serde(default, skip_serializing_if = "Option::is_none")]
28432	pub digest:     Option<String>,
28433	#[serde(default, skip_serializing_if = "Option::is_none")]
28434	pub media_type: Option<String>,
28435	#[serde(default, skip_serializing_if = "Option::is_none")]
28436	pub size:       Option<i64>,
28437}
28438impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestLayersItem>
28439	for RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestLayersItem
28440{
28441	fn from(
28442		value : & RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataManifestLayersItem,
28443	) -> Self {
28444		value.clone()
28445	}
28446}
28447#[derive(Clone, Debug, Deserialize, Serialize)]
28448#[serde(deny_unknown_fields)]
28449pub struct RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataTag {
28450	#[serde(default, skip_serializing_if = "Option::is_none")]
28451	pub digest: Option<String>,
28452	#[serde(default, skip_serializing_if = "Option::is_none")]
28453	pub name:   Option<String>,
28454}
28455impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataTag>
28456	for RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataTag
28457{
28458	fn from(
28459		value: &RegistryPackageUpdatedRegistryPackagePackageVersionContainerMetadataTag,
28460	) -> Self {
28461		value.clone()
28462	}
28463}
28464#[derive(Clone, Debug, Deserialize, Serialize)]
28465#[serde(deny_unknown_fields)]
28466pub struct RegistryPackageUpdatedRegistryPackagePackageVersionPackageFilesItem {
28467	pub content_type: String,
28468	pub created_at:   chrono::DateTime<chrono::offset::Utc>,
28469	pub download_url: String,
28470	pub id:           i64,
28471	pub md5:          String,
28472	pub name:         String,
28473	pub sha1:         String,
28474	pub sha256:       String,
28475	pub size:         i64,
28476	pub state:        String,
28477	pub updated_at:   chrono::DateTime<chrono::offset::Utc>,
28478}
28479impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionPackageFilesItem>
28480	for RegistryPackageUpdatedRegistryPackagePackageVersionPackageFilesItem
28481{
28482	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersionPackageFilesItem) -> Self {
28483		value.clone()
28484	}
28485}
28486#[derive(Clone, Debug, Deserialize, Serialize)]
28487#[serde(deny_unknown_fields)]
28488pub struct RegistryPackageUpdatedRegistryPackagePackageVersionRelease {
28489	pub author:           User,
28490	pub created_at:       chrono::DateTime<chrono::offset::Utc>,
28491	pub draft:            bool,
28492	pub html_url:         String,
28493	pub id:               i64,
28494	pub name:             String,
28495	pub prerelease:       bool,
28496	pub published_at:     chrono::DateTime<chrono::offset::Utc>,
28497	pub tag_name:         String,
28498	pub target_commitish: String,
28499	pub url:              String,
28500}
28501impl From<&RegistryPackageUpdatedRegistryPackagePackageVersionRelease>
28502	for RegistryPackageUpdatedRegistryPackagePackageVersionRelease
28503{
28504	fn from(value: &RegistryPackageUpdatedRegistryPackagePackageVersionRelease) -> Self {
28505		value.clone()
28506	}
28507}
28508#[derive(Clone, Debug, Deserialize, Serialize)]
28509#[serde(deny_unknown_fields)]
28510pub struct RegistryPackageUpdatedRegistryPackageRegistry {
28511	pub about_url: String,
28512	pub name:      String,
28513	#[serde(rename = "type")]
28514	pub type_:     String,
28515	pub url:       String,
28516	pub vendor:    String,
28517}
28518impl From<&RegistryPackageUpdatedRegistryPackageRegistry>
28519	for RegistryPackageUpdatedRegistryPackageRegistry
28520{
28521	fn from(value: &RegistryPackageUpdatedRegistryPackageRegistry) -> Self {
28522		value.clone()
28523	}
28524}
28525/// The [release](https://docs.github.com/en/rest/reference/repos/#get-a-release) object.
28526#[derive(Clone, Debug, Deserialize, Serialize)]
28527#[serde(deny_unknown_fields)]
28528pub struct Release {
28529	pub assets:           Vec<ReleaseAsset>,
28530	pub assets_url:       String,
28531	pub author:           User,
28532	pub body:             String,
28533	pub created_at:       Option<chrono::DateTime<chrono::offset::Utc>>,
28534	#[serde(default, skip_serializing_if = "Option::is_none")]
28535	pub discussion_url:   Option<String>,
28536	/// Wether the release is a draft or published
28537	pub draft:            bool,
28538	pub html_url:         String,
28539	pub id:               i64,
28540	#[serde(default, skip_serializing_if = "Option::is_none")]
28541	pub mentions_count:   Option<i64>,
28542	pub name:             String,
28543	pub node_id:          String,
28544	/// Whether the release is identified as a prerelease or a full release.
28545	pub prerelease:       bool,
28546	pub published_at:     Option<chrono::DateTime<chrono::offset::Utc>>,
28547	#[serde(default, skip_serializing_if = "Option::is_none")]
28548	pub reactions:        Option<Reactions>,
28549	/// The name of the tag.
28550	pub tag_name:         String,
28551	pub tarball_url:      Option<String>,
28552	/// Specifies the commitish value that determines where the Git tag is
28553	/// created from.
28554	pub target_commitish: String,
28555	pub upload_url:       String,
28556	pub url:              String,
28557	pub zipball_url:      Option<String>,
28558}
28559impl From<&Release> for Release {
28560	fn from(value: &Release) -> Self {
28561		value.clone()
28562	}
28563}
28564/// Data related to a release.
28565#[derive(Clone, Debug, Deserialize, Serialize)]
28566#[serde(deny_unknown_fields)]
28567pub struct ReleaseAsset {
28568	pub browser_download_url: String,
28569	pub content_type:         String,
28570	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
28571	pub download_count:       i64,
28572	pub id:                   i64,
28573	pub label:                Option<String>,
28574	/// The file name of the asset.
28575	pub name:                 String,
28576	pub node_id:              String,
28577	pub size:                 i64,
28578	/// State of the release asset.
28579	pub state:                ReleaseAssetState,
28580	pub updated_at:           chrono::DateTime<chrono::offset::Utc>,
28581	#[serde(default, skip_serializing_if = "Option::is_none")]
28582	pub uploader:             Option<User>,
28583	pub url:                  String,
28584}
28585impl From<&ReleaseAsset> for ReleaseAsset {
28586	fn from(value: &ReleaseAsset) -> Self {
28587		value.clone()
28588	}
28589}
28590/// State of the release asset.
28591#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28592pub enum ReleaseAssetState {
28593	#[serde(rename = "uploaded")]
28594	Uploaded,
28595}
28596impl From<&ReleaseAssetState> for ReleaseAssetState {
28597	fn from(value: &ReleaseAssetState) -> Self {
28598		value.clone()
28599	}
28600}
28601impl ToString for ReleaseAssetState {
28602	fn to_string(&self) -> String {
28603		match *self {
28604			Self::Uploaded => "uploaded".to_string(),
28605		}
28606	}
28607}
28608impl std::str::FromStr for ReleaseAssetState {
28609	type Err = &'static str;
28610
28611	fn from_str(value: &str) -> Result<Self, &'static str> {
28612		match value {
28613			"uploaded" => Ok(Self::Uploaded),
28614			_ => Err("invalid value"),
28615		}
28616	}
28617}
28618impl std::convert::TryFrom<&str> for ReleaseAssetState {
28619	type Error = &'static str;
28620
28621	fn try_from(value: &str) -> Result<Self, &'static str> {
28622		value.parse()
28623	}
28624}
28625impl std::convert::TryFrom<&String> for ReleaseAssetState {
28626	type Error = &'static str;
28627
28628	fn try_from(value: &String) -> Result<Self, &'static str> {
28629		value.parse()
28630	}
28631}
28632impl std::convert::TryFrom<String> for ReleaseAssetState {
28633	type Error = &'static str;
28634
28635	fn try_from(value: String) -> Result<Self, &'static str> {
28636		value.parse()
28637	}
28638}
28639#[derive(Clone, Debug, Deserialize, Serialize)]
28640#[serde(deny_unknown_fields)]
28641pub struct ReleaseCreated {
28642	pub action:       ReleaseCreatedAction,
28643	#[serde(default, skip_serializing_if = "Option::is_none")]
28644	pub installation: Option<InstallationLite>,
28645	#[serde(default, skip_serializing_if = "Option::is_none")]
28646	pub organization: Option<Organization>,
28647	pub release:      Release,
28648	pub repository:   Repository,
28649	pub sender:       User,
28650}
28651impl From<&ReleaseCreated> for ReleaseCreated {
28652	fn from(value: &ReleaseCreated) -> Self {
28653		value.clone()
28654	}
28655}
28656#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28657pub enum ReleaseCreatedAction {
28658	#[serde(rename = "created")]
28659	Created,
28660}
28661impl From<&ReleaseCreatedAction> for ReleaseCreatedAction {
28662	fn from(value: &ReleaseCreatedAction) -> Self {
28663		value.clone()
28664	}
28665}
28666impl ToString for ReleaseCreatedAction {
28667	fn to_string(&self) -> String {
28668		match *self {
28669			Self::Created => "created".to_string(),
28670		}
28671	}
28672}
28673impl std::str::FromStr for ReleaseCreatedAction {
28674	type Err = &'static str;
28675
28676	fn from_str(value: &str) -> Result<Self, &'static str> {
28677		match value {
28678			"created" => Ok(Self::Created),
28679			_ => Err("invalid value"),
28680		}
28681	}
28682}
28683impl std::convert::TryFrom<&str> for ReleaseCreatedAction {
28684	type Error = &'static str;
28685
28686	fn try_from(value: &str) -> Result<Self, &'static str> {
28687		value.parse()
28688	}
28689}
28690impl std::convert::TryFrom<&String> for ReleaseCreatedAction {
28691	type Error = &'static str;
28692
28693	fn try_from(value: &String) -> Result<Self, &'static str> {
28694		value.parse()
28695	}
28696}
28697impl std::convert::TryFrom<String> for ReleaseCreatedAction {
28698	type Error = &'static str;
28699
28700	fn try_from(value: String) -> Result<Self, &'static str> {
28701		value.parse()
28702	}
28703}
28704#[derive(Clone, Debug, Deserialize, Serialize)]
28705#[serde(deny_unknown_fields)]
28706pub struct ReleaseDeleted {
28707	pub action:       ReleaseDeletedAction,
28708	#[serde(default, skip_serializing_if = "Option::is_none")]
28709	pub installation: Option<InstallationLite>,
28710	#[serde(default, skip_serializing_if = "Option::is_none")]
28711	pub organization: Option<Organization>,
28712	pub release:      Release,
28713	pub repository:   Repository,
28714	pub sender:       User,
28715}
28716impl From<&ReleaseDeleted> for ReleaseDeleted {
28717	fn from(value: &ReleaseDeleted) -> Self {
28718		value.clone()
28719	}
28720}
28721#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28722pub enum ReleaseDeletedAction {
28723	#[serde(rename = "deleted")]
28724	Deleted,
28725}
28726impl From<&ReleaseDeletedAction> for ReleaseDeletedAction {
28727	fn from(value: &ReleaseDeletedAction) -> Self {
28728		value.clone()
28729	}
28730}
28731impl ToString for ReleaseDeletedAction {
28732	fn to_string(&self) -> String {
28733		match *self {
28734			Self::Deleted => "deleted".to_string(),
28735		}
28736	}
28737}
28738impl std::str::FromStr for ReleaseDeletedAction {
28739	type Err = &'static str;
28740
28741	fn from_str(value: &str) -> Result<Self, &'static str> {
28742		match value {
28743			"deleted" => Ok(Self::Deleted),
28744			_ => Err("invalid value"),
28745		}
28746	}
28747}
28748impl std::convert::TryFrom<&str> for ReleaseDeletedAction {
28749	type Error = &'static str;
28750
28751	fn try_from(value: &str) -> Result<Self, &'static str> {
28752		value.parse()
28753	}
28754}
28755impl std::convert::TryFrom<&String> for ReleaseDeletedAction {
28756	type Error = &'static str;
28757
28758	fn try_from(value: &String) -> Result<Self, &'static str> {
28759		value.parse()
28760	}
28761}
28762impl std::convert::TryFrom<String> for ReleaseDeletedAction {
28763	type Error = &'static str;
28764
28765	fn try_from(value: String) -> Result<Self, &'static str> {
28766		value.parse()
28767	}
28768}
28769#[derive(Clone, Debug, Deserialize, Serialize)]
28770#[serde(deny_unknown_fields)]
28771pub struct ReleaseEdited {
28772	pub action:       ReleaseEditedAction,
28773	pub changes:      ReleaseEditedChanges,
28774	#[serde(default, skip_serializing_if = "Option::is_none")]
28775	pub installation: Option<InstallationLite>,
28776	#[serde(default, skip_serializing_if = "Option::is_none")]
28777	pub organization: Option<Organization>,
28778	pub release:      Release,
28779	pub repository:   Repository,
28780	pub sender:       User,
28781}
28782impl From<&ReleaseEdited> for ReleaseEdited {
28783	fn from(value: &ReleaseEdited) -> Self {
28784		value.clone()
28785	}
28786}
28787#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28788pub enum ReleaseEditedAction {
28789	#[serde(rename = "edited")]
28790	Edited,
28791}
28792impl From<&ReleaseEditedAction> for ReleaseEditedAction {
28793	fn from(value: &ReleaseEditedAction) -> Self {
28794		value.clone()
28795	}
28796}
28797impl ToString for ReleaseEditedAction {
28798	fn to_string(&self) -> String {
28799		match *self {
28800			Self::Edited => "edited".to_string(),
28801		}
28802	}
28803}
28804impl std::str::FromStr for ReleaseEditedAction {
28805	type Err = &'static str;
28806
28807	fn from_str(value: &str) -> Result<Self, &'static str> {
28808		match value {
28809			"edited" => Ok(Self::Edited),
28810			_ => Err("invalid value"),
28811		}
28812	}
28813}
28814impl std::convert::TryFrom<&str> for ReleaseEditedAction {
28815	type Error = &'static str;
28816
28817	fn try_from(value: &str) -> Result<Self, &'static str> {
28818		value.parse()
28819	}
28820}
28821impl std::convert::TryFrom<&String> for ReleaseEditedAction {
28822	type Error = &'static str;
28823
28824	fn try_from(value: &String) -> Result<Self, &'static str> {
28825		value.parse()
28826	}
28827}
28828impl std::convert::TryFrom<String> for ReleaseEditedAction {
28829	type Error = &'static str;
28830
28831	fn try_from(value: String) -> Result<Self, &'static str> {
28832		value.parse()
28833	}
28834}
28835#[derive(Clone, Debug, Deserialize, Serialize)]
28836#[serde(deny_unknown_fields)]
28837pub struct ReleaseEditedChanges {
28838	#[serde(default, skip_serializing_if = "Option::is_none")]
28839	pub body: Option<ReleaseEditedChangesBody>,
28840	#[serde(default, skip_serializing_if = "Option::is_none")]
28841	pub name: Option<ReleaseEditedChangesName>,
28842}
28843impl From<&ReleaseEditedChanges> for ReleaseEditedChanges {
28844	fn from(value: &ReleaseEditedChanges) -> Self {
28845		value.clone()
28846	}
28847}
28848#[derive(Clone, Debug, Deserialize, Serialize)]
28849#[serde(deny_unknown_fields)]
28850pub struct ReleaseEditedChangesBody {
28851	/// The previous version of the body if the action was `edited`.
28852	pub from: String,
28853}
28854impl From<&ReleaseEditedChangesBody> for ReleaseEditedChangesBody {
28855	fn from(value: &ReleaseEditedChangesBody) -> Self {
28856		value.clone()
28857	}
28858}
28859#[derive(Clone, Debug, Deserialize, Serialize)]
28860#[serde(deny_unknown_fields)]
28861pub struct ReleaseEditedChangesName {
28862	/// The previous version of the name if the action was `edited`.
28863	pub from: String,
28864}
28865impl From<&ReleaseEditedChangesName> for ReleaseEditedChangesName {
28866	fn from(value: &ReleaseEditedChangesName) -> Self {
28867		value.clone()
28868	}
28869}
28870#[derive(Clone, Debug, Deserialize, Serialize)]
28871#[serde(untagged)]
28872pub enum ReleaseEvent {
28873	Created(ReleaseCreated),
28874	Deleted(ReleaseDeleted),
28875	Edited(ReleaseEdited),
28876	Prereleased(ReleasePrereleased),
28877	Published(ReleasePublished),
28878	Released(ReleaseReleased),
28879	Unpublished(ReleaseUnpublished),
28880}
28881impl From<&ReleaseEvent> for ReleaseEvent {
28882	fn from(value: &ReleaseEvent) -> Self {
28883		value.clone()
28884	}
28885}
28886impl From<ReleaseCreated> for ReleaseEvent {
28887	fn from(value: ReleaseCreated) -> Self {
28888		Self::Created(value)
28889	}
28890}
28891impl From<ReleaseDeleted> for ReleaseEvent {
28892	fn from(value: ReleaseDeleted) -> Self {
28893		Self::Deleted(value)
28894	}
28895}
28896impl From<ReleaseEdited> for ReleaseEvent {
28897	fn from(value: ReleaseEdited) -> Self {
28898		Self::Edited(value)
28899	}
28900}
28901impl From<ReleasePrereleased> for ReleaseEvent {
28902	fn from(value: ReleasePrereleased) -> Self {
28903		Self::Prereleased(value)
28904	}
28905}
28906impl From<ReleasePublished> for ReleaseEvent {
28907	fn from(value: ReleasePublished) -> Self {
28908		Self::Published(value)
28909	}
28910}
28911impl From<ReleaseReleased> for ReleaseEvent {
28912	fn from(value: ReleaseReleased) -> Self {
28913		Self::Released(value)
28914	}
28915}
28916impl From<ReleaseUnpublished> for ReleaseEvent {
28917	fn from(value: ReleaseUnpublished) -> Self {
28918		Self::Unpublished(value)
28919	}
28920}
28921#[derive(Clone, Debug, Deserialize, Serialize)]
28922#[serde(deny_unknown_fields)]
28923pub struct ReleasePrereleased {
28924	pub action:       ReleasePrereleasedAction,
28925	#[serde(default, skip_serializing_if = "Option::is_none")]
28926	pub installation: Option<InstallationLite>,
28927	#[serde(default, skip_serializing_if = "Option::is_none")]
28928	pub organization: Option<Organization>,
28929	pub release:      Release,
28930	pub repository:   Repository,
28931	pub sender:       User,
28932}
28933impl From<&ReleasePrereleased> for ReleasePrereleased {
28934	fn from(value: &ReleasePrereleased) -> Self {
28935		value.clone()
28936	}
28937}
28938#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
28939pub enum ReleasePrereleasedAction {
28940	#[serde(rename = "prereleased")]
28941	Prereleased,
28942}
28943impl From<&ReleasePrereleasedAction> for ReleasePrereleasedAction {
28944	fn from(value: &ReleasePrereleasedAction) -> Self {
28945		value.clone()
28946	}
28947}
28948impl ToString for ReleasePrereleasedAction {
28949	fn to_string(&self) -> String {
28950		match *self {
28951			Self::Prereleased => "prereleased".to_string(),
28952		}
28953	}
28954}
28955impl std::str::FromStr for ReleasePrereleasedAction {
28956	type Err = &'static str;
28957
28958	fn from_str(value: &str) -> Result<Self, &'static str> {
28959		match value {
28960			"prereleased" => Ok(Self::Prereleased),
28961			_ => Err("invalid value"),
28962		}
28963	}
28964}
28965impl std::convert::TryFrom<&str> for ReleasePrereleasedAction {
28966	type Error = &'static str;
28967
28968	fn try_from(value: &str) -> Result<Self, &'static str> {
28969		value.parse()
28970	}
28971}
28972impl std::convert::TryFrom<&String> for ReleasePrereleasedAction {
28973	type Error = &'static str;
28974
28975	fn try_from(value: &String) -> Result<Self, &'static str> {
28976		value.parse()
28977	}
28978}
28979impl std::convert::TryFrom<String> for ReleasePrereleasedAction {
28980	type Error = &'static str;
28981
28982	fn try_from(value: String) -> Result<Self, &'static str> {
28983		value.parse()
28984	}
28985}
28986#[derive(Clone, Debug, Deserialize, Serialize)]
28987#[serde(deny_unknown_fields)]
28988pub struct ReleasePublished {
28989	pub action:       ReleasePublishedAction,
28990	#[serde(default, skip_serializing_if = "Option::is_none")]
28991	pub installation: Option<InstallationLite>,
28992	#[serde(default, skip_serializing_if = "Option::is_none")]
28993	pub organization: Option<Organization>,
28994	pub release:      Release,
28995	pub repository:   Repository,
28996	pub sender:       User,
28997}
28998impl From<&ReleasePublished> for ReleasePublished {
28999	fn from(value: &ReleasePublished) -> Self {
29000		value.clone()
29001	}
29002}
29003#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29004pub enum ReleasePublishedAction {
29005	#[serde(rename = "published")]
29006	Published,
29007}
29008impl From<&ReleasePublishedAction> for ReleasePublishedAction {
29009	fn from(value: &ReleasePublishedAction) -> Self {
29010		value.clone()
29011	}
29012}
29013impl ToString for ReleasePublishedAction {
29014	fn to_string(&self) -> String {
29015		match *self {
29016			Self::Published => "published".to_string(),
29017		}
29018	}
29019}
29020impl std::str::FromStr for ReleasePublishedAction {
29021	type Err = &'static str;
29022
29023	fn from_str(value: &str) -> Result<Self, &'static str> {
29024		match value {
29025			"published" => Ok(Self::Published),
29026			_ => Err("invalid value"),
29027		}
29028	}
29029}
29030impl std::convert::TryFrom<&str> for ReleasePublishedAction {
29031	type Error = &'static str;
29032
29033	fn try_from(value: &str) -> Result<Self, &'static str> {
29034		value.parse()
29035	}
29036}
29037impl std::convert::TryFrom<&String> for ReleasePublishedAction {
29038	type Error = &'static str;
29039
29040	fn try_from(value: &String) -> Result<Self, &'static str> {
29041		value.parse()
29042	}
29043}
29044impl std::convert::TryFrom<String> for ReleasePublishedAction {
29045	type Error = &'static str;
29046
29047	fn try_from(value: String) -> Result<Self, &'static str> {
29048		value.parse()
29049	}
29050}
29051#[derive(Clone, Debug, Deserialize, Serialize)]
29052#[serde(deny_unknown_fields)]
29053pub struct ReleaseReleased {
29054	pub action:       ReleaseReleasedAction,
29055	#[serde(default, skip_serializing_if = "Option::is_none")]
29056	pub installation: Option<InstallationLite>,
29057	#[serde(default, skip_serializing_if = "Option::is_none")]
29058	pub organization: Option<Organization>,
29059	pub release:      Release,
29060	pub repository:   Repository,
29061	pub sender:       User,
29062}
29063impl From<&ReleaseReleased> for ReleaseReleased {
29064	fn from(value: &ReleaseReleased) -> Self {
29065		value.clone()
29066	}
29067}
29068#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29069pub enum ReleaseReleasedAction {
29070	#[serde(rename = "released")]
29071	Released,
29072}
29073impl From<&ReleaseReleasedAction> for ReleaseReleasedAction {
29074	fn from(value: &ReleaseReleasedAction) -> Self {
29075		value.clone()
29076	}
29077}
29078impl ToString for ReleaseReleasedAction {
29079	fn to_string(&self) -> String {
29080		match *self {
29081			Self::Released => "released".to_string(),
29082		}
29083	}
29084}
29085impl std::str::FromStr for ReleaseReleasedAction {
29086	type Err = &'static str;
29087
29088	fn from_str(value: &str) -> Result<Self, &'static str> {
29089		match value {
29090			"released" => Ok(Self::Released),
29091			_ => Err("invalid value"),
29092		}
29093	}
29094}
29095impl std::convert::TryFrom<&str> for ReleaseReleasedAction {
29096	type Error = &'static str;
29097
29098	fn try_from(value: &str) -> Result<Self, &'static str> {
29099		value.parse()
29100	}
29101}
29102impl std::convert::TryFrom<&String> for ReleaseReleasedAction {
29103	type Error = &'static str;
29104
29105	fn try_from(value: &String) -> Result<Self, &'static str> {
29106		value.parse()
29107	}
29108}
29109impl std::convert::TryFrom<String> for ReleaseReleasedAction {
29110	type Error = &'static str;
29111
29112	fn try_from(value: String) -> Result<Self, &'static str> {
29113		value.parse()
29114	}
29115}
29116#[derive(Clone, Debug, Deserialize, Serialize)]
29117#[serde(deny_unknown_fields)]
29118pub struct ReleaseUnpublished {
29119	pub action:       ReleaseUnpublishedAction,
29120	#[serde(default, skip_serializing_if = "Option::is_none")]
29121	pub installation: Option<InstallationLite>,
29122	#[serde(default, skip_serializing_if = "Option::is_none")]
29123	pub organization: Option<Organization>,
29124	pub release:      Release,
29125	pub repository:   Repository,
29126	pub sender:       User,
29127}
29128impl From<&ReleaseUnpublished> for ReleaseUnpublished {
29129	fn from(value: &ReleaseUnpublished) -> Self {
29130		value.clone()
29131	}
29132}
29133#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29134pub enum ReleaseUnpublishedAction {
29135	#[serde(rename = "unpublished")]
29136	Unpublished,
29137}
29138impl From<&ReleaseUnpublishedAction> for ReleaseUnpublishedAction {
29139	fn from(value: &ReleaseUnpublishedAction) -> Self {
29140		value.clone()
29141	}
29142}
29143impl ToString for ReleaseUnpublishedAction {
29144	fn to_string(&self) -> String {
29145		match *self {
29146			Self::Unpublished => "unpublished".to_string(),
29147		}
29148	}
29149}
29150impl std::str::FromStr for ReleaseUnpublishedAction {
29151	type Err = &'static str;
29152
29153	fn from_str(value: &str) -> Result<Self, &'static str> {
29154		match value {
29155			"unpublished" => Ok(Self::Unpublished),
29156			_ => Err("invalid value"),
29157		}
29158	}
29159}
29160impl std::convert::TryFrom<&str> for ReleaseUnpublishedAction {
29161	type Error = &'static str;
29162
29163	fn try_from(value: &str) -> Result<Self, &'static str> {
29164		value.parse()
29165	}
29166}
29167impl std::convert::TryFrom<&String> for ReleaseUnpublishedAction {
29168	type Error = &'static str;
29169
29170	fn try_from(value: &String) -> Result<Self, &'static str> {
29171		value.parse()
29172	}
29173}
29174impl std::convert::TryFrom<String> for ReleaseUnpublishedAction {
29175	type Error = &'static str;
29176
29177	fn try_from(value: String) -> Result<Self, &'static str> {
29178		value.parse()
29179	}
29180}
29181#[derive(Clone, Debug, Deserialize, Serialize)]
29182#[serde(deny_unknown_fields)]
29183pub struct RepoRef {
29184	pub id:   i64,
29185	pub name: String,
29186	pub url:  String,
29187}
29188impl From<&RepoRef> for RepoRef {
29189	fn from(value: &RepoRef) -> Self {
29190		value.clone()
29191	}
29192}
29193/// A git repository
29194#[derive(Clone, Debug, Deserialize, Serialize)]
29195#[serde(deny_unknown_fields)]
29196pub struct Repository {
29197	/// Whether to allow auto-merge for pull requests.
29198	#[serde(default)]
29199	pub allow_auto_merge: bool,
29200	/// Whether to allow private forks
29201	#[serde(default, skip_serializing_if = "Option::is_none")]
29202	pub allow_forking: Option<bool>,
29203	/// Whether to allow merge commits for pull requests.
29204	#[serde(default = "defaults::default_bool::<true>")]
29205	pub allow_merge_commit: bool,
29206	/// Whether to allow rebase merges for pull requests.
29207	#[serde(default = "defaults::default_bool::<true>")]
29208	pub allow_rebase_merge: bool,
29209	/// Whether to allow squash merges for pull requests.
29210	#[serde(default = "defaults::default_bool::<true>")]
29211	pub allow_squash_merge: bool,
29212	#[serde(default, skip_serializing_if = "Option::is_none")]
29213	pub allow_update_branch: Option<bool>,
29214	/// A template for the API URL to download the repository as an archive.
29215	pub archive_url: String,
29216	/// Whether the repository is archived.
29217	pub archived: bool,
29218	/// A template for the API URL to list the available assignees for issues in
29219	/// the repository.
29220	pub assignees_url: String,
29221	/// A template for the API URL to create or retrieve a raw Git blob in the
29222	/// repository.
29223	pub blobs_url: String,
29224	/// A template for the API URL to get information about branches in the
29225	/// repository.
29226	pub branches_url: String,
29227	pub clone_url: String,
29228	/// A template for the API URL to get information about collaborators of the
29229	/// repository.
29230	pub collaborators_url: String,
29231	/// A template for the API URL to get information about comments on the
29232	/// repository.
29233	pub comments_url: String,
29234	/// A template for the API URL to get information about commits on the
29235	/// repository.
29236	pub commits_url: String,
29237	/// A template for the API URL to compare two commits or refs.
29238	pub compare_url: String,
29239	/// A template for the API URL to get the contents of the repository.
29240	pub contents_url: String,
29241	/// A template for the API URL to list the contributors to the repository.
29242	pub contributors_url: String,
29243	pub created_at: RepositoryCreatedAt,
29244	/// The default branch of the repository.
29245	pub default_branch: String,
29246	/// Whether to delete head branches when pull requests are merged
29247	#[serde(default)]
29248	pub delete_branch_on_merge: bool,
29249	/// The API URL to list the deployments of the repository.
29250	pub deployments_url: String,
29251	/// The repository description.
29252	pub description: Option<String>,
29253	/// Returns whether or not this repository is disabled.
29254	#[serde(default, skip_serializing_if = "Option::is_none")]
29255	pub disabled: Option<bool>,
29256	/// The API URL to list the downloads on the repository.
29257	pub downloads_url: String,
29258	/// The API URL to list the events of the repository.
29259	pub events_url: String,
29260	/// Whether the repository is a fork.
29261	pub fork: bool,
29262	pub forks: i64,
29263	pub forks_count: i64,
29264	/// The API URL to list the forks of the repository.
29265	pub forks_url: String,
29266	/// The full, globally unique, name of the repository.
29267	pub full_name: String,
29268	/// A template for the API URL to get information about Git commits of the
29269	/// repository.
29270	pub git_commits_url: String,
29271	/// A template for the API URL to get information about Git refs of the
29272	/// repository.
29273	pub git_refs_url: String,
29274	/// A template for the API URL to get information about Git tags of the
29275	/// repository.
29276	pub git_tags_url: String,
29277	pub git_url: String,
29278	/// Whether discussions are enabled.
29279	#[serde(default = "defaults::default_bool::<true>")]
29280	pub has_discussions: bool,
29281	/// Whether downloads are enabled.
29282	pub has_downloads: bool,
29283	/// Whether issues are enabled.
29284	pub has_issues: bool,
29285	pub has_pages: bool,
29286	/// Whether projects are enabled.
29287	pub has_projects: bool,
29288	/// Whether the wiki is enabled.
29289	pub has_wiki: bool,
29290	pub homepage: Option<String>,
29291	/// The API URL to list the hooks on the repository.
29292	pub hooks_url: String,
29293	/// The URL to view the repository on GitHub.com.
29294	pub html_url: String,
29295	/// Unique identifier of the repository
29296	pub id: i64,
29297	pub is_template: bool,
29298	/// A template for the API URL to get information about issue comments on
29299	/// the repository.
29300	pub issue_comment_url: String,
29301	/// A template for the API URL to get information about issue events on the
29302	/// repository.
29303	pub issue_events_url: String,
29304	/// A template for the API URL to get information about issues on the
29305	/// repository.
29306	pub issues_url: String,
29307	/// A template for the API URL to get information about deploy keys on the
29308	/// repository.
29309	pub keys_url: String,
29310	/// A template for the API URL to get information about labels of the
29311	/// repository.
29312	pub labels_url: String,
29313	pub language: Option<String>,
29314	/// The API URL to get information about the languages of the repository.
29315	pub languages_url: String,
29316	pub license: Option<License>,
29317	#[serde(default, skip_serializing_if = "Option::is_none")]
29318	pub master_branch: Option<String>,
29319	#[serde(default, skip_serializing_if = "Option::is_none")]
29320	pub merge_commit_message: Option<String>,
29321	#[serde(default, skip_serializing_if = "Option::is_none")]
29322	pub merge_commit_title: Option<String>,
29323	/// The API URL to merge branches in the repository.
29324	pub merges_url: String,
29325	/// A template for the API URL to get information about milestones of the
29326	/// repository.
29327	pub milestones_url: String,
29328	pub mirror_url: Option<String>,
29329	/// The name of the repository.
29330	pub name: String,
29331	/// The GraphQL identifier of the repository.
29332	pub node_id: String,
29333	/// A template for the API URL to get information about notifications on the
29334	/// repository.
29335	pub notifications_url: String,
29336	pub open_issues: i64,
29337	pub open_issues_count: i64,
29338	#[serde(default, skip_serializing_if = "Option::is_none")]
29339	pub organization: Option<String>,
29340	pub owner: User,
29341	#[serde(default, skip_serializing_if = "Option::is_none")]
29342	pub permissions: Option<RepositoryPermissions>,
29343	/// Whether the repository is private or public.
29344	pub private: bool,
29345	#[serde(default, skip_serializing_if = "Option::is_none")]
29346	pub public: Option<bool>,
29347	/// A template for the API URL to get information about pull requests on the
29348	/// repository.
29349	pub pulls_url: String,
29350	pub pushed_at: RepositoryPushedAt,
29351	/// A template for the API URL to get information about releases on the
29352	/// repository.
29353	pub releases_url: String,
29354	pub size: i64,
29355	#[serde(default, skip_serializing_if = "Option::is_none")]
29356	pub squash_merge_commit_message: Option<String>,
29357	#[serde(default, skip_serializing_if = "Option::is_none")]
29358	pub squash_merge_commit_title: Option<String>,
29359	pub ssh_url: String,
29360	#[serde(default, skip_serializing_if = "Option::is_none")]
29361	pub stargazers: Option<i64>,
29362	pub stargazers_count: i64,
29363	/// The API URL to list the stargazers on the repository.
29364	pub stargazers_url: String,
29365	/// A template for the API URL to get information about statuses of a
29366	/// commit.
29367	pub statuses_url: String,
29368	/// The API URL to list the subscribers on the repository.
29369	pub subscribers_url: String,
29370	/// The API URL to subscribe to notifications for this repository.
29371	pub subscription_url: String,
29372	pub svn_url: String,
29373	/// The API URL to get information about tags on the repository.
29374	pub tags_url: String,
29375	/// The API URL to list the teams on the repository.
29376	pub teams_url: String,
29377	pub topics: Vec<String>,
29378	/// A template for the API URL to create or retrieve a raw Git tree of the
29379	/// repository.
29380	pub trees_url: String,
29381	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
29382	/// The URL to get more information about the repository from the GitHub
29383	/// API.
29384	pub url: String,
29385	#[serde(default, skip_serializing_if = "Option::is_none")]
29386	pub use_squash_pr_title_as_default: Option<bool>,
29387	pub visibility: RepositoryVisibility,
29388	pub watchers: i64,
29389	pub watchers_count: i64,
29390	pub web_commit_signoff_required: bool,
29391}
29392impl From<&Repository> for Repository {
29393	fn from(value: &Repository) -> Self {
29394		value.clone()
29395	}
29396}
29397#[derive(Clone, Debug, Deserialize, Serialize)]
29398#[serde(deny_unknown_fields)]
29399pub struct RepositoryArchived {
29400	pub action:       RepositoryArchivedAction,
29401	#[serde(default, skip_serializing_if = "Option::is_none")]
29402	pub installation: Option<InstallationLite>,
29403	#[serde(default, skip_serializing_if = "Option::is_none")]
29404	pub organization: Option<Organization>,
29405	pub repository:   Repository,
29406	pub sender:       User,
29407}
29408impl From<&RepositoryArchived> for RepositoryArchived {
29409	fn from(value: &RepositoryArchived) -> Self {
29410		value.clone()
29411	}
29412}
29413#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29414pub enum RepositoryArchivedAction {
29415	#[serde(rename = "archived")]
29416	Archived,
29417}
29418impl From<&RepositoryArchivedAction> for RepositoryArchivedAction {
29419	fn from(value: &RepositoryArchivedAction) -> Self {
29420		value.clone()
29421	}
29422}
29423impl ToString for RepositoryArchivedAction {
29424	fn to_string(&self) -> String {
29425		match *self {
29426			Self::Archived => "archived".to_string(),
29427		}
29428	}
29429}
29430impl std::str::FromStr for RepositoryArchivedAction {
29431	type Err = &'static str;
29432
29433	fn from_str(value: &str) -> Result<Self, &'static str> {
29434		match value {
29435			"archived" => Ok(Self::Archived),
29436			_ => Err("invalid value"),
29437		}
29438	}
29439}
29440impl std::convert::TryFrom<&str> for RepositoryArchivedAction {
29441	type Error = &'static str;
29442
29443	fn try_from(value: &str) -> Result<Self, &'static str> {
29444		value.parse()
29445	}
29446}
29447impl std::convert::TryFrom<&String> for RepositoryArchivedAction {
29448	type Error = &'static str;
29449
29450	fn try_from(value: &String) -> Result<Self, &'static str> {
29451		value.parse()
29452	}
29453}
29454impl std::convert::TryFrom<String> for RepositoryArchivedAction {
29455	type Error = &'static str;
29456
29457	fn try_from(value: String) -> Result<Self, &'static str> {
29458		value.parse()
29459	}
29460}
29461#[derive(Clone, Debug, Deserialize, Serialize)]
29462#[serde(deny_unknown_fields)]
29463pub struct RepositoryCreated {
29464	pub action:       RepositoryCreatedAction,
29465	#[serde(default, skip_serializing_if = "Option::is_none")]
29466	pub installation: Option<InstallationLite>,
29467	#[serde(default, skip_serializing_if = "Option::is_none")]
29468	pub organization: Option<Organization>,
29469	pub repository:   Repository,
29470	pub sender:       User,
29471}
29472impl From<&RepositoryCreated> for RepositoryCreated {
29473	fn from(value: &RepositoryCreated) -> Self {
29474		value.clone()
29475	}
29476}
29477#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29478pub enum RepositoryCreatedAction {
29479	#[serde(rename = "created")]
29480	Created,
29481}
29482impl From<&RepositoryCreatedAction> for RepositoryCreatedAction {
29483	fn from(value: &RepositoryCreatedAction) -> Self {
29484		value.clone()
29485	}
29486}
29487impl ToString for RepositoryCreatedAction {
29488	fn to_string(&self) -> String {
29489		match *self {
29490			Self::Created => "created".to_string(),
29491		}
29492	}
29493}
29494impl std::str::FromStr for RepositoryCreatedAction {
29495	type Err = &'static str;
29496
29497	fn from_str(value: &str) -> Result<Self, &'static str> {
29498		match value {
29499			"created" => Ok(Self::Created),
29500			_ => Err("invalid value"),
29501		}
29502	}
29503}
29504impl std::convert::TryFrom<&str> for RepositoryCreatedAction {
29505	type Error = &'static str;
29506
29507	fn try_from(value: &str) -> Result<Self, &'static str> {
29508		value.parse()
29509	}
29510}
29511impl std::convert::TryFrom<&String> for RepositoryCreatedAction {
29512	type Error = &'static str;
29513
29514	fn try_from(value: &String) -> Result<Self, &'static str> {
29515		value.parse()
29516	}
29517}
29518impl std::convert::TryFrom<String> for RepositoryCreatedAction {
29519	type Error = &'static str;
29520
29521	fn try_from(value: String) -> Result<Self, &'static str> {
29522		value.parse()
29523	}
29524}
29525#[derive(Clone, Debug, Deserialize, Serialize)]
29526#[serde(untagged)]
29527pub enum RepositoryCreatedAt {
29528	Variant0(i64),
29529	Variant1(chrono::DateTime<chrono::offset::Utc>),
29530}
29531impl From<&RepositoryCreatedAt> for RepositoryCreatedAt {
29532	fn from(value: &RepositoryCreatedAt) -> Self {
29533		value.clone()
29534	}
29535}
29536impl std::str::FromStr for RepositoryCreatedAt {
29537	type Err = &'static str;
29538
29539	fn from_str(value: &str) -> Result<Self, &'static str> {
29540		if let Ok(v) = value.parse() {
29541			Ok(Self::Variant0(v))
29542		} else if let Ok(v) = value.parse() {
29543			Ok(Self::Variant1(v))
29544		} else {
29545			Err("string conversion failed for all variants")
29546		}
29547	}
29548}
29549impl std::convert::TryFrom<&str> for RepositoryCreatedAt {
29550	type Error = &'static str;
29551
29552	fn try_from(value: &str) -> Result<Self, &'static str> {
29553		value.parse()
29554	}
29555}
29556impl std::convert::TryFrom<&String> for RepositoryCreatedAt {
29557	type Error = &'static str;
29558
29559	fn try_from(value: &String) -> Result<Self, &'static str> {
29560		value.parse()
29561	}
29562}
29563impl std::convert::TryFrom<String> for RepositoryCreatedAt {
29564	type Error = &'static str;
29565
29566	fn try_from(value: String) -> Result<Self, &'static str> {
29567		value.parse()
29568	}
29569}
29570impl ToString for RepositoryCreatedAt {
29571	fn to_string(&self) -> String {
29572		match self {
29573			Self::Variant0(x) => x.to_string(),
29574			Self::Variant1(x) => x.to_string(),
29575		}
29576	}
29577}
29578impl From<i64> for RepositoryCreatedAt {
29579	fn from(value: i64) -> Self {
29580		Self::Variant0(value)
29581	}
29582}
29583impl From<chrono::DateTime<chrono::offset::Utc>> for RepositoryCreatedAt {
29584	fn from(value: chrono::DateTime<chrono::offset::Utc>) -> Self {
29585		Self::Variant1(value)
29586	}
29587}
29588#[derive(Clone, Debug, Deserialize, Serialize)]
29589#[serde(deny_unknown_fields)]
29590pub struct RepositoryDeleted {
29591	pub action:       RepositoryDeletedAction,
29592	#[serde(default, skip_serializing_if = "Option::is_none")]
29593	pub installation: Option<InstallationLite>,
29594	#[serde(default, skip_serializing_if = "Option::is_none")]
29595	pub organization: Option<Organization>,
29596	pub repository:   Repository,
29597	pub sender:       User,
29598}
29599impl From<&RepositoryDeleted> for RepositoryDeleted {
29600	fn from(value: &RepositoryDeleted) -> Self {
29601		value.clone()
29602	}
29603}
29604#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29605pub enum RepositoryDeletedAction {
29606	#[serde(rename = "deleted")]
29607	Deleted,
29608}
29609impl From<&RepositoryDeletedAction> for RepositoryDeletedAction {
29610	fn from(value: &RepositoryDeletedAction) -> Self {
29611		value.clone()
29612	}
29613}
29614impl ToString for RepositoryDeletedAction {
29615	fn to_string(&self) -> String {
29616		match *self {
29617			Self::Deleted => "deleted".to_string(),
29618		}
29619	}
29620}
29621impl std::str::FromStr for RepositoryDeletedAction {
29622	type Err = &'static str;
29623
29624	fn from_str(value: &str) -> Result<Self, &'static str> {
29625		match value {
29626			"deleted" => Ok(Self::Deleted),
29627			_ => Err("invalid value"),
29628		}
29629	}
29630}
29631impl std::convert::TryFrom<&str> for RepositoryDeletedAction {
29632	type Error = &'static str;
29633
29634	fn try_from(value: &str) -> Result<Self, &'static str> {
29635		value.parse()
29636	}
29637}
29638impl std::convert::TryFrom<&String> for RepositoryDeletedAction {
29639	type Error = &'static str;
29640
29641	fn try_from(value: &String) -> Result<Self, &'static str> {
29642		value.parse()
29643	}
29644}
29645impl std::convert::TryFrom<String> for RepositoryDeletedAction {
29646	type Error = &'static str;
29647
29648	fn try_from(value: String) -> Result<Self, &'static str> {
29649		value.parse()
29650	}
29651}
29652#[derive(Clone, Debug, Deserialize, Serialize)]
29653#[serde(deny_unknown_fields)]
29654pub struct RepositoryDispatchEvent {
29655	pub action:         String,
29656	pub branch:         String,
29657	pub client_payload: std::collections::HashMap<String, serde_json::Value>,
29658	pub installation:   InstallationLite,
29659	#[serde(default, skip_serializing_if = "Option::is_none")]
29660	pub organization:   Option<Organization>,
29661	pub repository:     Repository,
29662	pub sender:         User,
29663}
29664impl From<&RepositoryDispatchEvent> for RepositoryDispatchEvent {
29665	fn from(value: &RepositoryDispatchEvent) -> Self {
29666		value.clone()
29667	}
29668}
29669#[derive(Clone, Debug, Deserialize, Serialize)]
29670#[serde(deny_unknown_fields)]
29671pub struct RepositoryEdited {
29672	pub action:       RepositoryEditedAction,
29673	pub changes:      RepositoryEditedChanges,
29674	#[serde(default, skip_serializing_if = "Option::is_none")]
29675	pub installation: Option<InstallationLite>,
29676	#[serde(default, skip_serializing_if = "Option::is_none")]
29677	pub organization: Option<Organization>,
29678	pub repository:   Repository,
29679	pub sender:       User,
29680}
29681impl From<&RepositoryEdited> for RepositoryEdited {
29682	fn from(value: &RepositoryEdited) -> Self {
29683		value.clone()
29684	}
29685}
29686#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29687pub enum RepositoryEditedAction {
29688	#[serde(rename = "edited")]
29689	Edited,
29690}
29691impl From<&RepositoryEditedAction> for RepositoryEditedAction {
29692	fn from(value: &RepositoryEditedAction) -> Self {
29693		value.clone()
29694	}
29695}
29696impl ToString for RepositoryEditedAction {
29697	fn to_string(&self) -> String {
29698		match *self {
29699			Self::Edited => "edited".to_string(),
29700		}
29701	}
29702}
29703impl std::str::FromStr for RepositoryEditedAction {
29704	type Err = &'static str;
29705
29706	fn from_str(value: &str) -> Result<Self, &'static str> {
29707		match value {
29708			"edited" => Ok(Self::Edited),
29709			_ => Err("invalid value"),
29710		}
29711	}
29712}
29713impl std::convert::TryFrom<&str> for RepositoryEditedAction {
29714	type Error = &'static str;
29715
29716	fn try_from(value: &str) -> Result<Self, &'static str> {
29717		value.parse()
29718	}
29719}
29720impl std::convert::TryFrom<&String> for RepositoryEditedAction {
29721	type Error = &'static str;
29722
29723	fn try_from(value: &String) -> Result<Self, &'static str> {
29724		value.parse()
29725	}
29726}
29727impl std::convert::TryFrom<String> for RepositoryEditedAction {
29728	type Error = &'static str;
29729
29730	fn try_from(value: String) -> Result<Self, &'static str> {
29731		value.parse()
29732	}
29733}
29734#[derive(Clone, Debug, Deserialize, Serialize)]
29735#[serde(deny_unknown_fields)]
29736pub struct RepositoryEditedChanges {
29737	#[serde(default, skip_serializing_if = "Option::is_none")]
29738	pub default_branch: Option<RepositoryEditedChangesDefaultBranch>,
29739	#[serde(default, skip_serializing_if = "Option::is_none")]
29740	pub description:    Option<RepositoryEditedChangesDescription>,
29741	#[serde(default, skip_serializing_if = "Option::is_none")]
29742	pub homepage:       Option<RepositoryEditedChangesHomepage>,
29743}
29744impl From<&RepositoryEditedChanges> for RepositoryEditedChanges {
29745	fn from(value: &RepositoryEditedChanges) -> Self {
29746		value.clone()
29747	}
29748}
29749#[derive(Clone, Debug, Deserialize, Serialize)]
29750#[serde(deny_unknown_fields)]
29751pub struct RepositoryEditedChangesDefaultBranch {
29752	pub from: String,
29753}
29754impl From<&RepositoryEditedChangesDefaultBranch> for RepositoryEditedChangesDefaultBranch {
29755	fn from(value: &RepositoryEditedChangesDefaultBranch) -> Self {
29756		value.clone()
29757	}
29758}
29759#[derive(Clone, Debug, Deserialize, Serialize)]
29760#[serde(deny_unknown_fields)]
29761pub struct RepositoryEditedChangesDescription {
29762	pub from: Option<String>,
29763}
29764impl From<&RepositoryEditedChangesDescription> for RepositoryEditedChangesDescription {
29765	fn from(value: &RepositoryEditedChangesDescription) -> Self {
29766		value.clone()
29767	}
29768}
29769#[derive(Clone, Debug, Deserialize, Serialize)]
29770#[serde(deny_unknown_fields)]
29771pub struct RepositoryEditedChangesHomepage {
29772	pub from: Option<String>,
29773}
29774impl From<&RepositoryEditedChangesHomepage> for RepositoryEditedChangesHomepage {
29775	fn from(value: &RepositoryEditedChangesHomepage) -> Self {
29776		value.clone()
29777	}
29778}
29779#[derive(Clone, Debug, Deserialize, Serialize)]
29780#[serde(untagged)]
29781pub enum RepositoryEvent {
29782	Archived(RepositoryArchived),
29783	Created(RepositoryCreated),
29784	Deleted(RepositoryDeleted),
29785	Edited(RepositoryEdited),
29786	Privatized(RepositoryPrivatized),
29787	Publicized(RepositoryPublicized),
29788	Renamed(RepositoryRenamed),
29789	Transferred(RepositoryTransferred),
29790	Unarchived(RepositoryUnarchived),
29791}
29792impl From<&RepositoryEvent> for RepositoryEvent {
29793	fn from(value: &RepositoryEvent) -> Self {
29794		value.clone()
29795	}
29796}
29797impl From<RepositoryArchived> for RepositoryEvent {
29798	fn from(value: RepositoryArchived) -> Self {
29799		Self::Archived(value)
29800	}
29801}
29802impl From<RepositoryCreated> for RepositoryEvent {
29803	fn from(value: RepositoryCreated) -> Self {
29804		Self::Created(value)
29805	}
29806}
29807impl From<RepositoryDeleted> for RepositoryEvent {
29808	fn from(value: RepositoryDeleted) -> Self {
29809		Self::Deleted(value)
29810	}
29811}
29812impl From<RepositoryEdited> for RepositoryEvent {
29813	fn from(value: RepositoryEdited) -> Self {
29814		Self::Edited(value)
29815	}
29816}
29817impl From<RepositoryPrivatized> for RepositoryEvent {
29818	fn from(value: RepositoryPrivatized) -> Self {
29819		Self::Privatized(value)
29820	}
29821}
29822impl From<RepositoryPublicized> for RepositoryEvent {
29823	fn from(value: RepositoryPublicized) -> Self {
29824		Self::Publicized(value)
29825	}
29826}
29827impl From<RepositoryRenamed> for RepositoryEvent {
29828	fn from(value: RepositoryRenamed) -> Self {
29829		Self::Renamed(value)
29830	}
29831}
29832impl From<RepositoryTransferred> for RepositoryEvent {
29833	fn from(value: RepositoryTransferred) -> Self {
29834		Self::Transferred(value)
29835	}
29836}
29837impl From<RepositoryUnarchived> for RepositoryEvent {
29838	fn from(value: RepositoryUnarchived) -> Self {
29839		Self::Unarchived(value)
29840	}
29841}
29842#[derive(Clone, Debug, Deserialize, Serialize)]
29843#[serde(deny_unknown_fields)]
29844pub struct RepositoryImportEvent {
29845	#[serde(default, skip_serializing_if = "Option::is_none")]
29846	pub installation: Option<InstallationLite>,
29847	#[serde(default, skip_serializing_if = "Option::is_none")]
29848	pub organization: Option<Organization>,
29849	pub repository:   Repository,
29850	pub sender:       User,
29851	pub status:       RepositoryImportEventStatus,
29852}
29853impl From<&RepositoryImportEvent> for RepositoryImportEvent {
29854	fn from(value: &RepositoryImportEvent) -> Self {
29855		value.clone()
29856	}
29857}
29858#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
29859pub enum RepositoryImportEventStatus {
29860	#[serde(rename = "success")]
29861	Success,
29862	#[serde(rename = "cancelled")]
29863	Cancelled,
29864	#[serde(rename = "failure")]
29865	Failure,
29866}
29867impl From<&RepositoryImportEventStatus> for RepositoryImportEventStatus {
29868	fn from(value: &RepositoryImportEventStatus) -> Self {
29869		value.clone()
29870	}
29871}
29872impl ToString for RepositoryImportEventStatus {
29873	fn to_string(&self) -> String {
29874		match *self {
29875			Self::Success => "success".to_string(),
29876			Self::Cancelled => "cancelled".to_string(),
29877			Self::Failure => "failure".to_string(),
29878		}
29879	}
29880}
29881impl std::str::FromStr for RepositoryImportEventStatus {
29882	type Err = &'static str;
29883
29884	fn from_str(value: &str) -> Result<Self, &'static str> {
29885		match value {
29886			"success" => Ok(Self::Success),
29887			"cancelled" => Ok(Self::Cancelled),
29888			"failure" => Ok(Self::Failure),
29889			_ => Err("invalid value"),
29890		}
29891	}
29892}
29893impl std::convert::TryFrom<&str> for RepositoryImportEventStatus {
29894	type Error = &'static str;
29895
29896	fn try_from(value: &str) -> Result<Self, &'static str> {
29897		value.parse()
29898	}
29899}
29900impl std::convert::TryFrom<&String> for RepositoryImportEventStatus {
29901	type Error = &'static str;
29902
29903	fn try_from(value: &String) -> Result<Self, &'static str> {
29904		value.parse()
29905	}
29906}
29907impl std::convert::TryFrom<String> for RepositoryImportEventStatus {
29908	type Error = &'static str;
29909
29910	fn try_from(value: String) -> Result<Self, &'static str> {
29911		value.parse()
29912	}
29913}
29914#[derive(Clone, Debug, Deserialize, Serialize)]
29915#[serde(deny_unknown_fields)]
29916pub struct RepositoryLite {
29917	/// A template for the API URL to download the repository as an archive.
29918	pub archive_url:       String,
29919	/// A template for the API URL to list the available assignees for issues in
29920	/// the repository.
29921	pub assignees_url:     String,
29922	/// A template for the API URL to create or retrieve a raw Git blob in the
29923	/// repository.
29924	pub blobs_url:         String,
29925	/// A template for the API URL to get information about branches in the
29926	/// repository.
29927	pub branches_url:      String,
29928	/// A template for the API URL to get information about collaborators of the
29929	/// repository.
29930	pub collaborators_url: String,
29931	/// A template for the API URL to get information about comments on the
29932	/// repository.
29933	pub comments_url:      String,
29934	/// A template for the API URL to get information about commits on the
29935	/// repository.
29936	pub commits_url:       String,
29937	/// A template for the API URL to compare two commits or refs.
29938	pub compare_url:       String,
29939	/// A template for the API URL to get the contents of the repository.
29940	pub contents_url:      String,
29941	/// A template for the API URL to list the contributors to the repository.
29942	pub contributors_url:  String,
29943	/// The API URL to list the deployments of the repository.
29944	pub deployments_url:   String,
29945	/// The repository description.
29946	pub description:       Option<String>,
29947	/// The API URL to list the downloads on the repository.
29948	pub downloads_url:     String,
29949	/// The API URL to list the events of the repository.
29950	pub events_url:        String,
29951	/// Whether the repository is a fork.
29952	pub fork:              bool,
29953	/// The API URL to list the forks of the repository.
29954	pub forks_url:         String,
29955	/// The full, globally unique, name of the repository.
29956	pub full_name:         String,
29957	/// A template for the API URL to get information about Git commits of the
29958	/// repository.
29959	pub git_commits_url:   String,
29960	/// A template for the API URL to get information about Git refs of the
29961	/// repository.
29962	pub git_refs_url:      String,
29963	/// A template for the API URL to get information about Git tags of the
29964	/// repository.
29965	pub git_tags_url:      String,
29966	/// The API URL to list the hooks on the repository.
29967	pub hooks_url:         String,
29968	/// The URL to view the repository on GitHub.com.
29969	pub html_url:          String,
29970	/// Unique identifier of the repository
29971	pub id:                i64,
29972	/// A template for the API URL to get information about issue comments on
29973	/// the repository.
29974	pub issue_comment_url: String,
29975	/// A template for the API URL to get information about issue events on the
29976	/// repository.
29977	pub issue_events_url:  String,
29978	/// A template for the API URL to get information about issues on the
29979	/// repository.
29980	pub issues_url:        String,
29981	/// A template for the API URL to get information about deploy keys on the
29982	/// repository.
29983	pub keys_url:          String,
29984	/// A template for the API URL to get information about labels of the
29985	/// repository.
29986	pub labels_url:        String,
29987	/// The API URL to get information about the languages of the repository.
29988	pub languages_url:     String,
29989	/// The API URL to merge branches in the repository.
29990	pub merges_url:        String,
29991	/// A template for the API URL to get information about milestones of the
29992	/// repository.
29993	pub milestones_url:    String,
29994	/// The name of the repository.
29995	pub name:              String,
29996	/// The GraphQL identifier of the repository.
29997	pub node_id:           String,
29998	/// A template for the API URL to get information about notifications on the
29999	/// repository.
30000	pub notifications_url: String,
30001	pub owner:             User,
30002	/// Whether the repository is private or public.
30003	pub private:           bool,
30004	/// A template for the API URL to get information about pull requests on the
30005	/// repository.
30006	pub pulls_url:         String,
30007	/// A template for the API URL to get information about releases on the
30008	/// repository.
30009	pub releases_url:      String,
30010	/// The API URL to list the stargazers on the repository.
30011	pub stargazers_url:    String,
30012	/// A template for the API URL to get information about statuses of a
30013	/// commit.
30014	pub statuses_url:      String,
30015	/// The API URL to list the subscribers on the repository.
30016	pub subscribers_url:   String,
30017	/// The API URL to subscribe to notifications for this repository.
30018	pub subscription_url:  String,
30019	/// The API URL to get information about tags on the repository.
30020	pub tags_url:          String,
30021	/// The API URL to list the teams on the repository.
30022	pub teams_url:         String,
30023	/// A template for the API URL to create or retrieve a raw Git tree of the
30024	/// repository.
30025	pub trees_url:         String,
30026	/// The URL to get more information about the repository from the GitHub
30027	/// API.
30028	pub url:               String,
30029}
30030impl From<&RepositoryLite> for RepositoryLite {
30031	fn from(value: &RepositoryLite) -> Self {
30032		value.clone()
30033	}
30034}
30035#[derive(Clone, Debug, Deserialize, Serialize)]
30036#[serde(deny_unknown_fields)]
30037pub struct RepositoryPermissions {
30038	pub admin:    bool,
30039	#[serde(default, skip_serializing_if = "Option::is_none")]
30040	pub maintain: Option<bool>,
30041	pub pull:     bool,
30042	pub push:     bool,
30043	#[serde(default, skip_serializing_if = "Option::is_none")]
30044	pub triage:   Option<bool>,
30045}
30046impl From<&RepositoryPermissions> for RepositoryPermissions {
30047	fn from(value: &RepositoryPermissions) -> Self {
30048		value.clone()
30049	}
30050}
30051#[derive(Clone, Debug, Deserialize, Serialize)]
30052#[serde(deny_unknown_fields)]
30053pub struct RepositoryPrivatized {
30054	pub action:       RepositoryPrivatizedAction,
30055	#[serde(default, skip_serializing_if = "Option::is_none")]
30056	pub installation: Option<InstallationLite>,
30057	#[serde(default, skip_serializing_if = "Option::is_none")]
30058	pub organization: Option<Organization>,
30059	pub repository:   Repository,
30060	pub sender:       User,
30061}
30062impl From<&RepositoryPrivatized> for RepositoryPrivatized {
30063	fn from(value: &RepositoryPrivatized) -> Self {
30064		value.clone()
30065	}
30066}
30067#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30068pub enum RepositoryPrivatizedAction {
30069	#[serde(rename = "privatized")]
30070	Privatized,
30071}
30072impl From<&RepositoryPrivatizedAction> for RepositoryPrivatizedAction {
30073	fn from(value: &RepositoryPrivatizedAction) -> Self {
30074		value.clone()
30075	}
30076}
30077impl ToString for RepositoryPrivatizedAction {
30078	fn to_string(&self) -> String {
30079		match *self {
30080			Self::Privatized => "privatized".to_string(),
30081		}
30082	}
30083}
30084impl std::str::FromStr for RepositoryPrivatizedAction {
30085	type Err = &'static str;
30086
30087	fn from_str(value: &str) -> Result<Self, &'static str> {
30088		match value {
30089			"privatized" => Ok(Self::Privatized),
30090			_ => Err("invalid value"),
30091		}
30092	}
30093}
30094impl std::convert::TryFrom<&str> for RepositoryPrivatizedAction {
30095	type Error = &'static str;
30096
30097	fn try_from(value: &str) -> Result<Self, &'static str> {
30098		value.parse()
30099	}
30100}
30101impl std::convert::TryFrom<&String> for RepositoryPrivatizedAction {
30102	type Error = &'static str;
30103
30104	fn try_from(value: &String) -> Result<Self, &'static str> {
30105		value.parse()
30106	}
30107}
30108impl std::convert::TryFrom<String> for RepositoryPrivatizedAction {
30109	type Error = &'static str;
30110
30111	fn try_from(value: String) -> Result<Self, &'static str> {
30112		value.parse()
30113	}
30114}
30115#[derive(Clone, Debug, Deserialize, Serialize)]
30116#[serde(deny_unknown_fields)]
30117pub struct RepositoryPublicized {
30118	pub action:       RepositoryPublicizedAction,
30119	#[serde(default, skip_serializing_if = "Option::is_none")]
30120	pub installation: Option<InstallationLite>,
30121	#[serde(default, skip_serializing_if = "Option::is_none")]
30122	pub organization: Option<Organization>,
30123	pub repository:   Repository,
30124	pub sender:       User,
30125}
30126impl From<&RepositoryPublicized> for RepositoryPublicized {
30127	fn from(value: &RepositoryPublicized) -> Self {
30128		value.clone()
30129	}
30130}
30131#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30132pub enum RepositoryPublicizedAction {
30133	#[serde(rename = "publicized")]
30134	Publicized,
30135}
30136impl From<&RepositoryPublicizedAction> for RepositoryPublicizedAction {
30137	fn from(value: &RepositoryPublicizedAction) -> Self {
30138		value.clone()
30139	}
30140}
30141impl ToString for RepositoryPublicizedAction {
30142	fn to_string(&self) -> String {
30143		match *self {
30144			Self::Publicized => "publicized".to_string(),
30145		}
30146	}
30147}
30148impl std::str::FromStr for RepositoryPublicizedAction {
30149	type Err = &'static str;
30150
30151	fn from_str(value: &str) -> Result<Self, &'static str> {
30152		match value {
30153			"publicized" => Ok(Self::Publicized),
30154			_ => Err("invalid value"),
30155		}
30156	}
30157}
30158impl std::convert::TryFrom<&str> for RepositoryPublicizedAction {
30159	type Error = &'static str;
30160
30161	fn try_from(value: &str) -> Result<Self, &'static str> {
30162		value.parse()
30163	}
30164}
30165impl std::convert::TryFrom<&String> for RepositoryPublicizedAction {
30166	type Error = &'static str;
30167
30168	fn try_from(value: &String) -> Result<Self, &'static str> {
30169		value.parse()
30170	}
30171}
30172impl std::convert::TryFrom<String> for RepositoryPublicizedAction {
30173	type Error = &'static str;
30174
30175	fn try_from(value: String) -> Result<Self, &'static str> {
30176		value.parse()
30177	}
30178}
30179#[derive(Clone, Debug, Deserialize, Serialize)]
30180#[serde(untagged)]
30181pub enum RepositoryPushedAt {
30182	Variant0(i64),
30183	Variant1(chrono::DateTime<chrono::offset::Utc>),
30184	Variant2,
30185}
30186impl From<&RepositoryPushedAt> for RepositoryPushedAt {
30187	fn from(value: &RepositoryPushedAt) -> Self {
30188		value.clone()
30189	}
30190}
30191impl From<i64> for RepositoryPushedAt {
30192	fn from(value: i64) -> Self {
30193		Self::Variant0(value)
30194	}
30195}
30196impl From<chrono::DateTime<chrono::offset::Utc>> for RepositoryPushedAt {
30197	fn from(value: chrono::DateTime<chrono::offset::Utc>) -> Self {
30198		Self::Variant1(value)
30199	}
30200}
30201#[derive(Clone, Debug, Deserialize, Serialize)]
30202#[serde(deny_unknown_fields)]
30203pub struct RepositoryRenamed {
30204	pub action:       RepositoryRenamedAction,
30205	pub changes:      RepositoryRenamedChanges,
30206	#[serde(default, skip_serializing_if = "Option::is_none")]
30207	pub installation: Option<InstallationLite>,
30208	#[serde(default, skip_serializing_if = "Option::is_none")]
30209	pub organization: Option<Organization>,
30210	pub repository:   Repository,
30211	pub sender:       User,
30212}
30213impl From<&RepositoryRenamed> for RepositoryRenamed {
30214	fn from(value: &RepositoryRenamed) -> Self {
30215		value.clone()
30216	}
30217}
30218#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30219pub enum RepositoryRenamedAction {
30220	#[serde(rename = "renamed")]
30221	Renamed,
30222}
30223impl From<&RepositoryRenamedAction> for RepositoryRenamedAction {
30224	fn from(value: &RepositoryRenamedAction) -> Self {
30225		value.clone()
30226	}
30227}
30228impl ToString for RepositoryRenamedAction {
30229	fn to_string(&self) -> String {
30230		match *self {
30231			Self::Renamed => "renamed".to_string(),
30232		}
30233	}
30234}
30235impl std::str::FromStr for RepositoryRenamedAction {
30236	type Err = &'static str;
30237
30238	fn from_str(value: &str) -> Result<Self, &'static str> {
30239		match value {
30240			"renamed" => Ok(Self::Renamed),
30241			_ => Err("invalid value"),
30242		}
30243	}
30244}
30245impl std::convert::TryFrom<&str> for RepositoryRenamedAction {
30246	type Error = &'static str;
30247
30248	fn try_from(value: &str) -> Result<Self, &'static str> {
30249		value.parse()
30250	}
30251}
30252impl std::convert::TryFrom<&String> for RepositoryRenamedAction {
30253	type Error = &'static str;
30254
30255	fn try_from(value: &String) -> Result<Self, &'static str> {
30256		value.parse()
30257	}
30258}
30259impl std::convert::TryFrom<String> for RepositoryRenamedAction {
30260	type Error = &'static str;
30261
30262	fn try_from(value: String) -> Result<Self, &'static str> {
30263		value.parse()
30264	}
30265}
30266#[derive(Clone, Debug, Deserialize, Serialize)]
30267#[serde(deny_unknown_fields)]
30268pub struct RepositoryRenamedChanges {
30269	pub repository: RepositoryRenamedChangesRepository,
30270}
30271impl From<&RepositoryRenamedChanges> for RepositoryRenamedChanges {
30272	fn from(value: &RepositoryRenamedChanges) -> Self {
30273		value.clone()
30274	}
30275}
30276#[derive(Clone, Debug, Deserialize, Serialize)]
30277#[serde(deny_unknown_fields)]
30278pub struct RepositoryRenamedChangesRepository {
30279	pub name: RepositoryRenamedChangesRepositoryName,
30280}
30281impl From<&RepositoryRenamedChangesRepository> for RepositoryRenamedChangesRepository {
30282	fn from(value: &RepositoryRenamedChangesRepository) -> Self {
30283		value.clone()
30284	}
30285}
30286#[derive(Clone, Debug, Deserialize, Serialize)]
30287#[serde(deny_unknown_fields)]
30288pub struct RepositoryRenamedChangesRepositoryName {
30289	pub from: String,
30290}
30291impl From<&RepositoryRenamedChangesRepositoryName> for RepositoryRenamedChangesRepositoryName {
30292	fn from(value: &RepositoryRenamedChangesRepositoryName) -> Self {
30293		value.clone()
30294	}
30295}
30296#[derive(Clone, Debug, Deserialize, Serialize)]
30297#[serde(deny_unknown_fields)]
30298pub struct RepositoryTransferred {
30299	pub action:       RepositoryTransferredAction,
30300	pub changes:      RepositoryTransferredChanges,
30301	#[serde(default, skip_serializing_if = "Option::is_none")]
30302	pub installation: Option<InstallationLite>,
30303	#[serde(default, skip_serializing_if = "Option::is_none")]
30304	pub organization: Option<Organization>,
30305	pub repository:   Repository,
30306	pub sender:       User,
30307}
30308impl From<&RepositoryTransferred> for RepositoryTransferred {
30309	fn from(value: &RepositoryTransferred) -> Self {
30310		value.clone()
30311	}
30312}
30313#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30314pub enum RepositoryTransferredAction {
30315	#[serde(rename = "transferred")]
30316	Transferred,
30317}
30318impl From<&RepositoryTransferredAction> for RepositoryTransferredAction {
30319	fn from(value: &RepositoryTransferredAction) -> Self {
30320		value.clone()
30321	}
30322}
30323impl ToString for RepositoryTransferredAction {
30324	fn to_string(&self) -> String {
30325		match *self {
30326			Self::Transferred => "transferred".to_string(),
30327		}
30328	}
30329}
30330impl std::str::FromStr for RepositoryTransferredAction {
30331	type Err = &'static str;
30332
30333	fn from_str(value: &str) -> Result<Self, &'static str> {
30334		match value {
30335			"transferred" => Ok(Self::Transferred),
30336			_ => Err("invalid value"),
30337		}
30338	}
30339}
30340impl std::convert::TryFrom<&str> for RepositoryTransferredAction {
30341	type Error = &'static str;
30342
30343	fn try_from(value: &str) -> Result<Self, &'static str> {
30344		value.parse()
30345	}
30346}
30347impl std::convert::TryFrom<&String> for RepositoryTransferredAction {
30348	type Error = &'static str;
30349
30350	fn try_from(value: &String) -> Result<Self, &'static str> {
30351		value.parse()
30352	}
30353}
30354impl std::convert::TryFrom<String> for RepositoryTransferredAction {
30355	type Error = &'static str;
30356
30357	fn try_from(value: String) -> Result<Self, &'static str> {
30358		value.parse()
30359	}
30360}
30361#[derive(Clone, Debug, Deserialize, Serialize)]
30362#[serde(deny_unknown_fields)]
30363pub struct RepositoryTransferredChanges {
30364	pub owner: RepositoryTransferredChangesOwner,
30365}
30366impl From<&RepositoryTransferredChanges> for RepositoryTransferredChanges {
30367	fn from(value: &RepositoryTransferredChanges) -> Self {
30368		value.clone()
30369	}
30370}
30371#[derive(Clone, Debug, Deserialize, Serialize)]
30372#[serde(deny_unknown_fields)]
30373pub struct RepositoryTransferredChangesOwner {
30374	pub from: RepositoryTransferredChangesOwnerFrom,
30375}
30376impl From<&RepositoryTransferredChangesOwner> for RepositoryTransferredChangesOwner {
30377	fn from(value: &RepositoryTransferredChangesOwner) -> Self {
30378		value.clone()
30379	}
30380}
30381#[derive(Clone, Debug, Deserialize, Serialize)]
30382#[serde(deny_unknown_fields)]
30383pub struct RepositoryTransferredChangesOwnerFrom {
30384	#[serde(default, skip_serializing_if = "Option::is_none")]
30385	pub user: Option<User>,
30386}
30387impl From<&RepositoryTransferredChangesOwnerFrom> for RepositoryTransferredChangesOwnerFrom {
30388	fn from(value: &RepositoryTransferredChangesOwnerFrom) -> Self {
30389		value.clone()
30390	}
30391}
30392#[derive(Clone, Debug, Deserialize, Serialize)]
30393#[serde(deny_unknown_fields)]
30394pub struct RepositoryUnarchived {
30395	pub action:       RepositoryUnarchivedAction,
30396	#[serde(default, skip_serializing_if = "Option::is_none")]
30397	pub installation: Option<InstallationLite>,
30398	#[serde(default, skip_serializing_if = "Option::is_none")]
30399	pub organization: Option<Organization>,
30400	pub repository:   Repository,
30401	pub sender:       User,
30402}
30403impl From<&RepositoryUnarchived> for RepositoryUnarchived {
30404	fn from(value: &RepositoryUnarchived) -> Self {
30405		value.clone()
30406	}
30407}
30408#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30409pub enum RepositoryUnarchivedAction {
30410	#[serde(rename = "unarchived")]
30411	Unarchived,
30412}
30413impl From<&RepositoryUnarchivedAction> for RepositoryUnarchivedAction {
30414	fn from(value: &RepositoryUnarchivedAction) -> Self {
30415		value.clone()
30416	}
30417}
30418impl ToString for RepositoryUnarchivedAction {
30419	fn to_string(&self) -> String {
30420		match *self {
30421			Self::Unarchived => "unarchived".to_string(),
30422		}
30423	}
30424}
30425impl std::str::FromStr for RepositoryUnarchivedAction {
30426	type Err = &'static str;
30427
30428	fn from_str(value: &str) -> Result<Self, &'static str> {
30429		match value {
30430			"unarchived" => Ok(Self::Unarchived),
30431			_ => Err("invalid value"),
30432		}
30433	}
30434}
30435impl std::convert::TryFrom<&str> for RepositoryUnarchivedAction {
30436	type Error = &'static str;
30437
30438	fn try_from(value: &str) -> Result<Self, &'static str> {
30439		value.parse()
30440	}
30441}
30442impl std::convert::TryFrom<&String> for RepositoryUnarchivedAction {
30443	type Error = &'static str;
30444
30445	fn try_from(value: &String) -> Result<Self, &'static str> {
30446		value.parse()
30447	}
30448}
30449impl std::convert::TryFrom<String> for RepositoryUnarchivedAction {
30450	type Error = &'static str;
30451
30452	fn try_from(value: String) -> Result<Self, &'static str> {
30453		value.parse()
30454	}
30455}
30456#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30457pub enum RepositoryVisibility {
30458	#[serde(rename = "public")]
30459	Public,
30460	#[serde(rename = "private")]
30461	Private,
30462	#[serde(rename = "internal")]
30463	Internal,
30464}
30465impl From<&RepositoryVisibility> for RepositoryVisibility {
30466	fn from(value: &RepositoryVisibility) -> Self {
30467		value.clone()
30468	}
30469}
30470impl ToString for RepositoryVisibility {
30471	fn to_string(&self) -> String {
30472		match *self {
30473			Self::Public => "public".to_string(),
30474			Self::Private => "private".to_string(),
30475			Self::Internal => "internal".to_string(),
30476		}
30477	}
30478}
30479impl std::str::FromStr for RepositoryVisibility {
30480	type Err = &'static str;
30481
30482	fn from_str(value: &str) -> Result<Self, &'static str> {
30483		match value {
30484			"public" => Ok(Self::Public),
30485			"private" => Ok(Self::Private),
30486			"internal" => Ok(Self::Internal),
30487			_ => Err("invalid value"),
30488		}
30489	}
30490}
30491impl std::convert::TryFrom<&str> for RepositoryVisibility {
30492	type Error = &'static str;
30493
30494	fn try_from(value: &str) -> Result<Self, &'static str> {
30495		value.parse()
30496	}
30497}
30498impl std::convert::TryFrom<&String> for RepositoryVisibility {
30499	type Error = &'static str;
30500
30501	fn try_from(value: &String) -> Result<Self, &'static str> {
30502		value.parse()
30503	}
30504}
30505impl std::convert::TryFrom<String> for RepositoryVisibility {
30506	type Error = &'static str;
30507
30508	fn try_from(value: String) -> Result<Self, &'static str> {
30509		value.parse()
30510	}
30511}
30512/// The security alert of the vulnerable dependency.
30513#[derive(Clone, Debug, Deserialize, Serialize)]
30514#[serde(deny_unknown_fields)]
30515pub struct RepositoryVulnerabilityAlertAlert {
30516	pub affected_package_name: String,
30517	pub affected_range:        String,
30518	pub created_at:            chrono::DateTime<chrono::offset::Utc>,
30519	#[serde(default, skip_serializing_if = "Option::is_none")]
30520	pub dismiss_reason:        Option<String>,
30521	#[serde(default, skip_serializing_if = "Option::is_none")]
30522	pub dismissed_at:          Option<chrono::DateTime<chrono::offset::Utc>>,
30523	#[serde(default, skip_serializing_if = "Option::is_none")]
30524	pub dismisser:             Option<User>,
30525	pub external_identifier:   String,
30526	pub external_reference:    String,
30527	#[serde(default, skip_serializing_if = "Option::is_none")]
30528	pub fix_reason:            Option<String>,
30529	#[serde(default, skip_serializing_if = "Option::is_none")]
30530	pub fixed_at:              Option<chrono::DateTime<chrono::offset::Utc>>,
30531	pub fixed_in:              String,
30532	pub ghsa_id:               String,
30533	pub id:                    i64,
30534	pub node_id:               String,
30535	pub number:                i64,
30536	pub severity:              String,
30537	pub state:                 RepositoryVulnerabilityAlertAlertState,
30538}
30539impl From<&RepositoryVulnerabilityAlertAlert> for RepositoryVulnerabilityAlertAlert {
30540	fn from(value: &RepositoryVulnerabilityAlertAlert) -> Self {
30541		value.clone()
30542	}
30543}
30544#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30545pub enum RepositoryVulnerabilityAlertAlertState {
30546	#[serde(rename = "open")]
30547	Open,
30548	#[serde(rename = "dismissed")]
30549	Dismissed,
30550	#[serde(rename = "fixed")]
30551	Fixed,
30552}
30553impl From<&RepositoryVulnerabilityAlertAlertState> for RepositoryVulnerabilityAlertAlertState {
30554	fn from(value: &RepositoryVulnerabilityAlertAlertState) -> Self {
30555		value.clone()
30556	}
30557}
30558impl ToString for RepositoryVulnerabilityAlertAlertState {
30559	fn to_string(&self) -> String {
30560		match *self {
30561			Self::Open => "open".to_string(),
30562			Self::Dismissed => "dismissed".to_string(),
30563			Self::Fixed => "fixed".to_string(),
30564		}
30565	}
30566}
30567impl std::str::FromStr for RepositoryVulnerabilityAlertAlertState {
30568	type Err = &'static str;
30569
30570	fn from_str(value: &str) -> Result<Self, &'static str> {
30571		match value {
30572			"open" => Ok(Self::Open),
30573			"dismissed" => Ok(Self::Dismissed),
30574			"fixed" => Ok(Self::Fixed),
30575			_ => Err("invalid value"),
30576		}
30577	}
30578}
30579impl std::convert::TryFrom<&str> for RepositoryVulnerabilityAlertAlertState {
30580	type Error = &'static str;
30581
30582	fn try_from(value: &str) -> Result<Self, &'static str> {
30583		value.parse()
30584	}
30585}
30586impl std::convert::TryFrom<&String> for RepositoryVulnerabilityAlertAlertState {
30587	type Error = &'static str;
30588
30589	fn try_from(value: &String) -> Result<Self, &'static str> {
30590		value.parse()
30591	}
30592}
30593impl std::convert::TryFrom<String> for RepositoryVulnerabilityAlertAlertState {
30594	type Error = &'static str;
30595
30596	fn try_from(value: String) -> Result<Self, &'static str> {
30597		value.parse()
30598	}
30599}
30600#[derive(Clone, Debug, Deserialize, Serialize)]
30601#[serde(deny_unknown_fields)]
30602pub struct RepositoryVulnerabilityAlertCreate {
30603	pub action:       RepositoryVulnerabilityAlertCreateAction,
30604	pub alert:        RepositoryVulnerabilityAlertAlert,
30605	#[serde(default, skip_serializing_if = "Option::is_none")]
30606	pub organization: Option<Organization>,
30607	pub repository:   Repository,
30608	pub sender:       GithubOrg,
30609}
30610impl From<&RepositoryVulnerabilityAlertCreate> for RepositoryVulnerabilityAlertCreate {
30611	fn from(value: &RepositoryVulnerabilityAlertCreate) -> Self {
30612		value.clone()
30613	}
30614}
30615#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30616pub enum RepositoryVulnerabilityAlertCreateAction {
30617	#[serde(rename = "create")]
30618	Create,
30619}
30620impl From<&RepositoryVulnerabilityAlertCreateAction> for RepositoryVulnerabilityAlertCreateAction {
30621	fn from(value: &RepositoryVulnerabilityAlertCreateAction) -> Self {
30622		value.clone()
30623	}
30624}
30625impl ToString for RepositoryVulnerabilityAlertCreateAction {
30626	fn to_string(&self) -> String {
30627		match *self {
30628			Self::Create => "create".to_string(),
30629		}
30630	}
30631}
30632impl std::str::FromStr for RepositoryVulnerabilityAlertCreateAction {
30633	type Err = &'static str;
30634
30635	fn from_str(value: &str) -> Result<Self, &'static str> {
30636		match value {
30637			"create" => Ok(Self::Create),
30638			_ => Err("invalid value"),
30639		}
30640	}
30641}
30642impl std::convert::TryFrom<&str> for RepositoryVulnerabilityAlertCreateAction {
30643	type Error = &'static str;
30644
30645	fn try_from(value: &str) -> Result<Self, &'static str> {
30646		value.parse()
30647	}
30648}
30649impl std::convert::TryFrom<&String> for RepositoryVulnerabilityAlertCreateAction {
30650	type Error = &'static str;
30651
30652	fn try_from(value: &String) -> Result<Self, &'static str> {
30653		value.parse()
30654	}
30655}
30656impl std::convert::TryFrom<String> for RepositoryVulnerabilityAlertCreateAction {
30657	type Error = &'static str;
30658
30659	fn try_from(value: String) -> Result<Self, &'static str> {
30660		value.parse()
30661	}
30662}
30663#[derive(Clone, Debug, Deserialize, Serialize)]
30664#[serde(deny_unknown_fields)]
30665pub struct RepositoryVulnerabilityAlertDismiss {
30666	pub action:       RepositoryVulnerabilityAlertDismissAction,
30667	pub alert:        RepositoryVulnerabilityAlertAlert,
30668	#[serde(default, skip_serializing_if = "Option::is_none")]
30669	pub organization: Option<Organization>,
30670	pub repository:   Repository,
30671	pub sender:       GithubOrg,
30672}
30673impl From<&RepositoryVulnerabilityAlertDismiss> for RepositoryVulnerabilityAlertDismiss {
30674	fn from(value: &RepositoryVulnerabilityAlertDismiss) -> Self {
30675		value.clone()
30676	}
30677}
30678#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30679pub enum RepositoryVulnerabilityAlertDismissAction {
30680	#[serde(rename = "dismiss")]
30681	Dismiss,
30682}
30683impl From<&RepositoryVulnerabilityAlertDismissAction>
30684	for RepositoryVulnerabilityAlertDismissAction
30685{
30686	fn from(value: &RepositoryVulnerabilityAlertDismissAction) -> Self {
30687		value.clone()
30688	}
30689}
30690impl ToString for RepositoryVulnerabilityAlertDismissAction {
30691	fn to_string(&self) -> String {
30692		match *self {
30693			Self::Dismiss => "dismiss".to_string(),
30694		}
30695	}
30696}
30697impl std::str::FromStr for RepositoryVulnerabilityAlertDismissAction {
30698	type Err = &'static str;
30699
30700	fn from_str(value: &str) -> Result<Self, &'static str> {
30701		match value {
30702			"dismiss" => Ok(Self::Dismiss),
30703			_ => Err("invalid value"),
30704		}
30705	}
30706}
30707impl std::convert::TryFrom<&str> for RepositoryVulnerabilityAlertDismissAction {
30708	type Error = &'static str;
30709
30710	fn try_from(value: &str) -> Result<Self, &'static str> {
30711		value.parse()
30712	}
30713}
30714impl std::convert::TryFrom<&String> for RepositoryVulnerabilityAlertDismissAction {
30715	type Error = &'static str;
30716
30717	fn try_from(value: &String) -> Result<Self, &'static str> {
30718		value.parse()
30719	}
30720}
30721impl std::convert::TryFrom<String> for RepositoryVulnerabilityAlertDismissAction {
30722	type Error = &'static str;
30723
30724	fn try_from(value: String) -> Result<Self, &'static str> {
30725		value.parse()
30726	}
30727}
30728#[derive(Clone, Debug, Deserialize, Serialize)]
30729#[serde(untagged)]
30730pub enum RepositoryVulnerabilityAlertEvent {
30731	Create(RepositoryVulnerabilityAlertCreate),
30732	Dismiss(RepositoryVulnerabilityAlertDismiss),
30733	Reopen(RepositoryVulnerabilityAlertReopen),
30734	Resolve(RepositoryVulnerabilityAlertResolve),
30735}
30736impl From<&RepositoryVulnerabilityAlertEvent> for RepositoryVulnerabilityAlertEvent {
30737	fn from(value: &RepositoryVulnerabilityAlertEvent) -> Self {
30738		value.clone()
30739	}
30740}
30741impl From<RepositoryVulnerabilityAlertCreate> for RepositoryVulnerabilityAlertEvent {
30742	fn from(value: RepositoryVulnerabilityAlertCreate) -> Self {
30743		Self::Create(value)
30744	}
30745}
30746impl From<RepositoryVulnerabilityAlertDismiss> for RepositoryVulnerabilityAlertEvent {
30747	fn from(value: RepositoryVulnerabilityAlertDismiss) -> Self {
30748		Self::Dismiss(value)
30749	}
30750}
30751impl From<RepositoryVulnerabilityAlertReopen> for RepositoryVulnerabilityAlertEvent {
30752	fn from(value: RepositoryVulnerabilityAlertReopen) -> Self {
30753		Self::Reopen(value)
30754	}
30755}
30756impl From<RepositoryVulnerabilityAlertResolve> for RepositoryVulnerabilityAlertEvent {
30757	fn from(value: RepositoryVulnerabilityAlertResolve) -> Self {
30758		Self::Resolve(value)
30759	}
30760}
30761#[derive(Clone, Debug, Deserialize, Serialize)]
30762#[serde(deny_unknown_fields)]
30763pub struct RepositoryVulnerabilityAlertReopen {
30764	pub action:       RepositoryVulnerabilityAlertReopenAction,
30765	pub alert:        RepositoryVulnerabilityAlertAlert,
30766	#[serde(default, skip_serializing_if = "Option::is_none")]
30767	pub organization: Option<Organization>,
30768	pub repository:   Repository,
30769	pub sender:       GithubOrg,
30770}
30771impl From<&RepositoryVulnerabilityAlertReopen> for RepositoryVulnerabilityAlertReopen {
30772	fn from(value: &RepositoryVulnerabilityAlertReopen) -> Self {
30773		value.clone()
30774	}
30775}
30776#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30777pub enum RepositoryVulnerabilityAlertReopenAction {
30778	#[serde(rename = "reopen")]
30779	Reopen,
30780}
30781impl From<&RepositoryVulnerabilityAlertReopenAction> for RepositoryVulnerabilityAlertReopenAction {
30782	fn from(value: &RepositoryVulnerabilityAlertReopenAction) -> Self {
30783		value.clone()
30784	}
30785}
30786impl ToString for RepositoryVulnerabilityAlertReopenAction {
30787	fn to_string(&self) -> String {
30788		match *self {
30789			Self::Reopen => "reopen".to_string(),
30790		}
30791	}
30792}
30793impl std::str::FromStr for RepositoryVulnerabilityAlertReopenAction {
30794	type Err = &'static str;
30795
30796	fn from_str(value: &str) -> Result<Self, &'static str> {
30797		match value {
30798			"reopen" => Ok(Self::Reopen),
30799			_ => Err("invalid value"),
30800		}
30801	}
30802}
30803impl std::convert::TryFrom<&str> for RepositoryVulnerabilityAlertReopenAction {
30804	type Error = &'static str;
30805
30806	fn try_from(value: &str) -> Result<Self, &'static str> {
30807		value.parse()
30808	}
30809}
30810impl std::convert::TryFrom<&String> for RepositoryVulnerabilityAlertReopenAction {
30811	type Error = &'static str;
30812
30813	fn try_from(value: &String) -> Result<Self, &'static str> {
30814		value.parse()
30815	}
30816}
30817impl std::convert::TryFrom<String> for RepositoryVulnerabilityAlertReopenAction {
30818	type Error = &'static str;
30819
30820	fn try_from(value: String) -> Result<Self, &'static str> {
30821		value.parse()
30822	}
30823}
30824#[derive(Clone, Debug, Deserialize, Serialize)]
30825#[serde(deny_unknown_fields)]
30826pub struct RepositoryVulnerabilityAlertResolve {
30827	pub action:       RepositoryVulnerabilityAlertResolveAction,
30828	pub alert:        RepositoryVulnerabilityAlertAlert,
30829	#[serde(default, skip_serializing_if = "Option::is_none")]
30830	pub organization: Option<Organization>,
30831	pub repository:   Repository,
30832	pub sender:       GithubOrg,
30833}
30834impl From<&RepositoryVulnerabilityAlertResolve> for RepositoryVulnerabilityAlertResolve {
30835	fn from(value: &RepositoryVulnerabilityAlertResolve) -> Self {
30836		value.clone()
30837	}
30838}
30839#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30840pub enum RepositoryVulnerabilityAlertResolveAction {
30841	#[serde(rename = "resolve")]
30842	Resolve,
30843}
30844impl From<&RepositoryVulnerabilityAlertResolveAction>
30845	for RepositoryVulnerabilityAlertResolveAction
30846{
30847	fn from(value: &RepositoryVulnerabilityAlertResolveAction) -> Self {
30848		value.clone()
30849	}
30850}
30851impl ToString for RepositoryVulnerabilityAlertResolveAction {
30852	fn to_string(&self) -> String {
30853		match *self {
30854			Self::Resolve => "resolve".to_string(),
30855		}
30856	}
30857}
30858impl std::str::FromStr for RepositoryVulnerabilityAlertResolveAction {
30859	type Err = &'static str;
30860
30861	fn from_str(value: &str) -> Result<Self, &'static str> {
30862		match value {
30863			"resolve" => Ok(Self::Resolve),
30864			_ => Err("invalid value"),
30865		}
30866	}
30867}
30868impl std::convert::TryFrom<&str> for RepositoryVulnerabilityAlertResolveAction {
30869	type Error = &'static str;
30870
30871	fn try_from(value: &str) -> Result<Self, &'static str> {
30872		value.parse()
30873	}
30874}
30875impl std::convert::TryFrom<&String> for RepositoryVulnerabilityAlertResolveAction {
30876	type Error = &'static str;
30877
30878	fn try_from(value: &String) -> Result<Self, &'static str> {
30879		value.parse()
30880	}
30881}
30882impl std::convert::TryFrom<String> for RepositoryVulnerabilityAlertResolveAction {
30883	type Error = &'static str;
30884
30885	fn try_from(value: String) -> Result<Self, &'static str> {
30886		value.parse()
30887	}
30888}
30889#[derive(Clone, Debug, Deserialize, Serialize)]
30890#[serde(deny_unknown_fields)]
30891pub struct SecretScanningAlertCreated {
30892	pub action:       SecretScanningAlertCreatedAction,
30893	pub alert:        SecretScanningAlertCreatedAlert,
30894	#[serde(default, skip_serializing_if = "Option::is_none")]
30895	pub installation: Option<InstallationLite>,
30896	#[serde(default, skip_serializing_if = "Option::is_none")]
30897	pub organization: Option<Organization>,
30898	pub repository:   Repository,
30899}
30900impl From<&SecretScanningAlertCreated> for SecretScanningAlertCreated {
30901	fn from(value: &SecretScanningAlertCreated) -> Self {
30902		value.clone()
30903	}
30904}
30905#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
30906pub enum SecretScanningAlertCreatedAction {
30907	#[serde(rename = "created")]
30908	Created,
30909}
30910impl From<&SecretScanningAlertCreatedAction> for SecretScanningAlertCreatedAction {
30911	fn from(value: &SecretScanningAlertCreatedAction) -> Self {
30912		value.clone()
30913	}
30914}
30915impl ToString for SecretScanningAlertCreatedAction {
30916	fn to_string(&self) -> String {
30917		match *self {
30918			Self::Created => "created".to_string(),
30919		}
30920	}
30921}
30922impl std::str::FromStr for SecretScanningAlertCreatedAction {
30923	type Err = &'static str;
30924
30925	fn from_str(value: &str) -> Result<Self, &'static str> {
30926		match value {
30927			"created" => Ok(Self::Created),
30928			_ => Err("invalid value"),
30929		}
30930	}
30931}
30932impl std::convert::TryFrom<&str> for SecretScanningAlertCreatedAction {
30933	type Error = &'static str;
30934
30935	fn try_from(value: &str) -> Result<Self, &'static str> {
30936		value.parse()
30937	}
30938}
30939impl std::convert::TryFrom<&String> for SecretScanningAlertCreatedAction {
30940	type Error = &'static str;
30941
30942	fn try_from(value: &String) -> Result<Self, &'static str> {
30943		value.parse()
30944	}
30945}
30946impl std::convert::TryFrom<String> for SecretScanningAlertCreatedAction {
30947	type Error = &'static str;
30948
30949	fn try_from(value: String) -> Result<Self, &'static str> {
30950		value.parse()
30951	}
30952}
30953/// The secret scanning alert involved in the event.
30954#[derive(Clone, Debug, Deserialize, Serialize)]
30955#[serde(deny_unknown_fields)]
30956pub struct SecretScanningAlertCreatedAlert {
30957	pub number:      i64,
30958	pub resolution:  (),
30959	pub resolved_at: (),
30960	pub resolved_by: (),
30961	pub secret_type: String,
30962}
30963impl From<&SecretScanningAlertCreatedAlert> for SecretScanningAlertCreatedAlert {
30964	fn from(value: &SecretScanningAlertCreatedAlert) -> Self {
30965		value.clone()
30966	}
30967}
30968#[derive(Clone, Debug, Deserialize, Serialize)]
30969#[serde(untagged)]
30970pub enum SecretScanningAlertEvent {
30971	Created(SecretScanningAlertCreated),
30972	Reopened(SecretScanningAlertReopened),
30973	Resolved(SecretScanningAlertResolved),
30974}
30975impl From<&SecretScanningAlertEvent> for SecretScanningAlertEvent {
30976	fn from(value: &SecretScanningAlertEvent) -> Self {
30977		value.clone()
30978	}
30979}
30980impl From<SecretScanningAlertCreated> for SecretScanningAlertEvent {
30981	fn from(value: SecretScanningAlertCreated) -> Self {
30982		Self::Created(value)
30983	}
30984}
30985impl From<SecretScanningAlertReopened> for SecretScanningAlertEvent {
30986	fn from(value: SecretScanningAlertReopened) -> Self {
30987		Self::Reopened(value)
30988	}
30989}
30990impl From<SecretScanningAlertResolved> for SecretScanningAlertEvent {
30991	fn from(value: SecretScanningAlertResolved) -> Self {
30992		Self::Resolved(value)
30993	}
30994}
30995#[derive(Clone, Debug, Deserialize, Serialize)]
30996#[serde(deny_unknown_fields)]
30997pub struct SecretScanningAlertReopened {
30998	pub action:       SecretScanningAlertReopenedAction,
30999	pub alert:        SecretScanningAlertReopenedAlert,
31000	#[serde(default, skip_serializing_if = "Option::is_none")]
31001	pub installation: Option<InstallationLite>,
31002	#[serde(default, skip_serializing_if = "Option::is_none")]
31003	pub organization: Option<Organization>,
31004	pub repository:   Repository,
31005	pub sender:       User,
31006}
31007impl From<&SecretScanningAlertReopened> for SecretScanningAlertReopened {
31008	fn from(value: &SecretScanningAlertReopened) -> Self {
31009		value.clone()
31010	}
31011}
31012#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31013pub enum SecretScanningAlertReopenedAction {
31014	#[serde(rename = "reopened")]
31015	Reopened,
31016}
31017impl From<&SecretScanningAlertReopenedAction> for SecretScanningAlertReopenedAction {
31018	fn from(value: &SecretScanningAlertReopenedAction) -> Self {
31019		value.clone()
31020	}
31021}
31022impl ToString for SecretScanningAlertReopenedAction {
31023	fn to_string(&self) -> String {
31024		match *self {
31025			Self::Reopened => "reopened".to_string(),
31026		}
31027	}
31028}
31029impl std::str::FromStr for SecretScanningAlertReopenedAction {
31030	type Err = &'static str;
31031
31032	fn from_str(value: &str) -> Result<Self, &'static str> {
31033		match value {
31034			"reopened" => Ok(Self::Reopened),
31035			_ => Err("invalid value"),
31036		}
31037	}
31038}
31039impl std::convert::TryFrom<&str> for SecretScanningAlertReopenedAction {
31040	type Error = &'static str;
31041
31042	fn try_from(value: &str) -> Result<Self, &'static str> {
31043		value.parse()
31044	}
31045}
31046impl std::convert::TryFrom<&String> for SecretScanningAlertReopenedAction {
31047	type Error = &'static str;
31048
31049	fn try_from(value: &String) -> Result<Self, &'static str> {
31050		value.parse()
31051	}
31052}
31053impl std::convert::TryFrom<String> for SecretScanningAlertReopenedAction {
31054	type Error = &'static str;
31055
31056	fn try_from(value: String) -> Result<Self, &'static str> {
31057		value.parse()
31058	}
31059}
31060/// The secret scanning alert involved in the event.
31061#[derive(Clone, Debug, Deserialize, Serialize)]
31062#[serde(deny_unknown_fields)]
31063pub struct SecretScanningAlertReopenedAlert {
31064	pub number:      i64,
31065	pub resolution:  (),
31066	pub resolved_at: (),
31067	pub resolved_by: (),
31068	pub secret_type: String,
31069}
31070impl From<&SecretScanningAlertReopenedAlert> for SecretScanningAlertReopenedAlert {
31071	fn from(value: &SecretScanningAlertReopenedAlert) -> Self {
31072		value.clone()
31073	}
31074}
31075#[derive(Clone, Debug, Deserialize, Serialize)]
31076#[serde(deny_unknown_fields)]
31077pub struct SecretScanningAlertResolved {
31078	pub action:       SecretScanningAlertResolvedAction,
31079	pub alert:        SecretScanningAlertResolvedAlert,
31080	#[serde(default, skip_serializing_if = "Option::is_none")]
31081	pub installation: Option<InstallationLite>,
31082	#[serde(default, skip_serializing_if = "Option::is_none")]
31083	pub organization: Option<Organization>,
31084	pub repository:   Repository,
31085	pub sender:       User,
31086}
31087impl From<&SecretScanningAlertResolved> for SecretScanningAlertResolved {
31088	fn from(value: &SecretScanningAlertResolved) -> Self {
31089		value.clone()
31090	}
31091}
31092#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31093pub enum SecretScanningAlertResolvedAction {
31094	#[serde(rename = "resolved")]
31095	Resolved,
31096}
31097impl From<&SecretScanningAlertResolvedAction> for SecretScanningAlertResolvedAction {
31098	fn from(value: &SecretScanningAlertResolvedAction) -> Self {
31099		value.clone()
31100	}
31101}
31102impl ToString for SecretScanningAlertResolvedAction {
31103	fn to_string(&self) -> String {
31104		match *self {
31105			Self::Resolved => "resolved".to_string(),
31106		}
31107	}
31108}
31109impl std::str::FromStr for SecretScanningAlertResolvedAction {
31110	type Err = &'static str;
31111
31112	fn from_str(value: &str) -> Result<Self, &'static str> {
31113		match value {
31114			"resolved" => Ok(Self::Resolved),
31115			_ => Err("invalid value"),
31116		}
31117	}
31118}
31119impl std::convert::TryFrom<&str> for SecretScanningAlertResolvedAction {
31120	type Error = &'static str;
31121
31122	fn try_from(value: &str) -> Result<Self, &'static str> {
31123		value.parse()
31124	}
31125}
31126impl std::convert::TryFrom<&String> for SecretScanningAlertResolvedAction {
31127	type Error = &'static str;
31128
31129	fn try_from(value: &String) -> Result<Self, &'static str> {
31130		value.parse()
31131	}
31132}
31133impl std::convert::TryFrom<String> for SecretScanningAlertResolvedAction {
31134	type Error = &'static str;
31135
31136	fn try_from(value: String) -> Result<Self, &'static str> {
31137		value.parse()
31138	}
31139}
31140/// The secret scanning alert involved in the event.
31141#[derive(Clone, Debug, Deserialize, Serialize)]
31142#[serde(deny_unknown_fields)]
31143pub struct SecretScanningAlertResolvedAlert {
31144	pub number:      i64,
31145	pub resolution:  SecretScanningAlertResolvedAlertResolution,
31146	pub resolved_at: chrono::DateTime<chrono::offset::Utc>,
31147	pub resolved_by: User,
31148	pub secret_type: String,
31149}
31150impl From<&SecretScanningAlertResolvedAlert> for SecretScanningAlertResolvedAlert {
31151	fn from(value: &SecretScanningAlertResolvedAlert) -> Self {
31152		value.clone()
31153	}
31154}
31155#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31156pub enum SecretScanningAlertResolvedAlertResolution {
31157	#[serde(rename = "false_positive")]
31158	FalsePositive,
31159	#[serde(rename = "wontfix")]
31160	Wontfix,
31161	#[serde(rename = "revoked")]
31162	Revoked,
31163	#[serde(rename = "used_in_tests")]
31164	UsedInTests,
31165}
31166impl From<&SecretScanningAlertResolvedAlertResolution>
31167	for SecretScanningAlertResolvedAlertResolution
31168{
31169	fn from(value: &SecretScanningAlertResolvedAlertResolution) -> Self {
31170		value.clone()
31171	}
31172}
31173impl ToString for SecretScanningAlertResolvedAlertResolution {
31174	fn to_string(&self) -> String {
31175		match *self {
31176			Self::FalsePositive => "false_positive".to_string(),
31177			Self::Wontfix => "wontfix".to_string(),
31178			Self::Revoked => "revoked".to_string(),
31179			Self::UsedInTests => "used_in_tests".to_string(),
31180		}
31181	}
31182}
31183impl std::str::FromStr for SecretScanningAlertResolvedAlertResolution {
31184	type Err = &'static str;
31185
31186	fn from_str(value: &str) -> Result<Self, &'static str> {
31187		match value {
31188			"false_positive" => Ok(Self::FalsePositive),
31189			"wontfix" => Ok(Self::Wontfix),
31190			"revoked" => Ok(Self::Revoked),
31191			"used_in_tests" => Ok(Self::UsedInTests),
31192			_ => Err("invalid value"),
31193		}
31194	}
31195}
31196impl std::convert::TryFrom<&str> for SecretScanningAlertResolvedAlertResolution {
31197	type Error = &'static str;
31198
31199	fn try_from(value: &str) -> Result<Self, &'static str> {
31200		value.parse()
31201	}
31202}
31203impl std::convert::TryFrom<&String> for SecretScanningAlertResolvedAlertResolution {
31204	type Error = &'static str;
31205
31206	fn try_from(value: &String) -> Result<Self, &'static str> {
31207		value.parse()
31208	}
31209}
31210impl std::convert::TryFrom<String> for SecretScanningAlertResolvedAlertResolution {
31211	type Error = &'static str;
31212
31213	fn try_from(value: String) -> Result<Self, &'static str> {
31214		value.parse()
31215	}
31216}
31217/// Details for the advisory pertaining to the Common Vulnerability Scoring
31218/// System.
31219#[derive(Clone, Debug, Deserialize, Serialize)]
31220#[serde(deny_unknown_fields)]
31221pub struct SecurityAdvisoryCvss {
31222	pub score:         f64,
31223	/// The full CVSS vector string for the advisory.
31224	pub vector_string: Option<String>,
31225}
31226impl From<&SecurityAdvisoryCvss> for SecurityAdvisoryCvss {
31227	fn from(value: &SecurityAdvisoryCvss) -> Self {
31228		value.clone()
31229	}
31230}
31231/// A CWE weakness assigned to the advisory.
31232#[derive(Clone, Debug, Deserialize, Serialize)]
31233#[serde(deny_unknown_fields)]
31234pub struct SecurityAdvisoryCwes {
31235	/// The unique CWE ID.
31236	pub cwe_id: String,
31237	/// The short, plain text name of the CWE.
31238	pub name:   String,
31239}
31240impl From<&SecurityAdvisoryCwes> for SecurityAdvisoryCwes {
31241	fn from(value: &SecurityAdvisoryCwes) -> Self {
31242		value.clone()
31243	}
31244}
31245#[derive(Clone, Debug, Deserialize, Serialize)]
31246#[serde(untagged)]
31247pub enum SecurityAdvisoryEvent {
31248	Performed(SecurityAdvisoryPerformed),
31249	Published(SecurityAdvisoryPublished),
31250	Updated(SecurityAdvisoryUpdated),
31251	Withdrawn(SecurityAdvisoryWithdrawn),
31252}
31253impl From<&SecurityAdvisoryEvent> for SecurityAdvisoryEvent {
31254	fn from(value: &SecurityAdvisoryEvent) -> Self {
31255		value.clone()
31256	}
31257}
31258impl From<SecurityAdvisoryPerformed> for SecurityAdvisoryEvent {
31259	fn from(value: SecurityAdvisoryPerformed) -> Self {
31260		Self::Performed(value)
31261	}
31262}
31263impl From<SecurityAdvisoryPublished> for SecurityAdvisoryEvent {
31264	fn from(value: SecurityAdvisoryPublished) -> Self {
31265		Self::Published(value)
31266	}
31267}
31268impl From<SecurityAdvisoryUpdated> for SecurityAdvisoryEvent {
31269	fn from(value: SecurityAdvisoryUpdated) -> Self {
31270		Self::Updated(value)
31271	}
31272}
31273impl From<SecurityAdvisoryWithdrawn> for SecurityAdvisoryEvent {
31274	fn from(value: SecurityAdvisoryWithdrawn) -> Self {
31275		Self::Withdrawn(value)
31276	}
31277}
31278#[derive(Clone, Debug, Deserialize, Serialize)]
31279#[serde(deny_unknown_fields)]
31280pub struct SecurityAdvisoryPerformed {
31281	pub action:            SecurityAdvisoryPerformedAction,
31282	pub security_advisory: SecurityAdvisoryPerformedSecurityAdvisory,
31283}
31284impl From<&SecurityAdvisoryPerformed> for SecurityAdvisoryPerformed {
31285	fn from(value: &SecurityAdvisoryPerformed) -> Self {
31286		value.clone()
31287	}
31288}
31289#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31290pub enum SecurityAdvisoryPerformedAction {
31291	#[serde(rename = "performed")]
31292	Performed,
31293}
31294impl From<&SecurityAdvisoryPerformedAction> for SecurityAdvisoryPerformedAction {
31295	fn from(value: &SecurityAdvisoryPerformedAction) -> Self {
31296		value.clone()
31297	}
31298}
31299impl ToString for SecurityAdvisoryPerformedAction {
31300	fn to_string(&self) -> String {
31301		match *self {
31302			Self::Performed => "performed".to_string(),
31303		}
31304	}
31305}
31306impl std::str::FromStr for SecurityAdvisoryPerformedAction {
31307	type Err = &'static str;
31308
31309	fn from_str(value: &str) -> Result<Self, &'static str> {
31310		match value {
31311			"performed" => Ok(Self::Performed),
31312			_ => Err("invalid value"),
31313		}
31314	}
31315}
31316impl std::convert::TryFrom<&str> for SecurityAdvisoryPerformedAction {
31317	type Error = &'static str;
31318
31319	fn try_from(value: &str) -> Result<Self, &'static str> {
31320		value.parse()
31321	}
31322}
31323impl std::convert::TryFrom<&String> for SecurityAdvisoryPerformedAction {
31324	type Error = &'static str;
31325
31326	fn try_from(value: &String) -> Result<Self, &'static str> {
31327		value.parse()
31328	}
31329}
31330impl std::convert::TryFrom<String> for SecurityAdvisoryPerformedAction {
31331	type Error = &'static str;
31332
31333	fn try_from(value: String) -> Result<Self, &'static str> {
31334		value.parse()
31335	}
31336}
31337/// The details of the security advisory, including summary, description, and
31338/// severity.
31339#[derive(Clone, Debug, Deserialize, Serialize)]
31340#[serde(deny_unknown_fields)]
31341pub struct SecurityAdvisoryPerformedSecurityAdvisory {
31342	pub cve_id:          Option<String>,
31343	pub cvss:            SecurityAdvisoryPerformedSecurityAdvisoryCvss,
31344	pub cwes:            Vec<SecurityAdvisoryPerformedSecurityAdvisoryCwesItem>,
31345	pub description:     String,
31346	pub ghsa_id:         String,
31347	pub identifiers:     Vec<SecurityAdvisoryPerformedSecurityAdvisoryIdentifiersItem>,
31348	pub published_at:    chrono::DateTime<chrono::offset::Utc>,
31349	pub references:      Vec<SecurityAdvisoryPerformedSecurityAdvisoryReferencesItem>,
31350	pub severity:        String,
31351	pub summary:         String,
31352	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
31353	pub vulnerabilities: Vec<SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItem>,
31354	pub withdrawn_at:    Option<chrono::DateTime<chrono::offset::Utc>>,
31355}
31356impl From<&SecurityAdvisoryPerformedSecurityAdvisory>
31357	for SecurityAdvisoryPerformedSecurityAdvisory
31358{
31359	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisory) -> Self {
31360		value.clone()
31361	}
31362}
31363#[derive(Clone, Debug, Deserialize, Serialize)]
31364#[serde(deny_unknown_fields)]
31365pub struct SecurityAdvisoryPerformedSecurityAdvisoryCvss {
31366	pub score:         f64,
31367	pub vector_string: Option<String>,
31368}
31369impl From<&SecurityAdvisoryPerformedSecurityAdvisoryCvss>
31370	for SecurityAdvisoryPerformedSecurityAdvisoryCvss
31371{
31372	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisoryCvss) -> Self {
31373		value.clone()
31374	}
31375}
31376#[derive(Clone, Debug, Deserialize, Serialize)]
31377#[serde(deny_unknown_fields)]
31378pub struct SecurityAdvisoryPerformedSecurityAdvisoryCwesItem {
31379	pub cwe_id: String,
31380	pub name:   String,
31381}
31382impl From<&SecurityAdvisoryPerformedSecurityAdvisoryCwesItem>
31383	for SecurityAdvisoryPerformedSecurityAdvisoryCwesItem
31384{
31385	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisoryCwesItem) -> Self {
31386		value.clone()
31387	}
31388}
31389#[derive(Clone, Debug, Deserialize, Serialize)]
31390#[serde(deny_unknown_fields)]
31391pub struct SecurityAdvisoryPerformedSecurityAdvisoryIdentifiersItem {
31392	#[serde(rename = "type")]
31393	pub type_: String,
31394	pub value: String,
31395}
31396impl From<&SecurityAdvisoryPerformedSecurityAdvisoryIdentifiersItem>
31397	for SecurityAdvisoryPerformedSecurityAdvisoryIdentifiersItem
31398{
31399	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisoryIdentifiersItem) -> Self {
31400		value.clone()
31401	}
31402}
31403#[derive(Clone, Debug, Deserialize, Serialize)]
31404#[serde(deny_unknown_fields)]
31405pub struct SecurityAdvisoryPerformedSecurityAdvisoryReferencesItem {
31406	pub url: String,
31407}
31408impl From<&SecurityAdvisoryPerformedSecurityAdvisoryReferencesItem>
31409	for SecurityAdvisoryPerformedSecurityAdvisoryReferencesItem
31410{
31411	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisoryReferencesItem) -> Self {
31412		value.clone()
31413	}
31414}
31415#[derive(Clone, Debug, Deserialize, Serialize)]
31416#[serde(deny_unknown_fields)]
31417pub struct SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItem {
31418	pub first_patched_version:
31419		Option<SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>,
31420	pub package: SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemPackage,
31421	pub severity:                 String,
31422	pub vulnerable_version_range: String,
31423}
31424impl From<&SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItem>
31425	for SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItem
31426{
31427	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItem) -> Self {
31428		value.clone()
31429	}
31430}
31431#[derive(Clone, Debug, Deserialize, Serialize)]
31432#[serde(deny_unknown_fields)]
31433pub struct SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion {
31434	pub identifier: String,
31435}
31436impl From<&SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>
31437	for SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion
31438{
31439	fn from(
31440		value: &SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion,
31441	) -> Self {
31442		value.clone()
31443	}
31444}
31445#[derive(Clone, Debug, Deserialize, Serialize)]
31446#[serde(deny_unknown_fields)]
31447pub struct SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemPackage {
31448	pub ecosystem: String,
31449	pub name:      String,
31450}
31451impl From<&SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemPackage>
31452	for SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemPackage
31453{
31454	fn from(value: &SecurityAdvisoryPerformedSecurityAdvisoryVulnerabilitiesItemPackage) -> Self {
31455		value.clone()
31456	}
31457}
31458#[derive(Clone, Debug, Deserialize, Serialize)]
31459#[serde(deny_unknown_fields)]
31460pub struct SecurityAdvisoryPublished {
31461	pub action:            SecurityAdvisoryPublishedAction,
31462	pub security_advisory: SecurityAdvisoryPublishedSecurityAdvisory,
31463}
31464impl From<&SecurityAdvisoryPublished> for SecurityAdvisoryPublished {
31465	fn from(value: &SecurityAdvisoryPublished) -> Self {
31466		value.clone()
31467	}
31468}
31469#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31470pub enum SecurityAdvisoryPublishedAction {
31471	#[serde(rename = "published")]
31472	Published,
31473}
31474impl From<&SecurityAdvisoryPublishedAction> for SecurityAdvisoryPublishedAction {
31475	fn from(value: &SecurityAdvisoryPublishedAction) -> Self {
31476		value.clone()
31477	}
31478}
31479impl ToString for SecurityAdvisoryPublishedAction {
31480	fn to_string(&self) -> String {
31481		match *self {
31482			Self::Published => "published".to_string(),
31483		}
31484	}
31485}
31486impl std::str::FromStr for SecurityAdvisoryPublishedAction {
31487	type Err = &'static str;
31488
31489	fn from_str(value: &str) -> Result<Self, &'static str> {
31490		match value {
31491			"published" => Ok(Self::Published),
31492			_ => Err("invalid value"),
31493		}
31494	}
31495}
31496impl std::convert::TryFrom<&str> for SecurityAdvisoryPublishedAction {
31497	type Error = &'static str;
31498
31499	fn try_from(value: &str) -> Result<Self, &'static str> {
31500		value.parse()
31501	}
31502}
31503impl std::convert::TryFrom<&String> for SecurityAdvisoryPublishedAction {
31504	type Error = &'static str;
31505
31506	fn try_from(value: &String) -> Result<Self, &'static str> {
31507		value.parse()
31508	}
31509}
31510impl std::convert::TryFrom<String> for SecurityAdvisoryPublishedAction {
31511	type Error = &'static str;
31512
31513	fn try_from(value: String) -> Result<Self, &'static str> {
31514		value.parse()
31515	}
31516}
31517/// The details of the security advisory, including summary, description, and
31518/// severity.
31519#[derive(Clone, Debug, Deserialize, Serialize)]
31520#[serde(deny_unknown_fields)]
31521pub struct SecurityAdvisoryPublishedSecurityAdvisory {
31522	pub cve_id:          Option<String>,
31523	pub cvss:            SecurityAdvisoryPublishedSecurityAdvisoryCvss,
31524	pub cwes:            Vec<SecurityAdvisoryPublishedSecurityAdvisoryCwesItem>,
31525	pub description:     String,
31526	pub ghsa_id:         String,
31527	pub identifiers:     Vec<SecurityAdvisoryPublishedSecurityAdvisoryIdentifiersItem>,
31528	pub published_at:    chrono::DateTime<chrono::offset::Utc>,
31529	pub references:      Vec<SecurityAdvisoryPublishedSecurityAdvisoryReferencesItem>,
31530	pub severity:        String,
31531	pub summary:         String,
31532	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
31533	pub vulnerabilities: Vec<SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItem>,
31534	pub withdrawn_at:    Option<chrono::DateTime<chrono::offset::Utc>>,
31535}
31536impl From<&SecurityAdvisoryPublishedSecurityAdvisory>
31537	for SecurityAdvisoryPublishedSecurityAdvisory
31538{
31539	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisory) -> Self {
31540		value.clone()
31541	}
31542}
31543#[derive(Clone, Debug, Deserialize, Serialize)]
31544#[serde(deny_unknown_fields)]
31545pub struct SecurityAdvisoryPublishedSecurityAdvisoryCvss {
31546	pub score:         f64,
31547	pub vector_string: Option<String>,
31548}
31549impl From<&SecurityAdvisoryPublishedSecurityAdvisoryCvss>
31550	for SecurityAdvisoryPublishedSecurityAdvisoryCvss
31551{
31552	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisoryCvss) -> Self {
31553		value.clone()
31554	}
31555}
31556#[derive(Clone, Debug, Deserialize, Serialize)]
31557#[serde(deny_unknown_fields)]
31558pub struct SecurityAdvisoryPublishedSecurityAdvisoryCwesItem {
31559	pub cwe_id: String,
31560	pub name:   String,
31561}
31562impl From<&SecurityAdvisoryPublishedSecurityAdvisoryCwesItem>
31563	for SecurityAdvisoryPublishedSecurityAdvisoryCwesItem
31564{
31565	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisoryCwesItem) -> Self {
31566		value.clone()
31567	}
31568}
31569#[derive(Clone, Debug, Deserialize, Serialize)]
31570#[serde(deny_unknown_fields)]
31571pub struct SecurityAdvisoryPublishedSecurityAdvisoryIdentifiersItem {
31572	#[serde(rename = "type")]
31573	pub type_: String,
31574	pub value: String,
31575}
31576impl From<&SecurityAdvisoryPublishedSecurityAdvisoryIdentifiersItem>
31577	for SecurityAdvisoryPublishedSecurityAdvisoryIdentifiersItem
31578{
31579	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisoryIdentifiersItem) -> Self {
31580		value.clone()
31581	}
31582}
31583#[derive(Clone, Debug, Deserialize, Serialize)]
31584#[serde(deny_unknown_fields)]
31585pub struct SecurityAdvisoryPublishedSecurityAdvisoryReferencesItem {
31586	pub url: String,
31587}
31588impl From<&SecurityAdvisoryPublishedSecurityAdvisoryReferencesItem>
31589	for SecurityAdvisoryPublishedSecurityAdvisoryReferencesItem
31590{
31591	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisoryReferencesItem) -> Self {
31592		value.clone()
31593	}
31594}
31595#[derive(Clone, Debug, Deserialize, Serialize)]
31596#[serde(deny_unknown_fields)]
31597pub struct SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItem {
31598	pub first_patched_version:
31599		Option<SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>,
31600	pub package: SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemPackage,
31601	pub severity:                 String,
31602	pub vulnerable_version_range: String,
31603}
31604impl From<&SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItem>
31605	for SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItem
31606{
31607	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItem) -> Self {
31608		value.clone()
31609	}
31610}
31611#[derive(Clone, Debug, Deserialize, Serialize)]
31612#[serde(deny_unknown_fields)]
31613pub struct SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion {
31614	pub identifier: String,
31615}
31616impl From<&SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>
31617	for SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion
31618{
31619	fn from(
31620		value: &SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion,
31621	) -> Self {
31622		value.clone()
31623	}
31624}
31625#[derive(Clone, Debug, Deserialize, Serialize)]
31626#[serde(deny_unknown_fields)]
31627pub struct SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemPackage {
31628	pub ecosystem: String,
31629	pub name:      String,
31630}
31631impl From<&SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemPackage>
31632	for SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemPackage
31633{
31634	fn from(value: &SecurityAdvisoryPublishedSecurityAdvisoryVulnerabilitiesItemPackage) -> Self {
31635		value.clone()
31636	}
31637}
31638#[derive(Clone, Debug, Deserialize, Serialize)]
31639#[serde(deny_unknown_fields)]
31640pub struct SecurityAdvisoryUpdated {
31641	pub action:            SecurityAdvisoryUpdatedAction,
31642	pub security_advisory: SecurityAdvisoryUpdatedSecurityAdvisory,
31643}
31644impl From<&SecurityAdvisoryUpdated> for SecurityAdvisoryUpdated {
31645	fn from(value: &SecurityAdvisoryUpdated) -> Self {
31646		value.clone()
31647	}
31648}
31649#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31650pub enum SecurityAdvisoryUpdatedAction {
31651	#[serde(rename = "updated")]
31652	Updated,
31653}
31654impl From<&SecurityAdvisoryUpdatedAction> for SecurityAdvisoryUpdatedAction {
31655	fn from(value: &SecurityAdvisoryUpdatedAction) -> Self {
31656		value.clone()
31657	}
31658}
31659impl ToString for SecurityAdvisoryUpdatedAction {
31660	fn to_string(&self) -> String {
31661		match *self {
31662			Self::Updated => "updated".to_string(),
31663		}
31664	}
31665}
31666impl std::str::FromStr for SecurityAdvisoryUpdatedAction {
31667	type Err = &'static str;
31668
31669	fn from_str(value: &str) -> Result<Self, &'static str> {
31670		match value {
31671			"updated" => Ok(Self::Updated),
31672			_ => Err("invalid value"),
31673		}
31674	}
31675}
31676impl std::convert::TryFrom<&str> for SecurityAdvisoryUpdatedAction {
31677	type Error = &'static str;
31678
31679	fn try_from(value: &str) -> Result<Self, &'static str> {
31680		value.parse()
31681	}
31682}
31683impl std::convert::TryFrom<&String> for SecurityAdvisoryUpdatedAction {
31684	type Error = &'static str;
31685
31686	fn try_from(value: &String) -> Result<Self, &'static str> {
31687		value.parse()
31688	}
31689}
31690impl std::convert::TryFrom<String> for SecurityAdvisoryUpdatedAction {
31691	type Error = &'static str;
31692
31693	fn try_from(value: String) -> Result<Self, &'static str> {
31694		value.parse()
31695	}
31696}
31697/// The details of the security advisory, including summary, description, and
31698/// severity.
31699#[derive(Clone, Debug, Deserialize, Serialize)]
31700#[serde(deny_unknown_fields)]
31701pub struct SecurityAdvisoryUpdatedSecurityAdvisory {
31702	pub cve_id:          Option<String>,
31703	pub cvss:            SecurityAdvisoryUpdatedSecurityAdvisoryCvss,
31704	pub cwes:            Vec<SecurityAdvisoryUpdatedSecurityAdvisoryCwesItem>,
31705	pub description:     String,
31706	pub ghsa_id:         String,
31707	pub identifiers:     Vec<SecurityAdvisoryUpdatedSecurityAdvisoryIdentifiersItem>,
31708	pub published_at:    chrono::DateTime<chrono::offset::Utc>,
31709	pub references:      Vec<SecurityAdvisoryUpdatedSecurityAdvisoryReferencesItem>,
31710	pub severity:        String,
31711	pub summary:         String,
31712	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
31713	pub vulnerabilities: Vec<SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItem>,
31714	pub withdrawn_at:    Option<chrono::DateTime<chrono::offset::Utc>>,
31715}
31716impl From<&SecurityAdvisoryUpdatedSecurityAdvisory> for SecurityAdvisoryUpdatedSecurityAdvisory {
31717	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisory) -> Self {
31718		value.clone()
31719	}
31720}
31721#[derive(Clone, Debug, Deserialize, Serialize)]
31722#[serde(deny_unknown_fields)]
31723pub struct SecurityAdvisoryUpdatedSecurityAdvisoryCvss {
31724	pub score:         f64,
31725	pub vector_string: Option<String>,
31726}
31727impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryCvss>
31728	for SecurityAdvisoryUpdatedSecurityAdvisoryCvss
31729{
31730	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisoryCvss) -> Self {
31731		value.clone()
31732	}
31733}
31734#[derive(Clone, Debug, Deserialize, Serialize)]
31735#[serde(deny_unknown_fields)]
31736pub struct SecurityAdvisoryUpdatedSecurityAdvisoryCwesItem {
31737	pub cwe_id: String,
31738	pub name:   String,
31739}
31740impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryCwesItem>
31741	for SecurityAdvisoryUpdatedSecurityAdvisoryCwesItem
31742{
31743	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisoryCwesItem) -> Self {
31744		value.clone()
31745	}
31746}
31747#[derive(Clone, Debug, Deserialize, Serialize)]
31748#[serde(deny_unknown_fields)]
31749pub struct SecurityAdvisoryUpdatedSecurityAdvisoryIdentifiersItem {
31750	#[serde(rename = "type")]
31751	pub type_: String,
31752	pub value: String,
31753}
31754impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryIdentifiersItem>
31755	for SecurityAdvisoryUpdatedSecurityAdvisoryIdentifiersItem
31756{
31757	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisoryIdentifiersItem) -> Self {
31758		value.clone()
31759	}
31760}
31761#[derive(Clone, Debug, Deserialize, Serialize)]
31762#[serde(deny_unknown_fields)]
31763pub struct SecurityAdvisoryUpdatedSecurityAdvisoryReferencesItem {
31764	pub url: String,
31765}
31766impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryReferencesItem>
31767	for SecurityAdvisoryUpdatedSecurityAdvisoryReferencesItem
31768{
31769	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisoryReferencesItem) -> Self {
31770		value.clone()
31771	}
31772}
31773#[derive(Clone, Debug, Deserialize, Serialize)]
31774#[serde(deny_unknown_fields)]
31775pub struct SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItem {
31776	pub first_patched_version:
31777		Option<SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>,
31778	pub package:                  SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemPackage,
31779	pub severity:                 String,
31780	pub vulnerable_version_range: String,
31781}
31782impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItem>
31783	for SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItem
31784{
31785	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItem) -> Self {
31786		value.clone()
31787	}
31788}
31789#[derive(Clone, Debug, Deserialize, Serialize)]
31790#[serde(deny_unknown_fields)]
31791pub struct SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion {
31792	pub identifier: String,
31793}
31794impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>
31795	for SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion
31796{
31797	fn from(
31798		value: &SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion,
31799	) -> Self {
31800		value.clone()
31801	}
31802}
31803#[derive(Clone, Debug, Deserialize, Serialize)]
31804#[serde(deny_unknown_fields)]
31805pub struct SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemPackage {
31806	pub ecosystem: String,
31807	pub name:      String,
31808}
31809impl From<&SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemPackage>
31810	for SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemPackage
31811{
31812	fn from(value: &SecurityAdvisoryUpdatedSecurityAdvisoryVulnerabilitiesItemPackage) -> Self {
31813		value.clone()
31814	}
31815}
31816#[derive(Clone, Debug, Deserialize, Serialize)]
31817#[serde(deny_unknown_fields)]
31818pub struct SecurityAdvisoryWithdrawn {
31819	pub action:            SecurityAdvisoryWithdrawnAction,
31820	pub security_advisory: SecurityAdvisoryWithdrawnSecurityAdvisory,
31821}
31822impl From<&SecurityAdvisoryWithdrawn> for SecurityAdvisoryWithdrawn {
31823	fn from(value: &SecurityAdvisoryWithdrawn) -> Self {
31824		value.clone()
31825	}
31826}
31827#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
31828pub enum SecurityAdvisoryWithdrawnAction {
31829	#[serde(rename = "withdrawn")]
31830	Withdrawn,
31831}
31832impl From<&SecurityAdvisoryWithdrawnAction> for SecurityAdvisoryWithdrawnAction {
31833	fn from(value: &SecurityAdvisoryWithdrawnAction) -> Self {
31834		value.clone()
31835	}
31836}
31837impl ToString for SecurityAdvisoryWithdrawnAction {
31838	fn to_string(&self) -> String {
31839		match *self {
31840			Self::Withdrawn => "withdrawn".to_string(),
31841		}
31842	}
31843}
31844impl std::str::FromStr for SecurityAdvisoryWithdrawnAction {
31845	type Err = &'static str;
31846
31847	fn from_str(value: &str) -> Result<Self, &'static str> {
31848		match value {
31849			"withdrawn" => Ok(Self::Withdrawn),
31850			_ => Err("invalid value"),
31851		}
31852	}
31853}
31854impl std::convert::TryFrom<&str> for SecurityAdvisoryWithdrawnAction {
31855	type Error = &'static str;
31856
31857	fn try_from(value: &str) -> Result<Self, &'static str> {
31858		value.parse()
31859	}
31860}
31861impl std::convert::TryFrom<&String> for SecurityAdvisoryWithdrawnAction {
31862	type Error = &'static str;
31863
31864	fn try_from(value: &String) -> Result<Self, &'static str> {
31865		value.parse()
31866	}
31867}
31868impl std::convert::TryFrom<String> for SecurityAdvisoryWithdrawnAction {
31869	type Error = &'static str;
31870
31871	fn try_from(value: String) -> Result<Self, &'static str> {
31872		value.parse()
31873	}
31874}
31875/// The details of the security advisory, including summary, description, and
31876/// severity.
31877#[derive(Clone, Debug, Deserialize, Serialize)]
31878#[serde(deny_unknown_fields)]
31879pub struct SecurityAdvisoryWithdrawnSecurityAdvisory {
31880	pub cve_id:          Option<String>,
31881	pub cvss:            SecurityAdvisoryWithdrawnSecurityAdvisoryCvss,
31882	pub cwes:            Vec<SecurityAdvisoryWithdrawnSecurityAdvisoryCwesItem>,
31883	pub description:     String,
31884	pub ghsa_id:         String,
31885	pub identifiers:     Vec<SecurityAdvisoryWithdrawnSecurityAdvisoryIdentifiersItem>,
31886	pub published_at:    chrono::DateTime<chrono::offset::Utc>,
31887	pub references:      Vec<SecurityAdvisoryWithdrawnSecurityAdvisoryReferencesItem>,
31888	pub severity:        String,
31889	pub summary:         String,
31890	pub updated_at:      chrono::DateTime<chrono::offset::Utc>,
31891	pub vulnerabilities: Vec<SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItem>,
31892	pub withdrawn_at:    chrono::DateTime<chrono::offset::Utc>,
31893}
31894impl From<&SecurityAdvisoryWithdrawnSecurityAdvisory>
31895	for SecurityAdvisoryWithdrawnSecurityAdvisory
31896{
31897	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisory) -> Self {
31898		value.clone()
31899	}
31900}
31901#[derive(Clone, Debug, Deserialize, Serialize)]
31902#[serde(deny_unknown_fields)]
31903pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryCvss {
31904	pub score:         f64,
31905	pub vector_string: Option<String>,
31906}
31907impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryCvss>
31908	for SecurityAdvisoryWithdrawnSecurityAdvisoryCvss
31909{
31910	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisoryCvss) -> Self {
31911		value.clone()
31912	}
31913}
31914#[derive(Clone, Debug, Deserialize, Serialize)]
31915#[serde(deny_unknown_fields)]
31916pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryCwesItem {
31917	pub cwe_id: String,
31918	pub name:   String,
31919}
31920impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryCwesItem>
31921	for SecurityAdvisoryWithdrawnSecurityAdvisoryCwesItem
31922{
31923	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisoryCwesItem) -> Self {
31924		value.clone()
31925	}
31926}
31927#[derive(Clone, Debug, Deserialize, Serialize)]
31928#[serde(deny_unknown_fields)]
31929pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryIdentifiersItem {
31930	#[serde(rename = "type")]
31931	pub type_: String,
31932	pub value: String,
31933}
31934impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryIdentifiersItem>
31935	for SecurityAdvisoryWithdrawnSecurityAdvisoryIdentifiersItem
31936{
31937	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisoryIdentifiersItem) -> Self {
31938		value.clone()
31939	}
31940}
31941#[derive(Clone, Debug, Deserialize, Serialize)]
31942#[serde(deny_unknown_fields)]
31943pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryReferencesItem {
31944	pub url: String,
31945}
31946impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryReferencesItem>
31947	for SecurityAdvisoryWithdrawnSecurityAdvisoryReferencesItem
31948{
31949	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisoryReferencesItem) -> Self {
31950		value.clone()
31951	}
31952}
31953#[derive(Clone, Debug, Deserialize, Serialize)]
31954#[serde(deny_unknown_fields)]
31955pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItem {
31956	pub first_patched_version:
31957		Option<SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>,
31958	pub package: SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemPackage,
31959	pub severity:                 String,
31960	pub vulnerable_version_range: String,
31961}
31962impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItem>
31963	for SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItem
31964{
31965	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItem) -> Self {
31966		value.clone()
31967	}
31968}
31969#[derive(Clone, Debug, Deserialize, Serialize)]
31970#[serde(deny_unknown_fields)]
31971pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion {
31972	pub identifier: String,
31973}
31974impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion>
31975	for SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion
31976{
31977	fn from(
31978		value: &SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemFirstPatchedVersion,
31979	) -> Self {
31980		value.clone()
31981	}
31982}
31983#[derive(Clone, Debug, Deserialize, Serialize)]
31984#[serde(deny_unknown_fields)]
31985pub struct SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemPackage {
31986	pub ecosystem: String,
31987	pub name:      String,
31988}
31989impl From<&SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemPackage>
31990	for SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemPackage
31991{
31992	fn from(value: &SecurityAdvisoryWithdrawnSecurityAdvisoryVulnerabilitiesItemPackage) -> Self {
31993		value.clone()
31994	}
31995}
31996#[derive(Clone, Debug, Deserialize, Serialize)]
31997#[serde(deny_unknown_fields)]
31998pub struct SimplePullRequest {
31999	pub active_lock_reason:  Option<SimplePullRequestActiveLockReason>,
32000	pub assignee:            Option<User>,
32001	pub assignees:           Vec<User>,
32002	pub author_association:  AuthorAssociation,
32003	pub auto_merge:          Option<AutoMerge>,
32004	pub base:                SimplePullRequestBase,
32005	pub body:                Option<String>,
32006	pub closed_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
32007	pub comments_url:        String,
32008	pub commits_url:         String,
32009	pub created_at:          chrono::DateTime<chrono::offset::Utc>,
32010	pub diff_url:            String,
32011	pub draft:               bool,
32012	pub head:                SimplePullRequestHead,
32013	pub html_url:            String,
32014	pub id:                  i64,
32015	pub issue_url:           String,
32016	pub labels:              Vec<Label>,
32017	#[serde(rename = "_links")]
32018	pub links:               SimplePullRequestLinks,
32019	pub locked:              bool,
32020	pub merge_commit_sha:    Option<String>,
32021	pub merged_at:           Option<chrono::DateTime<chrono::offset::Utc>>,
32022	pub milestone:           Option<Milestone>,
32023	pub node_id:             String,
32024	pub number:              i64,
32025	pub patch_url:           String,
32026	pub requested_reviewers: Vec<SimplePullRequestRequestedReviewersItem>,
32027	pub requested_teams:     Vec<Team>,
32028	pub review_comment_url:  String,
32029	pub review_comments_url: String,
32030	pub state:               SimplePullRequestState,
32031	pub statuses_url:        String,
32032	pub title:               String,
32033	pub updated_at:          chrono::DateTime<chrono::offset::Utc>,
32034	pub url:                 String,
32035	pub user:                User,
32036}
32037impl From<&SimplePullRequest> for SimplePullRequest {
32038	fn from(value: &SimplePullRequest) -> Self {
32039		value.clone()
32040	}
32041}
32042#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32043pub enum SimplePullRequestActiveLockReason {
32044	#[serde(rename = "resolved")]
32045	Resolved,
32046	#[serde(rename = "off-topic")]
32047	OffTopic,
32048	#[serde(rename = "too heated")]
32049	TooHeated,
32050	#[serde(rename = "spam")]
32051	Spam,
32052}
32053impl From<&SimplePullRequestActiveLockReason> for SimplePullRequestActiveLockReason {
32054	fn from(value: &SimplePullRequestActiveLockReason) -> Self {
32055		value.clone()
32056	}
32057}
32058impl ToString for SimplePullRequestActiveLockReason {
32059	fn to_string(&self) -> String {
32060		match *self {
32061			Self::Resolved => "resolved".to_string(),
32062			Self::OffTopic => "off-topic".to_string(),
32063			Self::TooHeated => "too heated".to_string(),
32064			Self::Spam => "spam".to_string(),
32065		}
32066	}
32067}
32068impl std::str::FromStr for SimplePullRequestActiveLockReason {
32069	type Err = &'static str;
32070
32071	fn from_str(value: &str) -> Result<Self, &'static str> {
32072		match value {
32073			"resolved" => Ok(Self::Resolved),
32074			"off-topic" => Ok(Self::OffTopic),
32075			"too heated" => Ok(Self::TooHeated),
32076			"spam" => Ok(Self::Spam),
32077			_ => Err("invalid value"),
32078		}
32079	}
32080}
32081impl std::convert::TryFrom<&str> for SimplePullRequestActiveLockReason {
32082	type Error = &'static str;
32083
32084	fn try_from(value: &str) -> Result<Self, &'static str> {
32085		value.parse()
32086	}
32087}
32088impl std::convert::TryFrom<&String> for SimplePullRequestActiveLockReason {
32089	type Error = &'static str;
32090
32091	fn try_from(value: &String) -> Result<Self, &'static str> {
32092		value.parse()
32093	}
32094}
32095impl std::convert::TryFrom<String> for SimplePullRequestActiveLockReason {
32096	type Error = &'static str;
32097
32098	fn try_from(value: String) -> Result<Self, &'static str> {
32099		value.parse()
32100	}
32101}
32102#[derive(Clone, Debug, Deserialize, Serialize)]
32103#[serde(deny_unknown_fields)]
32104pub struct SimplePullRequestBase {
32105	pub label: String,
32106	#[serde(rename = "ref")]
32107	pub ref_:  String,
32108	pub repo:  Repository,
32109	pub sha:   String,
32110	pub user:  User,
32111}
32112impl From<&SimplePullRequestBase> for SimplePullRequestBase {
32113	fn from(value: &SimplePullRequestBase) -> Self {
32114		value.clone()
32115	}
32116}
32117#[derive(Clone, Debug, Deserialize, Serialize)]
32118#[serde(deny_unknown_fields)]
32119pub struct SimplePullRequestHead {
32120	pub label: String,
32121	#[serde(rename = "ref")]
32122	pub ref_:  String,
32123	pub repo:  Repository,
32124	pub sha:   String,
32125	pub user:  User,
32126}
32127impl From<&SimplePullRequestHead> for SimplePullRequestHead {
32128	fn from(value: &SimplePullRequestHead) -> Self {
32129		value.clone()
32130	}
32131}
32132#[derive(Clone, Debug, Deserialize, Serialize)]
32133#[serde(deny_unknown_fields)]
32134pub struct SimplePullRequestLinks {
32135	pub comments:        Link,
32136	pub commits:         Link,
32137	pub html:            Link,
32138	pub issue:           Link,
32139	pub review_comment:  Link,
32140	pub review_comments: Link,
32141	#[serde(rename = "self")]
32142	pub self_:           Link,
32143	pub statuses:        Link,
32144}
32145impl From<&SimplePullRequestLinks> for SimplePullRequestLinks {
32146	fn from(value: &SimplePullRequestLinks) -> Self {
32147		value.clone()
32148	}
32149}
32150#[derive(Clone, Debug, Deserialize, Serialize)]
32151#[serde(untagged)]
32152pub enum SimplePullRequestRequestedReviewersItem {
32153	User(User),
32154	Team(Team),
32155}
32156impl From<&SimplePullRequestRequestedReviewersItem> for SimplePullRequestRequestedReviewersItem {
32157	fn from(value: &SimplePullRequestRequestedReviewersItem) -> Self {
32158		value.clone()
32159	}
32160}
32161impl From<User> for SimplePullRequestRequestedReviewersItem {
32162	fn from(value: User) -> Self {
32163		Self::User(value)
32164	}
32165}
32166impl From<Team> for SimplePullRequestRequestedReviewersItem {
32167	fn from(value: Team) -> Self {
32168		Self::Team(value)
32169	}
32170}
32171#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32172pub enum SimplePullRequestState {
32173	#[serde(rename = "open")]
32174	Open,
32175	#[serde(rename = "closed")]
32176	Closed,
32177}
32178impl From<&SimplePullRequestState> for SimplePullRequestState {
32179	fn from(value: &SimplePullRequestState) -> Self {
32180		value.clone()
32181	}
32182}
32183impl ToString for SimplePullRequestState {
32184	fn to_string(&self) -> String {
32185		match *self {
32186			Self::Open => "open".to_string(),
32187			Self::Closed => "closed".to_string(),
32188		}
32189	}
32190}
32191impl std::str::FromStr for SimplePullRequestState {
32192	type Err = &'static str;
32193
32194	fn from_str(value: &str) -> Result<Self, &'static str> {
32195		match value {
32196			"open" => Ok(Self::Open),
32197			"closed" => Ok(Self::Closed),
32198			_ => Err("invalid value"),
32199		}
32200	}
32201}
32202impl std::convert::TryFrom<&str> for SimplePullRequestState {
32203	type Error = &'static str;
32204
32205	fn try_from(value: &str) -> Result<Self, &'static str> {
32206		value.parse()
32207	}
32208}
32209impl std::convert::TryFrom<&String> for SimplePullRequestState {
32210	type Error = &'static str;
32211
32212	fn try_from(value: &String) -> Result<Self, &'static str> {
32213		value.parse()
32214	}
32215}
32216impl std::convert::TryFrom<String> for SimplePullRequestState {
32217	type Error = &'static str;
32218
32219	fn try_from(value: String) -> Result<Self, &'static str> {
32220		value.parse()
32221	}
32222}
32223#[derive(Clone, Debug, Deserialize, Serialize)]
32224#[serde(deny_unknown_fields)]
32225pub struct SponsorshipCancelled {
32226	pub action:      SponsorshipCancelledAction,
32227	pub sender:      User,
32228	pub sponsorship: SponsorshipCancelledSponsorship,
32229}
32230impl From<&SponsorshipCancelled> for SponsorshipCancelled {
32231	fn from(value: &SponsorshipCancelled) -> Self {
32232		value.clone()
32233	}
32234}
32235#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32236pub enum SponsorshipCancelledAction {
32237	#[serde(rename = "cancelled")]
32238	Cancelled,
32239}
32240impl From<&SponsorshipCancelledAction> for SponsorshipCancelledAction {
32241	fn from(value: &SponsorshipCancelledAction) -> Self {
32242		value.clone()
32243	}
32244}
32245impl ToString for SponsorshipCancelledAction {
32246	fn to_string(&self) -> String {
32247		match *self {
32248			Self::Cancelled => "cancelled".to_string(),
32249		}
32250	}
32251}
32252impl std::str::FromStr for SponsorshipCancelledAction {
32253	type Err = &'static str;
32254
32255	fn from_str(value: &str) -> Result<Self, &'static str> {
32256		match value {
32257			"cancelled" => Ok(Self::Cancelled),
32258			_ => Err("invalid value"),
32259		}
32260	}
32261}
32262impl std::convert::TryFrom<&str> for SponsorshipCancelledAction {
32263	type Error = &'static str;
32264
32265	fn try_from(value: &str) -> Result<Self, &'static str> {
32266		value.parse()
32267	}
32268}
32269impl std::convert::TryFrom<&String> for SponsorshipCancelledAction {
32270	type Error = &'static str;
32271
32272	fn try_from(value: &String) -> Result<Self, &'static str> {
32273		value.parse()
32274	}
32275}
32276impl std::convert::TryFrom<String> for SponsorshipCancelledAction {
32277	type Error = &'static str;
32278
32279	fn try_from(value: String) -> Result<Self, &'static str> {
32280		value.parse()
32281	}
32282}
32283#[derive(Clone, Debug, Deserialize, Serialize)]
32284#[serde(deny_unknown_fields)]
32285pub struct SponsorshipCancelledSponsorship {
32286	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
32287	pub node_id:       String,
32288	pub privacy_level: String,
32289	pub sponsor:       User,
32290	pub sponsorable:   User,
32291	pub tier:          SponsorshipTier,
32292}
32293impl From<&SponsorshipCancelledSponsorship> for SponsorshipCancelledSponsorship {
32294	fn from(value: &SponsorshipCancelledSponsorship) -> Self {
32295		value.clone()
32296	}
32297}
32298#[derive(Clone, Debug, Deserialize, Serialize)]
32299#[serde(deny_unknown_fields)]
32300pub struct SponsorshipCreated {
32301	pub action:      SponsorshipCreatedAction,
32302	pub sender:      User,
32303	pub sponsorship: SponsorshipCreatedSponsorship,
32304}
32305impl From<&SponsorshipCreated> for SponsorshipCreated {
32306	fn from(value: &SponsorshipCreated) -> Self {
32307		value.clone()
32308	}
32309}
32310#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32311pub enum SponsorshipCreatedAction {
32312	#[serde(rename = "created")]
32313	Created,
32314}
32315impl From<&SponsorshipCreatedAction> for SponsorshipCreatedAction {
32316	fn from(value: &SponsorshipCreatedAction) -> Self {
32317		value.clone()
32318	}
32319}
32320impl ToString for SponsorshipCreatedAction {
32321	fn to_string(&self) -> String {
32322		match *self {
32323			Self::Created => "created".to_string(),
32324		}
32325	}
32326}
32327impl std::str::FromStr for SponsorshipCreatedAction {
32328	type Err = &'static str;
32329
32330	fn from_str(value: &str) -> Result<Self, &'static str> {
32331		match value {
32332			"created" => Ok(Self::Created),
32333			_ => Err("invalid value"),
32334		}
32335	}
32336}
32337impl std::convert::TryFrom<&str> for SponsorshipCreatedAction {
32338	type Error = &'static str;
32339
32340	fn try_from(value: &str) -> Result<Self, &'static str> {
32341		value.parse()
32342	}
32343}
32344impl std::convert::TryFrom<&String> for SponsorshipCreatedAction {
32345	type Error = &'static str;
32346
32347	fn try_from(value: &String) -> Result<Self, &'static str> {
32348		value.parse()
32349	}
32350}
32351impl std::convert::TryFrom<String> for SponsorshipCreatedAction {
32352	type Error = &'static str;
32353
32354	fn try_from(value: String) -> Result<Self, &'static str> {
32355		value.parse()
32356	}
32357}
32358#[derive(Clone, Debug, Deserialize, Serialize)]
32359#[serde(deny_unknown_fields)]
32360pub struct SponsorshipCreatedSponsorship {
32361	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
32362	pub node_id:       String,
32363	pub privacy_level: String,
32364	pub sponsor:       User,
32365	pub sponsorable:   User,
32366	pub tier:          SponsorshipTier,
32367}
32368impl From<&SponsorshipCreatedSponsorship> for SponsorshipCreatedSponsorship {
32369	fn from(value: &SponsorshipCreatedSponsorship) -> Self {
32370		value.clone()
32371	}
32372}
32373#[derive(Clone, Debug, Deserialize, Serialize)]
32374#[serde(deny_unknown_fields)]
32375pub struct SponsorshipEdited {
32376	pub action:      SponsorshipEditedAction,
32377	pub changes:     SponsorshipEditedChanges,
32378	pub sender:      User,
32379	pub sponsorship: SponsorshipEditedSponsorship,
32380}
32381impl From<&SponsorshipEdited> for SponsorshipEdited {
32382	fn from(value: &SponsorshipEdited) -> Self {
32383		value.clone()
32384	}
32385}
32386#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32387pub enum SponsorshipEditedAction {
32388	#[serde(rename = "edited")]
32389	Edited,
32390}
32391impl From<&SponsorshipEditedAction> for SponsorshipEditedAction {
32392	fn from(value: &SponsorshipEditedAction) -> Self {
32393		value.clone()
32394	}
32395}
32396impl ToString for SponsorshipEditedAction {
32397	fn to_string(&self) -> String {
32398		match *self {
32399			Self::Edited => "edited".to_string(),
32400		}
32401	}
32402}
32403impl std::str::FromStr for SponsorshipEditedAction {
32404	type Err = &'static str;
32405
32406	fn from_str(value: &str) -> Result<Self, &'static str> {
32407		match value {
32408			"edited" => Ok(Self::Edited),
32409			_ => Err("invalid value"),
32410		}
32411	}
32412}
32413impl std::convert::TryFrom<&str> for SponsorshipEditedAction {
32414	type Error = &'static str;
32415
32416	fn try_from(value: &str) -> Result<Self, &'static str> {
32417		value.parse()
32418	}
32419}
32420impl std::convert::TryFrom<&String> for SponsorshipEditedAction {
32421	type Error = &'static str;
32422
32423	fn try_from(value: &String) -> Result<Self, &'static str> {
32424		value.parse()
32425	}
32426}
32427impl std::convert::TryFrom<String> for SponsorshipEditedAction {
32428	type Error = &'static str;
32429
32430	fn try_from(value: String) -> Result<Self, &'static str> {
32431		value.parse()
32432	}
32433}
32434#[derive(Clone, Debug, Deserialize, Serialize)]
32435#[serde(deny_unknown_fields)]
32436pub struct SponsorshipEditedChanges {
32437	#[serde(default, skip_serializing_if = "Option::is_none")]
32438	pub privacy_level: Option<SponsorshipEditedChangesPrivacyLevel>,
32439}
32440impl From<&SponsorshipEditedChanges> for SponsorshipEditedChanges {
32441	fn from(value: &SponsorshipEditedChanges) -> Self {
32442		value.clone()
32443	}
32444}
32445#[derive(Clone, Debug, Deserialize, Serialize)]
32446#[serde(deny_unknown_fields)]
32447pub struct SponsorshipEditedChangesPrivacyLevel {
32448	/// The `edited` event types include the details about the change when
32449	/// someone edits a sponsorship to change the privacy.
32450	pub from: String,
32451}
32452impl From<&SponsorshipEditedChangesPrivacyLevel> for SponsorshipEditedChangesPrivacyLevel {
32453	fn from(value: &SponsorshipEditedChangesPrivacyLevel) -> Self {
32454		value.clone()
32455	}
32456}
32457#[derive(Clone, Debug, Deserialize, Serialize)]
32458#[serde(deny_unknown_fields)]
32459pub struct SponsorshipEditedSponsorship {
32460	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
32461	pub node_id:       String,
32462	pub privacy_level: String,
32463	pub sponsor:       User,
32464	pub sponsorable:   User,
32465	pub tier:          SponsorshipTier,
32466}
32467impl From<&SponsorshipEditedSponsorship> for SponsorshipEditedSponsorship {
32468	fn from(value: &SponsorshipEditedSponsorship) -> Self {
32469		value.clone()
32470	}
32471}
32472#[derive(Clone, Debug, Deserialize, Serialize)]
32473#[serde(untagged)]
32474pub enum SponsorshipEvent {
32475	Cancelled(SponsorshipCancelled),
32476	Created(SponsorshipCreated),
32477	Edited(SponsorshipEdited),
32478	PendingCancellation(SponsorshipPendingCancellation),
32479	PendingTierChange(SponsorshipPendingTierChange),
32480	TierChanged(SponsorshipTierChanged),
32481}
32482impl From<&SponsorshipEvent> for SponsorshipEvent {
32483	fn from(value: &SponsorshipEvent) -> Self {
32484		value.clone()
32485	}
32486}
32487impl From<SponsorshipCancelled> for SponsorshipEvent {
32488	fn from(value: SponsorshipCancelled) -> Self {
32489		Self::Cancelled(value)
32490	}
32491}
32492impl From<SponsorshipCreated> for SponsorshipEvent {
32493	fn from(value: SponsorshipCreated) -> Self {
32494		Self::Created(value)
32495	}
32496}
32497impl From<SponsorshipEdited> for SponsorshipEvent {
32498	fn from(value: SponsorshipEdited) -> Self {
32499		Self::Edited(value)
32500	}
32501}
32502impl From<SponsorshipPendingCancellation> for SponsorshipEvent {
32503	fn from(value: SponsorshipPendingCancellation) -> Self {
32504		Self::PendingCancellation(value)
32505	}
32506}
32507impl From<SponsorshipPendingTierChange> for SponsorshipEvent {
32508	fn from(value: SponsorshipPendingTierChange) -> Self {
32509		Self::PendingTierChange(value)
32510	}
32511}
32512impl From<SponsorshipTierChanged> for SponsorshipEvent {
32513	fn from(value: SponsorshipTierChanged) -> Self {
32514		Self::TierChanged(value)
32515	}
32516}
32517#[derive(Clone, Debug, Deserialize, Serialize)]
32518#[serde(deny_unknown_fields)]
32519pub struct SponsorshipPendingCancellation {
32520	pub action:         SponsorshipPendingCancellationAction,
32521	/// The `pending_cancellation` and `pending_tier_change` event types will
32522	/// include the date the cancellation or tier change will take effect.
32523	#[serde(default, skip_serializing_if = "Option::is_none")]
32524	pub effective_date: Option<String>,
32525	pub sender:         User,
32526	pub sponsorship:    SponsorshipPendingCancellationSponsorship,
32527}
32528impl From<&SponsorshipPendingCancellation> for SponsorshipPendingCancellation {
32529	fn from(value: &SponsorshipPendingCancellation) -> Self {
32530		value.clone()
32531	}
32532}
32533#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32534pub enum SponsorshipPendingCancellationAction {
32535	#[serde(rename = "pending_cancellation")]
32536	PendingCancellation,
32537}
32538impl From<&SponsorshipPendingCancellationAction> for SponsorshipPendingCancellationAction {
32539	fn from(value: &SponsorshipPendingCancellationAction) -> Self {
32540		value.clone()
32541	}
32542}
32543impl ToString for SponsorshipPendingCancellationAction {
32544	fn to_string(&self) -> String {
32545		match *self {
32546			Self::PendingCancellation => "pending_cancellation".to_string(),
32547		}
32548	}
32549}
32550impl std::str::FromStr for SponsorshipPendingCancellationAction {
32551	type Err = &'static str;
32552
32553	fn from_str(value: &str) -> Result<Self, &'static str> {
32554		match value {
32555			"pending_cancellation" => Ok(Self::PendingCancellation),
32556			_ => Err("invalid value"),
32557		}
32558	}
32559}
32560impl std::convert::TryFrom<&str> for SponsorshipPendingCancellationAction {
32561	type Error = &'static str;
32562
32563	fn try_from(value: &str) -> Result<Self, &'static str> {
32564		value.parse()
32565	}
32566}
32567impl std::convert::TryFrom<&String> for SponsorshipPendingCancellationAction {
32568	type Error = &'static str;
32569
32570	fn try_from(value: &String) -> Result<Self, &'static str> {
32571		value.parse()
32572	}
32573}
32574impl std::convert::TryFrom<String> for SponsorshipPendingCancellationAction {
32575	type Error = &'static str;
32576
32577	fn try_from(value: String) -> Result<Self, &'static str> {
32578		value.parse()
32579	}
32580}
32581#[derive(Clone, Debug, Deserialize, Serialize)]
32582#[serde(deny_unknown_fields)]
32583pub struct SponsorshipPendingCancellationSponsorship {
32584	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
32585	pub node_id:       String,
32586	pub privacy_level: String,
32587	pub sponsor:       User,
32588	pub sponsorable:   User,
32589	pub tier:          SponsorshipTier,
32590}
32591impl From<&SponsorshipPendingCancellationSponsorship>
32592	for SponsorshipPendingCancellationSponsorship
32593{
32594	fn from(value: &SponsorshipPendingCancellationSponsorship) -> Self {
32595		value.clone()
32596	}
32597}
32598#[derive(Clone, Debug, Deserialize, Serialize)]
32599#[serde(deny_unknown_fields)]
32600pub struct SponsorshipPendingTierChange {
32601	pub action:         SponsorshipPendingTierChangeAction,
32602	pub changes:        SponsorshipPendingTierChangeChanges,
32603	/// The `pending_cancellation` and `pending_tier_change` event types will
32604	/// include the date the cancellation or tier change will take effect.
32605	#[serde(default, skip_serializing_if = "Option::is_none")]
32606	pub effective_date: Option<String>,
32607	pub sender:         User,
32608	pub sponsorship:    SponsorshipPendingTierChangeSponsorship,
32609}
32610impl From<&SponsorshipPendingTierChange> for SponsorshipPendingTierChange {
32611	fn from(value: &SponsorshipPendingTierChange) -> Self {
32612		value.clone()
32613	}
32614}
32615#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32616pub enum SponsorshipPendingTierChangeAction {
32617	#[serde(rename = "pending_tier_change")]
32618	PendingTierChange,
32619}
32620impl From<&SponsorshipPendingTierChangeAction> for SponsorshipPendingTierChangeAction {
32621	fn from(value: &SponsorshipPendingTierChangeAction) -> Self {
32622		value.clone()
32623	}
32624}
32625impl ToString for SponsorshipPendingTierChangeAction {
32626	fn to_string(&self) -> String {
32627		match *self {
32628			Self::PendingTierChange => "pending_tier_change".to_string(),
32629		}
32630	}
32631}
32632impl std::str::FromStr for SponsorshipPendingTierChangeAction {
32633	type Err = &'static str;
32634
32635	fn from_str(value: &str) -> Result<Self, &'static str> {
32636		match value {
32637			"pending_tier_change" => Ok(Self::PendingTierChange),
32638			_ => Err("invalid value"),
32639		}
32640	}
32641}
32642impl std::convert::TryFrom<&str> for SponsorshipPendingTierChangeAction {
32643	type Error = &'static str;
32644
32645	fn try_from(value: &str) -> Result<Self, &'static str> {
32646		value.parse()
32647	}
32648}
32649impl std::convert::TryFrom<&String> for SponsorshipPendingTierChangeAction {
32650	type Error = &'static str;
32651
32652	fn try_from(value: &String) -> Result<Self, &'static str> {
32653		value.parse()
32654	}
32655}
32656impl std::convert::TryFrom<String> for SponsorshipPendingTierChangeAction {
32657	type Error = &'static str;
32658
32659	fn try_from(value: String) -> Result<Self, &'static str> {
32660		value.parse()
32661	}
32662}
32663#[derive(Clone, Debug, Deserialize, Serialize)]
32664#[serde(deny_unknown_fields)]
32665pub struct SponsorshipPendingTierChangeChanges {
32666	pub tier: SponsorshipPendingTierChangeChangesTier,
32667}
32668impl From<&SponsorshipPendingTierChangeChanges> for SponsorshipPendingTierChangeChanges {
32669	fn from(value: &SponsorshipPendingTierChangeChanges) -> Self {
32670		value.clone()
32671	}
32672}
32673#[derive(Clone, Debug, Deserialize, Serialize)]
32674#[serde(deny_unknown_fields)]
32675pub struct SponsorshipPendingTierChangeChangesTier {
32676	pub from: SponsorshipTier,
32677}
32678impl From<&SponsorshipPendingTierChangeChangesTier> for SponsorshipPendingTierChangeChangesTier {
32679	fn from(value: &SponsorshipPendingTierChangeChangesTier) -> Self {
32680		value.clone()
32681	}
32682}
32683#[derive(Clone, Debug, Deserialize, Serialize)]
32684#[serde(deny_unknown_fields)]
32685pub struct SponsorshipPendingTierChangeSponsorship {
32686	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
32687	pub node_id:       String,
32688	pub privacy_level: String,
32689	pub sponsor:       User,
32690	pub sponsorable:   User,
32691	pub tier:          SponsorshipTier,
32692}
32693impl From<&SponsorshipPendingTierChangeSponsorship> for SponsorshipPendingTierChangeSponsorship {
32694	fn from(value: &SponsorshipPendingTierChangeSponsorship) -> Self {
32695		value.clone()
32696	}
32697}
32698/// The `tier_changed` and `pending_tier_change` will include the original tier
32699/// before the change or pending change. For more information, see the pending
32700/// tier change payload.
32701#[derive(Clone, Debug, Deserialize, Serialize)]
32702#[serde(deny_unknown_fields)]
32703pub struct SponsorshipTier {
32704	pub created_at:               chrono::DateTime<chrono::offset::Utc>,
32705	pub description:              String,
32706	pub is_custom_ammount:        bool,
32707	pub is_one_time:              bool,
32708	pub monthly_price_in_cents:   i64,
32709	pub monthly_price_in_dollars: i64,
32710	pub name:                     String,
32711	pub node_id:                  String,
32712}
32713impl From<&SponsorshipTier> for SponsorshipTier {
32714	fn from(value: &SponsorshipTier) -> Self {
32715		value.clone()
32716	}
32717}
32718#[derive(Clone, Debug, Deserialize, Serialize)]
32719#[serde(deny_unknown_fields)]
32720pub struct SponsorshipTierChanged {
32721	pub action:      SponsorshipTierChangedAction,
32722	pub changes:     SponsorshipTierChangedChanges,
32723	pub sender:      User,
32724	pub sponsorship: SponsorshipTierChangedSponsorship,
32725}
32726impl From<&SponsorshipTierChanged> for SponsorshipTierChanged {
32727	fn from(value: &SponsorshipTierChanged) -> Self {
32728		value.clone()
32729	}
32730}
32731#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32732pub enum SponsorshipTierChangedAction {
32733	#[serde(rename = "tier_changed")]
32734	TierChanged,
32735}
32736impl From<&SponsorshipTierChangedAction> for SponsorshipTierChangedAction {
32737	fn from(value: &SponsorshipTierChangedAction) -> Self {
32738		value.clone()
32739	}
32740}
32741impl ToString for SponsorshipTierChangedAction {
32742	fn to_string(&self) -> String {
32743		match *self {
32744			Self::TierChanged => "tier_changed".to_string(),
32745		}
32746	}
32747}
32748impl std::str::FromStr for SponsorshipTierChangedAction {
32749	type Err = &'static str;
32750
32751	fn from_str(value: &str) -> Result<Self, &'static str> {
32752		match value {
32753			"tier_changed" => Ok(Self::TierChanged),
32754			_ => Err("invalid value"),
32755		}
32756	}
32757}
32758impl std::convert::TryFrom<&str> for SponsorshipTierChangedAction {
32759	type Error = &'static str;
32760
32761	fn try_from(value: &str) -> Result<Self, &'static str> {
32762		value.parse()
32763	}
32764}
32765impl std::convert::TryFrom<&String> for SponsorshipTierChangedAction {
32766	type Error = &'static str;
32767
32768	fn try_from(value: &String) -> Result<Self, &'static str> {
32769		value.parse()
32770	}
32771}
32772impl std::convert::TryFrom<String> for SponsorshipTierChangedAction {
32773	type Error = &'static str;
32774
32775	fn try_from(value: String) -> Result<Self, &'static str> {
32776		value.parse()
32777	}
32778}
32779#[derive(Clone, Debug, Deserialize, Serialize)]
32780#[serde(deny_unknown_fields)]
32781pub struct SponsorshipTierChangedChanges {
32782	pub tier: SponsorshipTierChangedChangesTier,
32783}
32784impl From<&SponsorshipTierChangedChanges> for SponsorshipTierChangedChanges {
32785	fn from(value: &SponsorshipTierChangedChanges) -> Self {
32786		value.clone()
32787	}
32788}
32789#[derive(Clone, Debug, Deserialize, Serialize)]
32790#[serde(deny_unknown_fields)]
32791pub struct SponsorshipTierChangedChangesTier {
32792	pub from: SponsorshipTier,
32793}
32794impl From<&SponsorshipTierChangedChangesTier> for SponsorshipTierChangedChangesTier {
32795	fn from(value: &SponsorshipTierChangedChangesTier) -> Self {
32796		value.clone()
32797	}
32798}
32799#[derive(Clone, Debug, Deserialize, Serialize)]
32800#[serde(deny_unknown_fields)]
32801pub struct SponsorshipTierChangedSponsorship {
32802	pub created_at:    chrono::DateTime<chrono::offset::Utc>,
32803	pub node_id:       String,
32804	pub privacy_level: String,
32805	pub sponsor:       User,
32806	pub sponsorable:   User,
32807	pub tier:          SponsorshipTier,
32808}
32809impl From<&SponsorshipTierChangedSponsorship> for SponsorshipTierChangedSponsorship {
32810	fn from(value: &SponsorshipTierChangedSponsorship) -> Self {
32811		value.clone()
32812	}
32813}
32814#[derive(Clone, Debug, Deserialize, Serialize)]
32815#[serde(deny_unknown_fields)]
32816pub struct StarCreated {
32817	pub action:       StarCreatedAction,
32818	#[serde(default, skip_serializing_if = "Option::is_none")]
32819	pub installation: Option<InstallationLite>,
32820	#[serde(default, skip_serializing_if = "Option::is_none")]
32821	pub organization: Option<Organization>,
32822	pub repository:   Repository,
32823	pub sender:       User,
32824	/// The time the star was created. This is a timestamp in ISO 8601 format:
32825	/// `YYYY-MM-DDTHH:MM:SSZ`. Will be `null` for the `deleted` action.
32826	pub starred_at:   chrono::DateTime<chrono::offset::Utc>,
32827}
32828impl From<&StarCreated> for StarCreated {
32829	fn from(value: &StarCreated) -> Self {
32830		value.clone()
32831	}
32832}
32833#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32834pub enum StarCreatedAction {
32835	#[serde(rename = "created")]
32836	Created,
32837}
32838impl From<&StarCreatedAction> for StarCreatedAction {
32839	fn from(value: &StarCreatedAction) -> Self {
32840		value.clone()
32841	}
32842}
32843impl ToString for StarCreatedAction {
32844	fn to_string(&self) -> String {
32845		match *self {
32846			Self::Created => "created".to_string(),
32847		}
32848	}
32849}
32850impl std::str::FromStr for StarCreatedAction {
32851	type Err = &'static str;
32852
32853	fn from_str(value: &str) -> Result<Self, &'static str> {
32854		match value {
32855			"created" => Ok(Self::Created),
32856			_ => Err("invalid value"),
32857		}
32858	}
32859}
32860impl std::convert::TryFrom<&str> for StarCreatedAction {
32861	type Error = &'static str;
32862
32863	fn try_from(value: &str) -> Result<Self, &'static str> {
32864		value.parse()
32865	}
32866}
32867impl std::convert::TryFrom<&String> for StarCreatedAction {
32868	type Error = &'static str;
32869
32870	fn try_from(value: &String) -> Result<Self, &'static str> {
32871		value.parse()
32872	}
32873}
32874impl std::convert::TryFrom<String> for StarCreatedAction {
32875	type Error = &'static str;
32876
32877	fn try_from(value: String) -> Result<Self, &'static str> {
32878		value.parse()
32879	}
32880}
32881#[derive(Clone, Debug, Deserialize, Serialize)]
32882#[serde(deny_unknown_fields)]
32883pub struct StarDeleted {
32884	pub action:       StarDeletedAction,
32885	#[serde(default, skip_serializing_if = "Option::is_none")]
32886	pub installation: Option<InstallationLite>,
32887	#[serde(default, skip_serializing_if = "Option::is_none")]
32888	pub organization: Option<Organization>,
32889	pub repository:   Repository,
32890	pub sender:       User,
32891	/// The time the star was created. This is a timestamp in ISO 8601 format:
32892	/// `YYYY-MM-DDTHH:MM:SSZ`. Will be `null` for the `deleted` action.
32893	pub starred_at:   (),
32894}
32895impl From<&StarDeleted> for StarDeleted {
32896	fn from(value: &StarDeleted) -> Self {
32897		value.clone()
32898	}
32899}
32900#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
32901pub enum StarDeletedAction {
32902	#[serde(rename = "deleted")]
32903	Deleted,
32904}
32905impl From<&StarDeletedAction> for StarDeletedAction {
32906	fn from(value: &StarDeletedAction) -> Self {
32907		value.clone()
32908	}
32909}
32910impl ToString for StarDeletedAction {
32911	fn to_string(&self) -> String {
32912		match *self {
32913			Self::Deleted => "deleted".to_string(),
32914		}
32915	}
32916}
32917impl std::str::FromStr for StarDeletedAction {
32918	type Err = &'static str;
32919
32920	fn from_str(value: &str) -> Result<Self, &'static str> {
32921		match value {
32922			"deleted" => Ok(Self::Deleted),
32923			_ => Err("invalid value"),
32924		}
32925	}
32926}
32927impl std::convert::TryFrom<&str> for StarDeletedAction {
32928	type Error = &'static str;
32929
32930	fn try_from(value: &str) -> Result<Self, &'static str> {
32931		value.parse()
32932	}
32933}
32934impl std::convert::TryFrom<&String> for StarDeletedAction {
32935	type Error = &'static str;
32936
32937	fn try_from(value: &String) -> Result<Self, &'static str> {
32938		value.parse()
32939	}
32940}
32941impl std::convert::TryFrom<String> for StarDeletedAction {
32942	type Error = &'static str;
32943
32944	fn try_from(value: String) -> Result<Self, &'static str> {
32945		value.parse()
32946	}
32947}
32948#[derive(Clone, Debug, Deserialize, Serialize)]
32949#[serde(untagged)]
32950pub enum StarEvent {
32951	Created(StarCreated),
32952	Deleted(StarDeleted),
32953}
32954impl From<&StarEvent> for StarEvent {
32955	fn from(value: &StarEvent) -> Self {
32956		value.clone()
32957	}
32958}
32959impl From<StarCreated> for StarEvent {
32960	fn from(value: StarCreated) -> Self {
32961		Self::Created(value)
32962	}
32963}
32964impl From<StarDeleted> for StarEvent {
32965	fn from(value: StarDeleted) -> Self {
32966		Self::Deleted(value)
32967	}
32968}
32969#[derive(Clone, Debug, Deserialize, Serialize)]
32970#[serde(deny_unknown_fields)]
32971pub struct StatusEvent {
32972	#[serde(default, skip_serializing_if = "Option::is_none")]
32973	pub avatar_url:   Option<String>,
32974	/// An array of branch objects containing the status' SHA. Each branch
32975	/// contains the given SHA, but the SHA may or may not be the head of the
32976	/// branch. The array includes a maximum of 10 branches.
32977	pub branches:     Vec<StatusEventBranchesItem>,
32978	pub commit:       StatusEventCommit,
32979	pub context:      String,
32980	pub created_at:   chrono::DateTime<chrono::offset::Utc>,
32981	/// The optional human-readable description added to the status.
32982	pub description:  Option<String>,
32983	/// The unique identifier of the status.
32984	pub id:           i64,
32985	#[serde(default, skip_serializing_if = "Option::is_none")]
32986	pub installation: Option<InstallationLite>,
32987	pub name:         String,
32988	#[serde(default, skip_serializing_if = "Option::is_none")]
32989	pub organization: Option<Organization>,
32990	pub repository:   Repository,
32991	pub sender:       User,
32992	/// The Commit SHA.
32993	pub sha:          String,
32994	/// The new state. Can be `pending`, `success`, `failure`, or `error`.
32995	pub state:        StatusEventState,
32996	/// The optional link added to the status.
32997	pub target_url:   Option<String>,
32998	pub updated_at:   chrono::DateTime<chrono::offset::Utc>,
32999}
33000impl From<&StatusEvent> for StatusEvent {
33001	fn from(value: &StatusEvent) -> Self {
33002		value.clone()
33003	}
33004}
33005#[derive(Clone, Debug, Deserialize, Serialize)]
33006#[serde(deny_unknown_fields)]
33007pub struct StatusEventBranchesItem {
33008	pub commit:    StatusEventBranchesItemCommit,
33009	pub name:      String,
33010	pub protected: bool,
33011}
33012impl From<&StatusEventBranchesItem> for StatusEventBranchesItem {
33013	fn from(value: &StatusEventBranchesItem) -> Self {
33014		value.clone()
33015	}
33016}
33017#[derive(Clone, Debug, Deserialize, Serialize)]
33018#[serde(deny_unknown_fields)]
33019pub struct StatusEventBranchesItemCommit {
33020	pub sha: String,
33021	pub url: String,
33022}
33023impl From<&StatusEventBranchesItemCommit> for StatusEventBranchesItemCommit {
33024	fn from(value: &StatusEventBranchesItemCommit) -> Self {
33025		value.clone()
33026	}
33027}
33028#[derive(Clone, Debug, Deserialize, Serialize)]
33029#[serde(deny_unknown_fields)]
33030pub struct StatusEventCommit {
33031	pub author:       Option<User>,
33032	pub comments_url: String,
33033	pub commit:       StatusEventCommitCommit,
33034	pub committer:    Option<User>,
33035	pub html_url:     String,
33036	pub node_id:      String,
33037	pub parents:      Vec<StatusEventCommitParentsItem>,
33038	pub sha:          String,
33039	pub url:          String,
33040}
33041impl From<&StatusEventCommit> for StatusEventCommit {
33042	fn from(value: &StatusEventCommit) -> Self {
33043		value.clone()
33044	}
33045}
33046#[derive(Clone, Debug, Deserialize, Serialize)]
33047#[serde(deny_unknown_fields)]
33048pub struct StatusEventCommitCommit {
33049	pub author:        Committer,
33050	pub comment_count: i64,
33051	pub committer:     Committer,
33052	pub message:       String,
33053	pub tree:          StatusEventCommitCommitTree,
33054	pub url:           String,
33055	pub verification:  StatusEventCommitCommitVerification,
33056}
33057impl From<&StatusEventCommitCommit> for StatusEventCommitCommit {
33058	fn from(value: &StatusEventCommitCommit) -> Self {
33059		value.clone()
33060	}
33061}
33062#[derive(Clone, Debug, Deserialize, Serialize)]
33063#[serde(deny_unknown_fields)]
33064pub struct StatusEventCommitCommitTree {
33065	pub sha: String,
33066	pub url: String,
33067}
33068impl From<&StatusEventCommitCommitTree> for StatusEventCommitCommitTree {
33069	fn from(value: &StatusEventCommitCommitTree) -> Self {
33070		value.clone()
33071	}
33072}
33073#[derive(Clone, Debug, Deserialize, Serialize)]
33074#[serde(deny_unknown_fields)]
33075pub struct StatusEventCommitCommitVerification {
33076	pub payload:   Option<String>,
33077	pub reason:    StatusEventCommitCommitVerificationReason,
33078	pub signature: Option<String>,
33079	pub verified:  bool,
33080}
33081impl From<&StatusEventCommitCommitVerification> for StatusEventCommitCommitVerification {
33082	fn from(value: &StatusEventCommitCommitVerification) -> Self {
33083		value.clone()
33084	}
33085}
33086#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33087pub enum StatusEventCommitCommitVerificationReason {
33088	#[serde(rename = "expired_key")]
33089	ExpiredKey,
33090	#[serde(rename = "not_signing_key")]
33091	NotSigningKey,
33092	#[serde(rename = "gpgverify_error")]
33093	GpgverifyError,
33094	#[serde(rename = "gpgverify_unavailable")]
33095	GpgverifyUnavailable,
33096	#[serde(rename = "unsigned")]
33097	Unsigned,
33098	#[serde(rename = "unknown_signature_type")]
33099	UnknownSignatureType,
33100	#[serde(rename = "no_user")]
33101	NoUser,
33102	#[serde(rename = "unverified_email")]
33103	UnverifiedEmail,
33104	#[serde(rename = "bad_email")]
33105	BadEmail,
33106	#[serde(rename = "unknown_key")]
33107	UnknownKey,
33108	#[serde(rename = "malformed_signature")]
33109	MalformedSignature,
33110	#[serde(rename = "invalid")]
33111	Invalid,
33112	#[serde(rename = "valid")]
33113	Valid,
33114}
33115impl From<&StatusEventCommitCommitVerificationReason>
33116	for StatusEventCommitCommitVerificationReason
33117{
33118	fn from(value: &StatusEventCommitCommitVerificationReason) -> Self {
33119		value.clone()
33120	}
33121}
33122impl ToString for StatusEventCommitCommitVerificationReason {
33123	fn to_string(&self) -> String {
33124		match *self {
33125			Self::ExpiredKey => "expired_key".to_string(),
33126			Self::NotSigningKey => "not_signing_key".to_string(),
33127			Self::GpgverifyError => "gpgverify_error".to_string(),
33128			Self::GpgverifyUnavailable => "gpgverify_unavailable".to_string(),
33129			Self::Unsigned => "unsigned".to_string(),
33130			Self::UnknownSignatureType => "unknown_signature_type".to_string(),
33131			Self::NoUser => "no_user".to_string(),
33132			Self::UnverifiedEmail => "unverified_email".to_string(),
33133			Self::BadEmail => "bad_email".to_string(),
33134			Self::UnknownKey => "unknown_key".to_string(),
33135			Self::MalformedSignature => "malformed_signature".to_string(),
33136			Self::Invalid => "invalid".to_string(),
33137			Self::Valid => "valid".to_string(),
33138		}
33139	}
33140}
33141impl std::str::FromStr for StatusEventCommitCommitVerificationReason {
33142	type Err = &'static str;
33143
33144	fn from_str(value: &str) -> Result<Self, &'static str> {
33145		match value {
33146			"expired_key" => Ok(Self::ExpiredKey),
33147			"not_signing_key" => Ok(Self::NotSigningKey),
33148			"gpgverify_error" => Ok(Self::GpgverifyError),
33149			"gpgverify_unavailable" => Ok(Self::GpgverifyUnavailable),
33150			"unsigned" => Ok(Self::Unsigned),
33151			"unknown_signature_type" => Ok(Self::UnknownSignatureType),
33152			"no_user" => Ok(Self::NoUser),
33153			"unverified_email" => Ok(Self::UnverifiedEmail),
33154			"bad_email" => Ok(Self::BadEmail),
33155			"unknown_key" => Ok(Self::UnknownKey),
33156			"malformed_signature" => Ok(Self::MalformedSignature),
33157			"invalid" => Ok(Self::Invalid),
33158			"valid" => Ok(Self::Valid),
33159			_ => Err("invalid value"),
33160		}
33161	}
33162}
33163impl std::convert::TryFrom<&str> for StatusEventCommitCommitVerificationReason {
33164	type Error = &'static str;
33165
33166	fn try_from(value: &str) -> Result<Self, &'static str> {
33167		value.parse()
33168	}
33169}
33170impl std::convert::TryFrom<&String> for StatusEventCommitCommitVerificationReason {
33171	type Error = &'static str;
33172
33173	fn try_from(value: &String) -> Result<Self, &'static str> {
33174		value.parse()
33175	}
33176}
33177impl std::convert::TryFrom<String> for StatusEventCommitCommitVerificationReason {
33178	type Error = &'static str;
33179
33180	fn try_from(value: String) -> Result<Self, &'static str> {
33181		value.parse()
33182	}
33183}
33184#[derive(Clone, Debug, Deserialize, Serialize)]
33185#[serde(deny_unknown_fields)]
33186pub struct StatusEventCommitParentsItem {
33187	pub html_url: String,
33188	pub sha:      String,
33189	pub url:      String,
33190}
33191impl From<&StatusEventCommitParentsItem> for StatusEventCommitParentsItem {
33192	fn from(value: &StatusEventCommitParentsItem) -> Self {
33193		value.clone()
33194	}
33195}
33196/// The new state. Can be `pending`, `success`, `failure`, or `error`.
33197#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33198pub enum StatusEventState {
33199	#[serde(rename = "pending")]
33200	Pending,
33201	#[serde(rename = "success")]
33202	Success,
33203	#[serde(rename = "failure")]
33204	Failure,
33205	#[serde(rename = "error")]
33206	Error,
33207}
33208impl From<&StatusEventState> for StatusEventState {
33209	fn from(value: &StatusEventState) -> Self {
33210		value.clone()
33211	}
33212}
33213impl ToString for StatusEventState {
33214	fn to_string(&self) -> String {
33215		match *self {
33216			Self::Pending => "pending".to_string(),
33217			Self::Success => "success".to_string(),
33218			Self::Failure => "failure".to_string(),
33219			Self::Error => "error".to_string(),
33220		}
33221	}
33222}
33223impl std::str::FromStr for StatusEventState {
33224	type Err = &'static str;
33225
33226	fn from_str(value: &str) -> Result<Self, &'static str> {
33227		match value {
33228			"pending" => Ok(Self::Pending),
33229			"success" => Ok(Self::Success),
33230			"failure" => Ok(Self::Failure),
33231			"error" => Ok(Self::Error),
33232			_ => Err("invalid value"),
33233		}
33234	}
33235}
33236impl std::convert::TryFrom<&str> for StatusEventState {
33237	type Error = &'static str;
33238
33239	fn try_from(value: &str) -> Result<Self, &'static str> {
33240		value.parse()
33241	}
33242}
33243impl std::convert::TryFrom<&String> for StatusEventState {
33244	type Error = &'static str;
33245
33246	fn try_from(value: &String) -> Result<Self, &'static str> {
33247		value.parse()
33248	}
33249}
33250impl std::convert::TryFrom<String> for StatusEventState {
33251	type Error = &'static str;
33252
33253	fn try_from(value: String) -> Result<Self, &'static str> {
33254		value.parse()
33255	}
33256}
33257/// Groups of organization members that gives permissions on specified
33258/// repositories.
33259#[derive(Clone, Debug, Deserialize, Serialize)]
33260#[serde(deny_unknown_fields)]
33261pub struct Team {
33262	/// Description of the team
33263	pub description:      Option<String>,
33264	pub html_url:         String,
33265	/// Unique identifier of the team
33266	pub id:               i64,
33267	pub members_url:      String,
33268	/// Name of the team
33269	pub name:             String,
33270	pub node_id:          String,
33271	#[serde(default, skip_serializing_if = "Option::is_none")]
33272	pub parent:           Option<TeamParent>,
33273	/// Permission that the team will have for its repositories
33274	pub permission:       String,
33275	pub privacy:          TeamPrivacy,
33276	pub repositories_url: String,
33277	pub slug:             String,
33278	/// URL for the team
33279	pub url:              String,
33280}
33281impl From<&Team> for Team {
33282	fn from(value: &Team) -> Self {
33283		value.clone()
33284	}
33285}
33286#[derive(Clone, Debug, Deserialize, Serialize)]
33287#[serde(deny_unknown_fields)]
33288pub struct TeamAddEvent {
33289	#[serde(default, skip_serializing_if = "Option::is_none")]
33290	pub installation: Option<InstallationLite>,
33291	pub organization: Organization,
33292	pub repository:   Repository,
33293	pub sender:       User,
33294	pub team:         Team,
33295}
33296impl From<&TeamAddEvent> for TeamAddEvent {
33297	fn from(value: &TeamAddEvent) -> Self {
33298		value.clone()
33299	}
33300}
33301#[derive(Clone, Debug, Deserialize, Serialize)]
33302#[serde(deny_unknown_fields)]
33303pub struct TeamAddedToRepository {
33304	pub action:       TeamAddedToRepositoryAction,
33305	#[serde(default, skip_serializing_if = "Option::is_none")]
33306	pub installation: Option<InstallationLite>,
33307	pub organization: Organization,
33308	#[serde(default, skip_serializing_if = "Option::is_none")]
33309	pub repository:   Option<Repository>,
33310	pub sender:       User,
33311	pub team:         Team,
33312}
33313impl From<&TeamAddedToRepository> for TeamAddedToRepository {
33314	fn from(value: &TeamAddedToRepository) -> Self {
33315		value.clone()
33316	}
33317}
33318#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33319pub enum TeamAddedToRepositoryAction {
33320	#[serde(rename = "added_to_repository")]
33321	AddedToRepository,
33322}
33323impl From<&TeamAddedToRepositoryAction> for TeamAddedToRepositoryAction {
33324	fn from(value: &TeamAddedToRepositoryAction) -> Self {
33325		value.clone()
33326	}
33327}
33328impl ToString for TeamAddedToRepositoryAction {
33329	fn to_string(&self) -> String {
33330		match *self {
33331			Self::AddedToRepository => "added_to_repository".to_string(),
33332		}
33333	}
33334}
33335impl std::str::FromStr for TeamAddedToRepositoryAction {
33336	type Err = &'static str;
33337
33338	fn from_str(value: &str) -> Result<Self, &'static str> {
33339		match value {
33340			"added_to_repository" => Ok(Self::AddedToRepository),
33341			_ => Err("invalid value"),
33342		}
33343	}
33344}
33345impl std::convert::TryFrom<&str> for TeamAddedToRepositoryAction {
33346	type Error = &'static str;
33347
33348	fn try_from(value: &str) -> Result<Self, &'static str> {
33349		value.parse()
33350	}
33351}
33352impl std::convert::TryFrom<&String> for TeamAddedToRepositoryAction {
33353	type Error = &'static str;
33354
33355	fn try_from(value: &String) -> Result<Self, &'static str> {
33356		value.parse()
33357	}
33358}
33359impl std::convert::TryFrom<String> for TeamAddedToRepositoryAction {
33360	type Error = &'static str;
33361
33362	fn try_from(value: String) -> Result<Self, &'static str> {
33363		value.parse()
33364	}
33365}
33366#[derive(Clone, Debug, Deserialize, Serialize)]
33367#[serde(deny_unknown_fields)]
33368pub struct TeamCreated {
33369	pub action:       TeamCreatedAction,
33370	#[serde(default, skip_serializing_if = "Option::is_none")]
33371	pub installation: Option<InstallationLite>,
33372	pub organization: Organization,
33373	#[serde(default, skip_serializing_if = "Option::is_none")]
33374	pub repository:   Option<Repository>,
33375	pub sender:       User,
33376	pub team:         Team,
33377}
33378impl From<&TeamCreated> for TeamCreated {
33379	fn from(value: &TeamCreated) -> Self {
33380		value.clone()
33381	}
33382}
33383#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33384pub enum TeamCreatedAction {
33385	#[serde(rename = "created")]
33386	Created,
33387}
33388impl From<&TeamCreatedAction> for TeamCreatedAction {
33389	fn from(value: &TeamCreatedAction) -> Self {
33390		value.clone()
33391	}
33392}
33393impl ToString for TeamCreatedAction {
33394	fn to_string(&self) -> String {
33395		match *self {
33396			Self::Created => "created".to_string(),
33397		}
33398	}
33399}
33400impl std::str::FromStr for TeamCreatedAction {
33401	type Err = &'static str;
33402
33403	fn from_str(value: &str) -> Result<Self, &'static str> {
33404		match value {
33405			"created" => Ok(Self::Created),
33406			_ => Err("invalid value"),
33407		}
33408	}
33409}
33410impl std::convert::TryFrom<&str> for TeamCreatedAction {
33411	type Error = &'static str;
33412
33413	fn try_from(value: &str) -> Result<Self, &'static str> {
33414		value.parse()
33415	}
33416}
33417impl std::convert::TryFrom<&String> for TeamCreatedAction {
33418	type Error = &'static str;
33419
33420	fn try_from(value: &String) -> Result<Self, &'static str> {
33421		value.parse()
33422	}
33423}
33424impl std::convert::TryFrom<String> for TeamCreatedAction {
33425	type Error = &'static str;
33426
33427	fn try_from(value: String) -> Result<Self, &'static str> {
33428		value.parse()
33429	}
33430}
33431#[derive(Clone, Debug, Deserialize, Serialize)]
33432#[serde(deny_unknown_fields)]
33433pub struct TeamDeleted {
33434	pub action:       TeamDeletedAction,
33435	#[serde(default, skip_serializing_if = "Option::is_none")]
33436	pub installation: Option<InstallationLite>,
33437	pub organization: Organization,
33438	#[serde(default, skip_serializing_if = "Option::is_none")]
33439	pub repository:   Option<Repository>,
33440	pub sender:       User,
33441	pub team:         Team,
33442}
33443impl From<&TeamDeleted> for TeamDeleted {
33444	fn from(value: &TeamDeleted) -> Self {
33445		value.clone()
33446	}
33447}
33448#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33449pub enum TeamDeletedAction {
33450	#[serde(rename = "deleted")]
33451	Deleted,
33452}
33453impl From<&TeamDeletedAction> for TeamDeletedAction {
33454	fn from(value: &TeamDeletedAction) -> Self {
33455		value.clone()
33456	}
33457}
33458impl ToString for TeamDeletedAction {
33459	fn to_string(&self) -> String {
33460		match *self {
33461			Self::Deleted => "deleted".to_string(),
33462		}
33463	}
33464}
33465impl std::str::FromStr for TeamDeletedAction {
33466	type Err = &'static str;
33467
33468	fn from_str(value: &str) -> Result<Self, &'static str> {
33469		match value {
33470			"deleted" => Ok(Self::Deleted),
33471			_ => Err("invalid value"),
33472		}
33473	}
33474}
33475impl std::convert::TryFrom<&str> for TeamDeletedAction {
33476	type Error = &'static str;
33477
33478	fn try_from(value: &str) -> Result<Self, &'static str> {
33479		value.parse()
33480	}
33481}
33482impl std::convert::TryFrom<&String> for TeamDeletedAction {
33483	type Error = &'static str;
33484
33485	fn try_from(value: &String) -> Result<Self, &'static str> {
33486		value.parse()
33487	}
33488}
33489impl std::convert::TryFrom<String> for TeamDeletedAction {
33490	type Error = &'static str;
33491
33492	fn try_from(value: String) -> Result<Self, &'static str> {
33493		value.parse()
33494	}
33495}
33496#[derive(Clone, Debug, Deserialize, Serialize)]
33497#[serde(deny_unknown_fields)]
33498pub struct TeamEdited {
33499	pub action:       TeamEditedAction,
33500	pub changes:      TeamEditedChanges,
33501	#[serde(default, skip_serializing_if = "Option::is_none")]
33502	pub installation: Option<InstallationLite>,
33503	pub organization: Organization,
33504	#[serde(default, skip_serializing_if = "Option::is_none")]
33505	pub repository:   Option<Repository>,
33506	pub sender:       User,
33507	pub team:         Team,
33508}
33509impl From<&TeamEdited> for TeamEdited {
33510	fn from(value: &TeamEdited) -> Self {
33511		value.clone()
33512	}
33513}
33514#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33515pub enum TeamEditedAction {
33516	#[serde(rename = "edited")]
33517	Edited,
33518}
33519impl From<&TeamEditedAction> for TeamEditedAction {
33520	fn from(value: &TeamEditedAction) -> Self {
33521		value.clone()
33522	}
33523}
33524impl ToString for TeamEditedAction {
33525	fn to_string(&self) -> String {
33526		match *self {
33527			Self::Edited => "edited".to_string(),
33528		}
33529	}
33530}
33531impl std::str::FromStr for TeamEditedAction {
33532	type Err = &'static str;
33533
33534	fn from_str(value: &str) -> Result<Self, &'static str> {
33535		match value {
33536			"edited" => Ok(Self::Edited),
33537			_ => Err("invalid value"),
33538		}
33539	}
33540}
33541impl std::convert::TryFrom<&str> for TeamEditedAction {
33542	type Error = &'static str;
33543
33544	fn try_from(value: &str) -> Result<Self, &'static str> {
33545		value.parse()
33546	}
33547}
33548impl std::convert::TryFrom<&String> for TeamEditedAction {
33549	type Error = &'static str;
33550
33551	fn try_from(value: &String) -> Result<Self, &'static str> {
33552		value.parse()
33553	}
33554}
33555impl std::convert::TryFrom<String> for TeamEditedAction {
33556	type Error = &'static str;
33557
33558	fn try_from(value: String) -> Result<Self, &'static str> {
33559		value.parse()
33560	}
33561}
33562/// The changes to the team if the action was `edited`.
33563#[derive(Clone, Debug, Deserialize, Serialize)]
33564#[serde(deny_unknown_fields)]
33565pub struct TeamEditedChanges {
33566	#[serde(default, skip_serializing_if = "Option::is_none")]
33567	pub description: Option<TeamEditedChangesDescription>,
33568	#[serde(default, skip_serializing_if = "Option::is_none")]
33569	pub name:        Option<TeamEditedChangesName>,
33570	#[serde(default, skip_serializing_if = "Option::is_none")]
33571	pub privacy:     Option<TeamEditedChangesPrivacy>,
33572	#[serde(default, skip_serializing_if = "Option::is_none")]
33573	pub repository:  Option<TeamEditedChangesRepository>,
33574}
33575impl From<&TeamEditedChanges> for TeamEditedChanges {
33576	fn from(value: &TeamEditedChanges) -> Self {
33577		value.clone()
33578	}
33579}
33580#[derive(Clone, Debug, Deserialize, Serialize)]
33581#[serde(deny_unknown_fields)]
33582pub struct TeamEditedChangesDescription {
33583	/// The previous version of the description if the action was `edited`.
33584	pub from: String,
33585}
33586impl From<&TeamEditedChangesDescription> for TeamEditedChangesDescription {
33587	fn from(value: &TeamEditedChangesDescription) -> Self {
33588		value.clone()
33589	}
33590}
33591#[derive(Clone, Debug, Deserialize, Serialize)]
33592#[serde(deny_unknown_fields)]
33593pub struct TeamEditedChangesName {
33594	/// The previous version of the name if the action was `edited`.
33595	pub from: String,
33596}
33597impl From<&TeamEditedChangesName> for TeamEditedChangesName {
33598	fn from(value: &TeamEditedChangesName) -> Self {
33599		value.clone()
33600	}
33601}
33602#[derive(Clone, Debug, Deserialize, Serialize)]
33603#[serde(deny_unknown_fields)]
33604pub struct TeamEditedChangesPrivacy {
33605	/// The previous version of the team's privacy if the action was `edited`.
33606	pub from: String,
33607}
33608impl From<&TeamEditedChangesPrivacy> for TeamEditedChangesPrivacy {
33609	fn from(value: &TeamEditedChangesPrivacy) -> Self {
33610		value.clone()
33611	}
33612}
33613#[derive(Clone, Debug, Deserialize, Serialize)]
33614#[serde(deny_unknown_fields)]
33615pub struct TeamEditedChangesRepository {
33616	pub permissions: TeamEditedChangesRepositoryPermissions,
33617}
33618impl From<&TeamEditedChangesRepository> for TeamEditedChangesRepository {
33619	fn from(value: &TeamEditedChangesRepository) -> Self {
33620		value.clone()
33621	}
33622}
33623#[derive(Clone, Debug, Deserialize, Serialize)]
33624#[serde(deny_unknown_fields)]
33625pub struct TeamEditedChangesRepositoryPermissions {
33626	pub from: TeamEditedChangesRepositoryPermissionsFrom,
33627}
33628impl From<&TeamEditedChangesRepositoryPermissions> for TeamEditedChangesRepositoryPermissions {
33629	fn from(value: &TeamEditedChangesRepositoryPermissions) -> Self {
33630		value.clone()
33631	}
33632}
33633#[derive(Clone, Debug, Deserialize, Serialize)]
33634#[serde(deny_unknown_fields)]
33635pub struct TeamEditedChangesRepositoryPermissionsFrom {
33636	/// The previous version of the team member's `admin` permission on a
33637	/// repository, if the action was `edited`.
33638	#[serde(default, skip_serializing_if = "Option::is_none")]
33639	pub admin: Option<bool>,
33640	/// The previous version of the team member's `pull` permission on a
33641	/// repository, if the action was `edited`.
33642	#[serde(default, skip_serializing_if = "Option::is_none")]
33643	pub pull:  Option<bool>,
33644	/// The previous version of the team member's `push` permission on a
33645	/// repository, if the action was `edited`.
33646	#[serde(default, skip_serializing_if = "Option::is_none")]
33647	pub push:  Option<bool>,
33648}
33649impl From<&TeamEditedChangesRepositoryPermissionsFrom>
33650	for TeamEditedChangesRepositoryPermissionsFrom
33651{
33652	fn from(value: &TeamEditedChangesRepositoryPermissionsFrom) -> Self {
33653		value.clone()
33654	}
33655}
33656#[derive(Clone, Debug, Deserialize, Serialize)]
33657#[serde(untagged)]
33658pub enum TeamEvent {
33659	AddedToRepository(TeamAddedToRepository),
33660	Created(TeamCreated),
33661	Deleted(TeamDeleted),
33662	Edited(TeamEdited),
33663	RemovedFromRepository(TeamRemovedFromRepository),
33664}
33665impl From<&TeamEvent> for TeamEvent {
33666	fn from(value: &TeamEvent) -> Self {
33667		value.clone()
33668	}
33669}
33670impl From<TeamAddedToRepository> for TeamEvent {
33671	fn from(value: TeamAddedToRepository) -> Self {
33672		Self::AddedToRepository(value)
33673	}
33674}
33675impl From<TeamCreated> for TeamEvent {
33676	fn from(value: TeamCreated) -> Self {
33677		Self::Created(value)
33678	}
33679}
33680impl From<TeamDeleted> for TeamEvent {
33681	fn from(value: TeamDeleted) -> Self {
33682		Self::Deleted(value)
33683	}
33684}
33685impl From<TeamEdited> for TeamEvent {
33686	fn from(value: TeamEdited) -> Self {
33687		Self::Edited(value)
33688	}
33689}
33690impl From<TeamRemovedFromRepository> for TeamEvent {
33691	fn from(value: TeamRemovedFromRepository) -> Self {
33692		Self::RemovedFromRepository(value)
33693	}
33694}
33695#[derive(Clone, Debug, Deserialize, Serialize)]
33696#[serde(deny_unknown_fields)]
33697pub struct TeamParent {
33698	/// Description of the team
33699	pub description:      Option<String>,
33700	pub html_url:         String,
33701	/// Unique identifier of the team
33702	pub id:               i64,
33703	pub members_url:      String,
33704	/// Name of the team
33705	pub name:             String,
33706	pub node_id:          String,
33707	/// Permission that the team will have for its repositories
33708	pub permission:       String,
33709	pub privacy:          TeamParentPrivacy,
33710	pub repositories_url: String,
33711	pub slug:             String,
33712	/// URL for the team
33713	pub url:              String,
33714}
33715impl From<&TeamParent> for TeamParent {
33716	fn from(value: &TeamParent) -> Self {
33717		value.clone()
33718	}
33719}
33720#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33721pub enum TeamParentPrivacy {
33722	#[serde(rename = "open")]
33723	Open,
33724	#[serde(rename = "closed")]
33725	Closed,
33726	#[serde(rename = "secret")]
33727	Secret,
33728}
33729impl From<&TeamParentPrivacy> for TeamParentPrivacy {
33730	fn from(value: &TeamParentPrivacy) -> Self {
33731		value.clone()
33732	}
33733}
33734impl ToString for TeamParentPrivacy {
33735	fn to_string(&self) -> String {
33736		match *self {
33737			Self::Open => "open".to_string(),
33738			Self::Closed => "closed".to_string(),
33739			Self::Secret => "secret".to_string(),
33740		}
33741	}
33742}
33743impl std::str::FromStr for TeamParentPrivacy {
33744	type Err = &'static str;
33745
33746	fn from_str(value: &str) -> Result<Self, &'static str> {
33747		match value {
33748			"open" => Ok(Self::Open),
33749			"closed" => Ok(Self::Closed),
33750			"secret" => Ok(Self::Secret),
33751			_ => Err("invalid value"),
33752		}
33753	}
33754}
33755impl std::convert::TryFrom<&str> for TeamParentPrivacy {
33756	type Error = &'static str;
33757
33758	fn try_from(value: &str) -> Result<Self, &'static str> {
33759		value.parse()
33760	}
33761}
33762impl std::convert::TryFrom<&String> for TeamParentPrivacy {
33763	type Error = &'static str;
33764
33765	fn try_from(value: &String) -> Result<Self, &'static str> {
33766		value.parse()
33767	}
33768}
33769impl std::convert::TryFrom<String> for TeamParentPrivacy {
33770	type Error = &'static str;
33771
33772	fn try_from(value: String) -> Result<Self, &'static str> {
33773		value.parse()
33774	}
33775}
33776#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33777pub enum TeamPrivacy {
33778	#[serde(rename = "open")]
33779	Open,
33780	#[serde(rename = "closed")]
33781	Closed,
33782	#[serde(rename = "secret")]
33783	Secret,
33784}
33785impl From<&TeamPrivacy> for TeamPrivacy {
33786	fn from(value: &TeamPrivacy) -> Self {
33787		value.clone()
33788	}
33789}
33790impl ToString for TeamPrivacy {
33791	fn to_string(&self) -> String {
33792		match *self {
33793			Self::Open => "open".to_string(),
33794			Self::Closed => "closed".to_string(),
33795			Self::Secret => "secret".to_string(),
33796		}
33797	}
33798}
33799impl std::str::FromStr for TeamPrivacy {
33800	type Err = &'static str;
33801
33802	fn from_str(value: &str) -> Result<Self, &'static str> {
33803		match value {
33804			"open" => Ok(Self::Open),
33805			"closed" => Ok(Self::Closed),
33806			"secret" => Ok(Self::Secret),
33807			_ => Err("invalid value"),
33808		}
33809	}
33810}
33811impl std::convert::TryFrom<&str> for TeamPrivacy {
33812	type Error = &'static str;
33813
33814	fn try_from(value: &str) -> Result<Self, &'static str> {
33815		value.parse()
33816	}
33817}
33818impl std::convert::TryFrom<&String> for TeamPrivacy {
33819	type Error = &'static str;
33820
33821	fn try_from(value: &String) -> Result<Self, &'static str> {
33822		value.parse()
33823	}
33824}
33825impl std::convert::TryFrom<String> for TeamPrivacy {
33826	type Error = &'static str;
33827
33828	fn try_from(value: String) -> Result<Self, &'static str> {
33829		value.parse()
33830	}
33831}
33832#[derive(Clone, Debug, Deserialize, Serialize)]
33833#[serde(deny_unknown_fields)]
33834pub struct TeamRemovedFromRepository {
33835	pub action:       TeamRemovedFromRepositoryAction,
33836	#[serde(default, skip_serializing_if = "Option::is_none")]
33837	pub installation: Option<InstallationLite>,
33838	pub organization: Organization,
33839	#[serde(default, skip_serializing_if = "Option::is_none")]
33840	pub repository:   Option<Repository>,
33841	pub sender:       User,
33842	pub team:         Team,
33843}
33844impl From<&TeamRemovedFromRepository> for TeamRemovedFromRepository {
33845	fn from(value: &TeamRemovedFromRepository) -> Self {
33846		value.clone()
33847	}
33848}
33849#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33850pub enum TeamRemovedFromRepositoryAction {
33851	#[serde(rename = "removed_from_repository")]
33852	RemovedFromRepository,
33853}
33854impl From<&TeamRemovedFromRepositoryAction> for TeamRemovedFromRepositoryAction {
33855	fn from(value: &TeamRemovedFromRepositoryAction) -> Self {
33856		value.clone()
33857	}
33858}
33859impl ToString for TeamRemovedFromRepositoryAction {
33860	fn to_string(&self) -> String {
33861		match *self {
33862			Self::RemovedFromRepository => "removed_from_repository".to_string(),
33863		}
33864	}
33865}
33866impl std::str::FromStr for TeamRemovedFromRepositoryAction {
33867	type Err = &'static str;
33868
33869	fn from_str(value: &str) -> Result<Self, &'static str> {
33870		match value {
33871			"removed_from_repository" => Ok(Self::RemovedFromRepository),
33872			_ => Err("invalid value"),
33873		}
33874	}
33875}
33876impl std::convert::TryFrom<&str> for TeamRemovedFromRepositoryAction {
33877	type Error = &'static str;
33878
33879	fn try_from(value: &str) -> Result<Self, &'static str> {
33880		value.parse()
33881	}
33882}
33883impl std::convert::TryFrom<&String> for TeamRemovedFromRepositoryAction {
33884	type Error = &'static str;
33885
33886	fn try_from(value: &String) -> Result<Self, &'static str> {
33887		value.parse()
33888	}
33889}
33890impl std::convert::TryFrom<String> for TeamRemovedFromRepositoryAction {
33891	type Error = &'static str;
33892
33893	fn try_from(value: String) -> Result<Self, &'static str> {
33894		value.parse()
33895	}
33896}
33897#[derive(Clone, Debug, Deserialize, Serialize)]
33898#[serde(deny_unknown_fields)]
33899pub struct User {
33900	pub avatar_url:          String,
33901	#[serde(default, skip_serializing_if = "Option::is_none")]
33902	pub email:               Option<String>,
33903	pub events_url:          String,
33904	pub followers_url:       String,
33905	pub following_url:       String,
33906	pub gists_url:           String,
33907	pub gravatar_id:         String,
33908	pub html_url:            String,
33909	pub id:                  i64,
33910	pub login:               String,
33911	#[serde(default, skip_serializing_if = "Option::is_none")]
33912	pub name:                Option<String>,
33913	pub node_id:             String,
33914	pub organizations_url:   String,
33915	pub received_events_url: String,
33916	pub repos_url:           String,
33917	pub site_admin:          bool,
33918	pub starred_url:         String,
33919	pub subscriptions_url:   String,
33920	#[serde(rename = "type")]
33921	pub type_:               UserType,
33922	pub url:                 String,
33923}
33924impl From<&User> for User {
33925	fn from(value: &User) -> Self {
33926		value.clone()
33927	}
33928}
33929#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
33930pub enum UserType {
33931	Bot,
33932	User,
33933	Organization,
33934}
33935impl From<&UserType> for UserType {
33936	fn from(value: &UserType) -> Self {
33937		value.clone()
33938	}
33939}
33940impl ToString for UserType {
33941	fn to_string(&self) -> String {
33942		match *self {
33943			Self::Bot => "Bot".to_string(),
33944			Self::User => "User".to_string(),
33945			Self::Organization => "Organization".to_string(),
33946		}
33947	}
33948}
33949impl std::str::FromStr for UserType {
33950	type Err = &'static str;
33951
33952	fn from_str(value: &str) -> Result<Self, &'static str> {
33953		match value {
33954			"Bot" => Ok(Self::Bot),
33955			"User" => Ok(Self::User),
33956			"Organization" => Ok(Self::Organization),
33957			_ => Err("invalid value"),
33958		}
33959	}
33960}
33961impl std::convert::TryFrom<&str> for UserType {
33962	type Error = &'static str;
33963
33964	fn try_from(value: &str) -> Result<Self, &'static str> {
33965		value.parse()
33966	}
33967}
33968impl std::convert::TryFrom<&String> for UserType {
33969	type Error = &'static str;
33970
33971	fn try_from(value: &String) -> Result<Self, &'static str> {
33972		value.parse()
33973	}
33974}
33975impl std::convert::TryFrom<String> for UserType {
33976	type Error = &'static str;
33977
33978	fn try_from(value: String) -> Result<Self, &'static str> {
33979		value.parse()
33980	}
33981}
33982#[derive(Clone, Debug, Deserialize, Serialize)]
33983pub struct WatchEvent(pub WatchStarted);
33984impl std::ops::Deref for WatchEvent {
33985	type Target = WatchStarted;
33986
33987	fn deref(&self) -> &WatchStarted {
33988		&self.0
33989	}
33990}
33991impl From<WatchEvent> for WatchStarted {
33992	fn from(value: WatchEvent) -> Self {
33993		value.0
33994	}
33995}
33996impl From<&WatchEvent> for WatchEvent {
33997	fn from(value: &WatchEvent) -> Self {
33998		value.clone()
33999	}
34000}
34001impl From<WatchStarted> for WatchEvent {
34002	fn from(value: WatchStarted) -> Self {
34003		Self(value)
34004	}
34005}
34006#[derive(Clone, Debug, Deserialize, Serialize)]
34007#[serde(deny_unknown_fields)]
34008pub struct WatchStarted {
34009	pub action:       WatchStartedAction,
34010	#[serde(default, skip_serializing_if = "Option::is_none")]
34011	pub installation: Option<InstallationLite>,
34012	#[serde(default, skip_serializing_if = "Option::is_none")]
34013	pub organization: Option<Organization>,
34014	pub repository:   Repository,
34015	pub sender:       User,
34016}
34017impl From<&WatchStarted> for WatchStarted {
34018	fn from(value: &WatchStarted) -> Self {
34019		value.clone()
34020	}
34021}
34022#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
34023pub enum WatchStartedAction {
34024	#[serde(rename = "started")]
34025	Started,
34026}
34027impl From<&WatchStartedAction> for WatchStartedAction {
34028	fn from(value: &WatchStartedAction) -> Self {
34029		value.clone()
34030	}
34031}
34032impl ToString for WatchStartedAction {
34033	fn to_string(&self) -> String {
34034		match *self {
34035			Self::Started => "started".to_string(),
34036		}
34037	}
34038}
34039impl std::str::FromStr for WatchStartedAction {
34040	type Err = &'static str;
34041
34042	fn from_str(value: &str) -> Result<Self, &'static str> {
34043		match value {
34044			"started" => Ok(Self::Started),
34045			_ => Err("invalid value"),
34046		}
34047	}
34048}
34049impl std::convert::TryFrom<&str> for WatchStartedAction {
34050	type Error = &'static str;
34051
34052	fn try_from(value: &str) -> Result<Self, &'static str> {
34053		value.parse()
34054	}
34055}
34056impl std::convert::TryFrom<&String> for WatchStartedAction {
34057	type Error = &'static str;
34058
34059	fn try_from(value: &String) -> Result<Self, &'static str> {
34060		value.parse()
34061	}
34062}
34063impl std::convert::TryFrom<String> for WatchStartedAction {
34064	type Error = &'static str;
34065
34066	fn try_from(value: String) -> Result<Self, &'static str> {
34067		value.parse()
34068	}
34069}
34070#[derive(Clone, Debug, Deserialize, Serialize)]
34071#[serde(untagged)]
34072pub enum WebhookEvents {
34073	Variant0(Vec<WebhookEventsVariant0Item>),
34074	Variant1(Vec<String>),
34075}
34076impl From<&WebhookEvents> for WebhookEvents {
34077	fn from(value: &WebhookEvents) -> Self {
34078		value.clone()
34079	}
34080}
34081impl From<Vec<WebhookEventsVariant0Item>> for WebhookEvents {
34082	fn from(value: Vec<WebhookEventsVariant0Item>) -> Self {
34083		Self::Variant0(value)
34084	}
34085}
34086impl From<Vec<String>> for WebhookEvents {
34087	fn from(value: Vec<String>) -> Self {
34088		Self::Variant1(value)
34089	}
34090}
34091#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
34092pub enum WebhookEventsVariant0Item {
34093	#[serde(rename = "branch_protection_rule")]
34094	BranchProtectionRule,
34095	#[serde(rename = "check_run")]
34096	CheckRun,
34097	#[serde(rename = "check_suite")]
34098	CheckSuite,
34099	#[serde(rename = "code_scanning_alert")]
34100	CodeScanningAlert,
34101	#[serde(rename = "commit_comment")]
34102	CommitComment,
34103	#[serde(rename = "create")]
34104	Create,
34105	#[serde(rename = "delete")]
34106	Delete,
34107	#[serde(rename = "deployment")]
34108	Deployment,
34109	#[serde(rename = "deployment_status")]
34110	DeploymentStatus,
34111	#[serde(rename = "deploy_key")]
34112	DeployKey,
34113	#[serde(rename = "discussion")]
34114	Discussion,
34115	#[serde(rename = "discussion_comment")]
34116	DiscussionComment,
34117	#[serde(rename = "fork")]
34118	Fork,
34119	#[serde(rename = "gollum")]
34120	Gollum,
34121	#[serde(rename = "issues")]
34122	Issues,
34123	#[serde(rename = "issue_comment")]
34124	IssueComment,
34125	#[serde(rename = "label")]
34126	Label,
34127	#[serde(rename = "member")]
34128	Member,
34129	#[serde(rename = "membership")]
34130	Membership,
34131	#[serde(rename = "meta")]
34132	Meta,
34133	#[serde(rename = "milestone")]
34134	Milestone,
34135	#[serde(rename = "organization")]
34136	Organization,
34137	#[serde(rename = "org_block")]
34138	OrgBlock,
34139	#[serde(rename = "package")]
34140	Package,
34141	#[serde(rename = "page_build")]
34142	PageBuild,
34143	#[serde(rename = "project")]
34144	Project,
34145	#[serde(rename = "projects_v2_item")]
34146	ProjectsV2Item,
34147	#[serde(rename = "project_card")]
34148	ProjectCard,
34149	#[serde(rename = "project_column")]
34150	ProjectColumn,
34151	#[serde(rename = "public")]
34152	Public,
34153	#[serde(rename = "pull_request")]
34154	PullRequest,
34155	#[serde(rename = "pull_request_review")]
34156	PullRequestReview,
34157	#[serde(rename = "pull_request_review_comment")]
34158	PullRequestReviewComment,
34159	#[serde(rename = "pull_request_review_thread")]
34160	PullRequestReviewThread,
34161	#[serde(rename = "push")]
34162	Push,
34163	#[serde(rename = "registry_package")]
34164	RegistryPackage,
34165	#[serde(rename = "release")]
34166	Release,
34167	#[serde(rename = "repository")]
34168	Repository,
34169	#[serde(rename = "repository_import")]
34170	RepositoryImport,
34171	#[serde(rename = "repository_vulnerability_alert")]
34172	RepositoryVulnerabilityAlert,
34173	#[serde(rename = "secret_scanning_alert")]
34174	SecretScanningAlert,
34175	#[serde(rename = "secret_scanning_alert_location")]
34176	SecretScanningAlertLocation,
34177	#[serde(rename = "security_and_analysis")]
34178	SecurityAndAnalysis,
34179	#[serde(rename = "star")]
34180	Star,
34181	#[serde(rename = "status")]
34182	Status,
34183	#[serde(rename = "team")]
34184	Team,
34185	#[serde(rename = "team_add")]
34186	TeamAdd,
34187	#[serde(rename = "watch")]
34188	Watch,
34189	#[serde(rename = "workflow_job")]
34190	WorkflowJob,
34191	#[serde(rename = "workflow_run")]
34192	WorkflowRun,
34193}
34194impl From<&WebhookEventsVariant0Item> for WebhookEventsVariant0Item {
34195	fn from(value: &WebhookEventsVariant0Item) -> Self {
34196		value.clone()
34197	}
34198}
34199impl ToString for WebhookEventsVariant0Item {
34200	fn to_string(&self) -> String {
34201		match *self {
34202			Self::BranchProtectionRule => "branch_protection_rule".to_string(),
34203			Self::CheckRun => "check_run".to_string(),
34204			Self::CheckSuite => "check_suite".to_string(),
34205			Self::CodeScanningAlert => "code_scanning_alert".to_string(),
34206			Self::CommitComment => "commit_comment".to_string(),
34207			Self::Create => "create".to_string(),
34208			Self::Delete => "delete".to_string(),
34209			Self::Deployment => "deployment".to_string(),
34210			Self::DeploymentStatus => "deployment_status".to_string(),
34211			Self::DeployKey => "deploy_key".to_string(),
34212			Self::Discussion => "discussion".to_string(),
34213			Self::DiscussionComment => "discussion_comment".to_string(),
34214			Self::Fork => "fork".to_string(),
34215			Self::Gollum => "gollum".to_string(),
34216			Self::Issues => "issues".to_string(),
34217			Self::IssueComment => "issue_comment".to_string(),
34218			Self::Label => "label".to_string(),
34219			Self::Member => "member".to_string(),
34220			Self::Membership => "membership".to_string(),
34221			Self::Meta => "meta".to_string(),
34222			Self::Milestone => "milestone".to_string(),
34223			Self::Organization => "organization".to_string(),
34224			Self::OrgBlock => "org_block".to_string(),
34225			Self::Package => "package".to_string(),
34226			Self::PageBuild => "page_build".to_string(),
34227			Self::Project => "project".to_string(),
34228			Self::ProjectsV2Item => "projects_v2_item".to_string(),
34229			Self::ProjectCard => "project_card".to_string(),
34230			Self::ProjectColumn => "project_column".to_string(),
34231			Self::Public => "public".to_string(),
34232			Self::PullRequest => "pull_request".to_string(),
34233			Self::PullRequestReview => "pull_request_review".to_string(),
34234			Self::PullRequestReviewComment => "pull_request_review_comment".to_string(),
34235			Self::PullRequestReviewThread => "pull_request_review_thread".to_string(),
34236			Self::Push => "push".to_string(),
34237			Self::RegistryPackage => "registry_package".to_string(),
34238			Self::Release => "release".to_string(),
34239			Self::Repository => "repository".to_string(),
34240			Self::RepositoryImport => "repository_import".to_string(),
34241			Self::RepositoryVulnerabilityAlert => "repository_vulnerability_alert".to_string(),
34242			Self::SecretScanningAlert => "secret_scanning_alert".to_string(),
34243			Self::SecretScanningAlertLocation => "secret_scanning_alert_location".to_string(),
34244			Self::SecurityAndAnalysis => "security_and_analysis".to_string(),
34245			Self::Star => "star".to_string(),
34246			Self::Status => "status".to_string(),
34247			Self::Team => "team".to_string(),
34248			Self::TeamAdd => "team_add".to_string(),
34249			Self::Watch => "watch".to_string(),
34250			Self::WorkflowJob => "workflow_job".to_string(),
34251			Self::WorkflowRun => "workflow_run".to_string(),
34252		}
34253	}
34254}
34255impl std::str::FromStr for WebhookEventsVariant0Item {
34256	type Err = &'static str;
34257
34258	fn from_str(value: &str) -> Result<Self, &'static str> {
34259		match value {
34260			"branch_protection_rule" => Ok(Self::BranchProtectionRule),
34261			"check_run" => Ok(Self::CheckRun),
34262			"check_suite" => Ok(Self::CheckSuite),
34263			"code_scanning_alert" => Ok(Self::CodeScanningAlert),
34264			"commit_comment" => Ok(Self::CommitComment),
34265			"create" => Ok(Self::Create),
34266			"delete" => Ok(Self::Delete),
34267			"deployment" => Ok(Self::Deployment),
34268			"deployment_status" => Ok(Self::DeploymentStatus),
34269			"deploy_key" => Ok(Self::DeployKey),
34270			"discussion" => Ok(Self::Discussion),
34271			"discussion_comment" => Ok(Self::DiscussionComment),
34272			"fork" => Ok(Self::Fork),
34273			"gollum" => Ok(Self::Gollum),
34274			"issues" => Ok(Self::Issues),
34275			"issue_comment" => Ok(Self::IssueComment),
34276			"label" => Ok(Self::Label),
34277			"member" => Ok(Self::Member),
34278			"membership" => Ok(Self::Membership),
34279			"meta" => Ok(Self::Meta),
34280			"milestone" => Ok(Self::Milestone),
34281			"organization" => Ok(Self::Organization),
34282			"org_block" => Ok(Self::OrgBlock),
34283			"package" => Ok(Self::Package),
34284			"page_build" => Ok(Self::PageBuild),
34285			"project" => Ok(Self::Project),
34286			"projects_v2_item" => Ok(Self::ProjectsV2Item),
34287			"project_card" => Ok(Self::ProjectCard),
34288			"project_column" => Ok(Self::ProjectColumn),
34289			"public" => Ok(Self::Public),
34290			"pull_request" => Ok(Self::PullRequest),
34291			"pull_request_review" => Ok(Self::PullRequestReview),
34292			"pull_request_review_comment" => Ok(Self::PullRequestReviewComment),
34293			"pull_request_review_thread" => Ok(Self::PullRequestReviewThread),
34294			"push" => Ok(Self::Push),
34295			"registry_package" => Ok(Self::RegistryPackage),
34296			"release" => Ok(Self::Release),
34297			"repository" => Ok(Self::Repository),
34298			"repository_import" => Ok(Self::RepositoryImport),
34299			"repository_vulnerability_alert" => Ok(Self::RepositoryVulnerabilityAlert),
34300			"secret_scanning_alert" => Ok(Self::SecretScanningAlert),
34301			"secret_scanning_alert_location" => Ok(Self::SecretScanningAlertLocation),
34302			"security_and_analysis" => Ok(Self::SecurityAndAnalysis),
34303			"star" => Ok(Self::Star),
34304			"status" => Ok(Self::Status),
34305			"team" => Ok(Self::Team),
34306			"team_add" => Ok(Self::TeamAdd),
34307			"watch" => Ok(Self::Watch),
34308			"workflow_job" => Ok(Self::WorkflowJob),
34309			"workflow_run" => Ok(Self::WorkflowRun),
34310			_ => Err("invalid value"),
34311		}
34312	}
34313}
34314impl std::convert::TryFrom<&str> for WebhookEventsVariant0Item {
34315	type Error = &'static str;
34316
34317	fn try_from(value: &str) -> Result<Self, &'static str> {
34318		value.parse()
34319	}
34320}
34321impl std::convert::TryFrom<&String> for WebhookEventsVariant0Item {
34322	type Error = &'static str;
34323
34324	fn try_from(value: &String) -> Result<Self, &'static str> {
34325		value.parse()
34326	}
34327}
34328impl std::convert::TryFrom<String> for WebhookEventsVariant0Item {
34329	type Error = &'static str;
34330
34331	fn try_from(value: String) -> Result<Self, &'static str> {
34332		value.parse()
34333	}
34334}
34335#[derive(Clone, Debug, Deserialize, Serialize)]
34336#[serde(untagged)]
34337pub enum WebhookPayload {
34338	BranchProtectionRuleEvent(BranchProtectionRuleEvent),
34339	CheckRunEvent(CheckRunEvent),
34340	CheckSuiteEvent(CheckSuiteEvent),
34341	CodeScanningAlertEvent(CodeScanningAlertEvent),
34342	CommitCommentEvent(CommitCommentEvent),
34343	CreateEvent(CreateEvent),
34344	DeleteEvent(DeleteEvent),
34345	DependabotAlertEvent(DependabotAlertEvent),
34346	DeployKeyEvent(DeployKeyEvent),
34347	DeploymentEvent(DeploymentEvent),
34348	DeploymentStatusEvent(DeploymentStatusEvent),
34349	DiscussionEvent(DiscussionEvent),
34350	DiscussionCommentEvent(DiscussionCommentEvent),
34351	ForkEvent(ForkEvent),
34352	GithubAppAuthorizationEvent(GithubAppAuthorizationEvent),
34353	GollumEvent(GollumEvent),
34354	InstallationEvent(InstallationEvent),
34355	InstallationRepositoriesEvent(InstallationRepositoriesEvent),
34356	InstallationTargetEvent(InstallationTargetEvent),
34357	IssueCommentEvent(IssueCommentEvent),
34358	IssuesEvent(IssuesEvent),
34359	LabelEvent(LabelEvent),
34360	MarketplacePurchaseEvent(MarketplacePurchaseEvent),
34361	MemberEvent(MemberEvent),
34362	MembershipEvent(MembershipEvent),
34363	MergeGroupEvent(MergeGroupEvent),
34364	MetaEvent(MetaEvent),
34365	MilestoneEvent(MilestoneEvent),
34366	OrgBlockEvent(OrgBlockEvent),
34367	OrganizationEvent(OrganizationEvent),
34368	PackageEvent(PackageEvent),
34369	PageBuildEvent(PageBuildEvent),
34370	PingEvent(PingEvent),
34371	ProjectEvent(ProjectEvent),
34372	ProjectCardEvent(ProjectCardEvent),
34373	ProjectColumnEvent(ProjectColumnEvent),
34374	ProjectsV2ItemEvent(ProjectsV2ItemEvent),
34375	PublicEvent(PublicEvent),
34376	PullRequestEvent(PullRequestEvent),
34377	PullRequestReviewEvent(PullRequestReviewEvent),
34378	PullRequestReviewCommentEvent(PullRequestReviewCommentEvent),
34379	PullRequestReviewThreadEvent(PullRequestReviewThreadEvent),
34380	PushEvent(PushEvent),
34381	RegistryPackageEvent(RegistryPackageEvent),
34382	ReleaseEvent(ReleaseEvent),
34383	RepositoryEvent(RepositoryEvent),
34384	RepositoryDispatchEvent(RepositoryDispatchEvent),
34385	RepositoryImportEvent(RepositoryImportEvent),
34386	RepositoryVulnerabilityAlertEvent(RepositoryVulnerabilityAlertEvent),
34387	SecretScanningAlertEvent(SecretScanningAlertEvent),
34388	SecurityAdvisoryEvent(SecurityAdvisoryEvent),
34389	SponsorshipEvent(SponsorshipEvent),
34390	StarEvent(StarEvent),
34391	StatusEvent(StatusEvent),
34392	TeamEvent(TeamEvent),
34393	TeamAddEvent(TeamAddEvent),
34394	WatchEvent(WatchEvent),
34395	WorkflowDispatchEvent(WorkflowDispatchEvent),
34396	WorkflowJobEvent(WorkflowJobEvent),
34397	WorkflowRunEvent(WorkflowRunEvent),
34398}
34399impl From<&WebhookPayload> for WebhookPayload {
34400	fn from(value: &WebhookPayload) -> Self {
34401		value.clone()
34402	}
34403}
34404impl From<BranchProtectionRuleEvent> for WebhookPayload {
34405	fn from(value: BranchProtectionRuleEvent) -> Self {
34406		Self::BranchProtectionRuleEvent(value)
34407	}
34408}
34409impl From<CheckRunEvent> for WebhookPayload {
34410	fn from(value: CheckRunEvent) -> Self {
34411		Self::CheckRunEvent(value)
34412	}
34413}
34414impl From<CheckSuiteEvent> for WebhookPayload {
34415	fn from(value: CheckSuiteEvent) -> Self {
34416		Self::CheckSuiteEvent(value)
34417	}
34418}
34419impl From<CodeScanningAlertEvent> for WebhookPayload {
34420	fn from(value: CodeScanningAlertEvent) -> Self {
34421		Self::CodeScanningAlertEvent(value)
34422	}
34423}
34424impl From<CommitCommentEvent> for WebhookPayload {
34425	fn from(value: CommitCommentEvent) -> Self {
34426		Self::CommitCommentEvent(value)
34427	}
34428}
34429impl From<CreateEvent> for WebhookPayload {
34430	fn from(value: CreateEvent) -> Self {
34431		Self::CreateEvent(value)
34432	}
34433}
34434impl From<DeleteEvent> for WebhookPayload {
34435	fn from(value: DeleteEvent) -> Self {
34436		Self::DeleteEvent(value)
34437	}
34438}
34439impl From<DependabotAlertEvent> for WebhookPayload {
34440	fn from(value: DependabotAlertEvent) -> Self {
34441		Self::DependabotAlertEvent(value)
34442	}
34443}
34444impl From<DeployKeyEvent> for WebhookPayload {
34445	fn from(value: DeployKeyEvent) -> Self {
34446		Self::DeployKeyEvent(value)
34447	}
34448}
34449impl From<DeploymentEvent> for WebhookPayload {
34450	fn from(value: DeploymentEvent) -> Self {
34451		Self::DeploymentEvent(value)
34452	}
34453}
34454impl From<DeploymentStatusEvent> for WebhookPayload {
34455	fn from(value: DeploymentStatusEvent) -> Self {
34456		Self::DeploymentStatusEvent(value)
34457	}
34458}
34459impl From<DiscussionEvent> for WebhookPayload {
34460	fn from(value: DiscussionEvent) -> Self {
34461		Self::DiscussionEvent(value)
34462	}
34463}
34464impl From<DiscussionCommentEvent> for WebhookPayload {
34465	fn from(value: DiscussionCommentEvent) -> Self {
34466		Self::DiscussionCommentEvent(value)
34467	}
34468}
34469impl From<ForkEvent> for WebhookPayload {
34470	fn from(value: ForkEvent) -> Self {
34471		Self::ForkEvent(value)
34472	}
34473}
34474impl From<GithubAppAuthorizationEvent> for WebhookPayload {
34475	fn from(value: GithubAppAuthorizationEvent) -> Self {
34476		Self::GithubAppAuthorizationEvent(value)
34477	}
34478}
34479impl From<GollumEvent> for WebhookPayload {
34480	fn from(value: GollumEvent) -> Self {
34481		Self::GollumEvent(value)
34482	}
34483}
34484impl From<InstallationEvent> for WebhookPayload {
34485	fn from(value: InstallationEvent) -> Self {
34486		Self::InstallationEvent(value)
34487	}
34488}
34489impl From<InstallationRepositoriesEvent> for WebhookPayload {
34490	fn from(value: InstallationRepositoriesEvent) -> Self {
34491		Self::InstallationRepositoriesEvent(value)
34492	}
34493}
34494impl From<InstallationTargetEvent> for WebhookPayload {
34495	fn from(value: InstallationTargetEvent) -> Self {
34496		Self::InstallationTargetEvent(value)
34497	}
34498}
34499impl From<IssueCommentEvent> for WebhookPayload {
34500	fn from(value: IssueCommentEvent) -> Self {
34501		Self::IssueCommentEvent(value)
34502	}
34503}
34504impl From<IssuesEvent> for WebhookPayload {
34505	fn from(value: IssuesEvent) -> Self {
34506		Self::IssuesEvent(value)
34507	}
34508}
34509impl From<LabelEvent> for WebhookPayload {
34510	fn from(value: LabelEvent) -> Self {
34511		Self::LabelEvent(value)
34512	}
34513}
34514impl From<MarketplacePurchaseEvent> for WebhookPayload {
34515	fn from(value: MarketplacePurchaseEvent) -> Self {
34516		Self::MarketplacePurchaseEvent(value)
34517	}
34518}
34519impl From<MemberEvent> for WebhookPayload {
34520	fn from(value: MemberEvent) -> Self {
34521		Self::MemberEvent(value)
34522	}
34523}
34524impl From<MembershipEvent> for WebhookPayload {
34525	fn from(value: MembershipEvent) -> Self {
34526		Self::MembershipEvent(value)
34527	}
34528}
34529impl From<MergeGroupEvent> for WebhookPayload {
34530	fn from(value: MergeGroupEvent) -> Self {
34531		Self::MergeGroupEvent(value)
34532	}
34533}
34534impl From<MetaEvent> for WebhookPayload {
34535	fn from(value: MetaEvent) -> Self {
34536		Self::MetaEvent(value)
34537	}
34538}
34539impl From<MilestoneEvent> for WebhookPayload {
34540	fn from(value: MilestoneEvent) -> Self {
34541		Self::MilestoneEvent(value)
34542	}
34543}
34544impl From<OrgBlockEvent> for WebhookPayload {
34545	fn from(value: OrgBlockEvent) -> Self {
34546		Self::OrgBlockEvent(value)
34547	}
34548}
34549impl From<OrganizationEvent> for WebhookPayload {
34550	fn from(value: OrganizationEvent) -> Self {
34551		Self::OrganizationEvent(value)
34552	}
34553}
34554impl From<PackageEvent> for WebhookPayload {
34555	fn from(value: PackageEvent) -> Self {
34556		Self::PackageEvent(value)
34557	}
34558}
34559impl From<PageBuildEvent> for WebhookPayload {
34560	fn from(value: PageBuildEvent) -> Self {
34561		Self::PageBuildEvent(value)
34562	}
34563}
34564impl From<PingEvent> for WebhookPayload {
34565	fn from(value: PingEvent) -> Self {
34566		Self::PingEvent(value)
34567	}
34568}
34569impl From<ProjectEvent> for WebhookPayload {
34570	fn from(value: ProjectEvent) -> Self {
34571		Self::ProjectEvent(value)
34572	}
34573}
34574impl From<ProjectCardEvent> for WebhookPayload {
34575	fn from(value: ProjectCardEvent) -> Self {
34576		Self::ProjectCardEvent(value)
34577	}
34578}
34579impl From<ProjectColumnEvent> for WebhookPayload {
34580	fn from(value: ProjectColumnEvent) -> Self {
34581		Self::ProjectColumnEvent(value)
34582	}
34583}
34584impl From<ProjectsV2ItemEvent> for WebhookPayload {
34585	fn from(value: ProjectsV2ItemEvent) -> Self {
34586		Self::ProjectsV2ItemEvent(value)
34587	}
34588}
34589impl From<PublicEvent> for WebhookPayload {
34590	fn from(value: PublicEvent) -> Self {
34591		Self::PublicEvent(value)
34592	}
34593}
34594impl From<PullRequestEvent> for WebhookPayload {
34595	fn from(value: PullRequestEvent) -> Self {
34596		Self::PullRequestEvent(value)
34597	}
34598}
34599impl From<PullRequestReviewEvent> for WebhookPayload {
34600	fn from(value: PullRequestReviewEvent) -> Self {
34601		Self::PullRequestReviewEvent(value)
34602	}
34603}
34604impl From<PullRequestReviewCommentEvent> for WebhookPayload {
34605	fn from(value: PullRequestReviewCommentEvent) -> Self {
34606		Self::PullRequestReviewCommentEvent(value)
34607	}
34608}
34609impl From<PullRequestReviewThreadEvent> for WebhookPayload {
34610	fn from(value: PullRequestReviewThreadEvent) -> Self {
34611		Self::PullRequestReviewThreadEvent(value)
34612	}
34613}
34614impl From<PushEvent> for WebhookPayload {
34615	fn from(value: PushEvent) -> Self {
34616		Self::PushEvent(value)
34617	}
34618}
34619impl From<RegistryPackageEvent> for WebhookPayload {
34620	fn from(value: RegistryPackageEvent) -> Self {
34621		Self::RegistryPackageEvent(value)
34622	}
34623}
34624impl From<ReleaseEvent> for WebhookPayload {
34625	fn from(value: ReleaseEvent) -> Self {
34626		Self::ReleaseEvent(value)
34627	}
34628}
34629impl From<RepositoryEvent> for WebhookPayload {
34630	fn from(value: RepositoryEvent) -> Self {
34631		Self::RepositoryEvent(value)
34632	}
34633}
34634impl From<RepositoryDispatchEvent> for WebhookPayload {
34635	fn from(value: RepositoryDispatchEvent) -> Self {
34636		Self::RepositoryDispatchEvent(value)
34637	}
34638}
34639impl From<RepositoryImportEvent> for WebhookPayload {
34640	fn from(value: RepositoryImportEvent) -> Self {
34641		Self::RepositoryImportEvent(value)
34642	}
34643}
34644impl From<RepositoryVulnerabilityAlertEvent> for WebhookPayload {
34645	fn from(value: RepositoryVulnerabilityAlertEvent) -> Self {
34646		Self::RepositoryVulnerabilityAlertEvent(value)
34647	}
34648}
34649impl From<SecretScanningAlertEvent> for WebhookPayload {
34650	fn from(value: SecretScanningAlertEvent) -> Self {
34651		Self::SecretScanningAlertEvent(value)
34652	}
34653}
34654impl From<SecurityAdvisoryEvent> for WebhookPayload {
34655	fn from(value: SecurityAdvisoryEvent) -> Self {
34656		Self::SecurityAdvisoryEvent(value)
34657	}
34658}
34659impl From<SponsorshipEvent> for WebhookPayload {
34660	fn from(value: SponsorshipEvent) -> Self {
34661		Self::SponsorshipEvent(value)
34662	}
34663}
34664impl From<StarEvent> for WebhookPayload {
34665	fn from(value: StarEvent) -> Self {
34666		Self::StarEvent(value)
34667	}
34668}
34669impl From<StatusEvent> for WebhookPayload {
34670	fn from(value: StatusEvent) -> Self {
34671		Self::StatusEvent(value)
34672	}
34673}
34674impl From<TeamEvent> for WebhookPayload {
34675	fn from(value: TeamEvent) -> Self {
34676		Self::TeamEvent(value)
34677	}
34678}
34679impl From<TeamAddEvent> for WebhookPayload {
34680	fn from(value: TeamAddEvent) -> Self {
34681		Self::TeamAddEvent(value)
34682	}
34683}
34684impl From<WatchEvent> for WebhookPayload {
34685	fn from(value: WatchEvent) -> Self {
34686		Self::WatchEvent(value)
34687	}
34688}
34689impl From<WorkflowDispatchEvent> for WebhookPayload {
34690	fn from(value: WorkflowDispatchEvent) -> Self {
34691		Self::WorkflowDispatchEvent(value)
34692	}
34693}
34694impl From<WorkflowJobEvent> for WebhookPayload {
34695	fn from(value: WorkflowJobEvent) -> Self {
34696		Self::WorkflowJobEvent(value)
34697	}
34698}
34699impl From<WorkflowRunEvent> for WebhookPayload {
34700	fn from(value: WorkflowRunEvent) -> Self {
34701		Self::WorkflowRunEvent(value)
34702	}
34703}
34704#[derive(Clone, Debug, Deserialize, Serialize)]
34705#[serde(deny_unknown_fields)]
34706pub struct Workflow {
34707	pub badge_url:  String,
34708	pub created_at: chrono::DateTime<chrono::offset::Utc>,
34709	pub html_url:   String,
34710	pub id:         i64,
34711	pub name:       String,
34712	pub node_id:    String,
34713	pub path:       String,
34714	pub state:      String,
34715	pub updated_at: chrono::DateTime<chrono::offset::Utc>,
34716	pub url:        String,
34717}
34718impl From<&Workflow> for Workflow {
34719	fn from(value: &Workflow) -> Self {
34720		value.clone()
34721	}
34722}
34723#[derive(Clone, Debug, Deserialize, Serialize)]
34724#[serde(deny_unknown_fields)]
34725pub struct WorkflowDispatchEvent {
34726	/// Inputs to the workflow. Each key represents the name of the input while
34727	/// it's value represents the value of that input.
34728	pub inputs:       Option<std::collections::HashMap<String, serde_json::Value>>,
34729	#[serde(default, skip_serializing_if = "Option::is_none")]
34730	pub installation: Option<InstallationLite>,
34731	#[serde(default, skip_serializing_if = "Option::is_none")]
34732	pub organization: Option<Organization>,
34733	/// The branch ref from which the workflow was run.
34734	#[serde(rename = "ref")]
34735	pub ref_:         String,
34736	pub repository:   Repository,
34737	pub sender:       User,
34738	/// Relative path to the workflow file which contains the workflow.
34739	pub workflow:     String,
34740}
34741impl From<&WorkflowDispatchEvent> for WorkflowDispatchEvent {
34742	fn from(value: &WorkflowDispatchEvent) -> Self {
34743		value.clone()
34744	}
34745}
34746/// The workflow job. Many `workflow_job` keys, such as `head_sha`,
34747/// `conclusion`, and `started_at` are the same as those in a
34748/// [`check_run`](#check_run) object.
34749#[derive(Clone, Debug, Deserialize, Serialize)]
34750#[serde(deny_unknown_fields)]
34751pub struct WorkflowJob {
34752	pub check_run_url:     String,
34753	pub completed_at:      Option<chrono::DateTime<chrono::offset::Utc>>,
34754	pub conclusion:        Option<WorkflowJobConclusion>,
34755	pub created_at:        chrono::DateTime<chrono::offset::Utc>,
34756	/// The name of the current branch.
34757	pub head_branch:       Option<String>,
34758	pub head_sha:          String,
34759	pub html_url:          String,
34760	pub id:                i64,
34761	/// Custom labels for the job. Specified by the [`"runs-on"` attribute](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on) in the workflow YAML.
34762	pub labels:            Vec<String>,
34763	pub name:              String,
34764	pub node_id:           String,
34765	pub run_attempt:       i64,
34766	pub run_id:            f64,
34767	pub run_url:           String,
34768	/// The ID of the runner group that is running this job. This will be `null`
34769	/// as long as `workflow_job[status]` is `queued`.
34770	pub runner_group_id:   Option<i64>,
34771	/// The name of the runner group that is running this job. This will be
34772	/// `null` as long as `workflow_job[status]` is `queued`.
34773	pub runner_group_name: Option<String>,
34774	/// The ID of the runner that is running this job. This will be `null` as
34775	/// long as `workflow_job[status]` is `queued`.
34776	pub runner_id:         Option<i64>,
34777	/// The name of the runner that is running this job. This will be `null` as
34778	/// long as `workflow_job[status]` is `queued`.
34779	pub runner_name:       Option<String>,
34780	pub started_at:        chrono::DateTime<chrono::offset::Utc>,
34781	/// The current status of the job. Can be `queued`, `in_progress`, or
34782	/// `completed`.
34783	pub status:            WorkflowJobStatus,
34784	pub steps:             Vec<WorkflowStep>,
34785	pub url:               String,
34786	/// The name of the workflow.
34787	pub workflow_name:     Option<String>,
34788}
34789impl From<&WorkflowJob> for WorkflowJob {
34790	fn from(value: &WorkflowJob) -> Self {
34791		value.clone()
34792	}
34793}
34794#[derive(Clone, Debug, Deserialize, Serialize)]
34795#[serde(deny_unknown_fields)]
34796pub struct WorkflowJobCompleted {
34797	pub action:       WorkflowJobCompletedAction,
34798	#[serde(default, skip_serializing_if = "Option::is_none")]
34799	pub installation: Option<InstallationLite>,
34800	#[serde(default, skip_serializing_if = "Option::is_none")]
34801	pub organization: Option<Organization>,
34802	pub repository:   Repository,
34803	pub sender:       User,
34804	pub workflow_job: WorkflowJob,
34805}
34806impl From<&WorkflowJobCompleted> for WorkflowJobCompleted {
34807	fn from(value: &WorkflowJobCompleted) -> Self {
34808		value.clone()
34809	}
34810}
34811#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
34812pub enum WorkflowJobCompletedAction {
34813	#[serde(rename = "completed")]
34814	Completed,
34815}
34816impl From<&WorkflowJobCompletedAction> for WorkflowJobCompletedAction {
34817	fn from(value: &WorkflowJobCompletedAction) -> Self {
34818		value.clone()
34819	}
34820}
34821impl ToString for WorkflowJobCompletedAction {
34822	fn to_string(&self) -> String {
34823		match *self {
34824			Self::Completed => "completed".to_string(),
34825		}
34826	}
34827}
34828impl std::str::FromStr for WorkflowJobCompletedAction {
34829	type Err = &'static str;
34830
34831	fn from_str(value: &str) -> Result<Self, &'static str> {
34832		match value {
34833			"completed" => Ok(Self::Completed),
34834			_ => Err("invalid value"),
34835		}
34836	}
34837}
34838impl std::convert::TryFrom<&str> for WorkflowJobCompletedAction {
34839	type Error = &'static str;
34840
34841	fn try_from(value: &str) -> Result<Self, &'static str> {
34842		value.parse()
34843	}
34844}
34845impl std::convert::TryFrom<&String> for WorkflowJobCompletedAction {
34846	type Error = &'static str;
34847
34848	fn try_from(value: &String) -> Result<Self, &'static str> {
34849		value.parse()
34850	}
34851}
34852impl std::convert::TryFrom<String> for WorkflowJobCompletedAction {
34853	type Error = &'static str;
34854
34855	fn try_from(value: String) -> Result<Self, &'static str> {
34856		value.parse()
34857	}
34858}
34859#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
34860pub enum WorkflowJobConclusion {
34861	#[serde(rename = "success")]
34862	Success,
34863	#[serde(rename = "failure")]
34864	Failure,
34865	#[serde(rename = "cancelled")]
34866	Cancelled,
34867	#[serde(rename = "skipped")]
34868	Skipped,
34869}
34870impl From<&WorkflowJobConclusion> for WorkflowJobConclusion {
34871	fn from(value: &WorkflowJobConclusion) -> Self {
34872		value.clone()
34873	}
34874}
34875impl ToString for WorkflowJobConclusion {
34876	fn to_string(&self) -> String {
34877		match *self {
34878			Self::Success => "success".to_string(),
34879			Self::Failure => "failure".to_string(),
34880			Self::Cancelled => "cancelled".to_string(),
34881			Self::Skipped => "skipped".to_string(),
34882		}
34883	}
34884}
34885impl std::str::FromStr for WorkflowJobConclusion {
34886	type Err = &'static str;
34887
34888	fn from_str(value: &str) -> Result<Self, &'static str> {
34889		match value {
34890			"success" => Ok(Self::Success),
34891			"failure" => Ok(Self::Failure),
34892			"cancelled" => Ok(Self::Cancelled),
34893			"skipped" => Ok(Self::Skipped),
34894			_ => Err("invalid value"),
34895		}
34896	}
34897}
34898impl std::convert::TryFrom<&str> for WorkflowJobConclusion {
34899	type Error = &'static str;
34900
34901	fn try_from(value: &str) -> Result<Self, &'static str> {
34902		value.parse()
34903	}
34904}
34905impl std::convert::TryFrom<&String> for WorkflowJobConclusion {
34906	type Error = &'static str;
34907
34908	fn try_from(value: &String) -> Result<Self, &'static str> {
34909		value.parse()
34910	}
34911}
34912impl std::convert::TryFrom<String> for WorkflowJobConclusion {
34913	type Error = &'static str;
34914
34915	fn try_from(value: String) -> Result<Self, &'static str> {
34916		value.parse()
34917	}
34918}
34919#[derive(Clone, Debug, Deserialize, Serialize)]
34920#[serde(untagged)]
34921pub enum WorkflowJobEvent {
34922	Completed(WorkflowJobCompleted),
34923	InProgress(WorkflowJobInProgress),
34924	Queued(WorkflowJobQueued),
34925}
34926impl From<&WorkflowJobEvent> for WorkflowJobEvent {
34927	fn from(value: &WorkflowJobEvent) -> Self {
34928		value.clone()
34929	}
34930}
34931impl From<WorkflowJobCompleted> for WorkflowJobEvent {
34932	fn from(value: WorkflowJobCompleted) -> Self {
34933		Self::Completed(value)
34934	}
34935}
34936impl From<WorkflowJobInProgress> for WorkflowJobEvent {
34937	fn from(value: WorkflowJobInProgress) -> Self {
34938		Self::InProgress(value)
34939	}
34940}
34941impl From<WorkflowJobQueued> for WorkflowJobEvent {
34942	fn from(value: WorkflowJobQueued) -> Self {
34943		Self::Queued(value)
34944	}
34945}
34946#[derive(Clone, Debug, Deserialize, Serialize)]
34947#[serde(deny_unknown_fields)]
34948pub struct WorkflowJobInProgress {
34949	pub action:       WorkflowJobInProgressAction,
34950	#[serde(default, skip_serializing_if = "Option::is_none")]
34951	pub installation: Option<InstallationLite>,
34952	#[serde(default, skip_serializing_if = "Option::is_none")]
34953	pub organization: Option<Organization>,
34954	pub repository:   Repository,
34955	pub sender:       User,
34956	pub workflow_job: WorkflowJob,
34957}
34958impl From<&WorkflowJobInProgress> for WorkflowJobInProgress {
34959	fn from(value: &WorkflowJobInProgress) -> Self {
34960		value.clone()
34961	}
34962}
34963#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
34964pub enum WorkflowJobInProgressAction {
34965	#[serde(rename = "in_progress")]
34966	InProgress,
34967}
34968impl From<&WorkflowJobInProgressAction> for WorkflowJobInProgressAction {
34969	fn from(value: &WorkflowJobInProgressAction) -> Self {
34970		value.clone()
34971	}
34972}
34973impl ToString for WorkflowJobInProgressAction {
34974	fn to_string(&self) -> String {
34975		match *self {
34976			Self::InProgress => "in_progress".to_string(),
34977		}
34978	}
34979}
34980impl std::str::FromStr for WorkflowJobInProgressAction {
34981	type Err = &'static str;
34982
34983	fn from_str(value: &str) -> Result<Self, &'static str> {
34984		match value {
34985			"in_progress" => Ok(Self::InProgress),
34986			_ => Err("invalid value"),
34987		}
34988	}
34989}
34990impl std::convert::TryFrom<&str> for WorkflowJobInProgressAction {
34991	type Error = &'static str;
34992
34993	fn try_from(value: &str) -> Result<Self, &'static str> {
34994		value.parse()
34995	}
34996}
34997impl std::convert::TryFrom<&String> for WorkflowJobInProgressAction {
34998	type Error = &'static str;
34999
35000	fn try_from(value: &String) -> Result<Self, &'static str> {
35001		value.parse()
35002	}
35003}
35004impl std::convert::TryFrom<String> for WorkflowJobInProgressAction {
35005	type Error = &'static str;
35006
35007	fn try_from(value: String) -> Result<Self, &'static str> {
35008		value.parse()
35009	}
35010}
35011#[derive(Clone, Debug, Deserialize, Serialize)]
35012#[serde(deny_unknown_fields)]
35013pub struct WorkflowJobQueued {
35014	pub action:       WorkflowJobQueuedAction,
35015	#[serde(default, skip_serializing_if = "Option::is_none")]
35016	pub installation: Option<InstallationLite>,
35017	#[serde(default, skip_serializing_if = "Option::is_none")]
35018	pub organization: Option<Organization>,
35019	pub repository:   Repository,
35020	pub sender:       User,
35021	pub workflow_job: WorkflowJob,
35022}
35023impl From<&WorkflowJobQueued> for WorkflowJobQueued {
35024	fn from(value: &WorkflowJobQueued) -> Self {
35025		value.clone()
35026	}
35027}
35028#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35029pub enum WorkflowJobQueuedAction {
35030	#[serde(rename = "queued")]
35031	Queued,
35032}
35033impl From<&WorkflowJobQueuedAction> for WorkflowJobQueuedAction {
35034	fn from(value: &WorkflowJobQueuedAction) -> Self {
35035		value.clone()
35036	}
35037}
35038impl ToString for WorkflowJobQueuedAction {
35039	fn to_string(&self) -> String {
35040		match *self {
35041			Self::Queued => "queued".to_string(),
35042		}
35043	}
35044}
35045impl std::str::FromStr for WorkflowJobQueuedAction {
35046	type Err = &'static str;
35047
35048	fn from_str(value: &str) -> Result<Self, &'static str> {
35049		match value {
35050			"queued" => Ok(Self::Queued),
35051			_ => Err("invalid value"),
35052		}
35053	}
35054}
35055impl std::convert::TryFrom<&str> for WorkflowJobQueuedAction {
35056	type Error = &'static str;
35057
35058	fn try_from(value: &str) -> Result<Self, &'static str> {
35059		value.parse()
35060	}
35061}
35062impl std::convert::TryFrom<&String> for WorkflowJobQueuedAction {
35063	type Error = &'static str;
35064
35065	fn try_from(value: &String) -> Result<Self, &'static str> {
35066		value.parse()
35067	}
35068}
35069impl std::convert::TryFrom<String> for WorkflowJobQueuedAction {
35070	type Error = &'static str;
35071
35072	fn try_from(value: String) -> Result<Self, &'static str> {
35073		value.parse()
35074	}
35075}
35076/// The current status of the job. Can be `queued`, `in_progress`, or
35077/// `completed`.
35078#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35079pub enum WorkflowJobStatus {
35080	#[serde(rename = "queued")]
35081	Queued,
35082	#[serde(rename = "in_progress")]
35083	InProgress,
35084	#[serde(rename = "completed")]
35085	Completed,
35086}
35087impl From<&WorkflowJobStatus> for WorkflowJobStatus {
35088	fn from(value: &WorkflowJobStatus) -> Self {
35089		value.clone()
35090	}
35091}
35092impl ToString for WorkflowJobStatus {
35093	fn to_string(&self) -> String {
35094		match *self {
35095			Self::Queued => "queued".to_string(),
35096			Self::InProgress => "in_progress".to_string(),
35097			Self::Completed => "completed".to_string(),
35098		}
35099	}
35100}
35101impl std::str::FromStr for WorkflowJobStatus {
35102	type Err = &'static str;
35103
35104	fn from_str(value: &str) -> Result<Self, &'static str> {
35105		match value {
35106			"queued" => Ok(Self::Queued),
35107			"in_progress" => Ok(Self::InProgress),
35108			"completed" => Ok(Self::Completed),
35109			_ => Err("invalid value"),
35110		}
35111	}
35112}
35113impl std::convert::TryFrom<&str> for WorkflowJobStatus {
35114	type Error = &'static str;
35115
35116	fn try_from(value: &str) -> Result<Self, &'static str> {
35117		value.parse()
35118	}
35119}
35120impl std::convert::TryFrom<&String> for WorkflowJobStatus {
35121	type Error = &'static str;
35122
35123	fn try_from(value: &String) -> Result<Self, &'static str> {
35124		value.parse()
35125	}
35126}
35127impl std::convert::TryFrom<String> for WorkflowJobStatus {
35128	type Error = &'static str;
35129
35130	fn try_from(value: String) -> Result<Self, &'static str> {
35131		value.parse()
35132	}
35133}
35134#[derive(Clone, Debug, Deserialize, Serialize)]
35135#[serde(deny_unknown_fields)]
35136pub struct WorkflowRun {
35137	pub actor:                User,
35138	/// The URL to the artifacts for the workflow run.
35139	pub artifacts_url:        String,
35140	/// The URL to cancel the workflow run.
35141	pub cancel_url:           String,
35142	/// The ID of the associated check suite.
35143	pub check_suite_id:       i64,
35144	/// The node ID of the associated check suite.
35145	pub check_suite_node_id:  String,
35146	/// The URL to the associated check suite.
35147	pub check_suite_url:      String,
35148	pub conclusion:           Option<WorkflowRunConclusion>,
35149	pub created_at:           chrono::DateTime<chrono::offset::Utc>,
35150	pub display_title:        String,
35151	pub event:                String,
35152	pub head_branch:          String,
35153	pub head_commit:          CommitSimple,
35154	pub head_repository:      RepositoryLite,
35155	/// The SHA of the head commit that points to the version of the workflow
35156	/// being run.
35157	pub head_sha:             String,
35158	pub html_url:             String,
35159	/// The ID of the workflow run.
35160	pub id:                   i64,
35161	/// The URL to the jobs for the workflow run.
35162	pub jobs_url:             String,
35163	/// The URL to download the logs for the workflow run.
35164	pub logs_url:             String,
35165	/// The name of the workflow run.
35166	pub name:                 String,
35167	pub node_id:              String,
35168	/// The full path of the workflow
35169	pub path:                 String,
35170	/// The URL to the previous attempted run of this workflow, if one exists.
35171	pub previous_attempt_url: Option<String>,
35172	pub pull_requests:        Vec<WorkflowRunPullRequestsItem>,
35173	#[serde(default, skip_serializing_if = "Vec::is_empty")]
35174	pub referenced_workflows: Vec<ReferencedWorkflow>,
35175	pub repository:           RepositoryLite,
35176	/// The URL to rerun the workflow run.
35177	pub rerun_url:            String,
35178	/// Attempt number of the run, 1 for first attempt and higher if the
35179	/// workflow was re-run.
35180	pub run_attempt:          i64,
35181	/// The auto incrementing run number for the workflow run.
35182	pub run_number:           i64,
35183	/// The start time of the latest run. Resets on re-run.
35184	pub run_started_at:       chrono::DateTime<chrono::offset::Utc>,
35185	pub status:               WorkflowRunStatus,
35186	pub triggering_actor:     User,
35187	pub updated_at:           chrono::DateTime<chrono::offset::Utc>,
35188	/// The URL to the workflow run.
35189	pub url:                  String,
35190	/// The ID of the parent workflow.
35191	pub workflow_id:          i64,
35192	/// The URL to the workflow.
35193	pub workflow_url:         String,
35194}
35195impl From<&WorkflowRun> for WorkflowRun {
35196	fn from(value: &WorkflowRun) -> Self {
35197		value.clone()
35198	}
35199}
35200#[derive(Clone, Debug, Deserialize, Serialize)]
35201#[serde(deny_unknown_fields)]
35202pub struct WorkflowRunCompleted {
35203	pub action:       WorkflowRunCompletedAction,
35204	#[serde(default, skip_serializing_if = "Option::is_none")]
35205	pub installation: Option<InstallationLite>,
35206	#[serde(default, skip_serializing_if = "Option::is_none")]
35207	pub organization: Option<Organization>,
35208	pub repository:   Repository,
35209	pub sender:       User,
35210	pub workflow:     Workflow,
35211	pub workflow_run: WorkflowRun,
35212}
35213impl From<&WorkflowRunCompleted> for WorkflowRunCompleted {
35214	fn from(value: &WorkflowRunCompleted) -> Self {
35215		value.clone()
35216	}
35217}
35218#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35219pub enum WorkflowRunCompletedAction {
35220	#[serde(rename = "completed")]
35221	Completed,
35222}
35223impl From<&WorkflowRunCompletedAction> for WorkflowRunCompletedAction {
35224	fn from(value: &WorkflowRunCompletedAction) -> Self {
35225		value.clone()
35226	}
35227}
35228impl ToString for WorkflowRunCompletedAction {
35229	fn to_string(&self) -> String {
35230		match *self {
35231			Self::Completed => "completed".to_string(),
35232		}
35233	}
35234}
35235impl std::str::FromStr for WorkflowRunCompletedAction {
35236	type Err = &'static str;
35237
35238	fn from_str(value: &str) -> Result<Self, &'static str> {
35239		match value {
35240			"completed" => Ok(Self::Completed),
35241			_ => Err("invalid value"),
35242		}
35243	}
35244}
35245impl std::convert::TryFrom<&str> for WorkflowRunCompletedAction {
35246	type Error = &'static str;
35247
35248	fn try_from(value: &str) -> Result<Self, &'static str> {
35249		value.parse()
35250	}
35251}
35252impl std::convert::TryFrom<&String> for WorkflowRunCompletedAction {
35253	type Error = &'static str;
35254
35255	fn try_from(value: &String) -> Result<Self, &'static str> {
35256		value.parse()
35257	}
35258}
35259impl std::convert::TryFrom<String> for WorkflowRunCompletedAction {
35260	type Error = &'static str;
35261
35262	fn try_from(value: String) -> Result<Self, &'static str> {
35263		value.parse()
35264	}
35265}
35266#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35267pub enum WorkflowRunConclusion {
35268	#[serde(rename = "success")]
35269	Success,
35270	#[serde(rename = "failure")]
35271	Failure,
35272	#[serde(rename = "neutral")]
35273	Neutral,
35274	#[serde(rename = "cancelled")]
35275	Cancelled,
35276	#[serde(rename = "timed_out")]
35277	TimedOut,
35278	#[serde(rename = "action_required")]
35279	ActionRequired,
35280	#[serde(rename = "stale")]
35281	Stale,
35282	#[serde(rename = "skipped")]
35283	Skipped,
35284}
35285impl From<&WorkflowRunConclusion> for WorkflowRunConclusion {
35286	fn from(value: &WorkflowRunConclusion) -> Self {
35287		value.clone()
35288	}
35289}
35290impl ToString for WorkflowRunConclusion {
35291	fn to_string(&self) -> String {
35292		match *self {
35293			Self::Success => "success".to_string(),
35294			Self::Failure => "failure".to_string(),
35295			Self::Neutral => "neutral".to_string(),
35296			Self::Cancelled => "cancelled".to_string(),
35297			Self::TimedOut => "timed_out".to_string(),
35298			Self::ActionRequired => "action_required".to_string(),
35299			Self::Stale => "stale".to_string(),
35300			Self::Skipped => "skipped".to_string(),
35301		}
35302	}
35303}
35304impl std::str::FromStr for WorkflowRunConclusion {
35305	type Err = &'static str;
35306
35307	fn from_str(value: &str) -> Result<Self, &'static str> {
35308		match value {
35309			"success" => Ok(Self::Success),
35310			"failure" => Ok(Self::Failure),
35311			"neutral" => Ok(Self::Neutral),
35312			"cancelled" => Ok(Self::Cancelled),
35313			"timed_out" => Ok(Self::TimedOut),
35314			"action_required" => Ok(Self::ActionRequired),
35315			"stale" => Ok(Self::Stale),
35316			"skipped" => Ok(Self::Skipped),
35317			_ => Err("invalid value"),
35318		}
35319	}
35320}
35321impl std::convert::TryFrom<&str> for WorkflowRunConclusion {
35322	type Error = &'static str;
35323
35324	fn try_from(value: &str) -> Result<Self, &'static str> {
35325		value.parse()
35326	}
35327}
35328impl std::convert::TryFrom<&String> for WorkflowRunConclusion {
35329	type Error = &'static str;
35330
35331	fn try_from(value: &String) -> Result<Self, &'static str> {
35332		value.parse()
35333	}
35334}
35335impl std::convert::TryFrom<String> for WorkflowRunConclusion {
35336	type Error = &'static str;
35337
35338	fn try_from(value: String) -> Result<Self, &'static str> {
35339		value.parse()
35340	}
35341}
35342#[derive(Clone, Debug, Deserialize, Serialize)]
35343#[serde(untagged)]
35344pub enum WorkflowRunEvent {
35345	Completed(WorkflowRunCompleted),
35346	InProgress(WorkflowRunInProgress),
35347	Requested(WorkflowRunRequested),
35348}
35349impl From<&WorkflowRunEvent> for WorkflowRunEvent {
35350	fn from(value: &WorkflowRunEvent) -> Self {
35351		value.clone()
35352	}
35353}
35354impl From<WorkflowRunCompleted> for WorkflowRunEvent {
35355	fn from(value: WorkflowRunCompleted) -> Self {
35356		Self::Completed(value)
35357	}
35358}
35359impl From<WorkflowRunInProgress> for WorkflowRunEvent {
35360	fn from(value: WorkflowRunInProgress) -> Self {
35361		Self::InProgress(value)
35362	}
35363}
35364impl From<WorkflowRunRequested> for WorkflowRunEvent {
35365	fn from(value: WorkflowRunRequested) -> Self {
35366		Self::Requested(value)
35367	}
35368}
35369#[derive(Clone, Debug, Deserialize, Serialize)]
35370#[serde(deny_unknown_fields)]
35371pub struct WorkflowRunInProgress {
35372	pub action:       WorkflowRunInProgressAction,
35373	#[serde(default, skip_serializing_if = "Option::is_none")]
35374	pub installation: Option<InstallationLite>,
35375	#[serde(default, skip_serializing_if = "Option::is_none")]
35376	pub organization: Option<Organization>,
35377	pub repository:   Repository,
35378	pub sender:       User,
35379	pub workflow:     Workflow,
35380	pub workflow_run: WorkflowRun,
35381}
35382impl From<&WorkflowRunInProgress> for WorkflowRunInProgress {
35383	fn from(value: &WorkflowRunInProgress) -> Self {
35384		value.clone()
35385	}
35386}
35387#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35388pub enum WorkflowRunInProgressAction {
35389	#[serde(rename = "in_progress")]
35390	InProgress,
35391}
35392impl From<&WorkflowRunInProgressAction> for WorkflowRunInProgressAction {
35393	fn from(value: &WorkflowRunInProgressAction) -> Self {
35394		value.clone()
35395	}
35396}
35397impl ToString for WorkflowRunInProgressAction {
35398	fn to_string(&self) -> String {
35399		match *self {
35400			Self::InProgress => "in_progress".to_string(),
35401		}
35402	}
35403}
35404impl std::str::FromStr for WorkflowRunInProgressAction {
35405	type Err = &'static str;
35406
35407	fn from_str(value: &str) -> Result<Self, &'static str> {
35408		match value {
35409			"in_progress" => Ok(Self::InProgress),
35410			_ => Err("invalid value"),
35411		}
35412	}
35413}
35414impl std::convert::TryFrom<&str> for WorkflowRunInProgressAction {
35415	type Error = &'static str;
35416
35417	fn try_from(value: &str) -> Result<Self, &'static str> {
35418		value.parse()
35419	}
35420}
35421impl std::convert::TryFrom<&String> for WorkflowRunInProgressAction {
35422	type Error = &'static str;
35423
35424	fn try_from(value: &String) -> Result<Self, &'static str> {
35425		value.parse()
35426	}
35427}
35428impl std::convert::TryFrom<String> for WorkflowRunInProgressAction {
35429	type Error = &'static str;
35430
35431	fn try_from(value: String) -> Result<Self, &'static str> {
35432		value.parse()
35433	}
35434}
35435#[derive(Clone, Debug, Deserialize, Serialize)]
35436#[serde(deny_unknown_fields)]
35437pub struct WorkflowRunPullRequestsItem {
35438	pub base:   WorkflowRunPullRequestsItemBase,
35439	pub head:   WorkflowRunPullRequestsItemHead,
35440	pub id:     f64,
35441	pub number: f64,
35442	pub url:    String,
35443}
35444impl From<&WorkflowRunPullRequestsItem> for WorkflowRunPullRequestsItem {
35445	fn from(value: &WorkflowRunPullRequestsItem) -> Self {
35446		value.clone()
35447	}
35448}
35449#[derive(Clone, Debug, Deserialize, Serialize)]
35450#[serde(deny_unknown_fields)]
35451pub struct WorkflowRunPullRequestsItemBase {
35452	#[serde(rename = "ref")]
35453	pub ref_: String,
35454	pub repo: RepoRef,
35455	pub sha:  String,
35456}
35457impl From<&WorkflowRunPullRequestsItemBase> for WorkflowRunPullRequestsItemBase {
35458	fn from(value: &WorkflowRunPullRequestsItemBase) -> Self {
35459		value.clone()
35460	}
35461}
35462#[derive(Clone, Debug, Deserialize, Serialize)]
35463#[serde(deny_unknown_fields)]
35464pub struct WorkflowRunPullRequestsItemHead {
35465	#[serde(rename = "ref")]
35466	pub ref_: String,
35467	pub repo: RepoRef,
35468	pub sha:  String,
35469}
35470impl From<&WorkflowRunPullRequestsItemHead> for WorkflowRunPullRequestsItemHead {
35471	fn from(value: &WorkflowRunPullRequestsItemHead) -> Self {
35472		value.clone()
35473	}
35474}
35475#[derive(Clone, Debug, Deserialize, Serialize)]
35476#[serde(deny_unknown_fields)]
35477pub struct WorkflowRunRequested {
35478	pub action:       WorkflowRunRequestedAction,
35479	#[serde(default, skip_serializing_if = "Option::is_none")]
35480	pub installation: Option<InstallationLite>,
35481	#[serde(default, skip_serializing_if = "Option::is_none")]
35482	pub organization: Option<Organization>,
35483	pub repository:   Repository,
35484	pub sender:       User,
35485	pub workflow:     Workflow,
35486	pub workflow_run: WorkflowRun,
35487}
35488impl From<&WorkflowRunRequested> for WorkflowRunRequested {
35489	fn from(value: &WorkflowRunRequested) -> Self {
35490		value.clone()
35491	}
35492}
35493#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35494pub enum WorkflowRunRequestedAction {
35495	#[serde(rename = "requested")]
35496	Requested,
35497}
35498impl From<&WorkflowRunRequestedAction> for WorkflowRunRequestedAction {
35499	fn from(value: &WorkflowRunRequestedAction) -> Self {
35500		value.clone()
35501	}
35502}
35503impl ToString for WorkflowRunRequestedAction {
35504	fn to_string(&self) -> String {
35505		match *self {
35506			Self::Requested => "requested".to_string(),
35507		}
35508	}
35509}
35510impl std::str::FromStr for WorkflowRunRequestedAction {
35511	type Err = &'static str;
35512
35513	fn from_str(value: &str) -> Result<Self, &'static str> {
35514		match value {
35515			"requested" => Ok(Self::Requested),
35516			_ => Err("invalid value"),
35517		}
35518	}
35519}
35520impl std::convert::TryFrom<&str> for WorkflowRunRequestedAction {
35521	type Error = &'static str;
35522
35523	fn try_from(value: &str) -> Result<Self, &'static str> {
35524		value.parse()
35525	}
35526}
35527impl std::convert::TryFrom<&String> for WorkflowRunRequestedAction {
35528	type Error = &'static str;
35529
35530	fn try_from(value: &String) -> Result<Self, &'static str> {
35531		value.parse()
35532	}
35533}
35534impl std::convert::TryFrom<String> for WorkflowRunRequestedAction {
35535	type Error = &'static str;
35536
35537	fn try_from(value: String) -> Result<Self, &'static str> {
35538		value.parse()
35539	}
35540}
35541#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35542pub enum WorkflowRunStatus {
35543	#[serde(rename = "requested")]
35544	Requested,
35545	#[serde(rename = "in_progress")]
35546	InProgress,
35547	#[serde(rename = "completed")]
35548	Completed,
35549	#[serde(rename = "queued")]
35550	Queued,
35551	#[serde(rename = "waiting")]
35552	Waiting,
35553}
35554impl From<&WorkflowRunStatus> for WorkflowRunStatus {
35555	fn from(value: &WorkflowRunStatus) -> Self {
35556		value.clone()
35557	}
35558}
35559impl ToString for WorkflowRunStatus {
35560	fn to_string(&self) -> String {
35561		match *self {
35562			Self::Requested => "requested".to_string(),
35563			Self::InProgress => "in_progress".to_string(),
35564			Self::Completed => "completed".to_string(),
35565			Self::Queued => "queued".to_string(),
35566			Self::Waiting => "waiting".to_string(),
35567		}
35568	}
35569}
35570impl std::str::FromStr for WorkflowRunStatus {
35571	type Err = &'static str;
35572
35573	fn from_str(value: &str) -> Result<Self, &'static str> {
35574		match value {
35575			"requested" => Ok(Self::Requested),
35576			"in_progress" => Ok(Self::InProgress),
35577			"completed" => Ok(Self::Completed),
35578			"queued" => Ok(Self::Queued),
35579			"waiting" => Ok(Self::Waiting),
35580			_ => Err("invalid value"),
35581		}
35582	}
35583}
35584impl std::convert::TryFrom<&str> for WorkflowRunStatus {
35585	type Error = &'static str;
35586
35587	fn try_from(value: &str) -> Result<Self, &'static str> {
35588		value.parse()
35589	}
35590}
35591impl std::convert::TryFrom<&String> for WorkflowRunStatus {
35592	type Error = &'static str;
35593
35594	fn try_from(value: &String) -> Result<Self, &'static str> {
35595		value.parse()
35596	}
35597}
35598impl std::convert::TryFrom<String> for WorkflowRunStatus {
35599	type Error = &'static str;
35600
35601	fn try_from(value: String) -> Result<Self, &'static str> {
35602		value.parse()
35603	}
35604}
35605#[derive(Clone, Debug, Deserialize, Serialize)]
35606#[serde(untagged)]
35607pub enum WorkflowStep {
35608	InProgress(WorkflowStepInProgress),
35609	Completed(WorkflowStepCompleted),
35610}
35611impl From<&WorkflowStep> for WorkflowStep {
35612	fn from(value: &WorkflowStep) -> Self {
35613		value.clone()
35614	}
35615}
35616impl From<WorkflowStepInProgress> for WorkflowStep {
35617	fn from(value: WorkflowStepInProgress) -> Self {
35618		Self::InProgress(value)
35619	}
35620}
35621impl From<WorkflowStepCompleted> for WorkflowStep {
35622	fn from(value: WorkflowStepCompleted) -> Self {
35623		Self::Completed(value)
35624	}
35625}
35626#[derive(Clone, Debug, Deserialize, Serialize)]
35627#[serde(deny_unknown_fields)]
35628pub struct WorkflowStepCompleted {
35629	pub completed_at: chrono::DateTime<chrono::offset::Utc>,
35630	pub conclusion:   WorkflowStepCompletedConclusion,
35631	pub name:         String,
35632	pub number:       i64,
35633	pub started_at:   chrono::DateTime<chrono::offset::Utc>,
35634	pub status:       WorkflowStepCompletedStatus,
35635}
35636impl From<&WorkflowStepCompleted> for WorkflowStepCompleted {
35637	fn from(value: &WorkflowStepCompleted) -> Self {
35638		value.clone()
35639	}
35640}
35641#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35642pub enum WorkflowStepCompletedConclusion {
35643	#[serde(rename = "failure")]
35644	Failure,
35645	#[serde(rename = "skipped")]
35646	Skipped,
35647	#[serde(rename = "success")]
35648	Success,
35649}
35650impl From<&WorkflowStepCompletedConclusion> for WorkflowStepCompletedConclusion {
35651	fn from(value: &WorkflowStepCompletedConclusion) -> Self {
35652		value.clone()
35653	}
35654}
35655impl ToString for WorkflowStepCompletedConclusion {
35656	fn to_string(&self) -> String {
35657		match *self {
35658			Self::Failure => "failure".to_string(),
35659			Self::Skipped => "skipped".to_string(),
35660			Self::Success => "success".to_string(),
35661		}
35662	}
35663}
35664impl std::str::FromStr for WorkflowStepCompletedConclusion {
35665	type Err = &'static str;
35666
35667	fn from_str(value: &str) -> Result<Self, &'static str> {
35668		match value {
35669			"failure" => Ok(Self::Failure),
35670			"skipped" => Ok(Self::Skipped),
35671			"success" => Ok(Self::Success),
35672			_ => Err("invalid value"),
35673		}
35674	}
35675}
35676impl std::convert::TryFrom<&str> for WorkflowStepCompletedConclusion {
35677	type Error = &'static str;
35678
35679	fn try_from(value: &str) -> Result<Self, &'static str> {
35680		value.parse()
35681	}
35682}
35683impl std::convert::TryFrom<&String> for WorkflowStepCompletedConclusion {
35684	type Error = &'static str;
35685
35686	fn try_from(value: &String) -> Result<Self, &'static str> {
35687		value.parse()
35688	}
35689}
35690impl std::convert::TryFrom<String> for WorkflowStepCompletedConclusion {
35691	type Error = &'static str;
35692
35693	fn try_from(value: String) -> Result<Self, &'static str> {
35694		value.parse()
35695	}
35696}
35697#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35698pub enum WorkflowStepCompletedStatus {
35699	#[serde(rename = "completed")]
35700	Completed,
35701}
35702impl From<&WorkflowStepCompletedStatus> for WorkflowStepCompletedStatus {
35703	fn from(value: &WorkflowStepCompletedStatus) -> Self {
35704		value.clone()
35705	}
35706}
35707impl ToString for WorkflowStepCompletedStatus {
35708	fn to_string(&self) -> String {
35709		match *self {
35710			Self::Completed => "completed".to_string(),
35711		}
35712	}
35713}
35714impl std::str::FromStr for WorkflowStepCompletedStatus {
35715	type Err = &'static str;
35716
35717	fn from_str(value: &str) -> Result<Self, &'static str> {
35718		match value {
35719			"completed" => Ok(Self::Completed),
35720			_ => Err("invalid value"),
35721		}
35722	}
35723}
35724impl std::convert::TryFrom<&str> for WorkflowStepCompletedStatus {
35725	type Error = &'static str;
35726
35727	fn try_from(value: &str) -> Result<Self, &'static str> {
35728		value.parse()
35729	}
35730}
35731impl std::convert::TryFrom<&String> for WorkflowStepCompletedStatus {
35732	type Error = &'static str;
35733
35734	fn try_from(value: &String) -> Result<Self, &'static str> {
35735		value.parse()
35736	}
35737}
35738impl std::convert::TryFrom<String> for WorkflowStepCompletedStatus {
35739	type Error = &'static str;
35740
35741	fn try_from(value: String) -> Result<Self, &'static str> {
35742		value.parse()
35743	}
35744}
35745#[derive(Clone, Debug, Deserialize, Serialize)]
35746#[serde(deny_unknown_fields)]
35747pub struct WorkflowStepInProgress {
35748	pub completed_at: (),
35749	pub conclusion:   (),
35750	pub name:         String,
35751	pub number:       i64,
35752	pub started_at:   chrono::DateTime<chrono::offset::Utc>,
35753	pub status:       WorkflowStepInProgressStatus,
35754}
35755impl From<&WorkflowStepInProgress> for WorkflowStepInProgress {
35756	fn from(value: &WorkflowStepInProgress) -> Self {
35757		value.clone()
35758	}
35759}
35760#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
35761pub enum WorkflowStepInProgressStatus {
35762	#[serde(rename = "in_progress")]
35763	InProgress,
35764}
35765impl From<&WorkflowStepInProgressStatus> for WorkflowStepInProgressStatus {
35766	fn from(value: &WorkflowStepInProgressStatus) -> Self {
35767		value.clone()
35768	}
35769}
35770impl ToString for WorkflowStepInProgressStatus {
35771	fn to_string(&self) -> String {
35772		match *self {
35773			Self::InProgress => "in_progress".to_string(),
35774		}
35775	}
35776}
35777impl std::str::FromStr for WorkflowStepInProgressStatus {
35778	type Err = &'static str;
35779
35780	fn from_str(value: &str) -> Result<Self, &'static str> {
35781		match value {
35782			"in_progress" => Ok(Self::InProgress),
35783			_ => Err("invalid value"),
35784		}
35785	}
35786}
35787impl std::convert::TryFrom<&str> for WorkflowStepInProgressStatus {
35788	type Error = &'static str;
35789
35790	fn try_from(value: &str) -> Result<Self, &'static str> {
35791		value.parse()
35792	}
35793}
35794impl std::convert::TryFrom<&String> for WorkflowStepInProgressStatus {
35795	type Error = &'static str;
35796
35797	fn try_from(value: &String) -> Result<Self, &'static str> {
35798		value.parse()
35799	}
35800}
35801impl std::convert::TryFrom<String> for WorkflowStepInProgressStatus {
35802	type Error = &'static str;
35803
35804	fn try_from(value: String) -> Result<Self, &'static str> {
35805		value.parse()
35806	}
35807}
35808pub mod defaults {
35809	pub(super) fn default_bool<const V: bool>() -> bool {
35810		V
35811	}
35812}