<?xml version="1.0" encoding="UTF-8"?>
<dsl-extension kind="projectFeature" type="IssueTracker" generateDslJar="true" applicable="params['type'] == 'BitBucketIssues'">
    <class name="BitbucketIssueTracker">
        <description>
            Project feature enabling integration with Bitbucket issue tracker
        </description>
    </class>
    <init>
        <param name="type" value="BitBucketIssues" />
        <param name="username" value="" />
        <param name="secure:password" value="" />
    </init>
    <function name="bitbucketIssues">
        <description>
            Adds a project features enabling integration with Bitbucket issue tracker
        </description>
    </function>
    <params>
        <param name="name" dslName="displayName" mandatory="true">
            <description>
                Issue tracker integration display name.
            </description>
        </param>

        <param name="repository" dslName="repositoryURL" mandatory="true">
            <description>
                Bitbucket server URL.
            </description>
        </param>

        <param name="authType" type="compound">
            <option name="anonymous" value="anonymous" />
            <option name="usernameAndPassword" value="loginpassword">
                <param name="username" dslName="userName" mandatory="true"/>
                <param name="secure:password" dslName="password" mandatory="true"/>
            </option>
        </param>

        <param name="pattern" dslName="issuesPattern">
            <description>
                Issues ID pattern. Use regex syntax, e.g. '#(\d+)'.
            </description>
        </param>
    </params>
    <examples>
        <example>
            <description>
                It is not recommended to store secure values such as passwords directly in the DSL code,
                see [Managing Tokens](https://www.jetbrains.com/help/teamcity/storing-project-settings-in-version-control.html#Managing+Tokens)
                section of our documentation.
            </description>
            <code>
                bitbucketIssues {
                    id = "&lt;Connection ID>" // arbitrary ID, must be unique in the project
                    displayName = "&lt;Connection display name>"
                    repositoryURL = "&lt;Bitbucket Cloud repository URL>"
                    authType = usernameAndPassword {
                        userName = "&lt;Username>"
                        password = "credentialsJSON:*****"
                    }
                    issuesPattern = "&lt;Issue id pattern>" // optional, assumed #(\d+) if omitted
                }
            </code>
        </example>
    </examples>
</dsl-extension>