Validate an integration spec
POST/v1/integration/:integration_type/spec/validate
Validates a SaaS integration spec against the integration type definition. Set validationMode to full with spec.integrationSpec for full validation, or appSpec with spec.appSpec to validate app settings only. For full mode, use options.skipSecretExistenceCheck to skip organization secret existence checks (e.g. plan-time validation before secrets are created).
Request
Parameters (JSON)
{
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "integration_type",
"required": true,
"description": "The type identifier of the integration (e.g. \"github\", \"jira\")."
}
]
}Request body schema (JSON)
{
"title": "Body",
"body": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"installationId": {
"type": "string",
"minLength": 1
},
"installationType": {
"default": "Saas",
"type": "string",
"enum": [
"Saas",
"SaasOAuth2"
]
},
"validationMode": {
"type": "string",
"enum": [
"appSpec"
]
},
"spec": {
"type": "object",
"properties": {
"appSpec": {
"type": "object",
"properties": {
"scheduledResyncInterval": {
"type": "string",
"enum": [
"1h",
"2h",
"3h",
"4h",
"6h",
"12h",
"24h",
"7d"
]
},
"sendRawDataExamples": {
"type": "boolean"
},
"liveEventsEnabled": {
"type": "boolean"
},
"lakehouseEnabled": {
"type": "boolean"
},
"actionsProcessingEnabled": {
"type": "boolean"
},
"incrementalSyncEnabled": {
"type": "boolean"
},
"incrementalSyncInterval": {
"type": "string",
"enum": [
"15m",
"30m",
"1h"
]
},
"liveEventsUuid": {
"type": "string"
},
"liveEventsIngestHostname": {
"type": "string"
}
}
}
}
}
},
"required": [
"installationId",
"validationMode",
"spec"
],
"title": "App spec only"
},
{
"type": "object",
"properties": {
"installationId": {
"type": "string",
"minLength": 1
},
"installationType": {
"default": "Saas",
"type": "string",
"enum": [
"Saas",
"SaasOAuth2"
]
},
"validationMode": {
"default": "full",
"type": "string",
"enum": [
"full"
]
},
"spec": {
"type": "object",
"properties": {
"integrationSpec": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"appSpec": {
"type": "object",
"properties": {
"scheduledResyncInterval": {
"type": "string",
"enum": [
"1h",
"2h",
"3h",
"4h",
"6h",
"12h",
"24h",
"7d"
]
},
"sendRawDataExamples": {
"type": "boolean"
},
"liveEventsEnabled": {
"type": "boolean"
},
"lakehouseEnabled": {
"type": "boolean"
},
"actionsProcessingEnabled": {
"type": "boolean"
},
"incrementalSyncEnabled": {
"type": "boolean"
},
"incrementalSyncInterval": {
"type": "string",
"enum": [
"15m",
"30m",
"1h"
]
},
"liveEventsUuid": {
"type": "string"
},
"liveEventsIngestHostname": {
"type": "string"
}
}
}
},
"required": [
"integrationSpec"
]
},
"options": {
"type": "object",
"properties": {
"skipSecretExistenceCheck": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"installationId",
"spec"
],
"title": "Full validation"
}
]
}
}
}
}
}Responses
- 200
- 400
- 404
- 500
Default Response
Default Response
Default Response
Default Response
Responses (JSON)
{
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
}
},
"required": [
"ok"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"ok",
"error"
],
"additionalProperties": false
}
}
}
},
"404": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"ok",
"error"
],
"additionalProperties": false
}
}
}
},
"500": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"ok",
"error"
],
"additionalProperties": false
}
}
}
}
}
}