*/ public function mailboxLinkStatus(string $publicId): array { $response = $this->request()->get($this->url('/identity/mailbox-link'), [ 'user' => $publicId, ]); $response->throw(); return (array) $response->json('data', []); } /** @return array */ public function linkMailbox(string $publicId, string $mailboxAddress): array { $response = $this->request()->put($this->url('/identity/mailbox-link'), [ 'user' => $publicId, 'mailbox_address' => $mailboxAddress, ]); $response->throw(); return (array) $response->json('data', []); } /** @return array */ public function unlinkMailbox(string $publicId): array { $response = $this->request()->delete($this->url('/identity/mailbox-link'), [ 'user' => $publicId, ]); $response->throw(); return (array) $response->json('data', []); } /** * Hosting accounts (by cPanel username) the user can access as a developer, * from the central monolith (source of truth for hosting developer access). * * @return list> */ public function hostingDeveloperAccess(string $publicId): array { $response = $this->request()->get($this->url('/identity/hosting/developer-access'), [ 'user' => $publicId, ]); $response->throw(); return (array) $response->json('data', []); } private function request() { return Http::withToken((string) config('identity.api_key')) ->acceptJson() ->timeout(15); } private function url(string $path): string { return rtrim((string) config('identity.api_url'), '/').$path; } }