Qualify Validation

We provide running your own Qualify Template on your output media with our QC service.

🚧

Media Format

Qualify Validation available only for mp4, cablelabs_mpegts, mainconcept_mxf, and mxf_op1a output formats. For qc_check format, You can use any single-bitrate source file.

❗️

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 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
        }
    }
}
ParameterDecriptionAllowed ValuesDefault Value
template_idQualify Template GUID.Stringnone
templateQualify Template name.
Deprected
Stringnone

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]"
    }
}
ParameterDescriptionAllowed ValuesDefault Value
templateQualify templateJSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.
none
projectProject name (e.g category)Stringnone
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]"
    }
}
ParameterDescriptionAllowed ValuesDefault Value
templateQualify templateJSON string for XML request and JSON object for JSON request.
For XML request it should be wrapped in <![CDATA[]]> tage.
none
projectProject name (e.g category)Stringnone
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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
template_idTemplate GUIDStringnone
template_name Template Name
Deprecated
Stringnone
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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
package_layoutQualify package layoutJSON 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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
package_layoutQualify package layoutJSON 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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
package_layout_idPackage Layout GUIDStringnone
package_layout_name Package Layout Name
Deprecated
Stringnone
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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
audio_layoutQualify audio layoutJSON 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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
audio_layoutQualify audio layoutJSON 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
    }
}
ParameterDescriptionAllowed ValuesDefault Value
audio_layout_idAudio Layout GUIDStringnone
audio_layout_name Audio Layout Name
Deprecated
Stringnone
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"
    }
}