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.

GET/api/dependencies

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"
  }
]

GET/api/dependencies/{dependencyId}

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"
}

POST/api/dependencies

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"
}

PUT/api/dependencies/{dependencyId}

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/api/dependencies/{dependencyId}

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/api/dependencies/chain

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 completed
  • blocks: Source item prevents target item from starting
  • related_to: Items are related but not strictly blocking
  • prerequisite: Target item must be done before source item
  • successor: 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 available
  • medium: Moderate impact, some workarounds possible
  • high: Significant impact on timeline or deliverables
  • critical: Project-blocking, no viable workarounds

Status Values

  • active: Dependency is current and blocking
  • resolved: Dependency has been satisfied
  • cancelled: Dependency is no longer relevant
  • blocked: 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 succeeded
  • 201 Created - Dependency created successfully
  • 400 Bad Request - Invalid request or circular dependency detected
  • 401 Unauthorized - Missing or invalid authentication
  • 403 Forbidden - Insufficient permissions
  • 404 Not Found - Dependency or item not found
  • 500 Internal Server Error - Server error

Error responses include descriptive messages:

{
  "error": "Circular dependency detected: item_123 → item_456 → item_123"
}

Was this page helpful?