Skip to main content
POST
/
timmi-project
/
api
/
v4
/
projects
Create a new Project
curl --request POST \
  --url https://{host}/timmi-project/api/v4/projects \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "clientId": 2,
  "standardRateCardId": 2,
  "code": "<string>",
  "ownerId": 2,
  "contractType": "nonBillable",
  "startsOn": "<unknown>",
  "description": "",
  "initialDeliveryDate": "<unknown>",
  "standardRateCard": {}
}
'
{
  "name": "<string>",
  "id": 2,
  "code": "<string>",
  "client": {
    "id": 123,
    "name": "<string>",
    "code": "<string>",
    "externalCode": "<unknown>"
  },
  "owner": "<unknown>",
  "status": "draft",
  "contractType": "nonBillable",
  "startsOn": "<unknown>",
  "createdAt": "2023-11-07T05:31:56Z",
  "lastModifiedAt": "2023-11-07T05:31:56Z",
  "price": "<unknown>",
  "authorizedActions": [
    "canEditAndDelete"
  ],
  "organizationId": 2,
  "description": "",
  "initialDeliveryDate": "<unknown>",
  "revisedDeliveryDate": "<unknown>",
  "launchedAt": "<unknown>",
  "lastChargedOn": "<unknown>",
  "standardRateCard": {
    "id": 2,
    "name": "<string>"
  },
  "initialTimeEstimate": "<unknown>",
  "revisedTimeEstimate": "<unknown>",
  "standardRate": "<unknown>",
  "billRate": "<unknown>",
  "initialBudget": "<unknown>",
  "revisedBudget": "<unknown>",
  "discount": "<unknown>",
  "discountRate": "<unknown>",
  "estimatedOverrun": "<unknown>",
  "initialRecoveryRate": "<unknown>",
  "estimatedRecoveryRate": "<unknown>",
  "totalInvoiced": "<unknown>",
  "risks": [
    {
      "type": "budgetOverRun",
      "label": "<string>"
    }
  ],
  "anomalies": [
    {
      "type": "noServices",
      "label": "<string>"
    }
  ],
  "invoicingWarnings": [
    {
      "type": "unapprovedItems",
      "applicableFrom": "2023-12-25",
      "preventsInvoicing": true,
      "label": "<string>"
    }
  ]
}

Headers

Authorization
string
required

API key. Value must be formatted like so: lucca application={api_key}.

Body

application/json

Definitions

Projects are the main resources in Lucca Project.

They belong to a single Client and Organization. Internal (non-billable) projects may be attached to a client that represents your own company.

Any billable project, whether fixed price or time and materials, must have a owner, start and end dates, and a contract:

  • A fixed price project must have prices set on its services.
  • A time and materials project must have bill rates set on its services.

A Project is only available for time submission while on the "ongoing" status. Whenever a project is marked as complete or abandonned, all its services' estimates are adjusted to the actual spent value.

A project must be valid (ie all required fields must be set) before its status can be set to "ongoing".

Once ongoing, a project cannot go back to the "draft" status and can no longer be deleted. It may only be abandonned or complete.

Fields

name
string
required
Maximum string length: 255
clientId
integer
required
Required range: x >= 1
standardRateCardId
integer
required
Required range: x >= 1
code
string | null

Defaults to an automatically generated value.

Maximum string length: 255
ownerId
integer
Required range: x >= 1
contractType
enum<string>
default:nonBillable

Describes project contract types:

  • Non-billable (internal): no revenue recognized, budget estimates are optional.
  • Fixed price: progress-based revenue recognition, budget estimates are mandatory.
  • Time and Materials: time-based revenue recognition, initial estimates are indicative.
  • Not-to-exceed Time and Materials: time-based revenue recognition with a maximum value, initial estimate sets the maximum value.
Available options:
nonBillable,
fixedPrice,
timeAndMaterials,
cappedTimeAndMaterials
startsOn
null | string<date>

Start of the project execution.

description
null | string
default:""

Optional markdown formatted description.

initialDeliveryDate
null | string<date>

Initially planned delivery date.

standardRateCard
object

Standard rate card version applicable for this project. Used for profit analysis.

Response

Created

Definitions

Projects are the main resources in Lucca Project.

They belong to a single Client and Organization. Internal (non-billable) projects may be attached to a client that represents your own company.

Any billable project, whether fixed price or time and materials, must have a owner, start and end dates, and a contract:

  • A fixed price project must have prices set on its services.
  • A time and materials project must have bill rates set on its services.

A Project is only available for time submission while on the "ongoing" status. Whenever a project is marked as complete or abandonned, all its services' estimates are adjusted to the actual spent value.

A project must be valid (ie all required fields must be set) before its status can be set to "ongoing".

Once ongoing, a project cannot go back to the "draft" status and can no longer be deleted. It may only be abandonned or complete.

Fields

name
string
required
Maximum string length: 255
id
integer
Required range: x >= 1
code
string | null

Defaults to an automatically generated value.

Maximum string length: 255
client
object
owner
object

The user assigned as this project lead. Set through the ownerId field.

status
enum<string>
default:draft

Project is only available for time submission when having a "ongoing" status. Status can be updated through the "status-updates" API.

Available options:
draft,
ongoing,
completed,
cancelled,
suspended,
archived
contractType
enum<string>
default:nonBillable

Describes project contract types:

  • Non-billable (internal): no revenue recognized, budget estimates are optional.
  • Fixed price: progress-based revenue recognition, budget estimates are mandatory.
  • Time and Materials: time-based revenue recognition, initial estimates are indicative.
  • Not-to-exceed Time and Materials: time-based revenue recognition with a maximum value, initial estimate sets the maximum value.
Available options:
nonBillable,
fixedPrice,
timeAndMaterials,
cappedTimeAndMaterials
startsOn
null | string<date>

Start of the project execution.

createdAt
string<date-time>

Timestamp of the project creation.

lastModifiedAt
string<date-time>

Timestamp of the last update to the project.

price
Price · object

Price of the project. Equal to the sum of this project's services prices.

authorizedActions
enum<string>[]

Actions the current user can do on the project. Actions the current user can do on the project.

Available options:
canEditAndDelete,
canUpdateStatus
organizationId
integer

Identifier of the organization this project belongs to. Inherited from the client.

Required range: x >= 1
description
null | string
default:""

Optional markdown formatted description.

initialDeliveryDate
null | string<date>

Initially planned delivery date.

revisedDeliveryDate
null | string<date>

Updated planned (or actual) delivery date.

launchedAt
null | string<date-time>

Timestamp of the project launch.

lastChargedOn
null | string<date>

Timestamp of the last time or expense allocated on the project.

standardRateCard
object

Standard rate card version applicable for this project. Used for profit analysis.

initialTimeEstimate
Duration · object

Initial estimate of the work duration needed to complete the project.

Example:
{
"value": 128,
"iso": "P5DT8H",
"unit": "hour"
}
revisedTimeEstimate
Duration · object

Updated estimate of the work duration needed to complete the project. Can be modified through creating a new EstimateToComplete.

Example:
{
"value": 128,
"iso": "P5DT8H",
"unit": "hour"
}
standardRate
PriceRate · object

Standard daily/hourly rate this project should be invoiced at. Equal to (price + discount) / initialTimeEstimate.

billRate
PriceRate · object

Actual daily/hourly rate this project will be invoiced at. Equal to price / initialTimeEstimate.

initialBudget
Price · object

Sum of this project's services initial budgets.

revisedBudget
Price · object

Sum of this project's services revised budgets.

discount
Price · object

Sum of this project's services discounts.

discountRate
null | number
Must be a multiple of 0.1
estimatedOverrun
Price · object

Difference between this project's initial budget and its revised budget. Represents the planned overrun upon completion.

initialRecoveryRate
null | number
estimatedRecoveryRate
null | number
totalInvoiced
Price · object

Sum of all invoices issued for this project.

risks
object[]

List of risks this project is exposed to.

anomalies
object[]

List of anomalies this project is exposed to.

invoicingWarnings
object[]