I am trying to rename my data wrapper for the resource I am fetching using Laravel resource. I read in the documentation here how you are supposed to do it, so I did:
ScanResource.php
class ScanResource extends JsonResource
{
public static $wrap = 'scan';
/**
 * Transform the resource into an array.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function toArray($request)
{
    //return parent::toArray($request);
    return ['id' => $this->id,
                    'rftag' => $this->rftag,
                    'jc_number' => $this->jc_number,
                    'station' => $this->station,
                    'agent' => $this->agent,
                    'created_at' => $this->created_at->format('d/m/Y H:i:s'),
                    'updated_at' => $this->updated_at->format('d/m/Y'),];
}
}
AppServiceProvider.php
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
    //Paginator::useBootstrapThree();
    Schema::defaultStringLength(191);
    //JsonResource::withoutWrapping();
    //Resource::withoutWrapping();
    ScanResource::withoutWrapping();
}
public function register()
{
    //
}
}
This is how I am trying to fetch the resource in my controller:
public function show($id)
{
    $product = ScanDetail::find($id);
    if (is_null($product)) {
        return $this->sendError('Scan details not found.');
    }
    return $this->sendResponse(new ScanResource($product), 'Scan info retrieved successfully.');
}
currently I am getting the following JSON with Postman:
{
"success": true,
"data": {
    "id": 1,
    "rftag": "E200203204205212165166",
    "jc_number": "15",
    "station": "Repairing",
    "agent": "kbailey",
    "created_at": "11/06/2020 01:29:53",
    "updated_at": "11/06/2020"
},
"message": "Scan info retrieved successfully."
}
But I want:
{
    "success": true,
    "scan": {
        "id": 1,
        "rftag": "E200203204205212165166",
        "jc_number": "15",
        "station": "Repairing",
        "agent": "kbailey",
        "created_at": "11/06/2020 01:29:53",
        "updated_at": "11/06/2020"
    },
    "message": "Scan info retrieved successfully."
}
I tried this, this, this, this and this. This is not what I am using, so I did not think it would work. I also tried modifying my toArray to:
return [
        'scan'=>['id' => $this->id,
                    'rftag' => $this->rftag,
                    'jc_number' => $this->jc_number,
                    'station' => $this->station,
                    'agent' => $this->agent,
                    'created_at' => $this->created_at->format('d/m/Y H:i:s'),
                    'updated_at' => $this->updated_at->format('d/m/Y'),]
        ];
but its giving the following JSON:
{
"success": true,
"data": {
    "scan": {
        "id": 1,
        "rftag": "E200203204205212165166",
        "jc_number": "15",
        "station": "Repairing",
        "agent": "kbailey",
        "created_at": "11/06/2020 01:29:53",
        "updated_at": "11/06/2020"
    }
},
"message": "Scan info retrieved successfully."
}
Again, not what I want since I will be fetching different resources from the database using api calls. So I want to customize the outer wrapper. Any assistance is/will be greatly appreciated. Thanks in advance.