Skip to content

path_params_schema child keys converted to camelCase on push #90

@aicayzer

Description

@aicayzer

toCamelCaseKeys() in src/shared/utils.ts converts user-defined keys inside path_params_schema to camelCase. This breaks webhook tools whose URL templates reference those keys via {{snake_case}} placeholders — the URL string is preserved as-is, but the schema key is renamed, so the two no longer match.

Repro

Local tool config:

{
  "name": "get_parties",
  "type": "webhook",
  "api_schema": {
    "url": "https://example.com/{{transaction_id}}/get-parties",
    "method": "POST",
    "path_params_schema": {
      "transaction_id": { "type": "string", "dynamic_variable": "transaction_id" }
    }
  }
}

After elevenlabs tools push, the agent sees:

{
  "apiSchema": {
    "url": "https://example.com/{{transaction_id}}/get-parties",
    "pathParamsSchema": {
      "transactionId": { "type": "string", "dynamicVariable": "transaction_id" }
    }
  }
}

URL template still references {{transaction_id}}; the schema now declares transactionId. The placeholder doesn't resolve.

Suggested fix

Same pattern as #57, #65, #72, #78 — add to PRESERVE_CHILD_KEYS:

 const PRESERVE_CHILD_KEYS = new Set([
   'request_headers', 'requestHeaders',
   'dynamic_variables', 'dynamicVariables',
   'language_presets', 'languagePresets',
   'model_usage', 'modelUsage',
   'data_collection', 'dataCollection',
+  'path_params_schema', 'pathParamsSchema',
   'nodes',
   'edges',
 ]);

query_params_schema is likely affected by the same pattern — worth checking that and any other URL-template-binding param sets for completeness.

CLI version: 0.5.3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingconfirmedBug has been verified and acceptedhas reproductionA reproduction case has been provided

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions