Skip to content

Commit

Permalink
[3.2.1 backport] CBG-4193 add redocly targets for capella (#7090)
Browse files Browse the repository at this point in the history
  • Loading branch information
torcolvin authored Aug 23, 2024
1 parent ce632c9 commit f518fab
Show file tree
Hide file tree
Showing 9 changed files with 244 additions and 0 deletions.
31 changes: 31 additions & 0 deletions .redocly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,56 @@ apis:
remove-x-internal: on
admin-internal:
root: "./docs/api/admin.yaml"
admin-capella:
root: "./docs/api/admin-capella.yaml"
decorators:
filter-out:
property: x-capella
value: false
remove-x-internal: on
public:
root: "./docs/api/public.yaml"
decorators:
remove-x-internal: on
public-internal:
root: "./docs/api/public.yaml"
public-capella:
root: "./docs/api/public.yaml"
decorators:
filter-out:
property: x-capella
value: false
info-override:
description: "App Services manages access and synchronization between Couchbase Lite and Couchbase Capella"
plugin/replace-description-capella: on
plugin/replace-server-capella:
serverUrl: 'https://{hostname}:4984'
remove-x-internal: on
metric:
root: "./docs/api/metric.yaml"
decorators:
remove-x-internal: on
metric-internal:
root: "./docs/api/metric.yaml"
metric-capella:
root: "./docs/api/metric-capella.yaml"
decorators:
filter-out:
property: x-capella
value: false
plugin/excise-rbac-capella: on
plugin/replace-description-capella: on
remove-x-internal: on
diagnostic:
root: "./docs/api/diagnostic.yaml"
decorators:
remove-x-internal: on
diagnostic-internal:
root: "./docs/api/diagnostic.yaml"

plugins:
- './docs/api/plugins/plugin.js'

extends:
- minimal
rules:
Expand Down
42 changes: 42 additions & 0 deletions docs/api/admin-capella.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Copyright 2022-Present Couchbase, Inc.
#
# Use of this software is governed by the Business Source License included
# in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
# in that file, in accordance with the Business Source License, use of this
# software will be governed by the Apache License, Version 2.0, included in
# the file licenses/APL2.txt.

openapi: 3.0.3
info:
title: App Services Admin API
description: 'App Services manages access and synchronization between Couchbase Lite and Couchbase Capella'
version: 3.3.0
license:
name: Business Source License 1.1 (BSL)
url: 'https://github.com/couchbase/sync_gateway/blob/master/LICENSE'
servers:
- url: 'https://{hostname}:4985'
description: Admin API
variables:
hostname:
description: The hostname to use
default: localhost
paths:
'/{db}/_session':
$ref: './paths/admin/db-_session.yaml'
'/{db}/_session/{sessionid}':
$ref: './paths/admin/db-_session-sessionid.yaml'
'/{db}/_user/{name}':
$ref: './paths/admin/db-_user-name.yaml'
'/{db}/_user/{name}/_session':
$ref: './paths/admin/db-_user-name-_session.yaml'
'/{db}/_user/{name}/_session/{sessionid}':
$ref: './paths/admin/db-_user-name-_session-sessionid.yaml'
'/{db}/_role/':
$ref: './paths/admin/db-_role-.yaml'
'/{db}/_role/{name}':
$ref: './paths/admin/db-_role-name.yaml'

externalDocs:
description: Manage App Services for Mobile and Edge | Couchbase Docs
url: 'https://docs.couchbase.com/cloud/app-services/index.html'
32 changes: 32 additions & 0 deletions docs/api/metric-capella.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright 2022-Present Couchbase, Inc.
#
# Use of this software is governed by the Business Source License included
# in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
# in that file, in accordance with the Business Source License, use of this
# software will be governed by the Apache License, Version 2.0, included in
# the file licenses/APL2.txt.

openapi: 3.0.3
info:
title: App Services Metrics API
description: 'App Services manages access and synchronization between Couchbase Lite and Couchbase Capella'
version: 3.3.0
license:
name: Business Source License 1.1 (BSL)
url: 'https://github.com/couchbase/sync_gateway/blob/master/LICENSE'
servers:
- url: 'https://{hostname}:4988'
description: Metrics API
variables:
hostname:
description: The hostname to use
default: localhost
paths:
/metrics:
$ref: ./paths/metric/metrics.yaml
tags:
- name: Prometheus
description: Endpoints for use with Prometheus
externalDocs:
description: Manage App Services for Mobile and Edge | Couchbase Docs
url: 'https://docs.couchbase.com/cloud/app-services/index.html'
33 changes: 33 additions & 0 deletions docs/api/plugins/decorators/excise-rbac-capella.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* Copyright 2024-Present Couchbase, Inc.
*
* Use of this software is governed by the Business Source License included
* in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
* in that file, in accordance with the Business Source License, use of this
* software will be governed by the Apache License, Version 2.0, included in
* the file licenses/APL2.txt.
*/

/**
* Removes the RBAC roles from capella API docs. This expects the RBAC information to be at the end of the documentation string. This is not a robust way of doing this.
* @module ExciseRBACCapella
*/

module.exports = ExciseRBACCapella;

const re = new RegExp("Required Sync Gateway RBAC roles");

/** @type {import('@redocly/cli').OasDecorator} */
function ExciseRBACCapella() {
return {
Operation: {
leave(Operation) {
// remove all text after first regex match
idx = Operation.description.search(re);
if (idx > 0) {
Operation.description = Operation.description.substr(0, idx);
}
},
},
};
}
30 changes: 30 additions & 0 deletions docs/api/plugins/decorators/replace-description-capella.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* Copyright 2024-Present Couchbase, Inc.
*
* Use of this software is governed by the Business Source License included
* in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
* in that file, in accordance with the Business Source License, use of this
* software will be governed by the Apache License, Version 2.0, included in
* the file licenses/APL2.txt.
*/

/**
* Does a string replacement on all operations (GET,PUT,POST,etc) to replace Sync Gateway with App Services.
* @module ReplaceDescriptionCapella
*/

module.exports = ReplaceDescriptionCapella;

/** @type {import('@redocly/cli').OasDecorator} */
function ReplaceDescriptionCapella() {
return {
Operation: {
leave(Operation) {
Operation.description = Operation.description.replace(
"Sync Gateway",
"App Services",
);
},
},
};
}
24 changes: 24 additions & 0 deletions docs/api/plugins/decorators/replace-server-capella.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* Copyright 2024-Present Couchbase, Inc.
*
* Use of this software is governed by the Business Source License included
* in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
* in that file, in accordance with the Business Source License, use of this
* software will be governed by the Apache License, Version 2.0, included in
* the file licenses/APL2.txt.
*/

module.exports = ReplaceServersCapella;

/** @type {import('@redocly/cli').OasDecorator} */
function ReplaceServersCapella({ serverUrl }) {
return {
Server: {
leave(Server) {
if (serverUrl) {
Server.url = serverUrl;
}
},
},
};
}
24 changes: 24 additions & 0 deletions docs/api/plugins/plugin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* Copyright 2024-Present Couchbase, Inc.
*
* Use of this software is governed by the Business Source License included
* in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
* in that file, in accordance with the Business Source License, use of this
* software will be governed by the Apache License, Version 2.0, included in
* the file licenses/APL2.txt.
*/

const ExciseRBACCapella = require("./decorators/excise-rbac-capella.js");
const ReplaceDescriptionCapella = require("./decorators/replace-description-capella.js");
const ReplaceServerCapella = require("./decorators/replace-server-capella.js");

module.exports = {
decorators: {
oas3: {
"excise-rbac-capella": ExciseRBACCapella,
"replace-description-capella": ReplaceDescriptionCapella,
"replace-server-capella": ReplaceServerCapella,
},
},
id: "plugin",
};
4 changes: 4 additions & 0 deletions docs/api/public.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,10 @@ paths:
$ref: './paths/public/keyspace-_changes.yaml'
'/{db}/_design/{ddoc}':
$ref: './paths/public/db-_design-ddoc.yaml'
x-capella: false
'/{db}/_design/{ddoc}/_view/{view}':
$ref: './paths/public/db-_design-ddoc-_view-view.yaml'
x-capella: false
'/{db}/_ensure_full_commit':
$ref: './paths/public/db-_ensure_full_commit.yaml'
'/{keyspace}/_revs_diff':
Expand Down Expand Up @@ -101,8 +103,10 @@ tags:
description: Create and manage document attachments
- name: Replication
description: Create and manage inter-Sync Gateway replications
x-capella: false
- name: Unsupported
description: Endpoints that are not supported by Sync Gateway
x-capella: false
externalDocs:
description: Sync Gateway Quickstart | Couchbase Docs
url: 'https://docs.couchbase.com/sync-gateway/current/index.html'
24 changes: 24 additions & 0 deletions docs/api/replace-servers-capella.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* Copyright 2024-Present Couchbase, Inc.
*
* Use of this software is governed by the Business Source License included
* in the file licenses/BSL-Couchbase.txt. As of the Change Date specified
* in that file, in accordance with the Business Source License, use of this
* software will be governed by the Apache License, Version 2.0, included in
* the file licenses/APL2.txt.
*/

module.exports = ReplaceServersCapella;

/** @type {import('@redocly/cli').OasDecorator} */

function ReplaceServersCapella({ serverUrl }) {
return {
Server: {
leave(Server) {
Server.url = serverUrl;
delete Server.protocol;
},
},
};
}

0 comments on commit f518fab

Please sign in to comment.