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
        }
    }
}
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"
    }
}