diff --git a/src/Http/Controllers/Api/CampaignsController.php b/src/Http/Controllers/Api/CampaignsController.php index b50957fd..3e011e78 100644 --- a/src/Http/Controllers/Api/CampaignsController.php +++ b/src/Http/Controllers/Api/CampaignsController.php @@ -70,6 +70,15 @@ public function show(int $id): CampaignResource return new CampaignResource($campaign); } + /** + * @throws Exception + */ + public function showByName(string $name): CampaignResource + { + $workspaceId = Sendportal::currentWorkspaceId(); + return new CampaignResource($this->campaigns->findBy($workspaceId, 'name', $name)); + } + /** * @throws Exception */ diff --git a/src/Http/Controllers/Api/TagsController.php b/src/Http/Controllers/Api/TagsController.php index eb3d6e50..4a85e874 100644 --- a/src/Http/Controllers/Api/TagsController.php +++ b/src/Http/Controllers/Api/TagsController.php @@ -5,6 +5,7 @@ namespace Sendportal\Base\Http\Controllers\Api; use Exception; +use Illuminate\Contracts\Container\BindingResolutionException; use Illuminate\Http\Resources\Json\AnonymousResourceCollection; use Illuminate\Http\Response; use Sendportal\Base\Facades\Sendportal; @@ -69,6 +70,15 @@ public function show(int $id): TagResource return new TagResource($this->tags->find($workspaceId, $id)); } + /** + * @throws BindingResolutionException + */ + public function showByName(string $name): TagResource + { + $workspaceId = Sendportal::currentWorkspaceId(); + return new TagResource($this->tags->findBy($workspaceId, 'name', $name)); + } + /** * @throws Exception */ diff --git a/src/Routes/ApiRoutes.php b/src/Routes/ApiRoutes.php index adb1c45a..f58a0377 100644 --- a/src/Routes/ApiRoutes.php +++ b/src/Routes/ApiRoutes.php @@ -15,11 +15,13 @@ public function sendportalApiRoutes(): callable $apiRouter->get('campaigns/stats', 'CampaignsController@stats')->name('campaigns.stats'); $apiRouter->post('campaigns/send-test', 'CampaignTestController@send')->name('campaigns.send-test'); $apiRouter->apiResource('campaigns', 'CampaignsController'); + $apiRouter->get('campaigns/{campaign}', 'CampaignsController@showByName')->name('campaigns.show-by-name'); $apiRouter->post('campaigns/{id}/send', 'CampaignDispatchController@send')->name('campaigns.send'); $apiRouter->apiResource('subscribers', 'SubscribersController'); $apiRouter->post('subscribers/sync', 'SubscribersController@sync')->name('subscribers.sync'); $apiRouter->apiResource('tags', 'TagsController'); + $apiRouter->get('tags/{tag}', 'TagsController@showByName')->name('tags.show-by-name'); $apiRouter->apiResource('subscribers.tags', 'SubscriberTagsController') ->except(['show', 'update', 'destroy']);