typeapi icon indicating copy to clipboard operation
typeapi copied to clipboard

Global parameters (traits)

Open chriskapp opened this issue 1 year ago • 0 comments

On some APIs there are global parameters which are applied on every API request i.e. the Notion API has a Notion-Version header which is required for every request s.

image

Currently we can only add an argument for each operation where we provide this header value. It would be better if we could globally configure this header value and automatically add this to every operation. We could add some sort of traits where we define arguments and then use those traits at every operation s.

{
  "traits": {
    "version": {
      "Notion-Version": {
        "in": "header",
        "schema": {
          "type": "string"
        }
      }
    }
  },
  "operations": {
    "getMessage": {
      "description": "Returns a hello world message",
      "method": "GET",
      "path": "/hello/world",
      "traits": ["version"],
      "return": {
        "schema": {
          "$ref": "Hello_World"
        }
      }
    }
  },
  "definitions": {
    "Hello_World": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        }
      }
    }
  }
}
const client = new Client()
client.setVersion("2022-06-28");
client.getMessage(): HelloWorld

This should then include the version header for the getMessage call.

chriskapp avatar Apr 28 '24 18:04 chriskapp