You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2021/12/05 16:45:41 UTC

[juneau] branch master updated: Eliminate @ResponseBody/@ResponseHeader/@ResponseCode

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

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


The following commit(s) were added to refs/heads/master by this push:
     new bd04977  Eliminate @ResponseBody/@ResponseHeader/@ResponseCode
bd04977 is described below

commit bd049775daa04d0eef6cf207d0802deb6d229e9a
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Sun Dec 5 11:45:24 2021 -0500

    Eliminate @ResponseBody/@ResponseHeader/@ResponseCode
---
 .../apache/juneau/http/annotation/Response.java    |   2 +-
 .../juneau/http/annotation/ResponseAnnotation.java |   8 +-
 .../juneau/http/annotation/ResponseBody.java       | 139 ----------
 .../http/annotation/ResponseBodyAnnotation.java    | 204 ---------------
 .../juneau/http/annotation/ResponseHeader.java     | 212 ---------------
 .../http/annotation/ResponseHeaderAnnotation.java  | 291 ---------------------
 .../{ResponseCode.java => StatusCode.java}         |  10 +-
 ...deAnnotation.java => StatusCodeAnnotation.java} |  32 +--
 .../org/apache/juneau/http/part/PartBeanMeta.java  |   2 -
 .../org/apache/juneau/http/response/Accepted.java  |   2 +-
 .../juneau/http/response/AlreadyReported.java      |   2 +-
 .../apache/juneau/http/response/BadRequest.java    |   2 +-
 .../org/apache/juneau/http/response/Conflict.java  |   2 +-
 .../org/apache/juneau/http/response/Continue.java  |   2 +-
 .../org/apache/juneau/http/response/Created.java   |   2 +-
 .../apache/juneau/http/response/EarlyHints.java    |   2 +-
 .../juneau/http/response/ExpectationFailed.java    |   2 +-
 .../juneau/http/response/FailedDependency.java     |   2 +-
 .../org/apache/juneau/http/response/Forbidden.java |   2 +-
 .../org/apache/juneau/http/response/Found.java     |   2 +-
 .../java/org/apache/juneau/http/response/Gone.java |   2 +-
 .../http/response/HttpVersionNotSupported.java     |   2 +-
 .../org/apache/juneau/http/response/IMUsed.java    |   2 +-
 .../juneau/http/response/InsufficientStorage.java  |   2 +-
 .../juneau/http/response/InternalServerError.java  |   2 +-
 .../juneau/http/response/LengthRequired.java       |   2 +-
 .../org/apache/juneau/http/response/Locked.java    |   2 +-
 .../apache/juneau/http/response/LoopDetected.java  |   2 +-
 .../juneau/http/response/MethodNotAllowed.java     |   2 +-
 .../juneau/http/response/MisdirectedRequest.java   |   2 +-
 .../juneau/http/response/MovedPermanently.java     |   2 +-
 .../apache/juneau/http/response/MultiStatus.java   |   2 +-
 .../juneau/http/response/MultipleChoices.java      |   2 +-
 .../response/NetworkAuthenticationRequired.java    |   2 +-
 .../org/apache/juneau/http/response/NoContent.java |   2 +-
 .../http/response/NonAuthoritiveInformation.java   |   2 +-
 .../apache/juneau/http/response/NotAcceptable.java |   2 +-
 .../apache/juneau/http/response/NotExtended.java   |   2 +-
 .../org/apache/juneau/http/response/NotFound.java  |   2 +-
 .../juneau/http/response/NotImplemented.java       |   2 +-
 .../apache/juneau/http/response/NotModified.java   |   2 +-
 .../java/org/apache/juneau/http/response/Ok.java   |   2 +-
 .../juneau/http/response/PartialContent.java       |   2 +-
 .../juneau/http/response/PayloadTooLarge.java      |   2 +-
 .../juneau/http/response/PermanentRedirect.java    |   2 +-
 .../juneau/http/response/PreconditionFailed.java   |   2 +-
 .../juneau/http/response/PreconditionRequired.java |   2 +-
 .../apache/juneau/http/response/Processing.java    |   2 +-
 .../juneau/http/response/RangeNotSatisfiable.java  |   2 +-
 .../http/response/RequestHeaderFieldsTooLarge.java |   2 +-
 .../apache/juneau/http/response/ResetContent.java  |   2 +-
 .../org/apache/juneau/http/response/SeeOther.java  |   2 +-
 .../juneau/http/response/ServiceUnavailable.java   |   2 +-
 .../juneau/http/response/SwitchingProtocols.java   |   2 +-
 .../juneau/http/response/TemporaryRedirect.java    |   2 +-
 .../juneau/http/response/TooManyRequests.java      |   2 +-
 .../apache/juneau/http/response/Unauthorized.java  |   2 +-
 .../http/response/UnavailableForLegalReasons.java  |   2 +-
 .../juneau/http/response/UnprocessableEntity.java  |   2 +-
 .../juneau/http/response/UnsupportedMediaType.java |   2 +-
 .../juneau/http/response/UpgradeRequired.java      |   2 +-
 .../apache/juneau/http/response/UriTooLong.java    |   2 +-
 .../org/apache/juneau/http/response/UseProxy.java  |   2 +-
 .../http/response/VariantAlsoNegotiates.java       |   2 +-
 .../org/apache/juneau/httppart/HttpPartSchema.java |  21 +-
 .../juneau/httppart/bean/RequestBeanMeta.java      |   2 -
 .../juneau/httppart/bean/ResponseBeanMeta.java     |  42 +--
 .../Topics/01.Overview/05.RestServerOverview.html  |   2 +-
 .../04.HttpParts/02.HttpPartAnnotations.html       |  14 +-
 .../04.HttpParts/04.ResponseBeans.html             |  16 +-
 .../08.RestSwaggerResponseExamples.html            |   8 +-
 .../11.RestcProxies/09.RestcResponse.html          |  12 +-
 juneau-doc/src/main/javadoc/overview.html          |  22 +-
 .../juneau/rest/BasicSwaggerProviderSession.java   |  38 +--
 .../java/org/apache/juneau/rest/RestContext.java   |   2 +-
 .../java/org/apache/juneau/rest/RestOpContext.java |  34 +--
 .../java/org/apache/juneau/rest/RestOpInvoker.java |   2 +-
 .../org/apache/juneau/rest/args/HeaderArg.java     |   2 +-
 .../apache/juneau/rest/args/ResponseCodeArg.java   |   8 +-
 .../apache/juneau/rest/args/ResponseHeaderArg.java |  15 +-
 .../http/annotation/AnnotationUtils_Test.java      |  35 +--
 .../http/annotation/ResponseAnnotation_Test.java   |   8 +-
 .../annotation/ResponseBodyAnnotation_Test.java    | 118 ---------
 .../annotation/ResponseHeaderAnnotation_Test.java  | 134 ----------
 .../annotation/ResponseStatusAnnotation_Test.java  |  18 +-
 .../apache/juneau/http/part/PartBeanMeta_Test.java |   2 +-
 .../remote/Remote_ResponseAnnotation_Test.java     |  10 +-
 .../HttpPartSchema_ResponseHeader_Test.java        | 108 ++++----
 .../java/org/apache/juneau/rest/Swagger_Test.java  |  40 +--
 .../rest/annotation/ResponseHeader_Test.java       |  41 ++-
 .../rest/annotation/ResponseStatus_Test.java       |   2 +-
 .../juneau/rest/annotation/Response_Test.java      |   4 +-
 .../rest/annotation/Swagger_Response_Test.java     |  24 +-
 93 files changed, 312 insertions(+), 1482 deletions(-)

diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
index 71d4031..3c05a6f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
@@ -99,7 +99,7 @@ public @interface Response {
 	 * 		Server-side generated Swagger documentation.
 	 * </ul>
 	 */
-	ResponseHeader[] headers() default {};
+	Header[] headers() default {};
 
 	/**
 	 * Dynamically apply this annotation to the specified classes.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
index 886aa11..1be75e0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
@@ -91,7 +91,7 @@ public class ResponseAnnotation {
 
 		Class<? extends HttpPartParser> parser = HttpPartParser.Null.class;
 		Class<? extends HttpPartSerializer> serializer = HttpPartSerializer.Null.class;
-		ResponseHeader[] headers={};
+		Header[] headers={};
 		Schema schema = SchemaAnnotation.DEFAULT;
 		String[] examples={};
 
@@ -128,7 +128,7 @@ public class ResponseAnnotation {
 		 * @param value The new value for this property.
 		 * @return This object.
 		 */
-		public Builder headers(ResponseHeader...value) {
+		public Builder headers(Header...value) {
 			this.headers = value;
 			return this;
 		}
@@ -203,7 +203,7 @@ public class ResponseAnnotation {
 
 		private final Class<? extends HttpPartParser> parser;
 		private final Class<? extends HttpPartSerializer> serializer;
-		private final ResponseHeader[] headers;
+		private final Header[] headers;
 		private final Schema schema;
 		private final String[] examples;
 
@@ -223,7 +223,7 @@ public class ResponseAnnotation {
 		}
 
 		@Override /* Response */
-		public ResponseHeader[] headers() {
+		public Header[] headers() {
 			return headers;
 		}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBody.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBody.java
deleted file mode 100644
index 41a1588..0000000
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBody.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.http.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.io.*;
-import java.lang.annotation.*;
-
-import org.apache.juneau.annotation.*;
-
-/**
- * REST response body annotation.
- *
- * <p>
- * Annotation used to denote an HTTP response body.
- *
- * <p>
- * Can be used in the following locations:
- * <ul>
- * 	<li>Methods and return types of server-side and client-side <ja>@Response</ja>-annotated interfaces.
- * </ul>
- *
- *
- * <h5 class='topic'>Public methods of <ja>@Response</ja>-annotated methods</h5>
- * <p>
- * On {@link Response @Response}-annotated classes, this method can be used to denote a POJO to use as the response.
- *
- * <p>
- * The method must be public and be one of the following:
- * <ul>
- * 	<li>A public no-arg method with a POJO return type.
- * 	<li>A public one-arg method with a <jk>void</jk> return type that takes in a {@link Reader} or {@link OutputStream}.
- * </ul>
- *
- * <h5 class='section'>Example:</h5>
- * <p class='bcode w800'>
- * 	<ja>@RestPost</ja>
- * 	<jk>public</jk> AddPetSuccess addPet(Pet <jv>pet</jv>) {
- * 		<jsm>addPet</jsm>(<jv>pet</jv>);
- * 		<jk>return new</jk> AddPetSuccess(...);
- * 	}
- * </p>
- *
- * <h5 class='figure'>Example:</h5>
- * <p class='bcode w800'>
- * 	<ja>@Response</ja>
- * 	<jk>public class</jk> AddPetSuccess {
- *
- * 		<ja>@ResponseBody</ja>
- * 		<jk>public</jk> Pet getPet() {...}
- * 	}
- * </p>
- *
- * <h5 class='section'>Example:</h5>
- * <p class='bcode w800'>
- * 	<ja>@Response</ja>
- * 	<jk>public class</jk> MyCustomJsonResponse {
- *
- * 		<ja>@ResponseHeader</ja>(<js>"Content-Type"</js>)
- * 		<jk>public</jk> String getContentType() {
- * 			<jk>return</jk> <js>"application/json"</js>;
- * 		}
- *
- * 		<ja>@ResponseBody</ja>
- * 		<jk>public void</jk> writeTo(Writer <jv>out</jv>) {
- * 			<jv>out</jv>.write(<js>"{'foo':'bar'}"</js>);
- * 		}
- * 	}
- * </p>
- *
- * <h5 class='topic'>Methods and return types of server-side and client-side @Response-annotated interfaces</h5>
- *
- * <ul class='seealso'>
- * 	<li class='link'>{@doc RestcResponse}
- * </ul>
- */
-@Documented
-@Target({METHOD,TYPE})
-@Retention(RUNTIME)
-@Inherited
-@Repeatable(ResponseBodyAnnotation.Array.class)
-@ContextApply(ResponseBodyAnnotation.Applier.class)
-public @interface ResponseBody {
-	/**
-	 * Dynamically apply this annotation to the specified classes.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc DynamicallyAppliedAnnotations}
-	 * </ul>
-	 */
-	String[] on() default {};
-
-	/**
-	 * Dynamically apply this annotation to the specified classes.
-	 *
-	 * <p>
-	 * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc DynamicallyAppliedAnnotations}
-	 * </ul>
-	 */
-	Class<?>[] onClass() default {};
-
-	/**
-	 * <mk>schema</mk> field of the {@doc ExtSwaggerParameterObject}.
-	 *
-	 * <p>
-	 * The schema defining the type used for parameter.
-	 *
-	 * <p>
-	 * The {@link Schema @Schema} annotation can also be used standalone on the parameter or type.
-	 * Values specified on this field override values specified on the type, and values specified on child types override values
-	 * specified on parent types.
-	 *
-	 * <h5 class='section'>Used for:</h5>
-	 * <ul class='spaced-list'>
-	 * 	<li>
-	 * 		Server-side schema-based parsing and parsing validation.
-	 * 	<li>
-	 * 		Server-side generated Swagger documentation.
-	 * 	<li>
-	 * 		Client-side schema-based serializing and serializing validation.
-	 * </ul>
-	 */
-	Schema schema() default @Schema;
-}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
deleted file mode 100644
index 81b7503..0000000
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
+++ /dev/null
@@ -1,204 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.http.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.reflect.*;
-import org.apache.juneau.svl.*;
-
-/**
- * Utility classes and methods for the {@link ResponseBody @ResponseBody} annotation.
- */
-public class ResponseBodyAnnotation {
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Static
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/** Default value */
-	public static final ResponseBody DEFAULT = create().build();
-
-	/**
-	 * Instantiates a new builder for this class.
-	 *
-	 * @return A new builder object.
-	 */
-	public static Builder create() {
-		return new Builder();
-	}
-
-	/**
-	 * Instantiates a new builder for this class.
-	 *
-	 * @param on The targets this annotation applies to.
-	 * @return A new builder object.
-	 */
-	public static Builder create(Class<?>...on) {
-		return create().on(on);
-	}
-
-	/**
-	 * Instantiates a new builder for this class.
-	 *
-	 * @param on The targets this annotation applies to.
-	 * @return A new builder object.
-	 */
-	public static Builder create(String...on) {
-		return create().on(on);
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Builder
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/**
-	 * Builder class.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
-	 * </ul>
-	 */
-	public static class Builder extends TargetedAnnotationTMBuilder {
-
-		Schema schema = SchemaAnnotation.DEFAULT;
-
-		/**
-		 * Constructor.
-		 */
-		protected Builder() {
-			super(ResponseBody.class);
-		}
-
-		/**
-		 * Sets the {@link ResponseBody#schema} property on this annotation.
-		 *
-		 * @param value The new value for this property.
-		 * @return This object.
-		 */
-		public Builder schema(Schema value) {
-			this.schema = value;
-			return this;
-		}
-
-		/**
-		 * Instantiates a new {@link ResponseBody @ResponseBody} object initialized with this builder.
-		 *
-		 * @return A new {@link ResponseBody @ResponseBody} object.
-		 */
-		public ResponseBody build() {
-			return new Impl(this);
-		}
-
-		// <FluentSetters>
-
-		@Override /* GENERATED - TargetedAnnotationBuilder */
-		public Builder on(String...values) {
-			super.on(values);
-			return this;
-		}
-
-		@Override /* GENERATED - TargetedAnnotationTBuilder */
-		public Builder on(java.lang.Class<?>...value) {
-			super.on(value);
-			return this;
-		}
-
-		@Override /* GENERATED - TargetedAnnotationTBuilder */
-		public Builder onClass(java.lang.Class<?>...value) {
-			super.onClass(value);
-			return this;
-		}
-
-		@Override /* GENERATED - TargetedAnnotationTMBuilder */
-		public Builder on(Method...value) {
-			super.on(value);
-			return this;
-		}
-
-		// </FluentSetters>
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Implementation
-	//-----------------------------------------------------------------------------------------------------------------
-
-	private static class Impl extends TargetedAnnotationTImpl implements ResponseBody {
-
-		private final Schema schema;
-
-		Impl(Builder b) {
-			super(b);
-			this.schema = b.schema;
-			postConstruct();
-		}
-
-		@Override /* ResponseBody */
-		public Schema schema() {
-			return schema;
-		}
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Appliers
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/**
-	 * Applies targeted {@link ResponseBody} annotations to a {@link org.apache.juneau.BeanContext.Builder}.
-	 */
-	public static class Applier extends AnnotationApplier<ResponseBody,BeanContext.Builder> {
-
-		/**
-		 * Constructor.
-		 *
-		 * @param vr The resolver for resolving values in annotations.
-		 */
-		public Applier(VarResolverSession vr) {
-			super(ResponseBody.class, BeanContext.Builder.class, vr);
-		}
-
-		@Override
-		public void apply(AnnotationInfo<ResponseBody> ai, BeanContext.Builder b) {
-			ResponseBody a = ai.getAnnotation();
-
-			if (isEmpty(a.on()) && isEmpty(a.onClass()))
-				return;
-
-			b.annotations(a);
-		}
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Other
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/**
-	 * A collection of {@link ResponseBody @ResponseBody annotations}.
-	 */
-	@Documented
-	@Target({METHOD,TYPE})
-	@Retention(RUNTIME)
-	@Inherited
-	public static @interface Array {
-
-		/**
-		 * The child annotations.
-		 */
-		ResponseBody[] value();
-	}
-}
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeader.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeader.java
deleted file mode 100644
index 00a2af0..0000000
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeader.java
+++ /dev/null
@@ -1,212 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.http.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.httppart.*;
-import org.apache.juneau.oapi.*;
-
-/**
- * REST response header annotation.
- *
- * <p>
- * Annotation used to denote an HTTP response header.
- *
- * <p>
- * Can be used in the following locations:
- * <ul>
- * 	<li>Arguments of server-side <ja>@RestOp</ja>-annotated methods.
- * 	<li>Methods and return types of server-side and client-side <ja>@Response</ja>-annotated interfaces.
- * </ul>
- *
- * <h5 class='topic'>Arguments of server-side <ja>@RestOp</ja>-annotated methods</h5>
- *
- * <p>
- * On server-side REST, this annotation can be applied to method parameters to identify them as an HTTP response header.
- * <br>In this case, the annotation can only be applied to subclasses of type {@link Value}.
- *
- * <p>
- * The following examples show 3 different ways of accomplishing the same task of setting an HTTP header
- * on a response:
- *
- * <p class='bcode w800'>
- * 	<jc>// Example #1 - Setting header directly on RestResponse object.</jc>
- * 	<ja>@RestPost</ja>(...)
- * 	<jk>public void</jk> login(RestResponse <jv>res</jv>) {
- * 		<jv>res</jv>.setHeader(<js>"X-Rate-Limit"</js>, 1000);
- * 		...
- * 	}
- *
- *	<jc>// Example #2 - Use on parameter.</jc>
- * 	<ja>@RestPost</ja>(...)
- * 	<jk>public void</jk> login(
- * 			<ja>@ResponseHeader</ja>(
- * 				name=<js>"X-Rate-Limit"</js>,
- * 				type=<js>"integer"</js>,
- * 				format=<js>"int32"</js>,
- * 				description=<js>"Calls per hour allowed by the user."</js>,
- * 				example=<js>"123"</js>
- * 			)
- * 			Value&lt;Integer&gt; <jv>rateLimit</jv>
- *		) {
- *		<jv>rateLimit</jv>.set(1000);
- *		...
- * 	}
- *
- *	<jc>// Example #3 - Use on type.</jc>
- * 	<ja>@RestPost</ja>(...)
- * 	<jk>public void</jk> login(Value&lt;RateLimit&gt; <jv>rateLimit</jv>) {
- * 		<jv>rateLimit</jv>.set(<jk>new</jk> RateLimit(1000));
- * 		...
- * 	}
- *
- * 	<ja>@ResponseHeader</ja>(
- * 		name=<js>"X-Rate-Limit"</js>,
- * 		type=<js>"integer"</js>,
- * 		format=<js>"int32"</js>,
- * 		description=<js>"Calls per hour allowed by the user."</js>,
- * 		example=<js>"123"</js>
- * 	)
- * 	<jk>public class</jk> RateLimit {
- * 		<jc>// OpenApiPartSerializer knows to look for this method based on format/type.</jc>
- * 		<jk>public</jk> Integer toInteger() {
- * 			<jk>return</jk> 1000;
- * 		}
- * 	}
- * </p>
- *
- * <h5 class='topic'>Public methods of @Response-annotated types</h5>
- *
- * <p>
- * On server-side REST, this annotation can also be applied to public methods of {@link Response}-annotated methods.
- *
- * <p class='bcode w800'>
- * 	<ja>@Response</ja>
- * 	<jk>public class</jk> AddPetSuccess {
- *
- * 		<ja>@ResponseHeader</ja>(
- * 			name=<js>"X-PetId"</js>,
- * 			type=<js>"integer"</js>,
- * 			format=<js>"int32"</js>,
- * 			description=<js>"ID of added pet."</js>,
- * 			example=<js>"123"</js>
- * 		)
- * 		<jk>public int</jk> getPetId() {...}
- * 	}
- * </p>
- *
- *
- * <ul class='seealso'>
- * 	<li class='link'>{@doc RestSwagger}
- * 	<li class='extlink'>{@doc ExtSwaggerHeaderObject}
- * </ul>
- *
- * <h5 class='topic'>Methods and return types of server-side and client-side @Response-annotated interfaces</h5>
- *
- * <ul class='seealso'>
- * 	<li class='link'>{@doc RestcResponse}
- * </ul>
-*/
-@Documented
-@Target({PARAMETER,METHOD,TYPE})
-@Retention(RUNTIME)
-@Inherited
-@Repeatable(ResponseHeaderAnnotation.Array.class)
-@ContextApply(ResponseHeaderAnnotation.Applier.class)
-public @interface ResponseHeader {
-
-	/**
-	 * The HTTP header name.
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		The format is plain-text.
-	 * </ul>
-	 */
-	String name() default "";
-
-	/**
-	 * Dynamically apply this annotation to the specified classes.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc DynamicallyAppliedAnnotations}
-	 * </ul>
-	 */
-	String[] on() default {};
-
-	/**
-	 * Dynamically apply this annotation to the specified classes.
-	 *
-	 * <p>
-	 * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc DynamicallyAppliedAnnotations}
-	 * </ul>
-	 */
-	Class<?>[] onClass() default {};
-
-	/**
-	 * <mk>schema</mk> field of the {@doc ExtSwaggerParameterObject}.
-	 *
-	 * <p>
-	 * The schema defining the type used for parameter.
-	 *
-	 * <p>
-	 * The {@link Schema @Schema} annotation can also be used standalone on the parameter or type.
-	 * Values specified on this field override values specified on the type, and values specified on child types override values
-	 * specified on parent types.
-	 *
-	 * <h5 class='section'>Used for:</h5>
-	 * <ul class='spaced-list'>
-	 * 	<li>
-	 * 		Server-side schema-based parsing and parsing validation.
-	 * 	<li>
-	 * 		Server-side generated Swagger documentation.
-	 * 	<li>
-	 * 		Client-side schema-based serializing and serializing validation.
-	 * </ul>
-	 */
-	Schema schema() default @Schema;
-
-	/**
-	 * Specifies the {@link HttpPartSerializer} class used for serializing values to strings.
-	 *
-	 * <p>
-	 * Overrides for this part the part serializer defined on the REST resource which by default is {@link OpenApiSerializer}.
-	 */
-	Class<? extends HttpPartSerializer> serializer() default HttpPartSerializer.Null.class;
-
-	/**
-	 * A synonym for {@link #name()}.
-	 *
-	 * <p>
-	 * Allows you to use shortened notation if you're only specifying the name.
-	 *
-	 * <p>
-	 * The following are completely equivalent ways of defining a response header:
-	 * <p class='bcode w800'>
-	 * 	<ja>@ResponseHeader</ja>(name=<js>"X-Rate-Limit"</js>) Value&lt;Integer&gt; <jv>rateLimit</jv>)
-	 * </p>
-	 * <p class='bcode w800'>
-	 * 	<ja>@ResponseHeader</ja>(<js>"X-Rate-Limit"</js>) Value&lt;Integer&gt; <jv>rateLimit</jv>)
-	 * </p>
-	 */
-	String value() default "";
-}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
deleted file mode 100644
index c214228..0000000
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
+++ /dev/null
@@ -1,291 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.http.annotation;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-import static org.apache.juneau.internal.StringUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.httppart.*;
-import org.apache.juneau.reflect.*;
-import org.apache.juneau.svl.*;
-
-/**
- * Utility classes and methods for the {@link ResponseHeader @ResponseHeader} annotation.
- */
-public class ResponseHeaderAnnotation {
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Static
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/** Default value */
-	public static final ResponseHeader DEFAULT = create().build();
-
-	/**
-	 * Instantiates a new builder for this class.
-	 *
-	 * @return A new builder object.
-	 */
-	public static Builder create() {
-		return new Builder();
-	}
-
-	/**
-	 * Instantiates a new builder for this class.
-	 *
-	 * @param on The targets this annotation applies to.
-	 * @return A new builder object.
-	 */
-	public static Builder create(Class<?>...on) {
-		return create().on(on);
-	}
-
-	/**
-	 * Instantiates a new builder for this class.
-	 *
-	 * @param on The targets this annotation applies to.
-	 * @return A new builder object.
-	 */
-	public static Builder create(String...on) {
-		return create().on(on);
-	}
-
-	/**
-	 * Returns <jk>true</jk> if the specified annotation contains all default values.
-	 *
-	 * @param a The annotation to check.
-	 * @return <jk>true</jk> if the specified annotation contains all default values.
-	 */
-	public static boolean empty(ResponseHeader a) {
-		return a == null || DEFAULT.equals(a);
-	}
-
-	/**
-	 * Finds the name from the specified lists of annotations.
-	 *
-	 * <p>
-	 * The last matching name found is returned.
-	 *
-	 * @param lists The lists to search.
-	 * @return The last matching name, or {@link Optional#empty()} if not found.
-	 */
-	@SafeVarargs
-	public static Optional<String> findName(List<ResponseHeader>...lists) {
-		String n = null;
-		for (List<ResponseHeader> l : lists)
-			for (ResponseHeader h : l)
-				n = firstNonEmpty(h.name(), h.value(), n);
-		return Optional.ofNullable(n);
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Builder
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/**
-	 * Builder class.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
-	 * </ul>
-	 */
-	public static class Builder extends TargetedAnnotationTMBuilder {
-
-		Class<? extends HttpPartSerializer> serializer = HttpPartSerializer.Null.class;
-		Schema schema = SchemaAnnotation.DEFAULT;
-		String name="", value="";
-
-		/**
-		 * Constructor.
-		 */
-		protected Builder() {
-			super(ResponseHeader.class);
-		}
-
-		/**
-		 * Instantiates a new {@link ResponseHeader @ResponseHeader} object initialized with this builder.
-		 *
-		 * @return A new {@link ResponseHeader @ResponseHeader} object.
-		 */
-		public ResponseHeader build() {
-			return new Impl(this);
-		}
-
-		/**
-		 * Sets the {@link ResponseHeader#name} property on this annotation.
-		 *
-		 * @param value The new value for this property.
-		 * @return This object.
-		 */
-		public Builder name(String value) {
-			this.name = value;
-			return this;
-		}
-
-		/**
-		 * Sets the {@link ResponseHeader#schema} property on this annotation.
-		 *
-		 * @param value The new value for this property.
-		 * @return This object.
-		 */
-		public Builder schema(Schema value) {
-			this.schema = value;
-			return this;
-		}
-
-		/**
-		 * Sets the {@link ResponseHeader#serializer} property on this annotation.
-		 *
-		 * @param value The new value for this property.
-		 * @return This object.
-		 */
-		public Builder serializer(Class<? extends HttpPartSerializer> value) {
-			this.serializer = value;
-			return this;
-		}
-
-		/**
-		 * Sets the {@link ResponseHeader#value} property on this annotation.
-		 *
-		 * @param value The new value for this property.
-		 * @return This object.
-		 */
-		public Builder value(String value) {
-			this.value = value;
-			return this;
-		}
-
-		// <FluentSetters>
-
-		@Override /* GENERATED - TargetedAnnotationBuilder */
-		public Builder on(String...values) {
-			super.on(values);
-			return this;
-		}
-
-		@Override /* GENERATED - TargetedAnnotationTBuilder */
-		public Builder on(java.lang.Class<?>...value) {
-			super.on(value);
-			return this;
-		}
-
-		@Override /* GENERATED - TargetedAnnotationTBuilder */
-		public Builder onClass(java.lang.Class<?>...value) {
-			super.onClass(value);
-			return this;
-		}
-
-		@Override /* GENERATED - TargetedAnnotationTMBuilder */
-		public Builder on(Method...value) {
-			super.on(value);
-			return this;
-		}
-
-		// </FluentSetters>
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Implementation
-	//-----------------------------------------------------------------------------------------------------------------
-
-	private static class Impl extends TargetedAnnotationTImpl implements ResponseHeader {
-
-		private final Class<? extends HttpPartSerializer> serializer;
-		private final String name, value;
-		private final Schema schema;
-
-		Impl(Builder b) {
-			super(b);
-			this.name = b.name;
-			this.schema = b.schema;
-			this.serializer = b.serializer;
-			this.value = b.value;
-			postConstruct();
-		}
-
-		@Override /* ResponseHeader */
-		public String name() {
-			return name;
-		}
-
-		@Override /* ResponseHeader */
-		public Schema schema() {
-			return schema;
-		}
-
-		@Override /* ResponseHeader */
-		public Class<? extends HttpPartSerializer> serializer() {
-			return serializer;
-		}
-
-		@Override /* ResponseHeader */
-		public String value() {
-			return value;
-		}
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Appliers
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/**
-	 * Applies targeted {@link ResponseHeader} annotations to a {@link org.apache.juneau.BeanContext.Builder}.
-	 */
-	public static class Applier extends AnnotationApplier<ResponseHeader,BeanContext.Builder> {
-
-		/**
-		 * Constructor.
-		 *
-		 * @param vr The resolver for resolving values in annotations.
-		 */
-		public Applier(VarResolverSession vr) {
-			super(ResponseHeader.class, BeanContext.Builder.class, vr);
-		}
-
-		@Override
-		public void apply(AnnotationInfo<ResponseHeader> ai, BeanContext.Builder b) {
-			ResponseHeader a = ai.getAnnotation();
-
-			if (isEmpty(a.on()) && isEmpty(a.onClass()))
-				return;
-
-			b.annotations(a);
-		}
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// Other
-	//-----------------------------------------------------------------------------------------------------------------
-
-	/**
-	 * A collection of {@link ResponseHeader @ResponseHeader annotations}.
-	 */
-	@Documented
-	@Target({METHOD,TYPE})
-	@Retention(RUNTIME)
-	@Inherited
-	public static @interface Array {
-
-		/**
-		 * The child annotations.
-		 */
-		ResponseHeader[] value();
-	}
-}
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseCode.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCode.java
similarity index 92%
rename from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseCode.java
rename to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCode.java
index ec98a65..1407cfd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseCode.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCode.java
@@ -41,7 +41,7 @@ import org.apache.juneau.annotation.*;
  * <h5 class='section'>Example:</h5>
  * <p class='bcode w800'>
  * 	<ja>@RestPost</ja>
- * 	<jk>public void</jk> addPet(<ja>@Body</ja> Pet <jv>pet</jv>, <ja>@ResponseCode</ja> Value&lt;Integer&gt; <jv>status</jv>) {
+ * 	<jk>public void</jk> addPet(<ja>@Body</ja> Pet <jv>pet</jv>, <ja>@StatusCode</ja> Value&lt;Integer&gt; <jv>status</jv>) {
  * 		<jsm>addPet</jsm>(<jv>pet</jv>);
  * 		<jv>status</jv>.set(200);
  * 	}
@@ -69,7 +69,7 @@ import org.apache.juneau.annotation.*;
  * 	<ja>@Response</ja>
  * 	<jk>public class</jk> Success {
  *
- * 		<ja>@ResponseCode</ja>
+ * 		<ja>@StatusCode</ja>
  * 		<jk>public int</jk> getStatus() {
  * 			<jk>return</jk> 201;
  * 		}
@@ -99,9 +99,9 @@ import org.apache.juneau.annotation.*;
 @Target({PARAMETER,METHOD,TYPE})
 @Retention(RUNTIME)
 @Inherited
-@Repeatable(ResponseCodeAnnotation.Array.class)
-@ContextApply(ResponseCodeAnnotation.Applier.class)
-public @interface ResponseCode {
+@Repeatable(StatusCodeAnnotation.Array.class)
+@ContextApply(StatusCodeAnnotation.Applier.class)
+public @interface StatusCode {
 
 	/**
 	 * Dynamically apply this annotation to the specified classes.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseCodeAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
similarity index 85%
rename from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseCodeAnnotation.java
rename to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
index 04ee1ea..db9a4f5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseCodeAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
@@ -24,16 +24,16 @@ import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
 
 /**
- * Utility classes and methods for the {@link ResponseCode @ResponseCode} annotation.
+ * Utility classes and methods for the {@link StatusCode @StatusCode} annotation.
  */
-public class ResponseCodeAnnotation {
+public class StatusCodeAnnotation {
 
 	//-----------------------------------------------------------------------------------------------------------------
 	// Static
 	//-----------------------------------------------------------------------------------------------------------------
 
 	/** Default value */
-	public static final ResponseCode DEFAULT = create().build();
+	public static final StatusCode DEFAULT = create().build();
 
 	/**
 	 * Instantiates a new builder for this class.
@@ -83,20 +83,20 @@ public class ResponseCodeAnnotation {
 		 * Constructor.
 		 */
 		protected Builder() {
-			super(ResponseCode.class);
+			super(StatusCode.class);
 		}
 
 		/**
-		 * Instantiates a new {@link ResponseCode @ResponseCode} object initialized with this builder.
+		 * Instantiates a new {@link StatusCode @StatusCode} object initialized with this builder.
 		 *
-		 * @return A new {@link ResponseCode @ResponseCode} object.
+		 * @return A new {@link StatusCode @StatusCode} object.
 		 */
-		public ResponseCode build() {
+		public StatusCode build() {
 			return new Impl(this);
 		}
 
 		/**
-		 * Sets the {@link ResponseCode#value} property on this annotation.
+		 * Sets the {@link StatusCode#value} property on this annotation.
 		 *
 		 * @param value The new value for this property.
 		 * @return This object.
@@ -139,7 +139,7 @@ public class ResponseCodeAnnotation {
 	// Implementation
 	//-----------------------------------------------------------------------------------------------------------------
 
-	private static class Impl extends TargetedAnnotationTImpl implements ResponseCode {
+	private static class Impl extends TargetedAnnotationTImpl implements StatusCode {
 
 		private final int[] value;
 
@@ -160,9 +160,9 @@ public class ResponseCodeAnnotation {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Applies targeted {@link ResponseCode} annotations to a {@link org.apache.juneau.BeanContext.Builder}.
+	 * Applies targeted {@link StatusCode} annotations to a {@link org.apache.juneau.BeanContext.Builder}.
 	 */
-	public static class Applier extends AnnotationApplier<ResponseCode,BeanContext.Builder> {
+	public static class Applier extends AnnotationApplier<StatusCode,BeanContext.Builder> {
 
 		/**
 		 * Constructor.
@@ -170,12 +170,12 @@ public class ResponseCodeAnnotation {
 		 * @param vr The resolver for resolving values in annotations.
 		 */
 		public Applier(VarResolverSession vr) {
-			super(ResponseCode.class, BeanContext.Builder.class, vr);
+			super(StatusCode.class, BeanContext.Builder.class, vr);
 		}
 
 		@Override
-		public void apply(AnnotationInfo<ResponseCode> ai, BeanContext.Builder b) {
-			ResponseCode a = ai.getAnnotation();
+		public void apply(AnnotationInfo<StatusCode> ai, BeanContext.Builder b) {
+			StatusCode a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
@@ -189,7 +189,7 @@ public class ResponseCodeAnnotation {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * A collection of {@link ResponseCode @ResponseCode annotations}.
+	 * A collection of {@link StatusCode @StatusCode annotations}.
 	 */
 	@Documented
 	@Target({METHOD,TYPE})
@@ -200,6 +200,6 @@ public class ResponseCodeAnnotation {
 		/**
 		 * The child annotations.
 		 */
-		ResponseCode[] value();
+		StatusCode[] value();
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
index c228e25..c0462cf 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
@@ -102,8 +102,6 @@ public class PartBeanMeta<T> {
 			this.schema = HttpPartSchema.create(FormData.class, type);
 		else if (ci.hasAnnotation(Path.class))
 			this.schema = HttpPartSchema.create(Path.class, type);
-		else if (ci.hasAnnotation(ResponseHeader.class))
-			this.schema = HttpPartSchema.create(ResponseHeader.class, type);
 		else
 			this.schema = HttpPartSchema.create(org.apache.juneau.http.annotation.Header.class, type);
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Accepted.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Accepted.java
index 3f14a58..8de4783 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Accepted.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Accepted.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * The request might or might not be eventually acted upon, and may be disallowed when processing occurs.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Accepted extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/AlreadyReported.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/AlreadyReported.java
index e8aba24..6e0e1f2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/AlreadyReported.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/AlreadyReported.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The members of a DAV binding have already been enumerated in a preceding part of the (multistatus) response, and are not being included again.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class AlreadyReported extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
index 8009c8a..c4f1def 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BadRequest.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class BadRequest extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Conflict.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Conflict.java
index cfbe550..07091ee 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Conflict.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Conflict.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * Indicates that the request could not be processed because of conflict in the request, such as an edit conflict between multiple simultaneous updates.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Conflict extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Continue.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Continue.java
index 162e9bc..febb901 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Continue.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Continue.java
@@ -29,7 +29,7 @@ import org.apache.juneau.http.annotation.*;
  * The response 417 Expectation Failed indicates that the request should be repeated without the Expect header as it indicates that the server doesn't support expectations (this is the case, for example, of HTTP/1.0 servers).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Continue extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Created.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Created.java
index f0c1ed6..ef8c4e8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Created.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Created.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The request has been fulfilled, resulting in the creation of a new resource.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Created extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/EarlyHints.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/EarlyHints.java
index 742f63a..216b4c1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/EarlyHints.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/EarlyHints.java
@@ -24,7 +24,7 @@ import org.apache.juneau.http.annotation.*;
  * Used to return some response headers before final HTTP message.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class EarlyHints extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java
index 4614078..5f94426 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server cannot meet the requirements of the Expect request-header field.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class ExpectationFailed extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/FailedDependency.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/FailedDependency.java
index 6b15280..01f56d3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/FailedDependency.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/FailedDependency.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The request failed because it depended on another request and that request failed (e.g., a PROPPATCH).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class FailedDependency extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Forbidden.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Forbidden.java
index 67d6c52..9f86335 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Forbidden.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Forbidden.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>The user might not have the necessary permissions for a resource, or may need an account of some sort.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Forbidden extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Found.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Found.java
index 4d039f5..bf35984 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Found.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Found.java
@@ -29,7 +29,7 @@ import org.apache.juneau.http.annotation.*;
  * However, some Web applications and frameworks use the 302 status code as if it were the 303.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Found extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Gone.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Gone.java
index db6f8b3..658752b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Gone.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Gone.java
@@ -31,7 +31,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Most use cases do not require clients and search engines to purge the resource, and a <js>"404 Not Found"</js> may be used instead.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Gone extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java
index 69b8f9c..7b12d80 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server does not support the HTTP protocol version used in the request.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class HttpVersionNotSupported extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/IMUsed.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/IMUsed.java
index 97b92b2..e9015ca 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/IMUsed.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/IMUsed.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The server has fulfilled a request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class IMUsed extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java
index b859a3c..9c727ed 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server is unable to store the representation needed to complete the request.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class InsufficientStorage extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InternalServerError.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InternalServerError.java
index 4132e99..5b9e892 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InternalServerError.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/InternalServerError.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class InternalServerError extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LengthRequired.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LengthRequired.java
index 4da1c89..eb1e688 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LengthRequired.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LengthRequired.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The request did not specify the length of its content, which is required by the requested resource.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class LengthRequired extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Locked.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Locked.java
index c606515..b0bd1f1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Locked.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Locked.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The resource that is being accessed is locked.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Locked extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LoopDetected.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LoopDetected.java
index 81bef72..ce06e9f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LoopDetected.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/LoopDetected.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server detected an infinite loop while processing the request (sent in lieu of 208 Already Reported).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class LoopDetected extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java
index 9ae2560..5d9db9d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class MethodNotAllowed extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java
index ea01b5f..6712074 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The request was directed at a server that is not able to produce a response (for example because of connection reuse).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class MisdirectedRequest extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MovedPermanently.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MovedPermanently.java
index cc61d81..c3944aa 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MovedPermanently.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MovedPermanently.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * This and all future requests should be directed to the given URI.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class MovedPermanently extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultiStatus.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultiStatus.java
index 99be41c..f19ff2e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultiStatus.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultiStatus.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The message body that follows is by default an XML message and can contain a number of separate response codes, depending on how many sub-requests were made.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class MultiStatus extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultipleChoices.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultipleChoices.java
index 3218750..fdf201b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultipleChoices.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/MultipleChoices.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * For example, this code could be used to present multiple video format options, to list files with different filename extensions, or to suggest word-sense disambiguation.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class MultipleChoices extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java
index 97bcb6c..ac7c5a8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Intended for use by intercepting proxies used to control access to the network (e.g., "captive portals" used to require agreement to Terms of Service before granting full Internet access via a Wi-Fi hotspot).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NetworkAuthenticationRequired extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NoContent.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NoContent.java
index 7ae0880..7532ad4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NoContent.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NoContent.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The server successfully processed the request and is not returning any content.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NoContent extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java
index ef0d358..fcfa950 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The server is a transforming proxy (e.g. a Web accelerator) that received a 200 OK from its origin, but is returning a modified version of the origin's response.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NonAuthoritiveInformation extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotAcceptable.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotAcceptable.java
index 08e3205..9844469 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotAcceptable.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotAcceptable.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NotAcceptable extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotExtended.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotExtended.java
index c25f44a..fc564f7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotExtended.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotExtended.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * Further extensions to the request are required for the server to fulfill it.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NotExtended extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotFound.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotFound.java
index eeb82e5..7e5a811 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotFound.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotFound.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Subsequent requests by the client are permissible.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NotFound extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotImplemented.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotImplemented.java
index e5d2d6e..acc85ba 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotImplemented.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotImplemented.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Usually this implies future availability (e.g., a new feature of a web-service API).
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NotImplemented extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotModified.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotModified.java
index ade706d..acae0e9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotModified.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/NotModified.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class NotModified extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Ok.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Ok.java
index 17788dc..d165cd8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Ok.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Ok.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * In a POST request, the response will contain an entity describing or containing the result of the action.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Ok extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PartialContent.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PartialContent.java
index 58adaec..ad39e02 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PartialContent.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PartialContent.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * The range header is used by HTTP clients to enable resuming of interrupted downloads, or split a download into multiple simultaneous streams.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class PartialContent extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java
index b1481b1..56cf2d3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The request is larger than the server is willing or able to process.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class PayloadTooLarge extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java
index a0a0410..1430528 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * So, for example, submitting a form to a permanently redirected resource may continue smoothly.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class PermanentRedirect extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java
index 0fc6586..b2624ba 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server does not meet one of the preconditions that the requester put on the request.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class PreconditionFailed extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java
index 73da0a3..bf64948 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class PreconditionRequired extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Processing.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Processing.java
index b374c1e..ab59415 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Processing.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Processing.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * This prevents the client from timing out and assuming the request was lost.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Processing extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java
index a929946..eeedcae 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>For example, if the client asked for a part of the file that lies beyond the end of the file.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class RangeNotSatisfiable extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java
index 7b2b180..557f40c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class RequestHeaderFieldsTooLarge extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ResetContent.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ResetContent.java
index 8269074..5724dad 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ResetContent.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ResetContent.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * Unlike a 204 response, this response requires that the requester reset the document view.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class ResetContent extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SeeOther.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SeeOther.java
index 9e65d01..86adde7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SeeOther.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SeeOther.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * When received in response to a POST (or PUT/DELETE), the client should presume that the server has received the data and should issue a new GET request to the given URI.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class SeeOther extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java
index fa78404..c1b4e04 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Generally, this is a temporary state.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class ServiceUnavailable extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java
index 8488b03..dd4094f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java
@@ -25,7 +25,7 @@ import org.apache.juneau.http.annotation.*;
  * The requester has asked the server to switch protocols and the server has agreed to do so.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class SwitchingProtocols extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java
index db51a24..4c2d7b7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * For example, a POST request should be repeated using another POST request.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class TemporaryRedirect extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TooManyRequests.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TooManyRequests.java
index f00d4b4..b4d8763 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TooManyRequests.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/TooManyRequests.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Intended for use with rate-limiting schemes.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class TooManyRequests extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Unauthorized.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Unauthorized.java
index 1464553..efcf677 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Unauthorized.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/Unauthorized.java
@@ -30,7 +30,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Note: Some sites issue HTTP 401 when an IP address is banned from the website (usually the website domain) and that specific address is refused permission to access a website.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class Unauthorized extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java
index 0a6d752..0fb5b85 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * A server operator has received a legal demand to deny access to a resource or to a set of resources that includes the requested resource.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class UnavailableForLegalReasons extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java
index 8420f8c..1ce5732 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The request was well-formed but was unable to be followed due to semantic errors.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class UnprocessableEntity extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java
index e079077..aa8cfe5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class UnsupportedMediaType extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java
index 196fc84..ae55992 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class UpgradeRequired extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UriTooLong.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UriTooLong.java
index f660cc5..b603f41 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UriTooLong.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UriTooLong.java
@@ -28,7 +28,7 @@ import org.apache.juneau.http.annotation.*;
  * <br>Often the result of too much data being encoded as a query-string of a GET request, in which case it should be converted to a POST request.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class UriTooLong extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UseProxy.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UseProxy.java
index 0083d8f..461041f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UseProxy.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/UseProxy.java
@@ -26,7 +26,7 @@ import org.apache.juneau.http.annotation.*;
  * Many HTTP clients (such as Mozilla and Internet Explorer) do not correctly handle responses with this status code, primarily for security reasons.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class UseProxy extends BasicHttpResponse {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java
index 1614af3..d831824 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java
@@ -27,7 +27,7 @@ import org.apache.juneau.http.annotation.*;
  * Transparent content negotiation for the request results in a circular reference.
  */
 @Response
-@ResponseCode(STATUS_CODE)
+@StatusCode(STATUS_CODE)
 @Schema(description=REASON_PHRASE)
 public class VariantAlsoNegotiates extends BasicHttpException {
 	private static final long serialVersionUID = 1L;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
index cc90cb1..183a9a0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
@@ -507,8 +507,6 @@ public class HttpPartSchema {
 	 * 		<li>{@link FormData}
 	 * 		<li>{@link Path}
 	 * 		<li>{@link Response}
-	 * 		<li>{@link ResponseHeader}
-	 * 		<li>{@link ResponseBody}
 	 * 		<li>{@link HasQuery}
 	 * 		<li>{@link HasFormData}
 	 * 	</ul>
@@ -540,7 +538,6 @@ public class HttpPartSchema {
 	 * 		<li>{@link FormData}
 	 * 		<li>{@link Path}
 	 * 		<li>{@link Response}
-	 * 		<li>{@link ResponseHeader}
 	 * 		<li>{@link HasQuery}
 	 * 		<li>{@link HasFormData}
 	 * 	</ul>
@@ -568,7 +565,6 @@ public class HttpPartSchema {
 	 * 		<li>{@link FormData}
 	 * 		<li>{@link Path}
 	 * 		<li>{@link Response}
-	 * 		<li>{@link ResponseHeader}
 	 * 		<li>{@link HasQuery}
 	 * 		<li>{@link HasFormData}
 	 * 	</ul>
@@ -720,10 +716,8 @@ public class HttpPartSchema {
 				apply((Path)a);
 			else if (a instanceof Response)
 				apply((Response)a);
-			else if (a instanceof ResponseCode)
-				apply((ResponseCode)a);
-			else if (a instanceof ResponseHeader)
-				apply((ResponseHeader)a);
+			else if (a instanceof StatusCode)
+				apply((StatusCode)a);
 			else if (a instanceof HasQuery)
 				apply((HasQuery)a);
 			else if (a instanceof HasFormData)
@@ -750,15 +744,6 @@ public class HttpPartSchema {
 			return this;
 		}
 
-		Builder apply(ResponseHeader a) {
-			if (! SchemaAnnotation.empty(a.schema()))
-				apply(a.schema());
-			allowEmptyValue(false);
-			name(firstNonEmpty(a.name(), a.value()));
-			serializer(a.serializer());
-			return this;
-		}
-
 		Builder apply(FormData a) {
 			if (! SchemaAnnotation.empty(a.schema()))
 				apply(a.schema());
@@ -804,7 +789,7 @@ public class HttpPartSchema {
 			return this;
 		}
 
-		Builder apply(ResponseCode a) {
+		Builder apply(StatusCode a) {
 			codes(a.value());
 			return this;
 		}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index b252c1f..98e520b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -14,7 +14,6 @@ package org.apache.juneau.httppart.bean;
 
 import static org.apache.juneau.httppart.bean.Utils.*;
 import static org.apache.juneau.httppart.HttpPartType.*;
-import static org.apache.juneau.annotation.InvalidAnnotationException.*;
 
 import java.util.*;
 
@@ -96,7 +95,6 @@ public class RequestBeanMeta {
 			for (MethodInfo m : cm.getInfo().getAllMethods()) {
 
 				if (m.isPublic()) {
-					assertNoInvalidAnnotations(m, ResponseHeader.class, ResponseBody.class, ResponseCode.class);
 					String n = m.getSimpleName();
 					if (m.hasAnnotation(Header.class)) {
 						assertNoArgs(m, Header.class);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index c7ffc8b..aa8738e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -51,7 +51,7 @@ public class ResponseBeanMeta {
 		Builder b = new Builder(annotations);
 		b.apply(ci.innerType());
 		ci.getAnnotations(Response.class).forEach(x -> b.apply(x));
-		ci.getAnnotations(ResponseCode.class).forEach(x -> b.apply(x));
+		ci.getAnnotations(StatusCode.class).forEach(x -> b.apply(x));
 		return b.build();
 	}
 
@@ -68,7 +68,7 @@ public class ResponseBeanMeta {
 		Builder b = new Builder(annotations);
 		b.apply(m.getReturnType().unwrap(Value.class, Optional.class).innerType());
 		m.getAnnotations(Response.class).forEach(x -> b.apply(x));
-		m.getAnnotations(ResponseCode.class).forEach(x -> b.apply(x));
+		m.getAnnotations(StatusCode.class).forEach(x -> b.apply(x));
 		return b.build();
 	}
 
@@ -85,7 +85,7 @@ public class ResponseBeanMeta {
 		Builder b = new Builder(annotations);
 		b.apply(mpi.getParameterType().unwrap(Value.class, Optional.class).innerType());
 		mpi.getAnnotations(Response.class).forEach(x -> b.apply(x));
-		mpi.getAnnotations(ResponseCode.class).forEach(x -> b.apply(x));
+		mpi.getAnnotations(StatusCode.class).forEach(x -> b.apply(x));
 		return b.build();
 	}
 
@@ -152,21 +152,21 @@ public class ResponseBeanMeta {
 			ClassInfo ci = cm.getInfo();
 			for (MethodInfo m : ci.getAllMethods()) {
 				if (m.isPublic()) {
-					assertNoInvalidAnnotations(m, Header.class, Query.class, FormData.class, Path.class, Schema.class);
-					if (m.hasAnnotation(ResponseHeader.class)) {
-						assertNoArgs(m, ResponseHeader.class);
-						assertReturnNotVoid(m, ResponseHeader.class);
-						HttpPartSchema s = HttpPartSchema.create(m.getLastAnnotation(ResponseHeader.class), m.getPropertyName());
+					assertNoInvalidAnnotations(m, Query.class, FormData.class);
+					if (m.hasAnnotation(Header.class)) {
+						assertNoArgs(m, Header.class);
+						assertReturnNotVoid(m, Header.class);
+						HttpPartSchema s = HttpPartSchema.create(m.getLastAnnotation(Header.class), m.getPropertyName());
 						headerMethods.put(s.getName(), ResponseBeanPropertyMeta.create(RESPONSE_HEADER, s, m));
-					} else if (m.hasAnnotation(ResponseCode.class)) {
-						assertNoArgs(m, ResponseHeader.class);
-						assertReturnType(m, ResponseHeader.class, int.class, Integer.class);
+					} else if (m.hasAnnotation(StatusCode.class)) {
+						assertNoArgs(m, Header.class);
+						assertReturnType(m, Header.class, int.class, Integer.class);
 						statusMethod = ResponseBeanPropertyMeta.create(RESPONSE_STATUS, m);
-					} else if (m.hasAnnotation(ResponseBody.class)) {
+					} else if (m.hasAnnotation(Body.class)) {
 						if (m.getParamCount() == 0)
-							assertReturnNotVoid(m, ResponseHeader.class);
+							assertReturnNotVoid(m, Header.class);
 						else
-							assertArgType(m, ResponseHeader.class, OutputStream.class, Writer.class);
+							assertArgType(m, Header.class, OutputStream.class, Writer.class);
 						bodyMethod = ResponseBeanPropertyMeta.create(RESPONSE_BODY, m);
 					}
 				}
@@ -185,7 +185,7 @@ public class ResponseBeanMeta {
 			return this;
 		}
 
-		Builder apply(ResponseCode a) {
+		Builder apply(StatusCode a) {
 			if (a != null) {
 				if (a.value().length > 0)
 					code = a.value()[0];
@@ -217,27 +217,27 @@ public class ResponseBeanMeta {
 	}
 
 	/**
-	 * Returns metadata about the <ja>@ResponseHeader</ja>-annotated methods.
+	 * Returns metadata about the <ja>@Header</ja>-annotated methods.
 	 *
-	 * @return Metadata about the <ja>@ResponseHeader</ja>-annotated methods, or an empty collection if none exist.
+	 * @return Metadata about the <ja>@Header</ja>-annotated methods, or an empty collection if none exist.
 	 */
 	public Collection<ResponseBeanPropertyMeta> getHeaderMethods() {
 		return headerMethods.values();
 	}
 
 	/**
-	 * Returns the <ja>@ResponseBody</ja>-annotated method.
+	 * Returns the <ja>@Body</ja>-annotated method.
 	 *
-	 * @return The <ja>@ResponseBody</ja>-annotated method, or <jk>null</jk> if it doesn't exist.
+	 * @return The <ja>@Body</ja>-annotated method, or <jk>null</jk> if it doesn't exist.
 	 */
 	public ResponseBeanPropertyMeta getBodyMethod() {
 		return bodyMethod;
 	}
 
 	/**
-	 * Returns the <ja>@ResponseCode</ja>-annotated method.
+	 * Returns the <ja>@StatusCode</ja>-annotated method.
 	 *
-	 * @return The <ja>@ResponseCode</ja>-annotated method, or <jk>null</jk> if it doesn't exist.
+	 * @return The <ja>@StatusCode</ja>-annotated method, or <jk>null</jk> if it doesn't exist.
 	 */
 	public ResponseBeanPropertyMeta getStatusMethod() {
 		return statusMethod;
diff --git a/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html b/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html
index 1686827..e0b1ea1 100644
--- a/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html
@@ -196,7 +196,7 @@
 		<ul>
 			<li>Typically a POJO serialized based on {@link oaj.http.header.Accept} request header.
 			<li>Support for raw values such as <c>Readers</c> and <c>InputStreams</c> (among others).
-			<li>Support for response beans annotated with {@link oaj.http.annotation.Response @Response} / {@link oaj.http.annotation.ResponseBody @ResponseBody} / {@link oaj.http.annotation.ResponseHeader @ResponseHeader} / {@link oaj.http.annotation.ResponseCode @ResponseCode}.
+			<li>Support for response beans annotated with {@link oaj.http.annotation.Response @Response}.
 			<li>Support for Apache Http Core interfaces: {@link org.apache.http.HttpEntity} / {@link org.apache.http.HttpResponse} / {@link oaj.http.resource.HttpResource}.
 			<li>Standard HTTP responses such as {@link oaj.http.response.Ok} and {@link oaj.http.response.TemporaryRedirect} provided in {@link oaj.http.response} package.
 			<li>Extensible API for defining custom return types.
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
index f42e217..abcd4a9 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/02.HttpPartAnnotations.html
@@ -284,9 +284,9 @@
 		Any {@link java.util.Optional} of anything on this list.
 </ol>
 <p>
-	The {@link oaj.http.annotation.ResponseCode @ResponseCode}/{@link oaj.http.annotation.ResponseHeader @ResponseHeader} annotations 
-	can be used on parameters and parameter types of {@link oajr.annotation.RestOp @RestOp}-annotated methods to 
-	to define to response codes and headers.  These are used in combination with the mutable {@link oaj.Value} object.
+	When used in combincation with  the mutable {@link oaj.Value} object, the {@link oaj.http.annotation.StatusCode @StatusCode} and {@link oaj.http.annotation.Header @Header} annotations 
+	can be used on parameters {@link oajr.annotation.RestOp @RestOp}-annotated methods to 
+	to define to response codes and headers.
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
@@ -294,12 +294,12 @@
 	<jk>public void</jk> login(
 		<ja>@FormData</ja>(<js>"username"</js>) String <jv>username</jv>, 
 		<ja>@FormData</ja>(<js>"password"</js>) String <jv>password</jv>,
-		<ja>@ResponseCode</ja> Value&lt;Integer&gt; <jv>status</jv>,
-		<ja>@ResponseHeader</ja>(<js>"My-Message"</js>) Value&lt;String&gt; <jv>myMessage</jv>
+		<ja>@StatusCode</ja> Value&lt;Integer&gt; <jv>status</jv>,
+		<ja>@Header</ja>(<js>"My-Response-Header"</js>) Value&lt;String&gt; <jv>myResponseHeader</jv>
 	) {
 		<jk>if</jk> (<jsm>isValid</jsm>(<jv>username</jv>, <jv>password</jv>)) {
 			<jv>status</jv>.set(200);
-			<jv>myMessage</jv>.set(<js>"Welcome "</js> + <jv>username</jv> + <js>"!"</js>);
+			<jv>myResponseHeader</jv>.set(<js>"Welcome "</js> + <jv>username</jv> + <js>"!"</js>);
 		} <jk>else</jk> {
 			<jv>status</jv>.set(401);
 		}
@@ -316,7 +316,7 @@
 		String <jv>password</jv> = <jv>form</jv>.get(<js>"password"</js>).orElse(<jk>null</jk>);
 		<jk>if</jk> (<jsm>isValid</jsm>(<jv>username</jv>, <jv>password</jv>) {
 			<jv>res</jv>.setStatus(200);
-			<jv>res</jv>.setHeader(<js>"My-Message"</js>, <js>"Welcome "</js> + <jv>username</jv> + <js>"!"</js>);
+			<jv>res</jv>.setHeader(<js>"My-Response-Header"</js>, <js>"Welcome "</js> + <jv>username</jv> + <js>"!"</js>);
 		} else {
 			<jv>res</jv>.setStatus(401);
 		}
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
index ee92a8c..2f010c2 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/04.HttpParts/04.ResponseBeans.html
@@ -20,9 +20,9 @@
 	parts via annotations and methods.  They are used in combination with the following annotations:
 </p>
 <ul class='javatreec'>
-	<li class='ja'>{@link oaj.http.annotation.ResponseCode} 
-	<li class='ja'>{@link oaj.http.annotation.ResponseHeader} 
-	<li class='ja'>{@link oaj.http.annotation.ResponseBody} 
+	<li class='ja'>{@link oaj.http.annotation.StatusCode} 
+	<li class='ja'>{@link oaj.http.annotation.Header} 
+	<li class='ja'>{@link oaj.http.annotation.Body} 
 	<li class='ja'>{@link oaj.http.annotation.Schema} 
 </ul>
 
@@ -40,7 +40,7 @@
 <p class='bpcode w800'>
 	<jc>// Our annotated normal response.</jc>
 	<ja>@Response</ja>
-	<ja>@ResponseCode</ja>(200)
+	<ja>@StatusCode</ja>(200)
 	<ja>@Schema</ja>(
 		description=<js>"User was good."</js> <jc>// Description show in Swagger</jc>
 	)
@@ -50,7 +50,7 @@
 		}
 		
 		<jc>// Response bean converted to output based on Accept header.</jc>
-		<ja>@ResponseBody</ja>
+		<ja>@Body</ja>
 		<jk>public</jk> WelcomeMessageBean getBody() {
 			<jk>return new </jk> WelcomeMessageBean();
 		}
@@ -59,7 +59,7 @@
 <p class='bpcode w800'>
 	<jc>// Our annotated exception.</jc>
 	<ja>@Response</ja>
-	<ja>@ResponseCode</ja>(401)
+	<ja>@StatusCode</ja>(401)
 	<ja>@Schema</ja>(
 		description=<js>"Invalid username or password provided"</js> <jc>// Description show in Swagger</jc>
 	)
@@ -68,7 +68,7 @@
 			<jk>super</jk>(<js>"Invalid username or password."</js>);  <jc>// Message sent in response</jc>
 		}
 		
-		<ja>@ResponseHeader</ja>(<js>"My-Message"</js>)
+		<ja>@Header</ja>(<js>"My-Message"</js>)
 		<jk>public</jk> String getMyMessage() {
 			<jk>return</jk> <js>"Nope!"</js>;
 		}
@@ -105,7 +105,7 @@
 
 	<jc>// Parent predefined exception class.</jc>
 	<ja>@Response</ja>
-	<ja>@ResponseCode(401)</ja>
+	<ja>@StatusCode(401)</ja>
 	<ja>@Schema</ja>(
 		description=<js>"Unauthorized"</js>
 	)
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/08.RestSwaggerResponseExamples.html b/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/08.RestSwaggerResponseExamples.html
index 8320295..e8eec43 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/08.RestSwaggerResponseExamples.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/23.RestSwagger/08.RestSwaggerResponseExamples.html
@@ -163,8 +163,8 @@
 </p>
 <img class='bordered w900' src='doc-files/juneau-rest-server.Swagger.ResponseExamples.4.png'> 
 <p>
-	These can be auto-generated from {@link oaj.http.annotation.ResponseHeader @ResponseHeader} annotations defined on either
-	method parameters or type classes.
+	These can be auto-generated from {@link oaj.http.annotation.Header @Header} annotations defined on method 
+	parameters or when the parameter type is the mutable {@link oaj.Value} object.
 	The example above shows one of each:
 </p>
 <p class='bpcode w800'>
@@ -190,7 +190,7 @@
 				example=<js>"abc123"</js>
 			)
 			String <jv>password</jv>,
-			<ja>@ResponseHeader</ja>(
+			<ja>@Header</ja>(
 				name=<js>"X-Rate-Limit"</js>,
 				type=<js>"integer"</js>,
 				format=<js>"int32"</js>,
@@ -214,7 +214,7 @@
 	}
 </p>
 <p class='bpcode w800'>	
-	<ja>@ResponseHeader</ja>(
+	<ja>@Header</ja>(
 		name=<js>"X-Expires-After"</js>,
 		type=<js>"string"</js>,
 		format=<js>"date-time"</js>,
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
index f5eaa03..2127f38 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/11.RestcProxies/09.RestcResponse.html
@@ -40,13 +40,13 @@
 	<ja>@Response</ja> 
 	<jk>public interface</jk> CreatePetResponse {
 	
-		<ja>@ResponseBody</ja>
+		<ja>@Body</ja>
 		Pet getBody();
 	
-		<ja>@ResponseHeader</ja>(<js>"E-Tag"</js>)
+		<ja>@Header</ja>(<js>"E-Tag"</js>)
 		UUID getUUID();
 		
-		<ja>@ResponseCode</ja>
+		<ja>@StatusCode</ja>
 		<jk>int</jk> getStatus();
 	}
 </p>
@@ -66,9 +66,9 @@
 	Any of the following annotations can be used on the methods:
 </p>
 <ul class='javatree'>
-	<li class='ja'>{@link oaj.http.annotation.ResponseBody}
-	<li class='ja'>{@link oaj.http.annotation.ResponseHeader}
-	<li class='ja'>{@link oaj.http.annotation.ResponseCode}
+	<li class='ja'>{@del oaj.http.annotation.ResponseBody}
+	<li class='ja'>{@del oaj.http.annotation.ResponseHeader}
+	<li class='ja'>{@del oaj.http.annotation.ResponseCode}
 </ul>
 <p>
 	The behavior and functionality of all of the annotations are the same as if they were used on method arguments directly. This means full support for OpenAPI serialization and validation.
diff --git a/juneau-doc/src/main/javadoc/overview.html b/juneau-doc/src/main/javadoc/overview.html
index 053d812..acff2e6 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -1812,7 +1812,7 @@
 		<ul>
 			<li>Typically a POJO serialized based on {@link org.apache.juneau.http.header.Accept} request header.
 			<li>Support for raw values such as <c>Readers</c> and <c>InputStreams</c> (among others).
-			<li>Support for response beans annotated with {@link org.apache.juneau.http.annotation.Response @Response} / {@link org.apache.juneau.http.annotation.ResponseBody @ResponseBody} / {@link org.apache.juneau.http.annotation.ResponseHeader @ResponseHeader} / {@link org.apache.juneau.http.annotation.ResponseCode @ResponseCode}.
+			<li>Support for response beans annotated with {@link org.apache.juneau.http.annotation.Response @Response} / {@link org.apache.juneau.http.annotation.ResponseBody @ResponseBody} / {@link org.apache.juneau.http.annotation.ResponseHeader @ResponseHeader} / {@link org.apache.juneau.http.annotation.StatusCode @ResponseCode}.
 			<li>Support for Apache Http Core interfaces: {@link org.apache.http.HttpEntity} / {@link org.apache.http.HttpResponse} / {@link org.apache.juneau.http.resource.HttpResource}.
 			<li>Standard HTTP responses such as {@link org.apache.juneau.http.response.Ok} and {@link org.apache.juneau.http.response.TemporaryRedirect} provided in {@link org.apache.juneau.http.response} package.
 			<li>Extensible API for defining custom return types.
@@ -15138,7 +15138,7 @@
 			<li class='ja'>{@link org.apache.juneau.http.annotation.Request}
 			<li class='ja'>{@link org.apache.juneau.http.annotation.Response}
 			<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader}
-			<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseCode}
+			<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}
 		</ul>
 </ul>
 <p>
@@ -15609,7 +15609,7 @@
 	<ul class='javatreec'>
 		<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseBody}
 		<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader}
-		<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseCode}
+		<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}
 		<li class='ja'>{@link org.apache.juneau.http.annotation.Response}
 	</ul>
 	<li>Sub-annotations:
@@ -15757,11 +15757,11 @@
 			<li class='jm'>{@link org.apache.juneau.http.annotation.ResponseHeader#serializer() serializer()}
 			<li class='jm'>{@link org.apache.juneau.http.annotation.ResponseHeader#value() value()}
 		</ul>
-		<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseCode}
+		<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}
 		<ul class='javatreec'>
-			<li class='jm'>{@link org.apache.juneau.http.annotation.ResponseCode#on() on()}
-			<li class='jm'>{@link org.apache.juneau.http.annotation.ResponseCode#onClass() onClass()}
-			<li class='jm'>{@link org.apache.juneau.http.annotation.ResponseCode#value() value()}
+			<li class='jm'>{@link org.apache.juneau.http.annotation.StatusCode#on() on()}
+			<li class='jm'>{@link org.apache.juneau.http.annotation.StatusCode#onClass() onClass()}
+			<li class='jm'>{@link org.apache.juneau.http.annotation.StatusCode#value() value()}
 		</ul>
 	</ul>
 	<li><b>Common schema annotation:</b>
@@ -15953,7 +15953,7 @@
 		Any {@link java.util.Optional} of anything on this list.
 </ol>
 <p>
-	The {@link org.apache.juneau.http.annotation.ResponseCode @ResponseCode}/{@link org.apache.juneau.http.annotation.ResponseHeader @ResponseHeader} annotations 
+	The {@link org.apache.juneau.http.annotation.StatusCode @ResponseCode}/{@link org.apache.juneau.http.annotation.ResponseHeader @ResponseHeader} annotations 
 	can be used on parameters and parameter types of {@link org.apache.juneau.rest.annotation.RestOp @RestOp}-annotated methods to 
 	to define to response codes and headers.  These are used in combination with the mutable {@link org.apache.juneau.Value} object.
 </p>
@@ -16233,7 +16233,7 @@
 	parts via annotations and methods.  They are used in combination with the following annotations:
 </p>
 <ul class='javatreec'>
-	<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseCode} 
+	<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode} 
 	<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader} 
 	<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseBody} 
 	<li class='ja'>{@link org.apache.juneau.http.annotation.Schema} 
@@ -23455,7 +23455,7 @@ Resource bundles are searched using the following base name patterns:
 <ul class='javatree'>
 	<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseBody}
 	<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseHeader}
-	<li class='ja'>{@link org.apache.juneau.http.annotation.ResponseCode}
+	<li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}
 </ul>
 <p>
 	The behavior and functionality of all of the annotations are the same as if they were used on method arguments directly. This means full support for OpenAPI serialization and validation.
@@ -28321,7 +28321,7 @@ Resource bundles are searched using the following base name patterns:
 		<td>Denotes a method as an HTTP response header on a <ja>@Response</ja>-annotated bean.</td>
 	</tr>
 	<tr>
-		<td><ul style='margin-left:20px'><li class='ja'>{@link org.apache.juneau.http.annotation.ResponseCode}</ul></td>
+		<td><ul style='margin-left:20px'><li class='ja'>{@link org.apache.juneau.http.annotation.StatusCode}</ul></td>
 		<td><ul><li>Methods<li>Parameters</ul></td>
 		<td>Denotes a method as an HTTP response status code on a <ja>@Response</ja>-annotated bean.</td>
 	</tr>
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProviderSession.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProviderSession.java
index 706cb85..4a648d2 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProviderSession.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProviderSession.java
@@ -371,7 +371,7 @@ public class BasicSwaggerProviderSession {
 			for (ClassInfo eci : mi.getExceptionTypes()) {
 				if (eci.hasAnnotation(Response.class)) {
 					List<Response> la = eci.getAnnotations(Response.class);
-					List<ResponseCode> la2 = eci.getAnnotations(ResponseCode.class);
+					List<StatusCode> la2 = eci.getAnnotations(StatusCode.class);
 					Set<Integer> codes = getCodes(la2, 500);
 					for (Response a : la) {
 						for (Integer code : codes) {
@@ -384,9 +384,9 @@ public class BasicSwaggerProviderSession {
 						}
 					}
 					for (MethodInfo ecmi : eci.getAllMethodsParentFirst()) {
-						ResponseHeader a = ecmi.getLastAnnotation(ResponseHeader.class);
+						Header a = ecmi.getLastAnnotation(Header.class);
 						if (a == null)
-							a = ecmi.getReturnType().unwrap(Value.class,Optional.class).getLastAnnotation(ResponseHeader.class);
+							a = ecmi.getReturnType().unwrap(Value.class,Optional.class).getLastAnnotation(Header.class);
 						if (a != null && ! isMulti(a)) {
 							String ha = a.name();
 							for (Integer code : codes) {
@@ -402,7 +402,7 @@ public class BasicSwaggerProviderSession {
 
 			if (mi.hasAnnotation(Response.class) || mi.getReturnType().unwrap(Value.class,Optional.class).hasAnnotation(Response.class)) {
 				List<Response> la = mi.getAnnotations(Response.class);
-				List<ResponseCode> la2 = mi.getAnnotations(ResponseCode.class);
+				List<StatusCode> la2 = mi.getAnnotations(StatusCode.class);
 				Set<Integer> codes = getCodes(la2, 200);
 				for (Response a : la) {
 					for (Integer code : codes) {
@@ -417,8 +417,8 @@ public class BasicSwaggerProviderSession {
 				}
 				if (mi.getReturnType().hasAnnotation(Response.class)) {
 					for (MethodInfo ecmi : mi.getReturnType().getAllMethodsParentFirst()) {
-						if (ecmi.hasAnnotation(ResponseHeader.class)) {
-							ResponseHeader a = ecmi.getLastAnnotation(ResponseHeader.class);
+						if (ecmi.hasAnnotation(Header.class)) {
+							Header a = ecmi.getLastAnnotation(Header.class);
 							String ha = a.name();
 							if (! isMulti(a)) {
 								for (Integer code : codes) {
@@ -442,18 +442,18 @@ public class BasicSwaggerProviderSession {
 				addBodyExamples(sm, om, true, m.getGenericReturnType(), locale);
 			}
 
-			// Finally, look for @ResponseHeader parameters defined on method.
+			// Finally, look for Value @Header parameters defined on method.
 			for (ParamInfo mpi : mi.getParams()) {
 
 				ClassInfo pt = mpi.getParameterType();
 
-				if (mpi.hasAnnotation(ResponseHeader.class) || pt.hasAnnotation(ResponseHeader.class)) {
-					List<ResponseHeader> la = AList.of(mpi.getAnnotations(ResponseHeader.class)).a(pt.getAnnotations(ResponseHeader.class));
-					List<ResponseCode> la2 = AList.of(mpi.getAnnotations(ResponseCode.class)).a(pt.getAnnotations(ResponseCode.class));
+				if (pt.is(Value.class) && (mpi.hasAnnotation(Header.class) || pt.hasAnnotation(Header.class))) {
+					List<Header> la = AList.of(mpi.getAnnotations(Header.class)).a(pt.getAnnotations(Header.class));
+					List<StatusCode> la2 = AList.of(mpi.getAnnotations(StatusCode.class)).a(pt.getAnnotations(StatusCode.class));
 					Set<Integer> codes = getCodes(la2, 200);
-					String name = ResponseHeaderAnnotation.findName(la).orElse(null);
+					String name = HeaderAnnotation.findName(la).orElse(null);
 					Type type = Value.unwrap(mpi.getParameterType().innerType());
-					for (ResponseHeader a : la) {
+					for (Header a : la) {
 						if (! isMulti(a)) {
 							for (Integer code : codes) {
 								OMap header = responses.getMap(String.valueOf(code), true).getMap("headers", true).getMap(name, true);
@@ -467,7 +467,7 @@ public class BasicSwaggerProviderSession {
 
 				} else if (mpi.hasAnnotation(Response.class) || pt.hasAnnotation(Response.class)) {
 					List<Response> la = AList.of(mpi.getAnnotations(Response.class)).a(pt.getAnnotations(Response.class));
-					List<ResponseCode> la2 = AList.of(mpi.getAnnotations(ResponseCode.class)).a(pt.getAnnotations(ResponseCode.class));
+					List<StatusCode> la2 = AList.of(mpi.getAnnotations(StatusCode.class)).a(pt.getAnnotations(StatusCode.class));
 					Set<Integer> codes = getCodes(la2, 200);
 					Type type = Value.unwrap(mpi.getParameterType().innerType());
 					for (Response a : la) {
@@ -545,7 +545,7 @@ public class BasicSwaggerProviderSession {
 	// Utility methods
 	//=================================================================================================================
 
-	private boolean isMulti(ResponseHeader h) {
+	private boolean isMulti(Header h) {
 		if ("*".equals(h.name()) || "*".equals(h.value()))
 			return true;
 		return false;
@@ -1013,14 +1013,14 @@ public class BasicSwaggerProviderSession {
 		;
 	}
 
-	private OMap merge(OMap om, ResponseHeader[] a) {
+	private OMap merge(OMap om, Header[] a) {
 		if (a.length == 0)
 			return om;
 		om = newMap(om);
-		for (ResponseHeader aa : a) {
+		for (Header aa : a) {
 			String name = StringUtils.firstNonEmpty(aa.name(), aa.value());
 			if (isEmpty(name))
-				throw runtimeException("@ResponseHeader used without name or value.");
+				throw runtimeException("@Header used without name or value.");
 			merge(om.getMap(name, true), aa.schema());
 		}
 		return om;
@@ -1092,9 +1092,9 @@ public class BasicSwaggerProviderSession {
 		return "";
 	}
 
-	private static Set<Integer> getCodes(List<ResponseCode> la, Integer def) {
+	private static Set<Integer> getCodes(List<StatusCode> la, Integer def) {
 		Set<Integer> codes = new TreeSet<>();
-		for (ResponseCode a : la) {
+		for (StatusCode a : la) {
 			for (int i : a.value())
 				codes.add(i);
 		}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 8fd172d..c573530 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -7089,7 +7089,7 @@ public class RestContext extends Context {
 		int code = 500;
 
 		ClassInfo ci = ClassInfo.ofc(e);
-		ResponseCode r = ci.getLastAnnotation(ResponseCode.class);
+		StatusCode r = ci.getLastAnnotation(StatusCode.class);
 		if (r != null)
 			if (r.value().length > 0)
 				code = r.value()[0];
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index a38c953..7801311 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -2233,7 +2233,6 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
 
 	private final Map<Class<?>,ResponseBeanMeta> responseBeanMetas = new ConcurrentHashMap<>();
 	private final Map<Class<?>,ResponsePartMeta> headerPartMetas = new ConcurrentHashMap<>();
-	private final Map<Class<?>,ResponsePartMeta> bodyPartMetas = new ConcurrentHashMap<>();
 	private final ResponseBeanMeta responseMeta;
 	private final int hierarchyDepth;
 	private final DebugEnablement debug;
@@ -2388,10 +2387,10 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
 	}
 
 	/**
-	 * Returns metadata about the specified response object if it's annotated with {@link ResponseHeader @ResponseHeader}.
+	 * Returns metadata about the specified response object if it's annotated with {@link Header @Header}.
 	 *
  	 * @param o The response POJO.
-	 * @return Metadata about the specified response object, or <jk>null</jk> if it's not annotated with {@link ResponseHeader @ResponseHeader}.
+	 * @return Metadata about the specified response object, or <jk>null</jk> if it's not annotated with {@link Header @Header}.
 	 */
 	public ResponsePartMeta getResponseHeaderMeta(Object o) {
 		if (o == null)
@@ -2399,7 +2398,7 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
 		Class<?> c = o.getClass();
 		ResponsePartMeta pm = headerPartMetas.get(c);
 		if (pm == null) {
-			ResponseHeader a = c.getAnnotation(ResponseHeader.class);
+			Header a = c.getAnnotation(Header.class);
 			if (a != null) {
 				HttpPartSchema schema = HttpPartSchema.create(a);
 				HttpPartSerializer serializer = createPartSerializer(schema.getSerializer(), partSerializer);
@@ -2415,33 +2414,6 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
 	}
 
 	/**
-	 * Returns metadata about the specified response object if it's annotated with {@link ResponseBody @ResponseBody}.
-	 *
- 	 * @param o The response POJO.
-	 * @return Metadata about the specified response object, or <jk>null</jk> if it's not annotated with {@link ResponseBody @ResponseBody}.
-	 */
-	public ResponsePartMeta getResponseBodyMeta(Object o) {
-		if (o == null)
-			return null;
-		Class<?> c = o.getClass();
-		ResponsePartMeta pm = bodyPartMetas.get(c);
-		if (pm == null) {
-			ResponseBody a = c.getAnnotation(ResponseBody.class);
-			if (a != null) {
-				HttpPartSchema schema = HttpPartSchema.create(a);
-				HttpPartSerializer serializer = createPartSerializer(schema.getSerializer(), partSerializer);
-				pm = new ResponsePartMeta(BODY, schema, serializer);
-			}
-			if (pm == null)
-				pm = ResponsePartMeta.NULL;
-			bodyPartMetas.put(c, pm);
-		}
-		if (pm == ResponsePartMeta.NULL)
-			return null;
-		return pm;
-	}
-
-	/**
 	 * Returns the HTTP method name (e.g. <js>"GET"</js>).
 	 *
 	 * @return The HTTP method name.
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpInvoker.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpInvoker.java
index 6de34cb..855cdc0 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpInvoker.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpInvoker.java
@@ -84,7 +84,7 @@ public class RestOpInvoker extends MethodInvoker {
 			Throwable e2 = e.getTargetException();
 			res.setStatus(500);  // May be overridden later.
 			Class<?> c = e2.getClass();
-			if (e2 instanceof HttpResponse || c.getAnnotation(Response.class) != null || c.getAnnotation(ResponseBody.class) != null) {
+			if (e2 instanceof HttpResponse || c.getAnnotation(Response.class) != null || c.getAnnotation(Body.class) != null) {
 				res.setOutput(e2);
 			} else {
 				throw toHttpException(e2, InternalServerError.class, "Method ''{0}'' threw an unexpected exception.", getFullName());
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
index 7df9293..160d69f 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
@@ -102,7 +102,7 @@ public class HeaderArg implements RestOpArg {
 	 * @return A new {@link HeaderArg}, or <jk>null</jk> if the parameter is not annotated with {@link Header}.
 	 */
 	public static HeaderArg create(ParamInfo paramInfo, AnnotationWorkList annotations) {
-		if (paramInfo.hasAnnotation(Header.class) || paramInfo.getParameterType().hasAnnotation(Header.class))
+		if ((!paramInfo.getParameterType().is(Value.class)) && (paramInfo.hasAnnotation(Header.class) || paramInfo.getParameterType().hasAnnotation(Header.class)))
 			return new HeaderArg(paramInfo, annotations);
 		return null;
 	}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseCodeArg.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseCodeArg.java
index 7423ea6..6942cb2 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseCodeArg.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseCodeArg.java
@@ -21,7 +21,7 @@ import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 
 /**
- * Resolves method parameters annotated with {@link ResponseCode} on {@link RestOp}-annotated Java methods.
+ * Resolves method parameters annotated with {@link StatusCode} on {@link RestOp}-annotated Java methods.
  */
 public class ResponseCodeArg implements RestOpArg {
 
@@ -31,10 +31,10 @@ public class ResponseCodeArg implements RestOpArg {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @return A new {@link ResponseCodeArg}, or <jk>null</jk> if the parameter is not annotated with {@link ResponseCode}.
+	 * @return A new {@link ResponseCodeArg}, or <jk>null</jk> if the parameter is not annotated with {@link StatusCode}.
 	 */
 	public static ResponseCodeArg create(ParamInfo paramInfo) {
-		if (paramInfo.hasAnnotation(ResponseCode.class) || paramInfo.getParameterType().hasAnnotation(ResponseCode.class))
+		if (paramInfo.hasAnnotation(StatusCode.class) || paramInfo.getParameterType().hasAnnotation(StatusCode.class))
 			return new ResponseCodeArg(paramInfo);
 		return null;
 	}
@@ -48,7 +48,7 @@ public class ResponseCodeArg implements RestOpArg {
 		this.type = paramInfo.getParameterType().innerType();
 		Class<?> c = type instanceof Class ? (Class<?>)type : type instanceof ParameterizedType ? (Class<?>)((ParameterizedType)type).getRawType() : null;
 		if (c != Value.class || Value.getParameterType(type) != Integer.class)
-			throw new ArgException(paramInfo, "Type must be Value<Integer> on parameter annotated with @ResponseCode annotation");
+			throw new ArgException(paramInfo, "Type must be Value<Integer> on parameter annotated with @StatusCode annotation");
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
index 81c8edb..89436b2 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
@@ -13,7 +13,7 @@
 package org.apache.juneau.rest.args;
 
 import static java.util.Optional.*;
-import static org.apache.juneau.http.annotation.ResponseHeaderAnnotation.*;
+import static org.apache.juneau.http.annotation.HeaderAnnotation.*;
 
 import java.lang.reflect.*;
 
@@ -26,7 +26,8 @@ import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 
 /**
- * Resolves method parameters annotated with {@link ResponseHeader} on {@link RestOp}-annotated Java methods.
+ * Resolves method parameters annotated with {@link Header} of type {@link Value} representing response headers
+ * on {@link RestOp}-annotated Java methods.
  *
  * <p>
  * The parameter value must be of type {@link Value} that accepts a value that is then set via:
@@ -46,10 +47,10 @@ public class ResponseHeaderArg implements RestOpArg {
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
 	 * @param annotations The annotations to apply to any new part parsers.
-	 * @return A new {@link ResponseHeaderArg}, or <jk>null</jk> if the parameter is not annotated with {@link ResponseHeader}.
+	 * @return A new {@link ResponseHeaderArg}, or <jk>null</jk> if the parameter is not annotated with {@link Header}.
 	 */
 	public static ResponseHeaderArg create(ParamInfo paramInfo, AnnotationWorkList annotations) {
-		if (paramInfo.hasAnnotation(ResponseHeader.class) || paramInfo.getParameterType().hasAnnotation(ResponseHeader.class))
+		if (paramInfo.getParameterType().is(Value.class) && (paramInfo.hasAnnotation(Header.class) || paramInfo.getParameterType().hasAnnotation(Header.class)))
 			return new ResponseHeaderArg(paramInfo, annotations);
 		return null;
 	}
@@ -63,14 +64,14 @@ public class ResponseHeaderArg implements RestOpArg {
 	protected ResponseHeaderArg(ParamInfo pi, AnnotationWorkList annotations) {
 		ClassInfo pt = pi.getParameterType();
 
-		this.name = findName(pi.getAnnotations(ResponseHeader.class), pt.getAnnotations(ResponseHeader.class)).orElseThrow(() -> new ArgException(pi, "@ResponseHeader used without name or value"));
+		this.name = findName(pi.getAnnotations(Header.class), pt.getAnnotations(Header.class)).orElseThrow(() -> new ArgException(pi, "@Header used without name or value"));
 		this.type = pi.getParameterType().innerType();
-		HttpPartSchema schema = HttpPartSchema.create(ResponseHeader.class, pi);
+		HttpPartSchema schema = HttpPartSchema.create(Header.class, pi);
 		this.meta = new ResponsePartMeta(HttpPartType.HEADER, schema, ofNullable(schema.getSerializer()).map(x -> HttpPartSerializer.creator().type(x).apply(annotations).create()).orElse(null));
 
 		Class<?> c = type instanceof Class ? (Class<?>)type : type instanceof ParameterizedType ? (Class<?>)((ParameterizedType)type).getRawType() : null;
 		if (c != Value.class)
-			throw new ArgException(pi, "Type must be Value<?> on parameter annotated with @ResponseHeader annotation");
+			throw new ArgException(pi, "Type must be Value<?> on parameter annotated with @Header annotation");
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
index d022bbd..96922f4 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
@@ -44,7 +44,7 @@ public class AnnotationUtils_Test {
 
 	@Body
 	@Response
-	@ResponseHeader
+	@Header
 	@X1
 	public static class A1 {
 		@Query @Header @FormData @Path @Schema
@@ -200,32 +200,15 @@ public class AnnotationUtils_Test {
 		assertTrue(ResponseAnnotation.empty((Response)null));
 
 		assertFalse(ResponseAnnotation.empty(response().examples(a("foo")).build()));
-		assertFalse(ResponseAnnotation.empty(response().headers(new ResponseHeader[]{responseHeader().name("foo").build()}).build()));
+		assertFalse(ResponseAnnotation.empty(response().headers(new Header[]{header().name("foo").build()}).build()));
 		assertFalse(ResponseAnnotation.empty(response().parser(OpenApiParser.class).build()));
 		assertFalse(ResponseAnnotation.empty(response().schema(schema().$ref("foo").build()).build()));
 		assertFalse(ResponseAnnotation.empty(response().serializer(OpenApiSerializer.class).build()));
 	}
 
 	@Test
-	public void a12_ResponseBody() throws Exception {
-		assertObject(responseBody().build().annotationType()).asJson().contains("ResponseBody");
-	}
-
-	@Test
-	public void a13_ResponseHeader() throws Exception {
-		assertObject(responseHeader().build().annotationType()).asJson().contains("ResponseHeader");
-
-		assertTrue(ResponseHeaderAnnotation.empty(A1.class.getAnnotation(ResponseHeader.class)));
-		assertTrue(ResponseHeaderAnnotation.empty(A2.class.getAnnotation(ResponseHeader.class)));
-
-		assertFalse(ResponseHeaderAnnotation.empty(responseHeader().name("foo").build()));
-		assertFalse(ResponseHeaderAnnotation.empty(responseHeader().serializer(OpenApiSerializer.class).build()));
-		assertFalse(ResponseHeaderAnnotation.empty(responseHeader().value("foo").build()));
-	}
-
-	@Test
 	public void a14_ResponseStatus() throws Exception {
-		assertObject(responseCode().build().annotationType()).asJson().contains("ResponseCode");
+		assertObject(responseCode().build().annotationType()).asJson().contains("StatusCode");
 	}
 
 	@Test
@@ -450,16 +433,8 @@ public class AnnotationUtils_Test {
 		return ResponseAnnotation.create();
 	}
 
-	private static ResponseBodyAnnotation.Builder responseBody() {
-		return ResponseBodyAnnotation.create();
-	}
-
-	private static ResponseHeaderAnnotation.Builder responseHeader() {
-		return ResponseHeaderAnnotation.create();
-	}
-
-	private static ResponseCodeAnnotation.Builder responseCode() {
-		return ResponseCodeAnnotation.create();
+	private static StatusCodeAnnotation.Builder responseCode() {
+		return StatusCodeAnnotation.create();
 	}
 
 	private static TagAnnotation.Builder tag() {
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java
index ed32407..dc4212b 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java
@@ -33,7 +33,7 @@ public class ResponseAnnotation_Test {
 
 	Response a1 = ResponseAnnotation.create()
 		.examples("examples")
-		.headers(ResponseHeaderAnnotation.DEFAULT)
+		.headers(HeaderAnnotation.DEFAULT)
 		.on("on")
 		.onClass(X1.class)
 		.parser(OpenApiParser.class)
@@ -43,7 +43,7 @@ public class ResponseAnnotation_Test {
 
 	Response a2 = ResponseAnnotation.create()
 		.examples("examples")
-		.headers(ResponseHeaderAnnotation.DEFAULT)
+		.headers(HeaderAnnotation.DEFAULT)
 		.on("on")
 		.onClass(X1.class)
 		.parser(OpenApiParser.class)
@@ -113,7 +113,7 @@ public class ResponseAnnotation_Test {
 
 	@Response(
 		examples="examples",
-		headers=@ResponseHeader,
+		headers=@Header,
 		on="on",
 		onClass=X1.class,
 		parser=OpenApiParser.class,
@@ -125,7 +125,7 @@ public class ResponseAnnotation_Test {
 
 	@Response(
 		examples="examples",
-		headers=@ResponseHeader,
+		headers=@Header,
 		on="on",
 		onClass=X1.class,
 		parser=OpenApiParser.class,
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation_Test.java
deleted file mode 100644
index 445d2c4..0000000
--- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation_Test.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.http.annotation;
-
-import static org.apache.juneau.assertions.Assertions.*;
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.juneau.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class ResponseBodyAnnotation_Test {
-
-	private static final String CNAME = ResponseBodyAnnotation_Test.class.getName();
-
-	public static class X1 {}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// Basic tests
-	//------------------------------------------------------------------------------------------------------------------
-
-	ResponseBody a1 = ResponseBodyAnnotation.create()
-		.on("on")
-		.onClass(X1.class)
-		.build();
-
-	ResponseBody a2 = ResponseBodyAnnotation.create()
-		.on("on")
-		.onClass(X1.class)
-		.build();
-
-	@Test
-	public void a01_basic() {
-		assertObject(a1).asJson().matches(""
-			+ "{"
-				+ "on:['on'],"
-				+ "onClass:['"+CNAME+"$X1'],"
-				+ "schema:{*}"
-			+ "}"
-		);
-	}
-
-	@Test
-	public void a02_testEquivalency() {
-		assertObject(a1).is(a2);
-		assertInteger(a1.hashCode()).is(a2.hashCode()).isNotAny(0,-1);
-	}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// PropertyStore equivalency.
-	//------------------------------------------------------------------------------------------------------------------
-
-	@Test
-	public void b01_testEquivalencyInPropertyStores() {
-		BeanContext bc1 = BeanContext.create().annotations(a1).build();
-		BeanContext bc2 = BeanContext.create().annotations(a2).build();
-		assertTrue(bc1 == bc2);
-	}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// Other methods.
-	//------------------------------------------------------------------------------------------------------------------
-
-	public static class C1 {
-		public int f1;
-		public void m1() {}
-	}
-	public static class C2 {
-		public int f2;
-		public void m2() {}
-	}
-
-	@Test
-	public void c01_otherMethods() throws Exception {
-		ResponseBody c1 = ResponseBodyAnnotation.create(C1.class).on(C2.class).build();
-		ResponseBody c2 = ResponseBodyAnnotation.create("a").on("b").build();
-		ResponseBody c4 = ResponseBodyAnnotation.create().on(C1.class.getMethod("m1")).on(C2.class.getMethod("m2")).build();
-
-		assertObject(c1).asJson().contains("on:['"+CNAME+"$C1','"+CNAME+"$C2']");
-		assertObject(c2).asJson().contains("on:['a','b']");
-		assertObject(c4).asJson().contains("on:['"+CNAME+"$C1.m1()','"+CNAME+"$C2.m2()']");
-	}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// Comparison with declared annotations.
-	//------------------------------------------------------------------------------------------------------------------
-
-	@ResponseBody(
-		on="on",
-		onClass=X1.class
-	)
-	public static class D1 {}
-	ResponseBody d1 = D1.class.getAnnotationsByType(ResponseBody.class)[0];
-
-	@ResponseBody(
-		on="on",
-		onClass=X1.class
-	)
-	public static class D2 {}
-	ResponseBody d2 = D2.class.getAnnotationsByType(ResponseBody.class)[0];
-
-	@Test
-	public void d01_comparisonWithDeclarativeAnnotations() {
-		assertObject(d1).is(d2).is(a1);
-		assertInteger(d1.hashCode()).is(d2.hashCode()).is(a1.hashCode()).isNotAny(0,-1);
-	}
-}
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation_Test.java
deleted file mode 100644
index 9d7d8c7..0000000
--- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation_Test.java
+++ /dev/null
@@ -1,134 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.http.annotation;
-
-import static org.apache.juneau.assertions.Assertions.*;
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.oapi.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class ResponseHeaderAnnotation_Test {
-
-	private static final String CNAME = ResponseHeaderAnnotation_Test.class.getName();
-
-	public static class X1 {}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// Basic tests
-	//------------------------------------------------------------------------------------------------------------------
-
-	ResponseHeader a1 = ResponseHeaderAnnotation.create()
-		.name("name")
-		.on("on")
-		.onClass(X1.class)
-		.serializer(OpenApiSerializer.class)
-		.value("value")
-		.build();
-
-	ResponseHeader a2 = ResponseHeaderAnnotation.create()
-		.name("name")
-		.on("on")
-		.onClass(X1.class)
-		.serializer(OpenApiSerializer.class)
-		.value("value")
-		.build();
-
-	@Test
-	public void a01_basic() {
-		assertObject(a1).asJson().matches(""
-			+ "{"
-				+ "name:'name',"
-				+ "on:['on'],"
-				+ "onClass:['"+CNAME+"$X1'],"
-				+ "schema:{*},"
-				+ "serializer:'org.apache.juneau.oapi.OpenApiSerializer',"
-				+ "value:'value'"
-			+ "}"
-		);
-	}
-
-	@Test
-	public void a02_testEquivalency() {
-		assertObject(a1).is(a2);
-		assertInteger(a1.hashCode()).is(a2.hashCode()).isNotAny(0,-1);
-	}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// PropertyStore equivalency.
-	//------------------------------------------------------------------------------------------------------------------
-
-	@Test
-	public void b01_testEquivalencyInPropertyStores() {
-		BeanContext bc1 = BeanContext.create().annotations(a1).build();
-		BeanContext bc2 = BeanContext.create().annotations(a2).build();
-		assertTrue(bc1 == bc2);
-	}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// Other methods.
-	//------------------------------------------------------------------------------------------------------------------
-
-	public static class C1 {
-		public int f1;
-		public void m1() {}
-	}
-	public static class C2 {
-		public int f2;
-		public void m2() {}
-	}
-
-	@Test
-	public void c01_otherMethods() throws Exception {
-		ResponseHeader c1 = ResponseHeaderAnnotation.create(C1.class).on(C2.class).build();
-		ResponseHeader c2 = ResponseHeaderAnnotation.create("a").on("b").build();
-		ResponseHeader c4 = ResponseHeaderAnnotation.create().on(C1.class.getMethod("m1")).on(C2.class.getMethod("m2")).build();
-
-		assertObject(c1).asJson().contains("on:['"+CNAME+"$C1','"+CNAME+"$C2']");
-		assertObject(c2).asJson().contains("on:['a','b']");
-		assertObject(c4).asJson().contains("on:['"+CNAME+"$C1.m1()','"+CNAME+"$C2.m2()']");
-	}
-
-	//------------------------------------------------------------------------------------------------------------------
-	// Comparison with declared annotations.
-	//------------------------------------------------------------------------------------------------------------------
-
-	@ResponseHeader(
-		name="name",
-		on="on",
-		onClass=X1.class,
-		serializer=OpenApiSerializer.class,
-		value="value"
-	)
-	public static class D1 {}
-	ResponseHeader d1 = D1.class.getAnnotationsByType(ResponseHeader.class)[0];
-
-	@ResponseHeader(
-		name="name",
-		on="on",
-		onClass=X1.class,
-		serializer=OpenApiSerializer.class,
-		value="value"
-	)
-	public static class D2 {}
-	ResponseHeader d2 = D2.class.getAnnotationsByType(ResponseHeader.class)[0];
-
-	@Test
-	public void d01_comparisonWithDeclarativeAnnotations() {
-		assertObject(d1).is(d2).is(a1);
-		assertInteger(d1.hashCode()).is(d2.hashCode()).is(a1.hashCode()).isNotAny(0,-1);
-	}
-}
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation_Test.java
index 1d42852..bd335e2 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation_Test.java
@@ -30,13 +30,13 @@ public class ResponseStatusAnnotation_Test {
 	// Basic tests
 	//------------------------------------------------------------------------------------------------------------------
 
-	ResponseCode a1 = ResponseCodeAnnotation.create()
+	StatusCode a1 = StatusCodeAnnotation.create()
 		.on("on")
 		.onClass(X1.class)
 		.value(1)
 		.build();
 
-	ResponseCode a2 = ResponseCodeAnnotation.create()
+	StatusCode a2 = StatusCodeAnnotation.create()
 		.on("on")
 		.onClass(X1.class)
 		.value(1)
@@ -85,9 +85,9 @@ public class ResponseStatusAnnotation_Test {
 
 	@Test
 	public void c01_otherMethods() throws Exception {
-		ResponseCode c1 = ResponseCodeAnnotation.create(C1.class).on(C2.class).build();
-		ResponseCode c2 = ResponseCodeAnnotation.create("a").on("b").build();
-		ResponseCode c4 = ResponseCodeAnnotation.create().on(C1.class.getMethod("m1")).on(C2.class.getMethod("m2")).build();
+		StatusCode c1 = StatusCodeAnnotation.create(C1.class).on(C2.class).build();
+		StatusCode c2 = StatusCodeAnnotation.create("a").on("b").build();
+		StatusCode c4 = StatusCodeAnnotation.create().on(C1.class.getMethod("m1")).on(C2.class.getMethod("m2")).build();
 
 		assertObject(c1).asJson().contains("on:['"+CNAME+"$C1','"+CNAME+"$C2']");
 		assertObject(c2).asJson().contains("on:['a','b']");
@@ -98,21 +98,21 @@ public class ResponseStatusAnnotation_Test {
 	// Comparison with declared annotations.
 	//------------------------------------------------------------------------------------------------------------------
 
-	@ResponseCode(
+	@StatusCode(
 		on="on",
 		onClass=X1.class,
 		value=1
 	)
 	public static class D1 {}
-	ResponseCode d1 = D1.class.getAnnotationsByType(ResponseCode.class)[0];
+	StatusCode d1 = D1.class.getAnnotationsByType(StatusCode.class)[0];
 
-	@ResponseCode(
+	@StatusCode(
 		on="on",
 		onClass=X1.class,
 		value=1
 	)
 	public static class D2 {}
-	ResponseCode d2 = D2.class.getAnnotationsByType(ResponseCode.class)[0];
+	StatusCode d2 = D2.class.getAnnotationsByType(StatusCode.class)[0];
 
 	@Test
 	public void d01_comparisonWithDeclarativeAnnotations() {
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/part/PartBeanMeta_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/part/PartBeanMeta_Test.java
index dbd981c..67389cf 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/part/PartBeanMeta_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/part/PartBeanMeta_Test.java
@@ -73,7 +73,7 @@ public class PartBeanMeta_Test {
 		}
 	}
 
-	@ResponseHeader(name="A7")
+	@Header(name="A7")
 	public static class A7 {}
 
 	@Test
diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_ResponseAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_ResponseAnnotation_Test.java
index 1ec2cc5..9939655 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_ResponseAnnotation_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_ResponseAnnotation_Test.java
@@ -62,9 +62,9 @@ public class Remote_ResponseAnnotation_Test {
 
 	@Response
 	public interface A1a {
-		@ResponseBody Reader getBody();
-		@ResponseHeader("X") String getHeader();
-		@ResponseCode int getStatus();
+		@Body Reader getBody();
+		@Header("X") String getHeader();
+		@StatusCode int getStatus();
 	}
 
 	@Remote
@@ -82,7 +82,7 @@ public class Remote_ResponseAnnotation_Test {
 
 	@Response
 	public interface A2a {
-		@ResponseBody Reader getBody();
+		@Body Reader getBody();
 	}
 
 	@Remote
@@ -106,7 +106,7 @@ public class Remote_ResponseAnnotation_Test {
 
 	@Response
 	public interface A3a {
-		@ResponseBody ABean getBody();
+		@Body ABean getBody();
 	}
 
 	@Remote
diff --git a/juneau-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchema_ResponseHeader_Test.java b/juneau-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchema_ResponseHeader_Test.java
index d5248e5..e02cede 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchema_ResponseHeader_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/httppart/HttpPartSchema_ResponseHeader_Test.java
@@ -36,19 +36,19 @@ public class HttpPartSchema_ResponseHeader_Test {
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
-	// @ResponseHeader
+	// @Header
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@ResponseHeader("x")
+	@Header("x")
 	public static class A01 {}
 
 	@Test
 	public void a01_value() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, A01.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, A01.class).build();
 		assertEquals("x", s.getName());
 	}
 
-	@ResponseHeader("x")
+	@Header("x")
 	@Schema(
 		t="number",
 		f="int32",
@@ -73,7 +73,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void a02_basic_onClass() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, A02.class).noValidate().build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, A02.class).noValidate().build();
 		assertEquals("x", s.getName());
 		assertEquals(HttpPartDataType.NUMBER, s.getType());
 		assertEquals(HttpPartFormat.INT32, s.getFormat());
@@ -95,7 +95,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	public static class A03 {
 		public void a(
-				@ResponseHeader("x")
+				@Header("x")
 				@Schema(
 					t="number",
 					f="int32",
@@ -125,7 +125,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 	@Test
 	public void a03_basic_onParameter() throws Exception {
 		ParamInfo mpi = MethodInfo.of(A03.class.getMethod("a", String.class)).getParam(0);
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, mpi).noValidate().build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, mpi).noValidate().build();
 		assertEquals("x", s.getName());
 		assertEquals(HttpPartDataType.NUMBER, s.getType());
 		assertEquals(HttpPartFormat.INT32, s.getFormat());
@@ -147,7 +147,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	public static class A04 {
 		public void a(
-				@ResponseHeader("y")
+				@Header("y")
 				@Schema(
 					t="integer",
 					f="int64",
@@ -177,7 +177,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 	@Test
 	public void a04_basic_onParameterAndClass() throws Exception {
 		ParamInfo mpi = MethodInfo.of(A04.class.getMethod("a", A01.class)).getParam(0);
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, mpi).noValidate().build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, mpi).noValidate().build();
 		assertEquals("y", s.getName());
 		assertEquals(HttpPartDataType.INTEGER, s.getType());
 		assertEquals(HttpPartFormat.INT64, s.getFormat());
@@ -199,7 +199,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertEquals("c3\nc4", s.getDefault());
 	}
 
-	@ResponseHeader("x")
+	@Header("x")
 	@Schema(
 		items=@Items(
 			t="number",
@@ -278,7 +278,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void a05_basic_nestedItems_onClass() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, A05.class).noValidate().build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, A05.class).noValidate().build();
 		assertEquals("x", s.getName());
 
 		HttpPartSchema items = s.getItems();
@@ -358,12 +358,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 	// String input validations.
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@ResponseHeader @Schema(p="x.*")
+	@Header @Schema(p="x.*")
 	public static class B02a {}
 
 	@Test
 	public void b02a_pattern() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B02a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B02a.class).build();
 		s.validateInput("x");
 		s.validateInput("xx");
 		assertThrown(()->s.validateInput("y")).message().is("Value does not match expected pattern.  Must match pattern: x.*");
@@ -371,12 +371,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateInput("")).message().is("Empty value not allowed.");
 	}
 
-	@ResponseHeader @Schema(minl=2, maxl=3)
+	@Header @Schema(minl=2, maxl=3)
 	public static class B03a {}
 
 	@Test
 	public void b03a_length() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B03a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B03a.class).build();
 		s.validateInput("12");
 		s.validateInput("123");
 		s.validateInput(null);
@@ -384,7 +384,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateInput("1234")).message().is("Maximum length of value exceeded.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			minl=2, maxl=3,
 			items=@SubItems(
@@ -400,7 +400,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void b03b_length_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B03b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B03b.class).build();
 
 		s.getItems().validateInput("12");
 		s.getItems().getItems().validateInput("123");
@@ -428,43 +428,43 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateInput("1234567")).message().is("Maximum length of value exceeded.");
 	}
 
-	@ResponseHeader @Schema(e="X,Y")
+	@Header @Schema(e="X,Y")
 	public static class B04a {}
 
 	@Test
 	public void b04a_enum() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B04a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B04a.class).build();
 		s.validateInput("X");
 		s.validateInput("Y");
 		s.validateInput(null);
 		assertThrown(()->s.validateInput("Z")).message().is("Value does not match one of the expected values.  Must be one of the following:  X, Y");
 	}
 
-	@ResponseHeader @Schema(e=" X , Y ")
+	@Header @Schema(e=" X , Y ")
 	public static class B04b {}
 
 	@Test
 	public void b04b_enum() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B04b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B04b.class).build();
 		s.validateInput("X");
 		s.validateInput("Y");
 		s.validateInput(null);
 		assertThrown(()->s.validateInput("Z")).message().is("Value does not match one of the expected values.  Must be one of the following:  X, Y");
 	}
 
-	@ResponseHeader @Schema(e="X,Y")
+	@Header @Schema(e="X,Y")
 	public static class B04c {}
 
 	@Test
 	public void b04c_enum_json() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B04c.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B04c.class).build();
 		s.validateInput("X");
 		s.validateInput("Y");
 		s.validateInput(null);
 		assertThrown(()->s.validateInput("Z")).message().is("Value does not match one of the expected values.  Must be one of the following:  X, Y");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			e="W",
 			items=@SubItems(
@@ -480,7 +480,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void b04d_enum_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, B04d.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, B04d.class).build();
 
 		s.getItems().validateInput("W");
 		s.getItems().getItems().validateInput("X");
@@ -497,12 +497,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 	// Numeric validations
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@ResponseHeader @Schema(min="10", max="100")
+	@Header @Schema(min="10", max="100")
 	public static class C01a {}
 
 	@Test
 	public void c01a_minmax_ints() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C01a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C01a.class).build();
 		s.validateOutput(10, BeanContext.DEFAULT);
 		s.validateOutput(100, BeanContext.DEFAULT);
 		s.validateOutput(null, BeanContext.DEFAULT);
@@ -510,7 +510,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateOutput(101, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			min="10", max="100",
 			items=@SubItems(
@@ -526,7 +526,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void c01b_minmax_ints_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C01b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C01b.class).build();
 
 		s.getItems().validateOutput(10, BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(100, BeanContext.DEFAULT);
@@ -549,12 +549,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateOutput(100001, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(min="10", max="100", emin=true, emax=true)
+	@Header @Schema(min="10", max="100", emin=true, emax=true)
 	public static class C02a {}
 
 	@Test
 	public void c02a_minmax_exclusive() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C02a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C02a.class).build();
 		s.validateOutput(11, BeanContext.DEFAULT);
 		s.validateOutput(99, BeanContext.DEFAULT);
 		s.validateOutput(null, BeanContext.DEFAULT);
@@ -562,7 +562,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateOutput(100, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			min="10", max="100", emin=true, emax=true,
 			items=@SubItems(
@@ -578,7 +578,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void c02b_minmax_exclusive_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C02b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C02b.class).build();
 
 		s.getItems().validateOutput(11, BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(101, BeanContext.DEFAULT);
@@ -601,12 +601,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateOutput(100000, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(min="10.1", max="100.1")
+	@Header @Schema(min="10.1", max="100.1")
 	public static class C03a {}
 
 	@Test
 	public void c03_minmax_floats() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C03a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C03a.class).build();
 		s.validateOutput(10.1f, BeanContext.DEFAULT);
 		s.validateOutput(100.1f, BeanContext.DEFAULT);
 		s.validateOutput(null, BeanContext.DEFAULT);
@@ -614,7 +614,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateOutput(100.2f, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			min="10.1", max="100.1",
 			items=@SubItems(
@@ -630,7 +630,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void c03b_minmax_floats_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C03b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C03b.class).build();
 
 		s.getItems().validateOutput(10.1f, BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(100.1f, BeanContext.DEFAULT);
@@ -653,12 +653,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateOutput(100000.2f, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(min="10.1", max="100.1", emin=true, emax=true)
+	@Header @Schema(min="10.1", max="100.1", emin=true, emax=true)
 	public static class C04a {}
 
 	@Test
 	public void c04a_minmax_floats_exclusive() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C04a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C04a.class).build();
 		s.validateOutput(10.2f, BeanContext.DEFAULT);
 		s.validateOutput(100f, BeanContext.DEFAULT);
 		s.validateOutput(null, BeanContext.DEFAULT);
@@ -666,7 +666,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateOutput(100.1f, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			min="10.1", max="100.1", emin=true, emax=true,
 			items=@SubItems(
@@ -682,7 +682,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void c04b_minmax_floats_exclusive_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C04b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C04b.class).build();
 
 		s.getItems().validateOutput(10.2f, BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(100.2f, BeanContext.DEFAULT);
@@ -705,12 +705,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateOutput(100000.1f, BeanContext.DEFAULT)).message().is("Maximum value exceeded.");
 	}
 
-	@ResponseHeader @Schema(mo="10")
+	@Header @Schema(mo="10")
 	public static class C05a {}
 
 	@Test
 	public void c05a_multipleOf() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C05a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C05a.class).build();
 		s.validateOutput(0, BeanContext.DEFAULT);
 		s.validateOutput(10, BeanContext.DEFAULT);
 		s.validateOutput(20, BeanContext.DEFAULT);
@@ -720,7 +720,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateOutput(11, BeanContext.DEFAULT)).message().is("Multiple-of not met.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			mo="10",
 			items=@SubItems(
@@ -736,7 +736,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void c05b_multipleOf_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C05b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C05b.class).build();
 
 		s.getItems().validateOutput(0, BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(0, BeanContext.DEFAULT);
@@ -769,12 +769,12 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateOutput(10001, BeanContext.DEFAULT)).message().is("Multiple-of not met.");
 	}
 
-	@ResponseHeader @Schema(mo="10.1")
+	@Header @Schema(mo="10.1")
 	public static class C06a {}
 
 	@Test
 	public void c06a_multipleOf_floats() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C06a.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C06a.class).build();
 		s.validateOutput(0, BeanContext.DEFAULT);
 		s.validateOutput(10.1f, BeanContext.DEFAULT);
 		s.validateOutput(20.2f, BeanContext.DEFAULT);
@@ -782,7 +782,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.validateOutput(10.2f, BeanContext.DEFAULT)).message().is("Multiple-of not met.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			mo="10.1",
 			items=@SubItems(
@@ -798,7 +798,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void c06b_multipleOf_floats_items() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, C06b.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, C06b.class).build();
 
 		s.getItems().validateOutput(0, BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(0, BeanContext.DEFAULT);
@@ -825,7 +825,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 	// Collections/Array validations
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			ui=true,
 			items=@SubItems(
@@ -842,7 +842,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void d01a_uniqueItems_arrays() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, D01.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, D01.class).build();
 
 		String[] good = split("a,b"), bad = split("a,a");
 
@@ -860,7 +860,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void d01b_uniqueItems_collections() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, D01.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, D01.class).build();
 
 		AList<String>
 			good = AList.of(split("a,b")),
@@ -878,7 +878,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 		assertThrown(()->s.getItems().getItems().getItems().getItems().validateOutput(bad, BeanContext.DEFAULT)).message().is("Duplicate items not allowed.");
 	}
 
-	@ResponseHeader @Schema(
+	@Header @Schema(
 		items=@Items(
 			mini=1, maxi=2,
 			items=@SubItems(
@@ -895,7 +895,7 @@ public class HttpPartSchema_ResponseHeader_Test {
 
 	@Test
 	public void d02a_minMaxItems_arrays() throws Exception {
-		HttpPartSchema s = HttpPartSchema.create().applyAll(ResponseHeader.class, D02.class).build();
+		HttpPartSchema s = HttpPartSchema.create().applyAll(Header.class, D02.class).build();
 
 		s.getItems().validateOutput(split("1"), BeanContext.DEFAULT);
 		s.getItems().getItems().validateOutput(split("1,2"), BeanContext.DEFAULT);
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
index f6e6650..d0cb4da 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
@@ -1670,7 +1670,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public O1c a() { return null;}
 	}
-	@Response @ResponseCode(100)
+	@Response @StatusCode(100)
 	public static class O1c {
 		public String a;
 	}
@@ -1689,7 +1689,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{description:'a-100-description'}}}}}"))
 	public static class O2 {
 		@RestGet(path="/path/{foo}/responses/100")
-		public void a(@ResponseCode Value<Integer> foo) {}
+		public void a(@StatusCode Value<Integer> foo) {}
 	}
 
 	@Test
@@ -1701,7 +1701,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{description:'a-100-description'}}}}}"))
 	public static class O3 {
 		@RestGet(path="/path/{foo}/responses/100",swagger=@OpSwagger("responses:{100:{description:'b-100-description'}}"))
-		public void a(@ResponseCode Value<Integer> foo) {}
+		public void a(@StatusCode Value<Integer> foo) {}
 	}
 
 	@Test
@@ -1720,7 +1720,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public O4c a() {return null;}
 	}
-	@Response @ResponseCode(100) @Schema(description="c-100-description")
+	@Response @StatusCode(100) @Schema(description="c-100-description")
 	public static class O4c {}
 
 	@Test
@@ -1744,7 +1744,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public O5c a() {return null;}
 	}
-	@Response @ResponseCode(100) @Schema(description="$L{foo}")
+	@Response @StatusCode(100) @Schema(description="$L{foo}")
 	public static class O5c {}
 
 	@Test
@@ -1772,7 +1772,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public P1c a() {return null;}
 	}
-	@Response @ResponseCode(100)
+	@Response @StatusCode(100)
 	public static class P1c {
 		public String a;
 	}
@@ -1791,7 +1791,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{headers:{'X-Foo':{description:'b-description',type:'integer',format:'int32'}}}}}}}"))
 	public static class P2 {
 		@RestGet(path="/path/{foo}/responses/100")
-		public X a(@ResponseCode Value<Integer> foo) {
+		public X a(@StatusCode Value<Integer> foo) {
 			return null;
 		}
 	}
@@ -1805,7 +1805,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{headers:{'X-Foo':{description:'b-description',type:'integer',format:'int32'}}}}}}}"))
 	public static class P3 {
 		@RestGet(path="/path/{foo}/responses/100",swagger=@OpSwagger("responses:{100:{headers:{'X-Foo':{description:'c-description',type:'integer',format:'int32'}}}}"))
-		public X a(@ResponseCode Value<Integer> foo) {
+		public X a(@StatusCode Value<Integer> foo) {
 			return null;
 		}
 	}
@@ -1826,7 +1826,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public P4c a() {return null;}
 	}
-	@Response(headers=@ResponseHeader(name="X-Foo",schema=@Schema(description="d-description",type="integer",format="int32"))) @ResponseCode(100)
+	@Response(headers=@Header(name="X-Foo",schema=@Schema(description="d-description",type="integer",format="int32"))) @StatusCode(100)
 	public static class P4c {}
 
 	@Test
@@ -1850,7 +1850,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public P5c a() {return null;}
 	}
-	@Response(headers=@ResponseHeader(name="X-Foo",schema=@Schema(description="$L{foo}",type="integer",format="int32"))) @ResponseCode(100)
+	@Response(headers=@Header(name="X-Foo",schema=@Schema(description="$L{foo}",type="integer",format="int32"))) @StatusCode(100)
 	public static class P5c {}
 
 	@Test
@@ -1878,7 +1878,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public R1c a() {return null;}
 	}
-	@Response @ResponseCode(100)
+	@Response @StatusCode(100)
 	public static class R1c {
 		public String a;
 	}
@@ -1897,7 +1897,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{examples:{foo:{bar:'b'}}}}}}}"))
 	public static class R2 {
 		@RestGet(path="/path/{foo}/responses/100")
-		public void a(@ResponseCode Value<Integer> foo) {}
+		public void a(@StatusCode Value<Integer> foo) {}
 	}
 
 	@Test
@@ -1909,7 +1909,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{examples:{foo:{bar:'b'}}}}}}}"))
 	public static class R3 {
 		@RestGet(path="/path/{foo}/responses/100",swagger=@OpSwagger("responses:{100:{examples:{foo:{bar:'c'}}}}"))
-		public void a(@ResponseCode Value<Integer> foo) {}
+		public void a(@StatusCode Value<Integer> foo) {}
 	}
 
 	@Test
@@ -1928,7 +1928,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public R4c a() {return null;}
 	}
-	@Response(examples="{foo:{bar:'d'}}") @ResponseCode(100)
+	@Response(examples="{foo:{bar:'d'}}") @StatusCode(100)
 	public static class R4c {}
 
 	@Test
@@ -1952,7 +1952,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public R5c a() {return null;}
 	}
-	@Response(examples="{foo:{bar:'$L{foo}'}}") @ResponseCode(100)
+	@Response(examples="{foo:{bar:'$L{foo}'}}") @StatusCode(100)
 	public static class R5c {}
 
 	@Test
@@ -1980,7 +1980,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public S1c a() {return null;}
 	}
-	@Response @ResponseCode(100)
+	@Response @StatusCode(100)
 	public static class S1c extends X {}
 
 	@Test
@@ -1997,7 +1997,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{schema:{$ref:'b'}}}}}}"))
 	public static class S2 {
 		@RestGet(path="/path/{foo}/responses/100")
-		public void a(@ResponseCode Value<Integer> foo) {}
+		public void a(@StatusCode Value<Integer> foo) {}
 	}
 
 	@Test
@@ -2009,7 +2009,7 @@ public class Swagger_Test {
 	@Rest(swagger=@Swagger("paths:{'/path/{foo}/responses/100':{get:{responses:{100:{schema:{$ref:'b'}}}}}}"))
 	public static class S3 {
 		@RestGet(path="/path/{foo}/responses/100",swagger=@OpSwagger("responses:{100:{schema:{$ref:'c'}}}}"))
-		public void a(@ResponseCode Value<Integer> foo) {}
+		public void a(@StatusCode Value<Integer> foo) {}
 	}
 
 	@Test
@@ -2028,7 +2028,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public S4c a() {return null;}
 	}
-	@Response(schema=@Schema($ref="d")) @ResponseCode(100)
+	@Response(schema=@Schema($ref="d")) @StatusCode(100)
 	public static class S4c extends X {}
 
 	@Test
@@ -2052,7 +2052,7 @@ public class Swagger_Test {
 		@RestGet(path="/path/{foo}/responses/100")
 		public S5c a() {return null;}
 	}
-	@Response(schema=@Schema($ref="l-foo")) @ResponseCode(100)
+	@Response(schema=@Schema($ref="l-foo")) @StatusCode(100)
 	public static class S5c extends X {}
 
 	@Test
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
index 4786ae0..c047878 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
@@ -19,7 +19,6 @@ import static org.junit.runners.MethodSorters.*;
 import org.apache.juneau.*;
 import org.apache.juneau.dto.swagger.*;
 import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.http.annotation.ResponseHeader;
 import org.apache.juneau.rest.client.*;
 import org.apache.juneau.rest.mock.*;
 import org.junit.*;
@@ -28,7 +27,7 @@ import org.junit.*;
 public class ResponseHeader_Test {
 
 	//------------------------------------------------------------------------------------------------------------------
-	// @ResponseHeader on method parameters
+	// @Header on method parameters
 	//------------------------------------------------------------------------------------------------------------------
 
 	@Rest
@@ -38,16 +37,16 @@ public class ResponseHeader_Test {
 			h.set(new A1());
 		}
 		@RestGet
-		public void b(@ResponseHeader(name="Foo") Value<String> h) {
+		public void b(@Header(name="Foo") Value<String> h) {
 			h.set("foo");
 		}
 		@RestGet
-		public void c(@ResponseHeader(name="Bar") Value<A1> h) {
+		public void c(@Header(name="Bar") Value<A1> h) {
 			h.set(new A1());
 		}
 	}
 
-	@ResponseHeader(name="Foo")
+	@Header(name="Foo")
 	public static class A1 {
 		@Override
 		public String toString() {return "foo";}
@@ -71,13 +70,13 @@ public class ResponseHeader_Test {
 	}
 
 	//------------------------------------------------------------------------------------------------------------------
-	// @ResponseHeader swagger on POJOs
+	// @Header swagger on POJOs
 	//------------------------------------------------------------------------------------------------------------------
 
 	@Rest
 	public static class B {
 
-		@ResponseHeader(
+		@Header(
 			name="H"
 		)
 		@Schema(
@@ -88,7 +87,7 @@ public class ResponseHeader_Test {
 		@RestGet
 		public void a(Value<B1> h) {}
 
-		@ResponseHeader(
+		@Header(
 			name="H",
 			schema=@Schema(description="a",type="string")
 		)
@@ -96,7 +95,7 @@ public class ResponseHeader_Test {
 		@RestGet
 		public void b(Value<B2> h) {}
 
-		@ResponseHeader(
+		@Header(
 			name="H",
 			schema=@Schema(description="b",type="number")
 		)
@@ -108,22 +107,22 @@ public class ResponseHeader_Test {
 		@RestGet
 		public void c(Value<B3> h) {}
 
-		@ResponseHeader(name="H") @ResponseCode(100)
+		@Header(name="H") @StatusCode(100)
 		public static class B4 {}
 		@RestGet
 		public void d(Value<B4> h) {}
 
-		@ResponseHeader(name="H") @ResponseCode({100,101})
+		@Header(name="H") @StatusCode({100,101})
 		public static class B5 {}
 		@RestGet
 		public void e(Value<B5> h) {}
 
-		@ResponseHeader(name="H") @Schema(description="a")
+		@Header(name="H") @Schema(description="a")
 		public static class B6 {}
 		@RestGet
 		public void f(Value<B6> h) {}
 
-		@ResponseHeader("H")
+		@Header("H")
 		public static class B7 {}
 		@RestGet
 		public void g(Value<B7> h) {}
@@ -161,7 +160,7 @@ public class ResponseHeader_Test {
 	}
 
 	//------------------------------------------------------------------------------------------------------------------
-	// @ResponseHeader swagger on method parameters
+	// @Header swagger on method parameters
 	//------------------------------------------------------------------------------------------------------------------
 
 	@Rest
@@ -170,7 +169,7 @@ public class ResponseHeader_Test {
 		public static class C1 {}
 		@RestGet
 		public void a(
-			@ResponseHeader(
+			@Header(
 				name="H"
 			)
 			@Schema(
@@ -182,7 +181,7 @@ public class ResponseHeader_Test {
 		public static class C2 {}
 		@RestGet
 		public void b(
-			@ResponseHeader(
+			@Header(
 				name="H",
 				schema=@Schema(description="a",type="string")
 			)
@@ -191,7 +190,7 @@ public class ResponseHeader_Test {
 		public static class C3 {}
 		@RestGet
 		public void c(
-			@ResponseHeader(
+			@Header(
 				name="H",
 				schema=@Schema(description="b",type="number")
 			)
@@ -203,19 +202,19 @@ public class ResponseHeader_Test {
 
 		public static class C4 {}
 		@RestGet
-		public void d(@ResponseHeader(name="H") @ResponseCode(100) Value<C4> h) {}
+		public void d(@Header(name="H") @StatusCode(100) Value<C4> h) {}
 
 		public static class C5 {}
 		@RestGet
-		public void e(@ResponseHeader(name="H") @ResponseCode({100,101}) Value<C5> h) {}
+		public void e(@Header(name="H") @StatusCode({100,101}) Value<C5> h) {}
 
 		public static class C6 {}
 		@RestGet
-		public void f(@ResponseHeader(name="H") @Schema(description="a") Value<C6> h) {}
+		public void f(@Header(name="H") @Schema(description="a") Value<C6> h) {}
 
 		public static class C7 {}
 		@RestGet
-		public void g(@ResponseHeader("H") Value<C7> h) {}
+		public void g(@Header("H") Value<C7> h) {}
 	}
 
 	@Test
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseStatus_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseStatus_Test.java
index 0c415dc..9adebad 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseStatus_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseStatus_Test.java
@@ -26,7 +26,7 @@ public class ResponseStatus_Test {
 	@Rest
 	public static class A {
 		@RestGet
-		public void a(@ResponseCode Value<Integer> status) {
+		public void a(@StatusCode Value<Integer> status) {
 			status.set(202);
 		}
 	}
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Response_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Response_Test.java
index 75170ad..efd0739 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Response_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Response_Test.java
@@ -45,13 +45,13 @@ public class Response_Test {
 		}
 	}
 
-	@Response @ResponseCode(201)
+	@Response @StatusCode(201)
 	public static class A1 {
 		@Override
 		public String toString() {return "foo";}
 	}
 
-	@Response @ResponseCode(501)
+	@Response @StatusCode(501)
 	public static class A2 extends Exception {
 		@Override
 		public String toString() {return "foo";}
diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Swagger_Response_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Swagger_Response_Test.java
index 304f405..9920315 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Swagger_Response_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Swagger_Response_Test.java
@@ -37,7 +37,7 @@ public class Swagger_Response_Test {
 
 		@Response(
 			schema=@Schema(description={"a","b"},type="string"),
-			headers=@ResponseHeader(name="foo",schema=@Schema(type="string")),
+			headers=@Header(name="foo",schema=@Schema(type="string")),
 			examples=" {foo:'a'} "
 		)
 		public static class A1 {
@@ -50,7 +50,7 @@ public class Swagger_Response_Test {
 
 		@Response(
 			schema=@Schema(description="a\nb",type="string"),
-			headers=@ResponseHeader(name="foo",schema=@Schema(type="string")),
+			headers=@Header(name="foo",schema=@Schema(type="string")),
 			examples=" {foo:'a'} "
 		)
 		public static class A2 {
@@ -63,7 +63,7 @@ public class Swagger_Response_Test {
 
 		@Response(
 			schema=@Schema(description={"a","b"},type="string"),
-			headers=@ResponseHeader(name="foo",schema=@Schema(type="string")),
+			headers=@Header(name="foo",schema=@Schema(type="string")),
 			examples=" {foo:'a'} "
 		)
 		public static class A3 {
@@ -74,21 +74,21 @@ public class Swagger_Response_Test {
 		@RestOp
 		public A3 f() {return null;}
 
-		@Response @ResponseCode(100)
+		@Response @StatusCode(100)
 		public static class A4 {}
 		@RestOp
 		public void g(Value<A4> r) {}
 		@RestOp
 		public A4 h() {return null;}
 
-		@Response @ResponseCode(100)
+		@Response @StatusCode(100)
 		public static class A5 {}
 		@RestOp
 		public void i(Value<A5> r) {}
 		@RestOp
 		public A5 j() {return null;}
 
-		@Response(headers=@ResponseHeader(name="foo",schema=@Schema(type="object")))
+		@Response(headers=@Header(name="foo",schema=@Schema(type="object")))
 		public static class A6 {}
 		@RestOp
 		public void k(Value<A6> r) {}
@@ -264,7 +264,7 @@ public class Swagger_Response_Test {
 
 		@Response(
 			schema=@Schema(description={"a","b"},type="string"),
-			headers=@ResponseHeader(name="foo",schema=@Schema(type="string")),
+			headers=@Header(name="foo",schema=@Schema(type="string")),
 			examples=" {foo:'a'} "
 		)
 		public static class D1 extends Throwable {}
@@ -273,7 +273,7 @@ public class Swagger_Response_Test {
 
 		@Response(
 			schema=@Schema(description={"a","b"},type="string"),
-			headers=@ResponseHeader(name="foo",schema=@Schema(type="string")),
+			headers=@Header(name="foo",schema=@Schema(type="string")),
 			examples=" {foo:'a'} "
 		)
 		public static class D2 extends Throwable {}
@@ -282,24 +282,24 @@ public class Swagger_Response_Test {
 
 		@Response(
 			schema=@Schema(description={"a","b"},type="string"),
-			headers=@ResponseHeader(name="foo",schema=@Schema(type="string")),
+			headers=@Header(name="foo",schema=@Schema(type="string")),
 			examples=" {foo:'a'} "
 		)
 		public static class D3 extends Throwable {}
 		@RestPost
 		public void c() throws D3 {}
 
-		@Response @ResponseCode(100)
+		@Response @StatusCode(100)
 		public static class D4 extends Throwable {}
 		@RestDelete
 		public void d() throws D4 {}
 
-		@Response @ResponseCode(100)
+		@Response @StatusCode(100)
 		public static class D5 extends Throwable {}
 		@RestOp
 		public void e() throws D5 {}
 
-		@Response(headers=@ResponseHeader(name="foo", schema=@Schema(type="number")))
+		@Response(headers=@Header(name="foo", schema=@Schema(type="number")))
 		public static class D6 extends Throwable {}
 		@RestOp
 		public void f() throws D6 {}