PureBasic
PureBasic
Shopify Set inventory levels to a certain amount
See more Shopify Examples
Use the set endpoint with the location ID and inventory item ID to set an inventory level to a specific value.Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttp::setCkLogin(http, "SHOPIFY_PRIVATE_API_KEY")
CkHttp::setCkPassword(http, "SHOPIFY_PRIVATE_API_KEY")
; Also see: How to retrieve inventory levels
CkHttp::setCkAccept(http, "application/json")
; The following JSON is sent in the request body:
; {
; "location_id": 6884556842,
; "inventory_item_id": 12250274365496,
; "available": 1
; }
; Use this online tool to generate the code from sample JSON:
; Generate Code to Create JSON
jsonRequestBody.i = CkJsonObject::ckCreate()
If jsonRequestBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateInt(jsonRequestBody,"location_id",6884556842)
CkJsonObject::ckUpdateInt(jsonRequestBody,"inventory_item_id",12250274365496)
CkJsonObject::ckUpdateInt(jsonRequestBody,"available",1)
url.s = "https://{shop}.myshopify.com/admin/api/2020-04/inventory_levels/set.json"
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpJson(http,"POST",url,jsonRequestBody,"application/json",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonRequestBody)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
Debug "Response Status Code: " + Str(CkHttpResponse::ckStatusCode(resp))
jsonResponse.i = CkJsonObject::ckCreate()
If jsonResponse.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoad(jsonResponse,CkHttpResponse::ckBodyStr(resp))
CkJsonObject::setCkEmitCompact(jsonResponse, 0)
Debug CkJsonObject::ckEmit(jsonResponse)
If CkHttpResponse::ckStatusCode(resp) >= 300
Debug "Failed."
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonRequestBody)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResponse)
ProcedureReturn
EndIf
; Sample output...
; (See the parsing code below..)
;
; Use the this online tool to generate parsing code from sample JSON:
; Generate Parsing Code from JSON
; {
; "inventory_level": {
; "inventory_item_id": 12250274365496,
; "location_id": 6884556842,
; "available": 1,
; "updated_at": "2018-06-26T15:44:33-04:00",
; ...
; "admin_graphql_api_id": "gid://shopify/InventoryLevel/6485147690?inventory_item_id=12250274365496"
; ...
; }
; }
;
inventory_levelInventory_item_id.i = CkJsonObject::ckIntOf(jsonResponse,"inventory_level.inventory_item_id")
inventory_levelLocation_id.i = CkJsonObject::ckIntOf(jsonResponse,"inventory_level.location_id")
inventory_levelAvailable.i = CkJsonObject::ckIntOf(jsonResponse,"inventory_level.available")
inventory_levelUpdated_at.s = CkJsonObject::ckStringOf(jsonResponse,"inventory_level.updated_at")
inventory_levelAdmin_graphql_api_id.s = CkJsonObject::ckStringOf(jsonResponse,"inventory_level.admin_graphql_api_id")
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonRequestBody)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResponse)
ProcedureReturn
EndProcedure