-
-
Notifications
You must be signed in to change notification settings - Fork 313
Assets
The AssetService
lets you create, update and delete a store theme's asset files. Unlike other API services in ShopifySharp, the AssetService
has a single .CreateOrUpdateAsync
method due to the way Shopify's API handles assets. If an asset has a unique Key
value, it will be created. If not, it will be updated. You can copy an asset by setting the new asset's SourceKey
to the target's Key
value.
Shopify asset's do not have an id, but rather a key string; they're also organized into type 'buckets'. For a liquid template, it's full key would be templates/liquid.index
; for an image, its key would be assets/my-image.png
.
Finally, all assets are tied to a specific theme, and you need that theme's id to interact with assets. You can use the ThemeService
to get a list of the shop's themes, or the ShopService
to get the currently active theme's id.
var service = new AssetService(myShopifyUrl, shopAccessToken);
var asset = new Asset()
{
ContentType = "text/x-liquid",
Key = "templates/test.liquid",
Value = "<h1>Hello, world!</h1>"
}
//Note: Creating an asset does not return it's 'Value' property.
//You must specifically refresh it with service.GetAsync
asset = await service.CreateAsync(themeId, asset);
var service = new AssetService(myShopifyUrl, shopAccessToken);
var key = "templates/index.liquid";
var asset = await service.GetAsync(themeId, key);
var service = new AssetService(myShopifyUrl, shopAccessToken);
var assets = await service.ListAsync(themeId);
var service = new AssetService(myShopifyUrl, shopAccessToken);
//Note: Updating an asset does not return it's 'Value' property.
//You must specifically refresh it with service.GetAsync
var asset = await service.UpdateAsync(themeId, assetId, new Asset()
{
Value = "<h1>Hello, world! I've been updated.</h1>";
});
You can create a new asset by copying an already existing one. Just set the new asset's SourceKey
property to
match the target's Key
property.
var service = new AssetService(myShopifyUrl, shopAccessToken);
var asset = new Asset()
{
Key = "templates/test.liquid",
SourceKey = originalAsset.Key
};
//Note: Creating an asset does not return it's 'Value' property.
//You must specifically refresh it with service.GetAsync
asset = await service.UpdateAsync(themeId, assetId, asset);