Language selection

Search

AIRS Verification Service: Technical manual

On this page

1.0 Overview

The AIRS Verification Service is a web service designed to validate multiple AIRS commodities in a single request. Information is sent to the service in an XML format, where it is validated and a response message is generated.

2.0 Service Descriptors

Access the service WSDL description.

The WSDL provides the service description in an XML format which can be used by programmers to create an interface to the service.

The schemas which define the XML format used for requests and response are available at:

Validation request schema

OGD/PARS

IID

Validation response schema

Access the validation response schema

3.0 Service Call

The service has a single callable method: "ValidateRequirements". This method takes 4 parameters, all are required.

xmlContent

A byte array containing the XML content to be validated. The content must be valid according to the published schema identified by the schemaVersion parameter.

schemaVersion

A string indicating the version of the schema being used.

For OGD PARS/RMD requests use 1.0

For IID requests use 2.0

key

A string containing a broker-specific identifier assigned by CFIA. This key must be valid for the importer/broker to access the system.

lang

An integer indicating the language in which the service should provide error messages: 1=English, 2=French

3.1 Restrictions

Note

Every commodity in the request counts towards the 400 maximum, so it is recommended to pre-process the request to remove duplicates.

3.2 Request Format

3.2.1 OGD PARS/RMD

To submit for Other Government Department Pre Arrival Release System/Release on Minimum DocumentationOGD PARS/RMD, provide the schemaVersion parameter as 1.0. The request XML must be valid according to the published schema vr_in_1.0.xsd, otherwise the system will return a parsing error. The request schema's root element is ValidateTransaction. Within this element there can be to 1 to 999 groups of commodities. Each group can contain 1 to 999 commodities, though the service is capped at a specified maximum number of commodities across all groups (see Restrictions). A commodity element must have an HSNumber at minimum. An example follows.

Element descriptions:

ValidateTransaction

Root node, required.

CommodityGroup

Used to define groups of commodities. This element exists to allow systems to group sets of commodities for validation. An ID attribute (string) is required so that the response can show an error count per group. At least one group is required.

Commodity

This element defines an AIRS commodity. It requires an ID attribute (string) so that if any errors are present the response will associate the error with the provided ID. At least one commodity is required per group.

HSNumber

The "HS number" or "HS code". The AIRS web application provides this as a 6-character code, though the field accepts up to 10 characters to allow for CBSA tariff codes (only the first 6 characters are read). The HSNumber must be provided for each commodity.

RequirementId

The requirement number determined by the AIRS web application. This field may not always be necessary.

RequirementVersion

The requirement's version determined by the AIRS web application. This field may not always be necessary.

AirsCode

The OGD extension or "AIRS code". This code is always 6 characters long (e.g. 940000). This field may not always be necessary.

DestinationProvince

The 2-character code which identifies the destination province (e.g. ON, BC). This field may not always be necessary.

OriginCountry

The 2-character code for the commodity's country of origin (e.g. US, NZ). This field may not always be necessary.

OriginState

The 2-character code for the commodity's state of origin; this field is for US commodities only (e.g. NY, TN). This field may not always be necessary.

Enduse

The 2 or 3-character code for the end use (e.g. 01, 14). This field may not always be necessary.

Miscellaneous

The 1 or 2 or 3-character code for the miscellaneous field (e.g. 01, 34). This field may not always be necessary.

Registration

This element is repeatable and is used to identify the registrations which belong to the requirement for this commodity. The element has no data; the code for the registration is identified through the registrationId attribute.

An example XML request. This request has just 2 groups and 3 commodities.

<?xml version="1.0"?>
<ValidateTransaction>
<CommodityGroup commodityGroupId="A1">
<Commodity commodityId="GGL023--0001">
<HSNumber>020500</HSNumber>
<RequirementId>21247</RequirementId>
<RequirementVersion>14</RequirementVersion>
<AirsCode>512700</AirsCode>
<OriginCountry>US</OriginCountry>
<OriginState>TN</OriginState>
<Enduse>65</Enduse>
<Miscellaneous>34</Miscellaneous>
<Registration registrationId="14" />
<Registration registrationId="28" />
<Registration registrationId="40" />
<Registration registrationId="98" />
<Registration registrationId="99" />
<Registration registrationId="102" />
<Registration registrationId="104" />
<Registration registrationId="105" />
<Registration registrationId="120" />
<Registration registrationId="132" />
<Registration registrationId="141" />
<Registration registrationId="318" />
</Commodity>
</CommodityGroup>
<CommodityGroup commodityGroupId="A2">
<Commodity commodityId="GHL030--0001">
<HSNumber>960000</HSNumber>
</Commodity>
<Commodity commodityId="GHL030--0002">
<HSNumber>920000</HSNumber>
</Commodity>
</CommodityGroup>
</ValidateTransaction>

In the above example, the first commodity has requirement #21247 with version 14. This is a regulated commodity which requires the selection of an origin, enduse, and miscellaneous code. The registrations IDs listed are those indicated by the AIRS web application 'OGD PARS/RMD' page (in this example, one registration is missing). The commodities in the second group are unregulated commodities and therefore have no associated AIRS attributes or registrations.

Other elements which are not shown in this example are:

<DestinationProvince>BC</DestinationProvince>

3.2.2 Integrated Import Declaration (IID)

To submit for IID, provide the schemaVersion parameter as 2.0. The request XML must be valid according to the published schema vr_in_2.0.xsd, otherwise the system will return a parsing error. The request schema's root element is ValidateIIDTransaction. Within this element there can be to 1 to 999 groups of commodities. Each group can contain 1 to 999 commodities, though the service is capped at a specified maximum number of commodities across all groups (see Restrictions). A commodity element must have an HSNumber at minimum. An example follows.

Element descriptions:

ValidateIIDTransaction

Root node, required.

CommodityGroup

This element defines an AIRS commodity. It requires an ID attribute (string) so that if any errors are present the response will associate the error with the provided ID. At least one commodity is required per group.

HSNumber

The "HS number" or "HS code". The AIRS web application provides this as a 6-character code, though the field accepts up to 10 characters to allow for CBSA tariff codes (only the first 6 characters are read). The HSNumber must be provided for each commodity.

AirsCode

The OGD extension or "AIRS code". This code is always 6 characters long (e.g. 940000). This field may not always be necessary.

DeliveryPartyProvince

The 2-character code which identifies the destination province (e.g. ON, BC). This field may not always be necessary.

OriginCountry

The 2-character code for the commodity's country of origin (e.g. US, NZ). This field may not always be necessary.

OriginState

The 2-character code for the commodity's state of origin; this field is for US commodities only (e.g. NY, TN). This field may not always be necessary.

Enduse

The 1 or 2 or 3-character code for the miscellaneous field (e.g. 01, 34). This field may not always be necessary.

Miscellaneous

Issues not referred to the OFSR: Area ED or delegate
Issues referred to the OFSR: ED-OFSR or delegate
Other: Incident Commander

Registrations
MaterializedLpco

This element is repeatable and is used to identify materialized LPCOs - documents which require an electronic version. The element has no data; the code for the LPCO is identified through the registrationId attribute.

DematerializedLpco

This element is repeatable and is used to identify dematerialized LPCOs - documents which do not require an electronic version. The element has no data; the code for the LPCO is identified through the registrationId attribute.

Registration

This element is repeatable and is used to identify registrations. The element has no data; the code for the registration is identified through the registrationId attribute.

An example XML request. This request has 2 groups and 3 commodities.

<?xml version="1.0"?>
<ValidateIIDTransaction>
<CommodityGroup commodityGroupId="A1">
<Commodity commodityId="GGL023--0001">
<HSNumber>020500</HSNumber>
<AirsCode>512700</AirsCode>
<OriginCountry>US</OriginCountry>
<OriginState>TN</OriginState>
<Enduse>65</Enduse>
<Miscellaneous>34</Miscellaneous>
<Registrations>
<MaterializedLpco registrationId="14" />
<MaterializedLpco registrationId="28" />
<MaterializedLpco registrationId="40" />
<Registration registrationId="98" />
<Registration registrationId="99" />
<Registration registrationId="102" />
<Registration registrationId="104" />
<Registration registrationId="105" />
<Registration registrationId="118" />
<Registration registrationId="120" />
<Registration registrationId="132" />
<Registration registrationId="141" />
<Registration registrationId="318" />
</Registrations>
</Commodity>
</CommodityGroup>
<CommodityGroup commodityGroupId="A2">
<Commodity commodityId="GHL030--0001">
<HSNumber>960000</HSNumber>
</Commodity>
<Commodity commodityId="GHL030--0002">
<HSNumber>920000</HSNumber>
</Commodity>
</CommodityGroup>
</ValidateIIDTransaction>

In the above example, the commodity is a regulated commodity which requires the selection of an origin, enduse, and miscellaneous code. The registrations IDs listed are those indicated by the AIRS web application 'IID' page (in this example, two registrations are missing). The commodities in the second group are unregulated commodities and therefore have no associated AIRS attributes or registrations.

Other potential elements which are not shown in this example are:

<DeliveryPartyProvince>BC</DeliveryPartyProvince>
<DematerializedLpco registrationId="14"/>

3.3 Validation

Validation of the commodities will only occur if the XML format is valid. The length of time a request takes will vary depending on the number of commodities in the request. A large request (300+ commodities) may take a minute or more. Once validated, the result is returned as an XML document.

3.4 Response Format

If the above example XML message was passed to the AIRS Verification Service with a valid webkey, the response would be as follows. (Note: while the format will not change, AIRS requirements are subject to change over time and therefore this example may not return the same result).

<ValidateTransactionResult errorCount="1">
<CommodityGroup commodityGroupId="A1" errorCount="1">
<Commodity commodityId="GGL023--0001">
<Error>MISSING OR INVALID REGISTRATION NUMBER</Error>
</Commodity>
</CommodityGroup>
<CommodityGroup commodityGroupId="A2" errorCount="0" />
</ValidateTransactionResult>

There was 1 error in the entire request, which is indicated in the top level element <ValidateTransactionResult errorCount="1">. The number of errors per group are displayed in the header for each group. If a group contains no commodities with errors, there will be nothing inside the CommodityGroup element. If the group does have an error, the commodity in error will be listed with an error element containing a message which indicates the cause of the error. In this example, the first commodity did not have the correct set of registrations.

3.5 SOAP Errors

AIRS-related errors are returned within the response XML if the request was otherwise valid. An invalid request will result in SOAP fault being returned by the service. The DETAIL portion of the soap fault contains the following information:

ErrorCode

A code identifying the type of error:

ERR001 = system error

ERR002 = invalid xml

ERR003 = empty xml content

ERR004 = unsupported schema version

ERR005 = invalid key

ERR006 = request too large (too many commodities)

ErrorMessage

A general error message which describes the error type.

ErrorDetail

Specific details about the error.

RequestId

An identifier associated with the request.

The following is an example of the detail portion of the soap fault message:

<ServiceFaultContract xmlns=http://cfia-airs.inspection.gc.ca xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>ERR002</ErrorCode>
<ErrorMessage>The XML is invalid.</ErrorMessage>
<ErrorDetail>Data at the root level is invalid. Line 1, position 1.</ErrorDetail>
<RequestId>R#000005</RequestId>
</ServiceFaultContract>

In cases where the request XML was not valid according to the schema, parser errors are returned in the ErrorDetail field (Note: the detail portion of the error message is only available in English).

Explanation of Error codes:

ERR001 (system error)

An unknown error occurred. Try the request again later. If this problem persists, contact the system administrator.

ERR002 (invalid xml)

The xmlContent parameter was not valid according to the schema. Specific parser errors will be available in the ErrorDetail.

ERR003 (empty xml content)

The xmlContent parameter did not have any data.

ERR004 (unsupported schema version)

The schemaVersion parameter is not valid.

ERR005 (invalid key)

The key parameter is not a valid web key.

ERR006 (request too large)

The request contained more than the maximum allowed number of commodities. The ErrorDetail will indicate the maximum allowed.

Date modified: