PUT Request for Updating Products Error: "This param is deprecated"

Hello, how are you doing today?

I am creating this topic on behalf of a mutual customer of ours who cannot update his inventory when syncing to Ordoro. We attempted to troubleshoot the issue ourselves, and we concluded that it is not an issue on our end.

I see that a deprecation has been announced for an older version of the API, but it is unclear from the response which parameter is the one that needs to be updated.

We would greatly appreciate being pointed in the right direction on the matter. Request and Response can be found below:

PUT https://api.ordoro.com/product/HYB-CAI-01-14/warehouse/59792/? HTTP/1.1
Accept: application/json
Content-Type: application/json
User-Agent: JMA Web Technologies
X-Partner: JMAWebTechnologies
Authorization: Basic X=
Host: api.ordoro.com
Content-Length: 87
Expect: 100-continue

{“out_of_stock_threshold”:0,“stocked_inhouse”:true,“low_stock_threshold”:1,“on_hand”:1}

HTTP/1.1 500 INTERNAL SERVER ERROR
cache-control: no-cache,max-age=0,must-revalidate
Content-Type: application/json
Date: Thu, 03 Sep 2020 18:52:27 GMT
pragma: no-cache
Server: gunicorn/19.7.1
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-API-REQUEST-ID: f06dd55b-2c3a-4f8d-9188-3cc1e1979947
X-Ordoro-API-Server: i-0ff9c7919bcda0eca 1.1172.0
X-ORDORO-HANDLED-BY: ip-172-31-11-157
X-SENTRY-ID: 8b2dac631ba84ccea4c6955966115eb9
Content-Length: 78
Connection: keep-alive

{“error_message”: “This param is deprecated for this endpoint”, “param”: null}

Thank you, and have a good day.

Hi jmawebtech

We are in the process of cleaning up how product fulfillment statuses are handled in the API and it looks like this account has been migrated to the new way of doing things.

Previously, stocked_inhouse and automatic_dropshipping were set with the /product/<sku>/warehouse/<warehouse_id>/ enpdoint. However, fulfillments were never handled at the warehouse level and this caused some confusion. To add to this, if the particular product didn’t have a default supplier set then the product could not actually be updated to dropship or autodropship.

Going forward, we have created a new endpoint: PUT /product/<sku>/fulfillment/
In the body of this request you’ll provide fulfillment_type and default_supplier_id (optional).

The fulfillment_type param can be one of the following:
in_house
dropshippable
automatically_dropshipped

The default_supplier_id param can be the id of any supplier you wish to set as the default for that product. This element is optional if the product already has a default supplier. Also, any attempt to set fulfillment_type will fail if there is no default supplier and default_supplier_id is not included.

The new endpoint is only available if the account has the temp_new_product_fulfillment flag set. You can check flags by hitting the GET /company/flags/ endpoint. If temp_new_product_fulfillment is not returned or is false then you’ll want to continue using the /product/<sku>/warehouse/<warehouse_id>/ endpoint. Once the flag is set you cannot pass stocked_inhouse or automatic_dropshipping to the warehouse endpoint.

We will look into why the error response is not including the relevant param.

Hello, Syork, and thank you for the prompt response.

My colleagues and I looked into the matter, and unfortunately, we need some more information to go on.

If you can please provide an outline or example template for how the Request and Response should be structured for your new API, along with some relevant documentation outlining the new changes, it will really help us along. We looked into the API Docs themselves, but unfortunately, they didn’t have what we sought.

Thank you, and have a good day.

The request for the new fulfillment endpoint is structured as follows:

PUT /product/<sku>/fulfillment/

{
  "fulfillment_type": "in_house | dropshippable | automatically_dropshipped",
  "default_supplier_id": 12345
}

The equivalent curl would be:

curl --location --request PUT 'https://api.ordoro.com/product/<sku>/fulfillment/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "fulfillment_type": "in_house | dropshippable | automatically_dropshipped",
    "default_supplier_id": 12345
}'

You will choose one of in_house | dropshippable | automatically_dropshipped and pass the correct auth headers.

The documentation for the flag endpoint can be found here

The fulfillment endpoint documentation can be found here. Unfortunately our new request validation system does not correctly autogenerate into the apiary docs, so the example body is missing. We are working on a fix for this.

The fulfillment endpoint response is simply the serialized product, the same as GET /product/<sku>/