title: JSDoc object with keys being "one of" specific values and at least one required
body: <p>I want to write a function that takes in named arguments using an object. The object's keys are all optional, but at least one is required and they should be one of <code>"POST"</code>, <code>"GET"</code> and <code>"PUT"</code>.</p>
  
  <pre class="lang-js prettyprint-override"><code>/**
   * Arguments for gqlValidate function.
   *
   * @typedef {object} GraphQLConfig
   * @property {string} schema - The GraphQL schema.
   * @property {string} rootType - Root type of the schema.
   *
   * A configuration for a route.
   * @typedef {object} RouteConfig
   * @property {GraphQLConfig} body - The required body params.
   * @property {GraphQLConfig} query - The required query params.
   * @property {Array.&lt;{signer: string, properties: object, RequestParams: object}&gt;} signatures - Array of signature params.
   * @property {Function} route - The route that should be called.
   */
  
  /**
   *
   * @param {} routeConfigs - What do I need to put here?
   */
  const createValidatedRoute = routeConfigs =&gt; {};
  </code></pre>
  
  <p>What do I need to put for <code>routeConfigs</code> so that it is an object where the keys are one of the above mentioned values and that at least one is required and that their value is a <code>RouteConfig</code>? The JSDocs didn't really help on this one. So a valid parameter would look like:</p>
  
  <pre class="lang-js prettyprint-override"><code>export default createValidatedRoute = ({
    POST: {
      route,
      body: { schema, rootType },
      signatures: [{ signer: 'holder', properties, RequestParams }]
    }
  });
  </code></pre>