Laravel AT Protocol Client (alpha & unstable)
at dev 3.5 kB view raw
1<?php 2 3namespace SocialDept\AtpClient\Client\Requests\Ozone; 4 5use SocialDept\AtpClient\Attributes\ScopedEndpoint; 6use SocialDept\AtpClient\Client\Requests\Request; 7use SocialDept\AtpClient\Data\Responses\EmptyResponse; 8use SocialDept\AtpClient\Data\Responses\Ozone\Team\ListMembersResponse; 9use SocialDept\AtpClient\Data\Responses\Ozone\Team\MemberResponse; 10use SocialDept\AtpClient\Enums\Nsid\OzoneTeam; 11use SocialDept\AtpClient\Enums\Scope; 12 13class TeamRequestClient extends Request 14{ 15 /** 16 * Get team member 17 * 18 * @requires transition:generic (rpc:tools.ozone.team.getMember) 19 * 20 * @see https://docs.bsky.app/docs/api/tools-ozone-team-list-members 21 */ 22 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.getMember')] 23 public function getTeamMember(string $did): MemberResponse 24 { 25 $response = $this->atp->client->get( 26 endpoint: OzoneTeam::GetMember, 27 params: compact('did') 28 ); 29 30 return MemberResponse::fromArray($response->json()); 31 } 32 33 /** 34 * List team members 35 * 36 * @requires transition:generic (rpc:tools.ozone.team.listMembers) 37 * 38 * @see https://docs.bsky.app/docs/api/tools-ozone-team-list-members 39 */ 40 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.listMembers')] 41 public function listTeamMembers(int $limit = 50, ?string $cursor = null): ListMembersResponse 42 { 43 $response = $this->atp->client->get( 44 endpoint: OzoneTeam::ListMembers, 45 params: compact('limit', 'cursor') 46 ); 47 48 return ListMembersResponse::fromArray($response->json()); 49 } 50 51 /** 52 * Add team member 53 * 54 * @requires transition:generic (rpc:tools.ozone.team.addMember) 55 * 56 * @see https://docs.bsky.app/docs/api/tools-ozone-team-add-member 57 */ 58 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.addMember')] 59 public function addTeamMember(string $did, string $role): MemberResponse 60 { 61 $response = $this->atp->client->post( 62 endpoint: OzoneTeam::AddMember, 63 body: compact('did', 'role') 64 ); 65 66 return MemberResponse::fromArray($response->json()); 67 } 68 69 /** 70 * Update team member 71 * 72 * @requires transition:generic (rpc:tools.ozone.team.updateMember) 73 * 74 * @see https://docs.bsky.app/docs/api/tools-ozone-team-update-member 75 */ 76 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.updateMember')] 77 public function updateTeamMember( 78 string $did, 79 ?bool $disabled = null, 80 ?string $role = null 81 ): MemberResponse { 82 $response = $this->atp->client->post( 83 endpoint: OzoneTeam::UpdateMember, 84 body: array_filter( 85 compact('did', 'disabled', 'role'), 86 fn ($v) => ! is_null($v) 87 ) 88 ); 89 90 return MemberResponse::fromArray($response->json()); 91 } 92 93 /** 94 * Delete team member 95 * 96 * @requires transition:generic (rpc:tools.ozone.team.deleteMember) 97 * 98 * @see https://docs.bsky.app/docs/api/tools-ozone-team-delete-member 99 */ 100 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.deleteMember')] 101 public function deleteTeamMember(string $did): EmptyResponse 102 { 103 $this->atp->client->post( 104 endpoint: OzoneTeam::DeleteMember, 105 body: compact('did') 106 ); 107 108 return new EmptyResponse; 109 } 110}