cap API allows subscribers to download cap data in files of either ASCII (fixed width), CSV or JSON format. These files can be downloaded via SOAP Web Services or through the Subscriber Website. A subscriber needs to use their subscriber id and password to gain access.
Whether you access our data in ASCII, CSV, JSON or through SQL Data Transfer, the data is structured and related identically. These relationships are defined in the diagram below.
Descriptions of the different data files / tables that are available.
Column Name | Data Type |
---|---|
CHL_PeriodCode | int |
CHL_ColorCode | int |
CHL_HoodCode | int |
Column Name | Data Type |
---|---|
CTL_PeriodCode | int |
CTL_ColorCode | int |
CTL_TrimCode | int |
The Color Trim and Hood Links dataset is used to define the possible combinations of Colors and Trims, and Colors and Hoods available on a vehicle.
For example, a vehicle might have optional metallic paint in various colors, and a range of leather upholstery options, but a buyer is unable to choose blue leather with red metallic paint.
The color, hood and trim codes are all option codes, and therefore link directly to NVDDictionaryOption. In addition, when these dictionary items are linked to NVDDictionaryCategory, the Field NVDDictionaryCategory.DC_CTH_Type can be used.
Column Name | Data Type |
---|---|
CTHP_PeriodCode | int |
CTHP_Id | int |
CTHP_EffectiveFrom | datetime |
CTHP_EffectiveTo | datetime |
Column Name | Data Type |
---|---|
DC_CatCode | int |
DC_Description | varchar |
DC_Type | char |
DC_Cth_Type | char |
DC_GenericASCII_Type | char |
Generic Descriptions are also categorised in a similar
way to Option descriptions. The table below is the
interim table which allows this link from:-
NVDDictionaryGeneric.DG_CatCode <-->
NVDDictionaryCategory.DC_CatCode
Column Name | Data Type |
---|---|
DG_GenericCode | int |
DG_ManLevel | int |
DG_CatCode | int |
DG_Description | varchar |
DG_LongDescription | varchar |
Column Name | Data Type |
---|---|
DGC_ColourCode | int |
DGC_Description | varchar |
Column Name | Data Type |
---|---|
DO_OptionCode | int |
DO_ManLevel | int |
DO_CatCode | int |
DO_Description | varchar |
DO_LongDescription | varchar |
DO_NonSpecificCostOption | bit |
Column Name | Data Type |
---|---|
FB_OptionCode | int |
FB_ManCode | int |
FB_Features | text |
FB_Benefits | text |
Column Name | Data Type |
---|---|
OGCL_OptionCatCode | int |
OGCL_GenericCatCode | int |
Column Name | Data Type |
---|---|
OGCL_OptionCode | int |
OGCL_GenericColourCode | int |
The CAP Option Dictionaries are designed to allow many different approaches to querying, depending on your specific requirements.
NVDDictionaryOption holds the descriptions for Selectable Options and Standard Equipment. Items which are Manufacturer specific use DO_ManLevel to contain the Manufacturer ID, if this is 0, the option is referred to as 'Common', or can be attached to many different manufacturers vehicles.
Options are grouped into Categories, using DO_CatCode, which refers to NVDDictionaryCategory. Examples of Option Categories are Paintwork, Interior Features etc.
Additionally, Options are associated with Generic descriptions (for example, many manufacturers might refer to various features using their own terminology. By referring to the Generic Description, you can normalise all of these, and this also allows you to do a like-for-like option comparison.
Column Name | Data Type |
---|---|
OGL_OptionCode | int |
OGL_GenericCode | int |
Column Name | Data Type |
---|---|
DT_TechCode | int |
DT_ManLevel | int |
DT_CatCode | int |
DT_Description | varchar |
DT_LongDescription | varchar |
DT_DataType | char |
DT_MinValue | float |
DT_MaxValue | float |
Column Name | Data Type |
---|---|
TDT_datatype | char |
TDT_Name | char |
TDT_IsNumeric | bit |
TDT_Precision | int |
Column Name | Data Type |
---|---|
DTL_LookupCode | int |
DTL_TechCode | int |
DTL_Description | varchar |
DTL_Value | varchar |
CAPs NVD Dataset is as up to date as possible, according to information released direct from the manufacturers.
Occasionally certain datasets for a given vehicle may be more recent than others, for example the set of options available on a vehicle may have been last updated 2 days ago, but the Technical data was last known to be correct 5 days ago.
NVDEditions table allows the user to identify when each dataset was last known to be correct and applicable. Note however that a historic date in NVDEditions does not imply the dataset is no longer correct, merely that it was last verified on that date.
Column Name | Data Type |
---|---|
ED_ID | int |
ED_CapCode_LastDeadline | datetime |
ED_Price_LastDeadline | datetime |
ED_Options_LastDeadline | datetime |
ED_Standard_LastDeadline | datetime |
ED_Technical_LastDeadline | datetime |
ED_Relationships_LastDeadline | datetime |
ED_CTHL_LastDeadline | datetime |
Column Name | Data Type |
---|---|
GS_Id | int |
GS_GenericCode | int |
GS_EffectiveFrom | datetime |
GS_EffectiveTo | datetime |
GS_Status | char |
This table holds the introduction and discontinuation dates for each vehicle and model year. Consistent with the rest of the system, if an EffectiveTo date is NULL in the database, it indicates that the data (in this case the model year) has not been discontinued and is therefore still current.
You must crossreference with NVDModelYear whenever you want to distinguish between current and discontinued vehicles.
Column Name | Data Type |
---|---|
MY_Id | int |
MY_EffectiveFrom | datetime |
MY_EffectiveTo | datetime |
MY_Ref | char |
MY_ImageID | int |
MY_ImageNotExactMatch | bit |
Vehicle options are split into two tables in the CAP Publish database. NVDOptions contains options which are selectable, and may or may not have a cost assosciated with them.
NVDStandardEquipment obviously holds standard equipment. These are never costed, and are never selectable.
To use an example, if a vehicle comes with a set of 16" alloys as standard, but has the option of upgrading to 17" alloys: Both sets of alloys would be defined in NVDOptions, because they are selectable. To indicate the 16" alloys come as default, the OPT_Default would be non zero.
The actual logic indicating that only one of those sets of alloys can be selected at any one time, would be defined in the Option Relationships dataset.
Column Name | Data Type |
---|---|
OPT_Id | int |
OPT_OptionCode | int |
OPT_EffectiveFrom | datetime |
OPT_EffectiveTo | datetime |
OPT_ModifiedDate | datetime |
OPT_Basic | money |
OPT_Vat | money |
OPT_Poa | bit |
OPT_Default | bit |
When an option defined in the Option dictionary represents more than one option it is referred to as a pack.
Pack definitions are defined as a period of time, during which a set of options are included in the pack.
The pack is an option item defined in NVDDictionaryOption, as specified by PP_PackCode, and contains all options defined in NVDPackContents for that period, where PC_OptionCode also refers to options in NVDDictionaryOption.
Column Name | Data Type |
---|---|
PC_PeriodCode | int |
PC_OptionCode | int |
Column Name | Data Type |
---|---|
PP_PeriodCode | int |
PP_PackCode | int |
PP_EffectiveFrom | datetime |
PP_EffectiveTo | datetime |
As a vehicles New Price is liable to change over time, the NVDPrices table records every one of these prices during a vehicles lifetime.
If a new price is still applicable for a vehicle, its EffectiveTo date will be NULL in the database. Obviously each vehicle can only have a maximum of one record where this is the case.
Throughout the CAP Publish database, any data relating to a vehicle will be keyed on the CAP ID, and the field name (for example PR_ID in the case of NVDPrices) will be used to store this.
Column Name | Data Type |
---|---|
PR_Id | int |
PR_EffectiveFrom | datetime |
PR_EffectiveTo | datetime |
PR_Basic | money |
PR_Vat | money |
PR_Delivery | money |
PR_ModifiedDate | datetime |
Column Name | Data Type |
---|---|
RI_RuleCode | int |
RI_OptionCode | int |
RI_IsPrimary | tinyint |
Option Relationships define any dependencies between possible option combinations on a vehicle. For example, clearly you can only choose one set of alloy wheels, but this dataset caters for more complex dependencies, as the examples below demonstrate. A set of relationships is defined as a period of time, for a given vehicle (specified by RP_ID). During this period, one or more rules are defined. The NVDRelationshipItems table indicates which options are affected by a given rule. Possible rule types (indicated in RR_RuleType):
'OO' - One Of
From the marked options, a maximum of one may be selected.
Example: You can only have one type of paintwork.
'RO' - Requires One Of
If the primary option is chosen, it must be accompanied by at least one of the non primary options in that rule.
Example: If sports suspension is chosen, one set of 17 inch alloys must also be chosen.
'RA - Requires All
If the primary option is chosen, it is accompanied by all the non primary options in that rule.
Example: If TV and Teletext reception is chosen, it must be accompanied by 'Sat nav + Monitor + Driver Info System'.
'NW' - Not With
If the primary option is chosen, none of the other marked options may be chosen.
Example: If Wood inlay is chosen, it cannot be accompanied by any cloth trim.
'IN' - Included In
The marked options are included in the price of the primary option, which is a pack.
Example: If 'Sat nav + Monitor + Driver Info System' is chosen, the seperate option of 'Drivers information system' is included in this
option and price.
'IO' - Include One Of
If the primary option is chosen, it must be accompanied by one none primary options. The selected none primary option will be included
at 0 cost. Example : If Convenience Pack is selected One Metallic Paint can also be selected at 0 cost.
Column Name | Data Type |
---|---|
RP_PeriodCode | int |
RP_Id | int |
RP_EffectiveFrom | smalldatetime |
RP_EffectiveTo | smalldatetime |
Column Name | Data Type |
---|---|
RR_RuleCode | int |
RR_PeriodCode | int |
RR_RuleType | char |
Column Name | Data Type |
---|---|
SE_Id | int |
SE_OptionCode | int |
SE_EffectiveFrom | datetime |
SE_EffectiveTo | datetime |
SE_ModifiedDate | datetime |
Each item of technical data on a vehicle is specified independently, with effective from and effective to dates. An EffectiveTo date of NULL indicates the item of data is still active for that vehicle.
Consistent with the rest of the CAP dictionaries, TechnicalData items are Categorised by linking DT_CatCode to NVDDictionaryCategory. Example Technical Categories are 'Performance', 'Safety' etc.
Since an item of Technical data might be a character string, or integer, floating point etc, DT_DataType indicates the data type used for this item. This also indicates which field in NVDTechnical the value can be found, although the string field is always populated regardless of the data type in use.
Some items of technical data are 'lookups'. Ie, they can only take one value from a set of predefined values. For lookup fields, the list of possible values are defined in NVDDictionaryTechnicalLookup, and linked to via TechCode.
Column Name | Data Type |
---|---|
TECH_Id | int |
TECH_TechCode | int |
TECH_EffectiveFrom | datetime |
TECH_EffectiveTo | datetime |
TECH_Value_Datetime | datetime |
TECH_Value_Float | float |
TECH_Value_String | varchar |
TECH_Value_Boolean | bit |
TECH_Value_Status | char |
TECH_ModifiedDate | datetime |