=begin pod

=head1 NAME

RepositoryEvent - simplified interface for repository events

=head1 SYNOPSIS

=begin code :lang<raku>
use RepositoryEvent;

my $raw = JSON::RepositoryEvent.new(...);
my $event = RepositoryEvent($raw.payload);
=end code

=head1 DESCRIPTION

The C<RepositoryEvent> distribution provides a simplified interface
to the objects created by the
L<C<JSON::RepositoryEvent>|https://raku.land/zef:lizmat/JSON::RepositoryEvent>
class, attempting to unify the information provided by different services
(currently C<GitHub> and C<Forgejo> (Codeberg) support is provided).

=head1 SUBCLASSES

=head2 RepositoryEvent::Asset

An asset as found in a C<RepositoryEvent::Release> object.

=head3 id

The ID of the asset.

=head3 label

The label of the asset.

=head3 name

The name of the asset.

=head3 state

The state of the asset, one of:

=item uploaded

=head3 url

The URL with the information about this asset.

=head3 updated-at

A C<DateTime> object indicating when the asset was updated.

=head2 RepositoryEvent::CheckRun

=head3 action

The action that was performed, one of:

=item completed
=item created
=item requested_action
=item rerequested

=head3 completed-at

A C<DateTime> object indicating when the run was completed.

=head3 conclusion

The conclusion of this run.

=head3 name

The name of the test-suite (usually "GitHub Actions").

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 sha

The SHA of the most recent commit that was being tested.

=head3 started-at

A C<DateTime> object indicating when the run was started.

=head2 RepositoryEvent::CheckSuite

Status of a test-suite (usually a set of Github Actions).  Provides these
methods:

=head3 branch

The name of the branch that was being tested.

=head3 commit

The SHA of the most recent commit that was being tested.

=head3 conclusion

The conclusion of running the test-suite: one of:

=item success
=item failure
=item neutral
=item cancelled
=item timed_out
=item action_required
=item stale

=head3 name

The name of the test-suite (usually "GitHub Actions").

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Commit

Representing a commit in the repository.  Only seen as one of
the commits in a C<RepositoryEvent::Push> event.  Provides these
methods:

=head3 added

A C<List> of filenames that were added in this commit.

=head3 affected

A C<List> of filenames that were affected by this commit (as in either
added, modified or removed).

=head3 author

The name of the author.

=head3 branch

The name of the branch.

=head3 committer

The name of the person who added this commit to the repository.

=head3 message

The message of the commit (excluding the first line, which is considered
to be the title).

=head3 modified

A C<List> of filenames that were modified by this commit.

=head3 removed

A C<List> of filenames that were removed by this commit.

=head3 sha

The SHA of the commit.

=head3 title

The title of the commit (as in the first line of the messaged).

=head3 updated-at

A C<DateTime> object indicating when the commit was updated.

=head3 url

The URL of the commit in the repository.

=head2 RepositoryEvent::Comment

=head3 body

The body of the comment.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 type

The type of comment, one of:

=item commit
=item pull-request-review

=head3 url

The URL of the comment.

=head2 RepositoryEvent::Create

Something was created in the repository.

=head3 name

The name of the object being created.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 type

The type of object being created.  One of:

=item branch
=item tag

=head2 RepositoryEvent::Delete

Something was removed from the repository.

=head3 name

The name of the object being removed.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 type

The type of object being removed.  One of:

=item branch
=item tag

=head2 RepositoryEvent::Fork

A repository has been forked.

=head3 forkee-name

The (short) name of the fork of the repository, excludes login name
of the owner of the fork.

=head3 forkee-full-name

The (long) name of the fork of the repository, includes login name
of the owner of the fork.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::IssueComment

An action has been performed on a comment on an issue.

=head3 action

The action performed on the issue comment.  One of:

=item created
=item deleted
=item edited
=item pinned
=item unpinned

=head3 actor

The name of the person performing the action on the issue comment.

=head3 title

The title of this issue comment.

=head3 url

The URL of this issue comment.

=head2 RepositoryEvent::Issues

An activity related to an issue has occurred.

=head3 action

The action performed on the issue.  One of:

=item assigned
=item closed
=item deleted
=item demilestoned
=item edited
=item field_added
=item field_removed
=item labeled
=item locked
=item milestoned
=item opened
=item pinned
=item reopened
=item transferred
=item typed
=item unassigned
=item unlabeled
=item unlocked
=item unpinned
=item untyped

=head3 actor

The person performing the action on the issue.

=head3 number

The issue number.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 assignee

The name of the person the issue was assigned to (if applicable).

=head3 number

The issue number.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 title

The title of this issue.

=head3 url

The URL of this issue.

=head2 RepositoryEvent::Label

An action was performed on a label.

=head3 action

The action that was performed on a label.  One of:

=item created
=item deleted
=item edited

=head3 name

The name of the label.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Page

An action was done on a page in a C<RepositoryEvent::Wiki> object.

=head3 action

The action performed.  One of:

=item created
=item edited

=head3 name

The name of the wiki page.

=head3 title

The title of the wiki page.

=head3 url

The URL of the wiki page.

=head2 RepositoryEvent::Ping

A repository was created.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head2 RepositoryEvent::Public

A repository was made public.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::PullRequest

Representing actions related to a Pull Request.  Provides these methods:

=head3 action

The action that was performed on the Pull Request.  One of these:

=item assigned
=item auto_merge_disabled
=item auto_merge_enabled
=item closed
=item converted_to_draft
=item demilestoned
=item dequequed
=item edited
=item enqueued
=item labeled
=item locked
=item milestoned
=item opened
=item ready_for_review
=item reopened
=item review_request_removed
=item review_requested
=item synchronize
=item unassigned
=item unlabeled
=item unlocked

=head3 login

The login name of the person doing the action on the Pull Request.

=head3 number

The number of the Pull Request.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 title

The title of the Pull Request.

=head3 url

The URL of the Pull Request.

=head2 RepositoryEvent::PullRequestReview

Representing actions related to a review of a Pull Request.  Provides
these methods:

=head3 action

The action that was performed on the review of the Pull Request.  One
of these:

=item dismissed
=item edited
=item submitted

=head3 login

The login name of the person doing the action on the review of the
Pull Request.

=head3 number

The number of the Pull Request.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 title

The title of the Pull Request.

=head3 url

The URL of the Pull Request.

=head2 RepositoryEvent::PullRequestReviewThread

Representing actions related to a review thread of a Pull Request.
Provides these methods:

=head3 action

The action that was performed on the review thread of the Pull Request.
One of these:

=item resolved
=item unresolved

=head3 login

The login name of the person doing the action on the review thread
of the Pull Request.

=head3 number

The number of the Pull Request.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 title

The title of the Pull Request.

=head3 url

The URL of the Pull Request.

=head2 RepositoryEvent::Push

Representing the push of one or more commits to a service.  Provides these
methods:

=head3 actor

The name of the person performing the push.

=head3 branch

The name of the branch to which one or more commits were pushed.

=head3 commits

A C<List> of one or more C<RepositoryEvent::Commit> objects, one for each
commit that was part of the push to the repository.

=head3 compare-url

The URL to see the changes that were made by this push to the repository.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Release

An action was performed on a release.

=head3 action

The action that was performed.  One of:

=item created
=item deleted
=item edited
=item prereleased
=item published
=item released
=item unpublished

=head3 assets

A C<List> of C<RepositoryAsset> objects of this release.

=head3 actor

The name of the person performing the action on the release.

=head3 author

The author of this release.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Repository

An action was performed on the whole of a repository.

=head3 action

The action that was performed.  One of:

=item archived
=item created
=item deleted
=item edited
=item privatized
=item publicized
=item renamed
=item transferred
=item unarchived

=head3 actor

The name of the person performing the action.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Star

An action was performed on a star in a repository.

=head3 action

The action being performed.  One of:

=item created
=item deleted

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Status

The status of a commit was changed.

=head3 actor

The name of the person performing the action.

=head3 author

The name of the author of the commit.

=head3 committer

The name of the committer of the commit.

=head3 message

The message of the commit.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 sha

The SHA of the commit.

=head3 state

The state of the commit.  One of:

=item error
=item failure
=item pending
=item success

=head3 title

The title of the commit.

=head3 updated-at

A C<DateTime> object indicating when the status of the commit was
updated.

=head3 url

The URL of the commit.

=head2 RepositoryEvent::Watch

Someone started watching the repository.

=head3 actor

The name of the person who started watching the repository.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::Wiki

An action was performed in the wiki.

=head3 actor

The name of the person who performed the action in the repository.

=head3 pages

A C<List> of C<RepositoryEvent::Page> objects representing the pages
that were affected in the wiki.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head2 RepositoryEvent::WorkflowJob

A workflow job was completed.

=head3 completed-at

A C<DateTime> object representing when the workflow job was completed.

=head3 conclusion

The conclusion of this workflow job.  One of:

=item action_required
=item cancelled
=item failure
=item neutral
=item skipped
=item success
=item timed_out

=head3 name

The name of this workflow job.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 sha

The SHA of this workflow job.

=head3 url

The URL of this workflow job.

=head2 RepositoryEvent::WorkflowRun

A workflow run was completed.

=head3 conclusion

The conclusion of this workflow job.  One of:

=item action_required
=item cancelled
=item failure
=item neutral
=item skipped
=item stale
=item startup_failure
=item success
=item timed_out

=head3 name

The name of this workflow run.

=head3 repo-name

The (short) name of the repository, excludes login name of the owner.

=head3 repo-full-name

The (long) name of the repository, includes login name of the owner.

=head3 repo-stars

The number of stars the repository has gotten from users.

=head3 repo-issues

The number of open issues in the repository.

=head3 sha

The SHA of the commit that caused this workflow run.

=head3 updated-at

A C<DateTime> object representing when the workflow run was updated.

=head3 url

The URL of this workflow job.

=head1 CREDITS

This module has been inspired by some of the internals of
L<C<Geth>|https://github.com/Raku/geth>, developed by I<Zoffix Znet>.

=head1 AUTHOR

Elizabeth Mattijsen <liz@raku.rocks>

=head1 COPYRIGHT AND LICENSE

Copyright 2026 Elizabeth Mattijsen

Source can be located at: https://codeberg.org/lizmat/RepositoryEvent .
Comments and Pull Requests are welcome.

If you like this module, or what I'm doing more generally, committing to a
L<small sponsorship|https://github.com/sponsors/lizmat/>  would mean a great
deal to me!

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.

=end pod

# vim: expandtab shiftwidth=4
