Before Save Hooks
Synchronous allow / deny / patch calls to your endpoint or function before a record is saved
List
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
BeforeSaveHookViewArray
Register a hook; the signing secret is returned once
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequirednameRequiredstring120descriptionstring1000objectTypeRequiredstringLEAD | CONTACT | ACCOUNT | OPPORTUNITY | TASK | CASE | custom:
operationsRequiredarray<array<string>>urlstringhttps:// endpoint that receives the proposed record (omit when functionId is set)
2048functionIdstringA serverless function that decides instead of a URL (same {allow, patch, message} contract). Empty string switches back to url.
timeoutMsnumber3000Minimum: 250Maximum: 5000failureModestring"FAIL_OPEN"Value in: "FAIL_OPEN" | "FAIL_CLOSED"positionnumberHooks on the same object run in ascending order
0Maximum: 1000isActivebooleanBeforeSaveHookWithSecret
Get
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
idRequiredstringBeforeSaveHookView
Update
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequirednamestring120descriptionstring1000objectTypestringLEAD | CONTACT | ACCOUNT | OPPORTUNITY | TASK | CASE | custom:
operationsarray<string>Items: at least 1.
urlstringhttps:// endpoint that receives the proposed record (omit when functionId is set)
2048functionIdstringA serverless function that decides instead of a URL (same {allow, patch, message} contract). Empty string switches back to url.
timeoutMsnumber3000Minimum: 250Maximum: 5000failureModestring"FAIL_OPEN"Value in: "FAIL_OPEN" | "FAIL_CLOSED"positionnumberHooks on the same object run in ascending order
0Maximum: 1000isActivebooleanPath Parameters
idRequiredstringHeader Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255BeforeSaveHookView
Remove
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
idRequiredstringDeletedResponse
Rotate
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
idRequiredstringSecretResponse
Send a sample record; nothing is saved. Returns the decision, request and response
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequiredoperationstring"CREATE" | "UPDATE" | "DELETE"recordobjectSample proposed record
previousobjectSample stored record (updates and deletes)
Path Parameters
idRequiredstringHeader Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255HookTestResult
Invocations page
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
idRequiredstringQuery Parameters
pagestring1limitstring20statusstring"SUCCEEDED" | "FAILED" | "TIMEOUT" | "BLOCKED" | "REJECTED" | "CIRCUIT_OPEN"ExtensionInvocationPage
Invocation
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
idRequiredstringinvocationIdRequiredstringExtensionInvocation
Re-send the logged payload as a test (the original save is not re-run)
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
idRequiredstringinvocationIdRequiredstringHeader Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255HookTestResult