docs: public CreateDocumentResponse createDocument(CreateDocumentRequest request) {
          checkNotNull(request, "request should not be null.");
          checkNotNull(request.getFile(), "file should not be null.");
          checkNotNull(request.getTitle(), "title should not be null.");
          checkNotNull(request.getFormat(), "format should not be null.");
          // register document
          RegisterDocumentRequest regRequest = new RegisterDocumentRequest();
          regRequest.setFormat(request.getFormat());
          regRequest.setTitle(request.getTitle());
          regRequest.setNotification(request.getNotification());
          regRequest.setAccess(request.getAccess());
          regRequest.setTargetType(request.getTargetType());
  
          RegisterDocumentResponse regResponse = registerDocument(regRequest);
  
          // call bos upload doc
          bosUploadDocument(regResponse.getBucket(), regResponse.getObject(),
                  request.getFile(), regResponse.getBosEndpoint());
  
          // publish document
          PublishDocumentRequest pubRequest = new PublishDocumentRequest();
          pubRequest.setDocumentId(regResponse.getDocumentId());
          publishDocument(pubRequest);
  
          CreateDocumentResponse response = new CreateDocumentResponse();
          response.setDocumentId(regResponse.getDocumentId());
  
          return response;
      }