public void createTable(Context ctx) {
    handleNamespace(
        ctx,
        (catalog, database) -> {
          CreateTableRequest request = bodyAsClass(ctx, CreateTableRequest.class);
          String tableName = request.name();
          TableFormat format =
              TablePropertyUtil.isBaseStore(request.properties(), TableFormat.MIXED_ICEBERG)
                  ? TableFormat.MIXED_ICEBERG
                  : TableFormat.ICEBERG;

          try (InternalTableCreator creator =
              catalog.newTableCreator(database, tableName, format, request)) {
            try {
              org.apache.amoro.server.table.TableMetadata metadata = creator.create();
              tableManager.createTable(catalog.name(), metadata);
            } catch (RuntimeException e) {
              creator.rollback();
              throw e;
            }
          }

          try (InternalTableHandler<TableOperations> handler =
              catalog.newTableHandler(database, tableName)) {
            TableMetadata current = handler.newTableOperator().current();
            return LoadTableResponse.builder().withTableMetadata(current).build();
          }
        });
  }
POST PREFIX/v1/catalogs/{catalog}/namespaces/{namespace}/tables
amoro-ams/src/main/java/org/apache/amoro/server/RestCatalogService.java