This is really cool! Pretty great example of HATEOAS in the wild. Sharing because it is probably of interest to others on this list!AWS's huge surface area of APIs is driven by this model: https://github.com/boto/botocore/tree/develop/botocore/data . For example, here is S3's service model. Link following everywhere! C-f "requestUri" in the S3 model. here's where the models are loaded by the generic command line interface driver, and then used to generate the command line help text.
--
You received this message because you are subscribed to the Google Groups "Collection+JSON" group.
To unsubscribe from this group and stop receiving emails from it, send an email to collectionjson+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
AFAICT from the first botocore/data link, all of the public AWS services use this model! I don't know any more than you do about AWS, I just had a hunch and spent an hour poking around.how does it know "is delete valid right now" great question, i just poked around trying to figure it out. ... OK I've been poking around for 20 mins. Each operation does declare its dependencies, there's a type-system like thing where each dependency is given an identity and a "shape" (form), it seems as if any operation is allowed if its listed dependencies are satisfied, subject to their Policy layer which is a separate abstraction of grants and acls and such. It doesn't seem like there is any actual code that can express "You can only delete this bucket if it is empty" - rather, the semantics are "If you delete this bucket, you're also going to delete its contents". In EC2 service i also found the notion of "Dry Run" which "checks if you have permissions for the request" - weird. Maybe the policy system is so abstract that it can't be declared as model data.
--