# BaseArticle

The base class for article.

Extends [BaseEntity](v1-BaseEntity.html).

Available since 2021.4.23500

## Properties

| Name | Type | Description |
| --- | --- | --- |
| attachments |  [Set](v1-Set.html).<[BaseArticleAttachment](v1-BaseArticleAttachment.html)>  | Read-only.  The set of attachments that are attached to the article.   |
| author |  [User](v1-User.html)  | Read-only.  The user who created the article.   |
| 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      ```JAVASCRIPT runOn: {removal: true} ```    |
| comments |  [Set](v1-Set.html).<[ArticleComment](v1-ArticleComment.html)>  | Read-only.  The set of comments for the article or article draft.   |
| content |  String  |  The text that is entered as the article content.   |
| 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 [Extension Properties](apps-extension-properties.html).             Available since 2024.3      ```JAVASCRIPT 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());     } }); ```    |
| isNew |  Boolean  | Read-only.  When `true`, the entity is created in the current transaction. Otherwise, `false`.             Available since 2018.2.42351    |
| isStarred |  Boolean  | Read-only.  If the current user has added the &apos;Star&apos; to watch the article, this property is `true`.             Available since 2023.1    |
| originalArticle |  [Article](v1-Article.html)  | Read-only.  The article from which the current article draft was created, or `null` if the current article is not a draft.             Available since 2026.1    |
| pinnedComments |  [Set](v1-Set.html).<[ArticleComment](v1-ArticleComment.html)>  | Read-only.  The set of comments that are pinned in the article or draft.             Available since 2024.1    |
| summary |  String  |  The article title.   |
| tags |  [Set](v1-Set.html).<[Tag](v1-Tag.html)>  |  The list of tags that are attached to the article.             Available since 2023.1    |

## Methods

### addTag

```JAVASCRIPT
addTag(name)
```

Adds a tag with the specified name to an article. YouTrack adds the first matching tag that is visible to the current user. If a match is not found, a new private tag is created for the current user.

Available since 2023.1

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | name |  String  |  The name of the tag to add to the article.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  [Tag](v1-Tag.html)  |  The tag that has been added to the article.                 |

Example
: ```JAVASCRIPT
: article.addTag('review');
: ```

### becomes

```JAVASCRIPT
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

```JAVASCRIPT
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](v1-User.html)  |  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

```JAVASCRIPT
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](v1-User.html)  |  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`.                 |

### hasTag

```JAVASCRIPT
hasTag(tagName)
```

Checks whether the specified tag is attached to the article.

Available since 2023.1

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | tagName |  String  |  The name of the tag to check for the article.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  Boolean  |  If the specified tag is attached to the article, returns `true`.                 |

### is

```JAVASCRIPT
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`.                 |

### isChanged

```JAVASCRIPT
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`.                 |

### oldValue

```JAVASCRIPT
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`.                 |

### removeTag

```JAVASCRIPT
removeTag(name)
```

Removes a tag with the specified name from an article. If the specified tag is not attached to the article, nothing happens. This method first searches through tags owned by the current user, then through all other visible tags.

Available since 2023.1

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | name |  String  |  The name of the tag to remove from the article.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  [Tag](v1-Tag.html)  |  The tag that has been removed from the article.                 |

Example
: ```JAVASCRIPT
: article.removeTag('waiting for review');
: ```

### required

```JAVASCRIPT
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

```JAVASCRIPT
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`.                 |

## See also

[BaseEntity](v1-BaseEntity.html) [Set](v1-Set.html) [BaseArticleAttachment](v1-BaseArticleAttachment.html) [User](v1-User.html) [Extension Properties](apps-extension-properties.html) [Article](v1-Article.html)

