Hi all,

I'd like to work on APE 34 (external functions). I'm worried the full
scope is too large for the next release, so I'd like to
propose a smaller first version.

Proposed changes for the first version:

1. No endpoint objects or endpoint admin API yet. AT takes the URL
   (template) directly, as APE 34 already allows, and any credentials go
   in the WITH clause, the way external collections take them today:

     CREATE EXTERNAL FUNCTION weather(city)
       AT 'https://api.weather.com/v1/now'
       WITH { "bearerToken": "abc123", "method": "GET" };

2. Credential types: Basic, Bearer, OAuth client credentials, and an
   API key sent in a header of the API's choosing (e.g. x-api-key).
   Client certificates, "Local" auth and refresh intervals are left
   for later.

3. No URL whitelist or local/link-local address check in AsterixDB for
   now. A proxy, request and response size limits, default and maximum
   timeouts, and a per-NC rate limit are read from the config file.

4. The method moves from AS into WITH: "method" is "GET" or "POST", and
   for POST, "body" is "json", "form" or "formdata". This keeps the DDL
   free of new keywords. "headers" becomes a plain object.

5. No batched mode yet; each row makes its own call.

6. External functions cannot be called from feed transform functions
   in the first version.

Would these changes be OK?

Thanks,
Rithwik

Reply via email to