inventora-shopify-admin-api
Version:
Shopify Admin API is a NodeJS library built to help developers easily authenticate and make calls against the Shopify API. It was inspired by and borrows heavily from ShopifySharp.
94 lines (83 loc) • 3.58 kB
text/typescript
import * as Options from '../options';
import { Article } from '../interfaces';
import { BaseService } from '../infrastructure';
/**
* A service for manipulating a blog's articles.
*/
export class Articles extends BaseService {
constructor(shopDomain: string, accessToken: string) {
super(shopDomain, accessToken, "");
}
/**
* Creates a new article.
* @param blogId Id of the blog that the article will belong to.
* @param article The article being created.
*/
public create(blogId: number, article: Partial<Article>) {
return this.createRequest<Article>("POST", `blogs/${blogId}/articles.json`, "article", { article });
}
/**
* Updates an article with the given id.
* @param blogId Id of the blog that the article belongs to.
* @param articleId Id of the article to update.
* @param article The updated article.
*/
public update(blogId: number, articleId: number, article: Partial<Article>) {
return this.createRequest<Article>("PUT", `blogs/${blogId}/articles/${articleId}.json`, "article", { article });
}
/**
* Gets an article with the given id.
* @param blogId Id of the blog that the article belongs to.
* @param articleId Id of the article being retrieved.
* @param options Options for filtering the result.
*/
public get(blogId: number, articleId: number, options?: Options.ArticleGetOptions) {
return this.createRequest<Article>("GET", `blogs/${blogId}/articles/${articleId}.json`, "article", options);
}
/**
* Lists up to 250 articles for the given blog.
* @param blogId Id of the blog that the articles belong to.
* @param options Options for filtering the results.
*/
public list(blogId: number, options?: Options.ArticleListOptions) {
return this.createRequest<Article[]>("GET", `blogs/${blogId}/articles.json`, "articles", options);
}
/**
* Counts the articles on the given blog.
* @param blogId Id of the blog that the articles belong to.
* @param options Options for filtering the results.
*/
public count(blogId: number, options?: Options.ArticleCountOptions) {
return this.createRequest<number>("GET", `blogs/${blogId}/articles/count.json`, "count", options);
}
/**
* Deletes the article with the given id.
* @param blogId Id of the blog that the article belongs to.
* @param articleId Id of the article to delete.
*/
public delete(blogId: number, articleId: number) {
return this.createRequest<void>("DELETE", `blogs/${blogId}/articles/${articleId}.json`);
}
/**
* Gets a list of all article authors.
*/
public listAuthors(options?: Options.ArticleAuthorListOptions) {
return this.createRequest<string[]>("GET", `articles/authors.json`, "authors", options);
}
/**
* Gets a list of all article tags.
* @param options Options for filtering the results.
*/
public listTags(options?: Options.ArticleTagListOptions) {
return this.createRequest<string[]>("GET", `articles/tags.json`, "tags", options);
}
/**
* Gets a list of all article tags for the given blog.
* @param blogId Id of the blog that the tags belong to.
* @param options Options for filtering the results.
*/
public listTagsForBlog(blogId: number, options?: Options.ArticleTagListOptions) {
return this.createRequest<string[]>("GET", `blogs/${blogId}/articles/tags.json`, "tags", options);
}
}
export default Articles;