PermuteDocs
Go to Permute

Actions · actionDefinitionSave

Save an action draft

Requires action and selected-source admin permission. Sources can bind published managed database schemas or queryable warehouse sources, including processed files, synced connectors, Data Tables, Data Flows, reports, dashboards, and completed entity outputs. Database schema revisions are dependency revisions; warehouse reads use current available output. Named connector bindings authorize provider calls separately. History, restore, and publish use the shared resource versioning endpoints.

PUT/v1/actions/{actionId}/definition
betaapiKeyworkspace

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

typescript
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

json
{
  "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

json
{
  "data": {
    "revisionId": "rvsn_action123"
  }
}