Skip to main content
POST
https://sandbox.getcollate.io/api
/
v1
/
dataContracts
/
{id}
/
validate
POST /v1/dataContracts/{id}/validate
from metadata.sdk import configure, get_client
from metadata.sdk.entities import DataContracts

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)
client = get_client()

# Validate a specific contract
result = client.post(
    f"/dataContracts/{contract_id}/validate"
)
print(f"Status: {result['contractExecutionStatus']}")

# Validate by entity
result = client.post("/dataContracts/entity/validate", params={
    "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "entityType": "table"
})
{
  "id": "e1f2a3b4-c5d6-7890-ef12-345678901234",
  "dataContractFQN": "sales-orders-contract",
  "timestamp": 1769986400000,
  "contractExecutionStatus": "Success",
  "schemaValidation": {
    "passed": 4,
    "failed": 0,
    "total": 4,
    "failedFields": []
  },
  "semanticsValidation": {
    "passed": 3,
    "failed": 0,
    "total": 3,
    "failedRules": []
  },
  "qualityValidation": {
    "passed": 2,
    "failed": 0,
    "total": 2,
    "qualityScore": 100.0
  },
  "slaValidation": {
    "refreshFrequencyMet": true,
    "latencyMet": true,
    "availabilityMet": true
  },
  "executionTime": 1250
}

Validate & Results

Run on-demand validation of data contracts and manage execution results. Validation checks schema compliance, semantics rules, quality expectations, and SLA targets.

Validate a Contract

Trigger on-demand validation of a data contract. Returns a DataContractResult with status for each validation dimension. POST /v1/dataContracts/{id}/validate
id
string
required
UUID of the data contract.

Validate by Entity

Validate the effective contract for a specific entity. If the entity only has an inherited contract from a data product, a local contract is materialized to store results. POST /v1/dataContracts/entity/validate
entityId
string
required
UUID of the entity.
entityType
string
required
Type of the entity (e.g., table, topic).
POST /v1/dataContracts/{id}/validate
from metadata.sdk import configure, get_client
from metadata.sdk.entities import DataContracts

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)
client = get_client()

# Validate a specific contract
result = client.post(
    f"/dataContracts/{contract_id}/validate"
)
print(f"Status: {result['contractExecutionStatus']}")

# Validate by entity
result = client.post("/dataContracts/entity/validate", params={
    "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "entityType": "table"
})
{
  "id": "e1f2a3b4-c5d6-7890-ef12-345678901234",
  "dataContractFQN": "sales-orders-contract",
  "timestamp": 1769986400000,
  "contractExecutionStatus": "Success",
  "schemaValidation": {
    "passed": 4,
    "failed": 0,
    "total": 4,
    "failedFields": []
  },
  "semanticsValidation": {
    "passed": 3,
    "failed": 0,
    "total": 3,
    "failedRules": []
  },
  "qualityValidation": {
    "passed": 2,
    "failed": 0,
    "total": 2,
    "qualityScore": 100.0
  },
  "slaValidation": {
    "refreshFrequencyMet": true,
    "latencyMet": true,
    "availabilityMet": true
  },
  "executionTime": 1250
}

Execution Status Values

StatusDescription
RunningValidation is in progress
SuccessAll validations passed
FailedOne or more validations failed
PartialSuccessSome validations passed, some failed
AbortedValidation was aborted due to an error
QueuedValidation is queued for execution

List Results

Retrieve execution results for a contract. GET /v1/dataContracts/{id}/results
id
string
required
UUID of the data contract.
limit
integer
default:"10"
Maximum number of results to return (0–10,000).
startTs
integer
Return results after this epoch timestamp (milliseconds).
endTs
integer
Return results before this epoch timestamp (milliseconds).

Get Latest Result

GET /v1/dataContracts/{id}/results/latest Returns the most recent validation result.

Add a Result

PUT /v1/dataContracts/{id}/results Programmatically add a validation result (useful for external validation pipelines).

Body Parameters

timestamp
integer
required
Epoch timestamp (milliseconds) of the validation run.
contractExecutionStatus
string
required
Status: Running, Success, Failed, PartialSuccess, Aborted, Queued.
result
string
Human-readable summary message.
schemaValidation
object
Schema validation details.
semanticsValidation
object
Semantics validation details.
qualityValidation
object
Quality validation details.
slaValidation
object
SLA validation details.
executionTime
integer
Total validation execution time in milliseconds.
Add Result
from metadata.sdk import configure, get_client

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)
client = get_client()

# Add a validation result
client.put(f"/dataContracts/{contract_id}/results", json={
    "timestamp": 1769986400000,
    "contractExecutionStatus": "Success",
    "schemaValidation": {"passed": 4, "failed": 0, "total": 4},
    "semanticsValidation": {"passed": 3, "failed": 0, "total": 3},
    "executionTime": 850
})
Add Result
import static org.openmetadata.sdk.fluent.DataContracts.*;

// Add a result using fluent API
forContract(contractId)
    .addResult()
    .success()
    .withMessage("All validations passed")
    .withExecutionTime(850L)
    .execute();
Add Result
curl -X PUT "{base_url}/api/v1/dataContracts/f7a1b2c3-d4e5-6789-0abc-def123456789/results" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "timestamp": 1769986400000,
    "contractExecutionStatus": "Success",
    "schemaValidation": {"passed": 4, "failed": 0, "total": 4, "failedFields": []},
    "semanticsValidation": {"passed": 3, "failed": 0, "total": 3, "failedRules": []},
    "executionTime": 850
  }'

Delete Results

DELETE /v1/dataContracts/{id}/results/{timestamp} — Delete a result at a specific timestamp. DELETE /v1/dataContracts/{id}/results/before/{timestamp} — Delete all results before a timestamp.

Error Handling

CodeError TypeDescription
401UNAUTHORIZEDInvalid or missing authentication token
403FORBIDDENUser lacks permission
404NOT_FOUNDData contract not found