attachmentService->store( $request->file('file') ?? (string) $request->validated('file_base64'), $request->validated('path'), ); $temporaryUrl = $this->s3TestService->generateTemporaryUrl( $attachment->path, (int) $request->validated('expires_in_minutes', 10), ); return response()->json( [ 'id' => $attachment->id, 'key' => $attachment->key, 'path' => $attachment->path, 'filename' => $attachment->filename, 'type' => $attachment->type->value, 'mime_type' => $attachment->mime_type, 'extension' => $attachment->extension, 'size' => $attachment->size, 'temporary_url' => $temporaryUrl['temporary_url'], 'temporary_url_expires_at' => $temporaryUrl['temporary_url_expires_at'], ], 201, ); } public function temporaryUrl(GenerateS3TemporaryUrlRequest $request): JsonResponse { return response()->json( $this->s3TestService->generateTemporaryUrl( $request->validated('path'), (int) $request->validated('expires_in_minutes', 10), ) ); } }