Typealias resolving can't figure this out

No, if you actually wanted a type alias, you would capitalize it. Instead, you're trying to forward an initializer along so that it can be used with static member lookup:

extension Endpoint where Self == MyEndpoints.GetDonuts {
  static func donuts(glutenFree: Bool = false, vegan: Bool = false) -> Self {
    .init(glutenFree: glutenFree, vegan: vegan)
  }
}

I agree that it should be easier to write that sort of code, and I suspect that as more people come across the pain of the boilerplate, we'll at least get better tooling support for generating it.

Found it.