Post/create multiple objects

Is it possible to use the REST API to create multiple Wowza objects using a single POST request? I’ve looked around for examples or documentation and I have tried some test calls, but I have been unsuccessful. If possible, I’d rather send 1 request with an array of objects to the server rather than looping through my data and sending another POST request.

If it matters, I am interested in creating multiple stream files or multiple transcoder templates.

Here is an example I tried:

curl -H "Content-Type: application/json" -X POST "http://wowza:port/v2/servers/{servername}/vhosts/{vhost}/applications/{applicationname}/streamfiles" -d
'[{
  "name": "stream_file1",
  "uri": "uri://1"
},
{
  "name": "stream_file1",
  "uri": "uri://1"
},
{
  "name": "stream_file1",
  "uri": "uri://1"
}]'

Wowza sends a malformed syntax response. Is there something I’m missing in my data? is something like this even possible?

Hi,

I don’t believe that is possible. The endpoint has the name of the stream file you’re adding at the end of the URI, for example adding the stream file axis.stream

curl -X POST --header 'Accept:application/json; charset=utf-8' --header 'Content-type:application/json; charset=utf-8' http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/streamfiles/axis -d'
{
   "restURI": "http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/streamfiles",
   "streamFiles": [
      {
         "id": "connectAppName= live&appInstance=_definst_&mediaCasterType=rtp",
         "href": "http://localhohst:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/streamfiles/connectAppName=live&appInstance=_definst_&mediaCasterType=rtp"
      }
   ]
}'

Regards,

Paul

I don’t believe that is possible. The endpoint has the name of the stream file you’re adding at the end of the URI, for example adding the stream file axis.stream

I don’t believe this is necessarily true. Perhaps my first POST data was malformed now that I see it again, but I can use the /streamfiles endpoint to add a single stream file. Something like this (test application is ‘Recorder’):

curl -X POST "http://server_address/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/Recorder/streamfiles" -d 
    {
      "name": "stream_test",
      "uri": "/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/Recorder/streamfiles/stream_test"
    }

Something like this will simple create single stream file named “stream_test.stream” in my Recorder application.

Is it not possible to create a JSON array of “name” and “uri” to create a number of stream files using one request? how would I format this JSON array of multiple streamfiles?

Here is my updated test.

curl -X POST "http://server_address/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/Recorder/streamfiles" -d
{
  "streamFiles": [
     {
       "id": "stream_b",
       "href": "/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/Recorder/streamfiles/stream_b"
     },
     {
       "id": "stream_a",
       "href": "/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/Recorder/streamfiles/stream_a"
     }
  ]
}

I actually get a response of success = true, but I do not see these stream files (stream_a.stream, stream_b.stream) added to my application. I am not sure why the server is returning success, in this case.

Hi,

Unfortunately, that REST API endpoint does not currently support an array list of values. I will raise this with our Engineering team to add this as an enhancement in a future release, and to add the correct error return code for now.

Michelle