29 December 2022

Qualify QC Layout management and identifier change

  • Changed Qualify QC templates identifier param from name to id.
  • Added <project /> parameter for Qualify QC templates.
  • Added package and audio layouts management.
❗️

Template name as identifier

Prior to 7.22 release Qualify Template parameter name used as identifier, after 7.22 release template identifier changed to the unique GUID.
Template name still can be used as identifier but it's not recommended because now name parameter isn't unique e.g. it will address the first template with provided name.

<?xml version="1.0"?>
<query>
    <userid><<id>></userid> <!-- required-->
    <userkey><<key>></userkey> <!-- required-->
    <action>AddMedia</action>
    <source>[SourceFile|SourcePlaylist]</source><!-- required -->
    <format>
        <output>[qc_check|mp4|cablelabs_mpegts|mainconcept_mxf|mxf_op1a]</output><!-- required -->
        <qc> 
            <qc_qualify_validation>
                <template_id>[TemplateGUID]</template_id><!-- required -->
                <template>[TemplateName]</template><!-- optional, deprecated -->
            </qc_qualify_validation>
        </qc>
        <!-- format params -->
    </format>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "AddMedia", // required
        "source": "[SourceFile|SourcePlaylist]", // required
        "format": {
            "output": "[qc_check|mp4|cablelabs_mpegts|mainconcept_mxf|mxf_op1a]", // required
            "qc": {
                "qc_qualify_validation": {
                    "template_id": "[TemplateGUID]", // required
                    "template": "[TemplateName]" // optional, deprecated
                }
            }
            // format params
        }
    }
}

Parameter

Decription

Allowed Values

Default Value

template_id

Qualify Template GUID.

String

none

template

Qualify Template name.
Deprected

String

none

Qualify Report

Link to Qualify Report can be found in GetStatus response

<?xml version="1.0"?>
<report>
    <mediaID>[MediaID]</mediaID>
    <status>[QCStatus]</status>
    <externalReports>
        <externalReport>
            <testName>qc_qualify_validation</testName>
            <fileName>[FileName]</fileName>
            <ReportLinkJSON>[QualifyJSONReportURL]</ReportLinkJSON>
            <Result>[Success|Failure]</Result>
        </externalReport>
    </externalReports>
    <!-- report fields -->
</report>
{
    "report": {
        "mediaID": "[MediaID]",
        "status": "[QCStatus]",
        "externalReports": {
            "externalReport": [
                {
                    "testName": "qc_qualify_validation",
                    "fileName": "[FileName]",
                    "ReportLinkJSON": "[QualifyJSONReportURL]",
                    "Result": "[Success|Failure]"
                }
            ]
        }
        // report fields
    }
}

Qualify Templates Management

Create Template
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>SetQualifyTemplate</action> <!-- required-->
    <template><![CDATA[
{
    "id": "[TemplateGUID]", // optional 
    "created_at": "[TemplateCreatedDate]",
    "updated_at": "[TemplateUpdatedDate]",
    "name": "[TemplateName]",
    "tests": {
        [TestsList]
    },
    "package_layout": {
        "id": "[LayoutID]" // optional, new layout will be added if not provided
        // package_layout params
    },
    "audio_layout": {
        "id": "[LayoutID]" // optional, new layout will be added if not provided
        // audio_layout params
    }
}
]]></template> <!-- required-->
    <project>[TemplateProject]</project>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "SetQualifyTemplate", // required
        "template": {
            "id": "[TemplateGUID]", // optional
            "created_at": "[TemplateCreatedDate]",
            "updated_at": "[TemplateUpdatedDate]",
            "name": "[TemplateName]",
            "tests": {
                [TestsList]
            },
            "package_layout": {
                "id": "[LayoutID]" // optional, new layout will be added if not provided
                // package_layout params
            },
            "audio_layout": {
                "id": "[LayoutID]" // optional, new layout will be added if not provided
                // audio_layout params
            }
        }, // required
        "project": "[TemplateProject]"
    }
}

Parameter

Description

Allowed Values

Default Value

template

Qualify template

JSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.

none

project

Project name (e.g category)

String

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>setqualifytemplate</action>
    <status>Success</status>
    <id>[TemplateGUID]</id>
    <name>[TemplateName]</name>
    <template>added</template>
</response>
{
    "response": {
        "action": "setqualifytemplate",
        "status": "Success",
        "id": "[TemplateGUID]",
        "name": "[TemplateName]",
        "template": "added"
    }
}
List added templates
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>ListQualifyTemplates</action> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "ListQualifyTemplates" // required
    }
}
Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>listqualifytemplates</action>
    <status>Success</status>
    <result>
        <user_id><<id>></user_id>
        <templates>
            <template>
                <id>[TemplateGUID_1]</id>
                <name>[TemplateName_1]</name>
            </template>
            <template>
                <id>[TemplateGUID_2]</id>
                <name>[TemplateName_2]</name>
            </template>
            <!-- ... -->
            <template>
                <id>[TemplateGUID_N]</id>
                <name>[TemplateName_N]</name>
            </template>
        </templates>
    </result>
</response>
{
    "response": {
        "action": "listqualifytemplates",
        "status": "Success",
        "result": {
            "user_id": "<<id>>",
            "templates": [
                "template": [
                    {
                        "id": "[TemplateGUID_1]",
                        "name": "[TemplateName_1]"
                    },
                    {
                        "id": "[TemplateGUID_2]",
                        "name": "[TemplateName_2]"
                    },
                    // ...
                    {
                        "id": "[TemplateGUID_N]",
                        "name": "[TemplateName_N]"
                    },
                ]
            ]
        }
    }
}
Update Template
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>UpdateQualifyTemplate</action> <!-- required-->
    <template><![CDATA[
{
    "id": "[TemplateGUID]",  // required
    "created_at": "[TemplateCreatedDate]",
    "updated_at": "[TemplateUpdatedDate]",
    "name": "[TemplateName]",
    "tests": {
        [TestsList]
    },
    "package_layout": {
        "id": "[LayoutID]" // optional, new layout will be added if not provided
        // package_layout params
    },
    "audio_layout": {
        "id": "[LayoutID]" // optional, new layout will be added if not provided
        // audio_layout params
    }
}
]]></template> <!-- required-->
    <project>[TemplateProject]</project>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "UpdateQualifyTemplate", // required
        "template": {
            "id": "[TemplateGUID]", // required
            "created_at": "[TemplateCreatedDate]",
            "updated_at": "[TemplateUpdatedDate]",
            "name": "[TemplateName]",
            "tests": {
                [TestsList]
            },
            "package_layout": {
                "id": "[LayoutID]" // optional, new layout will be added if not provided
                // package_layout params
            },
            "audio_layout": {
                "id": "[LayoutID]" // optional, new layout will be added if not provided
                // audio_layout params
            }
        }, // required
        "project": "[TemplateProject]"
    }
}

Parameter

Description

Allowed Values

Default Value

template

Qualify template

JSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.

none

project

Project name (e.g category)

String

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>updatequalifytemplate</action>
    <status>Success</status>
    <id>[TemplateGUID]</id>
    <name>[TemplateName]</name>
    <template>updated</template>
</response>
{
    "response": {
        "action": "updatequalifytemplate",
        "status": "Success",
        "id": "[TemplateGUID]",
        "name": "[TemplateName]",
        "template": "updated"
    }
}
Remove Template
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>RemoveQualifyTemplate</action> <!-- required-->
    <template_id>[TemplateGUID]</template_id> <!-- required-->
    <template_name>[TemplateName]</template_name> <!-- optional, deprecated-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "RemoveQualifyTemplate", // required
        "template_id": "[TemplateGUID]", // required
        "template_name": "[TemplateName]" // optional, deprecated
    }
}

Parameter

Description

Allowed Values

Default Value

template_id

Template GUID

String

none

template_name

Template Name
Deprecated

String

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>removequalifytemplate</action>
    <id>[TemplateGUID]</id>
    <name>[TemplateName]</name>
    <template>removed</template>
</response>
{
    "response": {
        "action": "removequalifytemplate",
        "status": "Success",
        "id": "[TemplateGUID]",
        "name": "[TemplateName]",
        "template": "removed"
    }
}

Qualify Package Layouts Management

Create Package Layout
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>SetQualifyPackageLayout</action> <!-- required-->
    <package_layout><![CDATA[
{
    "id": "[PackageLayoutGUID]", // optional 
    "created_at": "[PackageLayoutCreatedDate]",
    "updated_at": "[PackageLayoutUpdatedDate]",
    "name": "[PackageLayoutName]"
    // layout params
}
]]></package_layout> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "SetQualifyPackageLayout", // required
        "package_layout": {
            "id": "[PackageLayoutGUID]", // optional
            "created_at": "[PackageLayoutCreatedDate]",
            "updated_at": "[PackageLayoutUpdatedDate]",
            "name": "[PackageLayoutName]"
            // layout params
        } // required
    }
}

Parameter

Description

Allowed Values

Default Value

package_layout

Qualify package layout

JSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>setqualifypackagelayout</action>
    <status>Success</status>
    <id>[PackageLayoutGUID]</id>
    <name>[PackageLayoutName]</name>
    <package_layout>added</package_layout>
</response>
{
    "response": {
        "action": "setqualifypackagelayout",
        "status": "Success",
        "id": "[PackageLayoutGUID]",
        "name": "[PackageLayoutName]",
        "package_layout": "added"
    }
}
List added package layouts
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>ListQualifyPackageLayouts</action> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "ListQualifyPackageLayouts" // required
    }
}
Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>listqualifypackagelayouts</action>
    <status>Success</status>
    <result>
        <user_id><<id>></user_id>
        <package_layouts>
            <package_layout>
                <id>[PackageLayoutGUID_1]</id>
                <name>[PackageLayoutName_1]</name>
            </package_layout>
            <package_layout>
                <id>[PackageLayoutGUID_2]</id>
                <name>[PackageLayoutName_2]</name>
            </package_layout>
            <!-- ... -->
            <package_layout>
                <id>[PackageLayoutGUID_N]</id>
                <name>[PackageLayoutName_N]</name>
            </package_layout>
        </package_layouts>
    </result>
</response>
{
    "response": {
        "action": "listqualifypackagelayouts",
        "status": "Success",
        "result": {
            "user_id": "<<id>>",
            "package_layouts": [
                "package_layout": [
                    {
                        "id": "[PackageLayoutGUID_1]",
                        "name": "[PackageLayoutName_1]"
                    },
                    {
                        "id": "[PackageLayoutGUID_2]",
                        "name": "[PackageLayoutName_2]"
                    },
                    // ...
                    {
                        "id": "[PackageLayoutGUID_N]",
                        "name": "[PackageLayoutName_N]"
                    },
                ]
            ]
        }
    }
}
Update Package Layout
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>UpdateQualifyPackageLayout</action> <!-- required-->
    <package_layout><![CDATA[
{
    "id": "[PackageLayoutGUID]",  // required
    "created_at": "[PackageLayoutCreatedDate]",
    "updated_at": "[PackageLayoutUpdatedDate]",
    "name": "[PackageLayoutName]",
    // layout params
}
]]></package_layout> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "UpdateQualifyPackageLayout", // required
        "package_layout": {
            "id": "[PackageLayoutGUID]", // required
            "created_at": "[PackageLayoutCreatedDate]",
            "updated_at": "[PackageLayoutUpdatedDate]",
            "name": "[PackageLayoutName]",
            // layout params
        } // required
    }
}

Parameter

Description

Allowed Values

Default Value

package_layout

Qualify package layout

JSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>updatequalifypackagelayout</action>
    <status>Success</status>
    <id>[PackageLayoutGUID]</id>
    <name>[PackageLayoutName]</name>
    <package_layout>updated</package_layout>
</response>
{
    "response": {
        "action": "updatequalifypackagelayout",
        "status": "Success",
        "id": "[PackageLayoutGUID]",
        "name": "[PackageLayoutName]",
        "package_layout": "updated"
    }
}
Remove Package Layout
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>RemoveQualifyPackageLayout</action> <!-- required-->
    <package_layout_id>[PackageLayoutGUID]</package_layout_id> <!-- required-->
    <package_layout_name>[PackageLayoutName]</package_layout_name> <!-- optional, deprecated-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "RemoveQualifyPackageLayout", // required
        "package_layout_id": "[PackageLayoutGUID]", // required
        "package_layout_name": "[PackageLayoutName]" // optional, deprecated
    }
}

Parameter

Description

Allowed Values

Default Value

package_layout_id

Package Layout GUID

String

none

package_layout_name

Package Layout Name
Deprecated

String

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>removequalifypackagelayout</action>
    <id>[PackageLayoutGUID]</id>
    <name>[PackageLayoutName]</name>
    <package_layout>removed</package_layout>
</response>
{
    "response": {
        "action": "removequalifypackagelayout",
        "status": "Success",
        "id": "[PackageLayoutGUID]",
        "name": "[PackageLayoutName]",
        "package_layout": "removed"
    }
}

Qualify Audio Layouts Management

Create Audio Layout
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>SetQualifyAudioLayout</action> <!-- required-->
    <audio_layout><![CDATA[
{
    "id": "[AudioLayoutGUID]", // optional 
    "created_at": "[AudioLayoutCreatedDate]",
    "updated_at": "[AudioLayoutUpdatedDate]",
    "name": "[AudioLayoutName]"
    "layout": [
        // layout params
    ]
}
]]></audio_layout> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "SetQualifyAudioLayout", // required
        "audio_layout": {
            "id": "[AudioLayoutGUID]", // optional
            "created_at": "[AudioLayoutCreatedDate]",
            "updated_at": "[AudioLayoutUpdatedDate]",
            "name": "[AudioLayoutName]"
            "layout": [
                // layout params
            ]
        } // required
    }
}

Parameter

Description

Allowed Values

Default Value

audio_layout

Qualify audio layout

JSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>setqualifyaudiolayout</action>
    <status>Success</status>
    <id>[AudioLayoutGUID]</id>
    <name>[AudioLayoutName]</name>
    <audio_layout>added</audio_layout>
</response>
{
    "response": {
        "action": "setqualifyaudiolayout",
        "status": "Success",
        "id": "[AudioLayoutGUID]",
        "name": "[AudioLayoutName]",
        "audio_layout": "added"
    }
}
List added audio layouts
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>ListQualifyAudioLayouts</action> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "ListQualifyAudioLayouts" // required
    }
}
Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>listqualifyaudiolayouts</action>
    <status>Success</status>
    <result>
        <user_id><<id>></user_id>
        <audio_layouts>
            <audio_layout>
                <id>[AudioLayoutGUID_1]</id>
                <name>[AudioLayoutName_1]</name>
            </audio_layout>
            <audio_layout>
                <id>[AudioLayoutGUID_2]</id>
                <name>[AudioLayoutName_2]</name>
            </audio_layout>
            <!-- ... -->
            <audio_layout>
                <id>[AudioLayoutGUID_N]</id>
                <name>[AudioLayoutName_N]</name>
            </audio_layout>
        </audio_layouts>
    </result>
</response>
{
    "response": {
        "action": "listqualifyaudiolayouts",
        "status": "Success",
        "result": {
            "user_id": "<<id>>",
            "audio_layouts": [
                "audio_layout": [
                    {
                        "id": "[AudioLayoutGUID_1]",
                        "name": "[AudioLayoutName_1]"
                    },
                    {
                        "id": "[AudioLayoutGUID_2]",
                        "name": "[AudioLayoutName_2]"
                    },
                    // ...
                    {
                        "id": "[AudioLayoutGUID_N]",
                        "name": "[AudioLayoutName_N]"
                    },
                ]
            ]
        }
    }
}
Update Audio Layout
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>UpdateQualifyAudioLayout</action> <!-- required-->
    <audio_layout><![CDATA[
{
    "id": "[AudioLayoutGUID]",  // required
    "created_at": "[AudioLayoutCreatedDate]",
    "updated_at": "[AudioLayoutUpdatedDate]",
    "name": "[AudioLayoutName]",
    "layout": [
        // layout params
    ]
}
]]></audio_layout> <!-- required-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "UpdateQualifyAudioLayout", // required
        "audio_layout": {
            "id": "[AudioLayoutGUID]", // required
            "created_at": "[AudioLayoutCreatedDate]",
            "updated_at": "[AudioLayoutUpdatedDate]",
            "name": "[AudioLayoutName]",
            "layout": [
                // layout params
            ]
        } // required
    }
}

Parameter

Description

Allowed Values

Default Value

audio_layout

Qualify audio layout

JSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>updatequalifyaudiolayout</action>
    <status>Success</status>
    <id>[AudioLayoutGUID]</id>
    <name>[AudioLayoutName]</name>
    <audio_layout>updated</audio_layout>
</response>
{
    "response": {
        "action": "updatequalifyaudiolayout",
        "status": "Success",
        "id": "[AudioLayoutGUID]",
        "name": "[AudioLayoutName]",
        "audio_layout": "updated"
    }
}
Remove Audio Layout
Request:
<?xml version="1.0" encoding="UTF-8"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required-->
    <action>RemoveQualifyAudioLayout</action> <!-- required-->
    <audio_layout_id>[AudioLayoutGUID]</audio_layout_id> <!-- required-->
    <audio_layout_name>[AudioLayoutName]</audio_layout_name> <!-- optional, deprecated-->
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "RemoveQualifyAudioLayout", // required
        "audio_layout_id": "[AudioLayoutGUID]", // required
        "audio_layout_name": "[AudioLayoutName]" // optional, deprecated
    }
}

Parameter

Description

Allowed Values

Default Value

audio_layout_id

Audio Layout GUID

String

none

audio_layout_name

Audio Layout Name
Deprecated

String

none

Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <action>removequalifyaudiolayout</action>
    <id>[AudioLayoutGUID]</id>
    <name>[AudioLayoutName]</name>
    <audio_layout>removed</audio_layout>
</response>
{
    "response": {
        "action": "removequalifyaudiolayout",
        "status": "Success",
        "id": "[AudioLayoutGUID]",
        "name": "[AudioLayoutName]",
        "audio_layout": "removed"
    }
}