youtrack-client
Version: 
Client library for accessing the YouTrack REST and Widget API
8 lines (7 loc) • 40.6 kB
JavaScript
/*!
 * youtrack-client v0.7.1
 * Copyright (C) 2012-2025 undefined
 * Date: Sat, 16 Aug 2025 14:45:45 GMT
 */
var YouTrackClient=function(e){"use strict";const t=e=>null!==e&&"object"==typeof e,s=(e,t)=>{let s=e,i=t;return s.endsWith("/")&&(s=s.slice(0,-1)),i.startsWith("/")&&(i=i.slice(1)),`${s}/${i}`},i=e=>e instanceof FormData?e:"object"==typeof e?JSON.stringify(e):e,n=(e=[])=>{const s=e.map((e=>t(e)?Object.keys(e).map((t=>`${t}(${n(e[t])})`)).join(","):encodeURIComponent(e)));return s.length?s.join(","):""},a=(e=[])=>{const t="string"==typeof e?e:n(e);return t?`fields=${t}`:""},r=(e,t)=>Array.isArray(t)?t.map((t=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`)):void 0!==t?`${encodeURIComponent(e)}=${encodeURIComponent(t)}`:"",c=(...e)=>e.reduce(((e,t)=>(e[t]=e=>r(t,e),e)),{});class u{constructor(e,t,s={}){Object.defineProperty(this,"baseUrl",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"_args",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.keys(s).forEach((e=>{if(e in t){const i=t[e],n="function"!=typeof i?r(e,s[e]):i(s[e]);n&&this._args.push(...Array.isArray(n)?n:[n])}}))}build(e){const t=this._args.join("&");return{...e,url:t?`${this.baseUrl}?${t}`:this.baseUrl}}get(){return this.build()}post(e){return this.build({method:"POST",data:e})}postFile(e){return this.build({method:"POST",data:e,headers:{"Content-Type":"multipart/form-data"}})}delete(){return this.build({method:"DELETE"})}put(){return this.build({method:"PUT"})}patch(){return this.build({method:"PATCH"})}}class o{constructor(e){Object.defineProperty(this,"youtrack",{enumerable:!0,configurable:!0,writable:!0,value:e})}}class d extends o{async getActivities(e){return this.youtrack.fetch(new u("api/activities",{fields:a,...c("$skip","$top","reverse","categories","author","start","end","issueQuery")},e).get())}async getActivityById(e,t){return this.youtrack.fetch(new u(`api/activities/${e}`,{fields:a},t).get())}async getActivitiesPage(e){return this.youtrack.fetch(new u("api/activitiesPage",{fields:a,...c("categories","reverse","author","start","end","issueQuery","cursor","activityId")},e).get())}}class l extends o{async getAgiles(e){return this.youtrack.fetch(new u("api/agiles",{fields:a,$skip:"number",$top:"number"},e).get())}async createAgile(e,t){return this.youtrack.fetch(new u("api/agiles",{fields:a,template:"string"},t).post(e))}async getAgileById(e,t){return this.youtrack.fetch(new u(`api/agiles/${e}`,{fields:a},t).get())}async updateAgile(e,t,s){return this.youtrack.fetch(new u(`api/agiles/${e}`,{fields:a},s).post(t))}async deleteAgile(e,t){return this.youtrack.fetch(new u(`api/agiles/${e}`,{fields:a},t).delete())}async getAgileSprints(e,t){return this.youtrack.fetch(new u(`api/agiles/${e}/sprints`,{fields:a,$skip:"number",$top:"number"},t).get())}async createAgileSprint(e,t,s){return this.youtrack.fetch(new u(`api/agiles/${e}/sprints`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async getAgileSprintById(e,t,s){return this.youtrack.fetch(new u(`api/agiles/${e}/sprints/${t}`,{fields:a},s).get())}async deleteAgileSprint(e,t,s){return this.youtrack.fetch(new u(`api/agiles/${e}/sprints/${t}`,{fields:a},s).delete())}async updateAgileSprint(e,t,s,i){return this.youtrack.fetch(new u(`api/agiles/${e}/sprints/${t}`,{fields:a},i).post(s))}}class p extends o{async getArticles(e){return this.youtrack.fetch(new u("api/articles",{fields:a,...c("$top","$skip")},e).get())}async createArticle(e,t){return this.youtrack.fetch(new u("api/articles",{fields:a,...c("muteUpdateNotifications","draftId")},t).post(e))}async getArticle(e,t){return this.youtrack.fetch(new u(`api/articles/${e}`,{fields:a},t).get())}async updateArticle(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}`,{fields:a,muteUpdateNotifications:"string"},s).post(t))}async deleteArticle(e,t){return this.youtrack.fetch(new u(`api/articles/${e}`,{fields:a},t).delete())}async getArticleAttachments(e,t){return this.youtrack.fetch(new u(`api/articles/${e}/attachments`,{fields:a,...c("$top","$skip")},t).get())}async createArticleAttachment(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/attachments`,{fields:a,muteUpdateNotifications:"string"},s).postFile(t))}async getArticleAttachment(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/attachments/${t}`,{fields:a},s).get())}async updateArticleAttachment(e,t,s,i){return this.youtrack.fetch(new u(`api/articles/${e}/attachments/${t}`,{fields:a},i).post(s))}async deleteArticleAttachment(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/attachments/${t}`,{fields:a},s).delete())}async getChildArticles(e,t){return this.youtrack.fetch(new u(`api/articles/${e}/childArticles`,{fields:a,...c("$top","$skip")},t).get())}async addChildArticle(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/childArticles`,{fields:a,...c("muteUpdateNotifications")},s).post(t))}async getChildArticle(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/childArticles/${t}`,{fields:a},s).get())}async updateChildArticle(e,t,s,i){return this.youtrack.fetch(new u(`api/articles/${e}/childArticles/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async removeChildArticleLink(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/childArticles/${t}`,{fields:a},s).delete())}async getArticleComments(e,t){return this.youtrack.fetch(new u(`api/articles/${e}/comments`,{fields:a,...c("$top","$skip")},t).get())}async createArticleComment(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/comments`,{fields:a,...c("draftId","muteUpdateNotifications")},s).post(t))}async getArticleComment(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}`,{fields:a},s).get())}async updateArticleComment(e,t,s,i){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async deleteArticleComment(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}`,{fields:a},s).delete())}async getArticleCommentReactions(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}/reactions`,{fields:a,...c("$top","$skip")},s).get())}async createCommentReaction(e,t,s,i){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}/reactions`,{fields:a},i).post(s))}async getCommnetReaction(e,t,s,i){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}/reactions/${s}`,{fields:a},i).get())}async removeCommnetReaction(e,t,s,i){return this.youtrack.fetch(new u(`api/articles/${e}/comments/${t}/reactions/${s}`,{fields:a},i).delete())}async getParentArticle(e,t){return this.youtrack.fetch(new u(`api/articles/${e}/parentArticle`,{fields:a},t).get())}async getArticleTags(e,t){return this.youtrack.fetch(new u(`api/articles/${e}/tags`,{fields:a,...c("$top","$skip")},t).get())}async createArticleTag(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/tags`,{fields:a},s).post(t))}async getArticleTag(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/tags/${t}`,{fields:a},s).get())}async removeArticleTag(e,t,s){return this.youtrack.fetch(new u(`api/articles/${e}/tags/${t}`,{fields:a},s).delete())}}class h extends o{async applyCommandToIssues(e,t){return this.youtrack.fetch(new u("api/commands",{fields:a,muteUpdateNotifications:"string"},t).post(e))}async getCommandSuggestions(e,t){return this.youtrack.fetch(new u("api/commands/assist",{fields:a},t).post(e))}}class f extends o{async getUserGroups(e){return this.youtrack.fetch(new u("api/groups",{fields:a,...c("$top","$skip")},e).get())}async getUserGroupById(e,t){return this.youtrack.fetch(new u(`api/groups/${e}`,{fields:a},t).get())}}class y extends o{async getIssueLinkTypes(e){return this.youtrack.fetch(new u("api/issueLinkTypes",{fields:a,...c("$top","$skip")},e).get())}async createIssueLinkType(e,t){return this.youtrack.fetch(new u("api/issueLinkTypes",{fields:a},t).post(e))}async getIssueLinkType(e,t){return this.youtrack.fetch(new u(`api/issueLinkTypes/${e}`,{fields:a},t).get())}async updateIssueLinkType(e,t,s){return this.youtrack.fetch(new u(`api/issueLinkTypes/${e}`,{fields:a},s).post(t))}async deleteIssueLinkType(e,t){return this.youtrack.fetch(new u(`api/issueLinkTypes/${e}`,{fields:a},t).delete())}}class g extends o{async getIssues(e){return this.youtrack.fetch(new u("api/issues",{fields:a,...c("$top","$skip","query","customFields")},e).get())}async createIssue(e,t){return this.youtrack.fetch(new u("api/issues",{fields:a,...c("draftId","muteUpdateNotifications")},t).post(e))}async getIssueById(e,t){return this.youtrack.fetch(new u(`api/issues/${e}`,{fields:a},t).get())}async updateIssue(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async deleteIssue(e,t){return this.youtrack.fetch(new u(`api/issues/${e}`,{fields:a},t).delete())}async getIssueCount(e,t){const s=await this.youtrack.fetch(new u("api/issuesGetter/count",{fields:a}).post(e));return-1===s.count?this.getIssueCount(e,t):s}async getIssueActivities(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/activities`,{fields:a,...c("$top","$skip","categories","reverse","start","end","author")},t).get())}async getIssueActivity(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/activities/${t}`,{fields:a},s).get())}async getActivitiesPage(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/activitiesPage`,{fields:a,...c("categories","reverse","start","end","author","cursor","activityId")},t).get())}async getIssueCustomFields(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/customFields`,{fields:a,...c("$top","$skip")},t).get())}async getIssueCustomFieldById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/customFields/${t}`,{fields:a},s).get())}async updateIssueCustomField(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/customFields/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async getIssueProject(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/project`,{fields:a},t).get())}async changeIssueProject(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/project`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async getIssueSprints(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/sprints`,{fields:a,...c("$skip","$top")},t).get())}}class m extends o{async getSavedQueries(e){return this.youtrack.fetch(new u("api/savedQueries",{fields:a,...c("$top","$skip")},e).get())}async createSavedQuery(e,t){return this.youtrack.fetch(new u("api/savedQueries",{fields:a},t).post(e))}async getSavedQueryById(e,t){return this.youtrack.fetch(new u(`api/savedQueries/${e}`,{fields:a},t).get())}async updateSavedQuery(e,t,s){return this.youtrack.fetch(new u(`api/savedQueries/${e}`,{fields:a},s).post(t))}async deleteSavedQuery(e,t){return this.youtrack.fetch(new u(`api/savedQueries/${e}`,{fields:a},t).delete())}}class k extends o{async getSearchSuggestions(e,t){return this.youtrack.fetch(new u("api/search/assist",{fields:a},t).post(e))}}class $ extends o{async getTags(e){return this.youtrack.fetch(new u("api/tags",{fields:a,$skip:"number",$top:"number",query:"string"},e).get())}async getTagById(e,t){return this.youtrack.fetch(new u(`api/tags/${e}`,{fields:a},t).get())}async createTag(e,t){return this.youtrack.fetch(new u("api/tags",{fields:a},t).post(e))}async updateTag(e,t,s){return this.youtrack.fetch(new u(`api/tags/${e}`,{fields:a},s).post(t))}async deleteTag(e,t){return this.youtrack.fetch(new u(`api/tags/${e}`,{fields:a},t).delete())}async getIssuesByTag(e,t){return this.youtrack.fetch(new u(`api/tags/${e}/issues`,{fields:a,...c("$skip","$top","customFields")},t).get())}}class w extends o{async getUsers(e){return this.youtrack.fetch(new u("api/users",{fields:a,...c("$skip","$top")},e).get())}async getUserProfile(e,t){return this.youtrack.fetch(new u(`api/users/${e}`,{fields:a},t).get())}async getUserGeneralProfile(e,t){return this.youtrack.fetch(new u(`api/users/${e}/profiles/general`,{fields:a},t).get())}async updateUserGeneralProfile(e,t,s){return this.youtrack.fetch(new u(`api/users/${e}/profiles/general`,{fields:a},s).post(t))}async getUserNotificationProfile(e,t){return this.youtrack.fetch(new u(`api/users/${e}/profiles/notifications`,{fields:a},t).get())}async updateUserNotificationProfile(e,t,s){return this.youtrack.fetch(new u(`api/users/${e}/profiles/notifications`,{fields:a},s).post(t))}async getUserTimeTrackingProfile(e,t){return this.youtrack.fetch(new u(`api/users/${e}/profiles/timetracking`,{fields:a},t).get())}async updateUserTimeTrackingProfile(e,t,s){return this.youtrack.fetch(new u(`api/users/${e}/profiles/timetracking`,{fields:a},s).post(t))}async getUserSavedQueries(e,t){return this.youtrack.fetch(new u(`api/users/${e}/savedQueries`,{fields:a,$skip:"number",$top:"number"},t).get())}async getUserTags(e,t){return this.youtrack.fetch(new u(`api/users/${e}/tags`,{fields:a,...c("$skip","$top")},t).get())}async getCurrentUserProfile(e){return this.youtrack.fetch(new u("api/users/me",{fields:a},e).get())}}class b extends o{async getWorkItems(e){return this.youtrack.fetch(new u("api/workItems",{fields:a,...c("$skip","$top","query","startDate","endDate","author","creator","start","end","createdStart","createdEnd","updatedStart","updatedEnd")},e).get())}async getWorkItem(e,t){return this.youtrack.fetch(new u(`api/workItems/${e}`,{fields:a},t).get())}}class S extends o{async getIssueComments(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/comments`,{fields:a,...c("$top","$skip")},t).get())}async createIssueComment(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/comments`,{fields:a,...c("draftId","muteUpdateNotifications")},s).post(t))}async getIssueCommentById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/comments/${t}`,{fields:a},s).get())}async updateIssueComment(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/comments/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async deleteIssueComment(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/comments/${t}`,{fields:a},s).delete())}async getIssueCommnetReaction(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/comments/${t}/reactions/${s}`,{fields:a},i).get())}async deleteIssueCommnetReaction(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/comments/${t}/reactions/${s}`,{fields:a},i).delete())}}class I extends o{async getIssueLinks(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/links`,{fields:a,...c("$top","$skip")},t).get())}async getIssueLinkById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/links/${t}`,{fields:a},s).get())}async getLinkedIssues(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/links/${t}/issues`,{fields:a,...c("$skip","$top")},s).get())}async linkIssue(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/links/${t}/issues`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async unlinkIssue(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/links/${t}/issues/${s}`,{fields:a},i).delete())}}class v extends o{async getIssueTags(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/tags`,{fields:a,...c("$top","$skip")},t).get())}async addTagToIssue(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/tags`,{fields:a},s).post(t))}async getIssueTagById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/tags/${t}`,{fields:a},s).get())}async deleteIssueTag(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/tags/${t}`,{fields:a},s).delete())}}class B extends o{async getIssueTimeTracking(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/timeTracking`,{fields:a},t).get())}async getIssueWorkItems(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/timeTracking/workItems`,{fields:a,...c("$top","$skip")},t).get())}async createIssueWorkItem(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/timeTracking/workItems`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async getIssueWorkItemById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/timeTracking/workItems/${t}`,{fields:a},s).get())}async updateWorkItem(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/timeTracking/workItems/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async deleteIssueWorkItem(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/timeTracking/workItems/${t}`,{fields:a},s).delete())}}class F extends o{async getIssueVcsChanges(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/vcsChanges`,{fields:a,...c("$top","$skip")},t).get())}async linkIssueVcsChange(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/vcsChanges`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async getIssueVcsChangeById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/vcsChanges/${t}`,{fields:a},s).get())}async updateIssueVcsChange(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/vcsChanges/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async detachIssueVcsChange(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/vcsChanges/${t}`,{fields:a},s).delete())}}class T extends o{async getIssueAttachments(e,t){return this.youtrack.fetch(new u(`api/issues/${e}/attachments`,{fields:a,...c("$skip","$top")},t).get())}async createIssueAttachment(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/attachments`,{fields:a,muteUpdateNotifications:"boolean"},s).postFile(t))}async getIssueAttachmentById(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/attachments/${t}`,{fields:a},s).get())}async updateIssueAttachment(e,t,s,i){return this.youtrack.fetch(new u(`api/issues/${e}/attachments/${t}`,{fields:a},i).post(s))}async deleteIssueAttachment(e,t,s){return this.youtrack.fetch(new u(`api/issues/${e}/attachments/${t}`,{fields:a},s).delete())}}class A extends o{async getProjects(e){return this.youtrack.fetch(new u("api/admin/projects",{fields:a,...c("$top","$skip")},e).get())}async createProject(e,t){return this.youtrack.fetch(new u("api/admin/projects",{fields:a,template:"string"},t).post(e))}async getProjectById(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}`,{fields:a},t).get())}async updateProject(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}`,{fields:a},s).post(t))}async deleteProject(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}`,{fields:a},t).delete())}async getProjectArticles(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}/articles`,{fields:a,...c("$top","$skip")},t).get())}async getProjectCustomFields(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}/customFields`,{fields:a,...c("$top","$skip")},t).get())}async addCustomFieldToProject(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/customFields`,{fields:a},s).post(t))}async getProjectCustomFieldById(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/customFields/${t}`,{fields:a},s).get())}async updateProjectCustomField(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/projects/${e}/customFields/${t}`,{fields:a},i).post(s))}async removeProjectCustomField(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/customFields/${t}`,{fields:a},s).delete())}async getProjectIssues(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}/issues`,{fields:a,...c("$top","$skip","customFields")},t).get())}async createProjectIssue(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/issues`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async getProjectIssueById(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/issues/${t}`,{fields:a},s).get())}async updateProjectIssue(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/projects/${e}/issues/${t}`,{fields:a,muteUpdateNotifications:"boolean"},i).post(s))}async deleteProjectIssue(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/issues/${t}`,{fields:a},s).delete())}async getProjectTimeTrackingSettings(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}/timeTrackingSettings`,{fields:a},t).get())}async updateProjectTimeTrackingSettings(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/timeTrackingSettings`,{fields:a},s).post(t))}async getProjectWorkItemTypes(e,t){return this.youtrack.fetch(new u(`api/admin/projects/${e}/timeTrackingSettings/workItemTypes`,{fields:a,...c("$top","$skip")},t).get())}async addProjectWorkItemType(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/timeTrackingSettings/workItems`,{fields:a,muteUpdateNotifications:"boolean"},s).post(t))}async getProjectWorkItemTypeById(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/timeTrackingSettings/workItems/${t}`,{fields:a},s).get())}async deleteProjectWorkItemType(e,t,s){return this.youtrack.fetch(new u(`api/admin/projects/${e}/timeTrackingSettings/workItems/${t}`,{fields:a},s).delete())}}class j extends o{async getBuildBundles(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/build",{fields:a,...c("$skip","$top")},e).get())}async createBuildBundle(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/build",{fields:a},t).post(e))}async getBuildBundleById(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}`,{fields:a},t).get())}async updateBuildBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}`,{fields:a},s).post(t))}async deleteBuildBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}`,{fields:a},t).delete())}async getBuildBundleValues(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}/values`,{fields:a,...c("$top","$skip")},t).get())}async addBuildToBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}/values`,{fields:a},s).post(t))}async getBuildFromBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}/values/${t}`,{fields:a},s).get())}async updateBuildInBundle(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}/values/${t}`,{fields:a},i).post(s))}async removeBuildFromBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/build/${e}/values/${t}`,{fields:a},s).delete())}}class U extends o{async getEnumBundles(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/enum",{fields:a,...c("$skip","$top")},e).get())}async createEnumBundle(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/enum",{fields:a},t).post(e))}async getEnumBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}`,{fields:a},t).get())}async updateEnumBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}`,{fields:a},s).post(t))}async deleteEnumBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}`,{fields:a},t).delete())}async getEnumBundleValues(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}/values`,{fields:a,...c("$top","$skip")},t).get())}async addEnumBundleValue(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}/values`,{fields:a},s).post(t))}async getEnumBundleValueById(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}/values/${t}`,{fields:a},s).get())}async updateEnumBundleValue(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}/values/${t}`,{fields:a},i).post(s))}async deleteEnumBundleValue(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/enum/${e}/values/${t}`,{fields:a},s).delete())}}class C extends o{async getOwnedBundles(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/owned",{fields:a,...c("$top","$skip")},e).get())}async createOwnedBundle(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/owned",{fields:a},t).post(e))}async getOwnedBundleById(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}`,{fields:a},t).get())}async updateOwnedBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}`,{fields:a},s).post(t))}async deleteOwnedBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}`,{fields:a},t).delete())}async getOwnedBundleValues(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}/values`,{fields:a,...c("$top","$skip")},t).get())}async addOwnedToBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}/values`,{fields:a},s).post(t))}async updateOwnedBundleValue(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}/values/${t}`,{fields:a},i).post(s))}async removeOwnedFromBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/owned/${e}/values/${t}`,{fields:a},s).delete())}}class P extends o{async getStateBundles(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/state",{fields:a,...c("$top","$skip")},e).get())}async createStateBundle(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/state",{fields:a},t).post(e))}async getStateBundleById(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}`,{fields:a},t).get())}async updateStateBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}`,{fields:a},s).post(t))}async deleteStateBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}`,{fields:a},t).delete())}async getStateBundleValues(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}/values`,{fields:a,...c("$top","$skip")},t).get())}async addStateToBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}/values`,{fields:a},s).post(t))}async updateStateBundleValue(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}/values/${t}`,{fields:a},i).post(s))}async removeStateFromBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/state/${e}/values/${t}`,{fields:a},s).delete())}}class O extends o{async getUserBundles(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/user",{fields:a,...c("$top","$skip")},e).get())}async createUserBundle(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/user",{fields:a},t).post(e))}async getUserBundleById(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}`,{fields:a},t).get())}async updateUserBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}`,{fields:a},s).post(t))}async deleteUserBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}`,{fields:a},t).delete())}async getUserBundleAggregatedUsers(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/aggregatedUsers`,{fields:a,...c("$top","$skip")},t).get())}async getUserBundleUserGroups(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/groups`,{fields:a,...c("$top","$skip")},t).get())}async addUserGroupToUserBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/groups`,{fields:a},s).post(t))}async getUserGroupInBundleById(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/groups/${t}`,{fields:a},s).get())}async deleteUserGroupFromUserBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/groups/${t}`,{fields:a},s).delete())}async getUserBundleIndividualUsers(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/individuals`,{fields:a,...c("$top","$skip")},t).get())}async addIndividualUserToUserBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/individuals`,{fields:a},s).post(t))}async getIndividualUserInBundleById(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/individuals/${t}`,{fields:a},s).get())}async removeIndividualUserFromUserBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/user/${e}/individuals/${t}`,{fields:a},s).delete())}}class x extends o{async getVersionBundles(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/version",{fields:a,...c("$top","$skip")},e).get())}async createVersionBundle(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/bundles/version",{fields:a},t).post(e))}async getVersionBundleById(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}`,{fields:a},t).get())}async updateVersionBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}`,{fields:a},s).post(t))}async deleteVersionBundle(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}`,{fields:a},t).delete())}async getVersionBundleValues(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}/values`,{fields:a,...c("$top","$skip")},t).get())}async addVersionToBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}/values`,{fields:a},s).post(t))}async updateVersionBundleValue(e,t,s,i){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}/values/${t}`,{fields:a},i).post(s))}async removeVersionFromBundle(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/bundles/version/${e}/values/${t}`,{fields:a},s).delete())}}class W extends o{async getWorkflows(e){return this.youtrack.fetch(new u("api/admin/workflows",{fields:a,...c("$top","$skip"),query:"string"},e).get())}async getWorkflowById(e,t){return this.youtrack.fetch(new u(`api/admin/workflows/${e}`,{fields:a},t).get())}async downloadWorkflow(e){const t=e.replace(/^@/,"");return this.youtrack.fetch({url:`api/admin/workflows/${t}`,method:"GET",headers:{Accept:"application/zip"}})}async uploadWorkflow(e,t){const s=new FormData;return s.append("file",t,`${e}.zip`),this.youtrack.fetch(new u("api/admin/workflows/import",{},{}).postFile(s))}async getWorkflowLogs(e,t,s){return this.youtrack.fetch(new u(`api/admin/workflows/${e}/rules/${t}/logs`,{fields:a,$top:"number",query:"string"},s).get())}async getWorkflowRule(e,t,s){return this.youtrack.fetch(new u(`api/admin/workflows/${e}/rules/${t}`,{fields:a,$top:"number",query:"string"},s).get())}}class V extends o{async getCustomFields(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/customFields",{fields:a,...c("$skip","$top")},e).get())}async createCustomField(e,t){return this.youtrack.fetch(new u("api/admin/customFieldSettings/customFields",{fields:a},t).post(e))}async getCustomFieldById(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/customFields/${e}`,{fields:a},t).get())}async updateCustomField(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/customFields/${e}`,{fields:a},s).post(t))}async deleteCustomField(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/customFields/${e}`,{fields:a},t).delete())}async getFieldTypes(e){return this.youtrack.fetch(new u("api/admin/customFieldSettings/types",{fields:a,...c("$top","$skip")},e).get())}async getCustomFieldDefaults(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/customFields/${e}/fieldDefaults`,{fields:a},t).get())}async updateCustomFieldDefaults(e,t,s){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/customFields/${e}/fieldDefaults`,{fields:a},s).post(t))}async getCustomFieldInstances(e,t){return this.youtrack.fetch(new u(`api/admin/customFieldSettings/customFields/${e}/instances`,{fields:a,...c("$top","$skip")},t).get())}}class N extends o{async getBackupFileData(e,t){return this.youtrack.fetch(new u(`api/admin/databaseBackup/backups/${e}`,{fields:a},t).get())}}class L extends o{async getGlobalSettings(e){return this.youtrack.fetch(new u("api/admin/globalSettings",{fields:a},e).get())}async updateGlobalSettings(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings",{fields:a},t).post(e))}async getAppearanceSettings(e){return this.youtrack.fetch(new u("api/admin/globalSettings/appearanceSettings",{fields:a},e).get())}async updateAppearanceSettings(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings/appearanceSettings",{fields:a},t).post(e))}async getLicense(e){return this.youtrack.fetch(new u("api/admin/globalSettings/license",{fields:a},e).get())}async updateLicense(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings/license",{fields:a},t).post(e))}async getLocaleSettings(e){return this.youtrack.fetch(new u("api/admin/globalSettings/localeSettings",{fields:a},e).get())}async updateLocaleSettings(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings/localeSettings",{fields:a},t).post(e))}async getNotificationSettings(e){return this.youtrack.fetch(new u("api/admin/globalSettings/notificationSettings",{fields:a},e).get())}async updateNotificationSettings(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings/notificationSettings",{fields:a},t).post(e))}async getRestSettings(e){return this.youtrack.fetch(new u("api/admin/globalSettings/restSettings",{fields:a},e).get())}async updateRestSettings(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings/restSettings",{fields:a},t).post(e))}async getSystemSettings(e){return this.youtrack.fetch(new u("api/admin/globalSettings/systemSettings",{fields:a},e).get())}async updateSystemSettings(e,t){return this.youtrack.fetch(new u("api/admin/globalSettings/systemSettings",{fields:a},t).post(e))}}class E extends o{async getTelemetryData(e){return this.youtrack.fetch(new u("api/admin/telemetry",{fields:a},e).get())}}class G extends o{async getDatabaseBackupSettings(e){return this.youtrack.fetch(new u("api/admin/databaseBackup/settings",{fields:a},e).get())}async updateDatabaseBackupSettings(e,t){return this.youtrack.fetch(new u("api/admin/databaseBackup/settings",{fields:a},t).post(e))}async getBackupStatus(e){return this.youtrack.fetch(new u("api/admin/databaseBackup/settings/backupStatus",{fields:a},e).get())}}class Q extends o{async getGlobalTimeTrackingSettings(e){return this.youtrack.fetch(new u("api/admin/timeTrackingSettings",{fields:a},e).get())}async getWorkItemTypes(e){return this.youtrack.fetch(new u("api/admin/timeTrackingSettings/workItemTypes",{fields:a,...c("$skip","$top")},e).get())}async createWorkItemType(e,t){return this.youtrack.fetch(new u("api/admin/timeTrackingSettings/workItemTypes",{fields:a},t).post(e))}async getWorkItemTypeById(e,t){return this.youtrack.fetch(new u(`api/admin/timeTrackingSettings/workItemTypes/${e}`,{fields:a},t).get())}async updateWorkItemType(e,t,s){return this.youtrack.fetch(new u(`api/admin/timeTrackingSettings/workItemTypes/${e}`,{fields:a},s).post(t))}async deleteWorkItemType(e,t){return this.youtrack.fetch(new u(`api/admin/timeTrackingSettings/workItemTypes/${e}`,{fields:a},t).delete())}async getWorkTimeSettings(e){return this.youtrack.fetch(new u("api/admin/timeTrackingSettings/workTimeSettings",{fields:a},e).get())}async updateWorkTimeSettings(e,t){return this.youtrack.fetch(new u("api/admin/timeTrackingSettings/workTimeSettings",{fields:a},t).post(e))}}class D{static client(e,t){return new D(e,(async({url:n,headers:a,data:r,...c})=>{const u=await fetch(s(e,n),{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json",...a},...r?{body:i(r)}:{},...c});if(!u.ok)throw new Error(`Error: ${u.status} ${u.statusText}`);return u.headers.get("content-type")?.startsWith("application/json")?u.json():u.blob()}))}static axiosClient(e,t,i){return new D(t,(async({url:n,headers:a,...r})=>{const c={url:s(t,n),headers:{Authorization:`Bearer ${i}`,Accept:"application/json;charset=utf-8","Content-Type":"application/json",...a},...r},u=await e.request(c);return u.headers["content-type"]?.startsWith("application/json")&&"string"==typeof u.data&&""!==u.data?JSON.parse(u.data):u.data}))}static widget(e){return new D("",(t=>{const{url:s,data:i,...n}=t;return e.fetchYouTrack(s.slice(4),{...i?{body:i}:{},...n})}))}constructor(e,t){Object.defineProperty(this,"baseUrl",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"fetch",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"Agiles",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Activities",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Articles",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Commands",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Groups",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueLinkTypes",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Issues",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueComments",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueLinks",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueTags",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueTimeTracking",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueVcsChanges",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"IssueAttachments",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"SavedQueries",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Search",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Tags",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Users",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"WorkItems",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"Admin",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.Agiles=new l(this),this.Activities=new d(this),this.Articles=new p(this),this.Commands=new h(this),this.Groups=new f(this),this.IssueLinkTypes=new y(this),this.Issues=new g(this),this.IssueComments=new S(this),this.IssueLinks=new I(this),this.IssueTags=new v(this),this.IssueTimeTracking=new B(this),this.IssueVcsChanges=new F(this),this.IssueAttachments=new T(this),this.SavedQueries=new m(this),this.Search=new k(this),this.Tags=new $(this),this.Users=new w(this),this.WorkItems=new b(this),this.Admin={Projects:new A(this),BuildBundles:new j(this),EnumBundles:new U(this),OwnedBundles:new C(this),StateBundles:new P(this),UserBundles:new O(this),VersionBundles:new x(this),CustomFields:new V(this),BackupFiles:new N(this),DatabaseBackupSettings:new G(this),GlobalSettings:new L(this),TelemetryData:new E(this),GlobalTimeTrackingSettings:new Q(this),Workflows:new W(this)}}}return e.ActivitiesApi=d,e.AgilesApi=l,e.ArticlesApi=p,e.BackupFilesApi=N,e.BuildBundlesApi=j,e.CommandsApi=h,e.CustomFieldsApi=V,e.DatabaseBackupSettingsApi=G,e.EnumBundlesApi=U,e.GlobalSettingsApi=L,e.GlobalTimeTrackingSettingsApi=Q,e.GroupsApi=f,e.IssueAttechmentsApi=T,e.IssueCommentsApi=S,e.IssueLinkTypesApi=y,e.IssueLinksApi=I,e.IssueTagsApi=v,e.IssueTimeTrackingApi=B,e.IssueVcsChangesApi=F,e.IssuesApi=g,e.OwnedBundlesApi=C,e.ProjectsApi=A,e.RequestBuilder=u,e.SavedQueriesApi=m,e.SearchApi=k,e.StateBundlesApi=P,e.TagsApi=$,e.TelemetryDataApi=E,e.UserBundlesApi=O,e.UsersApi=w,e.VersionBundlesApi=x,e.WorkItemsApi=b,e.WorkflowsApi=W,e.YouTrack=D,e.buildQueryParam=r,e.buildUri=(e,t={})=>Object.keys(t).reduce(((e,s)=>e.replace(`:${s}`,encodeURIComponent(t[s]))),e),e.createParamsMap=(e=[],t=[])=>e.reduce(((e,s,i)=>(e[s]=`${t[i]}`,e)),{}),e.customField=e=>r("customField",e),e.encodeBody=i,e.fields=a,e.isObject=t,e.joinUrl=s,e.queryParams=c,e.stringParam=e=>t=>r(e,t),e}({});
//# sourceMappingURL=youtrack-client.min.js.map