- List all active projects
- List all archived projects
- Get a single project
- Create a project
- Edit a project
- Delete a project
Please note: Projects can not be edited by time trackers. Time trackers can only read projects they were granted access to.
List all active projects
List all active projects, sorted by name:
GET /projects.xml
GET /projects.json
Parameters
name | Filters the list by name. The given string will match partly and is treated as case-insensitive. |
customer_id | Filters the list by customer. Can be either a single ID, or multiple comma-separated IDs. |
limit | Limits the list to the given number of entries. Default: indefinite |
page | Allows to access follow-up pages when combined with limit. Default: 1 |
Response
[ { "project": {...} }, { "project": {...} } ]
<?xml version="1.0" encoding="UTF-8"?> <projects type="array"> <project> ... </project> <project> ... </project> </projects>
List all archived projects
List all archived projects, sorted by name:
GET /projects/archived.xml
GET /projects/archived.json
You can use the same parameters as for the active projects.
Get a single project
Get a single project by its id:
GET /projects/:id.xml
GET /projects/:id.json
Response
{ "project": { "id": 643, "name": "Open-Source", "note": "valvat, memento et all.", "customer_id": 291, "customer_name": "Yolk", "budget": 0, "budget_type": "minutes", "hourly_rate": 6000, "archived": false, "active_hourly_rate": "hourly_rate", "hourly_rates_per_service": [ { "service_id": 31272, "hourly_rate": 4500 }, { "service_id": 149228, "hourly_rate": 5500 } ], "created_at": "2011-08-17T12:06:57+02:00", "updated_at": "2015-02-19T10:53:10+01:00" } }
<?xml version="1.0" encoding="UTF-8"?> <project> <id type="integer">643</id> <name>Open-Source</name> <note>valvat, memento et all.</note> <budget type="integer">0</budget> <budget-type>minutes</budget> <archived type="boolean">false</archived> <customer-id type="integer">219</customer-id> <customer-name>Yolk</customer-name> <hourly-rate type="integer">6000</hourly-rate> <active-hourly-rate>hourly_rate</active-hourly-rate> <hourly-rates-per-service type="array"> <hourly-rate-per-service> <service-id type="integer">31272</service-id> <hourly-rate type="integer">4500</hourly-rate> </hourly-rate-per-service> <hourly-rate-per-service> <service-id type="integer">149228</service-id> <hourly-rate type="integer">5500</hourly-rate> </hourly-rate-per-service> </hourly-rates-per-service> <updated-at type="datetime">2011-08-17T12:06:57+02:00</updated-at> <created-at type="datetime">2015-02-19T10:53:10+01:00</created-at> </project>
Create a project
Create a new project. All attributes are optional, except the name.
POST /projects.xml
POST /projects.json
Attributes
name | Is required! |
note | Default: "" (empty string) |
customer_id | Default: null (without a customer) |
budget | Budget in minutes or cents (depends on budget_type) Default: 0 (no budget specified) |
budget_type | "minutes" (Default), "minutes_per_month", "cents" or "cents_per_month" |
active_hourly_rate | null (Default), "hourly_rate" or "hourly_rates_per_service" |
hourly_rate | In cent (a hundredth of the base unit, irrespective of the currency). Is used if active_hourly_rate is set to "hourly_rate". Default: null |
hourly_rates_per_service | List of rates per service. Is used if active_hourly_rate is set to "hourly_rate". Default: [] (empty array) |
archived | true or false Default: false |
Request
{ "project": { "name": "Website", "budget": 45000, "budget_type": "cents" } }
<project> <name>Website</name> <budget>45000</budget> <budget-type>cents</budget-type> </project>
Response
Location: https://demo.mite.de/projects/583241.json
{ "project": { "id": 583241, "name": "Website", "note": "", "customer_id": null, "budget": 45000, "budget_type": "cents", "hourly_rate": null, "archived": false, "active_hourly_rate": null, "hourly_rates_per_service": [], "created_at": "2015-10-15T11:40:49+02:00", "updated_at": "2015-10-15T11:40:49+02:00" } }
Location: https://demo.mite.de/projects/583241.xml
<?xml version="1.0" encoding="UTF-8"?> <project> <id type="integer">583241</id> <name>Website</name> <note></note> <budget type="integer">36000</budget> <budget-type>cents</budget> <archived type="boolean">false</archived> <customer-id type="integer" nil="true"/> <hourly-rate type="integer" nil="true"/> <active-hourly-rate nil="true"/> <hourly-rates-per-service type="array"/> <updated-at type="datetime">2015-10-15T11:40:49+02:00</updated-at> <created-at type="datetime">2015-10-15T11:40:49+02:00</created-at> </project>
Edit a project
Update the project with the given attributes:
PATCH /projects/:id.xml
PATCH /projects/:id.json
Request
{ "project": { "archived": true } }
<project> <archived>true</archived> </project>
Response
{empty}
If you change any attributes regarding the hourly rate (active_hourly_rate, hourly_rate and/or hourly_rates_per_service), it will by default only apply the changed rate to time entries created from now on. If you want it to apply to all existing time entries, set the additional attribute update_hourly_rate_on_time_entries to true:
{ "project": { "hourly_rate": 12000, "update_hourly_rate_on_time_entries": true } }
<project> <hourly-rate>12000</hourly-rate> <update-hourly-rate-on-time-entries>12000</update-hourly-rate-on-time-entries> </project>
Delete a project
Delete a project:
DELETE /projects/:id.xml
DELETE /projects/:id.json
Response
{empty}
You can only delete projects without any associated time entries. If there are, you will get back the following error:
{ "error": "This project cannot be deleted: There are \ associated time entries. Please archive instead." }
<?xml version="1.0" encoding="UTF-8"?> <errors> <error>This project cannot be deleted: There are associated \ time entries. Please archive instead.</error> </errors>