ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jai...@apache.org
Subject [19/19] ambari git commit: AMBARI-20436. Create a prototype of ambari-server swagger integration. (jaimin)
Date Mon, 20 Mar 2017 21:31:18 GMT
AMBARI-20436. Create a prototype of ambari-server swagger integration. (jaimin)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fb86fb3b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fb86fb3b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fb86fb3b

Branch: refs/heads/ambari-rest-api-explorer
Commit: fb86fb3bafa1479651836db3197f1b2023b08a2f
Parents: 785d7da
Author: Jaimin Jetly <jaimin@hortonworks.com>
Authored: Mon Mar 20 14:26:55 2017 -0700
Committer: Jaimin Jetly <jaimin@hortonworks.com>
Committed: Mon Mar 20 14:26:55 2017 -0700

----------------------------------------------------------------------
 LICENSE.txt                                     |    17 +
 .../docs/api/asciidoc/definitions.adoc          |   321 +
 ambari-server/docs/api/asciidoc/overview.adoc   |    23 +
 ambari-server/docs/api/asciidoc/paths.adoc      |  1264 +
 ambari-server/pom.xml                           |    81 +
 .../api/services/ActiveWidgetLayoutService.java |    76 -
 .../api/services/GroupPrivilegeService.java     |    77 -
 .../server/api/services/GroupService.java       |   155 -
 .../server/api/services/MemberService.java      |   163 -
 .../api/services/UserAuthorizationService.java  |   103 -
 .../api/services/UserPrivilegeService.java      |    79 -
 .../ambari/server/api/services/UserService.java |   175 -
 .../api/services/ViewDataMigrationService.java  |   122 -
 .../ViewExternalSubResourceService.java         |   146 -
 .../api/services/ViewInstanceService.java       |   282 -
 .../api/services/ViewPermissionService.java     |   186 -
 .../api/services/ViewPrivilegeService.java      |    55 -
 .../ambari/server/api/services/ViewService.java |   162 -
 .../api/services/ViewSubResourceService.java    |   134 -
 .../server/api/services/ViewVersionService.java |   199 -
 .../services/groups/GroupPrivilegeService.java  |   113 +
 .../api/services/groups/GroupService.java       |   177 +
 .../api/services/groups/MemberService.java      |   200 +
 .../users/ActiveWidgetLayoutService.java        |   111 +
 .../users/UserAuthorizationService.java         |   120 +
 .../services/users/UserPrivilegeService.java    |   113 +
 .../server/api/services/users/UserService.java  |   193 +
 .../views/ViewDataMigrationService.java         |   113 +
 .../views/ViewExternalSubResourceService.java   |   148 +
 .../api/services/views/ViewInstanceService.java |   313 +
 .../services/views/ViewPermissionService.java   |   208 +
 .../services/views/ViewPrivilegeService.java    |   268 +
 .../server/api/services/views/ViewService.java  |   181 +
 .../services/views/ViewSubResourceService.java  |   136 +
 .../api/services/views/ViewVersionService.java  |   208 +
 .../controller/ActiveWidgetLayoutRequest.java   |    66 +
 .../controller/ActiveWidgetLayoutResponse.java  |   142 +
 .../ambari/server/controller/ApiModel.java      |    28 +
 .../controller/GroupPrivilegeResponse.java      |    61 +
 .../ambari/server/controller/GroupRequest.java  |     5 +-
 .../ambari/server/controller/GroupResponse.java |     7 +-
 .../ambari/server/controller/MemberRequest.java |     4 +
 .../server/controller/MemberResponse.java       |     6 +-
 .../server/controller/PrivilegeResponse.java    |   175 +
 .../controller/UserAuthorizationResponse.java   |   153 +
 .../controller/UserPrivilegeResponse.java       |    61 +
 .../ambari/server/controller/UserRequest.java   |    17 +-
 .../ambari/server/controller/UserResponse.java  |    48 +-
 .../server/controller/ViewInstanceRequest.java  |   209 +
 .../server/controller/ViewInstanceResponse.java |   198 +
 .../controller/ViewPermissionResponse.java      |   122 +
 .../server/controller/ViewPrivilegeRequest.java |    79 +
 .../controller/ViewPrivilegeResponse.java       |    55 +
 .../ambari/server/controller/ViewResponse.java  |    82 +
 .../server/controller/ViewVersionResponse.java  |   234 +
 .../ActiveWidgetLayoutResourceProvider.java     |    59 +-
 .../GroupPrivilegeResourceProvider.java         |    80 +-
 .../UserAuthorizationResourceProvider.java      |    64 +-
 .../internal/UserPrivilegeResourceProvider.java |    82 +-
 .../ViewPermissionResourceProvider.java         |    44 +-
 .../internal/ViewVersionResourceProvider.java   |    61 +-
 .../orm/entities/PrincipalTypeEntity.java       |    12 +-
 .../server/security/authorization/User.java     |    12 +
 .../apache/ambari/server/view/ViewRegistry.java |     4 +-
 .../services/ActiveWidgetLayoutServiceTest.java |    75 -
 .../api/services/GroupPrivilegeServiceTest.java |   111 -
 .../server/api/services/GroupServiceTest.java   |     1 +
 .../server/api/services/MemberServiceTest.java  |   110 -
 .../services/UserAuthorizationServiceTest.java  |   100 -
 .../api/services/UserPrivilegeServiceTest.java  |   124 -
 .../services/ViewDataMigrationServiceTest.java  |    81 -
 .../ViewExternalSubResourceServiceTest.java     |    50 -
 .../api/services/ViewPermissionServiceTest.java |   101 -
 .../services/ViewSubResourceServiceTest.java    |     1 +
 .../views/ViewDataMigrationServiceTest.java     |    81 +
 .../ViewExternalSubResourceServiceTest.java     |    50 +
 .../GroupPrivilegeResourceProviderTest.java     |    13 +-
 .../UserPrivilegeResourceProviderTest.java      |    13 +-
 ambari-web/api-docs/css/api-explorer.css        |  2426 ++
 ambari-web/api-docs/css/index.css               | 17432 +++++++++++++
 ambari-web/api-docs/css/print.css               |  1167 +
 ambari-web/api-docs/css/reset.css               |   125 +
 ambari-web/api-docs/css/screen.css              |     9 +
 ambari-web/api-docs/css/standalone.css          |   294 +
 ambari-web/api-docs/css/typography.css          |    26 +
 .../api-docs/fonts/droid-sans-v6-latin-700.eot  |   Bin 0 -> 22922 bytes
 .../api-docs/fonts/droid-sans-v6-latin-700.svg  |   411 +
 .../api-docs/fonts/droid-sans-v6-latin-700.ttf  |   Bin 0 -> 40513 bytes
 .../api-docs/fonts/droid-sans-v6-latin-700.woff |   Bin 0 -> 25992 bytes
 .../fonts/droid-sans-v6-latin-700.woff2         |   Bin 0 -> 11480 bytes
 .../fonts/droid-sans-v6-latin-regular.eot       |   Bin 0 -> 22008 bytes
 .../fonts/droid-sans-v6-latin-regular.svg       |   403 +
 .../fonts/droid-sans-v6-latin-regular.ttf       |   Bin 0 -> 39069 bytes
 .../fonts/droid-sans-v6-latin-regular.woff      |   Bin 0 -> 24868 bytes
 .../fonts/droid-sans-v6-latin-regular.woff2     |   Bin 0 -> 11304 bytes
 ambari-web/api-docs/images/Swagger_explorer.png |   Bin 0 -> 108087 bytes
 .../api-docs/images/Swagger_explorer_min.png    |   Bin 0 -> 46646 bytes
 ambari-web/api-docs/images/explorer_icons.png   |   Bin 0 -> 5763 bytes
 ambari-web/api-docs/images/favicon-16x16.png    |   Bin 0 -> 645 bytes
 ambari-web/api-docs/images/favicon-32x32.png    |   Bin 0 -> 1654 bytes
 ambari-web/api-docs/images/favicon.ico          |   Bin 0 -> 5430 bytes
 .../api-docs/images/json_editor_integration.png |   Bin 0 -> 63019 bytes
 ambari-web/api-docs/images/logo_small.png       |   Bin 0 -> 770 bytes
 ambari-web/api-docs/images/pet_store_api.png    |   Bin 0 -> 824 bytes
 ambari-web/api-docs/images/senodio.png          |   Bin 0 -> 22838 bytes
 ambari-web/api-docs/images/throbber.gif         |   Bin 0 -> 9257 bytes
 ambari-web/api-docs/images/wordnik_api.png      |   Bin 0 -> 980 bytes
 ambari-web/api-docs/index.html                  |   241 +
 ambari-web/api-docs/lib/backbone-min.js         |    15 +
 ambari-web/api-docs/lib/bootstrap.min.js        |     6 +
 ambari-web/api-docs/lib/handlebars-2.0.0.js     |    28 +
 ambari-web/api-docs/lib/highlight.7.3.pack.js   |     1 +
 ambari-web/api-docs/lib/jquery-1.8.0.min.js     |     2 +
 ambari-web/api-docs/lib/jquery.ba-bbq.min.js    |    18 +
 ambari-web/api-docs/lib/jquery.slideto.min.js   |     1 +
 ambari-web/api-docs/lib/jquery.wiggle.min.js    |     8 +
 ambari-web/api-docs/lib/jsoneditor.js           |  7287 ++++++
 ambari-web/api-docs/lib/marked.js               |  1272 +
 ambari-web/api-docs/lib/swagger-oauth.js        |   286 +
 ambari-web/api-docs/lib/underscore-min.js       |     6 +
 ambari-web/api-docs/lib/underscore-min.map      |     1 +
 ambari-web/api-docs/o2c.html                    |    20 +
 ambari-web/api-docs/swagger-ui.js               | 22644 +++++++++++++++++
 ambari-web/api-docs/swagger-ui.min.js           |    12 +
 ambari-web/brunch-config.js                     |     3 +-
 ambari-web/pom.xml                              |     1 +
 126 files changed, 60634 insertions(+), 3014 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/LICENSE.txt
----------------------------------------------------------------------
diff --git a/LICENSE.txt b/LICENSE.txt
index f05016f..4079cc0 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -836,6 +836,23 @@ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
+For swagger-ui (ambari-web/api-docs/*):
+Home:   https://github.com/jensoleg/swagger-ui
+License:  Apache License, Version 2.0
+
+Copyright 2015 Reverb Technologies, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at [apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
 For simplejson (ambari-common/src/main/python/ambari_simplejson)
 
 simplejson is dual-licensed software. It is available under the terms

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/docs/api/asciidoc/definitions.adoc
----------------------------------------------------------------------
diff --git a/ambari-server/docs/api/asciidoc/definitions.adoc b/ambari-server/docs/api/asciidoc/definitions.adoc
new file mode 100644
index 0000000..76beb8c
--- /dev/null
+++ b/ambari-server/docs/api/asciidoc/definitions.adoc
@@ -0,0 +1,321 @@
+== Definitions
+=== ActiveWidgetLayoutRequest
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|WidgetLayouts||false|<<WidgetLayoutIdWrapper>> array|
+|===
+
+=== ActiveWidgetLayoutResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|WidgetLayoutInfo/cluster_name||false|string|
+|WidgetLayoutInfo/display_name||false|string|
+|WidgetLayoutInfo/layout_name||false|string|
+|WidgetLayoutInfo/scope||false|string|
+|WidgetLayoutInfo/section_name||false|string|
+|WidgetLayoutInfo/user_name||false|string|
+|WidgetLayoutInfo/widgets||false|object array|
+|===
+
+=== GroupPrivilegeResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|PrivilegeInfo/permission_label||false|string|
+|PrivilegeInfo/privilege_id||false|integer (int32)|
+|PrivilegeInfo/permission_name||false|string|
+|PrivilegeInfo/principal_type||false|enum (USER, GROUP, ROLE)|
+|PrivilegeInfo/principal_name||false|string|
+|PrivilegeInfo/type||false|enum (AMBARI, CLUSTER, VIEW)|
+|PrivilegeInfo/cluster_name||false|string|
+|PrivilegeInfo/view_name||false|string|
+|PrivilegeInfo/version||false|string|
+|PrivilegeInfo/instance_name||false|string|
+|PrivilegeInfo/group_name||true|string|
+|===
+
+=== GroupRequest
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|Groups/group_name||true|string|
+|===
+
+=== GroupResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|Groups/group_name||false|string|
+|Groups/ldap_group||false|boolean|false
+|Groups/group_type||false|enum (LOCAL, LDAP, JWT, PAM)|
+|===
+
+=== MemberRequest
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|MemberInfo/group_name||true|string|
+|MemberInfo/user_name||true|string|
+|===
+
+=== MemberResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|MemberInfo/group_name||false|string|
+|MemberInfo/user_name||false|string|
+|===
+
+=== ParameterConfig
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|name||false|string|
+|description||false|string|
+|label||false|string|
+|placeholder||false|string|
+|defaultValue||false|string|
+|clusterConfig||false|string|
+|required||false|boolean|false
+|masked||false|boolean|false
+|===
+
+=== PrivilegeResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|PrivilegeInfo/permission_label||false|string|
+|PrivilegeInfo/privilege_id||false|integer (int32)|
+|PrivilegeInfo/permission_name||false|string|
+|PrivilegeInfo/principal_type||false|enum (USER, GROUP, ROLE)|
+|PrivilegeInfo/principal_name||false|string|
+|PrivilegeInfo/type||false|enum (AMBARI, CLUSTER, VIEW)|
+|PrivilegeInfo/cluster_name||false|string|
+|PrivilegeInfo/view_name||false|string|
+|PrivilegeInfo/version||false|string|
+|PrivilegeInfo/instance_name||false|string|
+|===
+
+=== UserAuthorizationResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|AuthorizationInfo/authorization_id||false|string|
+|AuthorizationInfo/authorization_name||false|string|
+|AuthorizationInfo/resource_type||false|string|
+|AuthorizationInfo/user_name||true|string|
+|AuthorizationInfo/cluster_name||false|string|
+|AuthorizationInfo/view_name||false|string|
+|AuthorizationInfo/view_version||false|string|
+|AuthorizationInfo/view_instance_name||false|string|
+|===
+
+=== UserPrivilegeResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|PrivilegeInfo/permission_label||false|string|
+|PrivilegeInfo/privilege_id||false|integer (int32)|
+|PrivilegeInfo/permission_name||false|string|
+|PrivilegeInfo/principal_type||false|enum (USER, GROUP, ROLE)|
+|PrivilegeInfo/principal_name||false|string|
+|PrivilegeInfo/type||false|enum (AMBARI, CLUSTER, VIEW)|
+|PrivilegeInfo/cluster_name||false|string|
+|PrivilegeInfo/view_name||false|string|
+|PrivilegeInfo/version||false|string|
+|PrivilegeInfo/instance_name||false|string|
+|PrivilegeInfo/user_name||true|string|
+|===
+
+=== UserRequest
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|Users/password||false|string|
+|Users/old_password||false|string|
+|Users/active||false|boolean|false
+|Users/admin||false|boolean|false
+|===
+
+=== UserResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|Users/user_type||false|enum (LOCAL, LDAP, JWT, PAM)|
+|Users/groups||false|string array|
+|Users/user_name||true|string|
+|Users/active||false|boolean|false
+|Users/admin||false|boolean|false
+|Users/ldap_user||false|boolean|false
+|===
+
+=== ValidationResult
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|detail||false|string|
+|valid||false|boolean|false
+|===
+
+=== ViewInfo
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|view_name||false|string|
+|===
+
+=== ViewInstanceRequest
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|ViewInstanceInfo||false|<<ViewInstanceRequestInfo>>|
+|===
+
+=== ViewInstanceRequestInfo
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|label||false|string|
+|description||false|string|
+|visible||false|boolean|false
+|icon_path||false|string|
+|icon64_path||false|string|
+|properties||false|object|
+|instance_data||false|object|
+|cluster_handle||false|integer (int32)|
+|cluster_type||false|enum (LOCAL_AMBARI, REMOTE_AMBARI, NONE)|
+|===
+
+=== ViewInstanceResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|ViewInstanceInfo||false|<<ViewInstanceResponseInfo>>|
+|===
+
+=== ViewInstanceResponseInfo
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|view_name||false|string|
+|version||false|string|
+|instance_name||false|string|
+|label||false|string|
+|description||false|string|
+|visible||false|boolean|false
+|icon_path||false|string|
+|icon64_path||false|string|
+|properties||false|object|
+|instance_data||false|object|
+|cluster_handle||false|integer (int32)|
+|cluster_type||false|enum (LOCAL_AMBARI, REMOTE_AMBARI, NONE)|
+|context_path||false|string|
+|static||false|boolean|false
+|short_url||false|string|
+|short_url_name||false|string|
+|validation_result||false|<<ValidationResult>>|
+|property_validation_results||false|object|
+|===
+
+=== ViewPermissionInfo
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|view_name||false|string|
+|version||false|string|
+|permission_id||false|integer (int32)|
+|permission_name||false|string|
+|resource_name||false|string|
+|===
+
+=== ViewPermissionResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|ViewPermissionInfo||false|<<ViewPermissionInfo>>|
+|===
+
+=== ViewPrivilegeRequest
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|PrivilegeInfo/permission_name||false|string|
+|PrivilegeInfo/principal_type||false|enum (USER, GROUP, ROLE)|
+|PrivilegeInfo/principal_name||false|string|
+|===
+
+=== ViewPrivilegeResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|PrivilegeInfo/permission_label||false|string|
+|PrivilegeInfo/privilege_id||false|integer (int32)|
+|PrivilegeInfo/permission_name||false|string|
+|PrivilegeInfo/principal_type||false|enum (USER, GROUP, ROLE)|
+|PrivilegeInfo/principal_name||false|string|
+|PrivilegeInfo/view_name||false|string|
+|PrivilegeInfo/version||false|string|
+|PrivilegeInfo/instance_name||false|string|
+|===
+
+=== ViewResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|ViewInfo||false|<<ViewInfo>>|
+|===
+
+=== ViewVersionInfo
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|archive||false|string|
+|build_number||false|string|
+|cluster_configurable||false|boolean|false
+|description||false|string|
+|label||false|string|
+|masker_class||false|string|
+|max_ambari_version||false|string|
+|min_ambari_version||false|string|
+|parameters||false|<<ParameterConfig>> array|
+|status||false|enum (PENDING, DEPLOYING, DEPLOYED, ERROR)|
+|status_detail||false|string|
+|system||false|boolean|false
+|version||false|string|
+|view_name||false|string|
+|===
+
+=== ViewVersionResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|ViewVersionInfo||false|<<ViewVersionInfo>>|
+|===
+
+=== WidgetLayoutIdWrapper
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|id||false|integer (int64)|
+|===
+
+=== WidgetResponse
+[options="header"]
+|===
+|Name|Description|Required|Schema|Default
+|id||false|integer (int64)|
+|widgetName||false|string|
+|widgetType||false|string|
+|metrics||false|string|
+|timeCreated||false|integer (int64)|
+|author||false|string|
+|description||false|string|
+|displayName||false|string|
+|scope||false|string|
+|widgetValues||false|string|
+|properties||false|string|
+|clusterName||false|string|
+|===
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/docs/api/asciidoc/overview.adoc
----------------------------------------------------------------------
diff --git a/ambari-server/docs/api/asciidoc/overview.adoc b/ambari-server/docs/api/asciidoc/overview.adoc
new file mode 100644
index 0000000..e9e5649
--- /dev/null
+++ b/ambari-server/docs/api/asciidoc/overview.adoc
@@ -0,0 +1,23 @@
+= Swagger spec for Ambari REST API
+
+== Overview
+Ambari REST APIs has inherent support for querying, sorting and pagination
+
+=== Version information
+Version: v1
+
+=== License information
+License: Apache License, Version 2.0
+License URL: http://www.apache.org/licenses/LICENSE-2.0
+
+=== URI scheme
+BasePath: /api/v1
+Schemes: HTTP, HTTPS
+
+=== Tags
+
+* Groups: Endpoint for group specific operations
+* Users: Endpoint for user specific operations
+* Views
+
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/docs/api/asciidoc/paths.adoc
----------------------------------------------------------------------
diff --git a/ambari-server/docs/api/asciidoc/paths.adoc b/ambari-server/docs/api/asciidoc/paths.adoc
new file mode 100644
index 0000000..d756051
--- /dev/null
+++ b/ambari-server/docs/api/asciidoc/paths.adoc
@@ -0,0 +1,1264 @@
+== Paths
+=== Create new group
+----
+POST /groups
+----
+
+==== Description
+:hardbreaks:
+Creates group resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|BodyParameter|body|input parameters in json form|true|<<GroupRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get all groups
+----
+GET /groups
+----
+
+==== Description
+:hardbreaks:
+Returns details of all groups.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|QueryParameter|fields|Filter group details|false|string|Groups/*
+|QueryParameter|sortBy|Sort groups (asc | desc)|false|string|Groups/group_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful retrieval of all group entries|<<GroupResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get group
+----
+GET /groups/{groupName}
+----
+
+==== Description
+:hardbreaks:
+Returns group details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|QueryParameter|fields|Filter group details|false|string|Groups
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful retrieval of group resource|<<GroupResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Delete group
+----
+DELETE /groups/{groupName}
+----
+
+==== Description
+:hardbreaks:
+Delete group resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get all group members
+----
+GET /groups/{groupName}/members
+----
+
+==== Description
+:hardbreaks:
+Returns details of all members.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|QueryParameter|fields|Filter member details|false|string|MemberInfo/*
+|QueryParameter|sortBy|Sort members (asc | desc)|false|string|MemberInfo/user_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<MemberResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Update group members
+----
+PUT /groups/{groupName}/members
+----
+
+==== Description
+:hardbreaks:
+Updates group member resources.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<MemberRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get group member
+----
+GET /groups/{groupName}/members/{userName}
+----
+
+==== Description
+:hardbreaks:
+Returns member details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|PathParameter|userName|user name|true|string|
+|QueryParameter|fields|Filter member details|false|string|MemberInfo
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<MemberResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Delete group member
+----
+DELETE /groups/{groupName}/members/{userName}
+----
+
+==== Description
+:hardbreaks:
+Delete member resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|PathParameter|userName|user name|true|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get all privileges
+----
+GET /groups/{groupName}/privileges
+----
+
+==== Description
+:hardbreaks:
+Returns all privileges for group.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|groupName|group name|true|string|
+|QueryParameter|fields|Filter user privileges|false|string|PrivilegeInfo/*
+|QueryParameter|sortBy|Sort user privileges (asc | desc)|false|string|PrivilegeInfo/user_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|successful operation|<<GroupPrivilegeResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get group privilege
+----
+GET /groups/{groupName}/privileges/{privilegeId}
+----
+
+==== Description
+:hardbreaks:
+Returns group privilege details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|PathParameter|privilegeId|privilege id|true|string|
+|QueryParameter|fields|Filter group privilege details|false|string|PrivilegeInfo/*
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<PrivilegeResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Groups
+
+=== Get all users
+----
+GET /users
+----
+
+==== Description
+:hardbreaks:
+Returns details of all users.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|QueryParameter|fields|Filter user details|false|string|Users/*
+|QueryParameter|sortBy|Sort users (asc | desc)|false|string|Users/user_name.desc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<UserResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Create new user
+----
+POST /users/{userName}
+----
+
+==== Description
+:hardbreaks:
+Creates user resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<UserRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get single user
+----
+GET /users/{userName}
+----
+
+==== Description
+:hardbreaks:
+Returns user details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|admin
+|QueryParameter|fields|Filter user details|false|string|Users
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<UserResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Delete single user
+----
+DELETE /users/{userName}
+----
+
+==== Description
+:hardbreaks:
+Delete user resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Update user detail
+----
+PUT /users/{userName}
+----
+
+==== Description
+:hardbreaks:
+Updates user resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<UserRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get user widget layouts
+----
+GET /users/{userName}/activeWidgetLayouts
+----
+
+==== Description
+:hardbreaks:
+Returns all active widget layouts for user.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|QueryParameter|fields|Filter user layout details|false|string|WidgetLayoutInfo/*
+|QueryParameter|sortBy|Sort layouts (asc | desc)|false|string|WidgetLayoutInfo/user_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|successful operation|<<ActiveWidgetLayoutResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Update user widget layouts
+----
+PUT /users/{userName}/activeWidgetLayouts
+----
+
+==== Description
+:hardbreaks:
+Updates user widget layout.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<ActiveWidgetLayoutRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get all authorizations
+----
+GET /users/{userName}/authorizations
+----
+
+==== Description
+:hardbreaks:
+Returns all authorization for user.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|QueryParameter|fields|Filter user authorization details|false|string|AuthorizationInfo/*
+|QueryParameter|sortBy|Sort user authorizations (asc | desc)|false|string|AuthorizationInfo/user_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|successful operation|<<UserAuthorizationResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get user authorization
+----
+GET /users/{userName}/authorizations/{authorization_id}
+----
+
+==== Description
+:hardbreaks:
+Returns user authorization details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|PathParameter|authorization_id|Authorization Id|true|string|
+|QueryParameter|fields|Filter user authorization details|false|string|AuthorizationInfo/*
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<UserAuthorizationResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get all privileges
+----
+GET /users/{userName}/privileges
+----
+
+==== Description
+:hardbreaks:
+Returns all privileges for user.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|admin
+|QueryParameter|fields|Filter user privileges|false|string|PrivilegeInfo/*
+|QueryParameter|sortBy|Sort user privileges (asc | desc)|false|string|PrivilegeInfo/user_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|successful operation|<<UserPrivilegeResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get user privilege
+----
+GET /users/{userName}/privileges/{privilegeId}
+----
+
+==== Description
+:hardbreaks:
+Returns user privilege details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|userName|user name|true|string|
+|PathParameter|privilegeId|privilege id|true|string|
+|QueryParameter|fields|Filter user privilege details|false|string|PrivilegeInfo/*
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<UserPrivilegeResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Users
+
+=== Get all views
+----
+GET /views
+----
+
+==== Description
+:hardbreaks:
+Returns details of all views.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|QueryParameter|fields|Filter view details|false|string|ViewInfo/*
+|QueryParameter|sortBy|Sort users (asc | desc)|false|string|ViewInfo/view_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get single view
+----
+GET /views/{viewName}
+----
+
+==== Description
+:hardbreaks:
+Returns view details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|QueryParameter|fields|Filter view details|false|string|ViewInfo
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get all versions for a view
+----
+GET /views/{viewName}/versions
+----
+
+==== Description
+:hardbreaks:
+Returns details of all versions for a view.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|QueryParameter|fields|Filter view version details|false|string|ViewVersionInfo/*
+|QueryParameter|sortBy|Sort users (asc | desc)|false|string|ViewVersionInfo/version.desc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewVersionResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get single view version
+----
+GET /views/{viewName}/versions/{version}
+----
+
+==== Description
+:hardbreaks:
+Returns view details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version||true|string|
+|QueryParameter|fields|Filter view details|false|string|ViewVersionInfo
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewVersionResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get all view instances
+----
+GET /views/{viewName}/versions/{version}/instances
+----
+
+==== Description
+:hardbreaks:
+Returns all instances for a view version.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName||true|string|
+|PathParameter|version||true|string|
+|QueryParameter|fields|Filter view instance details|false|string|ViewInstanceInfo/*
+|QueryParameter|sortBy|Sort users (asc | desc)|false|string|ViewInstanceInfo/instance_name.desc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewInstanceResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Create view instance
+----
+POST /views/{viewName}/versions/{version}/instances/{instanceName}
+----
+
+==== Description
+:hardbreaks:
+Creates view instance resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version||true|string|
+|PathParameter|instanceName|instance name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<ViewInstanceRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get single view instance
+----
+GET /views/{viewName}/versions/{version}/instances/{instanceName}
+----
+
+==== Description
+:hardbreaks:
+Returns view instance details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version||true|string|
+|PathParameter|instanceName|instance name|true|string|
+|QueryParameter|fields|Filter view instance details|false|string|ViewInstanceInfo
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewInstanceResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Delete view instance
+----
+DELETE /views/{viewName}/versions/{version}/instances/{instanceName}
+----
+
+==== Description
+:hardbreaks:
+Delete view resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version||true|string|
+|PathParameter|instanceName|instance name|true|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Update view instance detail
+----
+PUT /views/{viewName}/versions/{version}/instances/{instanceName}
+----
+
+==== Description
+:hardbreaks:
+Updates view instance resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version||true|string|
+|PathParameter|instanceName|instance name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<ViewInstanceRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Migrate view instance data
+----
+PUT /views/{viewName}/versions/{version}/instances/{instanceName}/migrate/{originVersion}/{originInstanceName}
+----
+
+==== Description
+:hardbreaks:
+Migrates view instance persistence data from origin view instance specified in the path params.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|viewVersion|view version|true|string|
+|PathParameter|instanceName|instance name|true|string|
+|PathParameter|originVersion|origin version|true|string|
+|PathParameter|originInstanceName|origin instance name|true|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Tags
+
+* Views
+
+=== Create view instance privilege
+----
+POST /views/{viewName}/versions/{version}/instances/{instanceName}/privileges
+----
+
+==== Description
+:hardbreaks:
+Create privilege resource for view instance.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version|view version|true|string|
+|PathParameter|instanceName|instance name|true|string|
+|BodyParameter|body|input parameters in json form|true|<<ViewPrivilegeRequest>>|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get all view instance privileges
+----
+GET /views/{viewName}/versions/{version}/instances/{instanceName}/privileges
+----
+
+==== Description
+:hardbreaks:
+Returns all privileges for the resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version|view version|true|string|
+|PathParameter|instanceName|instance name|true|string|
+|QueryParameter|fields|Filter privileges|false|string|PrivilegeInfo/*
+|QueryParameter|sortBy|Sort privileges (asc | desc)|false|string|PrivilegeInfo/user_name.asc
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|successful operation|<<ViewPrivilegeResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get single view instance privilege
+----
+GET /views/{viewName}/versions/{version}/instances/{instanceName}/privileges/{privilegeId}
+----
+
+==== Description
+:hardbreaks:
+Returns privilege details.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version|view version|true|string|
+|PathParameter|instanceName|instance name|true|string|
+|PathParameter|privilegeId|privilege id|true|string|
+|QueryParameter|fields|Filter privilege details|false|string|PrivilegeInfo
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewPrivilegeResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Delete view instance privilege
+----
+DELETE /views/{viewName}/versions/{version}/instances/{instanceName}/privileges/{privilegeId}
+----
+
+==== Description
+:hardbreaks:
+Delete view instance privilege resource.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version|view version|true|string|
+|PathParameter|instanceName|instance name|true|string|
+|PathParameter|privilegeId|privilege id|true|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|No Content
+|500|Server Error|No Content
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get all permissions for a view
+----
+GET /views/{viewName}/versions/{version}/permissions
+----
+
+==== Description
+:hardbreaks:
+Returns all permission details for the version of a view.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version|view version|true|string|
+|QueryParameter|fields|Filter privileges|false|string|PermissionInfo/*
+|QueryParameter|page_size|The number of resources to be returned for the paged response.|false|integer|10
+|QueryParameter|from|The starting page resource (inclusive). Valid values are :offset | "start"|false|string|0
+|QueryParameter|to|The ending page resource (inclusive). Valid values are :offset | "end"|false|string|
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewPermissionResponse>> array
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+
+=== Get single view permission
+----
+GET /views/{viewName}/versions/{version}/permissions/{permissionId}
+----
+
+==== Description
+:hardbreaks:
+Returns permission details for a single version of a view.
+
+==== Parameters
+[options="header"]
+|===
+|Type|Name|Description|Required|Schema|Default
+|PathParameter|viewName|view name|true|string|
+|PathParameter|version|view version|true|string|
+|PathParameter|permissionId|permission id|true|string|
+|QueryParameter|fields|Filter view permission details|false|string|PermissionInfo
+|===
+
+==== Responses
+[options="header"]
+|===
+|HTTP Code|Description|Schema
+|200|Successful operation|<<ViewPermissionResponse>>
+|===
+
+==== Produces
+
+* text/plain
+
+==== Tags
+
+* Views
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index f0c73e4..c8a5997 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -46,6 +46,7 @@
     <tarballResourcesFolder>src/main/resources</tarballResourcesFolder>
     <skipPythonTests>false</skipPythonTests>
     <hadoop.version>2.7.2</hadoop.version>
+    <swagger.version>1.5.10</swagger.version>
     <empty.dir>src/main/package</empty.dir> <!-- any directory in project with not very big amount of files (not to waste-load them) -->
     <el.log>ALL</el.log> <!-- log level for EclipseLink eclipselink-staticweave-maven-plugin -->
     <xlint>none</xlint> <!-- passed to Java compiler -Xlint: flag -->
@@ -308,6 +309,7 @@
             <exclude>src/main/resources/stacks/BIGTOP/0.8/services/HDFS/package/scripts/balancer-emulator/balancer-err.log</exclude>
             <exclude>src/main/resources/stacks/PHD/3.0.0.0/services/HDFS/package/scripts/balancer-emulator/balancer.log</exclude>
             <exclude>src/main/resources/stacks/PHD/3.0.0.0/services/HDFS/package/scripts/balancer-emulator/balancer-err.log</exclude>
+            <exclude>docs/api/asciidoc/**</exclude>
             <exclude>**/SMARTSENSE/**</exclude>
             <exclude>conf/unix/ca.config</exclude>
             <exclude>conf/unix/krb5JAASLogin.conf</exclude>
@@ -352,6 +354,58 @@
         </executions>
       </plugin>
       <plugin>
+        <groupId>com.github.kongchen</groupId>
+        <artifactId>swagger-maven-plugin</artifactId>
+        <version>3.1.4</version>
+        <configuration>
+          <apiSources>
+            <apiSource>
+              <springmvc>false</springmvc>
+              <locations>org.apache.ambari.server.api.services</locations>
+              <schemes>http,https</schemes>
+              <basePath>/api/v1</basePath>
+              <info>
+                <title>Swagger spec for Ambari REST API</title>
+                <version>v1</version>
+                <description>Ambari REST APIs has inherent support for querying, sorting and pagination</description>
+                <license>
+                  <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+                  <name>Apache License, Version 2.0</name>
+                </license>
+              </info>
+              <swaggerDirectory>${ambari-web-dir}/api-docs</swaggerDirectory>
+            </apiSource>
+          </apiSources>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>compile</phase>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>io.github.robwin</groupId>
+        <artifactId>swagger2markup-maven-plugin</artifactId>
+        <version>0.9.3</version>
+        <configuration>
+          <inputDirectory>${ambari-web-dir}/api-docs</inputDirectory>
+          <swaggerFile>swagger.json</swaggerFile>
+          <outputDirectory>docs/api/asciidoc</outputDirectory>
+          <markupLanguage>asciidoc</markupLanguage>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>process-swagger</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
         <artifactId>eclipselink-staticweave-maven-plugin</artifactId>
         <groupId>au.com.alderaan</groupId>
         <version>1.0.4</version>
@@ -1310,6 +1364,33 @@
       <artifactId>jackson-jaxrs</artifactId>
     </dependency>
     <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-annotations</artifactId>
+      <version>${swagger.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-core</artifactId>
+      <version>${swagger.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-jaxrs</artifactId>
+      <version>${swagger.version}</version>
+      <exclusions>
+        <exclusion>
+          <!-- Because it is already in the jersey one and causes the shade plugin to be confused -->
+          <groupId>javax.ws.rs</groupId>
+          <artifactId>jsr311-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-models</artifactId>
+      <version>${swagger.version}</version>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.jackson</groupId>
       <artifactId>jackson-xc</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutService.java
deleted file mode 100644
index 40cd6e0..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/ActiveWidgetLayoutService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.commons.lang.StringUtils;
-
-/**
- * WidgetLayout Service
- */
-public class ActiveWidgetLayoutService extends BaseService {
-
-  private final String userName;
-
-  public ActiveWidgetLayoutService(String userName) {
-    this.userName = userName;
-  }
-
-  /**
-   * Handles URL: /activeWidgetLayouts
-   * Get all instances for a view.
-   *
-   * @param headers  http headers
-   * @param ui       uri info
-   *
-   * @return instance collection resource representation
-   */
-  @GET
-  @Produces("text/plain")
-  public Response getServices(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-
-    return handleRequest(headers, body, ui, Request.Type.GET,
-            createResource(null));
-  }
-
-  @PUT
-  @Produces("text/plain")
-  public Response updateServices(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-
-    return handleRequest(headers, body, ui, Request.Type.PUT, createResource(null));
-  }
-
-  private ResourceInstance createResource(String widgetLayoutId) {
-    Map<Resource.Type,String> mapIds = new HashMap<Resource.Type, String>();
-    mapIds.put(Resource.Type.User, StringUtils.lowerCase(userName));
-    return createResource(Resource.Type.ActiveWidgetLayout, mapIds);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupPrivilegeService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupPrivilegeService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupPrivilegeService.java
deleted file mode 100644
index 9c1f1a3..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupPrivilegeService.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-
-/**
- *  Service responsible for group privilege resource requests.
- */
-public class GroupPrivilegeService extends PrivilegeService {
-
-  private final String groupName;
-
-  public GroupPrivilegeService(String groupName) {
-    this.groupName = groupName;
-  }
-
-  // ----- PrivilegeService --------------------------------------------------
-
-  @Override
-  public Response createPrivilege(String body, HttpHeaders headers, UriInfo ui) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response updatePrivilege(String body, HttpHeaders headers, UriInfo ui, String privilegeId) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response updatePrivileges(String body, HttpHeaders headers, UriInfo ui) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response deletePrivilege(HttpHeaders headers, UriInfo ui, String privilegeId) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response deletePrivileges(String body, HttpHeaders headers, UriInfo ui) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  protected ResourceInstance createPrivilegeResource(String privilegeId) {
-    final Map<Resource.Type, String> mapIds = new HashMap<Resource.Type, String>();
-    mapIds.put(Resource.Type.Group, groupName);
-    mapIds.put(Resource.Type.GroupPrivilege, privilegeId);
-    return createResource(Resource.Type.GroupPrivilege, mapIds);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupService.java
deleted file mode 100644
index 8ec0097..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/GroupService.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import java.util.Collections;
-
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-
-/**
- * Service responsible for user groups requests.
- */
-@Path("/groups/")
-public class GroupService extends BaseService {
-  /**
-   * Gets all groups.
-   * Handles: GET /groups requests.
-   *
-   * @param headers    http headers
-   * @param ui         uri info
-   */
-  @GET
-  @Produces("text/plain")
-  public Response getGroups(@Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, null, ui, Request.Type.GET, createGroupResource(null));
-  }
-
-  /**
-   * Gets a single group.
-   * Handles: GET /groups/{groupName} requests.
-   *
-   * @param headers      http headers
-   * @param ui           uri info
-   * @param groupName    the group name
-   * @return information regarding the specified group
-   */
-  @GET
-  @Path("{groupName}")
-  @Produces("text/plain")
-  public Response getGroup(@Context HttpHeaders headers, @Context UriInfo ui,
-      @PathParam("groupName") String groupName) {
-    return handleRequest(headers, null, ui, Request.Type.GET, createGroupResource(groupName));
-  }
-
-  /**
-   * Creates a group.
-   * Handles: POST /groups requests.
-   *
-   * @param headers      http headers
-   * @param ui           uri info
-   * @return information regarding the created group
-   */
-   @POST
-   @Produces("text/plain")
-   public Response createGroup(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, body, ui, Request.Type.POST, createGroupResource(null));
-  }
-
-  /**
-   * Creates a group.
-   * Handles: POST /groups/{groupName} requests.
-   *
-   * @param headers      http headers
-   * @param ui           uri info
-   * @param groupName    the group name
-   * @return information regarding the created group
-   *
-   * @deprecated Use requests to /groups instead.
-   */
-   @POST
-   @Deprecated
-   @Path("{groupName}")
-   @Produces("text/plain")
-   public Response createGroup(String body, @Context HttpHeaders headers, @Context UriInfo ui,
-                                 @PathParam("groupName") String groupName) {
-    return handleRequest(headers, body, ui, Request.Type.POST, createGroupResource(groupName));
-  }
-
-  /**
-   * Deletes a group.
-   * Handles:  DELETE /groups/{groupName} requests.
-   *
-   * @param headers      http headers
-   * @param ui           uri info
-   * @param groupName    the group name
-   * @return information regarding the deleted group
-   */
-  @DELETE
-  @Path("{groupName}")
-  @Produces("text/plain")
-  public Response deleteGroup(@Context HttpHeaders headers, @Context UriInfo ui,
-                                @PathParam("groupName") String groupName) {
-    return handleRequest(headers, null, ui, Request.Type.DELETE, createGroupResource(groupName));
-  }
-
-  /**
-   * Get the members sub-resource.
-   *
-   * @param groupName    the group name
-   * @return the members service
-   */
-  @Path("{groupName}/members")
-  public MemberService getMemberHandler(@PathParam("groupName") String groupName) {
-    return new MemberService(groupName);
-  }
-
-  /**
-   * Gets the group privilege service
-   */
-  @Path("{groupName}/privileges")
-  public PrivilegeService getPrivilegeService(@Context javax.ws.rs.core.Request request,
-                                              @PathParam ("groupName") String groupName) {
-
-    return new GroupPrivilegeService(groupName);
-  }
-
-
-  /**
-   * Create a group resource instance.
-   *
-   * @param groupName group name
-   *
-   * @return a group resource instance
-   */
-  private ResourceInstance createGroupResource(String groupName) {
-    return createResource(Resource.Type.Group,
-        Collections.singletonMap(Resource.Type.Group, groupName));
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/MemberService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/MemberService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/MemberService.java
deleted file mode 100644
index 28e53e6..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/MemberService.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-
-/**
- * Service responsible for user membership requests.
- */
-public class MemberService extends BaseService {
-  /**
-   * Name of the group.
-   */
-  private String groupName;
-
-  /**
-   * Constructor.
-   *
-   * @param groupName name of the group
-   */
-  public MemberService(String groupName) {
-    this.groupName = groupName;
-  }
-
-  /**
-   * Creates new members.
-   * Handles: POST /groups/{groupname}/members requests.
-   *
-   * @param headers      http headers
-   * @param ui           uri info
-   * @return information regarding the created member
-   */
-   @POST
-   @Produces("text/plain")
-   public Response createMember(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, body, ui, Request.Type.POST, createMemberResource(groupName, null));
-  }
-
-  /**
-   * Creates a new member.
-   * Handles: POST /groups/{groupname}/members/{username} requests.
-   *
-   * @param headers      http headers
-   * @param ui           uri info
-   * @param userName     the user name
-   * @return information regarding the created member
-   */
-   @POST
-   @Path("{userName}")
-   @Produces("text/plain")
-   public Response createMember(String body, @Context HttpHeaders headers, @Context UriInfo ui,
-                                 @PathParam("userName") String userName) {
-    return handleRequest(headers, body, ui, Request.Type.POST, createMemberResource(groupName, userName));
-  }
-
-   /**
-    * Deletes a member.
-    * Handles:  DELETE /groups/{groupname}/members/{username} requests.
-    *
-    * @param headers      http headers
-    * @param ui           uri info
-    * @param userName     the user name
-    * @return information regarding the deleted group
-    */
-   @DELETE
-   @Path("{userName}")
-   @Produces("text/plain")
-   public Response deleteMember(@Context HttpHeaders headers, @Context UriInfo ui,
-                                 @PathParam("userName") String userName) {
-     return handleRequest(headers, null, ui, Request.Type.DELETE, createMemberResource(groupName, userName));
-   }
-
-  /**
-   * Gets all members.
-   * Handles: GET /groups/{groupname}/members requests.
-   *
-   * @param headers    http headers
-   * @param ui         uri info
-   * @return information regarding all members
-   */
-  @GET
-  @Produces("text/plain")
-  public Response getMembers(@Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, null, ui, Request.Type.GET, createMemberResource(groupName, null));
-  }
-
-  /**
-   * Gets member.
-   * Handles: GET /groups/{groupname}/members/{username} requests.
-   *
-   * @param headers    http headers
-   * @param ui         uri info
-   * @param userName   the user name
-   * @return information regarding the specific member
-   */
-  @GET
-  @Path("{userName}")
-  @Produces("text/plain")
-  public Response getMember(@Context HttpHeaders headers, @Context UriInfo ui,
-      @PathParam("userName") String userName) {
-    return handleRequest(headers, null, ui, Request.Type.GET, createMemberResource(groupName, userName));
-  }
-
-  /**
-   * Updates all members.
-   * Handles: PUT /groups/{groupname}/members requests.
-   *
-   * @param headers    http headers
-   * @param ui         uri info
-   * @return status of the request
-   */
-  @PUT
-  @Produces("text/plain")
-  public Response updateMembers(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, body, ui, Request.Type.PUT, createMemberResource(groupName, null));
-  }
-
-  /**
-   * Create a member resource instance.
-   *
-   * @param groupName  group name
-   * @param userName   user name
-   *
-   * @return a member resource instance
-   */
-  private ResourceInstance createMemberResource(String groupName, String userName) {
-    final Map<Resource.Type, String> mapIds = new HashMap<Resource.Type, String>();
-    mapIds.put(Resource.Type.Group, groupName);
-    mapIds.put(Resource.Type.Member, userName);
-    return createResource(Resource.Type.Member, mapIds);
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserAuthorizationService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserAuthorizationService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserAuthorizationService.java
deleted file mode 100644
index 26a7107..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserAuthorizationService.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.commons.lang.StringUtils;
-
-/**
- * UserAuthorizationService is a read-only service responsible for user authorization resource requests.
- * <p/>
- * The result sets returned by this service represent the set of authorizations assigned to a given user.
- * Authorizations are tied to a resource, so a user may have the multiple authorization entries for the
- * same authorization id (for example VIEW.USE), however each will represnet a different view instance.
- */
-public class UserAuthorizationService extends BaseService {
-
-  /**
-   * The username this UserAuthorizationService is linked to
-   */
-  private final String username;
-
-  /**
-   * Create a new UserAuthorizationService that is linked to a particular user
-   *
-   * @param username the username of the user to link thi UserAuthorizationService to
-   */
-  public UserAuthorizationService(String username) {
-    this.username = username;
-  }
-
-  /**
-   * Handles: GET  /users/{user_name}/authorizations
-   * Get all authorizations for the relative user.
-   *
-   * @param headers http headers
-   * @param ui      uri info
-   * @return authorizations collection resource representation
-   */
-  @GET
-  @Produces("text/plain")
-  public Response getAuthorizations(@Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, null, ui, Request.Type.GET, createAuthorizationResource(null));
-  }
-
-  /**
-   * Handles: GET  /permissions/{user_name}/authorizations/{authorization_id}
-   * Get a specific authorization.
-   *
-   * @param headers         http headers
-   * @param ui              uri info
-   * @param authorizationId authorization ID
-   * @return authorization instance representation
-   */
-  @GET
-  @Path("{authorization_id}")
-  @Produces("text/plain")
-  public Response getAuthorization(@Context HttpHeaders headers, @Context UriInfo ui,
-                                   @PathParam("authorization_id") String authorizationId) {
-    return handleRequest(headers, null, ui, Request.Type.GET, createAuthorizationResource(authorizationId));
-  }
-
-  /**
-   * Create an authorization resource.
-   *
-   * @param authorizationId authorization id
-   * @return an authorization resource instance
-   */
-  protected ResourceInstance createAuthorizationResource(String authorizationId) {
-    Map<Resource.Type, String> mapIds = new HashMap<Resource.Type, String>();
-    mapIds.put(Resource.Type.User, StringUtils.lowerCase(username));
-    mapIds.put(Resource.Type.UserAuthorization, authorizationId);
-    return createResource(Resource.Type.UserAuthorization, mapIds);
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserPrivilegeService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserPrivilegeService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserPrivilegeService.java
deleted file mode 100644
index f9c95e7..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserPrivilegeService.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing privileges and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.api.services;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.commons.lang.StringUtils;
-/**
- *  Service responsible for user privilege resource requests.
- */
-public class UserPrivilegeService extends PrivilegeService {
-
-  private final String userName;
-
-  public UserPrivilegeService(String userName) {
-    this.userName = userName;
-  }
-
-  // ----- PrivilegeService --------------------------------------------------
-
-  @Override
-  public Response createPrivilege(String body, HttpHeaders headers, UriInfo ui) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response updatePrivilege(String body, HttpHeaders headers, UriInfo ui,
-      String privilegeId) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response updatePrivileges(String body, HttpHeaders headers, UriInfo ui) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response deletePrivilege(HttpHeaders headers, UriInfo ui,
-      String privilegeId) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  public Response deletePrivileges(String body, HttpHeaders headers, UriInfo ui) {
-    return Response.status(HttpServletResponse.SC_NOT_IMPLEMENTED).build();
-  }
-
-  @Override
-  protected ResourceInstance createPrivilegeResource(String privilegeId) {
-    final Map<Resource.Type, String> mapIds = new HashMap<Resource.Type, String>();
-    mapIds.put(Resource.Type.User, StringUtils.lowerCase(userName));
-    mapIds.put(Resource.Type.UserPrivilege, privilegeId);
-    return createResource(Resource.Type.UserPrivilege, mapIds);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb86fb3b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java
deleted file mode 100644
index 31f3a8c..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ambari.server.api.services;
-
-import java.util.Collections;
-
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.controller.spi.Resource;
-
-/**
- * Service responsible for user requests.
- */
-@Path("/users/")
-public class UserService extends BaseService {
-
-  /**
-   * Gets all users.
-   * Handles: GET /users requests.
-   */
-  @GET
-  @Produces("text/plain")
-  public Response getUsers(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, body, ui, Request.Type.GET, createUserResource(null));
-  }
-
-  /**
-   * Gets a single user.
-   * Handles: GET /users/{username} requests
-   *
-   * @param headers     http headers
-   * @param ui          uri info
-   * @param userName    the username
-   * @return information regarding the created user
-   */
-  @GET
-  @Path("{userName}")
-  @Produces("text/plain")
-  public Response getUser(String body, @Context HttpHeaders headers, @Context UriInfo ui,
-      @PathParam("userName") String userName) {
-    return handleRequest(headers, body, ui, Request.Type.GET, createUserResource(userName));
-  }
-
-  /**
-   * Creates a user.
-   * Handles: POST /users
-   *
-   * @param headers     http headers
-   * @param ui          uri info
-   * @return information regarding the created user
-   */
-  @POST
-  @Produces("text/plain")
-  public Response createUser(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
-    return handleRequest(headers, body, ui, Request.Type.POST, createUserResource(null));
-  }
-
-  /**
-   * Creates a user.
-   * Handles: POST /users/{username}
-   *
-   * @param headers     http headers
-   * @param ui          uri info
-   * @param userName    the username
-   * @return information regarding the created user
-   */
-  @POST
-  @Path("{userName}")
-  @Produces("text/plain")
-  public Response createUser(String body, @Context HttpHeaders headers, @Context UriInfo ui,
-      @PathParam("userName") String userName) {
-    return handleRequest(headers, body, ui, Request.Type.POST, createUserResource(userName));
-  }
-
-  /**
-   * Updates a specific user.
-   * Handles: PUT /users/{userName}
-   *
-   * @param headers     http headers
-   * @param ui          uri info
-   * @param userName   the username
-   * @return information regarding the updated user
-   */
-  @PUT
-  @Path("{userName}")
-  @Produces("text/plain")
-  public Response updateUser(String body, @Context HttpHeaders headers, @Context UriInfo ui,
-                                 @PathParam("userName") String userName) {
-
-    return handleRequest(headers, body, ui, Request.Type.PUT, createUserResource(userName));
-  }
-
-  /**
-   * Deletes a user.
-   * Handles:  DELETE /users/{userName}
-   */
-  @DELETE
-  @Path("{userName}")
-  @Produces("text/plain")
-  public Response deleteUser(@Context HttpHeaders headers, @Context UriInfo ui,
-                                 @PathParam("userName") String userName) {
-    return handleRequest(headers, null, ui, Request.Type.DELETE, createUserResource(userName));
-  }
-
-  /**
-   * Gets the user privilege service
-   */
-  @Path("{userName}/privileges")
-  public PrivilegeService getPrivilegeService(@Context javax.ws.rs.core.Request request,
-                                              @PathParam ("userName") String userName) {
-
-    return new UserPrivilegeService(userName);
-  }
-
-  /**
-   * Gets the active widget layout service
-   */
-  @Path("{userName}/activeWidgetLayouts")
-  public ActiveWidgetLayoutService getWidgetLayoutService(@Context javax.ws.rs.core.Request request,
-                                                    @PathParam ("userName") String userName) {
-
-    return new ActiveWidgetLayoutService(userName);
-  }
-
-  /**
-   * Gets the user authorization service.
-   *
-   * @param request  the request
-   * @param username the username
-   * @return the UserAuthorizationService
-   */
-  @Path("{userName}/authorizations")
-  public UserAuthorizationService getUserAuthorizations(
-      @Context javax.ws.rs.core.Request request, @PathParam("userName") String username) {
-    return new UserAuthorizationService(username);
-  }
-
-  /**
-   * Create a user resource instance.
-   *
-   * @param userName  user name
-   *
-   * @return a user resource instance
-   */
-  private ResourceInstance createUserResource(String userName) {
-    return createResource(Resource.Type.User,
-        Collections.singletonMap(Resource.Type.User, userName));
-  }
-}


Mime
View raw message