Tax Filing Service

<back to all web services

SearchProducts

SearchProductsSync

Represents a service to search for product data.

Requires Authentication
Required role:AdminRequired permission:CanAccess
The following routes are available for this service:
GET/sync/products/search
import java.math.*;
import java.util.*;
import net.servicestack.client.*;

public class dtos
{

    /**
    * Represents a service to search for product data.
    */
    @Api(Description="Represents a service to search for product data.")
    public static class SearchProducts extends SearchProductsBase
    {
        /**
        * The unique identifier of the account associated with the product.
        */
        @ApiMember(Description="The unique identifier of the account associated with the product.")
        public Integer productId = null;

        /**
        * The unique identifier of the account associated with the product.
        */
        @ApiMember(Description="The unique identifier of the account associated with the product.")
        public Integer accountId = null;

        /**
        * The name of the product.
        */
        @ApiMember(Description="The name of the product.")
        public String name = null;

        /**
        * Search by using the name of the product that starts with the specified value.
        */
        @ApiMember(Description="Search by using the name of the product that starts with the specified value.")
        public String nameStartsWith = null;

        /**
        * Search by using the name of the product that ends with the specified value.
        */
        @ApiMember(Description="Search by using the name of the product that ends with the specified value.")
        public String nameEndsWith = null;

        /**
        * Search by using the name of the product that contains the specified value.
        */
        @ApiMember(Description="Search by using the name of the product that contains the specified value.")
        public String nameContains = null;

        /**
        * The version of the product.
        */
        @ApiMember(Description="The version of the product.")
        public String version = null;

        /**
        * Search by using the version of the product that starts with the specified value.
        */
        @ApiMember(Description="Search by using the version of the product that starts with the specified value.")
        public String versionStartsWith = null;

        /**
        * Search by using the version of the product that ends with the specified value.
        */
        @ApiMember(Description="Search by using the version of the product that ends with the specified value.")
        public String versionEndsWith = null;

        /**
        * Search by using the version of the product that contains the specified value.
        */
        @ApiMember(Description="Search by using the version of the product that contains the specified value.")
        public String versionContains = null;

        /**
        * The description of the product.
        */
        @ApiMember(Description="The description of the product.")
        public String description = null;

        /**
        * Search by using the description of the product that starts with the specified value.
        */
        @ApiMember(Description="Search by using the description of the product that starts with the specified value.")
        public String descriptionStartsWith = null;

        /**
        * Search by using the description of the product that ends with the specified value.
        */
        @ApiMember(Description="Search by using the description of the product that ends with the specified value.")
        public String descriptionEndsWith = null;

        /**
        * Search by using the description of the product that contains the specified value.
        */
        @ApiMember(Description="Search by using the description of the product that contains the specified value.")
        public String descriptionContains = null;

        /**
        * Should the related orders of the account be included in the retrieved products?
        */
        @ApiMember(Description="Should the related orders of the account be included in the retrieved products?")
        public Boolean includeOrders = null;

        /**
        * Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. 
        */
        @ApiMember(Description="Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. ")
        public Integer skipOrders = null;

        /**
        * Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. 
        */
        @ApiMember(Description="Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. ")
        public Integer takeOrders = null;

        /**
        * The number of query results to skip.
        */
        @ApiMember(Description="The number of query results to skip.")
        public Integer skip = null;

        /**
        * The number of query results to include.
        */
        @ApiMember(Description="The number of query results to include.")
        public Integer take = null;
        
        public Integer getProductId() { return productId; }
        public SearchProducts setProductId(Integer value) { this.productId = value; return this; }
        public Integer getAccountId() { return accountId; }
        public SearchProducts setAccountId(Integer value) { this.accountId = value; return this; }
        public String getName() { return name; }
        public SearchProducts setName(String value) { this.name = value; return this; }
        public String getNameStartsWith() { return nameStartsWith; }
        public SearchProducts setNameStartsWith(String value) { this.nameStartsWith = value; return this; }
        public String getNameEndsWith() { return nameEndsWith; }
        public SearchProducts setNameEndsWith(String value) { this.nameEndsWith = value; return this; }
        public String getNameContains() { return nameContains; }
        public SearchProducts setNameContains(String value) { this.nameContains = value; return this; }
        public String getVersion() { return version; }
        public SearchProducts setVersion(String value) { this.version = value; return this; }
        public String getVersionStartsWith() { return versionStartsWith; }
        public SearchProducts setVersionStartsWith(String value) { this.versionStartsWith = value; return this; }
        public String getVersionEndsWith() { return versionEndsWith; }
        public SearchProducts setVersionEndsWith(String value) { this.versionEndsWith = value; return this; }
        public String getVersionContains() { return versionContains; }
        public SearchProducts setVersionContains(String value) { this.versionContains = value; return this; }
        public String getDescription() { return description; }
        public SearchProducts setDescription(String value) { this.description = value; return this; }
        public String getDescriptionStartsWith() { return descriptionStartsWith; }
        public SearchProducts setDescriptionStartsWith(String value) { this.descriptionStartsWith = value; return this; }
        public String getDescriptionEndsWith() { return descriptionEndsWith; }
        public SearchProducts setDescriptionEndsWith(String value) { this.descriptionEndsWith = value; return this; }
        public String getDescriptionContains() { return descriptionContains; }
        public SearchProducts setDescriptionContains(String value) { this.descriptionContains = value; return this; }
        public Boolean isIncludeOrders() { return includeOrders; }
        public SearchProducts setIncludeOrders(Boolean value) { this.includeOrders = value; return this; }
        public Integer getSkipOrders() { return skipOrders; }
        public SearchProducts setSkipOrders(Integer value) { this.skipOrders = value; return this; }
        public Integer getTakeOrders() { return takeOrders; }
        public SearchProducts setTakeOrders(Integer value) { this.takeOrders = value; return this; }
        public Integer getSkip() { return skip; }
        public SearchProducts setSkip(Integer value) { this.skip = value; return this; }
        public Integer getTake() { return take; }
        public SearchProducts setTake(Integer value) { this.take = value; return this; }
    }

    /**
    * Specifies a service to search for products.
    */
    @Api(Description="Specifies a service to search for products.")
    public static class SearchProductsBase extends PaginationBase implements IGet
    {
        /**
        * The unique identifier of the account associated with the product.
        */
        @ApiMember(Description="The unique identifier of the account associated with the product.")
        public Integer productId = null;

        /**
        * The unique identifier of the account associated with the product.
        */
        @ApiMember(Description="The unique identifier of the account associated with the product.")
        public Integer accountId = null;

        /**
        * The name of the product.
        */
        @ApiMember(Description="The name of the product.")
        public String name = null;

        /**
        * Search by using the name of the product that starts with the specified value.
        */
        @ApiMember(Description="Search by using the name of the product that starts with the specified value.")
        public String nameStartsWith = null;

        /**
        * Search by using the name of the product that ends with the specified value.
        */
        @ApiMember(Description="Search by using the name of the product that ends with the specified value.")
        public String nameEndsWith = null;

        /**
        * Search by using the name of the product that contains the specified value.
        */
        @ApiMember(Description="Search by using the name of the product that contains the specified value.")
        public String nameContains = null;

        /**
        * The version of the product.
        */
        @ApiMember(Description="The version of the product.")
        public String version = null;

        /**
        * Search by using the version of the product that starts with the specified value.
        */
        @ApiMember(Description="Search by using the version of the product that starts with the specified value.")
        public String versionStartsWith = null;

        /**
        * Search by using the version of the product that ends with the specified value.
        */
        @ApiMember(Description="Search by using the version of the product that ends with the specified value.")
        public String versionEndsWith = null;

        /**
        * Search by using the version of the product that contains the specified value.
        */
        @ApiMember(Description="Search by using the version of the product that contains the specified value.")
        public String versionContains = null;

        /**
        * The description of the product.
        */
        @ApiMember(Description="The description of the product.")
        public String description = null;

        /**
        * Search by using the description of the product that starts with the specified value.
        */
        @ApiMember(Description="Search by using the description of the product that starts with the specified value.")
        public String descriptionStartsWith = null;

        /**
        * Search by using the description of the product that ends with the specified value.
        */
        @ApiMember(Description="Search by using the description of the product that ends with the specified value.")
        public String descriptionEndsWith = null;

        /**
        * Search by using the description of the product that contains the specified value.
        */
        @ApiMember(Description="Search by using the description of the product that contains the specified value.")
        public String descriptionContains = null;

        /**
        * Should the related orders of the account be included in the retrieved products?
        */
        @ApiMember(Description="Should the related orders of the account be included in the retrieved products?")
        public Boolean includeOrders = null;

        /**
        * Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. 
        */
        @ApiMember(Description="Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. ")
        public Integer skipOrders = null;

        /**
        * Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. 
        */
        @ApiMember(Description="Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. ")
        public Integer takeOrders = null;

        /**
        * The number of query results to skip.
        */
        @ApiMember(Description="The number of query results to skip.")
        public Integer skip = null;

        /**
        * The number of query results to include.
        */
        @ApiMember(Description="The number of query results to include.")
        public Integer take = null;
        
        public Integer getProductId() { return productId; }
        public SearchProductsBase setProductId(Integer value) { this.productId = value; return this; }
        public Integer getAccountId() { return accountId; }
        public SearchProductsBase setAccountId(Integer value) { this.accountId = value; return this; }
        public String getName() { return name; }
        public SearchProductsBase setName(String value) { this.name = value; return this; }
        public String getNameStartsWith() { return nameStartsWith; }
        public SearchProductsBase setNameStartsWith(String value) { this.nameStartsWith = value; return this; }
        public String getNameEndsWith() { return nameEndsWith; }
        public SearchProductsBase setNameEndsWith(String value) { this.nameEndsWith = value; return this; }
        public String getNameContains() { return nameContains; }
        public SearchProductsBase setNameContains(String value) { this.nameContains = value; return this; }
        public String getVersion() { return version; }
        public SearchProductsBase setVersion(String value) { this.version = value; return this; }
        public String getVersionStartsWith() { return versionStartsWith; }
        public SearchProductsBase setVersionStartsWith(String value) { this.versionStartsWith = value; return this; }
        public String getVersionEndsWith() { return versionEndsWith; }
        public SearchProductsBase setVersionEndsWith(String value) { this.versionEndsWith = value; return this; }
        public String getVersionContains() { return versionContains; }
        public SearchProductsBase setVersionContains(String value) { this.versionContains = value; return this; }
        public String getDescription() { return description; }
        public SearchProductsBase setDescription(String value) { this.description = value; return this; }
        public String getDescriptionStartsWith() { return descriptionStartsWith; }
        public SearchProductsBase setDescriptionStartsWith(String value) { this.descriptionStartsWith = value; return this; }
        public String getDescriptionEndsWith() { return descriptionEndsWith; }
        public SearchProductsBase setDescriptionEndsWith(String value) { this.descriptionEndsWith = value; return this; }
        public String getDescriptionContains() { return descriptionContains; }
        public SearchProductsBase setDescriptionContains(String value) { this.descriptionContains = value; return this; }
        public Boolean isIncludeOrders() { return includeOrders; }
        public SearchProductsBase setIncludeOrders(Boolean value) { this.includeOrders = value; return this; }
        public Integer getSkipOrders() { return skipOrders; }
        public SearchProductsBase setSkipOrders(Integer value) { this.skipOrders = value; return this; }
        public Integer getTakeOrders() { return takeOrders; }
        public SearchProductsBase setTakeOrders(Integer value) { this.takeOrders = value; return this; }
        public Integer getSkip() { return skip; }
        public SearchProductsBase setSkip(Integer value) { this.skip = value; return this; }
        public Integer getTake() { return take; }
        public SearchProductsBase setTake(Integer value) { this.take = value; return this; }
    }

    /**
    * The number of query results to skip.
    */
    @Api(Description="The number of query results to skip.")
    public static class PaginationBase implements IPaginate
    {
        /**
        * The number of query results to skip.
        */
        @ApiMember(Description="The number of query results to skip.")
        public Integer skip = null;

        /**
        * The number of query results to include.
        */
        @ApiMember(Description="The number of query results to include.")
        public Integer take = null;
        
        public Integer getSkip() { return skip; }
        public PaginationBase setSkip(Integer value) { this.skip = value; return this; }
        public Integer getTake() { return take; }
        public PaginationBase setTake(Integer value) { this.take = value; return this; }
    }

    /**
    * Represents a query response that contains a structured error information and encapsulates products.
    */
    @Api(Description="Represents a query response that contains a structured error information and encapsulates products.")
    public static class ProductQueryResponse extends QueryResponse<Product>
    {
        /**
        * The dictionary of orders associated with each found product.
        */
        @ApiMember(Description="The dictionary of orders associated with each found product.")
        public HashMap<Integer,ArrayList<Order>> ordersMap = null;

        @DataMember(Order=1)
        public Integer offset = null;

        @DataMember(Order=2)
        public Integer total = null;

        @DataMember(Order=3)
        public ArrayList<Product> results = null;

        @DataMember(Order=4)
        public HashMap<String,String> meta = null;

        @DataMember(Order=5)
        public ResponseStatus responseStatus = null;
        
        public HashMap<Integer,ArrayList<Order>> getOrdersMap() { return ordersMap; }
        public ProductQueryResponse setOrdersMap(HashMap<Integer,ArrayList<Order>> value) { this.ordersMap = value; return this; }
        public Integer getOffset() { return offset; }
        public ProductQueryResponse setOffset(Integer value) { this.offset = value; return this; }
        public Integer getTotal() { return total; }
        public ProductQueryResponse setTotal(Integer value) { this.total = value; return this; }
        public ArrayList<Product> getResults() { return results; }
        public ProductQueryResponse setResults(ArrayList<Product> value) { this.results = value; return this; }
        public HashMap<String,String> getMeta() { return meta; }
        public ProductQueryResponse setMeta(HashMap<String,String> value) { this.meta = value; return this; }
        public ResponseStatus getResponseStatus() { return responseStatus; }
        public ProductQueryResponse setResponseStatus(ResponseStatus value) { this.responseStatus = value; return this; }
    }

    @DataContract
    public static class QueryResponse<T>
    {
        @DataMember(Order=1)
        public Integer offset = null;

        @DataMember(Order=2)
        public Integer total = null;

        @DataMember(Order=3)
        public ArrayList<T> results = null;

        @DataMember(Order=4)
        public HashMap<String,String> meta = null;

        @DataMember(Order=5)
        public ResponseStatus responseStatus = null;
        
        public Integer getOffset() { return offset; }
        public QueryResponse<T> setOffset(Integer value) { this.offset = value; return this; }
        public Integer getTotal() { return total; }
        public QueryResponse<T> setTotal(Integer value) { this.total = value; return this; }
        public ArrayList<T> getResults() { return results; }
        public QueryResponse<T> setResults(ArrayList<T> value) { this.results = value; return this; }
        public HashMap<String,String> getMeta() { return meta; }
        public QueryResponse<T> setMeta(HashMap<String,String> value) { this.meta = value; return this; }
        public ResponseStatus getResponseStatus() { return responseStatus; }
        public QueryResponse<T> setResponseStatus(ResponseStatus value) { this.responseStatus = value; return this; }
    }

    /**
    * Represents a product.
    */
    @Api(Description="Represents a product.")
    public static class Product implements IHasName
    {
        /**
        * The unique identifier of the product.
        */
        @ApiMember(Description="The unique identifier of the product.", IsRequired=true)
        public Integer id = null;

        /**
        * The position of this instance in a collection of 'Product' instances
        */
        @ApiMember(Description="The position of this instance in a collection of 'Product' instances", IsRequired=true)
        public Integer index = null;

        /**
        * The name of the product.
        */
        @ApiMember(Description="The name of the product.", IsRequired=true)
        @Validate(Validator="NotEmpty")
        public String name = null;

        /**
        * The version of the product.
        */
        @ApiMember(Description="The version of the product.", IsRequired=true)
        @Validate(Validator="NotEmpty")
        public String version = null;

        /**
        * The version of the product.
        */
        @ApiMember(Description="The version of the product.")
        public String description = null;

        /**
        * Tags associated with the product.
        */
        @ApiMember(Description="Tags associated with the product.")
        public ArrayList<String> tags = null;
        
        public Integer getId() { return id; }
        public Product setId(Integer value) { this.id = value; return this; }
        public Integer getIndex() { return index; }
        public Product setIndex(Integer value) { this.index = value; return this; }
        public String getName() { return name; }
        public Product setName(String value) { this.name = value; return this; }
        public String getVersion() { return version; }
        public Product setVersion(String value) { this.version = value; return this; }
        public String getDescription() { return description; }
        public Product setDescription(String value) { this.description = value; return this; }
        public ArrayList<String> getTags() { return tags; }
        public Product setTags(ArrayList<String> value) { this.tags = value; return this; }
    }

}

Java SearchProducts DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /sync/products/search HTTP/1.1 
Host: taxfiling.pwc.de 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ordersMap: 
	{
		0: 
		[
			{
				id: 0,
				productId: 0,
				accountId: 0,
				name: String,
				serviceName: String,
				requestTimestamp: 0001-01-01,
				responseTimestamp: 0001-01-01,
				requestUri: String,
				requestHttpMethod: String,
				requestDuration: PT0S,
				responseStatusCode: Continue,
				clientIPAddress: String,
				unitOfMeasurement: String,
				processType: String,
				dataType: String,
				dataName: String,
				creationDate: 0001-01-01,
				expiryDate: 0001-01-01,
				isTest: False
			}
		]
	},
	offset: 0,
	total: 0,
	results: 
	[
		{
			id: 0,
			index: 0,
			name: String,
			version: String,
			description: String,
			tags: 
			[
				String
			]
		}
	],
	meta: 
	{
		String: String
	},
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}