@GET
  @Path("{documentId}")
  @Consumes({MediaType.APPLICATION_JSON})
  @Produces({MediaType.APPLICATION_JSON})
  public String getDocument(
      @PathParam("entityType") final String entityType,
      @PathParam("entityId") final Long entityId,
      @PathParam("documentId") final Long documentId,
      @Context final UriInfo uriInfo) {

    this.context.authenticatedUser().validateHasReadPermission(this.SystemEntityType);

    final DocumentData documentData =
        this.documentReadPlatformService.retrieveDocument(entityType, entityId, documentId);

    // we do not want to send document location as a part of the response
    documentData.setLocation(null);

    final ApiRequestJsonSerializationSettings settings =
        this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
    return this.toApiJsonSerializer.serialize(
        settings, documentData, this.RESPONSE_DATA_PARAMETERS);
  }