Parse and validate AT Protocol Lexicons with DTO generation for Laravel
1<?php
2
3namespace SocialDept\AtpSchema\Generated\Com\Atproto\Admin\Defs;
4
5use Carbon\Carbon;
6use SocialDept\AtpSchema\Data\Data;
7use SocialDept\AtpSchema\Generated\Com\Atproto\Server\Defs\InviteCode;
8
9/**
10 * GENERATED CODE - DO NOT EDIT
11 *
12 * Lexicon: com.atproto.admin.defs.accountView
13 * Type: object
14 *
15 * @property string $did
16 * @property string $handle
17 * @property string|null $email
18 * @property array|null $relatedRecords
19 * @property Carbon $indexedAt
20 * @property InviteCode|null $invitedBy
21 * @property array<InviteCode>|null $invites
22 * @property bool|null $invitesDisabled
23 * @property Carbon|null $emailConfirmedAt
24 * @property string|null $inviteNote
25 * @property Carbon|null $deactivatedAt
26 * @property array|null $threatSignatures
27 *
28 * Constraints:
29 * - Required: did, handle, indexedAt
30 * - did: Format: did
31 * - handle: Format: handle
32 * - indexedAt: Format: datetime
33 * - emailConfirmedAt: Format: datetime
34 * - deactivatedAt: Format: datetime
35 */
36class AccountView extends Data
37{
38 public function __construct(
39 public readonly string $did,
40 public readonly string $handle,
41 public readonly Carbon $indexedAt,
42 public readonly ?string $email = null,
43 public readonly ?array $relatedRecords = null,
44 public readonly ?InviteCode $invitedBy = null,
45 public readonly ?array $invites = null,
46 public readonly ?bool $invitesDisabled = null,
47 public readonly ?Carbon $emailConfirmedAt = null,
48 public readonly ?string $inviteNote = null,
49 public readonly ?Carbon $deactivatedAt = null,
50 public readonly ?array $threatSignatures = null
51 ) {
52 }
53
54 /**
55 * Get the lexicon NSID for this data type.
56 *
57 * @return string
58 */
59 public static function getLexicon(): string
60 {
61 return 'com.atproto.admin.defs.accountView';
62 }
63
64
65 /**
66 * Create an instance from an array.
67 *
68 * @param array $data The data array
69 * @return static
70 */
71 public static function fromArray(array $data): static
72 {
73 return new static(
74 did: $data['did'],
75 handle: $data['handle'],
76 indexedAt: Carbon::parse($data['indexedAt']),
77 email: $data['email'] ?? null,
78 relatedRecords: $data['relatedRecords'] ?? null,
79 invitedBy: isset($data['invitedBy']) ? InviteCode::fromArray($data['invitedBy']) : null,
80 invites: isset($data['invites']) ? array_map(fn ($item) => InviteCode::fromArray($item), $data['invites']) : [],
81 invitesDisabled: $data['invitesDisabled'] ?? null,
82 emailConfirmedAt: isset($data['emailConfirmedAt']) ? Carbon::parse($data['emailConfirmedAt']) : null,
83 inviteNote: $data['inviteNote'] ?? null,
84 deactivatedAt: isset($data['deactivatedAt']) ? Carbon::parse($data['deactivatedAt']) : null,
85 threatSignatures: $data['threatSignatures'] ?? []
86 );
87 }
88
89}