API Documentation

API Endpoint

Placeholder Usages

Placeholder Usages

The Placeholder Usage object represents the connection between a placeholder and its target, which can currently be a Task or Todo, and the specific field it connects to.

The field can be assignee, subscriber, due_date, or start_date.

Supported filter params

  • field (assignee, subscriber, due_date, start_date)

  • interval_enabled (true, false)

  • placeholder_id (array)

  • skip_weekends (true, false)

  • target_id (array)

  • target_type

  • task_id (array)

  • todo_id (array)

Supported sort params

  • created_at

  • field

  • id

  • interval_value

GET /api/v2/placeholder_usages
Requestsreturns placeholder usages

GET  /api/v2/placeholder_usages

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": [
    {
      "id": "2",
      "type": "placeholder_usages",
      "attributes": {
        "id": 2,
        "target_id": 531,
        "target_type": "Ticket",
        "field": "assignee",
        "placeholder_id": 6,
        "interval_value": null,
        "interval_unit": null,
        "interval_direction": null,
        "skip_weekends": false,
        "interval_enabled": false,
        "created_at": "2025-10-03T06:19:55.639+02:00",
        "updated_at": "2025-10-03T06:19:55.639+02:00"
      },
      "relationships": {
        "placeholder": {
          "meta": {
            "included": false
          }
        },
        "task": {
          "meta": {
            "included": false
          }
        }
      }
    }
  ],
  "links": {
    "first": "http://api-test.productive.io/api/v2/placeholder_usages?page%5Bnumber%5D=1&page%5Bsize%5D=30",
    "last": "http://api-test.productive.io/api/v2/placeholder_usages?page%5Bnumber%5D=1&page%5Bsize%5D=30"
  },
  "meta": {
    "current_page": 1,
    "total_pages": 1,
    "total_count": 1,
    "page_size": 30,
    "max_page_size": 200
  }
}

Get placeholder usages
GET/api/v2/placeholder_usages


GET /api/v2/placeholder_usages/1
Requestsreturns placeholder usage

GET  /api/v2/placeholder_usages/3

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "3",
    "type": "placeholder_usages",
    "attributes": {
      "id": 3,
      "target_id": 532,
      "target_type": "Ticket",
      "field": "assignee",
      "placeholder_id": 7,
      "interval_value": null,
      "interval_unit": null,
      "interval_direction": null,
      "skip_weekends": false,
      "interval_enabled": false,
      "created_at": "2025-10-03T06:19:55.829+02:00",
      "updated_at": "2025-10-03T06:19:55.829+02:00"
    },
    "relationships": {
      "placeholder": {
        "meta": {
          "included": false
        }
      },
      "task": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

Gets a placeholder usage
GET/api/v2/placeholder_usages/{id}

URI Parameters
HideShow
id
number (required) Example: 1

placeholder usage id


POST /api/v2/placeholder_usages
Requestscreates placeholder usage when params validcreates placeholder usage with todo target when params validreturns errors when params invalidreturns errors when no target specified

POST  /api/v2/placeholder_usages

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "placeholder_usages",
    "attributes": {
      "task_id": 533,
      "field": "assignee",
      "placeholder_id": 8,
      "interval_enabled": false,
      "skip_weekends": false
    }
  }
}
Responses201
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "4",
    "type": "placeholder_usages",
    "attributes": {
      "id": 4,
      "target_id": 533,
      "target_type": "Ticket",
      "field": "assignee",
      "placeholder_id": 8,
      "interval_value": null,
      "interval_unit": null,
      "interval_direction": null,
      "skip_weekends": false,
      "interval_enabled": false,
      "created_at": "2025-10-03T06:19:56.015+02:00",
      "updated_at": "2025-10-03T06:19:56.015+02:00"
    },
    "relationships": {
      "placeholder": {
        "meta": {
          "included": false
        }
      },
      "task": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

POST  /api/v2/placeholder_usages

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "placeholder_usages",
    "attributes": {
      "todo_id": 22,
      "field": "assignee",
      "placeholder_id": 9,
      "interval_enabled": false,
      "skip_weekends": false
    }
  }
}
Responses201
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "5",
    "type": "placeholder_usages",
    "attributes": {
      "id": 5,
      "target_id": 22,
      "target_type": "Todo",
      "field": "assignee",
      "placeholder_id": 9,
      "interval_value": null,
      "interval_unit": null,
      "interval_direction": null,
      "skip_weekends": false,
      "interval_enabled": false,
      "created_at": "2025-10-03T06:19:56.224+02:00",
      "updated_at": "2025-10-03T06:19:56.224+02:00"
    },
    "relationships": {
      "placeholder": {
        "meta": {
          "included": false
        }
      },
      "todo": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

POST  /api/v2/placeholder_usages

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "placeholder_usages",
    "attributes": {
      "field": "",
      "placeholder_id": null
    }
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "source": {
        "pointer": "data/attributes/field"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "is not included in the list",
      "source": {
        "pointer": "data/attributes/field"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "source": {
        "pointer": "data/attributes/placeholder"
      }
    }
  ]
}

POST  /api/v2/placeholder_usages

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "placeholder_usages",
    "attributes": {
      "field": "assignee",
      "placeholder_id": 10,
      "interval_enabled": false,
      "skip_weekends": false
    }
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "attribute is invalid",
      "source": {
        "pointer": "data/attributes/target"
      }
    }
  ]
}

Create a placeholder usage
POST/api/v2/placeholder_usages

URI Parameters
HideShow
placeholder_id
number (required) Example: 1

placeholder id

task_id: `1` (number, optional) - task id (required if todo_id not provided)
string (required) 
todo_id: `1` (number, optional) - todo id (required if task_id not provided)
string (required) 
field
string (required) Example: assignee

field name (assignee, subscriber, due_date, start_date)

interval_enabled
boolean (optional) Example: false

whether interval is enabled

interval_value
number (optional) Example: 1

interval value

interval_unit
string (optional) Example: day

interval unit (day, week, month, year)

interval_direction
string (optional) Example: after

interval direction (before, after)

skip_weekends
boolean (optional) Example: false

whether to skip weekends


PATCH /api/v2/placeholder_usages/1
Requestsupdates placeholder usage when validreturns error

PATCH  /api/v2/placeholder_usages/6

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "placeholder_usages",
    "attributes": {
      "interval_enabled": true,
      "interval_value": 1,
      "interval_unit": "day",
      "interval_direction": "after"
    }
  }
}
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "6",
    "type": "placeholder_usages",
    "attributes": {
      "id": 6,
      "target_id": 535,
      "target_type": "Ticket",
      "field": "assignee",
      "placeholder_id": 11,
      "interval_value": 1,
      "interval_unit": "day",
      "interval_direction": "after",
      "skip_weekends": false,
      "interval_enabled": true,
      "created_at": "2025-10-03T06:19:56.548+02:00",
      "updated_at": "2025-10-03T06:19:56.558+02:00"
    },
    "relationships": {
      "placeholder": {
        "meta": {
          "included": false
        }
      },
      "task": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

PATCH  /api/v2/placeholder_usages/7

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "placeholder_usages",
    "attributes": {
      "interval_value": -1
    }
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "must be greater than 0",
      "source": {
        "pointer": "data/attributes/interval_value"
      }
    }
  ]
}

Update a placeholder usage
PATCH/api/v2/placeholder_usages/{id}

URI Parameters
HideShow
id
number (required) Example: 1

placeholder usage id


DELETE /api/v2/placeholder_usages/1
Requestsdestroys placeholder usage

DELETE  /api/v2/placeholder_usages/8

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Responses204
This response has no content.

Deletes a placeholder usage
DELETE/api/v2/placeholder_usages/{id}

URI Parameters
HideShow
id
number (required) Example: 1

placeholder usage id


Generated by aglio on 03 Oct 2025