@php $statMeta = [ 'Providers' => ['settings', 'blue', 'Connected API accounts'], 'Active Providers' => ['pulse', 'green', 'Ready for automation'], 'Imported Services' => ['services', 'blue', 'Synced provider services'], 'Auto Submit Services' => ['tasks', 'green', 'Can place orders automatically'], 'Provider Orders' => ['seller', 'blue', 'Orders linked to providers'], 'API Queue' => ['revision', 'orange', 'Needs sync or delivery check'], ]; @endphp

GTS Automation

API Manager

Manage SMM provider connections, sync imported services with commission, monitor balances, and check provider-backed orders from one clean desk.

@foreach ($stats as $label => $value) @php([$icon, $tone, $detail] = $statMeta[$label])
{{ $label }} {{ number_format($value) }} {{ $detail }}
@endforeach

Provider Connections

Sync services, apply commission, refresh balance, and review connection status.

Provider CRUD
@forelse ($providers as $provider)

{{ $provider->name }}

{{ parse_url($provider->api_url, PHP_URL_HOST) ?: $provider->api_url }}

{{ str($provider->status)->headline() }}
Balance
{{ number_format((float) $provider->balance, 2) }}
Services
{{ number_format($provider->services_count) }}
Active
{{ number_format($provider->active_services_count) }}
Last Sync
{{ $provider->last_synced_at?->diffForHumans() ?? 'Never' }}
@csrf Live Select Edit
@empty
No API providers yet. Add your first SMM provider to start service sync.
@endforelse

Live Provider Services

Load provider services first, select what you want to sell, then import with bulk or separate commission.

@if ($selectedProvider)
Selected Provider{{ $selectedProvider->name }}{{ parse_url($selectedProvider->api_url, PHP_URL_HOST) ?: $selectedProvider->api_url }}
Live Services{{ number_format(count($liveServices['services'] ?? [])) }}Fetched from provider API
Already Imported{{ number_format(count($importedServiceIds ?? [])) }}Matched by provider service ID
@if ($liveServices['error'] ?? null)
Provider API error: {{ $liveServices['error'] }}
@elseif (count($liveServices['services'] ?? []) > 0)
@csrf
Separate commission fields are optional. Empty rows use the bulk commission.
@foreach ($liveServices['services'] as $remote) @php $remoteId = (string) data_get($remote, 'service'); $imported = in_array($remoteId, $importedServiceIds ?? [], true); $remoteRate = (float) data_get($remote, 'rate', 0); @endphp @endforeach
Select Provider Service Category Rate Min / Max Flags Separate Commission
{{ data_get($remote, 'name', 'Provider Service '.$remoteId) }} #{{ $remoteId }} {{ data_get($remote, 'type') ? ' / '.data_get($remote, 'type') : '' }} {{ data_get($remote, 'category', 'Imported') }} {{ number_format($remoteRate, 4) }}provider / 1K {{ number_format((int) data_get($remote, 'min', 1)) }} / {{ number_format((int) data_get($remote, 'max', 10000)) }} Refill {{ data_get($remote, 'refill') ? 'Yes' : 'No' }} Drip {{ data_get($remote, 'dripfeed') ? 'Yes' : 'No' }} @if ($imported)Imported@endif
@else
No live services returned by this provider.
@endif @else
Choose a provider to load live services before importing selected selling points.
@endif

Imported Services

Latest services synced from active providers.

View All
@forelse ($services as $service) @empty @endforelse
ServiceProviderRateAutoStatus
{{ $service->name }}{{ $service->category }} / #{{ $service->provider_service_id ?: 'manual' }} {{ $service->provider?->name ?? 'Manual' }} {{ number_format((float) $service->rate_per_1000, 4) }} {{ $service->auto_submit ? 'On' : 'Off' }} {{ str($service->status)->headline() }}
No imported services yet. Sync a provider to fill this table.

Provider Order Sync

Recent orders connected with provider order IDs.

View All
@forelse ($orders as $order) @empty @endforelse
OrderClientProviderStatusAction
{{ $order->order_number }}{{ $order->provider_order_id ?: 'Not submitted' }} {{ $order->user?->name ?? 'GTS Client' }} {{ $order->service?->provider?->name ?? '-' }} {{ str($order->status)->headline() }} @if ($order->provider_order_id)
@csrf
@else Queued @endif
No provider orders yet.