|
61 | 61 | import org.zendesk.client.v2.model.hc.Section;
|
62 | 62 | import org.zendesk.client.v2.model.hc.Subscription;
|
63 | 63 | import org.zendesk.client.v2.model.hc.Translation;
|
| 64 | +import org.zendesk.client.v2.model.hc.PermissionGroup; |
| 65 | +import org.zendesk.client.v2.model.hc.UserSegment; |
64 | 66 | import org.zendesk.client.v2.model.schedules.Holiday;
|
65 | 67 | import org.zendesk.client.v2.model.schedules.Schedule;
|
66 | 68 | import org.zendesk.client.v2.model.targets.BasecampTarget;
|
@@ -1735,6 +1737,162 @@ public void deleteDynamicContentItemVariant(Long itemId, DynamicContentItemVaria
|
1735 | 1737 | //////////////////////////////////////////////////////////////////////
|
1736 | 1738 | // Action methods for Help Center
|
1737 | 1739 | //////////////////////////////////////////////////////////////////////
|
| 1740 | + /** |
| 1741 | + * Get all permission groups |
| 1742 | + * |
| 1743 | + * @return List of Permission Groups |
| 1744 | + */ |
| 1745 | + public Iterable<PermissionGroup> getPermissionGroups() { |
| 1746 | + return new PagedIterable<>(cnst("/guide/permission_groups.json"), |
| 1747 | + handleList(PermissionGroup.class, "permission_groups")); |
| 1748 | + } |
| 1749 | + /** |
| 1750 | + * Get permission group by id |
| 1751 | + * |
| 1752 | + * @param id |
| 1753 | + */ |
| 1754 | + public PermissionGroup getPermissionGroup(long id) { |
| 1755 | + return complete(submit(req("GET", tmpl("/guide/permission_groups/{id}.json").set("id", id)), |
| 1756 | + handle(PermissionGroup.class, "permission_group"))); |
| 1757 | + } |
| 1758 | + /** |
| 1759 | + * Create permission group |
| 1760 | + * |
| 1761 | + * @param permissionGroup |
| 1762 | + */ |
| 1763 | + public PermissionGroup createPermissionGroup(PermissionGroup permissionGroup) { |
| 1764 | + return complete(submit(req("POST", tmpl("/guide/permission_groups.json"), |
| 1765 | + JSON, json(Collections.singletonMap("permission_group", permissionGroup))), handle(PermissionGroup.class, "permission_group"))); |
| 1766 | + } |
| 1767 | + /** |
| 1768 | + * Update permission group |
| 1769 | + * |
| 1770 | + * @param permissionGroup |
| 1771 | + */ |
| 1772 | + public PermissionGroup updatePermissionGroup(PermissionGroup permissionGroup) { |
| 1773 | + checkHasId(permissionGroup); |
| 1774 | + return complete(submit(req("PUT", tmpl("/guide/permission_groups/{id}.json").set("id", permissionGroup.getId()), |
| 1775 | + JSON, json(Collections.singletonMap("permission_group", permissionGroup))), handle(PermissionGroup.class, "permission_group"))); |
| 1776 | + } |
| 1777 | + /** |
| 1778 | + * Delete permission group |
| 1779 | + * |
| 1780 | + * @param permissionGroup |
| 1781 | + */ |
| 1782 | + public void deletePermissionGroup(PermissionGroup permissionGroup) { |
| 1783 | + checkHasId(permissionGroup); |
| 1784 | + deletePermissionGroup(permissionGroup.getId()); |
| 1785 | + } |
| 1786 | + /** |
| 1787 | + * Delete permission group |
| 1788 | + * |
| 1789 | + * @param id |
| 1790 | + */ |
| 1791 | + public void deletePermissionGroup(long id) { |
| 1792 | + complete(submit(req("DELETE", tmpl("/guide/permission_groups/{id}.json").set("id", id)), |
| 1793 | + handleStatus())); |
| 1794 | + } |
| 1795 | + /** |
| 1796 | + * Get user segments |
| 1797 | + * |
| 1798 | + * @return List of User Segments |
| 1799 | + */ |
| 1800 | + public Iterable<UserSegment> getUserSegments() { |
| 1801 | + return new PagedIterable<>(cnst("/help_center/user_segments.json"), |
| 1802 | + handleList(UserSegment.class, "user_segments")); |
| 1803 | + } |
| 1804 | + /** |
| 1805 | + * Returns the list of user segments that a particular user belongs to |
| 1806 | + * |
| 1807 | + * @return List of User Segments |
| 1808 | + */ |
| 1809 | + public Iterable<UserSegment> getUserSegments(long id) { |
| 1810 | + return new PagedIterable<>(tmpl("/help_center/users/{id}/user_segments.json").set("id", id), |
| 1811 | + handleList(UserSegment.class, "user_segments")); |
| 1812 | + } |
| 1813 | + /** |
| 1814 | + * Request only user segments applicable on the account's current Guide plan |
| 1815 | + * |
| 1816 | + * @return List of User Segments |
| 1817 | + */ |
| 1818 | + public Iterable<UserSegment> getUserSegmentsApplicable() { |
| 1819 | + return new PagedIterable<>(cnst("/help_center/user_segments/applicable.json"), |
| 1820 | + handleList(UserSegment.class, "user_segments")); |
| 1821 | + } |
| 1822 | + /** |
| 1823 | + * Get user segment by id |
| 1824 | + * |
| 1825 | + * @param id |
| 1826 | + */ |
| 1827 | + public UserSegment getUserSegment(long id) { |
| 1828 | + return complete(submit(req("GET", tmpl("/help_center/user_segments/{id}.json").set("id", id)), |
| 1829 | + handle(UserSegment.class, "user_segment"))); |
| 1830 | + } |
| 1831 | + |
| 1832 | + /** |
| 1833 | + * List Sections using a User Segment |
| 1834 | + * |
| 1835 | + * @param userSegment |
| 1836 | + * @return List of Sections |
| 1837 | + */ |
| 1838 | + public Iterable<Section> getSections(UserSegment userSegment) { |
| 1839 | + checkHasId(userSegment); |
| 1840 | + return new PagedIterable<>( |
| 1841 | + tmpl("/help_center/user_segments/{id}/sections.json").set("id", userSegment.getId()), |
| 1842 | + handleList(Section.class, "sections")); |
| 1843 | + } |
| 1844 | + |
| 1845 | + /** |
| 1846 | + * List Topics using a User Segment |
| 1847 | + * |
| 1848 | + * @param userSegment |
| 1849 | + * @return List of Topics |
| 1850 | + */ |
| 1851 | + public Iterable<Topic> getTopics(UserSegment userSegment) { |
| 1852 | + checkHasId(userSegment); |
| 1853 | + return new PagedIterable<>( |
| 1854 | + tmpl("/help_center/user_segments/{id}/topics.json").set("id", userSegment.getId()), |
| 1855 | + handleList(Topic.class, "topics")); |
| 1856 | + } |
| 1857 | + |
| 1858 | + /** |
| 1859 | + * Create User Segment |
| 1860 | + * |
| 1861 | + * @param userSegment |
| 1862 | + */ |
| 1863 | + public UserSegment createUserSegment(UserSegment userSegment) { |
| 1864 | + return complete(submit(req("POST", tmpl("/help_center/user_segments.json"), |
| 1865 | + JSON, json(Collections.singletonMap("user_segment", userSegment))), handle(UserSegment.class, "user_segment"))); |
| 1866 | + } |
| 1867 | + /** |
| 1868 | + * Update User Segment |
| 1869 | + * |
| 1870 | + * @param userSegment |
| 1871 | + */ |
| 1872 | + public UserSegment updateUserSegment(UserSegment userSegment) { |
| 1873 | + checkHasId(userSegment); |
| 1874 | + return complete(submit(req("PUT", tmpl("/help_center/user_segments/{id}.json").set("id", userSegment.getId()), |
| 1875 | + JSON, json(Collections.singletonMap("user_segment", userSegment))), handle(UserSegment.class, "user_segment"))); |
| 1876 | + } |
| 1877 | + /** |
| 1878 | + * Delete User Segment |
| 1879 | + * |
| 1880 | + * @param userSegment |
| 1881 | + */ |
| 1882 | + public void deleteUserSegment(UserSegment userSegment) { |
| 1883 | + checkHasId(userSegment); |
| 1884 | + deleteUserSegment(userSegment.getId()); |
| 1885 | + } |
| 1886 | + |
| 1887 | + /** |
| 1888 | + * Delete User Segment |
| 1889 | + * |
| 1890 | + * @param id |
| 1891 | + */ |
| 1892 | + public void deleteUserSegment(long id) { |
| 1893 | + complete(submit(req("DELETE", tmpl("/help_center/user_segments/{id}.json").set("id", id)), |
| 1894 | + handleStatus())); |
| 1895 | + } |
1738 | 1896 |
|
1739 | 1897 | public List<String> getHelpCenterLocales() {
|
1740 | 1898 | return complete(submit(
|
@@ -1787,6 +1945,17 @@ public Article createArticle(Article article) {
|
1787 | 1945 | JSON, json(Collections.singletonMap("article", article))), handle(Article.class, "article")));
|
1788 | 1946 | }
|
1789 | 1947 |
|
| 1948 | + public Article createArticle(Article article, boolean notifySubscribers) { |
| 1949 | + checkHasSectionId(article); |
| 1950 | + |
| 1951 | + Map map = new HashMap<String, Object>(); |
| 1952 | + map.put("article", article); |
| 1953 | + map.put("notify_subscribers", notifySubscribers ? String.valueOf("true") : String.valueOf("false")); |
| 1954 | + |
| 1955 | + return complete(submit(req("POST", tmpl("/help_center/sections/{id}/articles.json").set("id", article.getSectionId()), |
| 1956 | + JSON, json(Collections.unmodifiableMap(map))), handle(Article.class, "article"))); |
| 1957 | + } |
| 1958 | + |
1790 | 1959 | public Article updateArticle(Article article) {
|
1791 | 1960 | checkHasId(article);
|
1792 | 1961 | return complete(submit(req("PUT", tmpl("/help_center/articles/{id}.json").set("id", article.getId()),
|
@@ -2555,6 +2724,18 @@ private static void checkHasId(Holiday holiday) {
|
2555 | 2724 | }
|
2556 | 2725 | }
|
2557 | 2726 |
|
| 2727 | + private static void checkHasId(PermissionGroup permissionGroup) { |
| 2728 | + if (permissionGroup.getId() == null) { |
| 2729 | + throw new IllegalArgumentException("PermissionGroup requires id"); |
| 2730 | + } |
| 2731 | + } |
| 2732 | + |
| 2733 | + private static void checkHasId(UserSegment userSegment) { |
| 2734 | + if (userSegment.getId() == null) { |
| 2735 | + throw new IllegalArgumentException("UserSegment requires id"); |
| 2736 | + } |
| 2737 | + } |
| 2738 | + |
2558 | 2739 | private static void checkHasToken(Attachment.Upload upload) {
|
2559 | 2740 | if (upload.getToken() == null) {
|
2560 | 2741 | throw new IllegalArgumentException("Upload requires token");
|
|
0 commit comments