Resource
Project template
The reusable definitions that projects — engagements — are created from: a project template fixes a new project's type and the classifications available to it, carries its price and hourly-rate model, and supplies the defaults and per-company rules the project inherits. Read-only through the API: list and fetch.
The endpoint reference below is kept in English in both language trees. It mirrors the API contract verbatim and there is no generator to rebuild it from, so a translated copy would drift from the API the first time an endpoint changes.
Endpoints
Two read-only endpoints, in the order they are documented below.
- GET
/project-template— List project templates (offset-paginated) - GET
/project-template/{templateId}— Get a project template
Every endpoint on this page can additionally answer the shared errors — 401, 403, 404 (unknown instance) and 500. They are documented once, under Errors and troubleshooting.
List project templates (offset-paginated)
GET /{instanceName}/api/v1/{locale}/project-template
Offset/limit paging with a real total, ordered by name. Optional filters: isActive, templateTypeId. RFC 8288 navigation links are in the body.
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
offset |
query | integerdefault 0 |
Zero-based item offset. |
limit |
query | integer |
Maximum items to return per page. |
isActive |
query | boolean |
Filter on active state. |
templateTypeId |
query | string |
Responses
| Status | Description |
|---|---|
| 200 | A page of project templates with totals and navigation links. ProjectTemplateOffsetListResponse · application/json |
| 400 | Invalid paging parameter, or a filter id is not a valid id. |
Example
curl "https://api.visena.example/acme/api/v1/en/project-template?offset=0&limit=20" \
-H "Authorization: Bearer $TOKEN"
Get a project template
GET /{instanceName}/api/v1/{locale}/project-template/{templateId}
Returns the full template. 404 if unknown; 400 if the id cannot be unmasked.
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
templateId required |
path | string |
Masked template id. |
Responses
| Status | Description |
|---|---|
| 200 | The project template. ProjectTemplateDto · application/json |
| 400 | The id is not a valid id. |
| 404 | No project template with that id. |
Example
curl "https://api.visena.example/acme/api/v1/en/project-template/tM2qL6" \
-H "Authorization: Bearer $TOKEN"
Object shapes
The response bodies used above, in the order they are first referenced.
ProjectTemplateOffsetListResponse
| Field | Type | Description |
|---|---|---|
totalItems |
integer |
Total number of matching project templates. |
totalPages |
integer |
Total number of pages at the current page size. |
page |
integer |
Zero-based index of the current page. |
size |
object |
Page size actually applied. |
items |
array of ProjectTemplateListItemDto | The project templates on this page. |
links |
ProjectTemplateListLinks |
ProjectTemplateListItemDto
The project templates on this page.
| Field | Type | Description |
|---|---|---|
id |
string (masked id) |
|
name |
string |
|
description |
string |
Free-text description, if any. |
projectType |
string, one of PROJECT_TYPE_PROJECT PROJECT_TYPE_ASSIGNMENT |
|
templateTypeId |
string (masked id) |
|
templateTypeName |
string |
Template type display name. |
isActive |
boolean |
|
year |
object |
Default project year, if set. |
numProjects |
integer |
Number of projects created from this template. |
isGlobalProjectsAllowed |
boolean |
|
isMultipleActiveProjectsPerYearForCompanyAllowed |
boolean |
ProjectTemplateListLinks
RFC 8288 navigation links.
| Field | Type | Description |
|---|---|---|
self |
string |
URL of the current page. |
first |
string |
URL of the first page. |
prev |
string |
URL of the previous page, if any. |
next |
string |
URL of the next page, if any. |
last |
string |
URL of the last page. |
ProjectTemplateDto
| Field | Type | Description |
|---|---|---|
id |
string (masked id) |
|
name |
string |
|
suggestedName |
string |
Suggested project name pattern, if any. |
description |
string |
Free-text description, if any. |
templateTypeId |
string (masked id) |
|
templateTypeName |
string |
Template type display name. |
projectType |
string, one of PROJECT_TYPE_PROJECT PROJECT_TYPE_ASSIGNMENT |
|
isActive |
boolean |
|
year |
object |
Default project year, if set. |
isGlobalProjectsAllowed |
boolean |
Whether projects without a company (global projects) are allowed. |
isMultipleActiveProjectsPerYearForCompanyAllowed |
boolean |
Whether more than one active project per year per company is allowed. |
isDefaultPublicAccess |
boolean |
Whether projects default to public access. |
priceModel |
string, one of PRICE_MODEL_FIXED_PRICE PRICE_MODEL_HOURLY_RATE |
|
hourlyRateModel |
string, one of HOURLY_RATE_MODEL_FIXED HOURLY_RATE_MODEL_PROJECT_SPECIFIC |
|
isChargable |
boolean |
|
externalReference |
string |