Required role: | Admin | Required permission: | CanAccess |
GET | /async/products/search |
---|
"use strict";
export class PaginationBase {
/** @param {{skip?:number,take?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {?number}
* @description The number of query results to skip. */
skip;
/**
* @type {?number}
* @description The number of query results to include. */
take;
}
export class SearchProductsBase extends PaginationBase {
/** @param {{productId?:number,accountId?:number,name?:string,nameStartsWith?:string,nameEndsWith?:string,nameContains?:string,version?:string,versionStartsWith?:string,versionEndsWith?:string,versionContains?:string,description?:string,descriptionStartsWith?:string,descriptionEndsWith?:string,descriptionContains?:string,includeOrders?:boolean,skipOrders?:number,takeOrders?:number,skip?:number,take?:number,skip?:number,take?:number}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/**
* @type {?number}
* @description The unique identifier of the account associated with the product. */
productId;
/**
* @type {?number}
* @description The unique identifier of the account associated with the product. */
accountId;
/**
* @type {?string}
* @description The name of the product. */
name;
/**
* @type {?string}
* @description Search by using the name of the product that starts with the specified value. */
nameStartsWith;
/**
* @type {?string}
* @description Search by using the name of the product that ends with the specified value. */
nameEndsWith;
/**
* @type {?string}
* @description Search by using the name of the product that contains the specified value. */
nameContains;
/**
* @type {?string}
* @description The version of the product. */
version;
/**
* @type {?string}
* @description Search by using the version of the product that starts with the specified value. */
versionStartsWith;
/**
* @type {?string}
* @description Search by using the version of the product that ends with the specified value. */
versionEndsWith;
/**
* @type {?string}
* @description Search by using the version of the product that contains the specified value. */
versionContains;
/**
* @type {?string}
* @description The description of the product. */
description;
/**
* @type {?string}
* @description Search by using the description of the product that starts with the specified value. */
descriptionStartsWith;
/**
* @type {?string}
* @description Search by using the description of the product that ends with the specified value. */
descriptionEndsWith;
/**
* @type {?string}
* @description Search by using the description of the product that contains the specified value. */
descriptionContains;
/**
* @type {?boolean}
* @description Should the related orders of the account be included in the retrieved products? */
includeOrders;
/**
* @type {?number}
* @description Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. */
skipOrders;
/**
* @type {?number}
* @description Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. */
takeOrders;
/**
* @type {?number}
* @description The number of query results to skip. */
skip;
/**
* @type {?number}
* @description The number of query results to include. */
take;
}
export class Product {
/** @param {{id?:number,index?:number,name?:string,version?:string,description?:string,tags?:string[]}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description The unique identifier of the product. */
id;
/**
* @type {number}
* @description The position of this instance in a collection of 'Product' instances */
index;
/**
* @type {string}
* @description The name of the product. */
name;
/**
* @type {string}
* @description The version of the product. */
version;
/**
* @type {?string}
* @description The version of the product. */
description;
/**
* @type {string[]}
* @description Tags associated with the product. */
tags;
}
export class ProductQueryResponse extends QueryResponse {
/** @param {{ordersMap?:{ [index: number]: Order[]; },offset?:number,total?:number,results?:Product[],meta?:{ [index: string]: string; },responseStatus?:ResponseStatus,offset?:number,total?:number,results?:T[],meta?:{ [index: string]: string; },responseStatus?:ResponseStatus}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/**
* @type {{ [index: number]: Order[]; }}
* @description The dictionary of orders associated with each found product. */
ordersMap;
/** @type {number} */
offset;
/** @type {number} */
total;
/** @type {Product[]} */
results;
/** @type {{ [index: string]: string; }} */
meta;
/** @type {ResponseStatus} */
responseStatus;
}
export class SearchProductsAsync extends SearchProductsBase {
/** @param {{productId?:number,accountId?:number,name?:string,nameStartsWith?:string,nameEndsWith?:string,nameContains?:string,version?:string,versionStartsWith?:string,versionEndsWith?:string,versionContains?:string,description?:string,descriptionStartsWith?:string,descriptionEndsWith?:string,descriptionContains?:string,includeOrders?:boolean,skipOrders?:number,takeOrders?:number,skip?:number,take?:number,productId?:number,accountId?:number,name?:string,nameStartsWith?:string,nameEndsWith?:string,nameContains?:string,version?:string,versionStartsWith?:string,versionEndsWith?:string,versionContains?:string,description?:string,descriptionStartsWith?:string,descriptionEndsWith?:string,descriptionContains?:string,includeOrders?:boolean,skipOrders?:number,takeOrders?:number,skip?:number,take?:number,skip?:number,take?:number}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/**
* @type {?number}
* @description The unique identifier of the account associated with the product. */
productId;
/**
* @type {?number}
* @description The unique identifier of the account associated with the product. */
accountId;
/**
* @type {?string}
* @description The name of the product. */
name;
/**
* @type {?string}
* @description Search by using the name of the product that starts with the specified value. */
nameStartsWith;
/**
* @type {?string}
* @description Search by using the name of the product that ends with the specified value. */
nameEndsWith;
/**
* @type {?string}
* @description Search by using the name of the product that contains the specified value. */
nameContains;
/**
* @type {?string}
* @description The version of the product. */
version;
/**
* @type {?string}
* @description Search by using the version of the product that starts with the specified value. */
versionStartsWith;
/**
* @type {?string}
* @description Search by using the version of the product that ends with the specified value. */
versionEndsWith;
/**
* @type {?string}
* @description Search by using the version of the product that contains the specified value. */
versionContains;
/**
* @type {?string}
* @description The description of the product. */
description;
/**
* @type {?string}
* @description Search by using the description of the product that starts with the specified value. */
descriptionStartsWith;
/**
* @type {?string}
* @description Search by using the description of the product that ends with the specified value. */
descriptionEndsWith;
/**
* @type {?string}
* @description Search by using the description of the product that contains the specified value. */
descriptionContains;
/**
* @type {?boolean}
* @description Should the related orders of the account be included in the retrieved products? */
includeOrders;
/**
* @type {?number}
* @description Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. */
skipOrders;
/**
* @type {?number}
* @description Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. */
takeOrders;
/**
* @type {?number}
* @description The number of query results to skip. */
skip;
/**
* @type {?number}
* @description The number of query results to include. */
take;
}
/** @typedef T {any} */
export class QueryResponse {
/** @param {{offset?:number,total?:number,results?:T[],meta?:{ [index: string]: string; },responseStatus?:ResponseStatus}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
offset;
/** @type {number} */
total;
/** @type {T[]} */
results;
/** @type {{ [index: string]: string; }} */
meta;
/** @type {ResponseStatus} */
responseStatus;
}
JavaScript SearchProductsAsync DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /async/products/search HTTP/1.1 Host: taxfiling.pwc.de Accept: application/xml
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <ProductQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/PwC.Metering.Core.Services.Contracts.Responses"> <Offset xmlns="http://schemas.servicestack.net/types">0</Offset> <Total xmlns="http://schemas.servicestack.net/types">0</Total> <Results xmlns:d2p1="http://schemas.datacontract.org/2004/07/PwC.Metering.Core.Domain.Concretes.Models" xmlns="http://schemas.servicestack.net/types"> <d2p1:Product> <d2p1:Description>String</d2p1:Description> <d2p1:Id>0</d2p1:Id> <d2p1:Index>0</d2p1:Index> <d2p1:Name>String</d2p1:Name> <d2p1:Tags xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d4p1:string>String</d4p1:string> </d2p1:Tags> <d2p1:Version>String</d2p1:Version> </d2p1:Product> </Results> <Meta xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.servicestack.net/types"> <d2p1:KeyValueOfstringstring> <d2p1:Key>String</d2p1:Key> <d2p1:Value>String</d2p1:Value> </d2p1:KeyValueOfstringstring> </Meta> <ResponseStatus xmlns="http://schemas.servicestack.net/types"> <ErrorCode>String</ErrorCode> <Message>String</Message> <StackTrace>String</StackTrace> <Errors> <ResponseError> <ErrorCode>String</ErrorCode> <FieldName>String</FieldName> <Message>String</Message> <Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d5p1:KeyValueOfstringstring> <d5p1:Key>String</d5p1:Key> <d5p1:Value>String</d5p1:Value> </d5p1:KeyValueOfstringstring> </Meta> </ResponseError> </Errors> <Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d3p1:KeyValueOfstringstring> <d3p1:Key>String</d3p1:Key> <d3p1:Value>String</d3p1:Value> </d3p1:KeyValueOfstringstring> </Meta> </ResponseStatus> <OrdersMap xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d2p1:KeyValueOfintArrayOfOrderKY2vvLcG> <d2p1:Key>0</d2p1:Key> <d2p1:Value xmlns:d4p1="http://schemas.datacontract.org/2004/07/PwC.Metering.Core.Domain.Concretes.Models"> <d4p1:Order> <d4p1:AccountId>0</d4p1:AccountId> <d4p1:ClientIPAddress>String</d4p1:ClientIPAddress> <d4p1:CreationDate>0001-01-01T00:00:00</d4p1:CreationDate> <d4p1:DataName>String</d4p1:DataName> <d4p1:DataType>String</d4p1:DataType> <d4p1:ExpiryDate>0001-01-01T00:00:00</d4p1:ExpiryDate> <d4p1:Id>0</d4p1:Id> <d4p1:IsTest>false</d4p1:IsTest> <d4p1:Name>String</d4p1:Name> <d4p1:ProcessType>String</d4p1:ProcessType> <d4p1:ProductId>0</d4p1:ProductId> <d4p1:RequestDuration>PT0S</d4p1:RequestDuration> <d4p1:RequestHttpMethod>String</d4p1:RequestHttpMethod> <d4p1:RequestTimestamp>0001-01-01T00:00:00</d4p1:RequestTimestamp> <d4p1:RequestUri>String</d4p1:RequestUri> <d4p1:ResponseStatusCode>Continue</d4p1:ResponseStatusCode> <d4p1:ResponseTimestamp>0001-01-01T00:00:00</d4p1:ResponseTimestamp> <d4p1:ServiceName>String</d4p1:ServiceName> <d4p1:UnitOfMeasurement>String</d4p1:UnitOfMeasurement> </d4p1:Order> </d2p1:Value> </d2p1:KeyValueOfintArrayOfOrderKY2vvLcG> </OrdersMap> </ProductQueryResponse>