middleware(['throttle:api', CorrelationId::class])->group(function () { Route::get('/catalogs/{catalog}', [ReferenceCatalogController::class, 'index']) ->whereIn('catalog', ['authorities', 'jurisdictions', 'economic-activities', 'countries']); Route::get('/home', [HomeController::class, 'show']); Route::get('/sectors', [SectorController::class, 'index']); Route::get('/sectors/{slug}', [SectorController::class, 'show']); Route::get('/opportunities/search', [OpportunityController::class, 'search']); Route::get('/opportunities/{slug}', [OpportunityController::class, 'show']); Route::get('/business-opportunities', [PublicBusinessOpportunityController::class, 'index']); Route::get('/business-opportunities/{slug}', [PublicBusinessOpportunityController::class, 'show']); Route::post('/interest-requests', [InterestRequestController::class, 'store']) ->middleware(['web', 'auth', 'throttle:10,1']); Route::get('/legislation/sources', [LegislationSourceController::class, 'index']); Route::get('/documents/recommendations', [PortalServicesController::class, 'recommendations']); }); Route::prefix('v1')->middleware(['web', 'throttle:api', CorrelationId::class])->group(function () { Route::get('/fiscal-consumer', fn (SimulationPublishedFiscal $consumer) => response()->json(['data' => $consumer->availability()])->header('Cache-Control', 'no-store')); Route::post('/tax-parameters/resolve', [SimulationTaxParameterController::class, 'resolve'])->middleware('throttle:20,1'); Route::get('/questionnaires/{code}', [SimulationController::class, 'questionnaire']); Route::middleware(EnsureSimulationRecoveryCookie::class)->group(function () { Route::get('/simulation-drafts/current', [SimulationFormDraftController::class, 'current']); Route::delete('/simulation-drafts/current', [SimulationFormDraftController::class, 'forgetCurrent'])->middleware('throttle:simulation-draft-writes'); Route::post('/simulation-drafts', [SimulationFormDraftController::class, 'store'])->middleware('throttle:simulation-draft-writes'); Route::get('/simulation-drafts', [SimulationFormDraftController::class, 'index'])->middleware('auth'); Route::get('/simulation-drafts/claim-preview', [SimulationFormDraftController::class, 'claimPreview'])->middleware('auth'); Route::post('/simulation-drafts/claim', [SimulationFormDraftController::class, 'claim'])->middleware(['auth', 'verified', 'throttle:simulation-draft-writes']); Route::get('/simulation-drafts/linkable-businesses', [SimulationFormDraftController::class, 'linkableBusinesses'])->middleware(['auth', 'verified']); Route::get('/simulation-drafts/{id}/business-link', [SimulationFormDraftController::class, 'businessLink'])->middleware(['auth', 'verified']); Route::post('/simulation-drafts/{id}/business-link', [SimulationFormDraftController::class, 'linkBusiness'])->middleware(['auth', 'verified', 'throttle:simulation-draft-writes']); Route::delete('/simulation-drafts/{id}/business-link', [SimulationFormDraftController::class, 'unlinkBusiness'])->middleware(['auth', 'verified', 'throttle:simulation-draft-writes']); Route::get('/simulation-drafts/{id}', [SimulationFormDraftController::class, 'show']); Route::get('/simulation-drafts/{id}/offer-documents', [SimulationOfferDocumentController::class, 'index'])->middleware('auth'); Route::post('/simulation-drafts/{id}/offer-documents', [SimulationOfferDocumentController::class, 'store'])->middleware(['auth', 'throttle:simulation-draft-writes']); Route::get('/simulation-drafts/{id}/offer-documents/{document}', [SimulationOfferDocumentController::class, 'download'])->middleware('auth'); Route::put('/simulation-drafts/{id}', [SimulationFormDraftController::class, 'update'])->middleware('throttle:simulation-draft-writes'); Route::post('/simulation-drafts/{id}/touch', [SimulationFormDraftController::class, 'renew'])->middleware('throttle:simulation-draft-writes'); Route::post('/simulation-drafts/{id}/conversions', [SimulationFormDraftController::class, 'attachSimulation'])->middleware('throttle:simulation-draft-writes'); Route::delete('/simulation-drafts/{id}', [SimulationFormDraftController::class, 'destroy'])->middleware('throttle:simulation-draft-writes'); Route::post('/simulations', [SimulationController::class, 'store'])->middleware('throttle:simulation-calculations'); Route::get('/simulations/history', [SimulationController::class, 'history']); Route::get('/simulations/{id}', [SimulationController::class, 'show']); Route::patch('/simulations/{id}/scenarios/{scenarioId}', [SimulationController::class, 'updateScenario'])->middleware('throttle:simulation-scenario-updates'); Route::get('/simulations/{id}/reports/{reportId}', [SimulationController::class, 'report']); Route::get('/simulations/{id}/jobs', [SimulationController::class, 'jobs']); }); });