I like the annotation approach and agree that the flexibility needed in ARM, where they deploy new versions of the APIs quite often (but keeping backward compatibility) might not be needed here.
A couple questions: * It would be worth considering the annotation at class level too. Could you implement that? * I think it makes sense to reuse the `@SinceApiVersion` annotation for this purpose. It may affect existing methods, but it should be safe, as it just defines the versions where the annotated methods can work. jclouds is already using that annotation in a similar way. For example, providers that have a root API that delegates to feature APIs (such as the [AWSEC2Api](https://github.com/jclouds/jclouds/blob/master/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Api.java)) can return an `Optional`. If those methods are annotated with the `@SinceApiVersion`, jclouds will return `absent` instead of the API class (magic is done [here](https://github.com/jclouds/jclouds/blob/master/core/src/main/java/org/jclouds/rest/functions/PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersion.java)). So, for me, letting the FormSigner (v2 and V4) override the API version for those methods annotated with `@SinceApiVersion` makes sense and I'd prefer this approach instead of introducing a new annotation to jclouds-core. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/jclouds/jclouds/pull/1102#issuecomment-302420023