     /**
      Load Product folders.
      Also see [ API reference](https://online.moysklad.ru/api/remap/1.1/doc/index.html#группа-товаров)
-     - parameter parameters: container for parameters like auth, offset, search, expanders, filter, orderBy
+     - parameter parameters: container for parameters like auth, offset, search, expanders, filter, orderBy, id, urlParameters
     */
     public static func productFolders(parameters: UrlRequestParameters) -> Observable<[MSEntity<MSProductFolder>]> {
         let urlParameters: [UrlParameter] = mergeUrlParameters(parameters.offset, parameters.filter, parameters.search, parameters.orderBy, CompositeExpander(parameters.expanders))

                         UUID id
     - parameter metadataId: Id of custom entity
    */
    public static func customEntities(parameters: UrlRequestParameters,
                                      metadataId: String) -> Observable<[MSEntity<MSCustomEntity>]> {
        let urlParameters: [UrlParameter] = mergeUrlParameters(parameters.offset, parameters.search)
        
        return HttpClient.get(.customEntity, auth: parameters.auth, urlPathComponents: [metadataId], urlParameters: urlParameters)

    /**
     Load counterparty contacts.
     Also see [ API refere`nce](https://online.moysklad.ru/api/remap/1.1/doc#контрагент-контактное-лицо-get)
     - parameter parameters: container for parameters like auth, offset, search, expanders, filter, orderBy, id, stringData, urlParameters
     - returns: Observable sequence with contacts
     */
    public static func counterpartyContacts(parameters: UrlRequestParameters) -> Observable<[MSEntity<MSContactPerson>]> {
        guard let id = parameters.stringData else { return Observable.error(MSError.genericError(errorText: LocalizedStrings.incorrecContactPersonsResponse.value)) }
        let urlPathComponents: [String] = [id, "contactpersons"]
        return HttpClient.get(.counterparty, auth: parameters.auth, urlPathComponents: urlPathComponents, urlParameters: [])
            .flatMapLatest { result -> Observable<[MSEntity<MSContactPerson>]> in
                guard let results = result?.toDictionary()?.msArray("rows") else {
                    return Observable.error(MSError.genericError(errorText: LocalizedStrings.incorrecContactPersonsResponse.value))
