PUT
/v1/actions/{actionId}/definitionbetaapiKeyworkspace
When to use
Save action code, contracts, permissions, and source bindings together.
For agents
Requires admin access to the action and selected databases and connectors. Database bindings pin published schema revisions. Optional connectors maps names to connector IDs; handlers use connectors.<name>.request, query, or putObject according to the provider. Each external call needs a stable stepId. Publish through client.revisions.
Example
import { PermuteClient } from '@permute/sdk';
const orgClient = new PermuteClient({
apiKey: process.env.PERMUTE_API_KEY!,
});
const client = orgClient.withWorkspace(process.env.PERMUTE_WORKSPACE_ID!);
const result = await client.actions.saveDefinition('actn_abcdefghijklmnopqrstuvwx', {
"expectedDraft": null,
"definition": {
"source": "exports.handler = ({ input, db }) => { db.insert('contacts', input); return input; };",
"inputSchema": {
"type": "object"
},
"outputSchema": {
"type": "object"
},
"invokePermission": "write",
"sources": [
{
"sourceId": "dbas_crm123",
"revisionId": "rvsn_schema123",
"readTables": [],
"writeTables": [
"contacts"
]
}
]
}
});Request body
{
"expectedDraft": null,
"definition": {
"source": "exports.handler = ({ input, db }) => { db.insert('contacts', input); return input; };",
"inputSchema": {
"type": "object"
},
"outputSchema": {
"type": "object"
},
"invokePermission": "write",
"sources": [
{
"sourceId": "dbas_crm123",
"revisionId": "rvsn_schema123",
"readTables": [],
"writeTables": [
"contacts"
]
}
]
}
}Response
{
"data": {
"revisionId": "rvsn_action123"
}
}