SearchProductsParameters

        public class SearchProductsParameters
        {
            public ApiActiveStatusEnum? ActiveStatus { get; set; } = ApiActiveStatusEnum.All
            public int? ArticleNumberMax { get; set; }
            public int? ArticleNumberMin { get; set; }
            public string EtimClassIdentifier { get; set; }
            public DateTime? ExpiryDateFrom { get; set; }
            public DateTime? ExpiryDateTo   { get; set; }
            public ApiProductInfoLevelType? InfoLevel { get; set; }
            public DateTime? LastChanged { get; set; }
            public bool LastChangedOptionSearchGreaterThanOnly { get; set; }
            public string ManufacturerIdentifier { get; set; }
            public string Name { get; set; } 
            public int? ProductGroupId  { get; set; }           // Optional parameter
            public string ProductGroupIdentifier  { get; set; } // Optional parameter
            public string ProductGroupIdentifier { get; set; }
            public DateTime? RegistrationDateFrom { get; set; }
            public DateTime? RegistrationDateTo { get; set; }
            public int? TakeApproximately { get; set; }
        }
        
        public enum ApiActiveStatusEnum
        {
            Expired = -1,
            All = 0,
            Active = 1
        }
        
        public enum ApiProductInfoLevelType
        {
            Unknown = 0,
            ActiveNumber = 1,
            GtinEanNumber = 3,
            EnvironmentDocs = 5,
            NameAndProductPicture = 17,
            Package1 = 18
        }
        

Dateranges from and to

Rules for these parameters

The From-dates could be set with the time component to zero values. Like so: "2009-03-02T00:00:00"

The to-dates could be set with the time component to values greater than zero. Like so: "2009-03-02T23:59:59" If the time-part is all zero it is set to the max value for that day, that is the last millisecond.

TakeApproximately

Parameter TakeApproximately is used for splitting up huge search results into batches. The batches are based on products' ModifiedAt date. The client can continue to use the same pattern regularly for getting product updates.

If the parameter TakeApproximately is present:

The client is encouraged to use a progress indicator that points out ModifiedAt of the latest updated product.
After processing the returned products, the caller can forward it's progress indicator to products.Max(_=>_.ModifiedAt).
The progress indicator should be used as a parameter in the next API call as LastChanged.
NOTE! Remember to add 1ms, otherwise the same products will be returned.

Using parameter LastChangedOptionSearchGreaterThanOnly

This was added due to a restriction in SQL-server datetime precision for milliseconds in DateTime fields.

The ModifiedAt could be set with the milliseconds component Like so: "2009-03-02T23:59:59.001"

The returned batch should never exceed 20 000 products.

ProductGroupId and ProductGroupIdentifier

Either search by ProductGroupId or ProductGroupIdentifier.
Product Groups can be retreived with the method GetProductGroups in GlobalDataService