Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Info
titleNote

A reference setup of the xconf dataservice is available at https://xconf.rdkcentral.com:9092/ for the community members to get acquainted with xconf. You can replace the <host> , <port> and protocol as xconf.rdkcentral.com, 9092 and https respectively in the placeholders mentioned below in the request samples. Or if you have deployed your own server instance then replace the host and port accordinngly.


Firmware Config

Retrieve a list of firmware configs

...

Code Block
languagephp
themeConfluence
Accept = application/json OR application/xml

applicationType parameter is not required, default value is stb

Response: 200 OK OR 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/firmwares.json OR http://localhost<host>:9091<port>/queries/firmwares


JSON response:

...

Response: 200 OK

Request: 

http://localhost<host>:9091<port>/queries/firmwares/b65962b5-1481-4eed-a010-2abfa8c3bbfd

 OR 

http://localhost<host>:9091<port>/queries/firmwares/b65962b5-1481-4eed-a010-2abfa8c3bbfd.json

...

Response: 200 OK OR 400 BAD REQUEST (if application type has a wrong value)

Request: 

http://localhost<host>:9091<port>/queries/firmwares/model/YETST.json

 OR 

http://localhost<host>:9091<port>/queries/firmwares/model/YETST

...

Responce: 200 OK and saved object (see get request for example); 400 BAD REQUEST (by validation error); 500 INTERNAL SERVER ERROR

Request: 

http://localhost<host>:9091<port>/updates/firmwares.json

 OR 

http://localhost<host>:9091<port>/updates/firmwares

Restrictions: 

...

Response: 204 NO CONTENT and text message: Firmware config successfully deleted OR Config doesn't exist.

Request:

http://localhost<host>:9091<port>/delete/firmwares/b65962b5-1481-4eed-a010-2abfa8c3bbfd

...

Response: 200 OK OR 400 BAD REQUEST (if application type has a wrong value)

Request: 

http://localhost<host>:9091<port>/queries/rules/ips.json

 OR 

http://localhost<host>:9091<port>/queries/rules/ips


JSON response

...

Response: 200 OK OR 400 BAD REQUEST (if application type has a wrong value)

Request: 

http://localhost<host>:9091<port>/queries/rules/ips/fsd.json

 OR 

http://localhost<host>:9091<port>/queries/rules/ips/fsd


JSON response

...

Name, environmentId, modelId should be not empty, IP address group should be specified

Request: 

http://localhost<host>:9091<port>/updates/rules/ips.json 

OR

 http://localhost<host>:9091<port>/updates/rules/ips


JSON request

...

Response: 204 NO CONTENT and message: IpRule successfully deleted OR Rule doesn't exists, 400 BAD REQUEST if applicationType is not valid;

Request: http://localhost<host>:9091<port>/delete/rules/ips/ruleName

...

Response: 200 OK OR 400 BAD REQUEST if applicationType is not valid

Request: 

http://localhost<host>:9091<port>/queries/filters/locations.json 

OR

 http://localhost<host>:9091<port>/queries/filters/locations

...

Response: 200 OK

Request: 

http://localhost<host>:9091<port>/queries/filters/locations/name.json

 OR 

http://localhost<host>:9091<port>/queries/filters/locations/name

...

Condition, models, environments, IPv4, location, any location (HTTP or firmware), IPv4/IPv6 should be valid

Request: 

http://localhost<host>:9091<port>/updates/filters/locations.json

 OR 

http://localhost<host>:9091<port>/updates/filters/locations

...

Code Block
languagephp
themeConfluence
{

  "ipAddressGroup": {

    "id": "2c184325-f9eb-4edc-85c3-5b6466fc3c5c",

    "name": "test",

    "ipAddresses": [

      "192.11.11.11"

    ]

  },

  "environments": [

     

  ],

  "models": [

     

  ],

  "ipv6FirmwareLocation": "2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d",

  "httpLocation": "http://localhost:8080",

  "forceHttp": true,

  "id": "2ce1279b-bb25-4fda-9a34-fe8466bc2702",

  "name": "name",

  "boundConfigId": "95e75859-ae8f-4d6a-b758-11fefbe647e1",

  "ipv4FirmwareLocation": "10.10.10.10"

}

Delete location filter by name

DELETE http://<host>:<port>/delete/filters/locations/{locationFilterName}?applicationType={type}

...

Response: 204 NO CONTENT and message: Location filter successfully deleted OR Filter doesn't exist with name: <filterName>, 400 BAD REQUEST if applicationType is not valid

Request: http://localhost<host>:9091<port>/delete/filters/location/name

...

Response: 200 OK, 400 BAD REQUEST if applicationType is not valid

Request: 

http://localhost<host>:9091<port>/queries/filters/downloadlocation.json

 OR 

http://localhost<host>:9091<port>/queries/filters/downloadlocation

...

Location URL, IPv4/IPv6 should be valid, percentage should be positive and within [0, 100], locations should be not duplicated

Request: 

http://localhost<host>:9091<port>/updates/filters/downloadlocation.json 

OR 

http://localhost<host>:9091<port>/updates/filters/downloadlocation.json

...

Response: 200 OK, 400 BAD REQUEST if applicationType is not valid

Request: 

http://localhost<host>:9091<port>/queries/rules/envModels.json 

OR 

http://localhost<host>:9091<port>/queries/rules/envModels


JSON response

...

Response: 200 OK, 400 BAD REQUEST if applicationType is not valid

Request: 

http://localhost<host>:9091<port>/queries/rules/envModels/testName.json 

OR 

http://localhost<host>:9091<port>/queries/rules/envModels/testName.json

...

Code Block
languagephp
themeConfluence
<EnvModelRuleBean>
 <id>12b620bd-2e74-4467-91e5-c29657022c05</id>
 <name>testName</name>
 <firmwareConfig>
  <id>f0b7b35b-4b8e-4a15-9d66-91c4b3d575d1</id>
  <description>prav_Firm</description>
  <supportedModelIds>
   <supportedModelIds>PX013ANM</supportedModelIds>
   <supportedModelIds>PX013ANC</supportedModelIds>
  </supportedModelIds>
  <firmwareFilename>PX013AN_2.1s11_VBN_HYBse-signed.bin</firmwareFilename>
  <firmwareVersion>PX013AN_2.1s11_VBN_HYBse-signed</firmwareVersion>
 </firmwareConfig>
 <environmentId>TEST</environmentId>
 <modelId>PX013ANC</modelId>
</EnvModelRuleBean>

Create/update an environment model rule

If EnvModelRule is missing it will be being created, otherwise updated. For update operation id field is not needed.

...

Name, environment, model should be not empty, name is used only once, env/model should not overlap each other

Request: 

http://localhost<host>:9091<port>/updates/rules/envModels.json

 OR 

http://localhost<host>:9091<port>/updates/rules/envModels


JSON request

...

Response: 204 NO CONTENT and message: Rule successfully deleted OR Rule doesn't exist with name: <ruleName>, 400 if applicationType is not valid

Request: http://localhost<host>:9091<port>/delete/rules/envModels/testName.json

IP filter

IP Filter

Retrieve an IP filter list

...

Responce: 200 OK, 400 BAD REQUEST

Request: 

http://localhost<host>:9091<port>/queries/filters/ips.json

 OR 

http://localhost<host>:9091<port>/queries/filters/ips 


JSON response

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <id>8bdb3493-a18b-4230-9b25-fd44df38863b</id>
  <name>name</name>
  <ipAddressGroup>
   <id>2c184325-f9eb-4edc-85c3-5b6466fc3c5c</id>
   <name>test</name>
   <ipAddresses>
    <ipAddresses>192.11.11.11</ipAddresses>
   </ipAddresses>
  </ipAddressGroup>
  <warehouse>false</warehouse>
 </item>
 <item>
  <id>f9c5a6e8-d34f-4dc6-ae41-9016b70552ae</id>
  <name>namef</name>
  <ipAddressGroup>
   <id>2c184325-f9eb-4edc-85c3-5b6466fc3c5c</id>
   <name>test</name>
   <ipAddresses>
    <ipAddresses>192.11.11.11</ipAddresses>
   </ipAddresses>
  </ipAddressGroup>
  <warehouse>false</warehouse>
 </item>
</ArrayList>

Retrieve an ip filter by name

GET http://<host>:<port>/queries/filters/ips/{ipFilterName}?applicationType={type}

...

Responce: 200 OK, 400 BAD REQUEST if applicationType is not valid

Request: 

http://localhost<host>:9091<port>/queries/filters/ips/namef.json 

OR 

http://localhost<host>:9091<port>/queries/filters/ips/namef.json

...

Code Block
languagephp
themeConfluence
<IpFilter>
 <id>8bdb3493-a18b-4230-9b25-fd44df38863b</id>
 <name>name</name>
 <ipAddressGroup>
  <id>2c184325-f9eb-4edc-85c3-5b6466fc3c5c</id>
  <name>test</name>
  <ipAddresses>
   <ipAddresses>192.11.11.11</ipAddresses>
  </ipAddresses>
 </ipAddressGroup>
 <warehouse>false</warehouse>
</IpFilter>

Create/update an IP filter

If IpFilter is missing it will be being created, otherwise updated. For update operation id field is not needed.

...

Name, IP address group should be not empty

Request: 

http://localhost<host>:9091<port>/updates/filters/ips.json

 OR 

http://localhost<host>:9091<port>/updates/filters/ips


JSON request

...

Response: 204 NO CONTENT and message: IpFilter successfully deleted OR Filter doesn't exist with name: <filterName>, 400 BAD REQUEST if applicationType is not valid

Request: http://localhost<host>:9091<port>/delete/filters/ips/namef

Percent filter

Retrieve percent filter

GET http://<host>:<port>/queries/filters/percent?applicationType={type}

...

Responce: 200 OK, 400 BAD REQUEST if applicationType is not valid


Request: 

http://localhost<host>:9091<port>/queries/filters/percent.json 

OR 

http://localhost<host>:9091<port>/queries/filters/percent


Note

...

Code Block
languagephp
themeConfluence
<PercentFilterWrapper type="com.comcast.xconf.queries.beans.PercentFilterWrapper">
 <id>PERCENT_FILTER_VALUE</id>
 <percentage>99.0</percentage>
 <EnvModelPercentages>
  <percentage>100.0</percentage>
  <active>false</active>
  <firmwareCheckRequired>false</firmwareCheckRequired>
  <rebootImmediately>false</rebootImmediately>
  <lastKnownGood/>
  <intermediateVersion/>
  <firmwareVersions/>
  <name>123</name>
 </EnvModelPercentages>
 <EnvModelPercentages>
  <percentage>50.0</percentage>
  <active>true</active>
  <firmwareCheckRequired>true</firmwareCheckRequired>
  <rebootImmediately>true</rebootImmediately>
  <lastKnownGood>PR150BN_2.4p6s3_VBN_HYBsd</lastKnownGood>
  <intermediateVersion>PR150BN_2.3p7s1_PROD_HYBse</intermediateVersion>
  <firmwareVersions>
   <firmwareVersions>PR150BN_2.4p6s3_VBN_HYBsd</firmwareVersions>
   <firmwareVersions>PR150BN_2.4p8s3_VBN_HYBsd-signed</firmwareVersions>
   <firmwareVersions>PR150BN_2.3p7s1_PROD_HYBse</firmwareVersions>
  </firmwareVersions>
  <name>IV_6a</name>
 </EnvModelPercentages>
</PercentFilterWrapper>

Retrieve percent filter field values

GET http://<host>:<port>/queries/filters/percent?field=fieldName&applicationType={type}

...

Responce: 200 OK, 400 BAD REQUEST if applicationType is not valid

Request: http://localhost<host>:9091<port>/queries/filters/percent?field=fieldName

...

Percentage should be positive and within [0, 100],  

Request: 

http://localhost<host>:9091<port>/updates/filters/percent.json 

OR

http://localhost<host>:9091<port>/updates/filters/percent


JSON request

...

Responce: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/percentageBean


JSON response

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <id>4c2cea9e-c1be-4219-8f2a-70084f1cb648</id>
  <name>Percent Test 2</name>
  <active>false</active>
  <firmwareCheckRequired>false</firmwareCheckRequired>
  <rebootImmediately>false</rebootImmediately>
  <firmwareVersions/>
  <environment>envId</environment>
  <model>modelId</model>
  <distributions>
   <distributions>
    <configId>29ab0494-0ee9-406a-9189-a81598988a54</configId>
    <percentage>100.0</percentage>
   </distributions>
  </distributions>
 </item>
</ArrayList>

Retrive EnvModelPercentage by id

GET http://<host>:<port>/queries/percentageBean/id

...

Responce: 200 OK OR 404 if envModelPercentage is not found

Request: http://localhost<host>:9091<port>/queries/percentageBean/4c2cea9e-c1be-4219-8f2a-70084f1cb648

...

Responce: 200 OK, 404 NOT FOUND, 409 CONFLICT, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/percentageBean

Restrictions:

...

Responce: 200 OK, 404 NOT FOUND, 409 CONFLICT, 400 BAD REQUEST

 Request: http://localhost<host>:9091<port>/queries/percentageBean 

Restrictions:

...

Code Block
languagephp
themeConfluence
<PercentageBean>
 <id>4c2cea9e-c1be-4219-8f2a-70084f1cb648</id>
 <ttlMap/>
 <name>Percent Test 2</name>
 <active>false</active>
 <firmwareCheckRequired>false</firmwareCheckRequired>
 <rebootImmediately>false</rebootImmediately>
 <firmwareVersions/>
 <environment>envId</environment>
 <model>modelId</model>
 <distributions>
  <distributions>
   <configId>0c176c01-b4cf-4706-9e41-5118e30f68cb</configId>
   <percentage>100.0</percentage>
  </distributions>
 </distributions>
</PercentageBean>

Delete envModelPercentage

DELETE http://<host>:<port>/delete/percentageBean/id

...

Response: 204 NO CONTENT OR 404 NOT FOUND

Request example: http://localhost<host>:9091<port>/delete/percentageBean/testId

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/filters/time.json OR http://localhost<host>:9091<port>/queries/filters/time

JSON response

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/filters/time/xcc.td.json OR http://localhost<host>:9091<port>/queries/filters/time/xcc.td

...

Code Block
languagephp
themeConfluence
<TimeFilterWrapper>

    <id>cef2b340-2109-467e-a5d2-a70f0cddb432</id>

    <name>abc</name>

    <ipWhitelist>

        <id>0e277b6a-7d95-4421-b390-415b03de04b4</id>

        <name>60.70.80.90</name>

        <ipAddresses>

            <ipAddresses>60.70.80.90</ipAddresses>

        </ipAddresses>

    </ipWhitelist>

    <envModelWhitelist>

        <id>0f8110a3-4b60-489b-854e-c69e25b18abc</id>

        <environmentId>QA</environmentId>

        <modelId>SR150BNC</modelId>

    </envModelWhitelist>

    <neverBlockRebootDecoupled>true</neverBlockRebootDecoupled>

    <neverBlockHttpDownload>true</neverBlockHttpDownload>

    <startTime>01:00</startTime>

    <endTime>02:00</endTime>

    <localTime>true</localTime>

</TimeFilterWrapper>

Create/update time filter

If time filter is missing it will be being created, otherwise updated. For update operation id field is not needed.

...

Name should be unique

Request: http://localhost<host>:9091<port>/updates/filters/time.json OR http://localhost<host>:9091<port>/updates/filters/time

JSON request

...

Code Block
languagephp
themeConfluence
<TimeFilterWrapper>
    <id>cef2b340-2109-467e-a5d2-a70f0cddb432</id>
    <name>abc</name>
    <ipWhitelist>
        <id>0e277b6a-7d95-4421-b390-415b03de04b4</id>
        <name>60.70.80.90</name>
        <ipAddresses>
            <ipAddresses>60.70.80.90</ipAddresses>
        </ipAddresses>
    </ipWhitelist>
    <envModelWhitelist>
        <id>0f8110a3-4b60-489b-854e-c69e25b18abc</id>
        <environmentId>QA</environmentId>
        <modelId>SR150BNC</modelId>
    </envModelWhitelist>
    <neverBlockRebootDecoupled>true</neverBlockRebootDecoupled>
    <neverBlockHttpDownload>true</neverBlockHttpDownload>
    <startTime>01:00</startTime>
    <endTime>02:00</endTime>
    <localTime>true</localTime>
</TimeFilterWrapper>

Delete time filter by name

DELETE http://<host>:<port>/delete/filters/time/{timeFilterName}?applicationType={type}

...

Response: 204 NO CONTENT and message: Time Filter successfully deleted OR Filter doesn't exist with name: <filterName>

Request example: http://localhost<host>:9091<port>/delete/filters/time/name

...

Response: 200 OK

Request: http://localhost<host>:9091<port>/queries/environments OR http://localhost<host>:9091<port>/queries/environments.json

...

Code Block
languagephp
themeConfluence
[{"id":"DEV","description":"ff"},{"id":"TEST","description":"do not delete"}]

Retrieve environment by id

GET http://<host>:<port>/queries/environments/<environmentId>

...

Response: 200 OK; 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/environments/DEV OR http://localhost<host>:9091<port>/queries/environments/DEV.json

...

Code Block
languagephp
themeConfluence
<Environment>
 <id>DEV</id>
 <description>ff</description>
</Environment>

Create an environment

POST http://<host>:<port>/updates/environments

...

Environment name should be valid by pattern: ^[a-zA-Z0-9]+$, name should be unique

Request: http://localhost<host>:9091<port>/updates/environments OR http://localhost<host>:9091<port>/updates/environments.json

...

Code Block
languagephp
themeConfluence
{"id":"testName","description":"some description"}

Delete environment by id

DELETE http://<host>:<port>/delete/environments/<environmentId>

...

Environment should be not used

Request: http://localhost<host>:9091<port>/delete/environments/DEV

IP address group

...

Request: Request: http://localhost<host>:9091<port>/queries/ipAddressGroups OR http://localhost<host>:9091<port>/queries/ipAddressGroups.json

...

Response: 200 OK; 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/ipAddressGroups/byName/test/.json OR http://localhost<host>:9091<port>/queries/ipAddressGroups/byName/test/

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <id>2c184325-f9eb-4edc-85c3-5b6466fc3c5c</id>
  <name>test</name>
  <ipAddresses>
   <ipAddresses>192.11.11.11</ipAddresses>
  </ipAddresses>
 </item>
</ArrayList>

Retrieve an IP address group by IP

GET http://<host>:<port>/queries/ipAddressGroups/byIp/<ipAddressGroupIp>/

...

Response: 200 OK; 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/ipAddressGroups/byIp/192.11.11.121/.json OR http://localhost<host>:9091<port>/queries/ipAddressGroups/byIp/192.11.11.121/

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <id>2c184325-f9eb-4edc-85c3-5b6466fc3c5c</id>
  <name>test</name>
  <ipAddresses>
   <ipAddresses>192.11.11.11</ipAddresses>
  </ipAddresses>
 </item>
</ArrayList>

Create an IP address group

POST http://<host>:<port>/updates/ipAddressGroups

...

Name should be not empty and unique

Request: http://localhost<host>:9091<port>/updates/ipAddressGroups.json OR http://localhost<host>:9091<port>/updates/ipAddressGroups

XML request

...

Code Block
languagephp
themeConfluence
{"id":"2c184325-f9eb-4edc-85c3-5b6466fc3c5c","name":"test","ipAddresses":["192.11.11.11"]}

Add data to IP Address Group(dev in progress)

POST http://<host>:<port>/updates/ipAddressGroups/<ipAddressGroup_name>/addData

...

ipAddressGroup with current id should be exist, see restrictions for create operation

Request: http://localhost<host>:9091<port>/updates/ipAddressGroups/ipAddressGroup_name/addData.json OR http://localhost<host>:9091<port>/updates/ipAddressGroups/ipAddressGroup_name/addData

...

List contains IPs, which should be present in current Namespaced list, namespaced list should contain at least one IP address, and restrictions for create operation

Request: http://localhost<host>:9091<port>/updates/ipAddressGroups/ipAddressGroup_name/removeData.json OR http://localhost<host>:9091<port>/updates/ipAddressGroups/ipAddressGroup_name/removeData

...

Code Block
languagephp
themeConfluence
<StringListWrapper>
 <list>
  <list>1.1.1.1</list>
 </list>
</StringListWrapper>

Delete an IP address group by id

DELETE http://<host>:<port>/delete/ipAddressGroups/<ipAddressGroupId>

...

IP address group should be not used

Request: http://localhost<host>:9091<port>/delete/ipAddressGroups/607b315b-c744-4c43-87fa-51b17aa92b09

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/rules/macs.json OR http://localhost<host>:9091<port>/queries/rules/macs

JSON response

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <name>test</name>
  <macListRef>macs</macListRef>
  <targetedModelIds>
   <targetedModelIds>YETST</targetedModelIds>
  </targetedModelIds>
  <firmwareConfig>
   <id>b65962b5-1481-4eed-a010-2abfa8c3bbfd</id>
   <description>_-</description>
   <supportedModelIds>
    <supportedModelIds>YETST</supportedModelIds>
   </supportedModelIds>
   <firmwareFilename>_-</firmwareFilename>
   <firmwareVersion>_-</firmwareVersion>
  </firmwareConfig>
 </item>
</ArrayList>

Retrieve a mac rule list (v2)

GET http://<host>:<port>/queries/rules/macs?version=2&applicationType={type}

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/rules/macs.json?version=2 OR http://localhost<host>:9091<port>/queries/rules/macs?version=2

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <id>18542fe1-94f2-487c-8f41-9f20965648f5</id>
  <name>test</name>
  <macListRef>macs</macListRef>
  <targetedModelIds>
   <targetedModelIds>YETST</targetedModelIds>
  </targetedModelIds>
  <firmwareConfig>
   <id>b65962b5-1481-4eed-a010-2abfa8c3bbfd</id>
   <description>_-</description>
   <supportedModelIds>
    <supportedModelIds>YETST</supportedModelIds>
   </supportedModelIds>
   <firmwareFilename>_-</firmwareFilename>
   <firmwareVersion>_-</firmwareVersion>
  </firmwareConfig>
  <macList>
   <macList>AA:AA:AA:AA:AA:AA</macList>
  </macList>
 </item>
</ArrayList>

Retrieve mac rule by name (legacy)

GET http://<host>:<port>/queries/rules/macs/{macRuleName}?applicationType={type}

...

Response: 200 OK; 

Request: http://localhost<host>:9091<port>/queries/rules/macs/test.json OR http://localhost<host>:9091<port>/queries/rules/macs/test

JSON response

...

Response: 200 OK; 

Request: http://localhost<host>:9091<port>/queries/rules/macs/test.json?version=2 OR http://localhost<host>:9091<port>/queries/rules/macs/test?version=2

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/rules/macs/address/AA:AA:AA:AA:AA:AA.json OR http://localhost<host>:9091<port>/queries/rules/macs/address/AA:AA:AA:AA:AA:AA

...

 Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/rules/macs/address/AA:AA:AA:AA:AA:AA.json?version=2 OR http://localhost<host>:9091<port>/queries/rules/macs/address/AA:AA:AA:AA:AA:AA?version=2

...

Name, mac address list, model list, mac list, firmware configuration should be not empty, mac address list is never used in another rule, model list contain only existed model, firmware config should support given models

Request: http://localhost<host>:9091<port>/updates/rules/macs.json OR http://localhost<host>:9091<port>/updates/rules/macs

JSON request

...

Code Block
languagephp
themeConfluence
<MacRuleBeanWrapper>
 <id>18542fe1-94f2-487c-8f41-9f20965648f5</id>
 <name>test</name>
 <macListRef>macs</macListRef>
 <targetedModelIds>
  <targetedModelIds>YETST</targetedModelIds>
 </targetedModelIds>
 <firmwareConfig>
  <id>b65962b5-1481-4eed-a010-2abfa8c3bbfd</id>
  <description>_-</description>
  <supportedModelIds>
   <supportedModelIds>YETST</supportedModelIds>
  </supportedModelIds>
  <firmwareFilename>_-</firmwareFilename>
  <firmwareVersion>_-</firmwareVersion>
 </firmwareConfig>
 <macList>
  <macList>AA:AA:AA:AA:AA:AA</macList>
 </macList>
</MacRuleBeanWrapper>

Delete mac rule by name

DELETE http://<host>:<port>/delete/rules/macs/{macRuleName}?applicationType={type}

...

Response: 204 NO CONTENT and message: MacRule does'n exist OR MacRule deleted successfully, 400 BAD REQUEST

Request example: http://localhost<host>:9091<port>/delete/rules/macs/macRuleName

...

Response: 200 OK

Request: http://localhost<host>:9091<port>/queries/models.json OR http://localhost<host>:9091<port>/queries/models

JSON response

...

Response: 200 OK; 204 NO CONTENT

Request: http://localhost<host>:9091<port>/queries/models/YETST.json OR http://localhost<host>:9091<port>/queries/models/YETST

JSON response

...

Code Block
languagephp
themeConfluence
<Model>
 <id>YETST</id>
 <description></description>
</Model>

Create model 

POST http://<host>:<port>/updates/models

...

Model name should be unique and valid by pattern: ^[a-zA-Z0-9]+$ 

Request: http://localhost<host>:9091<port>/updates/models.json OR http://localhost<host>:9091<port>/updates/models

JSON request

...

Code Block
languagephp
themeConfluence
<Model>
 <id>YETST</id>
 <description></description>
</Model>

Update Model Description

PUT http://<host>:<port>/updates/models

Headers: Content-Type = application/json OR application/xml Accept = application/json OR application/xml

Response: 200 OK; 400 BAD REQUEST; 404 NOT FOUND, 500 INTERNAL SERVER ERROR

Request: http://localhost:9091/updates/models.json OR http://localhost:9091/updates/models

JSON Request

Code Block
languagephp
themeConfluence
{
  "id": "test",
  "description": "description update"
}


XML Request

Code Block
languagephp
themeConfluence
<Model><id>test</id><description>description update</description></Model>


Delete model by id

DELETE http://<host>:<port>/delete/models/<modelId>

...

Model should be not used in another places

Request: http://localhost<host>:9091<port>/delete/models/YETST

NamespacedList

...

Response: 200 OK

Request: http://localhost<host>:9091<port>/queries/nsLists.json OR http://localhost<host>:9091<port>/queries/nsLists

JSON response

...

Code Block
languagephp
themeConfluence
<ArrayList>
 <item>
  <id>macs</id>
  <data>
   <data>AA:AA:AA:AA:AA:AA</data>
  </data>
 </item>
</ArrayList>

Retrieve an NS list by id:

GET http://<host>:<port>/queries/nsLists/byId/<nsListId>

...

Response: 200 OK

Request: http://localhost<host>:9091<port>/queries/nsLists/byId/macs.json OR http://localhost<host>:9091<port>/queries/nsLists/byId/macs

...

Response: 200 OK

Request: http://localhost<host>:9091<port>/queries/nsLists/byMacPart/AA:AA.json OR http://localhost<host>:9091<port>/queries/nsLists/byMacPart/AA:AA

...

Code Block
languagephp
themeConfluence
<NamespacedList>
 <id>macs</id>
 <data>
  <data>AA:AA:AA:AA:AA:AA</data>
</data></NamespacedList>

Create a NS list

POST http://<host>:<port>/updates/nsLists

...

Name should be valid by pattern: ^[a-zA-Z0-9]+$, list data should be not empty and contain valid mac addresses, mac address should be used only in one NS list

Request: http://localhost<host>:9091<port>/updates/nsLists.json OR http://localhost<host>:9091<port>/updates/nsLists

JSON request

...

Code Block
languagephp
themeConfluence
<NamespacedList>
 <id>macs</id>
 <data>
  <data>AA:AA:AA:AA:AA:AA</data>
 </data>
</NamespacedList>

Add data to NS list

POST http://<host>:<port>/updates/nsLists/<nsListId>/addData

...

NS list with current id should be exist, see restrictions for create operation

Request: http://localhost<host>:9091<port>/updates/nsLists/listName/addData.json OR http://localhost<host>:9091<port>/updates/nsLists/listName/addData

...

Code Block
languagephp
themeConfluence
<StringListWrapper>
 <list>
  <list>11:22:33:44:55:66</list>
 </list>
</StringListWrapper>

Delete data from NS list

DELETE http://<host>:<port>/updates/nsLists/<nsListId>/removeData

...

List contains MACs, which should be present in current Namespaced list, namespaced list should contain at least one MAC address, and restrictions for create operation

Request: http://localhost<host>:9091<port>/updates/nsLists/listName/removeData.json OR http://localhost<host>:9091<port>/updates/nsLists/listName/removeData

...

Code Block
languagephp
themeConfluence
<StringListWrapper>
 <list>
  <list>11:22:33:44:55:66</list>
 </list>
</StringListWrapper>

Delete an NS list by id

DELETE http://<host>:<port>/delete/nsLists/<nsListId>

...

NS list should be not used in another places

Request: http://localhost<host>:9091<port>/delete/nsLists/listName.json OR http://localhost<host>:9091<port>/delete/nsLists/listName

RebootImmediately filter

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/filters/ri.json OR http://localhost<host>:9091<port>/queries/filters/ri

JSON response

...

Response: 200 OK, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/queries/filters/ri/testName.json OR http://localhost<host>:9091<port>/queries/filters/ri/testName

...

Name should be not empty, at least one of filter criteria should be specified, mac addresses should be valid

Request: http://localhost<host>:9091<port>/updates/filters/ri.json OR http://localhost<host>:9091<port>/updates/filters/ri

JSON request

...

Response: 204 NO CONTENT and message: Filter does't exist OR Successfully deleted, 400 BAD REQUEST

Request: http://localhost<host>:9091<port>/delete/filters/ri/testName

...

{"firmwareVersions":["PR150BN_2.1p5s2_VBN_HYBse","PXD01ANI_2.1p10s1_PROD_sdy"]}


FirmwareRuleTemplate


Retrieve filtered templates


GET http://<host>:<port>/firmwareruletemplate/filtered?name=MAC_RULE&key=someKey

Headers: Accept = application/json, Content-Type = application/json

Request params:

  1. Without params:
    Retrieve all firmware rule templates.
  2. 'name': 
    To filter templates by name.
  3. 'key':
    To filter by rule key
  4. 'value':
    to filter by rule value

Parameters could be combined: 

'?name=someName&value=testValue'


Import firmware rule templates


POST http://<host>:<port>/firmwareruletemplate/importAll

Headers: Accept = application/json

Content-Type = application/json


Request body is list of firmware rule templates:


Code Block
languagephp
themeConfluence
[
    {
        "id": "a1",
        "rule": {
            "negated": false,
            "condition": {
                "freeArg": {
                    "type": "STRING",
                    "name": "ipAddress"
                },
                "operation": "IS",
                "fixedArg": {
                    "bean": {
                        "value": {
                            "java.lang.String": ""
                        }
                    }
                }
            },
            "compoundParts": []
        },
        "applicableAction": {
            "type": ".RuleAction",
            "ttlMap": {},
            "actionType": "RULE_TEMPLATE",
            "active": true,
            "firmwareCheckRequired": false,
            "rebootImmediately": false
        },
        "priority": 15,
        "requiredFields": [],
        "byPassFilters": [],
        "editable": true
    }
]


Return list of firmware rule templates' ids which were imported or not:

Response body:

Code Block
languagephp
themeConfluence
{
    "NOT_IMPORTED": [],
    "IMPORTED": []
}

Response codes: 200, 400, 404, 409


FirmwareRule


Retrieve all firmware rules


GET http://<host>:<port>/firmwarerule Headers: Accept = application/json

Response body

Code Block
languagephp
themeConfluence
[
  {
    "id": "7bc69543-c33a-42c5-97dc-7c21ecf06cdb",
    "name": "testName",
    "rule": {
      "negated": false,
      "condition": {
        "freeArg": {
          "type": "STRING",
          "name": "eStbMac"
        },
        "operation": "IN_LIST",
        "fixedArg": {
          "bean": {
            "value": {
              "java.lang.String": "mac list"
            }
          }
        }
      }
    },
    "applicableAction": {
      "type": ".DefinePropertiesAction",
      "ttlMap": {},
      "actionType": "DEFINE_PROPERTIES",
      "properties": {
        "rebootImmediately": "true"
      },
      "byPassFilters": [],
      "activationFirmwareVersions": {}
    },
    "type": "RI_MACLIST",
    "active": true,
    "applicationType": "stb"
  }
]


Retrieve filtered firmware rules

GET http://<host>:<port>/firmwarerule/filtered?tepmlateId=TEST_ID&key=firmwareVersion

Headers: Accept = application/json, Content-Type = application/json

Request params:

'applicationType' param is required.

  1. 'name: 
     'name=someName'
    To filter templates by name.
  2. 'key':
    'key=someKey'
    To filter by rule key
  3. 'value':
    'value=someValue'
    to filter by rule value
  4. 'firmwareVersion':
    'firmwareVersion=testFirmwareVersion'
    to filter by firmware version
  5. 'templateId':
    'templateId=testTemplate'
    to filter by template
  6. 'applicationType':
    'applicationType=stb'
    to filter by application type

Parameters could be combined: 

'?applicationType=stb&value=someValue'


Import firmware rule

POST http://<host>:<port>/firmwarerule/importAll

Headers: Accept = application/json Content-Type = application/json

Request body is list of firmware rules:

Code Block
languagephp
themeConfluence
[
  {
    "id": "7bc69543-c33a-42c5-97dc-7c21ecf06cdb",
    "name": "testName",
    "rule": {
      "negated": false,
      "condition": {
        "freeArg": {
          "type": "STRING",
          "name": "eStbMac"
        },
        "operation": "IN_LIST",
        "fixedArg": {
          "bean": {
            "value": {
              "java.lang.String": "mac list"
            }
          }
        }
      }
    },
    "applicableAction": {
      "type": ".DefinePropertiesAction",
      "ttlMap": {},
      "actionType": "DEFINE_PROPERTIES",
      "properties": {
        "rebootImmediately": "true"
      },
      "byPassFilters": [],
      "activationFirmwareVersions": {}
    },
    "type": "RI_MACLIST",
    "active": true,
    "applicationType": "stb"
  }
]


Return list of imported and not imported firmware rules' names:

Response body:


Code Block
languagephp
themeConfluence
{
    "NOT_IMPORTED": [],
    "IMPORTED": ["testName"]
}


Response codes: 200, 400, 404, 409


Feature

Retrieve all features

GET http://<host>:<port>/feature

Headers: Accept = application/json

Response body

Code Block
languagephp
themeConfluence
[
  {
        "id": "27a9d55e-0f0c-4809-b171-8357613f0efa",
        "name": "name",
        "featureName": "featureName",
        "effectiveImmediate": false,
        "enable": false,
        "whitelisted": false,
        "configData": {
            "key1": "value1"
        },
        "whitelistProperty": {},
        "applicationType": "stb"
    }
]


Retrieve filtered features

GET http://<host>:<port>/feature/filtered?

Headers: Accept = application/json, Content-Type = application/json


Request params:

'APPLICATION_TYPE' param is required.

  1. NAME: 
    'NAME=someName'
    To filter features by name
  2. FEATURE_INSTANCE
    'FEATURE_INSTANCE=someInstance'
    To filter features by instance
  3. FREE_ARG:
    'FREE_ARG=someKey'
    To filter by property key
  4. FIXED_ARG:
    'FIXED_ARG=someValue'
    to filter by property value
  5. APPLICATION_TYPE:
    'APPLICATION_TYPE=stb'
    to filter by application type

Parameters could be combined: 

'?APPLICATION_TYPE=stb&FIXED_ARG=someValue'


Import feature


POST http://<host>:<port>/feature/importAll

Headers: Accept = application/json Content-Type = application/json

Request body is list of features:

Code Block
languagephp
themeConfluence
[
  {
        "id": "27a9d55e-0f0c-4809-b171-8357613f0efa",
        "name": "name",
        "featureInstance": "featureInstance",
        "effectiveImmediate": false,
        "enable": false,
        "whitelisted": false,
        "configData": {
            "key1": "value1"
        },
        "whitelistProperty": {},
        "applicationType": "stb"
    }
]

Return list of imported and not imported feature ID's:

Response body:

Code Block
languagephp
themeConfluence
{
    "NOT_IMPORTED": [],
    "IMPORTED": ["featureID"]
}

Response codes: 200, 400, 409


Create feature


POST http://<host>:<port>/feature

Headers: Accept = application/json Content-Type = application/json

Request body is feature json object

Code Block
languagephp
themeConfluence
{
	"id": "27a9d55e-0f0c-4809-b171-8357613f0efa",
    "name": "name",
    "featureInstance": "featureInstance",
    "effectiveImmediate": false,
    "enable": false,
    "whitelisted": false,
    "configData": {
        "key1": "value1"
    },
    "whitelistProperty": {},
    "applicationType": "stb"
}

Response codes: 201, 400, 409.

Response body: created feature.

Update feature


PUT http://<host>:<port>/feature

Headers: Accept = application/json Content-Type = application/json

Request body is feature json object


Code Block
languagephp
themeConfluence
{
	"id": "27a9d55e-0f0c-4809-b171-8357613f0efa",
    "name": "name",
    "featureInstance": "featureInstance",
    "effectiveImmediate": false,
    "enable": false,
    "whitelisted": false,
    "configData": {
        "key1": "value1"
    },
    "whitelistProperty": {},
    "applicationType": "stb"
}

Response codes: 201, 400, 404, 409.

Response body: created feature.

Delete feature

DELETE http://<host>:<port>/feature/{id}

Response codes: 204, 404, 409.


Feature Rule

Retrieve all feature rules

GET http://<host>:<port>/featurerule

Headers: Accept = application/json

Response body

Code Block
languagephp
themeConfluence
[
    {
        "id": "963b2b7c-d198-4c23-820a-b56ac809c333",
        "name": "instance_test",
        "rule": {
            "negated": false,
            "condition": {
                "freeArg": {
                    "type": "STRING",
                    "name": "testKey"
                },
                "operation": "IS",
                "fixedArg": {
                    "bean": {
                        "value": {
                            "java.lang.String": "testValue"
                        }
                    }
                }
            },
            "compoundParts": []
        },
        "priority": 1,
        "featureIds": [
            "27a9d55e-0f0c-4809-b171-8357613f0efa"
        ],
        "applicationType": "stb"
    }
]

Response codes: 200.

Retrieve filtered feature rules

GET http://<host>:<port>/featurerule/filtered?

Headers: Accept = application/json, Content-Type = application/json

Request params:

'APPLICATION_TYPE' param is required.

  1. NAME: 
    'NAME=ruleName'
    to filter feature rule by name
  2. FREE_ARG:
    'FREE_ARG=someKey'
    to filter by feature rule key
  3. FIXED_ARG:
    'FIXED_ARG=someValue'
    to filter by feature rule value
  4. FEATURE:
    'FEATURE=featureInstance'
    to filter by feature instance.
  5. APPLICATION_TYPE:
    'APPLICATION_TYPE=stb'
    to filter by application type

Parameters could be combined: 

'?APPLICATION_TYPE=stb&FIXED_ARG=someValue'

Import feature rule

If feature rule with provided id does not exist it is imported otherwise updated.

POST http://<host>:<port>/featurerule/importAll

Headers: Accept = application/json Content-Type = application/json

Request body is list of feature rules:

Code Block
languagephp
themeConfluence
[
	{
        "id": "963b2b7c-d198-4c23-820a-b56ac809c333",
        "name": "instance_test",
        "rule": {
            "negated": false,
            "condition": {
                "freeArg": {
                    "type": "STRING",
                    "name": "testKey"
                },
                "operation": "IS",
                "fixedArg": {
                    "bean": {
                        "value": {
                            "java.lang.String": "testValue"
                        }
                    }
                }
            },
            "compoundParts": []
        },
        "priority": 1,
        "featureIds": [
            "27a9d55e-0f0c-4809-b171-8357613f0efa"
        ],
        "applicationType": "stb"
	}
]

Return list of imported and not imported feature rule IDs:

Response body:


Code Block
languagephp
themeConfluence
{
    "NOT_IMPORTED": [],
    "IMPORTED": ["featureRuleId"]
}

Response codes: 200, 400, 404, 409


Create feature rule


POST http://<host>:<port>/featurerule

Headers: Accept = application/json Content-Type = application/json

Request body is feature rule json object

Code Block
languagephp
themeConfluence
{
    "id": "963b2b7c-d198-4c23-820a-b56ac809c333",
    "name": "instance_test",
    "rule": {
        "negated": false,
        "condition": {
            "freeArg": {
                "type": "STRING",
                "name": "testKey"
            },
            "operation": "IS",
            "fixedArg": {
                "bean": {
                    "value": {
                        "java.lang.String": "testValue"
                    }
                }
            }
        },
        "compoundParts": []
    },
    "priority": 1,
    "featureIds": [
        "27a9d55e-0f0c-4809-b171-8357613f0efa"
    ],
    "applicationType": "stb"
}

Response codes: 201, 400, 404, 409.

Response body: created feature rule.


Update feature rule


PUT http://<host>:<port>/featurerule

Headers: Accept = application/json Content-Type = application/json

Request body is feature rule json object

Code Block
languagephp
themeConfluence
{
    "id": "963b2b7c-d198-4c23-820a-b56ac809c333",
    "name": "instance_test",
    "rule": {
        "negated": false,
        "condition": {
            "freeArg": {
                "type": "STRING",
                "name": "testKey"
            },
            "operation": "IS",
            "fixedArg": {
                "bean": {
                    "value": {
                        "java.lang.String": "testValue"
                    }
                }
            }
        },
        "compoundParts": []
    },
    "priority": 1,
    "featureIds": [
        "27a9d55e-0f0c-4809-b171-8357613f0efa"
    ],
    "applicationType": "stb"
}

Response codes: 201, 400, 404, 409.

Response body: created feature rule.


Delete feature rule


DELETE http://<host>:<port>/featurerule/{id}

Response codes: 204, 404, 409.

Activation Minimum Version

Retrieve all activation minimum versions

GET http://<host>:<port>/amv

Headers: Accept = application/json

Response body

Code Block
languagephp
themeConfluence
[
	{
        "id": "42670af7-6ea2-485f-9aee-1fa5895d655b",
        "applicationType": "stb",
        "description": "Activation Version",
        "regularExpressions": [],
        "model": "MX011AN",
        "firmwareVersions": [
            "FIRMWARE_VERSION"
        ]
    }
]

Response codes: 200.


Retrieve filtered activation minimum versions


GET http://<host>:<port>/amv/filtered?

Headers: Accept = application/json, Content-Type = application/json


Request params:

'applicationType' param is required.

  1. DESCRIPTION: 
    'DESCRIPTION=description'
    to filter feature rule by description.
  2. MODEL:
    'MODEL=model'
    to filter by feature rule key
  3. PARTNER_ID:
    'PARTNER_ID=partnerId'
    to filter by feature rule value
  4. FIRMWARE_VERSION:
    'FIRMWARE_VERSION=firmwareVersion'
    to filter by feature name.
  5. REGULAR_EXPRESSION:
    'REGULAR_EXPRESSION=regularExpression'
  6. APPLICATION_TYPE:
    'APPLICATION_TYPE=stb'
    to filter by application type

Parameters could be combined: 

'?APPLICATION_TYPE=stb&MODEL=modelId'


Import activation version:

If activation minimum version with provided id does not exist it is imported otherwise updated.

POST http://<host>:<port>/amv/importAll

Headers: Accept = application/json Content-Type = application/json

Request body is list of activation minimum version:

Code Block
languagephp
themeConfluence
[
	{
        "id": "42670af7-6ea2-485f-9aee-1fa5895d655b",
        "applicationType": "stb",
        "description": "Activation Version",
        "regularExpressions": [],
        "model": "MX011AN",
        "firmwareVersions": [
            "FIRMWARE_VERSION"
        ]
    }
]

Return list of imported and not imported activation minimum version IDs:

Response body:


Code Block
languagephp
themeConfluence
{
    "NOT_IMPORTED": [],
    "IMPORTED": ["42670af7-6ea2-485f-9aee-1fa5895d655b"]
}

Response codes: 200, 400, 404, 409

Create activation minimum version

POST http://<host>:<port>/amv

Headers: Accept = application/json Content-Type = application/json

Request body is activation minimum version json object

Code Block
languagephp
themeConfluence
{
	"id": "42670af7-6ea2-485f-9aee-1fa5895d655b",
    "applicationType": "stb",
    "description": "Activation Version",
    "regularExpressions": [],
    "model": "MX011AN",
    "firmwareVersions": [
        "FIRMWARE_VERSION"
    ]
}

Response codes : 201, 400, 404, 409.

Response body: created activation minimum version.


Update activation minimum version


PUT http://<host>:<port>/amv Headers: Accept = application/json Content-Type = application/json

Request body is activation minimum version json object

Code Block
languagephp
themeConfluence
{
	"id": "42670af7-6ea2-485f-9aee-1fa5895d655b",
    "applicationType": "stb",
    "description": "Activation Version",
    "regularExpressions": [],
    "model": "MX011AN",
    "firmwareVersions": [
        "FIRMWARE_VERSION"
    ]
}

Response codes: 201, 400, 404, 409.

Response body: created activation minimum version.


Delete activation minimum version

DELETE http://<host>:<port>/amv/{id}

Response codes: 204, 404, 409.