/**
  * POST a JSON representation of the ORCID record containing only affiliations details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the JSON representation of the ORCID record including the added affiliation(s)
  */
 @POST
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Consumes(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(AFFILIATIONS_PATH)
 public Response addAffiliationsJson(@PathParam("orcid") String orcid, OrcidMessage orcidMessage) {
   return serviceDelegator.addAffiliations(uriInfo, orcid, orcidMessage);
 }
 /**
  * GETs the RDF Turtle representation of the ORCID record containing only the Biography details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the RDF Turtle representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {TEXT_N3, TEXT_TURTLE})
 @Path(BIO_PATH)
 public Response viewBioDetailsTurtle(@PathParam("orcid") String orcid) {
   return serviceDelegator.findBioDetails(orcid);
 }
 /**
  * PUT an XML representation of the ORCID record containing only works details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the XML representation of the ORCID record including the added work(s)
  */
 @PUT
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Consumes(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, MediaType.WILDCARD})
 @Path(WORKS_PATH)
 public Response updateWorksXml(@PathParam("orcid") String orcid, OrcidMessage orcidMessage) {
   return serviceDelegator.updateWorks(uriInfo, orcid, orcidMessage);
 }
 /**
  * GETs the XML representation of the ORCID record containing all details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the XML representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Path(PROFILE_GET_PATH)
 public Response viewFullDetailsXml(@PathParam("orcid") String orcid) {
   return serviceDelegator.findFullDetails(orcid);
 }
 /**
  * POST an XML representation of the ORCID record containing only funding details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the XML representation of the ORCID record including the added funding(s)
  */
 @POST
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Consumes(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, MediaType.WILDCARD})
 @Path(FUNDING_PATH)
 public Response addFundingXml(@PathParam("orcid") String orcid, OrcidMessage orcidMessage) {
   return serviceDelegator.addFunding(uriInfo, orcid, orcidMessage);
 }
 /**
  * GETs the JSON representation of the ORCID record containing only the external identifiers
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the JSON representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(EXTERNAL_IDENTIFIER_PATH)
 public Response viewExternalIdentifiersJson(@PathParam("orcid") String orcid) {
   return serviceDelegator.findExternalIdentifiers(orcid);
 }
 /**
  * PUT a JSON representation of the ORCID record containing only funding details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the JSON representation of the ORCID record including the added funding(s)
  */
 @PUT
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Consumes(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(FUNDING_PATH)
 public Response updateFundingJson(@PathParam("orcid") String orcid, OrcidMessage orcidMessage) {
   return serviceDelegator.updateFunding(uriInfo, orcid, orcidMessage);
 }
 /**
  * GETs the RDF/XML representation of the ORCID record containing only the Biography details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the RDF/XML representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {APPLICATION_RDFXML})
 @Path(BIO_PATH)
 public Response viewBioDetailsRdf(@PathParam("orcid") String orcid) {
   return serviceDelegator.findBioDetails(orcid);
 }
 /**
  * GETs the JSON representation of the ORCID record containing only work details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the JSON representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(WORKS_PATH)
 public Response viewWorksDetailsJson(@PathParam("orcid") String orcid) {
   return serviceDelegator.findWorksDetails(orcid);
 }
 /**
  * Register a new webhook to a specific client.
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @param webhook_uri the webhook that will be added to the user
  * @return
  */
 @PUT
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Consumes(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Path(WEBHOOKS_PATH)
 public Response registerWebhookXML(
     @PathParam("orcid") String orcid, @PathParam("webhook_uri") String webhookUri) {
   return serviceDelegator.registerWebhook(uriInfo, orcid, webhookUri);
 }
 /**
  * POST an JSON representation of the entire ORCID profile
  *
  * @return the JSON representation of the ORCID record including the added work(s)
  */
 @Override
 @POST
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Consumes(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(PROFILE_POST_PATH)
 public Response createProfileJson(OrcidMessage orcidMessage) {
   return serviceDelegator.createProfile(uriInfo, orcidMessage);
 }
 /**
  * Unregister a webhook from specific client.
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @param webhook_uri the webhook that will be deleted from the user
  * @return
  */
 @DELETE
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Consumes(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(WEBHOOKS_PATH)
 public Response unregisterWebhookJson(
     @PathParam("orcid") String orcid, @PathParam("webhook_uri") String webhookUri) {
   return serviceDelegator.unregisterWebhook(uriInfo, orcid, webhookUri);
 }
 /**
  * DELETE a resource. <strong>This resource is not available to OAuth2 clients.</strong>
  *
  * @param orcid
  * @return
  */
 @Override
 @DELETE
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Consumes(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, MediaType.WILDCARD})
 @Path(PROFILE_DELETE_PATH)
 public Response deleteProfileXML(@PathParam("orcid") String orcid) {
   return serviceDelegator.deleteProfile(uriInfo, orcid);
 }
 /**
  * POST a JSON representation of the ORCID external identifiers containing only the URLs details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the JSON representation of the ORCID record including the added external identifiers(s)
  */
 @POST
 @Produces(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Consumes(value = {VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON})
 @Path(EXTERNAL_IDENTIFIER_PATH)
 public Response addExternalIdentifiersJson(
     @PathParam("orcid") String orcid, OrcidMessage orcidMessage) {
   return serviceDelegator.addExternalIdentifiers(uriInfo, orcid, orcidMessage);
 }
 /**
  * Gets the XML representation any Orcid Profiles (BIO) only relevant to the given query
  *
  * @param query
  * @return
  */
 @Override
 @GET
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Path(BIO_SEARCH_PATH)
 public Response searchByQueryXML(@QueryParam("bogus") @DefaultValue("") String query) {
   Map<String, List<String>> solrParams = uriInfo.getQueryParameters();
   Response xmlQueryResults = serviceDelegator.searchByQuery(solrParams);
   registerSearchMetrics(xmlQueryResults);
   return xmlQueryResults;
 }
 /**
  * GETs the HTML representation of the ORCID external identifiers
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the HTML representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {MediaType.TEXT_HTML})
 @Path(EXTERNAL_IDENTIFIER_PATH)
 public Response viewExternalIdentifiersHtml(@PathParam("orcid") String orcid) {
   Response response = serviceDelegator.findExternalIdentifiers(orcid);
   return Response.fromResponse(response)
       .header("Content-Disposition", "attachment; filename=\"" + orcid + "-external-ids.xml\"")
       .build();
 }
 /**
  * GETs the HTML representation of the ORCID record containing only work details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the HTML representation of the ORCID record
  */
 @Override
 @GET
 @Produces(value = {MediaType.TEXT_HTML})
 @Path(WORKS_PATH)
 public Response viewWorksDetailsHtml(@PathParam("orcid") String orcid) {
   Response response = serviceDelegator.findWorksDetails(orcid);
   return Response.fromResponse(response)
       .header("Content-Disposition", "attachment; filename=\"" + orcid + "-works.xml\"")
       .build();
 }
 /**
  * GETs the XML representation of the ORCID record containing only affiliation details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the XML representation of the ORCID record
  */
 @GET
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Path(AFFILIATIONS_PATH)
 public Response viewAffiliationsDetailsXml(@PathParam("orcid") String orcid) {
   return serviceDelegator.findAffiliationsDetails(orcid);
 }
 /**
  * GETs the XML representation of the ORCID record containing only funding details
  *
  * @param orcid the ORCID that corresponds to the user's record
  * @return the XML representation of the ORCID record
  */
 @GET
 @Produces(value = {VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML})
 @Path(FUNDING_PATH)
 public Response viewFundingDetailsXml(@PathParam("orcid") String orcid) {
   return serviceDelegator.findFundingDetails(orcid);
 }
 /**
  * Sends a redirect from the client URI to the group URI
  *
  * @param clientId the client ID that corresponds to the client
  * @return a redirect to the ORCID record for the client's group
  */
 @Override
 @GET
 @Path(CLIENT_PATH)
 public Response viewClient(@PathParam("client_id") String clientId) {
   return serviceDelegator.redirectClientToGroup(clientId);
 }
 /** @return Plain text message indicating health of service */
 @GET
 @Produces(value = {MediaType.TEXT_PLAIN})
 @Path(STATUS_PATH)
 public Response viewStatusText() {
   return serviceDelegator.viewStatusText();
 }