docs: public static XContentBuilder marshall(ApiVersionBean bean) throws StorageException {
          try (XContentBuilder builder = XContentFactory.jsonBuilder()) {
              ApiBean api = bean.getApi();
              OrganizationBean org = api.getOrganization();
              preMarshall(bean);
              builder
                  .startObject()
                      .field("organizationId", org.getId())
                      .field("organizationName", org.getName())
                      .field("apiId", api.getId())
                      .field("apiName", api.getName())
                      .field("apiDescription", api.getDescription())
                      .field("version", bean.getVersion())
                      .field("status", bean.getStatus())
                      .field("createdBy", bean.getCreatedBy())
                      .field("createdOn", bean.getCreatedOn().getTime())
                      .field("modifiedBy", bean.getModifiedBy())
                      .field("modifiedOn", bean.getModifiedOn().getTime())
                      .field("publishedOn", bean.getPublishedOn() != null ? bean.getPublishedOn().getTime() : null)
                      .field("retiredOn", bean.getRetiredOn() != null ? bean.getRetiredOn().getTime() : null)
                      .field("publicAPI", bean.isPublicAPI())
                      .field("endpoint", bean.getEndpoint())
                      .field("endpointType", bean.getEndpointType())
                      .field("endpointContentType", bean.getEndpointContentType())
                      .field("parsePayload", bean.isParsePayload())
                      .field("definitionType", bean.getDefinitionType());
              Set<ApiGatewayBean> gateways = bean.getGateways();
              if (gateways != null) {
                  builder.startArray("gateways");
                  for (ApiGatewayBean gateway : gateways) {
                      builder.startObject()
                          .field("gatewayId", gateway.getGatewayId())
                      .endObject();
                  }
                  builder.endArray();
              }
              Set<ApiPlanBean> plans = bean.getPlans();
              if (plans != null) {
                  builder.startArray("plans");
                  for (ApiPlanBean plan : plans) {
                      builder.startObject()
                          .field("planId", plan.getPlanId())
                          .field("version", plan.getVersion())
                      .endObject();
                  }
                  builder.endArray();
              }
              Map<String, String> endpointProperties = bean.getEndpointProperties();
              if (endpointProperties != null) {
                  builder.startObject("endpointProperties");
                  for (Entry<String, String> property : endpointProperties.entrySet()) {
                      builder.field(property.getKey(), property.getValue());
                  }
                  builder.endObject();
              }
              builder.endObject();
              postMarshall(bean);
              return builder;
          } catch (IOException e) {
              throw new StorageException(e);
          }
      }