{"id":35190044,"url":"https://github.com/edgarsn/laravel-backscreen-api-client","last_synced_at":"2026-04-21T22:03:46.511Z","repository":{"id":65381252,"uuid":"591028970","full_name":"edgarsn/laravel-backscreen-api-client","owner":"edgarsn","description":"This package helps you to make API calls to Backscreen API v5 in Laravel.","archived":false,"fork":false,"pushed_at":"2025-03-19T13:31:11.000Z","size":156,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"2.x","last_synced_at":"2026-02-18T14:53:18.052Z","etag":null,"topics":["api","backscreen","laravel","media","telia","tet","tet-media-services","tms"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edgarsn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-01-19T19:10:37.000Z","updated_at":"2025-03-19T13:13:23.000Z","dependencies_parsed_at":"2025-07-30T20:34:07.347Z","dependency_job_id":"7ecfa1c1-3a50-4e0c-9452-32641bbc5062","html_url":"https://github.com/edgarsn/laravel-backscreen-api-client","commit_stats":null,"previous_names":["edgarsn/laravel-backscreen-api-client","edgarsn/laravel-tms-api-client"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/edgarsn/laravel-backscreen-api-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarsn%2Flaravel-backscreen-api-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarsn%2Flaravel-backscreen-api-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarsn%2Flaravel-backscreen-api-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarsn%2Flaravel-backscreen-api-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edgarsn","download_url":"https://codeload.github.com/edgarsn/laravel-backscreen-api-client/tar.gz/refs/heads/2.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgarsn%2Flaravel-backscreen-api-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32112030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","backscreen","laravel","media","telia","tet","tet-media-services","tms"],"created_at":"2025-12-29T05:37:19.547Z","updated_at":"2026-04-21T22:03:46.505Z","avatar_url":"https://github.com/edgarsn.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel Backscreen API Client\n\nThis package helps you to make API calls to Backscreen (a.k.a: Videosher, TET Media Services) API v5.\n\nhttps://api.cloudycdn.services/api/v5/docs\n\n## Upgrade\n\nIf you were using 1.x before, follow UPGRADE.md to update your code properly since it contains many breaking changes.\n\n## Requirements\n- Laravel 11.0+, 12.0+, 13.0+\n- PHP 8.2+\n\nFor laravel versions 9.0, 10.0, see 1.x branch.\n\n## Installation\nRequire the package via Composer:\n\n```bash\ncomposer require newman/laravel-tms-api-client\n```\n\nCopy config file to your `config` directory.\n```bash\nphp artisan vendor:publish --tag=backscreen-api-config\n```\n\nAdd environment variables to your `.env` file.\n\n```dotenv\nBACKSCREEN_DEFAULT_USERNAME=\"API Key\"\nBACKSCREEN_DEFAULT_PASSWORD=\"API Secret\"\n```\n\nAt last, you can add extra client to your `backscreen-api.php` config file with other credentials or different default settings.\n\n# :book: Documentation \u0026 Usage\n\n## Clients\n\n### Access client from config\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\nTmsApi::client('default')-\u003erun(...);\n```\n\n### Create a client dynamically\n\nWe recommend to do this on your `AppServiceProvider`, inside `boot` function.\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Auth\\BasicAuthMethod;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$client = TmsApi::createClient('live', new BasicAuthMethod('api key', 'api secret'));\n\n// and from now on you can access using client() as well\n// TmsApi::client('live')-\u003erun(...);\n```\n\n### Authenticate via Bearer token\n\nThere are some endpoints (e.g. `/User/Login`) which doesn't require any authentication at all.\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Auth\\BearerAuthMethod;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n// 1) Retrieve Bearer token without any authentication.\n$response = TmsApi::nullClient()-\u003erun(new Login('my@email.com', 'mypassword'));\n\n$bearerToken = $response-\u003ejson('data.auth_token');\n\n// ... you may want to cache this token for some time\n\n// 2) Override default client dynamically with other auth method.\nTmsApi::createClient('default', new BearerAuthMethod($bearerToken));\n\n// 3) now all calls on default client will use Bearer token as auth method.\n// TmsApi::client('default')-\u003erun(...);\n```\n\n### Configure request\n\n**Note:** These parameters will be present only for a single (upcoming) request and then will reset to defaults.\n\n#### `timeout` and `connectTimeout`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\nTmsApi::client('default')-\u003etimeout(30)-\u003econnectTimeout(45)-\u003erun(...);\n```\n\n#### `withMiddleware`\n\nAppend HTTP middleware to this client upcoming requests.\n\nhttps://laravel.com/docs/12.x/http-client#guzzle-middleware\n\n```php\nuse GuzzleHttp\\Middleware;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\nTmsApi::client('default')\n    -\u003ewithMiddleware(\n        Middleware::mapRequest(function (RequestInterface $request) {\n            $request = $request-\u003ewithHeader('X-Example', 'Value');\n\n            return $request;\n        })\n    )\n    -\u003erun(....);\n```\n\n## Response\n\nResponse of the request is `\\Illuminate\\Http\\Client\\Reponse` object.\n\n# Endpoints\n\nWe created this package with only few implementations of TMS endpoints. PRs are welcome to add more.\n\nFor each endpoint argument (except required ones) you'll find a correspoding setter function.\n\nHere is the list of implemented endpoints:\n\n## `/Token`\n\n### Endpoint: `/Token/Generate`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Token/Generate\n\nGenerates a new token.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Token\\Generate as TokenGenerate;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new TokenGenerate(123456, TokenGenerate\\ItemTypeEnum::MEDIA);\n\n// Optional\n$endpoint-\u003eallowedCountries(['lv', 'lt', 'ee']);\n$endpoint-\u003eallowedIp('85.110.62.99');\n\n$endpoint-\u003eexpireTime(1674074046);\n$endpoint-\u003eexpireTime('2023-01-18 12:34:56');\n$endpoint-\u003eexpireTime(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003esubitemId(5);\n$endpoint-\u003esubitemType(TokenGenerate\\SubitemTypeEnum::PLAYBACK_HLS);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n## `/Media`\n\n### Endpoint: `/Media/List`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/List\n\nRetrieve a list of media.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\MediaList;\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Enums\\OrderDirectionEnum;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new MediaList();\n\n// Optional\n$endpoint-\u003eids([123]); // media IDs\n$endpoint-\u003eassetIds(['asset_id']);\n$endpoint-\u003ecategoryIds([5]);\n$endpoint-\u003eonlyAvailable(true);\n$endpoint-\u003epublished(true);\n$endpoint-\u003esearch('lorem ipsum');\n$endpoint-\u003etags(['archive']);\n$endpoint-\u003ereturn(['embed_player_codes', 'sources']);\n$endpoint-\u003eimagesFallback(false);\n\n$endpoint-\u003epublisherStatus(MediaList\\PublisherStatusEnum::PUBLISHED);\n\n$endpoint-\u003estatus(MediaList\\StatusEnum::INGESTED);\n$endpoint-\u003estatus([MediaList\\StatusEnum::INGESTED, MediaList\\StatusEnum::PLAYABLE]);\n\n$endpoint-\u003ecreatedFrom(1674074046);\n$endpoint-\u003ecreatedFrom('2023-01-18 12:34:56');\n$endpoint-\u003ecreatedFrom(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003ecreatedTo(1674074046);\n$endpoint-\u003ecreatedTo('2023-01-18 12:34:56');\n$endpoint-\u003ecreatedTo(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003eupdatedFrom(1674074046);\n$endpoint-\u003eupdatedFrom('2023-01-18 12:34:56');\n$endpoint-\u003eupdatedFrom(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003eupdatedTo(1674074046);\n$endpoint-\u003eupdatedTo('2023-01-18 12:34:56');\n$endpoint-\u003eupdatedTo(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003elimit(5);\n$endpoint-\u003eoffset(10);\n\n$endpoint-\u003eorderBy(MediaList\\OrderByEnum::CREATED_AT);\n$endpoint-\u003eorderDir(OrderDirectionEnum::ASC);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Create`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Create\n\nCreate media.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create as MediaCreate;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Availability;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Embed;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Enums\\EncryptionMethodEnum;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Enums\\TokenDurationEnum;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Files;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Images;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Security;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Tags;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\TranscodeInfo;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new MediaCreate('123');\n\n// Optional\n$endpoint-\u003ecatId(542);\n$endpoint-\u003ename('Name of media');\n$endpoint-\u003edescription('Description of media');\n$endpoint-\u003epgRating('PG-13');\n$endpoint-\u003eautoTranscode(1);\n$endpoint-\u003eembedPlayerId(123);\n$endpoint-\u003eembedAdId(234);\n$endpoint-\u003eembedProtectionId(345);\n$endpoint-\u003emetadata(['key' =\u003e 'value']);\n$endpoint-\u003etimezone('Europe/Riga');\n\n$files = new Files();\n$files-\u003eurl('https://mysite.com');\n$files-\u003eusername('username');\n$files-\u003epassword('secret');\n$files-\u003ebitrate(3000);\n$files-\u003elang('LV');\n$endpoint-\u003efiles([$files]); // accepts array of Files objects\n\n$tags = new Tags();\n$tags-\u003eset(['tag1', 'tag2']);\n$tags-\u003eadd(['tag3']);\n$endpoint-\u003etags($tags);\n\n$images = new Images();\n$images-\u003ethumbnail(base64_encode('THUMBNAIL_CONTENTS'));\n$images-\u003eplaceholder(base64_encode('PLACEHOLDER_CONTENTS'));\n$endpoint-\u003eimages($images);\n\n$embed = new Embed();\n$embed-\u003eenablePublic(1);\n$embed-\u003epublicPassword('password');\n$embed-\u003eenablePreview(1);\n$endpoint-\u003eembed($embed);\n\n$security = new Security();\n$security-\u003eencryptionMethod(EncryptionMethodEnum::AES);\n$security-\u003euseToken(1);\n$security-\u003etokenDuration(TokenDurationEnum::ONE_HOUR);\n$endpoint-\u003esecurity($security);\n\n$availability = new Availability();\n$availability-\u003epublished(1);\n$availability-\u003eexpireTime('2026-12-31 23:59:59');\n$endpoint-\u003eavailability($availability);\n\n$transcodeInfo = new TranscodeInfo();\n$transcodeInfo-\u003epresetId(10);\n$endpoint-\u003etranscodeInfo($transcodeInfo);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Update`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Update\n\nUpdate media.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Callback;\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Enums\\CallbackHttpMethodEnum;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Availability;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Enums\\EncryptionMethodEnum;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Files;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\Security;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Create\\TranscodeInfo;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update as MediaUpdate;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update\\ByAssetId;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update\\ByMediaId;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update\\Embed;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update\\Images;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update\\Tags;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Update\\UpdateManifest;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n// Select by which identifier to update\n// by media ID\n$endpoint = new MediaUpdate(new ByMediaId(123));\n// by asset ID\n$endpoint = new MediaUpdate(new ByAssetId('99_asset_id'));\n\n// Optional\n$endpoint-\u003ecatId(542);\n$endpoint-\u003ename('Name of media');\n$endpoint-\u003edescription('Description of media');\n$endpoint-\u003epgRating('PG-13');\n$endpoint-\u003eautoTranscode(1);\n$endpoint-\u003eembedPlayerId(123);\n$endpoint-\u003eembedAdId(234);\n$endpoint-\u003eembedProtectionId(345);\n$endpoint-\u003emetadata(['key' =\u003e 'value']);\n$endpoint-\u003etimezone('Europe/Riga');\n\n$files = new Files();\n$files-\u003eurl('https://mysite.com');\n$files-\u003eusername('username');\n$files-\u003epassword('secret');\n$files-\u003ebitrate(3000);\n$files-\u003elang('LV');\n$endpoint-\u003efiles([$files]); // accepts array of Files objects\n\n$images = new Images();\n$images-\u003ethumbnail(base64_encode('THUMBNAIL_CONTENTS'));\n$images-\u003eplaceholder(base64_encode('PLACEHOLDER_CONTENTS'));\n$endpoint-\u003eimages($images);\n\n$embed = new Embed();\n$embed-\u003eenablePublic(1);\n$embed-\u003epublicPassword('password');\n$embed-\u003eenablePreview(1);\n$endpoint-\u003eembed($embed);\n\n$security = new Security();\n$security-\u003eencryptionMethod(EncryptionMethodEnum::AES);\n$security-\u003euseToken(1);\n$endpoint-\u003esecurity($security);\n\n$availability = new Availability();\n$availability-\u003epublished(1);\n$availability-\u003eexpireTime('2026-12-31 23:59:59');\n$endpoint-\u003eavailability($availability);\n\n$transcodeInfo = new TranscodeInfo();\n$transcodeInfo-\u003epresetId(10);\n$endpoint-\u003etranscodeInfo($transcodeInfo);\n\n$tags = new Tags();\n$tags-\u003eset(['tag1', 'tag2']);\n$tags-\u003eadd(['tag3']);\n$tags-\u003eremove(['tag4']);\n$endpoint-\u003etags($tags);\n\n$manifest = new UpdateManifest();\n$manifest-\u003eid(85291);\n$manifest-\u003estartAt(1000);\n$manifest-\u003eendAt(60000);\n$endpoint-\u003eupdateManifests([$manifest]);\n\n$endpoint-\u003ecallback([new Callback('https://mysite.com', CallbackHttpMethodEnum::POST)]);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Delete`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Delete\n\nDelete media by ID/s.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Delete as MediaDelete;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n// Multiple IDs.\n$endpoint = new MediaDelete([1234, 5678]);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n\n// Single ID.\n$endpoint = new MediaDelete(1234);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Clone`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Clone\n\nClone media by ID.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\CloneMedia;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new CloneMedia(1234, 'asset_id_for_the_new_asset');\n\n// Optional\n$endpoint-\u003ename('Name for the new asset');\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Trim`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Trim\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Trim;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new Trim(1234, '00:00:10', '00:59:59', Trim\\TypeEnum::NEW);\n\n// Optional\n$endpoint-\u003ename('Name');\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Generateimage`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Generateimage\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\GenerateImage;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new GenerateImage(1234);\n\n// Optional\n$endpoint-\u003emediaFileId(1902);\n$endpoint-\u003ethumbnail('01:20:39');\n$endpoint-\u003eplaceholder('00:05:30');\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Reset`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Reset\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Reset;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$response = TmsApi::client('default')-\u003erun(new Reset(1234));\n```\n\n### Endpoint: `/Media/Transcode`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Transcode\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Transcode;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$response = TmsApi::client('default')-\u003erun(new Transcode(1234));\n```\n\n### Endpoint: `/Media/Canceltranscode`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Canceltranscode\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\CancelTranscode;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$response = TmsApi::client('default')-\u003erun(new CancelTranscode(1234));\n```\n\n### Endpoint: `/Media/Updatesubtitlesfromsource`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Updatesubtitlesfromsource\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\UpdateSubtitlesFromSource;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$response = TmsApi::client('default')-\u003erun(new UpdateSubtitlesFromSource(1234));\n```\n\n### Endpoint: `/Media/Regeneratepackages`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Regeneratepackages\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\RegeneratePackages;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new RegeneratePackages(1234);\n\n// Optional\n$endpoint-\u003epackageId([10, 15]);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Publish`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Publish\n\nPublish or unpublish media by ID/s.\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Publish as MediaPublish;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n// Publish a single media item (1 = publish, 0 = unpublish)\n$endpoint = new MediaPublish(1234, 1);\n\n// Publish multiple media items\n$endpoint = new MediaPublish([1234, 5678], 1);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Uploadtoexternal`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Uploadtoexternal\n\nUpload media files to an external destination.\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\UploadToExternal as MediaUploadToExternal;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\UploadToExternal\\CustomFile;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\UploadToExternal\\PackageFile;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n// Single media ID and upload destination ID\n$endpoint = new MediaUploadToExternal(1234, 10);\n\n// Multiple media IDs\n$endpoint = new MediaUploadToExternal([1234, 5678], 10);\n\n// Optional\n$endpoint-\u003epath('/uploads/');\n$endpoint-\u003ecatDir(1);  // 0 or 1\n$endpoint-\u003eassetDir(1); // 0 or 1\n\n$endpoint-\u003epackageFiles([\n    new PackageFile(package_id: 4020, file_id: 582),\n]);\n\n$endpoint-\u003ecustomFiles([\n    new CustomFile(file_id: 900, filename: 'custom_file.mp4'),\n]);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Validate`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Validate\n\nValidate media by ID/s.\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Validate as MediaValidate;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n// Single ID\n$endpoint = new MediaValidate(1234);\n\n// Multiple IDs\n$endpoint = new MediaValidate([1234, 5678]);\n\n// Optional\n$endpoint-\u003etranscode(1);          // 0 or 1\n$endpoint-\u003etranscodePriority(1);  // 0 = normal, 1 = top priority\n$endpoint-\u003etranscodingPresetId(10);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n## `/Media/Manifest`\n\n### Endpoint: `/Media/Manifest/List`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/List\n\nRetrieve list of manifests.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Manifest\\List\\OrderByEnum;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Manifest\\ManifestList;\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Enums\\OrderDirectionEnum;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new ManifestList();\n\n// Optional\n$endpoint-\u003eids([1, 2]); // manifest IDs\n$endpoint-\u003elimit(10);\n$endpoint-\u003emediaIds([1234]);\n$endpoint-\u003eoffset(10);\n$endpoint-\u003eorderBy(OrderByEnum::NAME);\n$endpoint-\u003eorderDir(OrderDirectionEnum::DESC);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Manifest/Create`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/Create\n\nCreate a new media manifest.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Manifest\\Create as MediaManifestCreate;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new MediaManifestCreate(1234); // media ID\n\n// Optional\n$endpoint-\u003ename('Name of the manifest');\n$endpoint-\u003edefault(true);\n$endpoint-\u003estartAt(1000);\n$endpoint-\u003eendAt(60000);\n$endpoint-\u003efiles([582, 583]);\n$endpoint-\u003epackageId(4020);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Manifest/Update`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/Update\n\nUpdate media manifest by manifest ID.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Manifest\\Update as MediaManifestUpdate;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new MediaManifestUpdate(85291); // manifest ID\n\n// Same optional functions as \"/Media/Manifest/Create\" endpoint.\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Media/Manifest/Delete`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/Delete\n\nDelete media manifest by manifest ID.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Media\\Manifest\\Delete as MediaManifestDelete;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$response = TmsApi::client('default')-\u003erun(new MediaManifestDelete(85291)); // manifest ID\n```\n\n## `/User`\n\n### Endpoint: `/User/Get`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/User/Get\n\nReturn current user info. Returns the same values as login action, but without auth_token.\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\User\\Get as UserGet;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new UserGet();\n\n// Optional\n$endpoint-\u003ereturn(['client.limits']);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/User/Login`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/User/Login\n\nLogin user by email \u0026 password to retrieve Bearer token.\n\n**Accepted Auth Methods:** `Null`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\User\\Login as UserLogin;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new UserLogin('my@email.com', 'password');\n\n// Optional\n$endpoint-\u003etwoFaCode('123456');\n$endpoint-\u003ereturn(['client.limits']);\n\n$response = TmsApi::nullClient()-\u003erun($endpoint);\n```\n\n### Endpoint: `/User/Logout`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/User/Logout\n\nLogout currently authenticated user.\n\n**Accepted Auth Methods:** `Bearer token`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\User\\Logout as UserLogout;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$response = TmsApi::client('default')-\u003erun(new UserLogout());\n```\n\n## `/Live`\n\n### Endpoint: `/Live/List`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Live/List\n\nRetrieve a list of livestream.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\LiveList;\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Enums\\OrderDirectionEnum;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new LiveList();\n\n$endpoint-\u003eid(123);\n$endpoint-\u003eid([123, 456]);\n$endpoint-\u003eid('123');\n\n$endpoint-\u003eidFrom(123);\n$endpoint-\u003eidTo(123);\n$endpoint-\u003eimagesFallback(true);\n$endpoint-\u003elimit(123);\n$endpoint-\u003ename('name');\n$endpoint-\u003eoffset(123);\n\n$endpoint-\u003ecreatedFrom(1674074046);\n$endpoint-\u003ecreatedFrom('2023-01-18 12:34:56');\n$endpoint-\u003ecreatedFrom(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003ecreatedPeriod(LiveList\\PeriodEnum::LAST_HOUR);\n\n$endpoint-\u003ecreatedTo(1674074046);\n$endpoint-\u003ecreatedTo('2023-01-18 12:34:56');\n$endpoint-\u003ecreatedTo(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003eorderBy(LiveList\\OrderByEnum::CREATED_AT);\n$endpoint-\u003eorderDir(OrderDirectionEnum::ASC);\n\n$endpoint-\u003ereturn(LiveList\\ReturnEnum::CATEGORY);\n$endpoint-\u003ereturn([LiveList\\ReturnEnum::CATEGORY, LiveList\\ReturnEnum::PREVIEW]);\n\n$endpoint-\u003eupdatedFrom(1674074046);\n$endpoint-\u003eupdatedFrom('2023-01-18 12:34:56');\n$endpoint-\u003eupdatedFrom(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$endpoint-\u003eupdatedPeriod(LiveList\\PeriodEnum::LAST_HOUR);\n\n$endpoint-\u003eupdatedTo(1674074046);\n$endpoint-\u003eupdatedTo('2023-01-18 12:34:56');\n$endpoint-\u003eupdatedTo(\\Carbon\\Carbon::now()-\u003eaddHour());\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Live/Create`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Live/Create\n\nCreate a livestream.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\Create;\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Images;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new Create('New Livestream');\n\n$endpoint-\u003ename('Different Livestream');\n$endpoint-\u003ecatId(1);\n$endpoint-\u003emultiLanguages(true);\n$endpoint-\u003ecustomOrigin('https://example.com');\n\n$publish = new Create\\Publish();\n$publish-\u003eprefix('prefix');\n$endpoint-\u003epublish($publish);\n\n$endpoint-\u003eembedPlayerId(1);\n$endpoint-\u003eembedAdId(1);\n$endpoint-\u003eembedProtectionId(1);\n\n$embed = new Create\\Embed();\n$embed-\u003eenablePublic(true);\n$embed-\u003epublicPassword('password');\n$embed-\u003eenablePreview(true);\n$endpoint-\u003eembed($embed);\n\n$security = new Create\\Security();\n$security-\u003eencryptionMethod(Create\\Enums\\EncryptionMethodEnum::AES);\n$security-\u003euseToken(true);\n$security-\u003etokenDuration(Create\\Enums\\TokenDurationEnum::ONE_HOUR);\n$endpoint-\u003esecurity($security);\n\n$recording = new Create\\Recording\\Recording();\n$recording-\u003eautoDelete(true);\n$recording-\u003eautoDeleteMedia(true);\n$recording-\u003esavePassed(true);\n$recording-\u003edeleteAfterHours(1);\n$recording-\u003emarginStartSeconds(1);\n$recording-\u003emarginEndSeconds(1);\n$recording-\u003efileNamingPattern('pattern');\n\n$nimbus = new Create\\Recording\\Nimbus();\n$nimbus-\u003esyncInterval(1);\n$nimbus-\u003echannelId(1);\n$nimbus-\u003emanifestId(1);\n$recording-\u003enimbus($nimbus);\n\n$epg = new Create\\Recording\\EPG();\n$epg-\u003ehoursBefore(1);\n$epg-\u003ehoursAfter(1);\n$epg-\u003eround(0);\n$recording-\u003eepg($epg);\n\n$endpoint-\u003erecording($recording);\n\n$images = new Images();\n$images-\u003ethumbnail(base64_encode('FILE_CONTENTS'));\n$images-\u003eplaceholder(base64_encode('FILE_CONTENTS'));\n$images-\u003eplaybutton(base64_encode('FILE_CONTENTS'));\n$images-\u003elogo(base64_encode('FILE_CONTENTS'));\n$endpoint-\u003eimages($images);\n\n$availability = new Create\\Availability();\n$availability-\u003escheduleStart(1674074046);\n$availability-\u003escheduleStart('2023-01-18 12:34:56');\n$availability-\u003escheduleStart(\\Carbon\\Carbon::now()-\u003eaddHour());\n$availability-\u003escheduleEnd(1674074046);\n$availability-\u003escheduleEnd('2023-01-18 12:34:56');\n$availability-\u003escheduleEnd(\\Carbon\\Carbon::now()-\u003eaddHour());\n$endpoint-\u003eavailability($availability);\n\n$input = new Create\\Input\\Input();\n$input-\u003etranscode(true);\n$input-\u003etrancoderId(1);\n$input-\u003eprotocol(Create\\Enums\\ProtocolEnum::SRT);\n$input-\u003esrtPassPhrase('passphrase');\n$input-\u003esrtKeyLength(16);\n$input-\u003eserverPort(443);\n$input-\u003eserverApp('app');\n$input-\u003eautoShutdown(1);\n$input-\u003evideoPid('videoPID123');\n\n$latvianLanguage = new Create\\Input\\AudioLanguage();\n$latvianLanguage-\u003elanguage('lat');\n$latvianLanguage-\u003epid('123');\n$latvianLanguage-\u003elanguageName('Latvian');\n$input-\u003eaudioLanguages([$latvianLanguage]);\n\n$endpoint-\u003einput($input);\n$endpoint-\u003etimezone('Europe/Riga');\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Live/Update`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Live/Update\n\nUpdate an existing livestream.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\Update;\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\Create;\nuse Newman\\LaravelBackscreenApiClient\\EndpointSupport\\Images;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new Update(123);\n\n$endpoint-\u003eid(1234);\n$endpoint-\u003ename('Different Livestream');\n$endpoint-\u003ecatId(1);\n$endpoint-\u003emultiLanguages(true);\n$endpoint-\u003ecustomOrigin('https://example.com');\n\n$publish = new Create\\Publish();\n$publish-\u003eprefix('prefix');\n$endpoint-\u003epublish($publish);\n\n$endpoint-\u003eembedPlayerId(1);\n$endpoint-\u003eembedAdId(1);\n$endpoint-\u003eembedProtectionId(1);\n\n$embed = new Create\\Embed();\n$embed-\u003eenablePublic(true);\n$embed-\u003epublicPassword('password');\n$embed-\u003eenablePreview(true);\n$endpoint-\u003eembed($embed);\n\n$security = new Create\\Security();\n$security-\u003eencryptionMethod(Create\\Enums\\EncryptionMethodEnum::AES);\n$security-\u003euseToken(true);\n$security-\u003etokenDuration(Create\\Enums\\TokenDurationEnum::ONE_HOUR);\n$endpoint-\u003esecurity($security);\n\n$recording = new Create\\Recording\\Recording();\n$recording-\u003eautoDelete(true);\n$recording-\u003eautoDeleteMedia(true);\n$recording-\u003esavePassed(true);\n$recording-\u003edeleteAfterHours(1);\n$recording-\u003emarginStartSeconds(1);\n$recording-\u003emarginEndSeconds(1);\n$recording-\u003efileNamingPattern('pattern');\n\n$nimbus = new Create\\Recording\\Nimbus();\n$nimbus-\u003esyncInterval(1);\n$nimbus-\u003echannelId(1);\n$nimbus-\u003emanifestId(1);\n$recording-\u003enimbus($nimbus);\n\n$epg = new Create\\Recording\\EPG();\n$epg-\u003ehoursBefore(1);\n$epg-\u003ehoursAfter(1);\n$epg-\u003eround(0);\n$recording-\u003eepg($epg);\n\n$endpoint-\u003erecording($recording);\n\n$images = new Images();\n$images-\u003ethumbnail(base64_encode('FILE_CONTENTS'));\n$images-\u003eplaceholder(base64_encode('FILE_CONTENTS'));\n$images-\u003eplaybutton(base64_encode('FILE_CONTENTS'));\n$images-\u003elogo(base64_encode('FILE_CONTENTS'));\n$endpoint-\u003eimages($images);\n\n$availability = new Create\\Availability();\n$availability-\u003escheduleStart(1674074046);\n$availability-\u003escheduleStart('2023-01-18 12:34:56');\n$availability-\u003escheduleStart(\\Carbon\\Carbon::now()-\u003eaddHour());\n$availability-\u003escheduleEnd(1674074046);\n$availability-\u003escheduleEnd('2023-01-18 12:34:56');\n$availability-\u003escheduleEnd(\\Carbon\\Carbon::now()-\u003eaddHour());\n$endpoint-\u003eavailability($availability);\n\n$input = new Create\\Input\\Input();\n$input-\u003etranscode(true);\n$input-\u003etrancoderId(1);\n$input-\u003eprotocol(Create\\Enums\\ProtocolEnum::SRT);\n$input-\u003esrtPassPhrase('passphrase');\n$input-\u003esrtKeyLength(1);\n$input-\u003eserverPort(443);\n$input-\u003eserverApp('app');\n$input-\u003eautoShutdown(1);\n$input-\u003evideoPid('videoPID123');\n\n$latvianLanguage = new Create\\Input\\AudioLanguage();\n$latvianLanguage-\u003elanguage('lat');\n$latvianLanguage-\u003epid('123');\n$latvianLanguage-\u003elanguageName('Latvian');\n$input-\u003eaudioLanguages([$latvianLanguage]);\n\n$endpoint-\u003einput($input);\n$endpoint-\u003etimezone('Europe/Riga');\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Live/On`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Live/On\n\nTurn on an existing livestream.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\On;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new On(123);\n\n$endpoint-\u003eid(1234);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Live/Off`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Live/Off\n\nTurn Off an existing livestream.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\Off;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new Off(123);\n\n$endpoint-\u003eid(1234);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n### Endpoint: `/Live/Record`\n\nhttps://api.cloudycdn.services/api/v5/docs#/operations/Live/Record\n\nStart recording an existing livestream.\n\n**Accepted Auth Methods:** `Basic`, `Bearer token`, `API Key`\n\n```php\nuse Newman\\LaravelBackscreenApiClient\\Endpoints\\Live\\Record;\nuse Newman\\LaravelBackscreenApiClient\\Support\\Facades\\TmsApi;\n\n$endpoint = new Record(123);\n\n$endpoint-\u003eid(1234);\n\n$response = TmsApi::client('default')-\u003erun($endpoint);\n```\n\n# :handshake: Contributing\n\nWe'll appreciate your collaboration to this package.\n\nWhen making pull requests, make sure:\n* All tests are passing: `composer test`\n* Test coverage is not reduced: `composer test-coverage`\n* There are no PHPStan errors: `composer phpstan`\n* Coding standard is followed: `composer lint` or `composer fix-style` to automatically fix it. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgarsn%2Flaravel-backscreen-api-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedgarsn%2Flaravel-backscreen-api-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgarsn%2Flaravel-backscreen-api-client/lists"}