2

I have created Integration in System->Integration. And Set access to catelog ->products to the integration. I can get Single Product by Sku using

http://localhost.com/index.php/rest/V1/products/:sku

But i need to display all the products. How to get the result.

Thanks in advance.

My Code to get product details

function sign($method, $url, $data, $consumerSecret, $tokenSecret)
{
    $url = urlEncodeAsZend($url);

    $data = urlEncodeAsZend(http_build_query($data, '', '&'));
    $data = implode('&', [$method, $url, $data]);

    $secret = implode('&', [$consumerSecret, $tokenSecret]);

    return base64_encode(hash_hmac('sha1', $data, $secret, true));
}

function urlEncodeAsZend($value)
{
    $encoded = rawurlencode($value);
    $encoded = str_replace('%7E', '~', $encoded);
    return $encoded;
}

// REPLACE WITH YOUR ACTUAL DATA OBTAINED WHILE CREATING NEW INTEGRATION
$consumerKey = 'key';
$consumerSecret = 'key';
$accessToken = 'key';
$accessTokenSecret = 'key';

$method = 'GET';
$url = 'http://localhost.com/index.php/rest/V1/products';

//
$data = [
    'oauth_consumer_key' => $consumerKey,
    'oauth_nonce' => md5(uniqid(rand(), true)),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_timestamp' => time(),
    'oauth_token' => $accessToken,
    'oauth_version' => '1.0',
];

$data['oauth_signature'] = sign($method, $url, $data, $consumerSecret, $accessTokenSecret);

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_HTTPHEADER => [
        'Authorization: OAuth ' . http_build_query($data, '', ',')
    ]
]);

$result = curl_exec($curl);
curl_close($curl);
echo '<pre>';print_r(json_decode($result));

But it returns error

[message] => %fieldName is a required field.
    [parameters] => stdClass Object
        (
            [fieldName] => searchCriteria
        )
  • check my answer and let me know if you've any query. – Aditya Shah Oct 31 '18 at 7:18
1

First get admin token,

$adminUrl='http:Yourlurl/rest/V1/integration/admin/token';
$ch = curl_init();
$data = array("username" => "admin_username", "password" => "admin_password");
$dataString = json_encode($data);
$ch = curl_init($adminUrl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($dataString))
);
$token = curl_exec($ch);
$token = json_decode($token);
print_r($token);
curl_close($ch);

You can make use of below code, If you have many products increase the page_size.

<?php
$productUrl='http:yourlUrl/rest/V1/products?searchCriteria[page_size]=20';

$ch = curl_init($productUrl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/json",
    "Authorization: Bearer $token"
    )
);
$productList = curl_exec($ch);
$err      = curl_error($ch);
$products = json_decode($productList);
echo '<pre>';print_r($products );
curl_close($ch);
2

In order to display all products, you need to have at least one criteria sent to the Rest endpoint. If you have more than 1000 items, you could loop through the pages (although any example with > 1000 items would require more work to deal with that amount of data).

Note: you will need to install the zend http composer package as below: composer require zendframework/zend-http

<?php

require __DIR__ . '/vendor/autoload.php';

$customer_access_token = 'uvreguaelo0tug3tqmfx633420e3pth3';

$httpHeaders = new Zend\Http\Headers();
$httpHeaders->addHeaders([
    'Authorization' => 'Bearer ' . $customer_access_token,
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
]);

$request = new \Zend\Http\Request();
$request->setHeaders($httpHeaders);
$request->setUri('http://magento.test/rest/V1/products?fields=items[sku,name]&searchCriteria[pageSize]=1000');

$client = new Zend\Http\Client();

$response = $client->send($request);
$products = json_decode($response->getBody());

foreach ($products->items as $key => $product) {
    printf("Product SKU: %s, product name: %s\n", $product->sku, $product->name);
}

0

you can achieve this using catalogProductRepositoryV1

  • method GET
  • Authentication admin token

  • url: http://localhost.com/index.php/rest/V1/products

Response

{
  "items": [
    {
      "id": 0,
      "sku": "string",
      "name": "string",
      "attributeSetId": 0,
      "price": 0,
      "status": 0,
      "visibility": 0,
      "typeId": "string",
      "createdAt": "string",
      "updatedAt": "string",
      "weight": 0,
      "extensionAttributes": {
        "downloadableProductLinks": [
          {
            "id": 0,
            "title": "string",
            "sortOrder": 0,
            "isShareable": 0,
            "price": 0,
            "numberOfDownloads": 0,
            "linkType": "string",
            "linkFile": "string",
            "linkFileContent": {
              "fileData": "string",
              "name": "string",
              "extensionAttributes": {}
            },
            "linkUrl": "string",
            "sampleType": "string",
            "sampleFile": "string",
            "sampleFileContent": {
              "fileData": "string",
              "name": "string",
              "extensionAttributes": {}
            },
            "sampleUrl": "string",
            "extensionAttributes": {}
          }
        ],
        "downloadableProductSamples": [
          {
            "id": 0,
            "title": "string",
            "sortOrder": 0,
            "sampleType": "string",
            "sampleFile": "string",
            "sampleFileContent": {
              "fileData": "string",
              "name": "string",
              "extensionAttributes": {}
            },
            "sampleUrl": "string",
            "extensionAttributes": {}
          }
        ],
        "stockItem": {
          "itemId": 0,
          "productId": 0,
          "stockId": 0,
          "qty": 0,
          "isInStock": true,
          "isQtyDecimal": true,
          "showDefaultNotificationMessage": true,
          "useConfigMinQty": true,
          "minQty": 0,
          "useConfigMinSaleQty": 0,
          "minSaleQty": 0,
          "useConfigMaxSaleQty": true,
          "maxSaleQty": 0,
          "useConfigBackorders": true,
          "backorders": 0,
          "useConfigNotifyStockQty": true,
          "notifyStockQty": 0,
          "useConfigQtyIncrements": true,
          "qtyIncrements": 0,
          "useConfigEnableQtyInc": true,
          "enableQtyIncrements": true,
          "useConfigManageStock": true,
          "manageStock": true,
          "lowStockDate": "string",
          "isDecimalDivided": true,
          "stockStatusChangedAuto": 0,
          "extensionAttributes": {}
        },
        "giftcardAmounts": [
          {
            "websiteId": 0,
            "value": 0,
            "websiteValue": 0,
            "extensionAttributes": {}
          }
        ],
        "configurableProductOptions": [
          {
            "id": 0,
            "attributeId": "string",
            "label": "string",
            "position": 0,
            "isUseDefault": true,
            "values": [
              {
                "valueIndex": 0,
                "extensionAttributes": {}
              }
            ],
            "extensionAttributes": {},
            "productId": 0
          }
        ],
        "configurableProductLinks": [
          0
        ],
        "bundleProductOptions": [
          {
            "optionId": 0,
            "title": "string",
            "required": true,
            "type": "string",
            "position": 0,
            "sku": "string",
            "productLinks": [
              {
                "id": "string",
                "sku": "string",
                "optionId": 0,
                "qty": 0,
                "position": 0,
                "isDefault": true,
                "price": 0,
                "priceType": 0,
                "canChangeQuantity": 0,
                "extensionAttributes": {}
              }
            ],
            "extensionAttributes": {}
          }
        ]
      },
      "productLinks": [
        {
          "sku": "string",
          "linkType": "string",
          "linkedProductSku": "string",
          "linkedProductType": "string",
          "position": 0,
          "extensionAttributes": {
            "qty": 0
          }
        }
      ],
      "options": [
        {
          "productSku": "string",
          "optionId": 0,
          "title": "string",
          "type": "string",
          "sortOrder": 0,
          "isRequire": true,
          "price": 0,
          "priceType": "string",
          "sku": "string",
          "fileExtension": "string",
          "maxCharacters": 0,
          "imageSizeX": 0,
          "imageSizeY": 0,
          "values": [
            {
              "title": "string",
              "sortOrder": 0,
              "price": 0,
              "priceType": "string",
              "sku": "string",
              "optionTypeId": 0
            }
          ],
          "extensionAttributes": {}
        }
      ],
      "mediaGalleryEntries": [
        {
          "id": 0,
          "mediaType": "string",
          "label": "string",
          "position": 0,
          "disabled": true,
          "types": [
            "string"
          ],
          "file": "string",
          "content": {
            "base64EncodedData": "string",
            "type": "string",
            "name": "string"
          },
          "extensionAttributes": {
            "videoContent": {
              "mediaType": "string",
              "videoProvider": "string",
              "videoUrl": "string",
              "videoTitle": "string",
              "videoDescription": "string",
              "videoMetadata": "string"
            }
          }
        }
      ],
      "tierPrices": [
        {
          "customerGroupId": 0,
          "qty": 0,
          "value": 0,
          "extensionAttributes": {}
        }
      ],
      "customAttributes": [
        {
          "attributeCode": "string",
          "value": "string"
        }
      ]
    }
  ],
  "searchCriteria": {
    "filterGroups": [
      {
        "filters": [
          {
            "field": "string",
            "value": "string",
            "conditionType": "string"
          }
        ]
      }
    ],
    "sortOrders": [
      {
        "field": "string",
        "direction": "string"
      }
    ],
    "pageSize": 0,
    "currentPage": 0
  },
  "totalCount": 0
}
  • I'm trying to get product details in core php .... Is there any example for this? – Ranganathan Oct 31 '18 at 7:19
  • Please check my updated question – Ranganathan Oct 31 '18 at 7:22
0

You need to add searchCriteria field name at the end of your url as follows:

$url = 'http://localhost.com/index.php/rest/V1/products?searchCriteria';

Please refer this link for your reference. It may helpful to you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.