---
schema: rendered-html/v1
title: "Project | Developer Portal for YouTrack and Hub Documentation"
source_url: https://www.jetbrains.com/help/youtrack/devportal/v1-Project.html
generated_at: 2026-06-11T15:18:30.509653+00:00
---

Feedback

Thanks for your feedback!

Was this page helpful?

YesNo

Developer Portal for YouTrack and Hub

- Developer Portal
- Apps
- MCP Tools
- YouTrack Workflows
- JavaScript Workflow Quick Start Guide
- Create a Workflow
- Edit a Workflow
- Workflow Rule Types
- Transactions
- Use Cases for Workflows
- Web-based Workflow Editor
- Using an External Code Editor
- Default Workflows
- Custom Workflow Repository
- JavaScript Workflow Reference
- Rule-specific Properties
- Context
- Requirements
- Using the Workflow API
- Building Integrations with Slack
- Using REST API Methods in JavaScript Workflows
- Working with Dates and Times
- Working with Periods
- Localized Workflow Messages
- Troubleshooting Workflows
- Remote Debugger
- YouTrack Workflow API
- Change Log
- date-time
- entities
- AbstractVcsItem
- Agile
- AppGlobalStorage
- Article
- ArticleAttachment
- ArticleComment
- BaseArticle
- BaseArticleAttachment
- BaseArticleComment
- BaseComment
- BaseEntity
- BaseWorkItem
- Build
- BundleElementCondition
- BundleProjectCustomField
- Calendar
- Calendar24x7
- ChangesProcessor
- Channel
- EnumField
- FeedbackForm
- Field
- FieldBasedBundleValuesCondition
- FieldBasedUserValuesCondition
- FieldBasedValuesCondition
- Fields
- Gantt
- GroupProjectCustomField
- Issue
- IssueAttachment
- IssueComment
- IssueLinkPrototype
- IssueTag
- IssueWorkItem
- Iterator
- JsonForArticleAddAttachment
- JsonForArticleAddComment
- JsonForArticleConstructor
- JsonForIssueAddAttachment
- JsonForIssueAddComment
- JsonForIssueAddWorkItem
- JsonForIssueCommentAddAttachment
- JsonForIssueConstructor
- JsonForUserNotify
- MailboxChannel
- OwnedField
- [PeriodProjectCustomField](jetbrains__com__help__youtrack__devportal__v1-periodprojectcustomfield.md)
- [PersistentFile](jetbrains__com__help__youtrack__devportal__v1-persistentfile.md)
- [Project](v1-Project.html)
- [ProjectCustomField](jetbrains__com__help__youtrack__devportal__v1-projectcustomfield.md)
- [ProjectTeam](jetbrains__com__help__youtrack__devportal__v1-projectteam.md)
- [ProjectType](jetbrains__com__help__youtrack__devportal__v1-projecttype.md)
- [ProjectVersion](jetbrains__com__help__youtrack__devportal__v1-projectversion.md)
- [PullRequest](jetbrains__com__help__youtrack__devportal__v1-pullrequest.md)
- [PullRequestState](jetbrains__com__help__youtrack__devportal__v1-pullrequeststate.md)
- [Requirement](jetbrains__com__help__youtrack__devportal__v1-requirement.md)
- [Requirements](jetbrains__com__help__youtrack__devportal__v1-requirements.md)
- SavedQuery
- Set
- SimpleCalendar
- SimpleProjectCustomField
- Sprint
- State
- Tag
- TextProjectCustomField
- User
- UserAttributes
- UserCondition
- UserGroup
- UserProjectCustomField
- UserType
- VcsChange
- VcsServer
- WatchFolder
- WorkItemAttributeValue
- WorkItemAttributes
- WorkItemProjectAttribute
- WorkItemType
- http
- license
- notifications
- search
- strings
- workflow
- YouTrack Import Scripts
- YouTrack Form API
- YouTrack REST API
- Hub REST API

1. YouTrack Workflows
2. JavaScript Workflow Reference
3. YouTrack Workflow API
4. entities
5. [Project](#0)

# Project﻿

Last modified: 14 May 2026

Represents a YouTrack project.

Extends BaseEntity.

## Properties﻿

| Name | Type | Description |
| --- | --- | --- |
| articles | Set.<Article> | Read-only.   A list of all articles that belong to the project.    Available since 2021.4.23500 |
| becomesRemoved | Boolean | Read-only.   When `true`, the entity is removed in the current transaction. Otherwise, `false`. This property can become `true` only in on-change rules when the rule is triggered on the removal of an issue or an article. In the rule code, the `runOn` rule property must contain the `removal` parameter set to `true`.    Available since 2017.4.37915  ``` runOn: {removal: true} ``` |
| changesProcessors | Set.<ChangesProcessor> | Read-only.   The list of VCS change processors that are integrated with the project.    Available since 2020.3 |
| defaultVisibilityGroup | UserGroup | Read-only.   The group that is set automatically as the initial default for the Visible to group in new issues and articles in this project.    Available since 2026.2 |
| description | String | Read-only.   The description of the project as shown on the project profile page. |
| extensionProperties | Object | The object containing extension properties for this entity and their values. Extension properties are custom properties that might be added to core YouTrack entities by an app. For details about extension properties, see <https://www.jetbrains.com/help/youtrack/devportal/apps-extension-properties.html>.    Available since 2024.3  ``` const entities = require('@jetbrains/youtrack-scripting-api/entities');  exports.rule = entities.Issue.action({     command: 'test',     action: function (ctx) {         const printValues = () => {             return 'stringProp:' + ctx.issue.extensionProperties.stringProp + ';'                 + 'integerProp:' + ctx.issue.extensionProperties.integerProp + ';'                 + 'booleanProp:' + ctx.issue.extensionProperties.booleanProp + ';'                 + 'issueProp:' + ctx.issue.extensionProperties.issueProp?.id + ';'                 + 'issuesProp:' + ctx.issue.extensionProperties.issuesProp?.first()?.id + ';'         }         ctx.issue.addComment(printValues());     } }); ``` |
| fields | Set.<ProjectCustomField> | Read-only.   The set of custom fields that are available in the project. |
| isArchived | Boolean | Read-only.   If the project is currently archived, this property is `true`. |
| isNew | Boolean | Read-only.   When `true`, the entity is created in the current transaction. Otherwise, `false`.    Available since 2018.2.42351 |
| isTimeTrackingEnabled | Boolean | Read-only.   If the time tracking feature is enabled in the project, this property is `true`.    Available since 2026.1 |
| issues | Set.<Issue> | Read-only.   A list of all issues that belong to the project. |
| key | String | Read-only.   The ID of the project. Use instead of project.shortName, which is deprecated. |
| leader | User | Read-only.   The user who is set as the project owner. |
| name | String | Read-only.   The name of the project. |
| notificationEmail | String | Read-only.   The email address that is used to send notifications for the project. If a 'From' address is not set for the project, the default 'From' address for the YouTrack server is returned.  ``` if (issue.becomesReported) {   const lastRelatedEmails = issue.fields['Last message related emails'];   lastRelatedEmails?.split(' ')?.forEach(function (email) {     if (email?.equalsIgnoreCase(issue.project.notificationEmail)) {       const allRelatedEmails = issue.fields['All related emails'];       if (!allRelatedEmails) {         issue.fields['All related emails'] = email;       } else if (!(allRelatedEmails.split(' ').has(email))) {         issue.fields['All related emails'] = allRelatedEmails + ' ' + email;       }     }   });   issue.fields['Last message related emails'] = null; } ``` |
| projectType | ProjectType | Read-only.   Determines which basic features are available for use in a project. Possible values are 'standard' or 'helpdesk'. |
| sharedChangesProcessors | Set.<ChangesProcessor> | Read-only.   The list of VCS change processors that are shared with the project.    Available since 2025.3 |
| shortName | String | Read-only. |
| team | UserGroup | Read-only.   The project team. This UserGroup object contains the users and members of groups who are assigned to the project team.    Available since 2017.4.38235 |
| workItemAttributes | Set.<WorkItemProjectAttribute> | Read-only.   Work item attributes configured for the project.    Available since 2024.2 |

## Methods﻿

### findByExtensionProperties﻿

```
static findByExtensionProperties(extensionPropertiesQuery)
```

Searches for Project entities with extension properties that match the specified query.

Available since 2024.3.43260

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| extensionPropertiesQuery | Object | The extension properties query, defined as a set of key-value pairs representing properties and their corresponding values. |

**Return Value**

| Type | Description |
| --- | --- |
| Set.<Project> | The set of Project entities that contain the specified extension properties. |

**Example**

```
{
   property1: "value1",
   property2: "value2"
}
```

### findByKey﻿

```
static findByKey(key)
```

Finds a project by ID.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| key | String | The ID of the project to search for. |

**Return Value**

| Type | Description |
| --- | --- |
| Project | The project, or null when there are no projects with the specified ID. |

### findByName﻿

```
static findByName(name)
```

Finds a project by name.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| name | String | The name of the project to search for. |

**Return Value**

| Type | Description |
| --- | --- |
| Project | The project, or null when there are no projects with the specified name. |

### becomes﻿

```
becomes(fieldName, expected)
```

Checks whether a field is set to an expected value in the current transaction.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field to check. |
| expected | string | The expected value. |

**Return Value**

| Type | Description |
| --- | --- |
| boolean | If the field is set to the expected value, returns `true`. |

### canBeReadBy﻿

```
canBeReadBy(fieldName, user)
```

Checks whether a user has permission to read the field.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field. |
| user | User | The user for whom the permission to read the field is checked. |

**Return Value**

| Type | Description |
| --- | --- |
| boolean | If the user can read the field, returns `true`. |

### canBeWrittenBy﻿

```
canBeWrittenBy(fieldName, user)
```

Checks whether a user has permission to update the field.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field. |
| user | User | The user for whom the permission to update the field is checked. |

**Return Value**

| Type | Description |
| --- | --- |
| boolean | If the user can update the field, returns `true`. |

### findFieldByName﻿

```
findFieldByName(name)
```

Returns the custom field in the project with the specified name.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| name | String | The name of the custom field. |

**Return Value**

| Type | Description |
| --- | --- |
| ProjectCustomField | The custom field with the specified name. |

### findWorkItemAttributeByName﻿

```
findWorkItemAttributeByName(name)
```

Returns work item attribute with the given name or null if it does not exist.

Available since 2024.2

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| name | String | Name of the attribute to find by |

**Return Value**

| Type | Description |
| --- | --- |
| WorkItemProjectAttribute | Work item attribute with the given name or null if it does not exist. |

### intervalToWorkingMinutes﻿

```
intervalToWorkingMinutes(start, end)
```

Gets the number of minutes that occurred during working hours in a specified interval. For example, if the interval is two days and the number of working hours in a day is set to 8, the result is 2 \* 8 \* 60 = 960

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| start | Number | Start of the interval. |
| end | Number | End of the interval. |

**Return Value**

| Type | Description |
| --- | --- |
| Number | The number of minutes that occurred during working hours in the specified interval. |

### is﻿

```
is(fieldName, expected)
```

Checks whether a field is equal to an expected value.

Available since 2019.2.55603

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field to check. |
| expected | string | The expected value. |

**Return Value**

| Type | Description |
| --- | --- |
| boolean | If the field is equal to the expected value, returns `true`. |

### isAgent﻿

```
isAgent(user)
```

Checks if the specified user is an agent in the project.

Available since 2023.1

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| user | User | The user to check. |

**Return Value**

| Type | Description |
| --- | --- |
| Boolean | If the specified user is added to agents in the project, returns 'true'. |

### isChanged﻿

```
isChanged(fieldName)
```

Checks whether the value of a field is changed in the current transaction.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field to check. |

**Return Value**

| Type | Description |
| --- | --- |
| boolean | If the value of the field is changed in the current transaction, returns `true`. |

### newDraft﻿

```
newDraft(reporter)
```

Creates a new issue draft.

Available since 2021.4

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| reporter | User | Issue draft reporter. |

**Return Value**

| Type | Description |
| --- | --- |
| Issue | Newly created issue draft. |

### oldValue﻿

```
oldValue(fieldName)
```

Returns the previous value of a single-value field before an update was applied. If the field is not changed in the transaction, returns null.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field. |

**Return Value**

| Type | Description |
| --- | --- |
| Object | If the field is changed in the current transaction, the previous value of the field. Otherwise, null. |

### required﻿

```
required(fieldName, message)
```

Asserts that a value is set for a field. If a value for the required field is not set, the specified message is displayed in the user interface.

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field to check. |
| message | string | The message that is displayed to the user that describes the field requirement. |

### was﻿

```
was(fieldName, expected)
```

Checks whether a field was equal to an expected value prior to the current transaction.

Available since 2019.2.55603

**Parameters**

| Name | Type | Description |
| --- | --- | --- |
| fieldName | string | The name of the field to check. |
| expected | string | The expected value. |

**Return Value**

| Type | Description |
| --- | --- |
| boolean | If the field was equal to the expected value, returns `true`. |

- [Project](/help/youtrack/devportal/v1-Project.html)
- [Properties](/help/youtrack/devportal/v1-Project.html#properties)
- [Methods](/help/youtrack/devportal/v1-Project.html#methods)
- [findByExtensionProperties](/help/youtrack/devportal/v1-Project.html#findByExtensionProperties)
- [findByKey](/help/youtrack/devportal/v1-Project.html#findByKey)
- [findByName](/help/youtrack/devportal/v1-Project.html#findByName)
- [becomes](/help/youtrack/devportal/v1-Project.html#becomes)
- [canBeReadBy](/help/youtrack/devportal/v1-Project.html#canBeReadBy)
- [canBeWrittenBy](/help/youtrack/devportal/v1-Project.html#canBeWrittenBy)
- [findFieldByName](/help/youtrack/devportal/v1-Project.html#findFieldByName)
- [findWorkItemAttributeByName](/help/youtrack/devportal/v1-Project.html#findWorkItemAttributeByName)
- [intervalToWorkingMinutes](/help/youtrack/devportal/v1-Project.html#intervalToWorkingMinutes)
- [is](/help/youtrack/devportal/v1-Project.html#is)
- [isAgent](/help/youtrack/devportal/v1-Project.html#isAgent)
- [isChanged](/help/youtrack/devportal/v1-Project.html#isChanged)
- [newDraft](/help/youtrack/devportal/v1-Project.html#newDraft)
- [oldValue](/help/youtrack/devportal/v1-Project.html#oldValue)
- [required](/help/youtrack/devportal/v1-Project.html#required)
- [was](/help/youtrack/devportal/v1-Project.html#was)

[PersistentFile](jetbrains__com__help__youtrack__devportal__v1-persistentfile.md)[ProjectCustomField](jetbrains__com__help__youtrack__devportal__v1-projectcustomfield.md)

- Privacy & Security
- Terms Of Use
- Trademarks
- Legal

Copyright © 2000–2026 JetBrains s.r.o.

![](https://bat.bing.com/action/0?ti=5220035&tm=gtm002&Ver=2&mid=675a17f7-1290-4843-8595-74e9fc8bd4b3&bo=4&sid=452929b065a111f19a7fe7356f74a419&vid=aa3122f0648711f1a10d6d095e10fd87&vids=0&msclkid=N&pi=918639831&lg=en-US&sw=1920&sh=1080&sc=24&tl=Project%20%7C%20Developer%20Portal%20for%20YouTrack%20and%20Hub%20Documentation&p=https%3A%2F%2Fwww.jetbrains.com%2Fhelp%2Fyoutrack%2Fdevportal%2Fv1-Project.html&r=&lt=1146&pt=1781191097853,35,35,,,2,2,2,2,2,,3,30,31,40,266,266,266,1144,1146,1146&pn=0,0&evt=pageLoad&sv=2&asc=G&cdb=AQAS&rn=193111)
