Timely (Memory AS) · Schema

V1.Project

CompanyTime TrackingAISaaSProductivity

Properties

Name Type Description
can_edit_details boolean
id integer
active boolean
account_id integer
name string
description nullstring
color string hex code
rate_type string
billable boolean
created_at integer
updated_at integer
external_id nullstring
budget_scope nullstring
client object
required_notes boolean
required_labels boolean
budget_expired_on nullstring
has_recurrence boolean
enable_labels string
created_from string
default_labels boolean
allow_only_one_tag boolean Whether only one tag is allowed per time entry
currency object
team_ids array
update_hour_billable_state boolean
budget number
budget_type string
budget_calculation string
hour_rate number
hour_rate_in_cents number
budget_progress number
budget_percent number
invoice_by_budget boolean
users array
labels array
label_ids array
required_label_ids array
default_label_ids array
first_logged_on nullstring The date in ISO 8601 format (YYYY-MM-DD)
last_logged_on nullstring The date in ISO 8601 format (YYYY-MM-DD)
locked_hours boolean Whether the project has locked or billed or invoiced hours
tic object Integration metadata (internal only). Present for synced projects.
cost object V1::Cost schema or empty object
estimated_cost object V1::Cost schema or empty object
billed_cost object V1::Cost schema or empty object
unbilled_cost object V1::Cost schema or empty object
internal_cost object V1::Cost schema or empty object
profit object V1::Cost schema or empty object
duration object
estimated_duration object
billed_duration object
unbilled_duration object
billable_duration object
non_billable_duration object
profitability number
View JSON Schema on GitHub

JSON Schema

timely-v1-project-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/timely/main/json-schema/timely-v1-project-schema.json",
  "title": "V1.Project",
  "x-generated": "2026-10-27",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/timely-openapi.json#/components/schemas/V1.Project",
  "type": "object",
  "properties": {
    "can_edit_details": {
      "type": "boolean"
    },
    "id": {
      "type": "integer"
    },
    "active": {
      "type": "boolean"
    },
    "account_id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": [
        "null",
        "string"
      ]
    },
    "color": {
      "type": "string",
      "description": "hex code",
      "minLength": 3,
      "maxLength": 6,
      "pattern": "^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
    },
    "rate_type": {
      "type": "string",
      "enum": [
        "project",
        "user",
        "non-billable"
      ]
    },
    "billable": {
      "type": "boolean"
    },
    "created_at": {
      "type": "integer"
    },
    "updated_at": {
      "type": "integer"
    },
    "external_id": {
      "type": [
        "null",
        "string"
      ]
    },
    "budget_scope": {
      "type": [
        "null",
        "string"
      ],
      "enum": [
        "tag",
        "project",
        null
      ]
    },
    "client": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "active": {
          "type": "boolean"
        },
        "external_id": {
          "type": [
            "null",
            "string"
          ]
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "color": {
          "type": "string"
        },
        "external_references": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "provider_type": {
                "type": "string"
              },
              "provider_id": {
                "type": "string"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "connection_id": {
                "type": "integer"
              },
              "url": {
                "format": "uri",
                "type": "string"
              }
            },
            "required": [
              "id",
              "provider_type",
              "provider_id",
              "updated_at",
              "connection_id",
              "url"
            ]
          }
        },
        "tic": {
          "type": "object",
          "properties": {
            "uri": {
              "type": "string"
            },
            "tool_id": {
              "type": [
                "null",
                "string"
              ]
            },
            "external_url": {
              "type": [
                "null",
                "string"
              ]
            }
          },
          "required": [
            "uri"
          ]
        }
      },
      "required": [
        "id",
        "name",
        "active",
        "external_id",
        "updated_at",
        "color"
      ]
    },
    "required_notes": {
      "type": "boolean"
    },
    "required_labels": {
      "type": "boolean"
    },
    "budget_expired_on": {
      "type": [
        "null",
        "string"
      ],
      "format": "date-time"
    },
    "has_recurrence": {
      "type": "boolean"
    },
    "enable_labels": {
      "type": "string",
      "enum": [
        "all",
        "none",
        "custom"
      ]
    },
    "created_from": {
      "type": "string"
    },
    "default_labels": {
      "type": "boolean"
    },
    "allow_only_one_tag": {
      "type": "boolean",
      "description": "Whether only one tag is allowed per time entry"
    },
    "currency": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "minLength": 1
        },
        "iso_code": {
          "type": "string"
        },
        "symbol": {
          "type": "string"
        },
        "symbol_first": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "name",
        "iso_code",
        "symbol",
        "symbol_first"
      ]
    },
    "team_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "update_hour_billable_state": {
      "type": "boolean"
    },
    "budget": {
      "type": "number"
    },
    "budget_type": {
      "type": "string",
      "enum": [
        "H",
        "M",
        ""
      ]
    },
    "budget_calculation": {
      "type": "string",
      "enum": [
        "pending",
        "completed"
      ]
    },
    "hour_rate": {
      "type": "number"
    },
    "hour_rate_in_cents": {
      "type": "number"
    },
    "budget_progress": {
      "type": "number"
    },
    "budget_percent": {
      "type": "number"
    },
    "invoice_by_budget": {
      "type": "boolean"
    },
    "users": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "avatar": {
            "type": "object",
            "properties": {
              "large_retina": {
                "type": [
                  "null",
                  "string"
                ]
              },
              "medium_retina": {
                "type": [
                  "null",
                  "string"
                ]
              }
            }
          },
          "user_id": {
            "type": "integer"
          },
          "hour_rate": {
            "type": "number"
          },
          "hour_rate_in_cents": {
            "type": "number"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "deleted": {
            "type": "boolean"
          },
          "internal_hour_rate": {
            "type": "number"
          },
          "internal_hour_rate_in_cents": {
            "type": "number"
          }
        },
        "required": [
          "user_id",
          "hour_rate",
          "hour_rate_in_cents",
          "updated_at",
          "created_at",
          "deleted",
          "internal_hour_rate",
          "internal_hour_rate_in_cents"
        ]
      }
    },
    "labels": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer"
          },
          "label_id": {
            "type": "integer"
          },
          "budget": {
            "type": "number"
          },
          "required": {
            "type": "boolean"
          },
          "default": {
            "type": "boolean"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "project_id",
          "label_id",
          "budget",
          "required",
          "default",
          "updated_at"
        ]
      }
    },
    "label_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "required_label_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "default_label_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "first_logged_on": {
      "type": [
        "null",
        "string"
      ],
      "description": "The date in ISO 8601 format (YYYY-MM-DD)",
      "format": "date",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
    },
    "last_logged_on": {
      "type": [
        "null",
        "string"
      ],
      "description": "The date in ISO 8601 format (YYYY-MM-DD)",
      "format": "date",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
    },
    "locked_hours": {
      "type": "boolean",
      "description": "Whether the project has locked or billed or invoiced hours"
    },
    "tic": {
      "type": "object",
      "description": "Integration metadata (internal only). Present for synced projects.",
      "x-internal": true,
      "properties": {
        "uri": {
          "type": "string",
          "description": "Canonical TIC identifier (e.g., tic://jira/workspace-id/projects/KEY). Immutable once set."
        },
        "tool_id": {
          "type": [
            "null",
            "string"
          ],
          "description": "Original external tool identifier (e.g., jira, trello, asana)."
        },
        "external_url": {
          "type": [
            "null",
            "string"
          ],
          "description": "Direct link to the project in the external tool."
        }
      },
      "required": [
        "uri"
      ]
    },
    "cost": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "fractional": {
              "type": "integer"
            },
            "formatted": {
              "type": "string",
              "minLength": 1
            },
            "amount": {
              "type": "number"
            },
            "currency_code": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "fractional",
            "formatted",
            "amount",
            "currency_code"
          ]
        },
        {
          "type": "object",
          "properties": {}
        }
      ],
      "description": "V1::Cost schema or empty object"
    },
    "estimated_cost": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "fractional": {
              "type": "integer"
            },
            "formatted": {
              "type": "string",
              "minLength": 1
            },
            "amount": {
              "type": "number"
            },
            "currency_code": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "fractional",
            "formatted",
            "amount",
            "currency_code"
          ]
        },
        {
          "type": "object",
          "properties": {}
        }
      ],
      "description": "V1::Cost schema or empty object"
    },
    "billed_cost": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "fractional": {
              "type": "integer"
            },
            "formatted": {
              "type": "string",
              "minLength": 1
            },
            "amount": {
              "type": "number"
            },
            "currency_code": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "fractional",
            "formatted",
            "amount",
            "currency_code"
          ]
        },
        {
          "type": "object",
          "properties": {}
        }
      ],
      "description": "V1::Cost schema or empty object"
    },
    "unbilled_cost": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "fractional": {
              "type": "integer"
            },
            "formatted": {
              "type": "string",
              "minLength": 1
            },
            "amount": {
              "type": "number"
            },
            "currency_code": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "fractional",
            "formatted",
            "amount",
            "currency_code"
          ]
        },
        {
          "type": "object",
          "properties": {}
        }
      ],
      "description": "V1::Cost schema or empty object"
    },
    "internal_cost": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "fractional": {
              "type": "integer"
            },
            "formatted": {
              "type": "string",
              "minLength": 1
            },
            "amount": {
              "type": "number"
            },
            "currency_code": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "fractional",
            "formatted",
            "amount",
            "currency_code"
          ]
        },
        {
          "type": "object",
          "properties": {}
        }
      ],
      "description": "V1::Cost schema or empty object"
    },
    "profit": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "fractional": {
              "type": "integer"
            },
            "formatted": {
              "type": "string",
              "minLength": 1
            },
            "amount": {
              "type": "number"
            },
            "currency_code": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "fractional",
            "formatted",
            "amount",
            "currency_code"
          ]
        },
        {
          "type": "object",
          "properties": {}
        }
      ],
      "description": "V1::Cost schema or empty object"
    },
    "duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer"
        },
        "minutes": {
          "type": "integer"
        },
        "seconds": {
          "type": "integer"
        },
        "formatted": {
          "type": "string",
          "minLength": 1
        },
        "total_hours": {
          "type": "number"
        },
        "total_seconds": {
          "type": "integer"
        },
        "total_minutes": {
          "type": "integer"
        }
      },
      "required": [
        "hours",
        "minutes",
        "seconds",
        "formatted",
        "total_hours",
        "total_seconds",
        "total_minutes"
      ]
    },
    "estimated_duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer"
        },
        "minutes": {
          "type": "integer"
        },
        "seconds": {
          "type": "integer"
        },
        "formatted": {
          "type": "string",
          "minLength": 1
        },
        "total_hours": {
          "type": "number"
        },
        "total_seconds": {
          "type": "integer"
        },
        "total_minutes": {
          "type": "integer"
        }
      },
      "required": [
        "hours",
        "minutes",
        "seconds",
        "formatted",
        "total_hours",
        "total_seconds",
        "total_minutes"
      ]
    },
    "billed_duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer"
        },
        "minutes": {
          "type": "integer"
        },
        "seconds": {
          "type": "integer"
        },
        "formatted": {
          "type": "string",
          "minLength": 1
        },
        "total_hours": {
          "type": "number"
        },
        "total_seconds": {
          "type": "integer"
        },
        "total_minutes": {
          "type": "integer"
        }
      },
      "required": [
        "hours",
        "minutes",
        "seconds",
        "formatted",
        "total_hours",
        "total_seconds",
        "total_minutes"
      ]
    },
    "unbilled_duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer"
        },
        "minutes": {
          "type": "integer"
        },
        "seconds": {
          "type": "integer"
        },
        "formatted": {
          "type": "string",
          "minLength": 1
        },
        "total_hours": {
          "type": "number"
        },
        "total_seconds": {
          "type": "integer"
        },
        "total_minutes": {
          "type": "integer"
        }
      },
      "required": [
        "hours",
        "minutes",
        "seconds",
        "formatted",
        "total_hours",
        "total_seconds",
        "total_minutes"
      ]
    },
    "billable_duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer"
        },
        "minutes": {
          "type": "integer"
        },
        "seconds": {
          "type": "integer"
        },
        "formatted": {
          "type": "string",
          "minLength": 1
        },
        "total_hours": {
          "type": "number"
        },
        "total_seconds": {
          "type": "integer"
        },
        "total_minutes": {
          "type": "integer"
        }
      },
      "required": [
        "hours",
        "minutes",
        "seconds",
        "formatted",
        "total_hours",
        "total_seconds",
        "total_minutes"
      ]
    },
    "non_billable_duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer"
        },
        "minutes": {
          "type": "integer"
        },
        "seconds": {
          "type": "integer"
        },
        "formatted": {
          "type": "string",
          "minLength": 1
        },
        "total_hours": {
          "type": "number"
        },
        "total_seconds": {
          "type": "integer"
        },
        "total_minutes": {
          "type": "integer"
        }
      },
      "required": [
        "hours",
        "minutes",
        "seconds",
        "formatted",
        "total_hours",
        "total_seconds",
        "total_minutes"
      ]
    },
    "profitability": {
      "type": "number"
    }
  },
  "required": [
    "id",
    "active",
    "account_id",
    "name",
    "description",
    "rate_type",
    "billable",
    "created_at",
    "updated_at",
    "budget_scope",
    "client",
    "required_notes",
    "required_labels",
    "budget_expired_on",
    "has_recurrence",
    "enable_labels",
    "created_from",
    "default_labels",
    "allow_only_one_tag",
    "currency"
  ]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/timely-v1-project"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.