Dependencies API
The Dependencies API allows you to create, retrieve, update, and delete dependencies between items and external systems. Dependencies help track blocking relationships and manage project risks.
The Dependency Object
- Name
id
- Type
- string
- Description
Unique identifier for the dependency.
- Name
sourceItemId
- Type
- string
- Description
ID of the item that has the dependency.
- Name
targetItemId
- Type
- string
- Description
ID of the target item (null for external dependencies).
- Name
dependencyType
- Type
- string
- Description
Type:
depends_on
,blocks
,related_to
,prerequisite
,successor
.
- Name
riskLevel
- Type
- string
- Description
Risk level:
low
,medium
,high
,critical
.
- Name
status
- Type
- string
- Description
Status:
active
,resolved
,cancelled
,blocked
.
- Name
isExternal
- Type
- boolean
- Description
Whether this is an external dependency.
- Name
externalTarget
- Type
- string
- Description
Name of external system/vendor (for external dependencies).
- Name
externalOwner
- Type
- string
- Description
Contact person for external dependency.
- Name
contactEmail
- Type
- string
- Description
Email for external contact.
- Name
vendor
- Type
- string
- Description
Vendor or organization name.
- Name
slaDate
- Type
- date
- Description
Service level agreement date.
- Name
escalationDate
- Type
- date
- Description
Date to escalate if not resolved.
- Name
notes
- Type
- string
- Description
Additional notes about the dependency.
- Name
createdAt
- Type
- timestamp
- Description
When the dependency was created.
- Name
createdByUserId
- Type
- string
- Description
User who created the dependency.
List dependencies
This endpoint allows you to retrieve dependencies with various filtering options.
Query Parameters
- Name
itemId
- Type
- string
- Description
Filter by source item ID.
- Name
sowId
- Type
- string
- Description
Filter by SOW ID (all dependencies in a SOW).
- Name
type
- Type
- string
- Description
Filter by type:
critical
,overdue
,external
.
- Name
status
- Type
- string
- Description
Filter by status:
active
,resolved
,cancelled
,blocked
.
Response
Returns an array of dependency objects.
cURL
curl https://api.tanda.app/api/dependencies?itemId=item_123 \
-H "Authorization: Bearer {token}"
Response
[
{
"id": "dep_123",
"sourceItemId": "item_123",
"targetItemId": "item_456",
"dependencyType": "depends_on",
"riskLevel": "medium",
"status": "active",
"isExternal": false,
"notes": "User auth must be complete before profile features",
"createdAt": "2025-05-25T12:00:00Z"
}
]
Retrieve a dependency
This endpoint allows you to retrieve a single dependency by its ID.
Path Parameters
- Name
dependencyId
- Type
- string
- Required
- Description
The ID of the dependency to retrieve.
Response
Returns the dependency object if found.
cURL
curl https://api.tanda.app/api/dependencies/dep_123 \
-H "Authorization: Bearer {token}"
Response
{
"id": "dep_123",
"sourceItemId": "item_123",
"targetItemId": "item_456",
"dependencyType": "depends_on",
"riskLevel": "medium",
"status": "active",
"isExternal": false,
"notes": "User auth must be complete before profile features",
"createdAt": "2025-05-25T12:00:00Z",
"createdByUserId": "user_789"
}
Create a dependency
This endpoint allows you to create a new dependency between items or with external systems.
Request Body
- Name
sourceItemId
- Type
- string
- Required
- Description
ID of the item that has the dependency.
- Name
targetItemId
- Type
- string
- Description
ID of the target item (required for internal dependencies).
- Name
dependencyType
- Type
- string
- Required
- Description
Type:
depends_on
,blocks
,related_to
,prerequisite
,successor
.
- Name
riskLevel
- Type
- string
- Required
- Description
Risk level:
low
,medium
,high
,critical
.
- Name
isExternal
- Type
- boolean
- Description
Set to true for external dependencies.
- Name
externalTarget
- Type
- string
- Description
Name of external system (required for external dependencies).
- Name
externalOwner
- Type
- string
- Description
Contact person for external dependency.
- Name
contactEmail
- Type
- string
- Description
Email for external contact.
- Name
vendor
- Type
- string
- Description
Vendor or organization name.
- Name
slaDate
- Type
- date
- Description
Service level agreement date.
- Name
escalationDate
- Type
- date
- Description
Date to escalate if not resolved.
- Name
notes
- Type
- string
- Description
Additional notes about the dependency.
Response
Returns the created dependency object.
cURL - Internal Dependency
curl -X POST https://api.tanda.app/api/dependencies \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"sourceItemId": "item_123",
"targetItemId": "item_456",
"dependencyType": "depends_on",
"riskLevel": "medium",
"notes": "Payment system needs user auth first"
}'
cURL - External Dependency
curl -X POST https://api.tanda.app/api/dependencies \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"sourceItemId": "item_123",
"isExternal": true,
"externalTarget": "Stripe Payment Gateway",
"externalOwner": "John Smith",
"contactEmail": "john@stripe.com",
"dependencyType": "depends_on",
"riskLevel": "high",
"vendor": "Stripe Inc",
"slaDate": "2024-11-15",
"escalationDate": "2024-11-10",
"notes": "Need API access and webhooks configured"
}'
Response
{
"id": "dep_789",
"sourceItemId": "item_123",
"targetItemId": "item_456",
"dependencyType": "depends_on",
"riskLevel": "medium",
"status": "active",
"isExternal": false,
"notes": "Payment system needs user auth first",
"createdAt": "2025-05-25T13:00:00Z",
"createdByUserId": "user_789"
}
Update a dependency
This endpoint allows you to update an existing dependency.
Path Parameters
- Name
dependencyId
- Type
- string
- Required
- Description
The ID of the dependency to update.
Request Body
- Name
status
- Type
- string
- Description
Updated status:
active
,resolved
,cancelled
,blocked
.
- Name
riskLevel
- Type
- string
- Description
Updated risk level:
low
,medium
,high
,critical
.
- Name
slaDate
- Type
- date
- Description
Updated SLA date.
- Name
escalationDate
- Type
- date
- Description
Updated escalation date.
- Name
notes
- Type
- string
- Description
Updated notes.
Response
Returns the updated dependency object.
cURL
curl -X PUT https://api.tanda.app/api/dependencies/dep_123 \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"status": "resolved",
"notes": "Vendor completed API integration successfully"
}'
Response
{
"id": "dep_123",
"sourceItemId": "item_123",
"targetItemId": null,
"dependencyType": "depends_on",
"riskLevel": "high",
"status": "resolved",
"isExternal": true,
"externalTarget": "Stripe Payment Gateway",
"externalOwner": "John Smith",
"notes": "Vendor completed API integration successfully",
"createdAt": "2025-05-25T12:00:00Z",
"updatedAt": "2025-05-25T14:00:00Z"
}
Delete a dependency
This endpoint allows you to delete a dependency.
Path Parameters
- Name
dependencyId
- Type
- string
- Required
- Description
The ID of the dependency to delete.
Response
Returns a success message if the dependency was deleted.
cURL
curl -X DELETE https://api.tanda.app/api/dependencies/dep_123 \
-H "Authorization: Bearer {token}"
Response
{
"message": "Dependency deleted successfully"
}
Get dependency chain
This endpoint returns the complete dependency chain for analysis and visualization.
Query Parameters
- Name
sowId
- Type
- string
- Required
- Description
The ID of the SOW to analyze.
- Name
format
- Type
- string
- Description
Response format:
tree
,flat
(default:flat
).
Response
Returns the dependency chain showing relationships and potential issues.
cURL
curl https://api.tanda.app/api/dependencies/chain?sowId=sow_123 \
-H "Authorization: Bearer {token}"
Response
{
"sowId": "sow_123",
"dependencies": [
{
"id": "dep_123",
"sourceItem": {
"id": "item_123",
"title": "Payment System"
},
"targetItem": {
"id": "item_456",
"title": "User Authentication"
},
"dependencyType": "depends_on",
"riskLevel": "medium",
"status": "active"
}
],
"issues": {
"circular": [],
"overdue": [],
"critical": []
}
}
Dependency Types
The API supports several dependency relationship types:
Internal Dependencies
depends_on
: Source item needs target item to be completedblocks
: Source item prevents target item from startingrelated_to
: Items are related but not strictly blockingprerequisite
: Target item must be done before source itemsuccessor
: Source item comes after target item
External Dependencies
All relationship types apply, but the target is an external system rather than an internal item.
Risk Levels
low
: Minor impact if delayed, easy workarounds availablemedium
: Moderate impact, some workarounds possiblehigh
: Significant impact on timeline or deliverablescritical
: Project-blocking, no viable workarounds
Status Values
active
: Dependency is current and blockingresolved
: Dependency has been satisfiedcancelled
: Dependency is no longer relevantblocked
: Dependency cannot be resolved due to external factors
Filtering Options
Get critical dependencies
GET /api/dependencies?sowId=sow_123&type=critical
Get overdue dependencies
GET /api/dependencies?sowId=sow_123&type=overdue
Get external dependencies
GET /api/dependencies?sowId=sow_123&type=external
Get dependencies for specific item
GET /api/dependencies?itemId=item_123
Circular Dependency Prevention
The API automatically prevents circular dependencies. If you attempt to create a dependency that would result in a circular relationship, the request will be rejected with a 400 Bad Request
error.
Example circular dependency that would be rejected:
Item A depends on Item B
Item B depends on Item C
Item C depends on Item A ← This would be rejected
Error Responses
The API uses standard HTTP status codes:
200 OK
- Request succeeded201 Created
- Dependency created successfully400 Bad Request
- Invalid request or circular dependency detected401 Unauthorized
- Missing or invalid authentication403 Forbidden
- Insufficient permissions404 Not Found
- Dependency or item not found500 Internal Server Error
- Server error
Error responses include descriptive messages:
{
"error": "Circular dependency detected: item_123 → item_456 → item_123"
}