PHP
Introduction
You can find all necessary Code for Download and Changelogs always here:
The PHP SDK for the nexxOMNIA API needs at least PHP 7.4 as Environment.
It works best when integrated via Composer 2.
A very simple Example could be
General Usage
For any API Call, two Classes have to be instantiated. The apiclient
has to be created only once and configured with the target Domain ID, the Domain Secret and (in most Cases) a valid Session ID - in most cases, that would be the Management Session ID.
The apiclient
will execute a valid apicall
. There are many different apicall
Classes for different Aspects of the API, but they all work in a similar Way.
All API Methods, as described in this Documentation, are available on the corresponding apicall
Class. In most cases, the apicall
Class Method is "humanized" and the Naming is less technical.
Nearly every API Method can be configured by Parameters and/or Modifiers. Consequently, each apicall
Class exposes a getParameters()
and a getModifiers()
Method, which return Helper Classes for easier accessing the correct Parameters here:
In this simple Example, the basic Way to set Parameters is shown (the set
Method). Every valid Parameter though has also an explicit Setter (here setLimit
), which additionally check Consistency and Validity of the given Parameter.
Methods with unique Parameters (like in the /manage API Endpoint), expose these Parameters directly on the Method and handle the necessary Parameter Logic themselves.
The call Method of the apiclient
takes the configured API Call and directly starts it. It returns an Instance of the result
Class then, which can be handled like this:
The result
Class can directly return the received JSON via getRawResponse
- or, only the "result" Part of the Response via getResult
.
For more advanced Usage, it can also return an Instance of the resultobject
Class, which allows to query the JSON in a more human Way:
Especially the media API returns very often Lists of Media Objects. For Iterating directly over the JSON Array, the result Class exposes an Iterator via getResultIterator
. The Iterator itself can return the pure JSON Objects or resultobject
Class Instances as above.
Creating new Elements
Media Creation via API
The SDK allows also to create new Media. Technically, there are Media Types, that need an initial File (like a Video), and Media Types, that exist of Data alone (an Article for example).
File-driven Media Types can be created by giving a URL, that the API will use to download and process the Input and create an Item from it:
Data-driven Media Types will be created like this:
Creating Structure Elements
Structure Elements like Channels, Formats and Categories are not Media Items. They exist on the Domain Level only and can be created like Data-driven Elements via API:
The Attributes for this Example are listed in the Domain Management API:
Domain ManagementMedia Creation via UploadHandler
Alternatively, you can upload a local File directly with the uploadhandler
Class:
Using the UploadHandler
Besides the pure Upload of new Media Files, the UploadHandler offers even more Helpers for all API Endpoints, that need a phsyical File (like Covers and Captions):
Available APICall Classes
Media API
The most important Difference to other Classes here is the need for setting the target Streamtype (in the Constructor or via explicit Method). By default, the Class uses "video" as Streamtype. You can use the Enum Class nexxomnia\enums\streamtypes
to be sure or just use a String.
The Media API offers by far the highest Amount of Modifiers and Parameters, which are exposed as described above. It also nearly always returns Lists of Media, which implies using the Interator Object on the result Class.
Very often, it is necessary to get all possible Results in one Array. The API itself does not return more than 100 Elements per Call, but if all possible Results are needd, the call
Method of the apiclient
offers a second Parameter, which will handle the Parameters and Interating over the API Responses to construct a result
Object with indeed all Result Objects.
Management APIs
As the Management API offers by far the most Methods, the API Client offers mediamanagement and domainmanagement Classes for the corresponding Method Helpers.
Like the Media API, the Classes offer a setStreamtype
and a setItem
Method, which is extremely helpfull especially on Media Management, where one specific Media Item of a specific Streamtype should be modified.
Statistics API
The Statistics API returns in nearly every case lists of Key=>Value Pairs. Therefore, the Usage of the getResult
Method of the response
Object is is most cases sufficient.
Please notice, that some Methods can return huge Lists. As Paging is not supported in this API, you can set the Limit to higher Values (like 100000). Furthermore, this API might take longer than all other APIs, as it returns realtime Data. The apiclient therefore sets a Timeout of 30 Seconds by default, it Endpoints of this API are called. It is possible though to raise this Value even more:
Domain API
The Domain API exposes various structural Objects, that are connected to a Domain. The classic Example is a List of Channels via getChannels
. In most Cases, the response should be iterated over with an Iterator, but as most Lists are very short and Paging is (in most Cases) not supported, the getResult
Method is enough.
System API
The System API is very straight forward, as it basically only returns Objects/Arrays of System Constants. The Usage of the getResult
Method of the response
Object is is most cases sufficient.
Session API
The Session API is available in the SDK, but in nearly every Case, this Backend SDK should use the constant "Management Session", given by 3Q. Nevertheless, it is possible to start and extend Sessions with this Class, if needed.
Session ManagementProcessing API
The most important Method of the Processing API is the MultiTask Method, which allows to query multiple API Endpoints at the same time. To make sure, the Parameters are built correctly, each Task, that is given to the Method is itself a Class. It is used like this:
Custom APICall
For advanced Usage, you can omit all predefined Methods and Helpers and use a custom APICall. Please notice, that in this Case, you have to be very sure about the right Endpoints, Methods, HTTP Verbs and Parameters.
Last updated