*/ public function schema(JsonSchema $schema): array { return [ 'from' => $schema->string()->description('Start date, YYYY-MM-DD.')->required(), 'to' => $schema->string()->description('End date, YYYY-MM-DD.')->required(), 'parent_category_id' => $schema->string()->description('Drill into a parent category\'s children.'), ]; } protected function respond(Request $request, User $user): Response { $request->validate([ 'from' => ['required', 'date'], 'to' => ['required', 'date'], ]); $spending = app(CategorySpendingService::class)->forPeriod( $user->id, Carbon::parse($request->string('from')->toString()), Carbon::parse($request->string('to')->toString()), $request->string('parent_category_id')->toString() ?: null, ); return $this->json(['categories' => $spending->values()]); } }