Sample code for 30+ languages & platforms
DataFlex

eBay -- Create or Replace Inventory Item

See more eBay Examples

This example shows how to create a new inventory item record or update an existing inventory item record.

See Create or Replace Inventory Item for more REST API details.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoJson
    String sAccessToken
    Handle hoHttp
    String sUrl
    Handle hoSbAuth
    Variant vResp
    Handle hoResp
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // This example sends the following sample PUT request to create (or replace) a new inventory item.

    // PUT https://api.ebay.com/sell/inventory/v1/inventory_item/GP-Cam-01
    // { 
    // "availability":
    //     { 
    //     "shipToLocationAvailability":
    //         { 
    //         "quantity": 50
    //         }
    //     },
    // "condition": "NEW",
    // "product":
    //     { 
    //     "title": "GoPro Hero4 Helmet Cam",
    //     "description": "New GoPro Hero4 Helmet Cam. Unopened box.",
    //     "aspects": {
    //         "Brand" :["GoPro"],
    //         "Type" : ["Helmet/Action"],
    //         "Storage Type" : ["Removable"],
    //         "Recording Definition" : ["High Definition"],
    //         "Media Format" : ["Flash Drive (SSD)"],
    //         "Optical Zoom" : ["10x"]
    //       },
    //     "imageUrls": [
    //         "http://i.ebayimg.com/images/i/182196556219-0-1/s-l1000.jpg",
    //         "http://i.ebayimg.com/images/i/182196556219-0-1/s-l1001.jpg",
    //         "http://i.ebayimg.com/images/i/182196556219-0-1/s-l1002.jpg"
    //       ]
    //     }
    // }

    // First, generate the JSON using this code:
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Set ComEmitCompact Of hoJson To False

    Get ComUpdateNumber Of hoJson "availability.shipToLocationAvailability.quantity" "50" To iSuccess
    Get ComUpdateString Of hoJson "condition" "NEW" To iSuccess
    Get ComUpdateString Of hoJson "product.title" "GoPro Hero4 Helmet Cam" To iSuccess
    Get ComUpdateString Of hoJson "product.description" "New GoPro Hero4 Helmet Cam. Unopened box." To iSuccess
    Get ComUpdateString Of hoJson "product.aspects.Brand[0]" "GoPro" To iSuccess
    Get ComUpdateString Of hoJson "product.aspects.Type[0]" "Helmet/Action" To iSuccess
    Get ComUpdateString Of hoJson 'product.aspects."Storage Type"[0]' "Removable" To iSuccess
    Get ComUpdateString Of hoJson 'product.aspects."Recording Definition"[0]' "High Definition" To iSuccess
    Get ComUpdateString Of hoJson 'product.aspects."Media Format"[0]' "Flash Drive (SSD)" To iSuccess
    Get ComUpdateString Of hoJson 'product.aspects."Optical Zoom"[0]' "10x" To iSuccess
    Get ComUpdateString Of hoJson "product.imageUrls[0]" "http://i.ebayimg.com/images/i/182196556219-0-1/s-l1000.jpg" To iSuccess
    Get ComUpdateString Of hoJson "product.imageUrls[1]" "http://i.ebayimg.com/images/i/182196556219-0-1/s-l1001.jpg" To iSuccess
    Get ComUpdateString Of hoJson "product.imageUrls[2]" "http://i.ebayimg.com/images/i/182196556219-0-1/s-l1002.jpg" To iSuccess

    // Show the JSON to be sent:
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    // Use a previously obtained user token.  The token should look something like this:
    // "v^1.1#i^1#r^0#p^3#I^3#f^0#t^H4sIAAAAAAAAAOVXa2wUVRTu9k ... 89xuCWYREAAA=="
    Move "EBAY_ACCESS_TOKEN" To sAccessToken

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // This example uses the sandbox.  
    // Change "api.sandbox.ebay.com" to "api.ebay.com" to use the production system.
    // Note: The last part of the url is the SKU.  In this URL, the SKU is "GP-Cam-01".
    Move "https://api.sandbox.ebay.com/sell/inventory/v1/inventory_item/GP-Cam-01" To sUrl
    Set ComEmitCompact Of hoJson To True

    // Set your Content-Language to whatever is desired.
    Send ComSetRequestHeader To hoHttp "Content-Language" "en-US"

    // Add our access token to the request, which is a header
    // having the following format:
    // Authorization: Bearer <userAccessToken>
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbAuth
    If (Not(IsComObjectCreated(hoSbAuth))) Begin
        Send CreateComObject of hoSbAuth
    End
    Get ComAppend Of hoSbAuth "Bearer " To iSuccess
    Get ComAppend Of hoSbAuth sAccessToken To iSuccess
    Get ComGetAsString Of hoSbAuth To sTemp1
    Send ComSetRequestHeader To hoHttp "Authorization" sTemp1

    Set ComAccept Of hoHttp To "application/json"
    Set ComAllowGzip Of hoHttp To False

    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get ComEmit Of hoJson To sTemp1
    Get pvComObject of hoResp to vResp
    Get ComHttpStr Of hoHttp "PUT" sUrl sTemp1 "utf-8" "application/json" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComStatusCode Of hoResp To iTemp1
    Showln "Response status code = " iTemp1

    Get ComLastStatus Of hoHttp To iTemp1
    If (iTemp1 <> 204) Begin
        Get ComBodyStr Of hoResp To sTemp1
        Showln sTemp1
        Showln "Failed"
        Procedure_Return
    End

    // On success (status code = 204), there is no output payload (strResponse will be empty).
    Showln "Inventory item successfully created."


End_Procedure