This is an automated email from the ASF dual-hosted git repository.

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new b38d025760 [rest] Fix content-security-policy violation on RestCatalog 
API yaml (#5355)
b38d025760 is described below

commit b38d025760b46f8f3b8ec60022a363412b9957ca
Author: Yubin Li <[email protected]>
AuthorDate: Thu Mar 27 17:01:32 2025 +0800

    [rest] Fix content-security-policy violation on RestCatalog API yaml (#5355)
---
 docs/content/concepts/rest/rest-api.md             |    7 +-
 docs/layouts/partials/docs/inject/head.html        |    1 -
 .../shortcodes/redoc_rest_catalog_api.html}        |   29 +-
 docs/static/rest-catalog-open-api.yaml             | 2269 ++++++++++++++++++++
 paimon-docs/pom.xml                                |    7 +
 5 files changed, 2288 insertions(+), 25 deletions(-)

diff --git a/docs/content/concepts/rest/rest-api.md 
b/docs/content/concepts/rest/rest-api.md
index 5e20f495a7..6aa8175c7a 100644
--- a/docs/content/concepts/rest/rest-api.md
+++ b/docs/content/concepts/rest/rest-api.md
@@ -24,10 +24,5 @@ under the License.
 -->
 
 <body>
-    <div id="redoc-container"></div>
-    <script>
-        
Redoc.init('https://raw.githubusercontent.com/apache/paimon/master/paimon-open-api/rest-catalog-open-api.yaml',
 {
-            disableSearch: true
-        }, document.getElementById('redoc-container'));
-    </script>
+    {{< redoc_rest_catalog_api >}}
 </body>
diff --git a/docs/layouts/partials/docs/inject/head.html 
b/docs/layouts/partials/docs/inject/head.html
index 992547540d..b5719754de 100644
--- a/docs/layouts/partials/docs/inject/head.html
+++ b/docs/layouts/partials/docs/inject/head.html
@@ -24,6 +24,5 @@ under the License.
 <script src="{{.Site.BaseURL}}/js/flink.js"></script>
 <!-- Only takes effect when the `redocPage` variable is true. -->
 {{ if .Params.redocPage }}
-    <meta http-equiv="Content-Security-Policy" content="script-src 'self' 
'unsafe-inline' 'unsafe-eval'; default-src 'self' data: blob: 'unsafe-inline' 
https://raw.githubusercontent.com/apache/paimon/master/paimon-open-api/;";>
     <script src="{{.Site.BaseURL}}/js/redoc.standalone.js"></script>
 {{ end }}
diff --git a/docs/content/concepts/rest/rest-api.md 
b/docs/layouts/shortcodes/redoc_rest_catalog_api.html
similarity index 62%
copy from docs/content/concepts/rest/rest-api.md
copy to docs/layouts/shortcodes/redoc_rest_catalog_api.html
index 5e20f495a7..39101b2c52 100644
--- a/docs/content/concepts/rest/rest-api.md
+++ b/docs/layouts/shortcodes/redoc_rest_catalog_api.html
@@ -1,10 +1,4 @@
----
-title: "REST API"
-layout: "custom-page"
-bookToc: false
-redocPage: true
----
-<!--
+{{/*
 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
@@ -13,7 +7,7 @@ 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
+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
@@ -21,13 +15,12 @@ software distributed under the License is distributed on an
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
-
-<body>
-    <div id="redoc-container"></div>
-    <script>
-        
Redoc.init('https://raw.githubusercontent.com/apache/paimon/master/paimon-open-api/rest-catalog-open-api.yaml',
 {
-            disableSearch: true
-        }, document.getElementById('redoc-container'));
-    </script>
-</body>
+*/}}{{/*
+Shortcode for RestCatalog open-api rendered by Redoc
+*/}}
+<div id="redoc-container"></div>
+<script>
+    Redoc.init('{{.Site.BaseURL}}/rest-catalog-open-api.yaml', {
+        disableSearch: true
+    }, document.getElementById('redoc-container'));
+</script>
diff --git a/docs/static/rest-catalog-open-api.yaml 
b/docs/static/rest-catalog-open-api.yaml
new file mode 100644
index 0000000000..26b9f1234a
--- /dev/null
+++ b/docs/static/rest-catalog-open-api.yaml
@@ -0,0 +1,2269 @@
+#
+# 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.
+#
+
+---
+openapi: 3.0.1
+info:
+  title: RESTCatalog API
+  description: This API exposes endpoints to RESTCatalog.
+  license:
+    name: Apache 2.0
+    url: https://www.apache.org/licenses/LICENSE-2.0.html
+  version: "1.0"
+servers:
+  - url: http://localhost:8080
+    description: Server URL in Development environment
+paths:
+  /v1/catalogs:
+    post:
+      tags:
+        - Catalogs
+      operationId: createCatalog
+      summary: Create a catalog
+      description: |
+        Creates a new catalog instance.
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateCatalogRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    get:
+      tags:
+        - Catalogs
+      parameters:
+        - name: maxResults
+          in: query
+          description: |
+            Maximum number of catalogs to return.
+            - when set to a value greater than 0, the page length is the 
minimum of this value and a server configured value;
+            - when set to 0 or less than 0, the page length is set to a server 
configured value;
+          schema:
+            type: integer
+            format: int32
+            maximum: 100
+          required: false
+        - name: pageToken
+          in: query
+          description: |
+            Opaque pagination token to go to next page based on previous query.
+          schema:
+            type: string
+          required: false
+      operationId: listCatalogs
+      summary: List catalogs
+      description: |
+        Lists the available catalogs.
+      responses:
+        "200":
+          description: The catalog list was successfully retrieved.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListCatalogsResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/catalogs/{catalog}:
+    parameters:
+      - name: catalog
+        in: path
+        description: The name of the catalog.
+        required: true
+        schema:
+          type: string
+    get:
+      tags:
+        - Catalogs
+      operationId: getCatalog
+      summary: Get a catalog
+      description: |
+        Gets the specified catalog.
+      responses:
+        "200":
+          description: The catalog was successfully retrieved.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetCatalogResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    patch:
+      tags:
+        - Catalogs
+      operationId: alterCatalog
+      summary: Alter a catalog
+      description: |
+        Alter the catalog that matches the supplied name.
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/AlterCatalogRequest'
+      responses:
+        "200":
+          description: The catalog was successfully altered.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AlterCatalogResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    delete:
+      tags:
+        - Catalogs
+      operationId: dropCatalog
+      summary: Drop a catalog
+      description: |
+        Drop the catalog that matches the supplied name.
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/config:
+    get:
+      tags:
+        - config
+      summary: Get Config
+      operationId: getConfig
+      parameters:
+        - name: warehouse
+          in: query
+          required: false
+          schema:
+            type: string
+          description: Warehouse location or identifier to request from the 
service
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ConfigResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases:
+    get:
+      tags:
+        - database
+      summary: List Databases
+      operationId: listDatabases
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: maxResults
+          in: query
+          schema:
+            type: integer
+            format: int32
+        - name: pageToken
+          in: query
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListDatabasesResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    post:
+      tags:
+        - database
+      summary: Create Databases
+      operationId: createDatabases
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateDatabaseRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}:
+    get:
+      tags:
+        - database
+      summary: Get Database
+      operationId: getDatabases
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetDatabaseResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    delete:
+      tags:
+        - database
+      summary: Drop Database
+      operationId: dropDatabase
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/properties:
+    post:
+      tags:
+        - database
+      summary: Alter Database
+      operationId: alterDatabase
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/AlterDatabaseRequest'
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AlterDatabaseResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables:
+    get:
+      tags:
+        - table
+      summary: List tables
+      operationId: listTables
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: maxResults
+          in: query
+          schema:
+            type: integer
+            format: int32
+        - name: pageToken
+          in: query
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListTablesResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    post:
+      tags:
+        - table
+      summary: Create table
+      operationId: createTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateTableRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/table-details:
+    get:
+      tags:
+        - table
+      summary: List table details
+      operationId: listTableDetails
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: maxResults
+          in: query
+          schema:
+            type: integer
+            format: int32
+        - name: pageToken
+          in: query
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListTableDetailsResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}:
+    get:
+      tags:
+        - table
+      summary: Get table
+      operationId: getTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetTableResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    post:
+      tags:
+        - table
+      summary: Alter table
+      operationId: alterTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/AlterTableRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    delete:
+      tags:
+        - table
+      summary: Drop table
+      operationId: dropTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: Success, no content
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/tables/rename:
+    post:
+      tags:
+        - table
+      summary: Rename table
+      operationId: renameTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RenameTableRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/commit:
+    post:
+      tags:
+        - table
+      summary: Commit table
+      operationId: commitTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CommitTableRequest'
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CommitTableResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/rollback:
+    post:
+      tags:
+        - table
+      summary: Rollback table
+      operationId: rollbackTable
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RollbackTableRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/token:
+    get:
+      tags:
+        - table
+      summary: Get table token
+      operationId: getTableToken
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetTableDataTokenResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/snapshot:
+    get:
+      tags:
+        - table
+      summary: Get table snapshot
+      operationId: getTableSnapshot
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetTableSnapshotResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/partitions:
+    get:
+      tags:
+        - partition
+      summary: List partitions
+      operationId: listPartitions
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: maxResults
+          in: query
+          schema:
+            type: integer
+            format: int32
+        - name: pageToken
+          in: query
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListPartitionsResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/partitions/mark:
+    post:
+      tags:
+        - partition
+      summary: MarkDone partitions
+      operationId: markDonePartitions
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MarkDonePartitionsRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/branches:
+    get:
+      tags:
+        - branch
+      summary: List branches
+      operationId: listBranches
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListBranchesResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    post:
+      tags:
+        - branch
+      summary: Create branch
+      operationId: createBranch
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateBranchRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/branches/{branch}:
+    delete:
+      tags:
+        - branch
+      summary: Drop branch
+      operationId: dropBranch
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: branch
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/tables/{table}/branches/{branch}/forward:
+    post:
+      tags:
+        - branch
+      summary: forward branch
+      operationId: forwardBranch
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: table
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: branch
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ForwardBranchRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/views:
+    get:
+      tags:
+        - view
+      summary: List views
+      operationId: listViews
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: maxResults
+          in: query
+          schema:
+            type: integer
+            format: int32
+        - name: pageToken
+          in: query
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListViewsResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    post:
+      tags:
+        - view
+      summary: Create view
+      operationId: createView
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateViewRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/view-details:
+    get:
+      tags:
+        - view
+      summary: List view details
+      operationId: listViewDetails
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: maxResults
+          in: query
+          schema:
+            type: integer
+            format: int32
+        - name: pageToken
+          in: query
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ListViewDetailsResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/databases/{database}/views/{view}:
+    get:
+      tags:
+        - view
+      summary: Get view
+      operationId: getView
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: view
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GetViewResponse'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+    post:
+      tags:
+        - view
+      summary: Alter view
+      operationId: alterView
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: view
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/AlterViewRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+    delete:
+      tags:
+        - view
+      summary: Drop view
+      operationId: dropView
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: database
+          in: path
+          required: true
+          schema:
+            type: string
+        - name: view
+          in: path
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+  /v1/{prefix}/views/rename:
+    post:
+      tags:
+        - view
+      summary: Rename view
+      operationId: renameView
+      parameters:
+        - name: prefix
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RenameTableRequest'
+      responses:
+        "200":
+          description: Success, no content
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "404":
+          description: Resource not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "409":
+          description: Resource has exist
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorResponse'
+        "500":
+          description: Internal Server Error
+components:
+  schemas:
+    CreateCatalogRequest:
+      type: object
+      properties:
+        name:
+          description: Name of catalog.
+          type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+    ListCatalogsResponse:
+      type: object
+      properties:
+        catalogs:
+          description: An array of catalog information objects.
+          type: array
+          items:
+            $ref: '#/components/schemas/GetCatalogResponse'
+        nextPageToken:
+          type: string
+          description: |
+            Opaque token to retrieve the next page of results. Absent if there 
are no more pages.
+            pageToken should be set to this value for the next request (for 
the next page of results).
+    GetCatalogResponse:
+      type: object
+      properties:
+        id:
+          description: Unique identifier for the catalog.
+          type: string
+        name:
+          description: Name of catalog.
+          type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+        owner:
+          description: Username of current owner of catalog.
+          type: string
+        created_at:
+          description: Time at which this catalog was created, in epoch 
milliseconds.
+          type: integer
+          format: int64
+        created_by:
+          description: Username of catalog creator.
+          type: string
+        updated_at:
+          description: Time at which this catalog was last modified, in epoch 
milliseconds.
+          type: integer
+          format: int64
+        updated_by:
+          description: Username of user who last modified catalog.
+          type: string
+    AlterCatalogRequest:
+      type: object
+      properties:
+        removals:
+          type: array
+          items:
+            type: string
+        updates:
+          type: object
+          additionalProperties:
+            type: string
+    AlterCatalogResponse:
+      type: object
+      properties:
+        removed:
+          type: array
+          items:
+            type: string
+        updated:
+          type: array
+          items:
+            type: string
+        missing:
+          type: array
+          items:
+            type: string
+    CreateDatabaseRequest:
+      type: object
+      properties:
+        name:
+          type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+    CreatePartitionsRequest:
+      type: object
+      properties:
+        specs:
+          type: array
+          items:
+            type: object
+    DropPartitionsRequest:
+      type: object
+      properties:
+        specs:
+          type: array
+          items:
+            type: object
+    AlterTableRequest:
+      type: object
+      properties:
+        changes:
+          type: array
+          items:
+            $ref: '#/components/schemas/SchemaChange'
+    MarkDonePartitionsRequest:
+      type: object
+      properties:
+        specs:
+          type: array
+          items:
+            type: object
+    CreateDatabaseResponse:
+      type: object
+      properties:
+        name:
+          type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+    ErrorResponse:
+      type: object
+      properties:
+        message:
+          type: string
+        resourceType:
+          type: string
+          enum: ["DATABASE", "TABLE", "COLUMN", "SNAPSHOT", "BRANCH", "TAG", 
"VIEW", "DIALECT", "UNKNOWN"]
+        resourceName:
+          type: string
+        code:
+          type: integer
+          format: int32
+    CreateTableRequest:
+      type: object
+      properties:
+        identifier:
+          $ref: '#/components/schemas/Identifier'
+        schema:
+          $ref: '#/components/schemas/Schema'
+    CreateViewRequest:
+      type: object
+      properties:
+        identifier:
+          $ref: '#/components/schemas/Identifier'
+        schema:
+          $ref: '#/components/schemas/ViewSchema'
+    AlterViewRequest:
+      type: object
+      properties:
+        changes:
+          type: array
+          items:
+            $ref: '#/components/schemas/ViewChange'
+    ViewChange:
+      anyOf:
+        - $ref: '#/components/schemas/SetViewOption'
+        - $ref: '#/components/schemas/RemoveViewOption'
+        - $ref: '#/components/schemas/UpdateViewComment'
+        - $ref: '#/components/schemas/AddDialect'
+        - $ref: '#/components/schemas/UpdateDialect'
+        - $ref: '#/components/schemas/DropDialect'
+      required:
+        - action
+      properties:
+        action:
+          type: string
+    SetViewOption:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "setOption"
+        key:
+          type: string
+        value:
+          type: string
+    RemoveViewOption:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "removeOption"
+        key:
+          type: string
+    UpdateViewComment:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "comment"
+        key:
+          type: string
+    AddDialect:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "addDialect"
+        dialect:
+          type: string
+        query:
+          type: string
+    UpdateDialect:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "updateDialect"
+        dialect:
+          type: string
+        query:
+          type: string
+    DropDialect:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "dropDialect"
+        dialect:
+          type: string
+    DataField:
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int32
+        name:
+          type: string
+        type:
+          $ref: '#/components/schemas/DataType'
+        description:
+          type: string
+    DataType:
+      oneOf:
+        - $ref: '#/components/schemas/PrimitiveType'
+        - $ref: '#/components/schemas/ArrayType'
+        - $ref: '#/components/schemas/MultisetType'
+        - $ref: '#/components/schemas/MapType'
+        - $ref: '#/components/schemas/RowType'
+    PrimitiveType:
+      type: string
+    ArrayType:
+      type: object
+      properties:
+        type:
+          type: string
+          pattern: ^ARRAY.*
+          example: ARRAY
+        element:
+          $ref: '#/components/schemas/DataType'
+    MultisetType:
+      type: object
+      properties:
+        type:
+          type: string
+          pattern: ^MULTISET.*
+          example: MULTISET
+        element:
+          $ref: '#/components/schemas/DataType'
+    MapType:
+      type: object
+      properties:
+        type:
+          type: string
+          pattern: ^MAP.*
+          example: MAP
+        key:
+          $ref: '#/components/schemas/DataType'
+        value:
+          $ref: '#/components/schemas/DataType'
+    RowType:
+      type: object
+      properties:
+        type:
+          type: string
+          pattern: ^ROW.*
+          example: ROW
+        fields:
+          type: array
+          items:
+           $ref: '#/components/schemas/DataField'
+    Identifier:
+      type: object
+      properties:
+        database:
+          type: string
+        object:
+          type: string
+    Schema:
+      type: object
+      properties:
+        fields:
+          type: array
+          items:
+            $ref: '#/components/schemas/DataField'
+        partitionKeys:
+          type: array
+          items:
+            type: string
+        primaryKeys:
+          type: array
+          items:
+            type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+        comment:
+          type: string
+    GetTableResponse:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+        path:
+          type: string
+        isExternal:
+          type: boolean
+        schemaId:
+          type: integer
+          format: int64
+        schema:
+          $ref: '#/components/schemas/Schema'
+        owner:
+          type: string
+        createdAt:
+          format: int64
+        createdBy:
+          type: string
+        updatedAt:
+          format: int64
+        updatedBy:
+          type: string
+    SchemaChange:
+      anyOf:
+        - $ref: '#/components/schemas/SetOption'
+        - $ref: '#/components/schemas/RemoveOption'
+        - $ref: '#/components/schemas/UpdateComment'
+        - $ref: '#/components/schemas/AddColumn'
+        - $ref: '#/components/schemas/RenameColumn'
+        - $ref: '#/components/schemas/DropColumn'
+        - $ref: '#/components/schemas/UpdateColumnComment'
+        - $ref: '#/components/schemas/UpdateColumnType'
+        - $ref: '#/components/schemas/UpdateColumnPosition'
+        - $ref: '#/components/schemas/UpdateColumnNullability'
+      required:
+        - action
+      properties:
+        action:
+          type: string
+    SetOption:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "setOption"
+        key:
+          type: string
+        value:
+          type: string
+    RemoveOption:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "removeOption"
+        key:
+          type: string
+    UpdateComment:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "updateComment"
+        comment:
+          type: string
+    AddColumn:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "addColumn"
+        fieldNames:
+          type: array
+          items:
+            type: string
+        dataType:
+          $ref: '#/components/schemas/DataType'
+        comment:
+          type: string
+        move:
+          $ref: '#/components/schemas/Move'
+    RenameColumn:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "renameColumn"
+        fieldNames:
+          type: array
+          items:
+            type: string
+        newName:
+          type: string
+    DropColumn:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "dropColumn"
+        fieldNames:
+          type: array
+          items:
+            type: string
+    UpdateColumnComment:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "updateColumnComment"
+        fieldNames:
+          type: array
+          items:
+            type: string
+        newComment:
+          type: string
+    UpdateColumnType:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "updateColumnType"
+        fieldNames:
+          type: array
+          items:
+            type: string
+        newDataType:
+          $ref: '#/components/schemas/DataType'
+        keepNullability:
+          type: boolean
+    UpdateColumnPosition:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "updateColumnPosition"
+        move:
+          $ref: '#/components/schemas/Move'
+    UpdateColumnNullability:
+      type: object
+      properties:
+        action:
+          type: string
+          const: "update_column_nullability"
+        fieldNames:
+          type: array
+          items:
+            type: string
+        newNullability:
+          type: boolean
+    Move:
+      type: object
+      properties:
+        fieldName:
+          type: string
+        referenceFieldName:
+          type: string
+        type:
+          type: string
+    RenameTableRequest:
+      type: object
+      properties:
+        source:
+          $ref: '#/components/schemas/Identifier'
+        destination:
+          $ref: '#/components/schemas/Identifier'
+    CommitTableRequest:
+      type: object
+      properties:
+        snapshot:
+          $ref: '#/components/schemas/Snapshot'
+        statistics:
+          type: array
+          items:
+            $ref: '#/components/schemas/PartitionStatistics'
+    RollbackTableRequest:
+      type: object
+      properties:
+        instant:
+          $ref: '#/components/schemas/Instant'
+    Instant:
+      anyOf:
+        - $ref: '#/components/schemas/SnapshotInstant'
+        - $ref: '#/components/schemas/TagInstant'
+      required:
+        - type
+      properties:
+        type:
+          type: string
+    SnapshotInstant:
+      type: object
+      properties:
+        'type':
+          type: string
+          const: "snapshot"
+        snapshotId:
+          type: integer
+          format: int64
+    TagInstant:
+      type: object
+      properties:
+        'type':
+          type: string
+          const: "tag"
+        tagName:
+          type: string
+    Snapshot:
+      type: object
+      properties:
+        version:
+          type: integer
+          format: int32
+          nullable: true
+        id:
+          type: integer
+          format: int64
+        schemaId:
+          type: integer
+          format: int64
+        baseManifestList:
+          type: string
+        deltaManifestList:
+          type: string
+        changelogManifestList:
+          type: string
+          nullable: true
+        indexManifest:
+          type: string
+        commitUser:
+          type: string
+        commitIdentifier:
+          type: string
+        commitKind:
+          type: string
+          enum: ["APPEND", "COMPACT", "OVERWRITE", "ANALYZE"]
+        timeMillis:
+          type: integer
+          format: int64
+        logOffsets:
+          type: object
+          additionalProperties:
+            type: integer
+            format: int64
+        totalRecordCount:
+          type: integer
+          format: int64
+        deltaRecordCount:
+          type: integer
+          format: int64
+        changelogRecordCount:
+          type: integer
+          format: int64
+        watermark:
+          type: integer
+          format: int64
+        statistics:
+          type: string
+    TableSnapshot:
+      type: object
+      properties:
+        snapshot:
+          $ref: '#/components/schemas/Snapshot'
+        recordCount:
+          type: integer
+          format: int64
+        fileSizeInBytes:
+          type: integer
+          format: int64
+        fileCount:
+          type: integer
+          format: int64
+        lastFileCreationTime:
+          type: integer
+          format: int64
+    CommitTableResponse:
+      type: object
+      properties:
+        success:
+          type: boolean
+    GetTableDataTokenResponse:
+      type: object
+      properties:
+        token:
+          type: object
+          additionalProperties:
+            type: string
+        expiresAt:
+          type: integer
+          format: int64
+    GetTableSnapshotResponse:
+      type: object
+      properties:
+        snapshot:
+          $ref: '#/components/schemas/TableSnapshot'
+    AlterDatabaseRequest:
+      type: object
+      properties:
+        removals:
+          type: array
+          items:
+            type: string
+        updates:
+          type: object
+          additionalProperties:
+            type: string
+    AlterPartitionsRequest:
+      type: object
+      properties:
+        partitions:
+          type: array
+          items:
+            $ref: '#/components/schemas/Partition'
+    AlterDatabaseResponse:
+      type: object
+      properties:
+        removed:
+          type: array
+          items:
+            type: string
+        updated:
+          type: array
+          items:
+            type: string
+        missing:
+          type: array
+          items:
+            type: string
+    ListDatabasesResponse:
+      type: object
+      properties:
+        databases:
+          type: array
+          items:
+            type: string
+        nextPageToken:
+          type: string
+    GetDatabaseResponse:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+        location:
+          type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+        owner:
+          type: string
+        createdAt:
+          format: int64
+        createdBy:
+          type: string
+        updatedAt:
+          format: int64
+        updatedBy:
+          type: string
+    ListTablesResponse:
+      type: object
+      properties:
+        tables:
+          type: array
+          items:
+            type: string
+        nextPageToken:
+          type: string
+    ListTableDetailsResponse:
+      type: object
+      properties:
+        tableDetails:
+          type: array
+          items:
+            $ref: '#/components/schemas/GetTableResponse'
+        nextPageToken:
+          type: string
+    ConfigResponse:
+      type: object
+      properties:
+        defaults:
+          type: object
+          additionalProperties:
+            type: string
+        overrides:
+          type: object
+          additionalProperties:
+            type: string
+    ListPartitionsResponse:
+      type: object
+      properties:
+        partitions:
+          type: array
+          items:
+            $ref: '#/components/schemas/Partition'
+        nextPageToken:
+          type: string
+    CreateBranchRequest:
+      type: object
+      properties:
+        branch:
+          type: string
+        fromTag:
+          nullable: true
+          type: string
+    ForwardBranchRequest:
+      type: object
+      properties:
+        branch:
+          type: string
+    ListBranchesResponse:
+      type: object
+      properties:
+        branches:
+          type: array
+          items:
+            type: string
+    GetViewResponse:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+        schema:
+          $ref: '#/components/schemas/ViewSchema'
+        owner:
+          type: string
+        createdAt:
+          format: int64
+        createdBy:
+          type: string
+        updatedAt:
+          format: int64
+        updatedBy:
+          type: string
+    ListViewsResponse:
+      type: object
+      properties:
+        views:
+          type: array
+          items:
+            type: string
+        nextPageToken:
+          type: string
+    ListViewDetailsResponse:
+      type: object
+      properties:
+        viewDetails:
+          type: array
+          items:
+            $ref: '#/components/schemas/GetViewResponse'
+        nextPageToken:
+          type: string
+    ViewSchema:
+      type: object
+      properties:
+        fields:
+          type: array
+          items:
+            $ref: '#/components/schemas/DataField'
+        query:
+          type: string
+        dialects:
+          type: object
+          additionalProperties:
+            type: string
+        comment:
+          type: string
+        options:
+          type: object
+          additionalProperties:
+            type: string
+    Partition:
+      type: object
+      properties:
+        spec:
+          type: object
+        recordCount:
+          type: integer
+          format: int64
+        fileSizeInBytes:
+          type: integer
+          format: int64
+        fileCount:
+          type: integer
+          format: int64
+        lastFileCreationTime:
+          type: integer
+          format: int64
+        done:
+          type: boolean
+    PartitionStatistics:
+      type: object
+      properties:
+        spec:
+          type: object
+        recordCount:
+          type: integer
+          format: int64
+        fileSizeInBytes:
+          type: integer
+          format: int64
+        fileCount:
+          type: integer
+          format: int64
+        lastFileCreationTime:
+          type: integer
+          format: int64
+  securitySchemes:
+    BearerAuth:
+      type: http
+      scheme: bearer
diff --git a/paimon-docs/pom.xml b/paimon-docs/pom.xml
index 9341b89c67..e5dd03a53f 100644
--- a/paimon-docs/pom.xml
+++ b/paimon-docs/pom.xml
@@ -33,6 +33,7 @@ under the License.
 
     <properties>
         
<generated.docs.dir>./docs/layouts/shortcodes/generated</generated.docs.dir>
+        <static.docs.dir>./docs/static</static.docs.dir>
     </properties>
 
     <dependencies>
@@ -158,6 +159,12 @@ under the License.
                                             <arg 
value="${rootDir}/${generated.docs.dir}/"/>
                                             <arg value="${rootDir}"/>
                                         </java>
+                                        <mkdir 
dir="${project.basedir}/../${static.docs.dir}"/>
+                                        <copy 
todir="${project.basedir}/../${static.docs.dir}">
+                                            <fileset 
dir="${project.basedir}/../paimon-open-api">
+                                                <include 
name="rest-catalog-open-api.yaml"/>
+                                            </fileset>
+                                        </copy>
                                     </target>
                                 </configuration>
                             </execution>

Reply via email to