# Product installs

Retrieve a list of technologies (and corresponding details) which a company has been detected to have used or 'installed'.

It's also possible to specify what fields from the API should be returned. By default, only some fields are returned.

Endpoint: POST /data-api/v1/company/installs
Security: authorization

## Request fields (application/json):

  - `fields` (array,null)
    List of fields to be selected.
    Enum: "product_id", "product_name", "product_description", "vendor_id", "vendor_name", "vendor_domain_name", "product_category_id", "product_category_level1_name", "product_category_level2_name", "product_category_level3_name", "product_category_level4_name", "product_category_level5_name", "product_attributes", "product_first_verified_date", "product_last_verified_date", "product_intensity", "product_locations", "country_code"

  - `filters` (object, required)
    Filter Product Installs by various criteria. Must provide either company_id OR company_ids, but not both.
    Example: {"company_id":"1698C53EBC888758570396E0334965C1","country_codes":{"ids":["US"],"inclusion_method":"ANY_PRESENT"},"product_attributes":{"ids":[222],"inclusion_method":"ANY_PRESENT"},"product_categories":{"ids":["319D067B229178F03BCFA1DA4AC4DEDE"],"inclusion_method":"ANY_PRESENT"},"products":{"ids":[814],"inclusion_method":"ANY_PRESENT"},"vendors":{"ids":[316],"inclusion_method":"ANY_PRESENT","product_count":{"max":10,"min":1}}}

  - `filters.company_id` (any)
    A unique hexadecimal identifier for the desired field.
    Example: "1698C53EBC888758570396E0334965C1"

  - `filters.company_ids` (array)
    Array of company IDs
    Example: ["1698C53EBC888758570396E0334965C1"]

  - `filters.country_codes` (object)
    Inclusion filter object (using string names as IDs)
    Example: {"ids":["CA","US"],"inclusion_method":"ANY_PRESENT"}

  - `filters.country_codes.ids` (array, required)
    Country Codes
    Example: ["CA","US"]

  - `filters.country_codes.inclusion_method` (string, required)
    Inclusion method for just ANY_PRESENT or NONE_PRESENT
    Enum: "ANY_PRESENT", "NONE_PRESENT"

  - `filters.product_attributes` (object)
    Filter by Product Attribute IDs
    Example: {"ids":[16994],"inclusion_method":"ANY_PRESENT"}

  - `filters.product_attributes.ids` (array, required)
    Numeric IDs
    Example: [16994]

  - `filters.product_attributes.inclusion_method` (string, required)
    Inclusion method for just ANY_PRESENT or NONE_PRESENT
    Enum: "ANY_PRESENT", "NONE_PRESENT"

  - `filters.product_categories` (object)
    Filter by Product Category IDs
    Example: {"ids":["1698C53EBC888758570396E0334965C1"],"inclusion_method":"ANY_PRESENT"}

  - `filters.product_categories.ids` (array, required)
    Hex Encoded IDs
    Example: ["1698C53EBC888758570396E0334965C1"]

  - `filters.product_categories.inclusion_method` (string, required)
    Inclusion method for just ANY_PRESENT or NONE_PRESENT
    Enum: "ANY_PRESENT", "NONE_PRESENT"

  - `filters.products` (object)
    Filter by Product IDs
    Example: {"ids":[16994],"inclusion_method":"ANY_PRESENT"}

  - `filters.products.ids` (array, required)
    Numeric IDs
    Example: [16994]

  - `filters.products.inclusion_method` (string, required)
    Inclusion method for just ANY_PRESENT or NONE_PRESENT
    Enum: "ANY_PRESENT", "NONE_PRESENT"

  - `filters.vendors` (object)
    Filter by Vendor IDs
    Example: {"ids":[16994],"inclusion_method":"ANY_PRESENT"}

  - `filters.vendors.ids` (array, required)
    Numeric IDs
    Example: [16994]

  - `filters.vendors.inclusion_method` (string, required)
    Inclusion method for just ANY_PRESENT or NONE_PRESENT
    Enum: "ANY_PRESENT", "NONE_PRESENT"

  - `limit` (integer)
    The number of records to return in the request.

  - `offset` (integer)
    Used for paginating records.

  - `sorts` (array)
    Example: [{"direction":"DESC","field":"product_id"}]

  - `sorts.direction` (string, required)
    Sort direction
    Enum: "ASC", "DESC"

  - `sorts.field` (string, required)
    Enum: "product_id", "product_first_verified_date", "product_last_verified_date", "product_intensity", "vendor_id"

## Response 200 fields (application/json):

  - `count` (integer)
    The number of installs at the company fitting the criteria.

  - `data` (array)

  - `data.product_attributes` (array)

  - `data.product_category_id` (string)

  - `data.product_category_level1_name` (string)

  - `data.product_category_level2_name` (string)

  - `data.product_category_level3_name` (string)

  - `data.product_category_level4_name` (string)

  - `data.product_category_level5_name` (string)

  - `data.product_description` (string)

  - `data.product_first_verified_date` (string)

  - `data.product_intensity` (integer)

  - `data.product_last_verified_date` (string)

  - `data.product_locations` (integer)

  - `data.vendor_domain_name` (string)

  - `data.vendor_id` (integer)

  - `data.vendor_name` (string)

  - `data.product_id` (integer)

  - `data.product_name` (string)

## Response 401 fields (application/json):

  - `errors` (array)

  - `errors.detail` (string, required)
    Example: "The token provided is not valid"

  - `errors.source` (string,null)

  - `errors.title` (string, required)
    Example: "Unauthorized"

## Response 404 fields (application/json):

  - `errors` (array)

  - `errors.detail` (null, required)

  - `errors.source` (null)

  - `errors.title` (string, required)
    Example: "Not Found"

## Response 422 fields (application/json):

  - `errors` (array, required)

  - `errors.detail` (string, required)
    Example: "null value where string expected"

  - `errors.source` (object, required)

  - `errors.source.pointer` (string, required)
    Example: "/data/attributes/petName"

  - `errors.title` (string, required)
    Example: "Invalid value"


