···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Actor\Defs\BskyAppStatePref\BskyAppProgressGuide;
77+use SocialDept\Schema\Generated\App\Bsky\Actor\Nux;
88+99+/**
1010+ * A grab bag of state that's specific to the bsky.app program. Third-party apps
1111+ * shouldn't use this.
1212+ *
1313+ * Lexicon: app.bsky.actor.defs.bskyAppStatePref
1414+ * Type: object
1515+ *
1616+ * @property mixed $activeProgressGuide
1717+ * @property array<string>|null $queuedNudges An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.
1818+ * @property array<Nux>|null $nuxs Storage for NUXs the user has encountered.
1919+ *
2020+ * Constraints:
2121+ * - queuedNudges: Max length: 1000
2222+ * - nuxs: Max length: 100
2323+ */
2424+class BskyAppStatePref extends Data
2525+{
2626+2727+ /**
2828+ * @param array<string>|null $queuedNudges An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.
2929+ * @param array<Nux>|null $nuxs Storage for NUXs the user has encountered.
3030+ */
3131+ public function __construct(
3232+ public readonly mixed $activeProgressGuide = null,
3333+ public readonly ?array $queuedNudges = null,
3434+ public readonly ?array $nuxs = null
3535+ ) {}
3636+3737+ /**
3838+ * Get the lexicon NSID for this data type.
3939+ *
4040+ * @return string
4141+ */
4242+ public static function getLexicon(): string
4343+ {
4444+ return 'app.bsky.actor.defs.bskyAppStatePref';
4545+ }
4646+4747+4848+ /**
4949+ * Create an instance from an array.
5050+ *
5151+ * @param array $data The data array
5252+ * @return static
5353+ */
5454+ public static function fromArray(array $data): static
5555+ {
5656+ return new static(
5757+ activeProgressGuide: $data['activeProgressGuide'] ?? null,
5858+ queuedNudges: $data['queuedNudges'] ?? null,
5959+ nuxs: isset($data['nuxs']) ? array_map(fn ($item) => Defs::fromArray($item), $data['nuxs']) : []
6060+ );
6161+ }
6262+6363+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: app.bsky.actor.defs.feedViewPref
99+ * Type: object
1010+ *
1111+ * @property string $feed The URI of the feed, or an identifier which describes the feed.
1212+ * @property bool|null $hideReplies Hide replies in the feed.
1313+ * @property bool|null $hideRepliesByUnfollowed Hide replies in the feed if they are not by followed users.
1414+ * @property int|null $hideRepliesByLikeCount Hide replies in the feed if they do not have this number of likes.
1515+ * @property bool|null $hideReposts Hide reposts in the feed.
1616+ * @property bool|null $hideQuotePosts Hide quote posts in the feed.
1717+ *
1818+ * Constraints:
1919+ * - Required: feed
2020+ */
2121+class FeedViewPref extends Data
2222+{
2323+2424+ /**
2525+ * @param string $feed The URI of the feed, or an identifier which describes the feed.
2626+ * @param bool|null $hideReplies Hide replies in the feed.
2727+ * @param bool|null $hideRepliesByUnfollowed Hide replies in the feed if they are not by followed users.
2828+ * @param int|null $hideRepliesByLikeCount Hide replies in the feed if they do not have this number of likes.
2929+ * @param bool|null $hideReposts Hide reposts in the feed.
3030+ * @param bool|null $hideQuotePosts Hide quote posts in the feed.
3131+ */
3232+ public function __construct(
3333+ public readonly string $feed,
3434+ public readonly ?bool $hideReplies = null,
3535+ public readonly ?bool $hideRepliesByUnfollowed = null,
3636+ public readonly ?int $hideRepliesByLikeCount = null,
3737+ public readonly ?bool $hideReposts = null,
3838+ public readonly ?bool $hideQuotePosts = null
3939+ ) {}
4040+4141+ /**
4242+ * Get the lexicon NSID for this data type.
4343+ *
4444+ * @return string
4545+ */
4646+ public static function getLexicon(): string
4747+ {
4848+ return 'app.bsky.actor.defs.feedViewPref';
4949+ }
5050+5151+5252+ /**
5353+ * Create an instance from an array.
5454+ *
5555+ * @param array $data The data array
5656+ * @return static
5757+ */
5858+ public static function fromArray(array $data): static
5959+ {
6060+ return new static(
6161+ feed: $data['feed'],
6262+ hideReplies: $data['hideReplies'] ?? null,
6363+ hideRepliesByUnfollowed: $data['hideRepliesByUnfollowed'] ?? null,
6464+ hideRepliesByLikeCount: $data['hideRepliesByLikeCount'] ?? null,
6565+ hideReposts: $data['hideReposts'] ?? null,
6666+ hideQuotePosts: $data['hideQuotePosts'] ?? null
6767+ );
6868+ }
6969+7070+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Actor\Defs\LabelersPref\LabelerPrefItem;
77+88+/**
99+ * Lexicon: app.bsky.actor.defs.labelersPref
1010+ * Type: object
1111+ *
1212+ * @property array $labelers
1313+ *
1414+ * Constraints:
1515+ * - Required: labelers
1616+ */
1717+class LabelersPref extends Data
1818+{
1919+2020+ /**
2121+ */
2222+ public function __construct(
2323+ public readonly array $labelers
2424+ ) {}
2525+2626+ /**
2727+ * Get the lexicon NSID for this data type.
2828+ *
2929+ * @return string
3030+ */
3131+ public static function getLexicon(): string
3232+ {
3333+ return 'app.bsky.actor.defs.labelersPref';
3434+ }
3535+3636+3737+ /**
3838+ * Create an instance from an array.
3939+ *
4040+ * @param array $data The data array
4141+ * @return static
4242+ */
4343+ public static function fromArray(array $data): static
4444+ {
4545+ return new static(
4646+ labelers: $data['labelers'] ?? []
4747+ );
4848+ }
4949+5050+}
+72
src/Generated/App/Bsky/Actor/Defs/MutedWord.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\App\Bsky\Actor\MutedWordTarget;
88+99+/**
1010+ * A word that the account owner has muted.
1111+ *
1212+ * Lexicon: app.bsky.actor.defs.mutedWord
1313+ * Type: object
1414+ *
1515+ * @property string|null $id
1616+ * @property string $value The muted word itself.
1717+ * @property array<MutedWordTarget> $targets The intended targets of the muted word.
1818+ * @property string|null $actorTarget Groups of users to apply the muted word to. If undefined, applies to all users.
1919+ * @property Carbon|null $expiresAt The date and time at which the muted word will expire and no longer be applied.
2020+ *
2121+ * Constraints:
2222+ * - Required: value, targets
2323+ * - value: Max length: 10000
2424+ * - value: Max graphemes: 1000
2525+ * - expiresAt: Format: datetime
2626+ */
2727+class MutedWord extends Data
2828+{
2929+3030+ /**
3131+ * @param string $value The muted word itself.
3232+ * @param array<MutedWordTarget> $targets The intended targets of the muted word.
3333+ * @param string|null $actorTarget Groups of users to apply the muted word to. If undefined, applies to all users.
3434+ * @param Carbon|null $expiresAt The date and time at which the muted word will expire and no longer be applied.
3535+ */
3636+ public function __construct(
3737+ public readonly string $value,
3838+ public readonly array $targets,
3939+ public readonly ?string $id = null,
4040+ public readonly ?string $actorTarget = null,
4141+ public readonly ?Carbon $expiresAt = null
4242+ ) {}
4343+4444+ /**
4545+ * Get the lexicon NSID for this data type.
4646+ *
4747+ * @return string
4848+ */
4949+ public static function getLexicon(): string
5050+ {
5151+ return 'app.bsky.actor.defs.mutedWord';
5252+ }
5353+5454+5555+ /**
5656+ * Create an instance from an array.
5757+ *
5858+ * @param array $data The data array
5959+ * @return static
6060+ */
6161+ public static function fromArray(array $data): static
6262+ {
6363+ return new static(
6464+ value: $data['value'],
6565+ targets: isset($data['targets']) ? array_map(fn ($item) => Defs::fromArray($item), $data['targets']) : [],
6666+ id: $data['id'] ?? null,
6767+ actorTarget: $data['actorTarget'] ?? null,
6868+ expiresAt: isset($data['expiresAt']) ? Carbon::parse($data['expiresAt']) : null
6969+ );
7070+ }
7171+7272+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Actor\MutedWord;
77+88+/**
99+ * Lexicon: app.bsky.actor.defs.mutedWordsPref
1010+ * Type: object
1111+ *
1212+ * @property array<MutedWord> $items A list of words the account owner has muted.
1313+ *
1414+ * Constraints:
1515+ * - Required: items
1616+ */
1717+class MutedWordsPref extends Data
1818+{
1919+2020+ /**
2121+ * @param array<MutedWord> $items A list of words the account owner has muted.
2222+ */
2323+ public function __construct(
2424+ public readonly array $items
2525+ ) {}
2626+2727+ /**
2828+ * Get the lexicon NSID for this data type.
2929+ *
3030+ * @return string
3131+ */
3232+ public static function getLexicon(): string
3333+ {
3434+ return 'app.bsky.actor.defs.mutedWordsPref';
3535+ }
3636+3737+3838+ /**
3939+ * Create an instance from an array.
4040+ *
4141+ * @param array $data The data array
4242+ * @return static
4343+ */
4444+ public static function fromArray(array $data): static
4545+ {
4646+ return new static(
4747+ items: isset($data['items']) ? array_map(fn ($item) => Defs::fromArray($item), $data['items']) : []
4848+ );
4949+ }
5050+5151+}
+67
src/Generated/App/Bsky/Actor/Defs/Nux.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * A new user experiences (NUX) storage object
1010+ *
1111+ * Lexicon: app.bsky.actor.defs.nux
1212+ * Type: object
1313+ *
1414+ * @property string $id
1515+ * @property bool $completed
1616+ * @property string|null $data Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.
1717+ * @property Carbon|null $expiresAt The date and time at which the NUX will expire and should be considered completed.
1818+ *
1919+ * Constraints:
2020+ * - Required: id, completed
2121+ * - id: Max length: 100
2222+ * - data: Max length: 3000
2323+ * - data: Max graphemes: 300
2424+ * - expiresAt: Format: datetime
2525+ */
2626+class Nux extends Data
2727+{
2828+2929+ /**
3030+ * @param string|null $data Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.
3131+ * @param Carbon|null $expiresAt The date and time at which the NUX will expire and should be considered completed.
3232+ */
3333+ public function __construct(
3434+ public readonly string $id,
3535+ public readonly bool $completed,
3636+ public readonly ?string $data = null,
3737+ public readonly ?Carbon $expiresAt = null
3838+ ) {}
3939+4040+ /**
4141+ * Get the lexicon NSID for this data type.
4242+ *
4343+ * @return string
4444+ */
4545+ public static function getLexicon(): string
4646+ {
4747+ return 'app.bsky.actor.defs.nux';
4848+ }
4949+5050+5151+ /**
5252+ * Create an instance from an array.
5353+ *
5454+ * @param array $data The data array
5555+ * @return static
5656+ */
5757+ public static function fromArray(array $data): static
5858+ {
5959+ return new static(
6060+ id: $data['id'],
6161+ completed: $data['completed'],
6262+ data: $data['data'] ?? null,
6363+ expiresAt: isset($data['expiresAt']) ? Carbon::parse($data['expiresAt']) : null
6464+ );
6565+ }
6666+6767+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Default post interaction settings for the account. These values should be
99+ * applied as default values when creating new posts. These refs should mirror
1010+ * the threadgate and postgate records exactly.
1111+ *
1212+ * Lexicon: app.bsky.actor.defs.postInteractionSettingsPref
1313+ * Type: object
1414+ *
1515+ * @property array|null $threadgateAllowRules Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.
1616+ * @property array|null $postgateEmbeddingRules Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.
1717+ *
1818+ * Constraints:
1919+ * - threadgateAllowRules: Max length: 5
2020+ * - postgateEmbeddingRules: Max length: 5
2121+ */
2222+class PostInteractionSettingsPref extends Data
2323+{
2424+2525+ /**
2626+ * @param array|null $threadgateAllowRules Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.
2727+ * @param array|null $postgateEmbeddingRules Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.
2828+ */
2929+ public function __construct(
3030+ public readonly ?array $threadgateAllowRules = null,
3131+ public readonly ?array $postgateEmbeddingRules = null
3232+ ) {}
3333+3434+ /**
3535+ * Get the lexicon NSID for this data type.
3636+ *
3737+ * @return string
3838+ */
3939+ public static function getLexicon(): string
4040+ {
4141+ return 'app.bsky.actor.defs.postInteractionSettingsPref';
4242+ }
4343+4444+4545+ /**
4646+ * Create an instance from an array.
4747+ *
4848+ * @param array $data The data array
4949+ * @return static
5050+ */
5151+ public static function fromArray(array $data): static
5252+ {
5353+ return new static(
5454+ threadgateAllowRules: $data['threadgateAllowRules'] ?? null,
5555+ postgateEmbeddingRules: $data['postgateEmbeddingRules'] ?? null
5656+ );
5757+ }
5858+5959+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Actor\SavedFeed;
77+88+/**
99+ * Lexicon: app.bsky.actor.defs.savedFeedsPrefV2
1010+ * Type: object
1111+ *
1212+ * @property array<SavedFeed> $items
1313+ *
1414+ * Constraints:
1515+ * - Required: items
1616+ */
1717+class SavedFeedsPrefV2 extends Data
1818+{
1919+2020+ /**
2121+ */
2222+ public function __construct(
2323+ public readonly array $items
2424+ ) {}
2525+2626+ /**
2727+ * Get the lexicon NSID for this data type.
2828+ *
2929+ * @return string
3030+ */
3131+ public static function getLexicon(): string
3232+ {
3333+ return 'app.bsky.actor.defs.savedFeedsPrefV2';
3434+ }
3535+3636+3737+ /**
3838+ * Create an instance from an array.
3939+ *
4040+ * @param array $data The data array
4141+ * @return static
4242+ */
4343+ public static function fromArray(array $data): static
4444+ {
4545+ return new static(
4646+ items: isset($data['items']) ? array_map(fn ($item) => Defs::fromArray($item), $data['items']) : []
4747+ );
4848+ }
4949+5050+}
+68
src/Generated/App/Bsky/Actor/Defs/StatusView.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Support\UnionHelper;
88+99+/**
1010+ * Lexicon: app.bsky.actor.defs.statusView
1111+ * Type: object
1212+ *
1313+ * @property string $status The status for the account.
1414+ * @property mixed $record
1515+ * @property mixed $embed An optional embed associated with the status.
1616+ * @property Carbon|null $expiresAt The date when this status will expire. The application might choose to no longer return the status after expiration.
1717+ * @property bool|null $isActive True if the status is not expired, false if it is expired. Only present if expiration was set.
1818+ *
1919+ * Constraints:
2020+ * - Required: status, record
2121+ * - expiresAt: Format: datetime
2222+ */
2323+class StatusView extends Data
2424+{
2525+2626+ /**
2727+ * @param string $status The status for the account.
2828+ * @param mixed $embed An optional embed associated with the status.
2929+ * @param Carbon|null $expiresAt The date when this status will expire. The application might choose to no longer return the status after expiration.
3030+ * @param bool|null $isActive True if the status is not expired, false if it is expired. Only present if expiration was set.
3131+ */
3232+ public function __construct(
3333+ public readonly string $status,
3434+ public readonly mixed $record,
3535+ public readonly mixed $embed = null,
3636+ public readonly ?Carbon $expiresAt = null,
3737+ public readonly ?bool $isActive = null
3838+ ) {}
3939+4040+ /**
4141+ * Get the lexicon NSID for this data type.
4242+ *
4343+ * @return string
4444+ */
4545+ public static function getLexicon(): string
4646+ {
4747+ return 'app.bsky.actor.defs.statusView';
4848+ }
4949+5050+5151+ /**
5252+ * Create an instance from an array.
5353+ *
5454+ * @param array $data The data array
5555+ * @return static
5656+ */
5757+ public static function fromArray(array $data): static
5858+ {
5959+ return new static(
6060+ status: $data['status'],
6161+ record: $data['record'],
6262+ embed: isset($data['embed']) ? UnionHelper::validateOpenUnion($data['embed']) : null,
6363+ expiresAt: isset($data['expiresAt']) ? Carbon::parse($data['expiresAt']) : null,
6464+ isActive: $data['isActive'] ?? null
6565+ );
6666+ }
6767+6868+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Actor\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Actor\Defs\VerificationState\VerificationView;
77+88+/**
99+ * Represents the verification information about the user this object is
1010+ * attached to.
1111+ *
1212+ * Lexicon: app.bsky.actor.defs.verificationState
1313+ * Type: object
1414+ *
1515+ * @property array $verifications All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.
1616+ * @property string $verifiedStatus The user's status as a verified account.
1717+ * @property string $trustedVerifierStatus The user's status as a trusted verifier.
1818+ *
1919+ * Constraints:
2020+ * - Required: verifications, verifiedStatus, trustedVerifierStatus
2121+ */
2222+class VerificationState extends Data
2323+{
2424+2525+ /**
2626+ * @param array $verifications All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.
2727+ * @param string $verifiedStatus The user's status as a verified account.
2828+ * @param string $trustedVerifierStatus The user's status as a trusted verifier.
2929+ */
3030+ public function __construct(
3131+ public readonly array $verifications,
3232+ public readonly string $verifiedStatus,
3333+ public readonly string $trustedVerifierStatus
3434+ ) {}
3535+3636+ /**
3737+ * Get the lexicon NSID for this data type.
3838+ *
3939+ * @return string
4040+ */
4141+ public static function getLexicon(): string
4242+ {
4343+ return 'app.bsky.actor.defs.verificationState';
4444+ }
4545+4646+4747+ /**
4848+ * Create an instance from an array.
4949+ *
5050+ * @param array $data The data array
5151+ * @return static
5252+ */
5353+ public static function fromArray(array $data): static
5454+ {
5555+ return new static(
5656+ verifications: $data['verifications'] ?? [],
5757+ verifiedStatus: $data['verifiedStatus'],
5858+ trustedVerifierStatus: $data['trustedVerifierStatus']
5959+ );
6060+ }
6161+6262+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\External;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: app.bsky.embed.external.viewExternal
99+ * Type: object
1010+ *
1111+ * @property string $uri
1212+ * @property string $title
1313+ * @property string $description
1414+ * @property string|null $thumb
1515+ *
1616+ * Constraints:
1717+ * - Required: uri, title, description
1818+ * - uri: Format: uri
1919+ * - thumb: Format: uri
2020+ */
2121+class ViewExternal extends Data
2222+{
2323+2424+ /**
2525+ */
2626+ public function __construct(
2727+ public readonly string $uri,
2828+ public readonly string $title,
2929+ public readonly string $description,
3030+ public readonly ?string $thumb = null
3131+ ) {}
3232+3333+ /**
3434+ * Get the lexicon NSID for this data type.
3535+ *
3636+ * @return string
3737+ */
3838+ public static function getLexicon(): string
3939+ {
4040+ return 'app.bsky.embed.external.viewExternal';
4141+ }
4242+4343+4444+ /**
4545+ * Create an instance from an array.
4646+ *
4747+ * @param array $data The data array
4848+ * @return static
4949+ */
5050+ public static function fromArray(array $data): static
5151+ {
5252+ return new static(
5353+ uri: $data['uri'],
5454+ title: $data['title'],
5555+ description: $data['description'],
5656+ thumb: $data['thumb'] ?? null
5757+ );
5858+ }
5959+6060+}
+53
src/Generated/App/Bsky/Embed/Images.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Embed\Images\Image;
77+88+/**
99+ * A set of images embedded in a Bluesky record (eg, a post).
1010+ *
1111+ * Lexicon: app.bsky.embed.images
1212+ * Type: object
1313+ *
1414+ * @property array<Image> $images
1515+ *
1616+ * Constraints:
1717+ * - Required: images
1818+ * - images: Max length: 4
1919+ */
2020+class Images extends Data
2121+{
2222+2323+ /**
2424+ */
2525+ public function __construct(
2626+ public readonly array $images
2727+ ) {}
2828+2929+ /**
3030+ * Get the lexicon NSID for this data type.
3131+ *
3232+ * @return string
3333+ */
3434+ public static function getLexicon(): string
3535+ {
3636+ return 'app.bsky.embed.images';
3737+ }
3838+3939+4040+ /**
4141+ * Create an instance from an array.
4242+ *
4343+ * @param array $data The data array
4444+ * @return static
4545+ */
4646+ public static function fromArray(array $data): static
4747+ {
4848+ return new static(
4949+ images: $data['images'] ?? []
5050+ );
5151+ }
5252+5353+}
+58
src/Generated/App/Bsky/Embed/Images/Image.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Images;
44+55+use SocialDept\Schema\Data\BlobReference;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\App\Bsky\Embed\AspectRatio;
88+99+/**
1010+ * Lexicon: app.bsky.embed.images.image
1111+ * Type: object
1212+ *
1313+ * @property BlobReference $image
1414+ * @property string $alt Alt text description of the image, for accessibility.
1515+ * @property AspectRatio|null $aspectRatio
1616+ *
1717+ * Constraints:
1818+ * - Required: image, alt
1919+ */
2020+class Image extends Data
2121+{
2222+2323+ /**
2424+ * @param string $alt Alt text description of the image, for accessibility.
2525+ */
2626+ public function __construct(
2727+ public readonly BlobReference $image,
2828+ public readonly string $alt,
2929+ public readonly ?AspectRatio $aspectRatio = null
3030+ ) {}
3131+3232+ /**
3333+ * Get the lexicon NSID for this data type.
3434+ *
3535+ * @return string
3636+ */
3737+ public static function getLexicon(): string
3838+ {
3939+ return 'app.bsky.embed.images.image';
4040+ }
4141+4242+4343+ /**
4444+ * Create an instance from an array.
4545+ *
4646+ * @param array $data The data array
4747+ * @return static
4848+ */
4949+ public static function fromArray(array $data): static
5050+ {
5151+ return new static(
5252+ image: $data['image'],
5353+ alt: $data['alt'],
5454+ aspectRatio: isset($data['aspectRatio']) ? Defs::fromArray($data['aspectRatio']) : null
5555+ );
5656+ }
5757+5858+}
+51
src/Generated/App/Bsky/Embed/Images/View.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Images;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Embed\Images\View\ViewImage;
77+88+/**
99+ * Lexicon: app.bsky.embed.images.view
1010+ * Type: object
1111+ *
1212+ * @property array $images
1313+ *
1414+ * Constraints:
1515+ * - Required: images
1616+ * - images: Max length: 4
1717+ */
1818+class View extends Data
1919+{
2020+2121+ /**
2222+ */
2323+ public function __construct(
2424+ public readonly array $images
2525+ ) {}
2626+2727+ /**
2828+ * Get the lexicon NSID for this data type.
2929+ *
3030+ * @return string
3131+ */
3232+ public static function getLexicon(): string
3333+ {
3434+ return 'app.bsky.embed.images.view';
3535+ }
3636+3737+3838+ /**
3939+ * Create an instance from an array.
4040+ *
4141+ * @param array $data The data array
4242+ * @return static
4343+ */
4444+ public static function fromArray(array $data): static
4545+ {
4646+ return new static(
4747+ images: $data['images'] ?? []
4848+ );
4949+ }
5050+5151+}
+64
src/Generated/App/Bsky/Embed/Images/ViewImage.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Images;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Embed\AspectRatio;
77+88+/**
99+ * Lexicon: app.bsky.embed.images.viewImage
1010+ * Type: object
1111+ *
1212+ * @property string $thumb Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.
1313+ * @property string $fullsize Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.
1414+ * @property string $alt Alt text description of the image, for accessibility.
1515+ * @property AspectRatio|null $aspectRatio
1616+ *
1717+ * Constraints:
1818+ * - Required: thumb, fullsize, alt
1919+ * - thumb: Format: uri
2020+ * - fullsize: Format: uri
2121+ */
2222+class ViewImage extends Data
2323+{
2424+2525+ /**
2626+ * @param string $thumb Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.
2727+ * @param string $fullsize Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.
2828+ * @param string $alt Alt text description of the image, for accessibility.
2929+ */
3030+ public function __construct(
3131+ public readonly string $thumb,
3232+ public readonly string $fullsize,
3333+ public readonly string $alt,
3434+ public readonly ?AspectRatio $aspectRatio = null
3535+ ) {}
3636+3737+ /**
3838+ * Get the lexicon NSID for this data type.
3939+ *
4040+ * @return string
4141+ */
4242+ public static function getLexicon(): string
4343+ {
4444+ return 'app.bsky.embed.images.viewImage';
4545+ }
4646+4747+4848+ /**
4949+ * Create an instance from an array.
5050+ *
5151+ * @param array $data The data array
5252+ * @return static
5353+ */
5454+ public static function fromArray(array $data): static
5555+ {
5656+ return new static(
5757+ thumb: $data['thumb'],
5858+ fullsize: $data['fullsize'],
5959+ alt: $data['alt'],
6060+ aspectRatio: isset($data['aspectRatio']) ? Defs::fromArray($data['aspectRatio']) : null
6161+ );
6262+ }
6363+6464+}
+53
src/Generated/App/Bsky/Embed/Record.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\Com\Atproto\Repo\StrongRef;
77+88+/**
99+ * A representation of a record embedded in a Bluesky record (eg, a post). For
1010+ * example, a quote-post, or sharing a feed generator record.
1111+ *
1212+ * Lexicon: app.bsky.embed.record
1313+ * Type: object
1414+ *
1515+ * @property StrongRef $record
1616+ *
1717+ * Constraints:
1818+ * - Required: record
1919+ */
2020+class Record extends Data
2121+{
2222+2323+ /**
2424+ */
2525+ public function __construct(
2626+ public readonly StrongRef $record
2727+ ) {}
2828+2929+ /**
3030+ * Get the lexicon NSID for this data type.
3131+ *
3232+ * @return string
3333+ */
3434+ public static function getLexicon(): string
3535+ {
3636+ return 'app.bsky.embed.record';
3737+ }
3838+3939+4040+ /**
4141+ * Create an instance from an array.
4242+ *
4343+ * @param array $data The data array
4444+ * @return static
4545+ */
4646+ public static function fromArray(array $data): static
4747+ {
4848+ return new static(
4949+ record: StrongRef::fromArray($data['record'])
5050+ );
5151+ }
5252+5353+}
+50
src/Generated/App/Bsky/Embed/Record/View.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Record;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Support\UnionHelper;
77+88+/**
99+ * Lexicon: app.bsky.embed.record.view
1010+ * Type: object
1111+ *
1212+ * @property mixed $record
1313+ *
1414+ * Constraints:
1515+ * - Required: record
1616+ */
1717+class View extends Data
1818+{
1919+2020+ /**
2121+ */
2222+ public function __construct(
2323+ public readonly mixed $record
2424+ ) {}
2525+2626+ /**
2727+ * Get the lexicon NSID for this data type.
2828+ *
2929+ * @return string
3030+ */
3131+ public static function getLexicon(): string
3232+ {
3333+ return 'app.bsky.embed.record.view';
3434+ }
3535+3636+3737+ /**
3838+ * Create an instance from an array.
3939+ *
4040+ * @param array $data The data array
4141+ * @return static
4242+ */
4343+ public static function fromArray(array $data): static
4444+ {
4545+ return new static(
4646+ record: UnionHelper::validateOpenUnion($data['record'])
4747+ );
4848+ }
4949+5050+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Record;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\App\Bsky\Actor\ProfileViewBasic;
88+use SocialDept\Schema\Generated\Com\Atproto\Label\Label;
99+1010+/**
1111+ * Lexicon: app.bsky.embed.record.viewRecord
1212+ * Type: object
1313+ *
1414+ * @property string $uri
1515+ * @property string $cid
1616+ * @property ProfileViewBasic $author
1717+ * @property mixed $value The record data itself.
1818+ * @property array<Label>|null $labels
1919+ * @property int|null $replyCount
2020+ * @property int|null $repostCount
2121+ * @property int|null $likeCount
2222+ * @property int|null $quoteCount
2323+ * @property array|null $embeds
2424+ * @property Carbon $indexedAt
2525+ *
2626+ * Constraints:
2727+ * - Required: uri, cid, author, value, indexedAt
2828+ * - uri: Format: at-uri
2929+ * - cid: Format: cid
3030+ * - indexedAt: Format: datetime
3131+ */
3232+class ViewRecord extends Data
3333+{
3434+3535+ /**
3636+ * @param mixed $value The record data itself.
3737+ */
3838+ public function __construct(
3939+ public readonly string $uri,
4040+ public readonly string $cid,
4141+ public readonly ProfileViewBasic $author,
4242+ public readonly mixed $value,
4343+ public readonly Carbon $indexedAt,
4444+ public readonly ?array $labels = null,
4545+ public readonly ?int $replyCount = null,
4646+ public readonly ?int $repostCount = null,
4747+ public readonly ?int $likeCount = null,
4848+ public readonly ?int $quoteCount = null,
4949+ public readonly ?array $embeds = null
5050+ ) {}
5151+5252+ /**
5353+ * Get the lexicon NSID for this data type.
5454+ *
5555+ * @return string
5656+ */
5757+ public static function getLexicon(): string
5858+ {
5959+ return 'app.bsky.embed.record.viewRecord';
6060+ }
6161+6262+6363+ /**
6464+ * Create an instance from an array.
6565+ *
6666+ * @param array $data The data array
6767+ * @return static
6868+ */
6969+ public static function fromArray(array $data): static
7070+ {
7171+ return new static(
7272+ uri: $data['uri'],
7373+ cid: $data['cid'],
7474+ author: Defs::fromArray($data['author']),
7575+ value: $data['value'],
7676+ indexedAt: Carbon::parse($data['indexedAt']),
7777+ labels: isset($data['labels']) ? array_map(fn ($item) => Defs::fromArray($item), $data['labels']) : [],
7878+ replyCount: $data['replyCount'] ?? null,
7979+ repostCount: $data['repostCount'] ?? null,
8080+ likeCount: $data['likeCount'] ?? null,
8181+ quoteCount: $data['quoteCount'] ?? null,
8282+ embeds: $data['embeds'] ?? null
8383+ );
8484+ }
8585+8686+}
+57
src/Generated/App/Bsky/Embed/RecordWithMedia.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Support\UnionHelper;
77+88+/**
99+ * A representation of a record embedded in a Bluesky record (eg, a post),
1010+ * alongside other compatible embeds. For example, a quote post and image, or a
1111+ * quote post and external URL card.
1212+ *
1313+ * Lexicon: app.bsky.embed.recordWithMedia
1414+ * Type: object
1515+ *
1616+ * @property Record $record
1717+ * @property mixed $media
1818+ *
1919+ * Constraints:
2020+ * - Required: record, media
2121+ */
2222+class RecordWithMedia extends Data
2323+{
2424+2525+ /**
2626+ */
2727+ public function __construct(
2828+ public readonly Record $record,
2929+ public readonly mixed $media
3030+ ) {}
3131+3232+ /**
3333+ * Get the lexicon NSID for this data type.
3434+ *
3535+ * @return string
3636+ */
3737+ public static function getLexicon(): string
3838+ {
3939+ return 'app.bsky.embed.recordWithMedia';
4040+ }
4141+4242+4343+ /**
4444+ * Create an instance from an array.
4545+ *
4646+ * @param array $data The data array
4747+ * @return static
4848+ */
4949+ public static function fromArray(array $data): static
5050+ {
5151+ return new static(
5252+ record: Record::fromArray($data['record']),
5353+ media: UnionHelper::validateOpenUnion($data['media'])
5454+ );
5555+ }
5656+5757+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\RecordWithMedia;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Embed\View;
77+use SocialDept\Schema\Support\UnionHelper;
88+99+/**
1010+ * Lexicon: app.bsky.embed.recordWithMedia.view
1111+ * Type: object
1212+ *
1313+ * @property View $record
1414+ * @property mixed $media
1515+ *
1616+ * Constraints:
1717+ * - Required: record, media
1818+ */
1919+class View extends Data
2020+{
2121+2222+ /**
2323+ */
2424+ public function __construct(
2525+ public readonly View $record,
2626+ public readonly mixed $media
2727+ ) {}
2828+2929+ /**
3030+ * Get the lexicon NSID for this data type.
3131+ *
3232+ * @return string
3333+ */
3434+ public static function getLexicon(): string
3535+ {
3636+ return 'app.bsky.embed.recordWithMedia.view';
3737+ }
3838+3939+4040+ /**
4141+ * Create an instance from an array.
4242+ *
4343+ * @param array $data The data array
4444+ * @return static
4545+ */
4646+ public static function fromArray(array $data): static
4747+ {
4848+ return new static(
4949+ record: Record::fromArray($data['record']),
5050+ media: UnionHelper::validateOpenUnion($data['media'])
5151+ );
5252+ }
5353+5454+}
+67
src/Generated/App/Bsky/Embed/Video.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed;
44+55+use SocialDept\Schema\Data\BlobReference;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\App\Bsky\Embed\Video\Caption;
88+99+/**
1010+ * A video embedded in a Bluesky record (eg, a post).
1111+ *
1212+ * Lexicon: app.bsky.embed.video
1313+ * Type: object
1414+ *
1515+ * @property BlobReference $video The mp4 video file. May be up to 100mb, formerly limited to 50mb.
1616+ * @property array<Caption>|null $captions
1717+ * @property string|null $alt Alt text description of the video, for accessibility.
1818+ * @property AspectRatio|null $aspectRatio
1919+ *
2020+ * Constraints:
2121+ * - Required: video
2222+ * - captions: Max length: 20
2323+ * - alt: Max length: 10000
2424+ * - alt: Max graphemes: 1000
2525+ */
2626+class Video extends Data
2727+{
2828+2929+ /**
3030+ * @param BlobReference $video The mp4 video file. May be up to 100mb, formerly limited to 50mb.
3131+ * @param string|null $alt Alt text description of the video, for accessibility.
3232+ */
3333+ public function __construct(
3434+ public readonly BlobReference $video,
3535+ public readonly ?array $captions = null,
3636+ public readonly ?string $alt = null,
3737+ public readonly ?AspectRatio $aspectRatio = null
3838+ ) {}
3939+4040+ /**
4141+ * Get the lexicon NSID for this data type.
4242+ *
4343+ * @return string
4444+ */
4545+ public static function getLexicon(): string
4646+ {
4747+ return 'app.bsky.embed.video';
4848+ }
4949+5050+5151+ /**
5252+ * Create an instance from an array.
5353+ *
5454+ * @param array $data The data array
5555+ * @return static
5656+ */
5757+ public static function fromArray(array $data): static
5858+ {
5959+ return new static(
6060+ video: $data['video'],
6161+ captions: $data['captions'] ?? [],
6262+ alt: $data['alt'] ?? null,
6363+ aspectRatio: isset($data['aspectRatio']) ? Defs::fromArray($data['aspectRatio']) : null
6464+ );
6565+ }
6666+6767+}
+54
src/Generated/App/Bsky/Embed/Video/Caption.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Video;
44+55+use SocialDept\Schema\Data\BlobReference;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Lexicon: app.bsky.embed.video.caption
1010+ * Type: object
1111+ *
1212+ * @property string $lang
1313+ * @property BlobReference $file
1414+ *
1515+ * Constraints:
1616+ * - Required: lang, file
1717+ * - lang: Format: language
1818+ */
1919+class Caption extends Data
2020+{
2121+2222+ /**
2323+ */
2424+ public function __construct(
2525+ public readonly string $lang,
2626+ public readonly BlobReference $file
2727+ ) {}
2828+2929+ /**
3030+ * Get the lexicon NSID for this data type.
3131+ *
3232+ * @return string
3333+ */
3434+ public static function getLexicon(): string
3535+ {
3636+ return 'app.bsky.embed.video.caption';
3737+ }
3838+3939+4040+ /**
4141+ * Create an instance from an array.
4242+ *
4343+ * @param array $data The data array
4444+ * @return static
4545+ */
4646+ public static function fromArray(array $data): static
4747+ {
4848+ return new static(
4949+ lang: $data['lang'],
5050+ file: $data['file']
5151+ );
5252+ }
5353+5454+}
+67
src/Generated/App/Bsky/Embed/Video/View.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Embed\Video;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Embed\AspectRatio;
77+88+/**
99+ * Lexicon: app.bsky.embed.video.view
1010+ * Type: object
1111+ *
1212+ * @property string $cid
1313+ * @property string $playlist
1414+ * @property string|null $thumbnail
1515+ * @property string|null $alt
1616+ * @property AspectRatio|null $aspectRatio
1717+ *
1818+ * Constraints:
1919+ * - Required: cid, playlist
2020+ * - cid: Format: cid
2121+ * - playlist: Format: uri
2222+ * - thumbnail: Format: uri
2323+ * - alt: Max length: 10000
2424+ * - alt: Max graphemes: 1000
2525+ */
2626+class View extends Data
2727+{
2828+2929+ /**
3030+ */
3131+ public function __construct(
3232+ public readonly string $cid,
3333+ public readonly string $playlist,
3434+ public readonly ?string $thumbnail = null,
3535+ public readonly ?string $alt = null,
3636+ public readonly ?AspectRatio $aspectRatio = null
3737+ ) {}
3838+3939+ /**
4040+ * Get the lexicon NSID for this data type.
4141+ *
4242+ * @return string
4343+ */
4444+ public static function getLexicon(): string
4545+ {
4646+ return 'app.bsky.embed.video.view';
4747+ }
4848+4949+5050+ /**
5151+ * Create an instance from an array.
5252+ *
5353+ * @param array $data The data array
5454+ * @return static
5555+ */
5656+ public static function fromArray(array $data): static
5757+ {
5858+ return new static(
5959+ cid: $data['cid'],
6060+ playlist: $data['playlist'],
6161+ thumbnail: $data['thumbnail'] ?? null,
6262+ alt: $data['alt'] ?? null,
6363+ aspectRatio: isset($data['aspectRatio']) ? Defs::fromArray($data['aspectRatio']) : null
6464+ );
6565+ }
6666+6767+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Feed\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: app.bsky.feed.defs.reasonPin
99+ * Type: object
1010+ */
1111+class ReasonPin extends Data
1212+{
1313+1414+1515+ /**
1616+ * Get the lexicon NSID for this data type.
1717+ *
1818+ * @return string
1919+ */
2020+ public static function getLexicon(): string
2121+ {
2222+ return 'app.bsky.feed.defs.reasonPin';
2323+ }
2424+2525+2626+ /**
2727+ * Create an instance from an array.
2828+ *
2929+ * @param array $data The data array
3030+ * @return static
3131+ */
3232+ public static function fromArray(array $data): static
3333+ {
3434+ return new static();
3535+ }
3636+3737+}
+63
src/Generated/App/Bsky/Feed/Defs/ReasonRepost.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Feed\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\App\Bsky\Actor\ProfileViewBasic;
88+99+/**
1010+ * Lexicon: app.bsky.feed.defs.reasonRepost
1111+ * Type: object
1212+ *
1313+ * @property ProfileViewBasic $by
1414+ * @property string|null $uri
1515+ * @property string|null $cid
1616+ * @property Carbon $indexedAt
1717+ *
1818+ * Constraints:
1919+ * - Required: by, indexedAt
2020+ * - uri: Format: at-uri
2121+ * - cid: Format: cid
2222+ * - indexedAt: Format: datetime
2323+ */
2424+class ReasonRepost extends Data
2525+{
2626+2727+ /**
2828+ */
2929+ public function __construct(
3030+ public readonly ProfileViewBasic $by,
3131+ public readonly Carbon $indexedAt,
3232+ public readonly ?string $uri = null,
3333+ public readonly ?string $cid = null
3434+ ) {}
3535+3636+ /**
3737+ * Get the lexicon NSID for this data type.
3838+ *
3939+ * @return string
4040+ */
4141+ public static function getLexicon(): string
4242+ {
4343+ return 'app.bsky.feed.defs.reasonRepost';
4444+ }
4545+4646+4747+ /**
4848+ * Create an instance from an array.
4949+ *
5050+ * @param array $data The data array
5151+ * @return static
5252+ */
5353+ public static function fromArray(array $data): static
5454+ {
5555+ return new static(
5656+ by: Defs::fromArray($data['by']),
5757+ indexedAt: Carbon::parse($data['indexedAt']),
5858+ uri: $data['uri'] ?? null,
5959+ cid: $data['cid'] ?? null
6060+ );
6161+ }
6262+6363+}
+58
src/Generated/App/Bsky/Feed/Defs/ReplyRef.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Feed\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Actor\ProfileViewBasic;
77+use SocialDept\Schema\Support\UnionHelper;
88+99+/**
1010+ * Lexicon: app.bsky.feed.defs.replyRef
1111+ * Type: object
1212+ *
1313+ * @property mixed $root
1414+ * @property mixed $parent
1515+ * @property ProfileViewBasic|null $grandparentAuthor When parent is a reply to another post, this is the author of that post.
1616+ *
1717+ * Constraints:
1818+ * - Required: root, parent
1919+ */
2020+class ReplyRef extends Data
2121+{
2222+2323+ /**
2424+ * @param ProfileViewBasic|null $grandparentAuthor When parent is a reply to another post, this is the author of that post.
2525+ */
2626+ public function __construct(
2727+ public readonly mixed $root,
2828+ public readonly mixed $parent,
2929+ public readonly ?ProfileViewBasic $grandparentAuthor = null
3030+ ) {}
3131+3232+ /**
3333+ * Get the lexicon NSID for this data type.
3434+ *
3535+ * @return string
3636+ */
3737+ public static function getLexicon(): string
3838+ {
3939+ return 'app.bsky.feed.defs.replyRef';
4040+ }
4141+4242+4343+ /**
4444+ * Create an instance from an array.
4545+ *
4646+ * @param array $data The data array
4747+ * @return static
4848+ */
4949+ public static function fromArray(array $data): static
5050+ {
5151+ return new static(
5252+ root: UnionHelper::validateOpenUnion($data['root']),
5353+ parent: UnionHelper::validateOpenUnion($data['parent']),
5454+ grandparentAuthor: isset($data['grandparentAuthor']) ? Defs::fromArray($data['grandparentAuthor']) : null
5555+ );
5656+ }
5757+5858+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Graph\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * lists the bi-directional graph relationships between one actor (not indicated
99+ * in the object), and the target actors (the DID included in the object)
1010+ *
1111+ * Lexicon: app.bsky.graph.defs.relationship
1212+ * Type: object
1313+ *
1414+ * @property string $did
1515+ * @property string|null $following if the actor follows this DID, this is the AT-URI of the follow record
1616+ * @property string|null $followedBy if the actor is followed by this DID, contains the AT-URI of the follow record
1717+ *
1818+ * Constraints:
1919+ * - Required: did
2020+ * - did: Format: did
2121+ * - following: Format: at-uri
2222+ * - followedBy: Format: at-uri
2323+ */
2424+class Relationship extends Data
2525+{
2626+2727+ /**
2828+ * @param string|null $following if the actor follows this DID, this is the AT-URI of the follow record
2929+ * @param string|null $followedBy if the actor is followed by this DID, contains the AT-URI of the follow record
3030+ */
3131+ public function __construct(
3232+ public readonly string $did,
3333+ public readonly ?string $following = null,
3434+ public readonly ?string $followedBy = null
3535+ ) {}
3636+3737+ /**
3838+ * Get the lexicon NSID for this data type.
3939+ *
4040+ * @return string
4141+ */
4242+ public static function getLexicon(): string
4343+ {
4444+ return 'app.bsky.graph.defs.relationship';
4545+ }
4646+4747+4848+ /**
4949+ * Create an instance from an array.
5050+ *
5151+ * @param array $data The data array
5252+ * @return static
5353+ */
5454+ public static function fromArray(array $data): static
5555+ {
5656+ return new static(
5757+ did: $data['did'],
5858+ following: $data['following'] ?? null,
5959+ followedBy: $data['followedBy'] ?? null
6060+ );
6161+ }
6262+6363+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Graph;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\Com\Atproto\Repo\StrongRef;
88+99+/**
1010+ * Lexicon: app.bsky.graph.follow
1111+ * Type: record
1212+ */
1313+class Follow extends Data
1414+{
1515+1616+ /**
1717+ */
1818+ public function __construct(
1919+ public readonly string $subject,
2020+ public readonly Carbon $createdAt,
2121+ public readonly ?StrongRef $via = null
2222+ ) {}
2323+2424+ /**
2525+ * Get the lexicon NSID for this data type.
2626+ *
2727+ * @return string
2828+ */
2929+ public static function getLexicon(): string
3030+ {
3131+ return 'app.bsky.graph.follow';
3232+ }
3333+3434+3535+ /**
3636+ * Create an instance from an array.
3737+ *
3838+ * @param array $data The data array
3939+ * @return static
4040+ */
4141+ public static function fromArray(array $data): static
4242+ {
4343+ return new static(
4444+ subject: $data['subject'],
4545+ createdAt: Carbon::parse($data['createdAt']),
4646+ via: isset($data['via']) ? StrongRef::fromArray($data['via']) : null
4747+ );
4848+ }
4949+5050+}
+62
src/Generated/App/Bsky/Graph/List.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Graph;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\BlobReference;
77+use SocialDept\Schema\Data\Data;
88+use SocialDept\Schema\Generated\App\Bsky\Richtext\Facet;
99+use SocialDept\Schema\Support\UnionHelper;
1010+1111+/**
1212+ * Lexicon: app.bsky.graph.list
1313+ * Type: record
1414+ */
1515+class List extends Data
1616+{
1717+1818+ /**
1919+ * @param ListPurpose $purpose Defines the purpose of the list (aka, moderation-oriented or curration-oriented)
2020+ * @param string $name Display name for list; can not be empty.
2121+ */
2222+ public function __construct(
2323+ public readonly ListPurpose $purpose,
2424+ public readonly string $name,
2525+ public readonly Carbon $createdAt,
2626+ public readonly ?string $description = null,
2727+ public readonly ?array $descriptionFacets = null,
2828+ public readonly ?BlobReference $avatar = null,
2929+ public readonly mixed $labels = null
3030+ ) {}
3131+3232+ /**
3333+ * Get the lexicon NSID for this data type.
3434+ *
3535+ * @return string
3636+ */
3737+ public static function getLexicon(): string
3838+ {
3939+ return 'app.bsky.graph.list';
4040+ }
4141+4242+4343+ /**
4444+ * Create an instance from an array.
4545+ *
4646+ * @param array $data The data array
4747+ * @return static
4848+ */
4949+ public static function fromArray(array $data): static
5050+ {
5151+ return new static(
5252+ purpose: Defs::fromArray($data['purpose']),
5353+ name: $data['name'],
5454+ createdAt: Carbon::parse($data['createdAt']),
5555+ description: $data['description'] ?? null,
5656+ descriptionFacets: isset($data['descriptionFacets']) ? array_map(fn ($item) => Facet::fromArray($item), $data['descriptionFacets']) : [],
5757+ avatar: $data['avatar'] ?? null,
5858+ labels: isset($data['labels']) ? UnionHelper::validateOpenUnion($data['labels']) : null
5959+ );
6060+ }
6161+6262+}
+10
src/Generated/App/Bsky/Graph/ListPurpose.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Graph;
44+55+enum ListPurpose: string
66+{
77+ case Modlist = 'app.bsky.graph.defs#modlist';
88+ case Curatelist = 'app.bsky.graph.defs#curatelist';
99+ case Referencelist = 'app.bsky.graph.defs#referencelist';
1010+}
+51
src/Generated/App/Bsky/Graph/Listitem.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Graph;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Lexicon: app.bsky.graph.listitem
1010+ * Type: record
1111+ */
1212+class Listitem extends Data
1313+{
1414+1515+ /**
1616+ * @param string $subject The account which is included on the list.
1717+ * @param string $list Reference (AT-URI) to the list record (app.bsky.graph.list).
1818+ */
1919+ public function __construct(
2020+ public readonly string $subject,
2121+ public readonly string $list,
2222+ public readonly Carbon $createdAt
2323+ ) {}
2424+2525+ /**
2626+ * Get the lexicon NSID for this data type.
2727+ *
2828+ * @return string
2929+ */
3030+ public static function getLexicon(): string
3131+ {
3232+ return 'app.bsky.graph.listitem';
3333+ }
3434+3535+3636+ /**
3737+ * Create an instance from an array.
3838+ *
3939+ * @param array $data The data array
4040+ * @return static
4141+ */
4242+ public static function fromArray(array $data): static
4343+ {
4444+ return new static(
4545+ subject: $data['subject'],
4646+ list: $data['list'],
4747+ createdAt: Carbon::parse($data['createdAt'])
4848+ );
4949+ }
5050+5151+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Labeler\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\Com\Atproto\Label\LabelValue;
77+use SocialDept\Schema\Generated\Com\Atproto\Label\LabelValueDefinition;
88+99+/**
1010+ * Lexicon: app.bsky.labeler.defs.labelerPolicies
1111+ * Type: object
1212+ *
1313+ * @property array<LabelValue> $labelValues The label values which this labeler publishes. May include global or custom labels.
1414+ * @property array<LabelValueDefinition>|null $labelValueDefinitions Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.
1515+ *
1616+ * Constraints:
1717+ * - Required: labelValues
1818+ */
1919+class LabelerPolicies extends Data
2020+{
2121+2222+ /**
2323+ * @param array<LabelValue> $labelValues The label values which this labeler publishes. May include global or custom labels.
2424+ * @param array<LabelValueDefinition>|null $labelValueDefinitions Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.
2525+ */
2626+ public function __construct(
2727+ public readonly array $labelValues,
2828+ public readonly ?array $labelValueDefinitions = null
2929+ ) {}
3030+3131+ /**
3232+ * Get the lexicon NSID for this data type.
3333+ *
3434+ * @return string
3535+ */
3636+ public static function getLexicon(): string
3737+ {
3838+ return 'app.bsky.labeler.defs.labelerPolicies';
3939+ }
4040+4141+4242+ /**
4343+ * Create an instance from an array.
4444+ *
4545+ * @param array $data The data array
4646+ * @return static
4747+ */
4848+ public static function fromArray(array $data): static
4949+ {
5050+ return new static(
5151+ labelValues: isset($data['labelValues']) ? array_map(fn ($item) => Defs::fromArray($item), $data['labelValues']) : [],
5252+ labelValueDefinitions: isset($data['labelValueDefinitions']) ? array_map(fn ($item) => Defs::fromArray($item), $data['labelValueDefinitions']) : []
5353+ );
5454+ }
5555+5656+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Labeler\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\App\Bsky\Actor\ProfileView;
88+use SocialDept\Schema\Generated\App\Bsky\Labeler\Defs\LabelerViewDetailed\LabelerViewerState;
99+use SocialDept\Schema\Generated\App\Bsky\Labeler\LabelerPolicies;
1010+use SocialDept\Schema\Generated\Com\Atproto\Label\Label;
1111+use SocialDept\Schema\Generated\Com\Atproto\Moderation\ReasonType;
1212+use SocialDept\Schema\Generated\Com\Atproto\Moderation\SubjectType;
1313+1414+/**
1515+ * Lexicon: app.bsky.labeler.defs.labelerViewDetailed
1616+ * Type: object
1717+ *
1818+ * @property string $uri
1919+ * @property string $cid
2020+ * @property ProfileView $creator
2121+ * @property LabelerPolicies $policies
2222+ * @property int|null $likeCount
2323+ * @property mixed $viewer
2424+ * @property Carbon $indexedAt
2525+ * @property array<Label>|null $labels
2626+ * @property array<ReasonType>|null $reasonTypes The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.
2727+ * @property array<SubjectType>|null $subjectTypes The set of subject types (account, record, etc) this service accepts reports on.
2828+ * @property array<string>|null $subjectCollections Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.
2929+ *
3030+ * Constraints:
3131+ * - Required: uri, cid, creator, policies, indexedAt
3232+ * - uri: Format: at-uri
3333+ * - cid: Format: cid
3434+ * - likeCount: Minimum: 0
3535+ * - indexedAt: Format: datetime
3636+ */
3737+class LabelerViewDetailed extends Data
3838+{
3939+4040+ /**
4141+ * @param array<ReasonType>|null $reasonTypes The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.
4242+ * @param array<SubjectType>|null $subjectTypes The set of subject types (account, record, etc) this service accepts reports on.
4343+ * @param array<string>|null $subjectCollections Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.
4444+ */
4545+ public function __construct(
4646+ public readonly string $uri,
4747+ public readonly string $cid,
4848+ public readonly ProfileView $creator,
4949+ public readonly LabelerPolicies $policies,
5050+ public readonly Carbon $indexedAt,
5151+ public readonly ?int $likeCount = null,
5252+ public readonly mixed $viewer = null,
5353+ public readonly ?array $labels = null,
5454+ public readonly ?array $reasonTypes = null,
5555+ public readonly ?array $subjectTypes = null,
5656+ public readonly ?array $subjectCollections = null
5757+ ) {}
5858+5959+ /**
6060+ * Get the lexicon NSID for this data type.
6161+ *
6262+ * @return string
6363+ */
6464+ public static function getLexicon(): string
6565+ {
6666+ return 'app.bsky.labeler.defs.labelerViewDetailed';
6767+ }
6868+6969+7070+ /**
7171+ * Create an instance from an array.
7272+ *
7373+ * @param array $data The data array
7474+ * @return static
7575+ */
7676+ public static function fromArray(array $data): static
7777+ {
7878+ return new static(
7979+ uri: $data['uri'],
8080+ cid: $data['cid'],
8181+ creator: Defs::fromArray($data['creator']),
8282+ policies: Defs::fromArray($data['policies']),
8383+ indexedAt: Carbon::parse($data['indexedAt']),
8484+ likeCount: $data['likeCount'] ?? null,
8585+ viewer: $data['viewer'] ?? null,
8686+ labels: isset($data['labels']) ? array_map(fn ($item) => Defs::fromArray($item), $data['labels']) : [],
8787+ reasonTypes: isset($data['reasonTypes']) ? array_map(fn ($item) => Defs::fromArray($item), $data['reasonTypes']) : [],
8888+ subjectTypes: isset($data['subjectTypes']) ? array_map(fn ($item) => Defs::fromArray($item), $data['subjectTypes']) : [],
8989+ subjectCollections: $data['subjectCollections'] ?? null
9090+ );
9191+ }
9292+9393+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Labeler\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: app.bsky.labeler.defs.labelerViewerState
99+ * Type: object
1010+ *
1111+ * @property string|null $like
1212+ *
1313+ * Constraints:
1414+ * - like: Format: at-uri
1515+ */
1616+class LabelerViewerState extends Data
1717+{
1818+1919+ /**
2020+ */
2121+ public function __construct(
2222+ public readonly ?string $like = null
2323+ ) {}
2424+2525+ /**
2626+ * Get the lexicon NSID for this data type.
2727+ *
2828+ * @return string
2929+ */
3030+ public static function getLexicon(): string
3131+ {
3232+ return 'app.bsky.labeler.defs.labelerViewerState';
3333+ }
3434+3535+3636+ /**
3737+ * Create an instance from an array.
3838+ *
3939+ * @param array $data The data array
4040+ * @return static
4141+ */
4242+ public static function fromArray(array $data): static
4343+ {
4444+ return new static(
4545+ like: $data['like'] ?? null
4646+ );
4747+ }
4848+4949+}
+61
src/Generated/App/Bsky/Labeler/Service.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Labeler;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\Com\Atproto\Moderation\ReasonType;
88+use SocialDept\Schema\Generated\Com\Atproto\Moderation\SubjectType;
99+use SocialDept\Schema\Support\UnionHelper;
1010+1111+/**
1212+ * Lexicon: app.bsky.labeler.service
1313+ * Type: record
1414+ */
1515+class Service extends Data
1616+{
1717+1818+ /**
1919+ * @param array<ReasonType>|null $reasonTypes The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.
2020+ * @param array<SubjectType>|null $subjectTypes The set of subject types (account, record, etc) this service accepts reports on.
2121+ * @param array<string>|null $subjectCollections Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.
2222+ */
2323+ public function __construct(
2424+ public readonly LabelerPolicies $policies,
2525+ public readonly Carbon $createdAt,
2626+ public readonly mixed $labels = null,
2727+ public readonly ?array $reasonTypes = null,
2828+ public readonly ?array $subjectTypes = null,
2929+ public readonly ?array $subjectCollections = null
3030+ ) {}
3131+3232+ /**
3333+ * Get the lexicon NSID for this data type.
3434+ *
3535+ * @return string
3636+ */
3737+ public static function getLexicon(): string
3838+ {
3939+ return 'app.bsky.labeler.service';
4040+ }
4141+4242+4343+ /**
4444+ * Create an instance from an array.
4545+ *
4646+ * @param array $data The data array
4747+ * @return static
4848+ */
4949+ public static function fromArray(array $data): static
5050+ {
5151+ return new static(
5252+ policies: Defs::fromArray($data['policies']),
5353+ createdAt: Carbon::parse($data['createdAt']),
5454+ labels: isset($data['labels']) ? UnionHelper::validateOpenUnion($data['labels']) : null,
5555+ reasonTypes: isset($data['reasonTypes']) ? array_map(fn ($item) => Defs::fromArray($item), $data['reasonTypes']) : [],
5656+ subjectTypes: isset($data['subjectTypes']) ? array_map(fn ($item) => Defs::fromArray($item), $data['subjectTypes']) : [],
5757+ subjectCollections: $data['subjectCollections'] ?? null
5858+ );
5959+ }
6060+6161+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Richtext\Facet;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Specifies the sub-string range a facet feature applies to. Start index is
99+ * inclusive, end index is exclusive. Indices are zero-indexed, counting bytes
1010+ * of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16
1111+ * or Unicode codepoints for string slice indexing; in these languages, convert
1212+ * to byte arrays before working with facets.
1313+ *
1414+ * Lexicon: app.bsky.richtext.facet.byteSlice
1515+ * Type: object
1616+ *
1717+ * @property int $byteStart
1818+ * @property int $byteEnd
1919+ *
2020+ * Constraints:
2121+ * - Required: byteStart, byteEnd
2222+ * - byteStart: Minimum: 0
2323+ * - byteEnd: Minimum: 0
2424+ */
2525+class ByteSlice extends Data
2626+{
2727+2828+ /**
2929+ */
3030+ public function __construct(
3131+ public readonly int $byteStart,
3232+ public readonly int $byteEnd
3333+ ) {}
3434+3535+ /**
3636+ * Get the lexicon NSID for this data type.
3737+ *
3838+ * @return string
3939+ */
4040+ public static function getLexicon(): string
4141+ {
4242+ return 'app.bsky.richtext.facet.byteSlice';
4343+ }
4444+4545+4646+ /**
4747+ * Create an instance from an array.
4848+ *
4949+ * @param array $data The data array
5050+ * @return static
5151+ */
5252+ public static function fromArray(array $data): static
5353+ {
5454+ return new static(
5555+ byteStart: $data['byteStart'],
5656+ byteEnd: $data['byteEnd']
5757+ );
5858+ }
5959+6060+}
+53
src/Generated/App/Bsky/Richtext/Facet/Link.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Richtext\Facet;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Facet feature for a URL. The text URL may have been simplified or truncated,
99+ * but the facet reference should be a complete URL.
1010+ *
1111+ * Lexicon: app.bsky.richtext.facet.link
1212+ * Type: object
1313+ *
1414+ * @property string $uri
1515+ *
1616+ * Constraints:
1717+ * - Required: uri
1818+ * - uri: Format: uri
1919+ */
2020+class Link extends Data
2121+{
2222+2323+ /**
2424+ */
2525+ public function __construct(
2626+ public readonly string $uri
2727+ ) {}
2828+2929+ /**
3030+ * Get the lexicon NSID for this data type.
3131+ *
3232+ * @return string
3333+ */
3434+ public static function getLexicon(): string
3535+ {
3636+ return 'app.bsky.richtext.facet.link';
3737+ }
3838+3939+4040+ /**
4141+ * Create an instance from an array.
4242+ *
4343+ * @param array $data The data array
4444+ * @return static
4545+ */
4646+ public static function fromArray(array $data): static
4747+ {
4848+ return new static(
4949+ uri: $data['uri']
5050+ );
5151+ }
5252+5353+}
+53
src/Generated/App/Bsky/Richtext/Facet/Mention.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Richtext\Facet;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Facet feature for mention of another account. The text is usually a handle,
99+ * including a '@' prefix, but the facet reference is a DID.
1010+ *
1111+ * Lexicon: app.bsky.richtext.facet.mention
1212+ * Type: object
1313+ *
1414+ * @property string $did
1515+ *
1616+ * Constraints:
1717+ * - Required: did
1818+ * - did: Format: did
1919+ */
2020+class Mention extends Data
2121+{
2222+2323+ /**
2424+ */
2525+ public function __construct(
2626+ public readonly string $did
2727+ ) {}
2828+2929+ /**
3030+ * Get the lexicon NSID for this data type.
3131+ *
3232+ * @return string
3333+ */
3434+ public static function getLexicon(): string
3535+ {
3636+ return 'app.bsky.richtext.facet.mention';
3737+ }
3838+3939+4040+ /**
4141+ * Create an instance from an array.
4242+ *
4343+ * @param array $data The data array
4444+ * @return static
4545+ */
4646+ public static function fromArray(array $data): static
4747+ {
4848+ return new static(
4949+ did: $data['did']
5050+ );
5151+ }
5252+5353+}
+54
src/Generated/App/Bsky/Richtext/Facet/Tag.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Richtext\Facet;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Facet feature for a hashtag. The text usually includes a '#' prefix, but the
99+ * facet reference should not (except in the case of 'double hash tags').
1010+ *
1111+ * Lexicon: app.bsky.richtext.facet.tag
1212+ * Type: object
1313+ *
1414+ * @property string $tag
1515+ *
1616+ * Constraints:
1717+ * - Required: tag
1818+ * - tag: Max length: 640
1919+ * - tag: Max graphemes: 64
2020+ */
2121+class Tag extends Data
2222+{
2323+2424+ /**
2525+ */
2626+ public function __construct(
2727+ public readonly string $tag
2828+ ) {}
2929+3030+ /**
3131+ * Get the lexicon NSID for this data type.
3232+ *
3333+ * @return string
3434+ */
3535+ public static function getLexicon(): string
3636+ {
3737+ return 'app.bsky.richtext.facet.tag';
3838+ }
3939+4040+4141+ /**
4242+ * Create an instance from an array.
4343+ *
4444+ * @param array $data The data array
4545+ * @return static
4646+ */
4747+ public static function fromArray(array $data): static
4848+ {
4949+ return new static(
5050+ tag: $data['tag']
5151+ );
5252+ }
5353+5454+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Unspecced\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Object used to store age assurance data in stash.
1010+ *
1111+ * Lexicon: app.bsky.unspecced.defs.ageAssuranceEvent
1212+ * Type: object
1313+ *
1414+ * @property Carbon $createdAt The date and time of this write operation.
1515+ * @property string $status The status of the age assurance process.
1616+ * @property string $attemptId The unique identifier for this instance of the age assurance flow, in UUID format.
1717+ * @property string|null $email The email used for AA.
1818+ * @property string|null $initIp The IP address used when initiating the AA flow.
1919+ * @property string|null $initUa The user agent used when initiating the AA flow.
2020+ * @property string|null $completeIp The IP address used when completing the AA flow.
2121+ * @property string|null $completeUa The user agent used when completing the AA flow.
2222+ *
2323+ * Constraints:
2424+ * - Required: createdAt, status, attemptId
2525+ * - createdAt: Format: datetime
2626+ */
2727+class AgeAssuranceEvent extends Data
2828+{
2929+3030+ /**
3131+ * @param Carbon $createdAt The date and time of this write operation.
3232+ * @param string $status The status of the age assurance process.
3333+ * @param string $attemptId The unique identifier for this instance of the age assurance flow, in UUID format.
3434+ * @param string|null $email The email used for AA.
3535+ * @param string|null $initIp The IP address used when initiating the AA flow.
3636+ * @param string|null $initUa The user agent used when initiating the AA flow.
3737+ * @param string|null $completeIp The IP address used when completing the AA flow.
3838+ * @param string|null $completeUa The user agent used when completing the AA flow.
3939+ */
4040+ public function __construct(
4141+ public readonly Carbon $createdAt,
4242+ public readonly string $status,
4343+ public readonly string $attemptId,
4444+ public readonly ?string $email = null,
4545+ public readonly ?string $initIp = null,
4646+ public readonly ?string $initUa = null,
4747+ public readonly ?string $completeIp = null,
4848+ public readonly ?string $completeUa = null
4949+ ) {}
5050+5151+ /**
5252+ * Get the lexicon NSID for this data type.
5353+ *
5454+ * @return string
5555+ */
5656+ public static function getLexicon(): string
5757+ {
5858+ return 'app.bsky.unspecced.defs.ageAssuranceEvent';
5959+ }
6060+6161+6262+ /**
6363+ * Create an instance from an array.
6464+ *
6565+ * @param array $data The data array
6666+ * @return static
6767+ */
6868+ public static function fromArray(array $data): static
6969+ {
7070+ return new static(
7171+ createdAt: Carbon::parse($data['createdAt']),
7272+ status: $data['status'],
7373+ attemptId: $data['attemptId'],
7474+ email: $data['email'] ?? null,
7575+ initIp: $data['initIp'] ?? null,
7676+ initUa: $data['initUa'] ?? null,
7777+ completeIp: $data['completeIp'] ?? null,
7878+ completeUa: $data['completeUa'] ?? null
7979+ );
8080+ }
8181+8282+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Unspecced\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * The computed state of the age assurance process, returned to the user in
1010+ * question on certain authenticated requests.
1111+ *
1212+ * Lexicon: app.bsky.unspecced.defs.ageAssuranceState
1313+ * Type: object
1414+ *
1515+ * @property Carbon|null $lastInitiatedAt The timestamp when this state was last updated.
1616+ * @property string $status The status of the age assurance process.
1717+ *
1818+ * Constraints:
1919+ * - Required: status
2020+ * - lastInitiatedAt: Format: datetime
2121+ */
2222+class AgeAssuranceState extends Data
2323+{
2424+2525+ /**
2626+ * @param string $status The status of the age assurance process.
2727+ * @param Carbon|null $lastInitiatedAt The timestamp when this state was last updated.
2828+ */
2929+ public function __construct(
3030+ public readonly string $status,
3131+ public readonly ?Carbon $lastInitiatedAt = null
3232+ ) {}
3333+3434+ /**
3535+ * Get the lexicon NSID for this data type.
3636+ *
3737+ * @return string
3838+ */
3939+ public static function getLexicon(): string
4040+ {
4141+ return 'app.bsky.unspecced.defs.ageAssuranceState';
4242+ }
4343+4444+4545+ /**
4646+ * Create an instance from an array.
4747+ *
4848+ * @param array $data The data array
4949+ * @return static
5050+ */
5151+ public static function fromArray(array $data): static
5252+ {
5353+ return new static(
5454+ status: $data['status'],
5555+ lastInitiatedAt: isset($data['lastInitiatedAt']) ? Carbon::parse($data['lastInitiatedAt']) : null
5656+ );
5757+ }
5858+5959+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\App\Bsky\Unspecced\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\App\Bsky\Feed\PostView;
77+88+/**
99+ * Lexicon: app.bsky.unspecced.defs.threadItemPost
1010+ * Type: object
1111+ *
1212+ * @property PostView $post
1313+ * @property bool $moreParents This post has more parents that were not present in the response. This is just a boolean, without the number of parents.
1414+ * @property int $moreReplies This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate.
1515+ * @property bool $opThread This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread.
1616+ * @property bool $hiddenByThreadgate The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.
1717+ * @property bool $mutedByViewer This is by an account muted by the viewer requesting it.
1818+ *
1919+ * Constraints:
2020+ * - Required: post, moreParents, moreReplies, opThread, hiddenByThreadgate, mutedByViewer
2121+ */
2222+class ThreadItemPost extends Data
2323+{
2424+2525+ /**
2626+ * @param bool $moreParents This post has more parents that were not present in the response. This is just a boolean, without the number of parents.
2727+ * @param int $moreReplies This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate.
2828+ * @param bool $opThread This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread.
2929+ * @param bool $hiddenByThreadgate The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.
3030+ * @param bool $mutedByViewer This is by an account muted by the viewer requesting it.
3131+ */
3232+ public function __construct(
3333+ public readonly PostView $post,
3434+ public readonly bool $moreParents,
3535+ public readonly int $moreReplies,
3636+ public readonly bool $opThread,
3737+ public readonly bool $hiddenByThreadgate,
3838+ public readonly bool $mutedByViewer
3939+ ) {}
4040+4141+ /**
4242+ * Get the lexicon NSID for this data type.
4343+ *
4444+ * @return string
4545+ */
4646+ public static function getLexicon(): string
4747+ {
4848+ return 'app.bsky.unspecced.defs.threadItemPost';
4949+ }
5050+5151+5252+ /**
5353+ * Create an instance from an array.
5454+ *
5555+ * @param array $data The data array
5656+ * @return static
5757+ */
5858+ public static function fromArray(array $data): static
5959+ {
6060+ return new static(
6161+ post: Defs::fromArray($data['post']),
6262+ moreParents: $data['moreParents'],
6363+ moreReplies: $data['moreReplies'],
6464+ opThread: $data['opThread'],
6565+ hiddenByThreadgate: $data['hiddenByThreadgate'],
6666+ mutedByViewer: $data['mutedByViewer']
6767+ );
6868+ }
6969+7070+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Identity\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: com.atproto.identity.defs.identityInfo
99+ * Type: object
1010+ *
1111+ * @property string $did
1212+ * @property string $handle The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.
1313+ * @property mixed $didDoc The complete DID document for the identity.
1414+ *
1515+ * Constraints:
1616+ * - Required: did, handle, didDoc
1717+ * - did: Format: did
1818+ * - handle: Format: handle
1919+ */
2020+class IdentityInfo extends Data
2121+{
2222+2323+ /**
2424+ * @param string $handle The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.
2525+ * @param mixed $didDoc The complete DID document for the identity.
2626+ */
2727+ public function __construct(
2828+ public readonly string $did,
2929+ public readonly string $handle,
3030+ public readonly mixed $didDoc
3131+ ) {}
3232+3333+ /**
3434+ * Get the lexicon NSID for this data type.
3535+ *
3636+ * @return string
3737+ */
3838+ public static function getLexicon(): string
3939+ {
4040+ return 'com.atproto.identity.defs.identityInfo';
4141+ }
4242+4343+4444+ /**
4545+ * Create an instance from an array.
4646+ *
4747+ * @param array $data The data array
4848+ * @return static
4949+ */
5050+ public static function fromArray(array $data): static
5151+ {
5252+ return new static(
5353+ did: $data['did'],
5454+ handle: $data['handle'],
5555+ didDoc: $data['didDoc']
5656+ );
5757+ }
5858+5959+}
+91
src/Generated/Com/Atproto/Label/Defs/Label.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Label\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Metadata tag on an atproto resource (eg, repo or record).
1010+ *
1111+ * Lexicon: com.atproto.label.defs.label
1212+ * Type: object
1313+ *
1414+ * @property int|null $ver The AT Protocol version of the label object.
1515+ * @property string $src DID of the actor who created this label.
1616+ * @property string $uri AT URI of the record, repository (account), or other resource that this label applies to.
1717+ * @property string|null $cid Optionally, CID specifying the specific version of 'uri' resource this label applies to.
1818+ * @property string $val The short string name of the value or type of this label.
1919+ * @property bool|null $neg If true, this is a negation label, overwriting a previous label.
2020+ * @property Carbon $cts Timestamp when this label was created.
2121+ * @property Carbon|null $exp Timestamp at which this label expires (no longer applies).
2222+ * @property string|null $sig Signature of dag-cbor encoded label.
2323+ *
2424+ * Constraints:
2525+ * - Required: src, uri, val, cts
2626+ * - src: Format: did
2727+ * - uri: Format: uri
2828+ * - cid: Format: cid
2929+ * - val: Max length: 128
3030+ * - cts: Format: datetime
3131+ * - exp: Format: datetime
3232+ */
3333+class Label extends Data
3434+{
3535+3636+ /**
3737+ * @param string $src DID of the actor who created this label.
3838+ * @param string $uri AT URI of the record, repository (account), or other resource that this label applies to.
3939+ * @param string $val The short string name of the value or type of this label.
4040+ * @param Carbon $cts Timestamp when this label was created.
4141+ * @param int|null $ver The AT Protocol version of the label object.
4242+ * @param string|null $cid Optionally, CID specifying the specific version of 'uri' resource this label applies to.
4343+ * @param bool|null $neg If true, this is a negation label, overwriting a previous label.
4444+ * @param Carbon|null $exp Timestamp at which this label expires (no longer applies).
4545+ * @param string|null $sig Signature of dag-cbor encoded label.
4646+ */
4747+ public function __construct(
4848+ public readonly string $src,
4949+ public readonly string $uri,
5050+ public readonly string $val,
5151+ public readonly Carbon $cts,
5252+ public readonly ?int $ver = null,
5353+ public readonly ?string $cid = null,
5454+ public readonly ?bool $neg = null,
5555+ public readonly ?Carbon $exp = null,
5656+ public readonly ?string $sig = null
5757+ ) {}
5858+5959+ /**
6060+ * Get the lexicon NSID for this data type.
6161+ *
6262+ * @return string
6363+ */
6464+ public static function getLexicon(): string
6565+ {
6666+ return 'com.atproto.label.defs.label';
6767+ }
6868+6969+7070+ /**
7171+ * Create an instance from an array.
7272+ *
7373+ * @param array $data The data array
7474+ * @return static
7575+ */
7676+ public static function fromArray(array $data): static
7777+ {
7878+ return new static(
7979+ src: $data['src'],
8080+ uri: $data['uri'],
8181+ val: $data['val'],
8282+ cts: Carbon::parse($data['cts']),
8383+ ver: $data['ver'] ?? null,
8484+ cid: $data['cid'] ?? null,
8585+ neg: $data['neg'] ?? null,
8686+ exp: isset($data['exp']) ? Carbon::parse($data['exp']) : null,
8787+ sig: $data['sig'] ?? null
8888+ );
8989+ }
9090+9191+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Label\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\Com\Atproto\Label\Defs\LabelValueDefinition\LabelValueDefinitionStrings;
77+88+/**
99+ * Declares a label value and its expected interpretations and behaviors.
1010+ *
1111+ * Lexicon: com.atproto.label.defs.labelValueDefinition
1212+ * Type: object
1313+ *
1414+ * @property string $identifier The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).
1515+ * @property string $severity How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.
1616+ * @property string $blurs What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.
1717+ * @property string|null $defaultSetting The default setting for this label.
1818+ * @property bool|null $adultOnly Does the user need to have adult content enabled in order to configure this label?
1919+ * @property array $locales
2020+ *
2121+ * Constraints:
2222+ * - Required: identifier, severity, blurs, locales
2323+ * - identifier: Max length: 100
2424+ * - identifier: Max graphemes: 100
2525+ */
2626+class LabelValueDefinition extends Data
2727+{
2828+2929+ /**
3030+ * @param string $identifier The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).
3131+ * @param string $severity How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.
3232+ * @param string $blurs What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.
3333+ * @param string|null $defaultSetting The default setting for this label.
3434+ * @param bool|null $adultOnly Does the user need to have adult content enabled in order to configure this label?
3535+ */
3636+ public function __construct(
3737+ public readonly string $identifier,
3838+ public readonly string $severity,
3939+ public readonly string $blurs,
4040+ public readonly array $locales,
4141+ public readonly ?string $defaultSetting = null,
4242+ public readonly ?bool $adultOnly = null
4343+ ) {}
4444+4545+ /**
4646+ * Get the lexicon NSID for this data type.
4747+ *
4848+ * @return string
4949+ */
5050+ public static function getLexicon(): string
5151+ {
5252+ return 'com.atproto.label.defs.labelValueDefinition';
5353+ }
5454+5555+5656+ /**
5757+ * Create an instance from an array.
5858+ *
5959+ * @param array $data The data array
6060+ * @return static
6161+ */
6262+ public static function fromArray(array $data): static
6363+ {
6464+ return new static(
6565+ identifier: $data['identifier'],
6666+ severity: $data['severity'],
6767+ blurs: $data['blurs'],
6868+ locales: $data['locales'] ?? [],
6969+ defaultSetting: $data['defaultSetting'] ?? null,
7070+ adultOnly: $data['adultOnly'] ?? null
7171+ );
7272+ }
7373+7474+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Label\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Strings which describe the label in the UI, localized into a specific
99+ * language.
1010+ *
1111+ * Lexicon: com.atproto.label.defs.labelValueDefinitionStrings
1212+ * Type: object
1313+ *
1414+ * @property string $lang The code of the language these strings are written in.
1515+ * @property string $name A short human-readable name for the label.
1616+ * @property string $description A longer description of what the label means and why it might be applied.
1717+ *
1818+ * Constraints:
1919+ * - Required: lang, name, description
2020+ * - lang: Format: language
2121+ * - name: Max length: 640
2222+ * - name: Max graphemes: 64
2323+ * - description: Max length: 100000
2424+ * - description: Max graphemes: 10000
2525+ */
2626+class LabelValueDefinitionStrings extends Data
2727+{
2828+2929+ /**
3030+ * @param string $lang The code of the language these strings are written in.
3131+ * @param string $name A short human-readable name for the label.
3232+ * @param string $description A longer description of what the label means and why it might be applied.
3333+ */
3434+ public function __construct(
3535+ public readonly string $lang,
3636+ public readonly string $name,
3737+ public readonly string $description
3838+ ) {}
3939+4040+ /**
4141+ * Get the lexicon NSID for this data type.
4242+ *
4343+ * @return string
4444+ */
4545+ public static function getLexicon(): string
4646+ {
4747+ return 'com.atproto.label.defs.labelValueDefinitionStrings';
4848+ }
4949+5050+5151+ /**
5252+ * Create an instance from an array.
5353+ *
5454+ * @param array $data The data array
5555+ * @return static
5656+ */
5757+ public static function fromArray(array $data): static
5858+ {
5959+ return new static(
6060+ lang: $data['lang'],
6161+ name: $data['name'],
6262+ description: $data['description']
6363+ );
6464+ }
6565+6666+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Label\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Metadata tag on an atproto record, published by the author within the record.
99+ * Note that schemas should use #selfLabels, not #selfLabel.
1010+ *
1111+ * Lexicon: com.atproto.label.defs.selfLabel
1212+ * Type: object
1313+ *
1414+ * @property string $val The short string name of the value or type of this label.
1515+ *
1616+ * Constraints:
1717+ * - Required: val
1818+ * - val: Max length: 128
1919+ */
2020+class SelfLabel extends Data
2121+{
2222+2323+ /**
2424+ * @param string $val The short string name of the value or type of this label.
2525+ */
2626+ public function __construct(
2727+ public readonly string $val
2828+ ) {}
2929+3030+ /**
3131+ * Get the lexicon NSID for this data type.
3232+ *
3333+ * @return string
3434+ */
3535+ public static function getLexicon(): string
3636+ {
3737+ return 'com.atproto.label.defs.selfLabel';
3838+ }
3939+4040+4141+ /**
4242+ * Create an instance from an array.
4343+ *
4444+ * @param array $data The data array
4545+ * @return static
4646+ */
4747+ public static function fromArray(array $data): static
4848+ {
4949+ return new static(
5050+ val: $data['val']
5151+ );
5252+ }
5353+5454+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Label\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\Com\Atproto\Label\Defs\SelfLabels\SelfLabel;
77+88+/**
99+ * Metadata tags on an atproto record, published by the author within the
1010+ * record.
1111+ *
1212+ * Lexicon: com.atproto.label.defs.selfLabels
1313+ * Type: object
1414+ *
1515+ * @property array $values
1616+ *
1717+ * Constraints:
1818+ * - Required: values
1919+ * - values: Max length: 10
2020+ */
2121+class SelfLabels extends Data
2222+{
2323+2424+ /**
2525+ */
2626+ public function __construct(
2727+ public readonly array $values
2828+ ) {}
2929+3030+ /**
3131+ * Get the lexicon NSID for this data type.
3232+ *
3333+ * @return string
3434+ */
3535+ public static function getLexicon(): string
3636+ {
3737+ return 'com.atproto.label.defs.selfLabels';
3838+ }
3939+4040+4141+ /**
4242+ * Create an instance from an array.
4343+ *
4444+ * @param array $data The data array
4545+ * @return static
4646+ */
4747+ public static function fromArray(array $data): static
4848+ {
4949+ return new static(
5050+ values: $data['values'] ?? []
5151+ );
5252+ }
5353+5454+}
+18
src/Generated/Com/Atproto/Label/LabelValue.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Label;
44+55+enum LabelValue: string
66+{
77+ case Hide = '!hide';
88+ case NoPromote = '!no-promote';
99+ case Warn = '!warn';
1010+ case NoUnauthenticated = '!no-unauthenticated';
1111+ case DmcaViolation = 'dmca-violation';
1212+ case Doxxing = 'doxxing';
1313+ case Porn = 'porn';
1414+ case Sexual = 'sexual';
1515+ case Nudity = 'nudity';
1616+ case Nsfl = 'nsfl';
1717+ case Gore = 'gore';
1818+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Moderation;
44+55+/**
66+ * Tag describing a type of subject that might be reported.
77+ */
88+enum SubjectType: string
99+{
1010+ case Account = 'account';
1111+ case Record = 'record';
1212+ case Chat = 'chat';
1313+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Server\ListAppPasswords;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Lexicon: com.atproto.server.listAppPasswords.appPassword
1010+ * Type: object
1111+ *
1212+ * @property string $name
1313+ * @property Carbon $createdAt
1414+ * @property bool|null $privileged
1515+ *
1616+ * Constraints:
1717+ * - Required: name, createdAt
1818+ * - createdAt: Format: datetime
1919+ */
2020+class AppPassword extends Data
2121+{
2222+2323+ /**
2424+ */
2525+ public function __construct(
2626+ public readonly string $name,
2727+ public readonly Carbon $createdAt,
2828+ public readonly ?bool $privileged = null
2929+ ) {}
3030+3131+ /**
3232+ * Get the lexicon NSID for this data type.
3333+ *
3434+ * @return string
3535+ */
3636+ public static function getLexicon(): string
3737+ {
3838+ return 'com.atproto.server.listAppPasswords.appPassword';
3939+ }
4040+4141+4242+ /**
4343+ * Create an instance from an array.
4444+ *
4545+ * @param array $data The data array
4646+ * @return static
4747+ */
4848+ public static function fromArray(array $data): static
4949+ {
5050+ return new static(
5151+ name: $data['name'],
5252+ createdAt: Carbon::parse($data['createdAt']),
5353+ privileged: $data['privileged'] ?? null
5454+ );
5555+ }
5656+5757+}
+12
src/Generated/Com/Atproto/Sync/HostStatus.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync;
44+55+enum HostStatus: string
66+{
77+ case Active = 'active';
88+ case Idle = 'idle';
99+ case Offline = 'offline';
1010+ case Throttled = 'throttled';
1111+ case Banned = 'banned';
1212+}
+61
src/Generated/Com/Atproto/Sync/ListHosts/Host.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\ListHosts;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\Com\Atproto\Sync\HostStatus;
77+88+/**
99+ * Lexicon: com.atproto.sync.listHosts.host
1010+ * Type: object
1111+ *
1212+ * @property string $hostname hostname of server; not a URL (no scheme)
1313+ * @property int|null $seq Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).
1414+ * @property int|null $accountCount
1515+ * @property HostStatus|null $status
1616+ *
1717+ * Constraints:
1818+ * - Required: hostname
1919+ */
2020+class Host extends Data
2121+{
2222+2323+ /**
2424+ * @param string $hostname hostname of server; not a URL (no scheme)
2525+ * @param int|null $seq Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).
2626+ */
2727+ public function __construct(
2828+ public readonly string $hostname,
2929+ public readonly ?int $seq = null,
3030+ public readonly ?int $accountCount = null,
3131+ public readonly ?HostStatus $status = null
3232+ ) {}
3333+3434+ /**
3535+ * Get the lexicon NSID for this data type.
3636+ *
3737+ * @return string
3838+ */
3939+ public static function getLexicon(): string
4040+ {
4141+ return 'com.atproto.sync.listHosts.host';
4242+ }
4343+4444+4545+ /**
4646+ * Create an instance from an array.
4747+ *
4848+ * @param array $data The data array
4949+ * @return static
5050+ */
5151+ public static function fromArray(array $data): static
5252+ {
5353+ return new static(
5454+ hostname: $data['hostname'],
5555+ seq: $data['seq'] ?? null,
5656+ accountCount: $data['accountCount'] ?? null,
5757+ status: isset($data['status']) ? Defs::fromArray($data['status']) : null
5858+ );
5959+ }
6060+6161+}
+66
src/Generated/Com/Atproto/Sync/ListRepos/Repo.php
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\ListRepos;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: com.atproto.sync.listRepos.repo
99+ * Type: object
1010+ *
1111+ * @property string $did
1212+ * @property string $head Current repo commit CID
1313+ * @property string $rev
1414+ * @property bool|null $active
1515+ * @property string|null $status If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.
1616+ *
1717+ * Constraints:
1818+ * - Required: did, head, rev
1919+ * - did: Format: did
2020+ * - head: Format: cid
2121+ * - rev: Format: tid
2222+ */
2323+class Repo extends Data
2424+{
2525+2626+ /**
2727+ * @param string $head Current repo commit CID
2828+ * @param string|null $status If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.
2929+ */
3030+ public function __construct(
3131+ public readonly string $did,
3232+ public readonly string $head,
3333+ public readonly string $rev,
3434+ public readonly ?bool $active = null,
3535+ public readonly ?string $status = null
3636+ ) {}
3737+3838+ /**
3939+ * Get the lexicon NSID for this data type.
4040+ *
4141+ * @return string
4242+ */
4343+ public static function getLexicon(): string
4444+ {
4545+ return 'com.atproto.sync.listRepos.repo';
4646+ }
4747+4848+4949+ /**
5050+ * Create an instance from an array.
5151+ *
5252+ * @param array $data The data array
5353+ * @return static
5454+ */
5555+ public static function fromArray(array $data): static
5656+ {
5757+ return new static(
5858+ did: $data['did'],
5959+ head: $data['head'],
6060+ rev: $data['rev'],
6161+ active: $data['active'] ?? null,
6262+ status: $data['status'] ?? null
6363+ );
6464+ }
6565+6666+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\SubscribeRepos;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Represents a change to an account's status on a host (eg, PDS or Relay). The
1010+ * semantics of this event are that the status is at the host which emitted the
1111+ * event, not necessarily that at the currently active PDS. Eg, a Relay takedown
1212+ * would emit a takedown with active=false, even if the PDS is still active.
1313+ *
1414+ * Lexicon: com.atproto.sync.subscribeRepos.account
1515+ * Type: object
1616+ *
1717+ * @property int $seq
1818+ * @property string $did
1919+ * @property Carbon $time
2020+ * @property bool $active Indicates that the account has a repository which can be fetched from the host that emitted this event.
2121+ * @property string|null $status If active=false, this optional field indicates a reason for why the account is not active.
2222+ *
2323+ * Constraints:
2424+ * - Required: seq, did, time, active
2525+ * - did: Format: did
2626+ * - time: Format: datetime
2727+ */
2828+class Account extends Data
2929+{
3030+3131+ /**
3232+ * @param bool $active Indicates that the account has a repository which can be fetched from the host that emitted this event.
3333+ * @param string|null $status If active=false, this optional field indicates a reason for why the account is not active.
3434+ */
3535+ public function __construct(
3636+ public readonly int $seq,
3737+ public readonly string $did,
3838+ public readonly Carbon $time,
3939+ public readonly bool $active,
4040+ public readonly ?string $status = null
4141+ ) {}
4242+4343+ /**
4444+ * Get the lexicon NSID for this data type.
4545+ *
4646+ * @return string
4747+ */
4848+ public static function getLexicon(): string
4949+ {
5050+ return 'com.atproto.sync.subscribeRepos.account';
5151+ }
5252+5353+5454+ /**
5555+ * Create an instance from an array.
5656+ *
5757+ * @param array $data The data array
5858+ * @return static
5959+ */
6060+ public static function fromArray(array $data): static
6161+ {
6262+ return new static(
6363+ seq: $data['seq'],
6464+ did: $data['did'],
6565+ time: Carbon::parse($data['time']),
6666+ active: $data['active'],
6767+ status: $data['status'] ?? null
6868+ );
6969+ }
7070+7171+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\SubscribeRepos;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+use SocialDept\Schema\Generated\Com\Atproto\Sync\SubscribeRepos\Commit\RepoOp;
88+99+/**
1010+ * Represents an update of repository state. Note that empty commits are
1111+ * allowed, which include no repo data changes, but an update to rev and
1212+ * signature.
1313+ *
1414+ * Lexicon: com.atproto.sync.subscribeRepos.commit
1515+ * Type: object
1616+ *
1717+ * @property int $seq The stream sequence number of this message.
1818+ * @property bool $rebase DEPRECATED -- unused
1919+ * @property bool $tooBig DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data.
2020+ * @property string $repo The repo this event comes from. Note that all other message types name this field 'did'.
2121+ * @property string $commit Repo commit object CID.
2222+ * @property string $rev The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.
2323+ * @property string $since The rev of the last emitted commit from this repo (if any).
2424+ * @property string $blocks CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.
2525+ * @property array $ops
2626+ * @property array<string> $blobs
2727+ * @property string|null $prevData The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.
2828+ * @property Carbon $time Timestamp of when this message was originally broadcast.
2929+ *
3030+ * Constraints:
3131+ * - Required: seq, rebase, tooBig, repo, commit, rev, since, blocks, ops, blobs, time
3232+ * - repo: Format: did
3333+ * - rev: Format: tid
3434+ * - since: Format: tid
3535+ * - blocks: Max length: 2000000
3636+ * - ops: Max length: 200
3737+ * - time: Format: datetime
3838+ */
3939+class Commit extends Data
4040+{
4141+4242+ /**
4343+ * @param int $seq The stream sequence number of this message.
4444+ * @param bool $rebase DEPRECATED -- unused
4545+ * @param bool $tooBig DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data.
4646+ * @param string $repo The repo this event comes from. Note that all other message types name this field 'did'.
4747+ * @param string $commit Repo commit object CID.
4848+ * @param string $rev The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.
4949+ * @param string $since The rev of the last emitted commit from this repo (if any).
5050+ * @param string $blocks CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.
5151+ * @param Carbon $time Timestamp of when this message was originally broadcast.
5252+ * @param string|null $prevData The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.
5353+ */
5454+ public function __construct(
5555+ public readonly int $seq,
5656+ public readonly bool $rebase,
5757+ public readonly bool $tooBig,
5858+ public readonly string $repo,
5959+ public readonly string $commit,
6060+ public readonly string $rev,
6161+ public readonly string $since,
6262+ public readonly string $blocks,
6363+ public readonly array $ops,
6464+ public readonly array $blobs,
6565+ public readonly Carbon $time,
6666+ public readonly ?string $prevData = null
6767+ ) {}
6868+6969+ /**
7070+ * Get the lexicon NSID for this data type.
7171+ *
7272+ * @return string
7373+ */
7474+ public static function getLexicon(): string
7575+ {
7676+ return 'com.atproto.sync.subscribeRepos.commit';
7777+ }
7878+7979+8080+ /**
8181+ * Create an instance from an array.
8282+ *
8383+ * @param array $data The data array
8484+ * @return static
8585+ */
8686+ public static function fromArray(array $data): static
8787+ {
8888+ return new static(
8989+ seq: $data['seq'],
9090+ rebase: $data['rebase'],
9191+ tooBig: $data['tooBig'],
9292+ repo: $data['repo'],
9393+ commit: $data['commit'],
9494+ rev: $data['rev'],
9595+ since: $data['since'],
9696+ blocks: $data['blocks'],
9797+ ops: $data['ops'] ?? [],
9898+ blobs: $data['blobs'],
9999+ time: Carbon::parse($data['time']),
100100+ prevData: $data['prevData'] ?? null
101101+ );
102102+ }
103103+104104+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\SubscribeRepos;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Represents a change to an account's identity. Could be an updated handle,
1010+ * signing key, or pds hosting endpoint. Serves as a prod to all downstream
1111+ * services to refresh their identity cache.
1212+ *
1313+ * Lexicon: com.atproto.sync.subscribeRepos.identity
1414+ * Type: object
1515+ *
1616+ * @property int $seq
1717+ * @property string $did
1818+ * @property Carbon $time
1919+ * @property string|null $handle The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.
2020+ *
2121+ * Constraints:
2222+ * - Required: seq, did, time
2323+ * - did: Format: did
2424+ * - time: Format: datetime
2525+ * - handle: Format: handle
2626+ */
2727+class Identity extends Data
2828+{
2929+3030+ /**
3131+ * @param string|null $handle The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.
3232+ */
3333+ public function __construct(
3434+ public readonly int $seq,
3535+ public readonly string $did,
3636+ public readonly Carbon $time,
3737+ public readonly ?string $handle = null
3838+ ) {}
3939+4040+ /**
4141+ * Get the lexicon NSID for this data type.
4242+ *
4343+ * @return string
4444+ */
4545+ public static function getLexicon(): string
4646+ {
4747+ return 'com.atproto.sync.subscribeRepos.identity';
4848+ }
4949+5050+5151+ /**
5252+ * Create an instance from an array.
5353+ *
5454+ * @param array $data The data array
5555+ * @return static
5656+ */
5757+ public static function fromArray(array $data): static
5858+ {
5959+ return new static(
6060+ seq: $data['seq'],
6161+ did: $data['did'],
6262+ time: Carbon::parse($data['time']),
6363+ handle: $data['handle'] ?? null
6464+ );
6565+ }
6666+6767+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\SubscribeRepos;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * A repo operation, ie a mutation of a single record.
99+ *
1010+ * Lexicon: com.atproto.sync.subscribeRepos.repoOp
1111+ * Type: object
1212+ *
1313+ * @property string $action
1414+ * @property string $path
1515+ * @property string $cid For creates and updates, the new record CID. For deletions, null.
1616+ * @property string|null $prev For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.
1717+ *
1818+ * Constraints:
1919+ * - Required: action, path, cid
2020+ */
2121+class RepoOp extends Data
2222+{
2323+2424+ /**
2525+ * @param string $cid For creates and updates, the new record CID. For deletions, null.
2626+ * @param string|null $prev For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.
2727+ */
2828+ public function __construct(
2929+ public readonly string $action,
3030+ public readonly string $path,
3131+ public readonly string $cid,
3232+ public readonly ?string $prev = null
3333+ ) {}
3434+3535+ /**
3636+ * Get the lexicon NSID for this data type.
3737+ *
3838+ * @return string
3939+ */
4040+ public static function getLexicon(): string
4141+ {
4242+ return 'com.atproto.sync.subscribeRepos.repoOp';
4343+ }
4444+4545+4646+ /**
4747+ * Create an instance from an array.
4848+ *
4949+ * @param array $data The data array
5050+ * @return static
5151+ */
5252+ public static function fromArray(array $data): static
5353+ {
5454+ return new static(
5555+ action: $data['action'],
5656+ path: $data['path'],
5757+ cid: $data['cid'],
5858+ prev: $data['prev'] ?? null
5959+ );
6060+ }
6161+6262+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Com\Atproto\Sync\SubscribeRepos;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Updates the repo to a new state, without necessarily including that state on
1010+ * the firehose. Used to recover from broken commit streams, data loss
1111+ * incidents, or in situations where upstream host does not know recent state of
1212+ * the repository.
1313+ *
1414+ * Lexicon: com.atproto.sync.subscribeRepos.sync
1515+ * Type: object
1616+ *
1717+ * @property int $seq The stream sequence number of this message.
1818+ * @property string $did The account this repo event corresponds to. Must match that in the commit object.
1919+ * @property string $blocks CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.
2020+ * @property string $rev The rev of the commit. This value must match that in the commit object.
2121+ * @property Carbon $time Timestamp of when this message was originally broadcast.
2222+ *
2323+ * Constraints:
2424+ * - Required: seq, did, blocks, rev, time
2525+ * - did: Format: did
2626+ * - blocks: Max length: 10000
2727+ * - time: Format: datetime
2828+ */
2929+class Sync extends Data
3030+{
3131+3232+ /**
3333+ * @param int $seq The stream sequence number of this message.
3434+ * @param string $did The account this repo event corresponds to. Must match that in the commit object.
3535+ * @param string $blocks CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.
3636+ * @param string $rev The rev of the commit. This value must match that in the commit object.
3737+ * @param Carbon $time Timestamp of when this message was originally broadcast.
3838+ */
3939+ public function __construct(
4040+ public readonly int $seq,
4141+ public readonly string $did,
4242+ public readonly string $blocks,
4343+ public readonly string $rev,
4444+ public readonly Carbon $time
4545+ ) {}
4646+4747+ /**
4848+ * Get the lexicon NSID for this data type.
4949+ *
5050+ * @return string
5151+ */
5252+ public static function getLexicon(): string
5353+ {
5454+ return 'com.atproto.sync.subscribeRepos.sync';
5555+ }
5656+5757+5858+ /**
5959+ * Create an instance from an array.
6060+ *
6161+ * @param array $data The data array
6262+ * @return static
6363+ */
6464+ public static function fromArray(array $data): static
6565+ {
6666+ return new static(
6767+ seq: $data['seq'],
6868+ did: $data['did'],
6969+ blocks: $data['blocks'],
7070+ rev: $data['rev'],
7171+ time: Carbon::parse($data['time'])
7272+ );
7373+ }
7474+7575+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Logs account status related events on a repo subject. Normally captured by
1010+ * automod from the firehose and emitted to ozone for historical tracking.
1111+ *
1212+ * Lexicon: tools.ozone.moderation.defs.accountEvent
1313+ * Type: object
1414+ *
1515+ * @property string|null $comment
1616+ * @property bool $active Indicates that the account has a repository which can be fetched from the host that emitted this event.
1717+ * @property string|null $status
1818+ * @property Carbon $timestamp
1919+ *
2020+ * Constraints:
2121+ * - Required: timestamp, active
2222+ * - timestamp: Format: datetime
2323+ */
2424+class AccountEvent extends Data
2525+{
2626+2727+ /**
2828+ * @param bool $active Indicates that the account has a repository which can be fetched from the host that emitted this event.
2929+ */
3030+ public function __construct(
3131+ public readonly bool $active,
3232+ public readonly Carbon $timestamp,
3333+ public readonly ?string $comment = null,
3434+ public readonly ?string $status = null
3535+ ) {}
3636+3737+ /**
3838+ * Get the lexicon NSID for this data type.
3939+ *
4040+ * @return string
4141+ */
4242+ public static function getLexicon(): string
4343+ {
4444+ return 'tools.ozone.moderation.defs.accountEvent';
4545+ }
4646+4747+4848+ /**
4949+ * Create an instance from an array.
5050+ *
5151+ * @param array $data The data array
5252+ * @return static
5353+ */
5454+ public static function fromArray(array $data): static
5555+ {
5656+ return new static(
5757+ active: $data['active'],
5858+ timestamp: Carbon::parse($data['timestamp']),
5959+ comment: $data['comment'] ?? null,
6060+ status: $data['status'] ?? null
6161+ );
6262+ }
6363+6464+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Statistics about a particular account subject
99+ *
1010+ * Lexicon: tools.ozone.moderation.defs.accountStats
1111+ * Type: object
1212+ *
1313+ * @property int|null $reportCount Total number of reports on the account
1414+ * @property int|null $appealCount Total number of appeals against a moderation action on the account
1515+ * @property int|null $suspendCount Number of times the account was suspended
1616+ * @property int|null $escalateCount Number of times the account was escalated
1717+ * @property int|null $takedownCount Number of times the account was taken down
1818+ */
1919+class AccountStats extends Data
2020+{
2121+2222+ /**
2323+ * @param int|null $reportCount Total number of reports on the account
2424+ * @param int|null $appealCount Total number of appeals against a moderation action on the account
2525+ * @param int|null $suspendCount Number of times the account was suspended
2626+ * @param int|null $escalateCount Number of times the account was escalated
2727+ * @param int|null $takedownCount Number of times the account was taken down
2828+ */
2929+ public function __construct(
3030+ public readonly ?int $reportCount = null,
3131+ public readonly ?int $appealCount = null,
3232+ public readonly ?int $suspendCount = null,
3333+ public readonly ?int $escalateCount = null,
3434+ public readonly ?int $takedownCount = null
3535+ ) {}
3636+3737+ /**
3838+ * Get the lexicon NSID for this data type.
3939+ *
4040+ * @return string
4141+ */
4242+ public static function getLexicon(): string
4343+ {
4444+ return 'tools.ozone.moderation.defs.accountStats';
4545+ }
4646+4747+4848+ /**
4949+ * Create an instance from an array.
5050+ *
5151+ * @param array $data The data array
5252+ * @return static
5353+ */
5454+ public static function fromArray(array $data): static
5555+ {
5656+ return new static(
5757+ reportCount: $data['reportCount'] ?? null,
5858+ appealCount: $data['appealCount'] ?? null,
5959+ suspendCount: $data['suspendCount'] ?? null,
6060+ escalateCount: $data['escalateCount'] ?? null,
6161+ takedownCount: $data['takedownCount'] ?? null
6262+ );
6363+ }
6464+6565+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Age assurance info coming directly from users. Only works on DID subjects.
1010+ *
1111+ * Lexicon: tools.ozone.moderation.defs.ageAssuranceEvent
1212+ * Type: object
1313+ *
1414+ * @property Carbon $createdAt The date and time of this write operation.
1515+ * @property string $status The status of the age assurance process.
1616+ * @property string $attemptId The unique identifier for this instance of the age assurance flow, in UUID format.
1717+ * @property string|null $initIp The IP address used when initiating the AA flow.
1818+ * @property string|null $initUa The user agent used when initiating the AA flow.
1919+ * @property string|null $completeIp The IP address used when completing the AA flow.
2020+ * @property string|null $completeUa The user agent used when completing the AA flow.
2121+ *
2222+ * Constraints:
2323+ * - Required: createdAt, status, attemptId
2424+ * - createdAt: Format: datetime
2525+ */
2626+class AgeAssuranceEvent extends Data
2727+{
2828+2929+ /**
3030+ * @param Carbon $createdAt The date and time of this write operation.
3131+ * @param string $status The status of the age assurance process.
3232+ * @param string $attemptId The unique identifier for this instance of the age assurance flow, in UUID format.
3333+ * @param string|null $initIp The IP address used when initiating the AA flow.
3434+ * @param string|null $initUa The user agent used when initiating the AA flow.
3535+ * @param string|null $completeIp The IP address used when completing the AA flow.
3636+ * @param string|null $completeUa The user agent used when completing the AA flow.
3737+ */
3838+ public function __construct(
3939+ public readonly Carbon $createdAt,
4040+ public readonly string $status,
4141+ public readonly string $attemptId,
4242+ public readonly ?string $initIp = null,
4343+ public readonly ?string $initUa = null,
4444+ public readonly ?string $completeIp = null,
4545+ public readonly ?string $completeUa = null
4646+ ) {}
4747+4848+ /**
4949+ * Get the lexicon NSID for this data type.
5050+ *
5151+ * @return string
5252+ */
5353+ public static function getLexicon(): string
5454+ {
5555+ return 'tools.ozone.moderation.defs.ageAssuranceEvent';
5656+ }
5757+5858+5959+ /**
6060+ * Create an instance from an array.
6161+ *
6262+ * @param array $data The data array
6363+ * @return static
6464+ */
6565+ public static function fromArray(array $data): static
6666+ {
6767+ return new static(
6868+ createdAt: Carbon::parse($data['createdAt']),
6969+ status: $data['status'],
7070+ attemptId: $data['attemptId'],
7171+ initIp: $data['initIp'] ?? null,
7272+ initUa: $data['initUa'] ?? null,
7373+ completeIp: $data['completeIp'] ?? null,
7474+ completeUa: $data['completeUa'] ?? null
7575+ );
7676+ }
7777+7878+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Age assurance status override by moderators. Only works on DID subjects.
99+ *
1010+ * Lexicon: tools.ozone.moderation.defs.ageAssuranceOverrideEvent
1111+ * Type: object
1212+ *
1313+ * @property string $status The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.
1414+ * @property string $comment Comment describing the reason for the override.
1515+ *
1616+ * Constraints:
1717+ * - Required: comment, status
1818+ */
1919+class AgeAssuranceOverrideEvent extends Data
2020+{
2121+2222+ /**
2323+ * @param string $status The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.
2424+ * @param string $comment Comment describing the reason for the override.
2525+ */
2626+ public function __construct(
2727+ public readonly string $status,
2828+ public readonly string $comment
2929+ ) {}
3030+3131+ /**
3232+ * Get the lexicon NSID for this data type.
3333+ *
3434+ * @return string
3535+ */
3636+ public static function getLexicon(): string
3737+ {
3838+ return 'tools.ozone.moderation.defs.ageAssuranceOverrideEvent';
3939+ }
4040+4141+4242+ /**
4343+ * Create an instance from an array.
4444+ *
4545+ * @param array $data The data array
4646+ * @return static
4747+ */
4848+ public static function fromArray(array $data): static
4949+ {
5050+ return new static(
5151+ status: $data['status'],
5252+ comment: $data['comment']
5353+ );
5454+ }
5555+5656+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: tools.ozone.moderation.defs.modEventAcknowledge
99+ * Type: object
1010+ *
1111+ * @property string|null $comment
1212+ * @property bool|null $acknowledgeAccountSubjects If true, all other reports on content authored by this account will be resolved (acknowledged).
1313+ */
1414+class ModEventAcknowledge extends Data
1515+{
1616+1717+ /**
1818+ * @param bool|null $acknowledgeAccountSubjects If true, all other reports on content authored by this account will be resolved (acknowledged).
1919+ */
2020+ public function __construct(
2121+ public readonly ?string $comment = null,
2222+ public readonly ?bool $acknowledgeAccountSubjects = null
2323+ ) {}
2424+2525+ /**
2626+ * Get the lexicon NSID for this data type.
2727+ *
2828+ * @return string
2929+ */
3030+ public static function getLexicon(): string
3131+ {
3232+ return 'tools.ozone.moderation.defs.modEventAcknowledge';
3333+ }
3434+3535+3636+ /**
3737+ * Create an instance from an array.
3838+ *
3939+ * @param array $data The data array
4040+ * @return static
4141+ */
4242+ public static function fromArray(array $data): static
4343+ {
4444+ return new static(
4545+ comment: $data['comment'] ?? null,
4646+ acknowledgeAccountSubjects: $data['acknowledgeAccountSubjects'] ?? null
4747+ );
4848+ }
4949+5050+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Keep a log of outgoing email to a user
1010+ *
1111+ * Lexicon: tools.ozone.moderation.defs.modEventEmail
1212+ * Type: object
1313+ *
1414+ * @property string $subjectLine The subject line of the email sent to the user.
1515+ * @property string|null $content The content of the email sent to the user.
1616+ * @property string|null $comment Additional comment about the outgoing comm.
1717+ * @property array<string>|null $policies Names/Keywords of the policies that necessitated the email.
1818+ * @property string|null $severityLevel Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense
1919+ * @property int|null $strikeCount Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense.
2020+ * @property Carbon|null $strikeExpiresAt When the strike should expire. If not provided, the strike never expires.
2121+ * @property bool|null $isDelivered Indicates whether the email was successfully delivered to the user's inbox.
2222+ *
2323+ * Constraints:
2424+ * - Required: subjectLine
2525+ * - policies: Max length: 5
2626+ * - strikeExpiresAt: Format: datetime
2727+ */
2828+class ModEventEmail extends Data
2929+{
3030+3131+ /**
3232+ * @param string $subjectLine The subject line of the email sent to the user.
3333+ * @param string|null $content The content of the email sent to the user.
3434+ * @param string|null $comment Additional comment about the outgoing comm.
3535+ * @param array<string>|null $policies Names/Keywords of the policies that necessitated the email.
3636+ * @param string|null $severityLevel Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense
3737+ * @param int|null $strikeCount Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense.
3838+ * @param Carbon|null $strikeExpiresAt When the strike should expire. If not provided, the strike never expires.
3939+ * @param bool|null $isDelivered Indicates whether the email was successfully delivered to the user's inbox.
4040+ */
4141+ public function __construct(
4242+ public readonly string $subjectLine,
4343+ public readonly ?string $content = null,
4444+ public readonly ?string $comment = null,
4545+ public readonly ?array $policies = null,
4646+ public readonly ?string $severityLevel = null,
4747+ public readonly ?int $strikeCount = null,
4848+ public readonly ?Carbon $strikeExpiresAt = null,
4949+ public readonly ?bool $isDelivered = null
5050+ ) {}
5151+5252+ /**
5353+ * Get the lexicon NSID for this data type.
5454+ *
5555+ * @return string
5656+ */
5757+ public static function getLexicon(): string
5858+ {
5959+ return 'tools.ozone.moderation.defs.modEventEmail';
6060+ }
6161+6262+6363+ /**
6464+ * Create an instance from an array.
6565+ *
6666+ * @param array $data The data array
6767+ * @return static
6868+ */
6969+ public static function fromArray(array $data): static
7070+ {
7171+ return new static(
7272+ subjectLine: $data['subjectLine'],
7373+ content: $data['content'] ?? null,
7474+ comment: $data['comment'] ?? null,
7575+ policies: $data['policies'] ?? null,
7676+ severityLevel: $data['severityLevel'] ?? null,
7777+ strikeCount: $data['strikeCount'] ?? null,
7878+ strikeExpiresAt: isset($data['strikeExpiresAt']) ? Carbon::parse($data['strikeExpiresAt']) : null,
7979+ isDelivered: $data['isDelivered'] ?? null
8080+ );
8181+ }
8282+8383+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Mute incoming reports from an account
99+ *
1010+ * Lexicon: tools.ozone.moderation.defs.modEventMuteReporter
1111+ * Type: object
1212+ *
1313+ * @property string|null $comment
1414+ * @property int|null $durationInHours Indicates how long the account should remain muted. Falsy value here means a permanent mute.
1515+ */
1616+class ModEventMuteReporter extends Data
1717+{
1818+1919+ /**
2020+ * @param int|null $durationInHours Indicates how long the account should remain muted. Falsy value here means a permanent mute.
2121+ */
2222+ public function __construct(
2323+ public readonly ?string $comment = null,
2424+ public readonly ?int $durationInHours = null
2525+ ) {}
2626+2727+ /**
2828+ * Get the lexicon NSID for this data type.
2929+ *
3030+ * @return string
3131+ */
3232+ public static function getLexicon(): string
3333+ {
3434+ return 'tools.ozone.moderation.defs.modEventMuteReporter';
3535+ }
3636+3737+3838+ /**
3939+ * Create an instance from an array.
4040+ *
4141+ * @param array $data The data array
4242+ * @return static
4343+ */
4444+ public static function fromArray(array $data): static
4545+ {
4646+ return new static(
4747+ comment: $data['comment'] ?? null,
4848+ durationInHours: $data['durationInHours'] ?? null
4949+ );
5050+ }
5151+5252+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+use SocialDept\Schema\Generated\Com\Atproto\Moderation\ReasonType;
77+88+/**
99+ * Report a subject
1010+ *
1111+ * Lexicon: tools.ozone.moderation.defs.modEventReport
1212+ * Type: object
1313+ *
1414+ * @property string|null $comment
1515+ * @property bool|null $isReporterMuted Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject.
1616+ * @property ReasonType $reportType
1717+ *
1818+ * Constraints:
1919+ * - Required: reportType
2020+ */
2121+class ModEventReport extends Data
2222+{
2323+2424+ /**
2525+ * @param bool|null $isReporterMuted Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject.
2626+ */
2727+ public function __construct(
2828+ public readonly ReasonType $reportType,
2929+ public readonly ?string $comment = null,
3030+ public readonly ?bool $isReporterMuted = null
3131+ ) {}
3232+3333+ /**
3434+ * Get the lexicon NSID for this data type.
3535+ *
3636+ * @return string
3737+ */
3838+ public static function getLexicon(): string
3939+ {
4040+ return 'tools.ozone.moderation.defs.modEventReport';
4141+ }
4242+4343+4444+ /**
4545+ * Create an instance from an array.
4646+ *
4747+ * @param array $data The data array
4848+ * @return static
4949+ */
5050+ public static function fromArray(array $data): static
5151+ {
5252+ return new static(
5353+ reportType: Defs::fromArray($data['reportType']),
5454+ comment: $data['comment'] ?? null,
5555+ isReporterMuted: $data['isReporterMuted'] ?? null
5656+ );
5757+ }
5858+5959+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Revert take down action on a subject
99+ *
1010+ * Lexicon: tools.ozone.moderation.defs.modEventReverseTakedown
1111+ * Type: object
1212+ *
1313+ * @property string|null $comment Describe reasoning behind the reversal.
1414+ * @property array<string>|null $policies Names/Keywords of the policy infraction for which takedown is being reversed.
1515+ * @property string|null $severityLevel Severity level of the violation. Usually set from the last policy infraction's severity.
1616+ * @property int|null $strikeCount Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.
1717+ *
1818+ * Constraints:
1919+ * - policies: Max length: 5
2020+ */
2121+class ModEventReverseTakedown extends Data
2222+{
2323+2424+ /**
2525+ * @param string|null $comment Describe reasoning behind the reversal.
2626+ * @param array<string>|null $policies Names/Keywords of the policy infraction for which takedown is being reversed.
2727+ * @param string|null $severityLevel Severity level of the violation. Usually set from the last policy infraction's severity.
2828+ * @param int|null $strikeCount Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.
2929+ */
3030+ public function __construct(
3131+ public readonly ?string $comment = null,
3232+ public readonly ?array $policies = null,
3333+ public readonly ?string $severityLevel = null,
3434+ public readonly ?int $strikeCount = null
3535+ ) {}
3636+3737+ /**
3838+ * Get the lexicon NSID for this data type.
3939+ *
4040+ * @return string
4141+ */
4242+ public static function getLexicon(): string
4343+ {
4444+ return 'tools.ozone.moderation.defs.modEventReverseTakedown';
4545+ }
4646+4747+4848+ /**
4949+ * Create an instance from an array.
5050+ *
5151+ * @param array $data The data array
5252+ * @return static
5353+ */
5454+ public static function fromArray(array $data): static
5555+ {
5656+ return new static(
5757+ comment: $data['comment'] ?? null,
5858+ policies: $data['policies'] ?? null,
5959+ severityLevel: $data['severityLevel'] ?? null,
6060+ strikeCount: $data['strikeCount'] ?? null
6161+ );
6262+ }
6363+6464+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Add/Remove a tag on a subject
99+ *
1010+ * Lexicon: tools.ozone.moderation.defs.modEventTag
1111+ * Type: object
1212+ *
1313+ * @property array<string> $add Tags to be added to the subject. If already exists, won't be duplicated.
1414+ * @property array<string> $remove Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.
1515+ * @property string|null $comment Additional comment about added/removed tags.
1616+ *
1717+ * Constraints:
1818+ * - Required: add, remove
1919+ */
2020+class ModEventTag extends Data
2121+{
2222+2323+ /**
2424+ * @param array<string> $add Tags to be added to the subject. If already exists, won't be duplicated.
2525+ * @param array<string> $remove Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.
2626+ * @param string|null $comment Additional comment about added/removed tags.
2727+ */
2828+ public function __construct(
2929+ public readonly array $add,
3030+ public readonly array $remove,
3131+ public readonly ?string $comment = null
3232+ ) {}
3333+3434+ /**
3535+ * Get the lexicon NSID for this data type.
3636+ *
3737+ * @return string
3838+ */
3939+ public static function getLexicon(): string
4040+ {
4141+ return 'tools.ozone.moderation.defs.modEventTag';
4242+ }
4343+4444+4545+ /**
4646+ * Create an instance from an array.
4747+ *
4848+ * @param array $data The data array
4949+ * @return static
5050+ */
5151+ public static function fromArray(array $data): static
5252+ {
5353+ return new static(
5454+ add: $data['add'],
5555+ remove: $data['remove'],
5656+ comment: $data['comment'] ?? null
5757+ );
5858+ }
5959+6060+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * Take down a subject permanently or temporarily
1010+ *
1111+ * Lexicon: tools.ozone.moderation.defs.modEventTakedown
1212+ * Type: object
1313+ *
1414+ * @property string|null $comment
1515+ * @property int|null $durationInHours Indicates how long the takedown should be in effect before automatically expiring.
1616+ * @property bool|null $acknowledgeAccountSubjects If true, all other reports on content authored by this account will be resolved (acknowledged).
1717+ * @property array<string>|null $policies Names/Keywords of the policies that drove the decision.
1818+ * @property string|null $severityLevel Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).
1919+ * @property array<string>|null $targetServices List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.
2020+ * @property int|null $strikeCount Number of strikes to assign to the user for this violation.
2121+ * @property Carbon|null $strikeExpiresAt When the strike should expire. If not provided, the strike never expires.
2222+ *
2323+ * Constraints:
2424+ * - policies: Max length: 5
2525+ * - strikeExpiresAt: Format: datetime
2626+ */
2727+class ModEventTakedown extends Data
2828+{
2929+3030+ /**
3131+ * @param int|null $durationInHours Indicates how long the takedown should be in effect before automatically expiring.
3232+ * @param bool|null $acknowledgeAccountSubjects If true, all other reports on content authored by this account will be resolved (acknowledged).
3333+ * @param array<string>|null $policies Names/Keywords of the policies that drove the decision.
3434+ * @param string|null $severityLevel Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).
3535+ * @param array<string>|null $targetServices List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.
3636+ * @param int|null $strikeCount Number of strikes to assign to the user for this violation.
3737+ * @param Carbon|null $strikeExpiresAt When the strike should expire. If not provided, the strike never expires.
3838+ */
3939+ public function __construct(
4040+ public readonly ?string $comment = null,
4141+ public readonly ?int $durationInHours = null,
4242+ public readonly ?bool $acknowledgeAccountSubjects = null,
4343+ public readonly ?array $policies = null,
4444+ public readonly ?string $severityLevel = null,
4545+ public readonly ?array $targetServices = null,
4646+ public readonly ?int $strikeCount = null,
4747+ public readonly ?Carbon $strikeExpiresAt = null
4848+ ) {}
4949+5050+ /**
5151+ * Get the lexicon NSID for this data type.
5252+ *
5353+ * @return string
5454+ */
5555+ public static function getLexicon(): string
5656+ {
5757+ return 'tools.ozone.moderation.defs.modEventTakedown';
5858+ }
5959+6060+6161+ /**
6262+ * Create an instance from an array.
6363+ *
6464+ * @param array $data The data array
6565+ * @return static
6666+ */
6767+ public static function fromArray(array $data): static
6868+ {
6969+ return new static(
7070+ comment: $data['comment'] ?? null,
7171+ durationInHours: $data['durationInHours'] ?? null,
7272+ acknowledgeAccountSubjects: $data['acknowledgeAccountSubjects'] ?? null,
7373+ policies: $data['policies'] ?? null,
7474+ severityLevel: $data['severityLevel'] ?? null,
7575+ targetServices: $data['targetServices'] ?? null,
7676+ strikeCount: $data['strikeCount'] ?? null,
7777+ strikeExpiresAt: isset($data['strikeExpiresAt']) ? Carbon::parse($data['strikeExpiresAt']) : null
7878+ );
7979+ }
8080+8181+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Statistics about a set of record subject items
99+ *
1010+ * Lexicon: tools.ozone.moderation.defs.recordsStats
1111+ * Type: object
1212+ *
1313+ * @property int|null $totalReports Cumulative sum of the number of reports on the items in the set
1414+ * @property int|null $reportedCount Number of items that were reported at least once
1515+ * @property int|null $escalatedCount Number of items that were escalated at least once
1616+ * @property int|null $appealedCount Number of items that were appealed at least once
1717+ * @property int|null $subjectCount Total number of item in the set
1818+ * @property int|null $pendingCount Number of item currently in "reviewOpen" or "reviewEscalated" state
1919+ * @property int|null $processedCount Number of item currently in "reviewNone" or "reviewClosed" state
2020+ * @property int|null $takendownCount Number of item currently taken down
2121+ */
2222+class RecordsStats extends Data
2323+{
2424+2525+ /**
2626+ * @param int|null $totalReports Cumulative sum of the number of reports on the items in the set
2727+ * @param int|null $reportedCount Number of items that were reported at least once
2828+ * @param int|null $escalatedCount Number of items that were escalated at least once
2929+ * @param int|null $appealedCount Number of items that were appealed at least once
3030+ * @param int|null $subjectCount Total number of item in the set
3131+ * @param int|null $pendingCount Number of item currently in "reviewOpen" or "reviewEscalated" state
3232+ * @param int|null $processedCount Number of item currently in "reviewNone" or "reviewClosed" state
3333+ * @param int|null $takendownCount Number of item currently taken down
3434+ */
3535+ public function __construct(
3636+ public readonly ?int $totalReports = null,
3737+ public readonly ?int $reportedCount = null,
3838+ public readonly ?int $escalatedCount = null,
3939+ public readonly ?int $appealedCount = null,
4040+ public readonly ?int $subjectCount = null,
4141+ public readonly ?int $pendingCount = null,
4242+ public readonly ?int $processedCount = null,
4343+ public readonly ?int $takendownCount = null
4444+ ) {}
4545+4646+ /**
4747+ * Get the lexicon NSID for this data type.
4848+ *
4949+ * @return string
5050+ */
5151+ public static function getLexicon(): string
5252+ {
5353+ return 'tools.ozone.moderation.defs.recordsStats';
5454+ }
5555+5656+5757+ /**
5858+ * Create an instance from an array.
5959+ *
6060+ * @param array $data The data array
6161+ * @return static
6262+ */
6363+ public static function fromArray(array $data): static
6464+ {
6565+ return new static(
6666+ totalReports: $data['totalReports'] ?? null,
6767+ reportedCount: $data['reportedCount'] ?? null,
6868+ escalatedCount: $data['escalatedCount'] ?? null,
6969+ appealedCount: $data['appealedCount'] ?? null,
7070+ subjectCount: $data['subjectCount'] ?? null,
7171+ pendingCount: $data['pendingCount'] ?? null,
7272+ processedCount: $data['processedCount'] ?? null,
7373+ takendownCount: $data['takendownCount'] ?? null
7474+ );
7575+ }
7676+7777+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use SocialDept\Schema\Data\Data;
66+77+/**
88+ * Lexicon: tools.ozone.moderation.defs.reporterStats
99+ * Type: object
1010+ *
1111+ * @property string $did
1212+ * @property int $accountReportCount The total number of reports made by the user on accounts.
1313+ * @property int $recordReportCount The total number of reports made by the user on records.
1414+ * @property int $reportedAccountCount The total number of accounts reported by the user.
1515+ * @property int $reportedRecordCount The total number of records reported by the user.
1616+ * @property int $takendownAccountCount The total number of accounts taken down as a result of the user's reports.
1717+ * @property int $takendownRecordCount The total number of records taken down as a result of the user's reports.
1818+ * @property int $labeledAccountCount The total number of accounts labeled as a result of the user's reports.
1919+ * @property int $labeledRecordCount The total number of records labeled as a result of the user's reports.
2020+ *
2121+ * Constraints:
2222+ * - Required: did, accountReportCount, recordReportCount, reportedAccountCount, reportedRecordCount, takendownAccountCount, takendownRecordCount, labeledAccountCount, labeledRecordCount
2323+ * - did: Format: did
2424+ */
2525+class ReporterStats extends Data
2626+{
2727+2828+ /**
2929+ * @param int $accountReportCount The total number of reports made by the user on accounts.
3030+ * @param int $recordReportCount The total number of reports made by the user on records.
3131+ * @param int $reportedAccountCount The total number of accounts reported by the user.
3232+ * @param int $reportedRecordCount The total number of records reported by the user.
3333+ * @param int $takendownAccountCount The total number of accounts taken down as a result of the user's reports.
3434+ * @param int $takendownRecordCount The total number of records taken down as a result of the user's reports.
3535+ * @param int $labeledAccountCount The total number of accounts labeled as a result of the user's reports.
3636+ * @param int $labeledRecordCount The total number of records labeled as a result of the user's reports.
3737+ */
3838+ public function __construct(
3939+ public readonly string $did,
4040+ public readonly int $accountReportCount,
4141+ public readonly int $recordReportCount,
4242+ public readonly int $reportedAccountCount,
4343+ public readonly int $reportedRecordCount,
4444+ public readonly int $takendownAccountCount,
4545+ public readonly int $takendownRecordCount,
4646+ public readonly int $labeledAccountCount,
4747+ public readonly int $labeledRecordCount
4848+ ) {}
4949+5050+ /**
5151+ * Get the lexicon NSID for this data type.
5252+ *
5353+ * @return string
5454+ */
5555+ public static function getLexicon(): string
5656+ {
5757+ return 'tools.ozone.moderation.defs.reporterStats';
5858+ }
5959+6060+6161+ /**
6262+ * Create an instance from an array.
6363+ *
6464+ * @param array $data The data array
6565+ * @return static
6666+ */
6767+ public static function fromArray(array $data): static
6868+ {
6969+ return new static(
7070+ did: $data['did'],
7171+ accountReportCount: $data['accountReportCount'],
7272+ recordReportCount: $data['recordReportCount'],
7373+ reportedAccountCount: $data['reportedAccountCount'],
7474+ reportedRecordCount: $data['reportedRecordCount'],
7575+ takendownAccountCount: $data['takendownAccountCount'],
7676+ takendownRecordCount: $data['takendownRecordCount'],
7777+ labeledAccountCount: $data['labeledAccountCount'],
7878+ labeledRecordCount: $data['labeledRecordCount']
7979+ );
8080+ }
8181+8282+}
···11+<?php
22+33+namespace SocialDept\Schema\Generated\Tools\Ozone\Moderation\Defs;
44+55+use Carbon\Carbon;
66+use SocialDept\Schema\Data\Data;
77+88+/**
99+ * View of a scheduled moderation action
1010+ *
1111+ * Lexicon: tools.ozone.moderation.defs.scheduledActionView
1212+ * Type: object
1313+ *
1414+ * @property int $id Auto-incrementing row ID
1515+ * @property string $action Type of action to be executed
1616+ * @property mixed $eventData Serialized event object that will be propagated to the event when performed
1717+ * @property string $did Subject DID for the action
1818+ * @property Carbon|null $executeAt Exact time to execute the action
1919+ * @property Carbon|null $executeAfter Earliest time to execute the action (for randomized scheduling)
2020+ * @property Carbon|null $executeUntil Latest time to execute the action (for randomized scheduling)
2121+ * @property bool|null $randomizeExecution Whether execution time should be randomized within the specified range
2222+ * @property string $createdBy DID of the user who created this scheduled action
2323+ * @property Carbon $createdAt When the scheduled action was created
2424+ * @property Carbon|null $updatedAt When the scheduled action was last updated
2525+ * @property string $status Current status of the scheduled action
2626+ * @property Carbon|null $lastExecutedAt When the action was last attempted to be executed
2727+ * @property string|null $lastFailureReason Reason for the last execution failure
2828+ * @property int|null $executionEventId ID of the moderation event created when action was successfully executed
2929+ *
3030+ * Constraints:
3131+ * - Required: id, action, did, createdBy, createdAt, status
3232+ * - did: Format: did
3333+ * - executeAt: Format: datetime
3434+ * - executeAfter: Format: datetime
3535+ * - executeUntil: Format: datetime
3636+ * - createdBy: Format: did
3737+ * - createdAt: Format: datetime
3838+ * - updatedAt: Format: datetime
3939+ * - lastExecutedAt: Format: datetime
4040+ */
4141+class ScheduledActionView extends Data
4242+{
4343+4444+ /**
4545+ * @param int $id Auto-incrementing row ID
4646+ * @param string $action Type of action to be executed
4747+ * @param string $did Subject DID for the action
4848+ * @param string $createdBy DID of the user who created this scheduled action
4949+ * @param Carbon $createdAt When the scheduled action was created
5050+ * @param string $status Current status of the scheduled action
5151+ * @param mixed $eventData Serialized event object that will be propagated to the event when performed
5252+ * @param Carbon|null $executeAt Exact time to execute the action
5353+ * @param Carbon|null $executeAfter Earliest time to execute the action (for randomized scheduling)
5454+ * @param Carbon|null $executeUntil Latest time to execute the action (for randomized scheduling)
5555+ * @param bool|null $randomizeExecution Whether execution time should be randomized within the specified range
5656+ * @param Carbon|null $updatedAt When the scheduled action was last updated
5757+ * @param Carbon|null $lastExecutedAt When the action was last attempted to be executed
5858+ * @param string|null $lastFailureReason Reason for the last execution failure
5959+ * @param int|null $executionEventId ID of the moderation event created when action was successfully executed
6060+ */
6161+ public function __construct(
6262+ public readonly int $id,
6363+ public readonly string $action,
6464+ public readonly string $did,
6565+ public readonly string $createdBy,
6666+ public readonly Carbon $createdAt,
6767+ public readonly string $status,
6868+ public readonly mixed $eventData = null,
6969+ public readonly ?Carbon $executeAt = null,
7070+ public readonly ?Carbon $executeAfter = null,
7171+ public readonly ?Carbon $executeUntil = null,
7272+ public readonly ?bool $randomizeExecution = null,
7373+ public readonly ?Carbon $updatedAt = null,
7474+ public readonly ?Carbon $lastExecutedAt = null,
7575+ public readonly ?string $lastFailureReason = null,
7676+ public readonly ?int $executionEventId = null
7777+ ) {}
7878+7979+ /**
8080+ * Get the lexicon NSID for this data type.
8181+ *
8282+ * @return string
8383+ */
8484+ public static function getLexicon(): string
8585+ {
8686+ return 'tools.ozone.moderation.defs.scheduledActionView';
8787+ }
8888+8989+9090+ /**
9191+ * Create an instance from an array.
9292+ *
9393+ * @param array $data The data array
9494+ * @return static
9595+ */
9696+ public static function fromArray(array $data): static
9797+ {
9898+ return new static(
9999+ id: $data['id'],
100100+ action: $data['action'],
101101+ did: $data['did'],
102102+ createdBy: $data['createdBy'],
103103+ createdAt: Carbon::parse($data['createdAt']),
104104+ status: $data['status'],
105105+ eventData: $data['eventData'] ?? null,
106106+ executeAt: isset($data['executeAt']) ? Carbon::parse($data['executeAt']) : null,
107107+ executeAfter: isset($data['executeAfter']) ? Carbon::parse($data['executeAfter']) : null,
108108+ executeUntil: isset($data['executeUntil']) ? Carbon::parse($data['executeUntil']) : null,
109109+ randomizeExecution: $data['randomizeExecution'] ?? null,
110110+ updatedAt: isset($data['updatedAt']) ? Carbon::parse($data['updatedAt']) : null,
111111+ lastExecutedAt: isset($data['lastExecutedAt']) ? Carbon::parse($data['lastExecutedAt']) : null,
112112+ lastFailureReason: $data['lastFailureReason'] ?? null,
113113+ executionEventId: $data['executionEventId'] ?? null
114114+ );
115115+ }
116116+117117+}