private List<ValidationEvent> validateService(
            ServiceShape service,
            AwsTagIndex tagIndex,
            TopDownIndex topDownIndex
    ) {
        List<ValidationEvent> events = new ArrayList<>();
        TagEnabledTrait trait = service.expectTrait(TagEnabledTrait.class);

        int taggableResourceCount = 0;
        for (ResourceShape resource : topDownIndex.getContainedResources(service)) {
            if (resource.hasTrait(TaggableTrait.ID)) {
                ++taggableResourceCount;
            }
        }
        if (taggableResourceCount == 0) {
            events.add(error(service,
                    "Service marked `aws.api#tagEnabled` trait must have at least one "
                            + "`aws.api#taggable` resource."));
        }

        if (!trait.getDisableDefaultOperations() && !tagIndex.serviceHasTagApis(service.getId())) {
            events.add(warning(service,
                    "Service marked `aws.api#tagEnabled` trait does not have"
                            + " consistent tagging operations implemented: {TagResource, UntagResource, and"
                            + " ListTagsForResource}."));
        }
        return events;
    }
Validates service has at least one taggable resource.
smithy-aws-traits/src/main/java/software/amazon/smithy/aws/traits/tagging/TagEnabledServiceValidator.java