diff --git a/docs/content/docs/reference/components/bitbucket.mdx b/docs/content/docs/reference/components/bitbucket.mdx new file mode 100644 index 0000000000..edc4939824 --- /dev/null +++ b/docs/content/docs/reference/components/bitbucket.mdx @@ -0,0 +1,532 @@ +--- +title: "Bitbucket" +description: "Elevate your software delivery from planning to production and beyond, with built-in AI, CI/CD, and a best-in-class Jira integration." +--- + + +Categories: Project Management + + +Type: bitbucket/v1 + +
+ + + +## Connections + +Version: 1 + + +### API Key Authorization + +#### Properties + +| Name | Label | Type | Description | Required | +|:---------------:|:--------------:|:------------:|:-------------------:|:--------:| +| username | Username | STRING | `Email address of your Bitbucket account.` | true | +| password | API Key | STRING | `API key creation steps in documentation.` | true | + + + + + +
+ + + +## Actions + + +### Create Repository +Name: createRepository + +`Creates a repository in a selected workspace.` + +#### Properties + +| Name | Label | Type | Description | Required | +|:---------------:|:--------------:|:------------:|:-------------------:|:--------:| +| workspace | Workspace | STRING | `Workspace in which repository will be created.` | true | +| repo_slug | Repository Slug | STRING | `Repository slug that is used as identifier for the repository.` | true | +| name | Name | STRING | `The name of the repository.` | true | +| scm | Source Control Management. | STRING
Options git
| `Specifies the version control system that your repository will use.` | true | +| project | Project | OBJECT
Properties {STRING\(key)}
| `Parent project of the repository.` | true | +| is_private | Is Private | BOOLEAN
Options true, false
| `Whether the repository is private or not.` | false | +| description | Description | STRING | `The description of repository.` | false | +| fork_policy | Fork Policy | STRING
Options allow_forks, no_public_forks, no_forks
| `Specifies the fork policy for the repository.` | false | +| language | Language | STRING | `Main programming language of the repository` | false | + +#### Example JSON Structure +```json +{ + "label" : "Create Repository", + "name" : "createRepository", + "parameters" : { + "workspace" : "", + "repo_slug" : "", + "name" : "", + "scm" : "", + "project" : { + "key" : "" + }, + "is_private" : false, + "description" : "", + "fork_policy" : "", + "language" : "" + }, + "type" : "bitbucket/v1/createRepository" +} +``` + +#### Output + + + +Type: OBJECT + + +#### Properties + +| Name | Type | Description | +|:------------:|:------------:|:-------------------:| +| type | STRING | The type of the object (usually "repository"). | +| links | OBJECT
Properties {{STRING\(href), STRING\(name)}\(self), {STRING\(href), STRING\(name)}\(html), {STRING\(href), STRING\(name)}\(avatar), {STRING\(href), STRING\(name)}\(pullrequests), {STRING\(href), STRING\(name)}\(commits), {STRING\(href), STRING\(name)}\(forks), {STRING\(href), STRING\(name)}\(watchers), {STRING\(href), STRING\(name)}\(downloads), [{STRING\(href), STRING\(name)}]\(clone), {STRING\(href), STRING\(name)}\(hooks)}
| A collection of relevant resource links. | +| uuid | STRING | The globally unique identifier for the repository. | +| full_name | STRING | The full name of the repository (workspace/repo_slug). | +| is_private | BOOLEAN
Options true, false
| Indicates whether the repository is private. | +| scm | STRING | The source control system (only "git" is supported). | +| owner | OBJECT
Properties {STRING\(type)}
| The user or team that owns the repository. | +| name | STRING | The display name of the repository. | +| description | STRING | A short description of the repository. | +| created_on | STRING | Timestamp of when the repository was created. | +| updated_on | STRING | Timestamp of the last repository update. | +| size | INTEGER | Total size of the repository in bytes. | +| language | STRING | The primary programming language of the repository. | +| has_issues | BOOLEAN
Options true, false
| Indicates whether the issue tracker is enabled. | +| has_wiki | BOOLEAN
Options true, false
| Indicates whether the wiki is enabled. | +| fork_policy | STRING | Repository fork policy. | +| project | OBJECT
Properties {STRING\(type)}
| Project that the repository belongs to. | +| mainbranch | OBJECT
Properties {STRING\(type)}
| The default branch of the repository. | + + + + +#### Output Example +```json +{ + "type" : "", + "links" : { + "self" : { + "href" : "", + "name" : "" + }, + "html" : { + "href" : "", + "name" : "" + }, + "avatar" : { + "href" : "", + "name" : "" + }, + "pullrequests" : { + "href" : "", + "name" : "" + }, + "commits" : { + "href" : "", + "name" : "" + }, + "forks" : { + "href" : "", + "name" : "" + }, + "watchers" : { + "href" : "", + "name" : "" + }, + "downloads" : { + "href" : "", + "name" : "" + }, + "clone" : [ { + "href" : "", + "name" : "" + } ], + "hooks" : { + "href" : "", + "name" : "" + } + }, + "uuid" : "", + "full_name" : "", + "is_private" : false, + "scm" : "", + "owner" : { + "type" : "" + }, + "name" : "", + "description" : "", + "created_on" : "", + "updated_on" : "", + "size" : 1, + "language" : "", + "has_issues" : false, + "has_wiki" : false, + "fork_policy" : "", + "project" : { + "type" : "" + }, + "mainbranch" : { + "type" : "" + } +} +``` + + +### Create Project +Name: createProject + +`Creates a project in selected workspace.` + +#### Properties + +| Name | Label | Type | Description | Required | +|:---------------:|:--------------:|:------------:|:-------------------:|:--------:| +| workspace | Workspace | STRING | `Workspace where the project will be added.` | true | +| name | Name | STRING | `The name of the project.` | true | +| key | Key | STRING | `Key of the project (eg. AT, for a project named Atlassian). Project keys must start with a letter and may only consist of ASCII letters, numbers and underscores (A-Z, a-z, 0-9, _).` | true | +| description | Description | STRING | `The description of project.` | false | +| is_private | Is Private | BOOLEAN
Options true, false
| `Whether the project is private or not.` | false | + +#### Example JSON Structure +```json +{ + "label" : "Create Project", + "name" : "createProject", + "parameters" : { + "workspace" : "", + "name" : "", + "key" : "", + "description" : "", + "is_private" : false + }, + "type" : "bitbucket/v1/createProject" +} +``` + +#### Output + + + +Type: OBJECT + + +#### Properties + +| Name | Type | Description | +|:------------:|:------------:|:-------------------:| +| metrics | OBJECT
Properties {INTEGER\(org_keywords)}
| | + + + + +#### Output Example +```json +{ + "metrics" : { + "org_keywords" : 1 + } +} +``` + + +### List Projects +Name: listProjects + +`Returns list of projects from workspace.` + +#### Properties + +| Name | Label | Type | Description | Required | +|:---------------:|:--------------:|:------------:|:-------------------:|:--------:| +| workspace | Workspace | STRING | `Workspace from which projects are to be listed.` | true | + +#### Example JSON Structure +```json +{ + "label" : "List Projects", + "name" : "listProjects", + "parameters" : { + "workspace" : "" + }, + "type" : "bitbucket/v1/listProjects" +} +``` + +#### Output + + + +Type: ARRAY + + +Items Type: OBJECT + + +#### Properties +| Name | Type | Description | +|:------------:|:------------:|:-------------------:| +| type | STRING | The type of the object (typically 'project'). | +| links | OBJECT
Properties {{STRING\(href), STRING\(name)}\(html), {STRING\(href), STRING\(name)}\(avatar)}
| Relevant links for the project. | +| uuid | STRING | Globally unique identifier for the project. | +| key | STRING | Unique key identifying the project within the workspace. | +| owner | OBJECT
Properties {STRING\(type)}
| The workspace or user who owns the project. | +| name | STRING | Human-readable name of the project. | +| description | STRING | Description of the project. | +| is_private | BOOLEAN
Options true, false
| Indicates whether the project is private. | +| created_on | DATE_TIME | Timestamp of when the project was created. | +| updated_on | DATE_TIME | Timestamp of the last update to the project. | +| has_publicly_visible_repos | BOOLEAN
Options true, false
| Indicates if the project contains any public repositories. | + + + + + +#### Output Example +```json +[ { + "type" : "", + "links" : { + "html" : { + "href" : "", + "name" : "" + }, + "avatar" : { + "href" : "", + "name" : "" + } + }, + "uuid" : "", + "key" : "", + "owner" : { + "type" : "" + }, + "name" : "", + "description" : "", + "is_private" : false, + "created_on" : "2021-01-01T00:00:00", + "updated_on" : "2021-01-01T00:00:00", + "has_publicly_visible_repos" : false +} ] +``` + + +### List Repositories +Name: listRepositories + +`Returns list of repositories from workspace.` + +#### Properties + +| Name | Label | Type | Description | Required | +|:---------------:|:--------------:|:------------:|:-------------------:|:--------:| +| workspace | Workspace | STRING | `Workspace from which repositories are to be listed.` | true | + +#### Example JSON Structure +```json +{ + "label" : "List Repositories", + "name" : "listRepositories", + "parameters" : { + "workspace" : "" + }, + "type" : "bitbucket/v1/listRepositories" +} +``` + +#### Output + + + +Type: ARRAY + + +Items Type: OBJECT + + +#### Properties +| Name | Type | Description | +|:------------:|:------------:|:-------------------:| +| type | STRING | The type of the object (usually "repository"). | +| links | OBJECT
Properties {{STRING\(href), STRING\(name)}\(self), {STRING\(href), STRING\(name)}\(html), {STRING\(href), STRING\(name)}\(avatar), {STRING\(href), STRING\(name)}\(pullrequests), {STRING\(href), STRING\(name)}\(commits), {STRING\(href), STRING\(name)}\(forks), {STRING\(href), STRING\(name)}\(watchers), {STRING\(href), STRING\(name)}\(downloads), [{STRING\(href), STRING\(name)}]\(clone), {STRING\(href), STRING\(name)}\(hooks)}
| A collection of relevant resource links. | +| uuid | STRING | The globally unique identifier for the repository. | +| full_name | STRING | The full name of the repository (workspace/repo_slug). | +| is_private | BOOLEAN
Options true, false
| Indicates whether the repository is private. | +| scm | STRING | The source control system (only "git" is supported). | +| owner | OBJECT
Properties {STRING\(type)}
| The user or team that owns the repository. | +| name | STRING | The display name of the repository. | +| description | STRING | A short description of the repository. | +| created_on | STRING | Timestamp of when the repository was created. | +| updated_on | STRING | Timestamp of the last repository update. | +| size | INTEGER | Total size of the repository in bytes. | +| language | STRING | The primary programming language of the repository. | +| has_issues | BOOLEAN
Options true, false
| Indicates whether the issue tracker is enabled. | +| has_wiki | BOOLEAN
Options true, false
| Indicates whether the wiki is enabled. | +| fork_policy | STRING | Repository fork policy. | +| project | OBJECT
Properties {STRING\(type)}
| Project that the repository belongs to. | +| mainbranch | OBJECT
Properties {STRING\(type)}
| The default branch of the repository. | + + + + + +#### Output Example +```json +[ { + "type" : "", + "links" : { + "self" : { + "href" : "", + "name" : "" + }, + "html" : { + "href" : "", + "name" : "" + }, + "avatar" : { + "href" : "", + "name" : "" + }, + "pullrequests" : { + "href" : "", + "name" : "" + }, + "commits" : { + "href" : "", + "name" : "" + }, + "forks" : { + "href" : "", + "name" : "" + }, + "watchers" : { + "href" : "", + "name" : "" + }, + "downloads" : { + "href" : "", + "name" : "" + }, + "clone" : [ { + "href" : "", + "name" : "" + } ], + "hooks" : { + "href" : "", + "name" : "" + } + }, + "uuid" : "", + "full_name" : "", + "is_private" : false, + "scm" : "", + "owner" : { + "type" : "" + }, + "name" : "", + "description" : "", + "created_on" : "", + "updated_on" : "", + "size" : 1, + "language" : "", + "has_issues" : false, + "has_wiki" : false, + "fork_policy" : "", + "project" : { + "type" : "" + }, + "mainbranch" : { + "type" : "" + } +} ] +``` + + + + +## Triggers + + +### Repository Push +Name: repositoryPush + +`Triggers whenever a repository push occurs.` + +Type: DYNAMIC_WEBHOOK + +#### Properties + +| Name | Label | Type | Description | Required | +|:---------------:|:--------------:|:------------:|:-------------------:|:--------:| +| workspace | Workspace | STRING | `Workspace where the repository is located.` | true | +| repository | Repository | STRING
Depends On workspace
| `Repository that will be connected to the trigger.` | true | + + +#### Output + +The output for this action is dynamic and may vary depending on the input parameters. To determine the exact structure of the output, you need to execute the action. + +#### JSON Example +```json +{ + "label" : "Repository Push", + "name" : "repositoryPush", + "parameters" : { + "workspace" : "", + "repository" : "" + }, + "type" : "bitbucket/v1/repositoryPush" +} +``` + + +
+ +
+ +# Additional instructions +
+ +## Connection Setup + +### Bitbucket API Token Creation + +1. Go to the [Bitbucket website](https://bitbucket.org). +2. Click **Settings**. +3. Click **Atlassian account settings**. +4. Click **Security**. +5. Click **Create and manage API tokens**. +6. Click **Create API token with scopes**. +7. Enter name of your API token. +8. Choose expiry date of your API token. +9. Click **Next**. +10. Select **Bitbucket**. +11. Click **Next**. +12. Find and select these scopes: + - admin:project:bitbucket + - admin:repository:bitbucket + - read:project:bitbucket + - read:repository:bitbucket + - read:user:bitbucket + - read:webhook:bitbucket + - read:workspace:bitbucket + - write:webhook:bitbucket +13. After you have selected scopes click **Next**. +14. Click **Create token**. +15. Click on **Copy**. Make sure to save your newly created API token because after this step you won’t be able to view it again. +16. Click **Close**. + +
+ +
diff --git a/server/apps/server-app/build.gradle.kts b/server/apps/server-app/build.gradle.kts index 428efb88e1..aea1a19b1a 100644 --- a/server/apps/server-app/build.gradle.kts +++ b/server/apps/server-app/build.gradle.kts @@ -168,6 +168,7 @@ dependencies { implementation(project(":server:libs:modules:components:bash")) implementation(project(":server:libs:modules:components:beamer")) implementation(project(":server:libs:modules:components:binance")) + implementation(project(":server:libs:modules:components:bitbucket")) implementation(project(":server:libs:modules:components:bolna")) implementation(project(":server:libs:modules:components:box")) implementation(project(":server:libs:modules:components:brevo")) diff --git a/server/ee/apps/worker-app/build.gradle.kts b/server/ee/apps/worker-app/build.gradle.kts index 7b9e29443d..231999a9b9 100644 --- a/server/ee/apps/worker-app/build.gradle.kts +++ b/server/ee/apps/worker-app/build.gradle.kts @@ -110,6 +110,7 @@ dependencies { implementation(project(":server:libs:modules:components:bash")) implementation(project(":server:libs:modules:components:beamer")) implementation(project(":server:libs:modules:components:binance")) + implementation(project(":server:libs:modules:components:bitbucket")) implementation(project(":server:libs:modules:components:bolna")) implementation(project(":server:libs:modules:components:box")) implementation(project(":server:libs:modules:components:brevo")) diff --git a/server/libs/modules/components/bitbucket/openapi.yaml b/server/libs/modules/components/bitbucket/openapi.yaml new file mode 100644 index 0000000000..f3b935c4dd --- /dev/null +++ b/server/libs/modules/components/bitbucket/openapi.yaml @@ -0,0 +1,306 @@ +--- +openapi: "3.0.1" +info: + title: "Bitbucket" + description: "Elevate your software delivery from planning to production and beyond, with built-in AI, CI/CD, and a best-in-class Jira integration." + version: "v0" +servers: + - url: "https://api.bitbucket.org/2.0" +paths: + /repositories/{workspace}/{repo_slug}: + post: + summary: "Create Repository" + description: "Creates a repository in a selected workspace." + operationId: "createRepository" + x-ai-agent-tool: true + parameters: + - name: "workspace" + description: "Workspace in which repository will be created." + in: "path" + required: true + schema: + title: "Workspace" + type: "string" + x-dynamic-options: true + - name: "repo_slug" + description: "Repository slug that is used as identifier for the repository." + in: "path" + required: true + schema: + title: "Repository Slug" + type: "string" + requestBody: + required: true + content: + application/json: + schema: + type: "object" + title: "repository" + required: + - "name" + - "project" + - "scm" + properties: + name: + type: "string" + description: "The name of the repository." + title: "Name" + scm: + type: "string" + description: "Specifies the version control system that your repository will use." + title: "Source Control Management." + enum: + - "git" + project: + type: "object" + description: "Parent project of the repository." + title: "Project" + properties: + key: + type: "string" + description: "The key of the parent project." + title: "Key" + x-dynamic-options: true + x-dynamic-options-dependency: + - "workspace" + is_private: + type: "boolean" + description: "Whether the repository is private or not." + title: "Is Private" + description: + type: "string" + description: "The description of repository." + title: "Description" + fork_policy: + type: "string" + description: "Specifies the fork policy for the repository." + title: "Fork Policy" + enum: + - "allow_forks" + - "no_public_forks" + - "no_forks" + language: + type: "string" + description: "Main programming language of the repository" + title: "Language" + responses: + 200: + description: "Successful operation" + content: + application/json: + schema: + $ref: '#/components/schemas/RepositoryObject' + /workspaces/{workspace}/projects: + post: + summary: "Create Project" + description: "Creates a project in selected workspace." + operationId: "createProject" + x-ai-agent-tool: true + parameters: + - name: "workspace" + description: "Workspace where the project will be added." + in: "path" + required: true + schema: + title: "Workspace" + type: "string" + x-dynamic-options: true + requestBody: + required: true + content: + application/json: + schema: + type: "object" + title: "project" + required: + - "name" + - "key" + properties: + name: + type: "string" + description: "The name of the project." + title: "Name" + key: + type: "string" + description: "Key of the project (eg. AT, for a project named Atlassian). Project keys must start with a letter and may only consist of ASCII letters, numbers and underscores (A-Z, a-z, 0-9, _)." + title: "Key" + description: + type: "string" + description: "The description of project." + title: "Description" + is_private: + type: "boolean" + description: "Whether the project is private or not." + title: "Is Private" + responses: + 200: + description: "Successful operation" + content: + application/json: + schema: + type: "object" + properties: + metrics: + type: "object" + properties: + org_keywords: + type: "integer" + description: "The total number of keywords that your target ranks for in the top 100 organic search results." +components: + securitySchemes: + basicAuth: + type: http + scheme: basic + schemas: + RepositoryObject: + type: object + description: "Bitbucket repository object returned from the API." + properties: + type: + type: "string" + description: "The type of the object (usually \"repository\")." + links: + type: "object" + description: "A collection of relevant resource links." + properties: + self: + $ref: '#/components/schemas/LinkObject' + html: + $ref: '#/components/schemas/LinkObject' + avatar: + $ref: '#/components/schemas/LinkObject' + pullrequests: + $ref: '#/components/schemas/LinkObject' + commits: + $ref: '#/components/schemas/LinkObject' + forks: + $ref: '#/components/schemas/LinkObject' + watchers: + $ref: '#/components/schemas/LinkObject' + downloads: + $ref: '#/components/schemas/LinkObject' + clone: + type: "array" + description: "List of clone URLs (HTTPS and/or SSH)." + items: + $ref: '#/components/schemas/LinkObject' + hooks: + $ref: '#/components/schemas/LinkObject' + uuid: + type: "string" + description: "The globally unique identifier for the repository." + full_name: + type: "string" + description: "The full name of the repository (workspace/repo_slug)." + is_private: + type: "boolean" + description: "Indicates whether the repository is private." + scm: + type: "string" + description: "The source control system (only \"git\" is supported)." + owner: + type: "object" + description: "The user or team that owns the repository." + properties: + type: + type: "string" + description: "The type of the owner (usually \"user\" or \"team\")." + name: + type: "string" + description: "The display name of the repository." + description: + type: "string" + description: "A short description of the repository." + created_on: + type: "string" + description: "Timestamp of when the repository was created." + updated_on: + type: "string" + description: "Timestamp of the last repository update." + size: + type: "integer" + description: "Total size of the repository in bytes." + language: + type: "string" + description: "The primary programming language of the repository." + has_issues: + type: "boolean" + description: "Indicates whether the issue tracker is enabled." + has_wiki: + type: "boolean" + description: "Indicates whether the wiki is enabled." + fork_policy: + type: "string" + description: "Repository fork policy." + project: + type: "object" + description: "Project that the repository belongs to." + properties: + type: + type: "string" + description: "Type of the project object." + mainbranch: + type: "object" + description: "The default branch of the repository." + properties: + type: + type: "string" + description: "Type of the branch object." + LinkObject: + type: "object" + description: "A hyperlink reference with optional name." + properties: + href: + type: "string" + description: "The URL of the link." + name: + type: "string" + description: "A human-readable name for the link." + ProjectObject: + type: "object" + description: "Bitbucket project object returned from the API." + properties: + type: + type: "string" + description: "The type of the object (typically 'project')." + links: + type: "object" + description: "Relevant links for the project." + properties: + html: + $ref: "#/components/schemas/LinkObject" + avatar: + $ref: "#/components/schemas/LinkObject" + uuid: + type: "string" + description: "Globally unique identifier for the project." + key: + type: "string" + description: "Unique key identifying the project within the workspace." + owner: + type: "object" + description: "The workspace or user who owns the project." + properties: + type: + type: "string" + description: "Type of the owner (usually 'user' or 'workspace')." + name: + type: "string" + description: "Human-readable name of the project." + description: + type: "string" + description: "Description of the project." + is_private: + type: "boolean" + description: "Indicates whether the project is private." + created_on: + type: "string" + format: "date-time" + description: "Timestamp of when the project was created." + updated_on: + type: "string" + format: "date-time" + description: "Timestamp of the last update to the project." + has_publicly_visible_repos: + type: "boolean" + description: "Indicates if the project contains any public repositories." diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/AbstractBitbucketComponentHandler.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/AbstractBitbucketComponentHandler.java new file mode 100644 index 0000000000..92ac54acad --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/AbstractBitbucketComponentHandler.java @@ -0,0 +1,47 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket; + +import static com.bytechef.component.definition.ComponentDsl.component; + +import com.bytechef.component.OpenApiComponentHandler; +import com.bytechef.component.bitbucket.action.BitbucketCreateProjectAction; +import com.bytechef.component.bitbucket.action.BitbucketCreateRepositoryAction; +import com.bytechef.component.bitbucket.connection.BitbucketConnection; +import com.bytechef.component.definition.ComponentDefinition; + +/** + * Provides the base implementation for the REST based component. + * + * @generated + */ +public abstract class AbstractBitbucketComponentHandler implements OpenApiComponentHandler { + private final ComponentDefinition componentDefinition = modifyComponent( + component("bitbucket") + .title("Bitbucket") + .description( + "Elevate your software delivery from planning to production and beyond, with built-in AI, CI/CD, and a best-in-class Jira integration.")) + .actions(modifyActions(BitbucketCreateRepositoryAction.ACTION_DEFINITION, + BitbucketCreateProjectAction.ACTION_DEFINITION)) + .connection(modifyConnection(BitbucketConnection.CONNECTION_DEFINITION)) + .triggers(getTriggers()); + + @Override + public ComponentDefinition getDefinition() { + return componentDefinition; + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/BitbucketComponentHandler.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/BitbucketComponentHandler.java new file mode 100644 index 0000000000..a8b35b6294 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/BitbucketComponentHandler.java @@ -0,0 +1,92 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket; + +import static com.bytechef.component.definition.Authorization.PASSWORD; +import static com.bytechef.component.definition.Authorization.USERNAME; +import static com.bytechef.component.definition.ComponentDsl.authorization; +import static com.bytechef.component.definition.ComponentDsl.string; +import static com.bytechef.component.definition.ComponentDsl.tool; + +import com.bytechef.component.OpenApiComponentHandler; +import com.bytechef.component.bitbucket.action.BitbucketListProjectsAction; +import com.bytechef.component.bitbucket.action.BitbucketListRepositoriesAction; +import com.bytechef.component.bitbucket.trigger.BitbucketRepositoryPushTrigger; +import com.bytechef.component.definition.Authorization.AuthorizationType; +import com.bytechef.component.definition.ClusterElementDefinition; +import com.bytechef.component.definition.ComponentCategory; +import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition; +import com.bytechef.component.definition.ComponentDsl.ModifiableComponentDefinition; +import com.bytechef.component.definition.ComponentDsl.ModifiableConnectionDefinition; +import com.bytechef.component.definition.ComponentDsl.ModifiableTriggerDefinition; +import com.google.auto.service.AutoService; +import java.util.List; + +/** + * @author Nikolina Spehar + */ +@AutoService(OpenApiComponentHandler.class) +public class BitbucketComponentHandler extends AbstractBitbucketComponentHandler { + + @Override + public List getCustomActions() { + return List.of( + BitbucketListProjectsAction.ACTION_DEFINITION, + BitbucketListRepositoriesAction.ACTION_DEFINITION); + } + + @Override + public List getTriggers() { + return List.of(BitbucketRepositoryPushTrigger.TRIGGER_DEFINITION); + } + + @Override + public List> + modifyClusterElements(ClusterElementDefinition... clusterElementDefinitions) { + return List.of( + tool(BitbucketListProjectsAction.ACTION_DEFINITION), + tool(BitbucketListRepositoriesAction.ACTION_DEFINITION)); + } + + @Override + public ModifiableComponentDefinition modifyComponent(ModifiableComponentDefinition modifiableComponentDefinition) { + return modifiableComponentDefinition + .icon("path:assets/bitbucket.svg") + .categories(ComponentCategory.PROJECT_MANAGEMENT) + .customAction(true); + } + + @Override + public ModifiableConnectionDefinition + modifyConnection(ModifiableConnectionDefinition modifiableConnectionDefinition) { + + return modifiableConnectionDefinition + .baseUri((connectionParameters, context) -> "https://api.bitbucket.org/2.0") + .authorizations( + authorization(AuthorizationType.BASIC_AUTH) + .title("API Key Authorization") + .properties( + string(USERNAME) + .label("Username") + .description("Email address of your Bitbucket account.") + .required(true), + string(PASSWORD) + .label("API Key") + .description("API key creation steps in documentation.") + .required(true))); + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketCreateProjectAction.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketCreateProjectAction.java new file mode 100644 index 0000000000..57a8b39a75 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketCreateProjectAction.java @@ -0,0 +1,94 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.action; + +import static com.bytechef.component.OpenApiComponentHandler.PropertyType; +import static com.bytechef.component.definition.ComponentDsl.action; +import static com.bytechef.component.definition.ComponentDsl.bool; +import static com.bytechef.component.definition.ComponentDsl.integer; +import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.string; +import static com.bytechef.component.definition.Context.Http.BodyContentType; +import static com.bytechef.component.definition.Context.Http.ResponseType; + +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.ComponentDsl; +import com.bytechef.component.definition.OptionsDataSource; +import java.util.Map; + +/** + * Provides a list of the component actions. + * + * @generated + */ +public class BitbucketCreateProjectAction { + public static final ComponentDsl.ModifiableActionDefinition ACTION_DEFINITION = action("createProject") + .title("Create Project") + .description("Creates a project in selected workspace.") + .metadata( + Map.of( + "method", "POST", + "path", "/workspaces/{workspace}/projects", "bodyContentType", BodyContentType.JSON, "mimeType", + "application/json" + + )) + .properties(string("workspace").label("Workspace") + .description("Workspace where the project will be added.") + .required(true) + .options((OptionsDataSource.ActionOptionsFunction) BitbucketUtils::getWorkspaceOptions) + .metadata( + Map.of( + "type", PropertyType.PATH)), + string("name").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Name") + .description("The name of the project.") + .required(true), + string("key").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Key") + .description( + "Key of the project (eg. AT, for a project named Atlassian). Project keys must start with a letter and may only consist of ASCII letters, numbers and underscores (A-Z, a-z, 0-9, _).") + .required(true), + string("description").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Description") + .description("The description of project.") + .required(false), + bool("is_private").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Is Private") + .description("Whether the project is private or not.") + .required(false)) + .output(outputSchema(object() + .properties(object("metrics") + .properties(integer("org_keywords").description( + "The total number of keywords that your target ranks for in the top 100 organic search results.") + .required(false)) + .required(false)) + .metadata( + Map.of( + "responseType", ResponseType.JSON)))); + + private BitbucketCreateProjectAction() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketCreateRepositoryAction.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketCreateRepositoryAction.java new file mode 100644 index 0000000000..3d9831443a --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketCreateRepositoryAction.java @@ -0,0 +1,122 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.action; + +import static com.bytechef.component.OpenApiComponentHandler.PropertyType; +import static com.bytechef.component.definition.ComponentDsl.action; +import static com.bytechef.component.definition.ComponentDsl.bool; +import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.option; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.string; +import static com.bytechef.component.definition.Context.Http.BodyContentType; +import static com.bytechef.component.definition.Context.Http.ResponseType; + +import com.bytechef.component.bitbucket.property.BitbucketRepositoryObjectProperties; +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.ComponentDsl; +import com.bytechef.component.definition.OptionsDataSource; +import java.util.Map; + +/** + * Provides a list of the component actions. + * + * @generated + */ +public class BitbucketCreateRepositoryAction { + public static final ComponentDsl.ModifiableActionDefinition ACTION_DEFINITION = action("createRepository") + .title("Create Repository") + .description("Creates a repository in a selected workspace.") + .metadata( + Map.of( + "method", "POST", + "path", "/repositories/{workspace}/{repo_slug}", "bodyContentType", BodyContentType.JSON, "mimeType", + "application/json" + + )) + .properties(string("workspace").label("Workspace") + .description("Workspace in which repository will be created.") + .required(true) + .options((OptionsDataSource.ActionOptionsFunction) BitbucketUtils::getWorkspaceOptions) + .metadata( + Map.of( + "type", PropertyType.PATH)), + string("repo_slug").label("Repository Slug") + .description("Repository slug that is used as identifier for the repository.") + .required(true) + .metadata( + Map.of( + "type", PropertyType.PATH)), + string("name").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Name") + .description("The name of the repository.") + .required(true), + string("scm").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Source Control Management.") + .description("Specifies the version control system that your repository will use.") + .options(option("Git", "git")) + .required(true), + object("project").properties(string("key").label("Key") + .description("The key of the parent project.") + .required(false) + .options((OptionsDataSource.ActionOptionsFunction) BitbucketUtils::getKeyOptions) + .optionsLookupDependsOn("workspace")) + .metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Project") + .description("Parent project of the repository.") + .required(true), + bool("is_private").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Is Private") + .description("Whether the repository is private or not.") + .required(false), + string("description").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Description") + .description("The description of repository.") + .required(false), + string("fork_policy").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Fork Policy") + .description("Specifies the fork policy for the repository.") + .options(option("Allow_forks", "allow_forks"), option("No_public_forks", "no_public_forks"), + option("No_forks", "no_forks")) + .required(false), + string("language").metadata( + Map.of( + "type", PropertyType.BODY)) + .label("Language") + .description("Main programming language of the repository") + .required(false)) + .output(outputSchema(object().properties(BitbucketRepositoryObjectProperties.PROPERTIES) + .description("Bitbucket repository object returned from the API.") + .metadata( + Map.of( + "responseType", ResponseType.JSON)))); + + private BitbucketCreateRepositoryAction() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketListProjectsAction.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketListProjectsAction.java new file mode 100644 index 0000000000..1bc85fda96 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketListProjectsAction.java @@ -0,0 +1,71 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.action; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static com.bytechef.component.bitbucket.util.BitbucketUtils.getPaginationList; +import static com.bytechef.component.definition.ComponentDsl.action; +import static com.bytechef.component.definition.ComponentDsl.array; +import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.string; + +import com.bytechef.component.bitbucket.property.BitbucketProjectObjectProperties; +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition; +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction; +import com.bytechef.component.definition.Parameters; +import java.util.List; +import java.util.Map; + +/** + * @author Nikolina Spehar + */ +public class BitbucketListProjectsAction { + public static final ModifiableActionDefinition ACTION_DEFINITION = action("listProjects") + .title("List Projects") + .description("Returns list of projects from workspace.") + .properties( + string(WORKSPACE) + .label("Workspace") + .description("Workspace from which projects are to be listed.") + .required(true) + .options((ActionOptionsFunction) BitbucketUtils::getWorkspaceOptions)) + .output( + outputSchema( + array() + .label("Projects") + .description("List of Bitbucket projects returned from the API.") + .items( + object() + .label("Project") + .description("Bitbucket project.") + .properties( + BitbucketProjectObjectProperties.PROPERTIES)))) + .perform(BitbucketListProjectsAction::perform); + + private BitbucketListProjectsAction() { + } + + public static List> perform( + Parameters inputParameters, Parameters connectionParameters, Context context) { + + return getPaginationList( + context, "/workspaces/%s/projects".formatted(inputParameters.getRequiredString(WORKSPACE))); + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketListRepositoriesAction.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketListRepositoriesAction.java new file mode 100644 index 0000000000..40200d4098 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/action/BitbucketListRepositoriesAction.java @@ -0,0 +1,71 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.action; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static com.bytechef.component.bitbucket.util.BitbucketUtils.getPaginationList; +import static com.bytechef.component.definition.ComponentDsl.action; +import static com.bytechef.component.definition.ComponentDsl.array; +import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.string; + +import com.bytechef.component.bitbucket.property.BitbucketRepositoryObjectProperties; +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition; +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction; +import com.bytechef.component.definition.Parameters; +import java.util.List; +import java.util.Map; + +/** + * @author Nikolina Spehar + */ +public class BitbucketListRepositoriesAction { + public static final ModifiableActionDefinition ACTION_DEFINITION = action("listRepositories") + .title("List Repositories") + .description("Returns list of repositories from workspace.") + .properties( + string(WORKSPACE) + .label("Workspace") + .description("Workspace from which repositories are to be listed.") + .required(true) + .options((ActionOptionsFunction) BitbucketUtils::getWorkspaceOptions)) + .output( + outputSchema( + array() + .label("Repositories") + .description("List of Bitbucket repositories returned from the API.") + .items( + object() + .label("Repository") + .description("Bitbucket repository.") + .properties( + BitbucketRepositoryObjectProperties.PROPERTIES)))) + .perform(BitbucketListRepositoriesAction::perform); + + private BitbucketListRepositoriesAction() { + } + + public static List> perform( + Parameters inputParameters, Parameters connectionParameters, Context context) { + + return getPaginationList( + context, "/repositories/%s".formatted(inputParameters.getRequiredString(WORKSPACE))); + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/connection/BitbucketConnection.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/connection/BitbucketConnection.java new file mode 100644 index 0000000000..3685dd0308 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/connection/BitbucketConnection.java @@ -0,0 +1,48 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.connection; + +import static com.bytechef.component.definition.Authorization.AuthorizationType; +import static com.bytechef.component.definition.Authorization.PASSWORD; +import static com.bytechef.component.definition.Authorization.USERNAME; +import static com.bytechef.component.definition.ComponentDsl.authorization; +import static com.bytechef.component.definition.ComponentDsl.connection; +import static com.bytechef.component.definition.ComponentDsl.string; + +import com.bytechef.component.definition.ComponentDsl; + +/** + * Provides the component connection definition. + * + * @generated + */ +public class BitbucketConnection { + public static final ComponentDsl.ModifiableConnectionDefinition CONNECTION_DEFINITION = connection() + .baseUri((connectionParameters, context) -> "https://api.bitbucket.org/2.0") + .authorizations(authorization(AuthorizationType.BASIC_AUTH) + .title("Basic Auth") + .properties( + string(USERNAME) + .label("Username") + .required(true), + string(PASSWORD) + .label("Password") + .required(true))); + + private BitbucketConnection() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/constant/BitbucketConstants.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/constant/BitbucketConstants.java new file mode 100644 index 0000000000..549a7e48e5 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/constant/BitbucketConstants.java @@ -0,0 +1,38 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.constant; + +/** + * @author Nikolina Spehar + */ +public class BitbucketConstants { + + public static final String ACTIVE = "active"; + public static final String EVENTS = "events"; + public static final String ID = "id"; + public static final String KEY = "key"; + public static final String NAME = "name"; + public static final String PAGE = "page"; + public static final String REPOSITORY = "repository"; + public static final String SLUG = "slug"; + public static final String URL = "url"; + public static final String VALUES = "values"; + public static final String WORKSPACE = "workspace"; + + private BitbucketConstants() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketLinkObjectProperties.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketLinkObjectProperties.java new file mode 100644 index 0000000000..6c6d88288c --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketLinkObjectProperties.java @@ -0,0 +1,40 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.property; + +import static com.bytechef.component.definition.ComponentDsl.string; + +import com.bytechef.component.definition.ComponentDsl; +import java.util.List; + +/** + * Provides properties definition built from OpenAPI schema. + * + * @generated + */ +public class BitbucketLinkObjectProperties { + public static final List> PROPERTIES = List.of( + string("href").label("Href") + .description("The URL of the link.") + .required(false), + string("name").label("Name") + .description("A human-readable name for the link.") + .required(false)); + + private BitbucketLinkObjectProperties() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketProjectObjectProperties.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketProjectObjectProperties.java new file mode 100644 index 0000000000..965a76868f --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketProjectObjectProperties.java @@ -0,0 +1,81 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.property; + +import static com.bytechef.component.definition.ComponentDsl.bool; +import static com.bytechef.component.definition.ComponentDsl.dateTime; +import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.string; + +import com.bytechef.component.definition.ComponentDsl; +import java.util.List; + +/** + * Provides properties definition built from OpenAPI schema. + * + * @generated + */ +public class BitbucketProjectObjectProperties { + public static final List> PROPERTIES = List.of( + string("type").label("Type") + .description("The type of the object (typically 'project').") + .required(false), + object("links").properties(object("html").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Html") + .description("A hyperlink reference with optional name.") + .required(false), + object("avatar").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Avatar") + .description("A hyperlink reference with optional name.") + .required(false)) + .label("Links") + .description("Relevant links for the project.") + .required(false), + string("uuid").label("Uuid") + .description("Globally unique identifier for the project.") + .required(false), + string("key").label("Key") + .description("Unique key identifying the project within the workspace.") + .required(false), + object("owner").properties(string("type").label("Type") + .description("Type of the owner (usually 'user' or 'workspace').") + .required(false)) + .label("Owner") + .description("The workspace or user who owns the project.") + .required(false), + string("name").label("Name") + .description("Human-readable name of the project.") + .required(false), + string("description").label("Description") + .description("Description of the project.") + .required(false), + bool("is_private").label("Is Private") + .description("Indicates whether the project is private.") + .required(false), + dateTime("created_on").label("Created On") + .description("Timestamp of when the project was created.") + .required(false), + dateTime("updated_on").label("Updated On") + .description("Timestamp of the last update to the project.") + .required(false), + bool("has_publicly_visible_repos").label("Has Publicly Visible Repos") + .description("Indicates if the project contains any public repositories.") + .required(false)); + + private BitbucketProjectObjectProperties() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketRepositoryObjectProperties.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketRepositoryObjectProperties.java new file mode 100644 index 0000000000..c00f8dc3e6 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/property/BitbucketRepositoryObjectProperties.java @@ -0,0 +1,143 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.property; + +import static com.bytechef.component.definition.ComponentDsl.array; +import static com.bytechef.component.definition.ComponentDsl.bool; +import static com.bytechef.component.definition.ComponentDsl.integer; +import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.string; + +import com.bytechef.component.definition.ComponentDsl; +import java.util.List; + +/** + * Provides properties definition built from OpenAPI schema. + * + * @generated + */ +public class BitbucketRepositoryObjectProperties { + public static final List> PROPERTIES = List.of( + string("type").label("Type") + .description("The type of the object (usually \"repository\").") + .required(false), + object("links").properties(object("self").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Self") + .description("A hyperlink reference with optional name.") + .required(false), + object("html").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Html") + .description("A hyperlink reference with optional name.") + .required(false), + object("avatar").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Avatar") + .description("A hyperlink reference with optional name.") + .required(false), + object("pullrequests").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Pullrequests") + .description("A hyperlink reference with optional name.") + .required(false), + object("commits").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Commits") + .description("A hyperlink reference with optional name.") + .required(false), + object("forks").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Forks") + .description("A hyperlink reference with optional name.") + .required(false), + object("watchers").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Watchers") + .description("A hyperlink reference with optional name.") + .required(false), + object("downloads").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Downloads") + .description("A hyperlink reference with optional name.") + .required(false), + array("clone").items(object().properties(BitbucketLinkObjectProperties.PROPERTIES) + .description("A hyperlink reference with optional name.")) + .placeholder("Add to Clone") + .label("Clone") + .description("List of clone URLs (HTTPS and/or SSH).") + .required(false), + object("hooks").properties(BitbucketLinkObjectProperties.PROPERTIES) + .label("Hooks") + .description("A hyperlink reference with optional name.") + .required(false)) + .label("Links") + .description("A collection of relevant resource links.") + .required(false), + string("uuid").label("Uuid") + .description("The globally unique identifier for the repository.") + .required(false), + string("full_name").label("Full Name") + .description("The full name of the repository (workspace/repo_slug).") + .required(false), + bool("is_private").label("Is Private") + .description("Indicates whether the repository is private.") + .required(false), + string("scm").label("Scm") + .description("The source control system (only \"git\" is supported).") + .required(false), + object("owner").properties(string("type").label("Type") + .description("The type of the owner (usually \"user\" or \"team\").") + .required(false)) + .label("Owner") + .description("The user or team that owns the repository.") + .required(false), + string("name").label("Name") + .description("The display name of the repository.") + .required(false), + string("description").label("Description") + .description("A short description of the repository.") + .required(false), + string("created_on").label("Created On") + .description("Timestamp of when the repository was created.") + .required(false), + string("updated_on").label("Updated On") + .description("Timestamp of the last repository update.") + .required(false), + integer("size").label("Size") + .description("Total size of the repository in bytes.") + .required(false), + string("language").label("Language") + .description("The primary programming language of the repository.") + .required(false), + bool("has_issues").label("Has Issues") + .description("Indicates whether the issue tracker is enabled.") + .required(false), + bool("has_wiki").label("Has Wiki") + .description("Indicates whether the wiki is enabled.") + .required(false), + string("fork_policy").label("Fork Policy") + .description("Repository fork policy.") + .required(false), + object("project").properties(string("type").label("Type") + .description("Type of the project object.") + .required(false)) + .label("Project") + .description("Project that the repository belongs to.") + .required(false), + object("mainbranch").properties(string("type").label("Type") + .description("Type of the branch object.") + .required(false)) + .label("Mainbranch") + .description("The default branch of the repository.") + .required(false)); + + private BitbucketRepositoryObjectProperties() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/trigger/BitbucketRepositoryPushTrigger.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/trigger/BitbucketRepositoryPushTrigger.java new file mode 100644 index 0000000000..8cb3255a63 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/trigger/BitbucketRepositoryPushTrigger.java @@ -0,0 +1,111 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.trigger; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.ACTIVE; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.EVENTS; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.ID; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.REPOSITORY; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.URL; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static com.bytechef.component.definition.ComponentDsl.string; +import static com.bytechef.component.definition.ComponentDsl.trigger; + +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.ComponentDsl.ModifiableTriggerDefinition; +import com.bytechef.component.definition.Context.Http; +import com.bytechef.component.definition.OptionsDataSource.TriggerOptionsFunction; +import com.bytechef.component.definition.Parameters; +import com.bytechef.component.definition.TriggerContext; +import com.bytechef.component.definition.TriggerDefinition.HttpHeaders; +import com.bytechef.component.definition.TriggerDefinition.HttpParameters; +import com.bytechef.component.definition.TriggerDefinition.TriggerType; +import com.bytechef.component.definition.TriggerDefinition.WebhookBody; +import com.bytechef.component.definition.TriggerDefinition.WebhookEnableOutput; +import com.bytechef.component.definition.TriggerDefinition.WebhookMethod; +import com.bytechef.component.definition.TypeReference; +import java.util.List; +import java.util.Map; + +/** + * @author Nikolina Spehar + */ +public class BitbucketRepositoryPushTrigger { + public static final ModifiableTriggerDefinition TRIGGER_DEFINITION = trigger("repositoryPush") + .title("Repository Push") + .description("Triggers whenever a repository push occurs.") + .type(TriggerType.DYNAMIC_WEBHOOK) + .properties( + string(WORKSPACE) + .label("Workspace") + .description("Workspace where the repository is located.") + .required(true) + .options((TriggerOptionsFunction) BitbucketUtils::getWorkspaceOptions), + string(REPOSITORY) + .label("Repository") + .description("Repository that will be connected to the trigger.") + .required(true) + .options((TriggerOptionsFunction) BitbucketUtils::getRepositoryOptions) + .optionsLookupDependsOn(WORKSPACE)) + .output() + .webhookEnable(BitbucketRepositoryPushTrigger::webhookEnable) + .webhookDisable(BitbucketRepositoryPushTrigger::webhookDisable) + .webhookRequest(BitbucketRepositoryPushTrigger::webhookRequest); + + private BitbucketRepositoryPushTrigger() { + } + + protected static void webhookDisable( + Parameters inputParameters, Parameters connectionParameters, Parameters outputParameters, + String workflowExecutionId, TriggerContext context) { + + context.http( + http -> http.delete("/repositories/%s/%s/hooks/%s".formatted( + inputParameters.getRequiredString(WORKSPACE), + inputParameters.getRequiredString(REPOSITORY), + outputParameters.get(ID)))) + .execute(); + } + + protected static WebhookEnableOutput webhookEnable( + Parameters inputParameters, Parameters connectionParameters, String webhookUrl, + String workflowExecutionId, TriggerContext context) { + + Map body = context.http(http -> http.post("/repositories/%s/%s/hooks".formatted( + inputParameters.getRequiredString(WORKSPACE), + inputParameters.getRequiredString(REPOSITORY)))) + .body( + Http.Body.of( + URL, webhookUrl, + ACTIVE, true, + EVENTS, List.of("repo:push"))) + .configuration(Http.responseType(Http.ResponseType.JSON)) + .execute() + .getBody(new TypeReference<>() {}); + + String webhookId = (String) body.get("uuid"); + + return new WebhookEnableOutput(Map.of(ID, webhookId), null); + } + + protected static Map webhookRequest( + Parameters inputParameters, Parameters connectionParameters, HttpHeaders headers, HttpParameters parameters, + WebhookBody body, WebhookMethod method, WebhookEnableOutput output, TriggerContext context) { + + return body.getContent(new TypeReference<>() {}); + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/util/AbstractBitbucketUtils.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/util/AbstractBitbucketUtils.java new file mode 100644 index 0000000000..77e58ebe53 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/util/AbstractBitbucketUtils.java @@ -0,0 +1,46 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.util; + +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.Option; +import com.bytechef.component.definition.Parameters; +import java.util.List; +import java.util.Map; + +/** + * Provides methods for retrieving dynamic options and properties for various properties within the component. + * + * @generated + */ +public abstract class AbstractBitbucketUtils { + public static List> getKeyOptions( + Parameters inputParameters, + Parameters connectionParameters, Map lookupDependsOnPaths, String searchText, + Context context) { + + return List.of(); + } + + public static List> getWorkspaceOptions( + Parameters inputParameters, + Parameters connectionParameters, Map lookupDependsOnPaths, String searchText, + Context context) { + + return List.of(); + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/util/BitbucketUtils.java b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/util/BitbucketUtils.java new file mode 100644 index 0000000000..42b733bc1c --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/java/com/bytechef/component/bitbucket/util/BitbucketUtils.java @@ -0,0 +1,121 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.util; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.KEY; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.NAME; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.PAGE; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.SLUG; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.VALUES; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static com.bytechef.component.definition.ComponentDsl.option; +import static com.bytechef.component.definition.Context.Http.responseType; + +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.Context.Http.ResponseType; +import com.bytechef.component.definition.Option; +import com.bytechef.component.definition.Parameters; +import com.bytechef.component.definition.TypeReference; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author Nikolina Spehar + */ +public class BitbucketUtils extends AbstractBitbucketUtils { + + public static List> getPaginationList(Context context, String url) { + List> list = new ArrayList<>(); + + Map response; + + do { + int page = 0; + + response = context.http(http -> http.get(url)) + .queryParameter(PAGE, String.valueOf(++page)) + .configuration(responseType(ResponseType.JSON)) + .execute() + .getBody(new TypeReference<>() {}); + + if (response.get(VALUES) instanceof List values) { + for (Object value : values) { + if (value instanceof Map valueMap) + list.add((Map) valueMap); + } + } + + } while (response.get("next") != null); + + return list; + } + + private static List> getPaginationValues( + Context context, String startUrl, String optionLabel, String optionValue) { + + List> options = new ArrayList<>(); + + Map response; + + do { + int page = 0; + + response = context.http(http -> http.get(startUrl)) + .queryParameter(PAGE, String.valueOf(++page)) + .configuration(responseType(ResponseType.JSON)) + .execute() + .getBody(new TypeReference<>() {}); + + if (response.get(VALUES) instanceof List values) { + for (Object value : values) { + if (value instanceof Map valueMap) + options.add(option((String) valueMap.get(optionLabel), (String) valueMap.get(optionValue))); + } + } + + } while (response.get("next") != null); + + return options; + } + + public static List> getRepositoryOptions( + Parameters inputParameters, Parameters connectionParameters, Map lookupDependsOnPaths, + String searchText, Context context) { + + return getPaginationValues( + context, "/repositories/%s".formatted(inputParameters.getRequiredString(WORKSPACE)), NAME, SLUG); + } + + public static List> getKeyOptions( + Parameters inputParameters, Parameters connectionParameters, Map lookupDependsOnPaths, + String searchText, Context context) { + + return getPaginationValues( + context, "/workspaces/%s/projects".formatted(inputParameters.getRequiredString(WORKSPACE)), NAME, KEY); + } + + public static List> getWorkspaceOptions( + Parameters inputParameters, Parameters connectionParameters, Map lookupDependsOnPaths, + String searchText, Context context) { + + return getPaginationValues(context, "/workspaces", NAME, NAME); + } + + private BitbucketUtils() { + } +} diff --git a/server/libs/modules/components/bitbucket/src/main/resources/README.mdx b/server/libs/modules/components/bitbucket/src/main/resources/README.mdx new file mode 100644 index 0000000000..6484014817 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/resources/README.mdx @@ -0,0 +1,32 @@ +## Connection Setup + +### Bitbucket API Token Creation + +1. Go to the [Bitbucket website](https://bitbucket.org). +2. Click **Settings**. +3. Click **Atlassian account settings**. +4. Click **Security**. +5. Click **Create and manage API tokens**. +6. Click **Create API token with scopes**. +7. Enter name of your API token. +8. Choose expiry date of your API token. +9. Click **Next**. +10. Select **Bitbucket**. +11. Click **Next**. +12. Find and select these scopes: + - admin:project:bitbucket + - admin:repository:bitbucket + - read:project:bitbucket + - read:repository:bitbucket + - read:user:bitbucket + - read:webhook:bitbucket + - read:workspace:bitbucket + - write:webhook:bitbucket +13. After you have selected scopes click **Next**. +14. Click **Create token**. +15. Click on **Copy**. Make sure to save your newly created API token because after this step you won’t be able to view it again. +16. Click **Close**. + +
+ +
diff --git a/server/libs/modules/components/bitbucket/src/main/resources/assets/bitbucket.svg b/server/libs/modules/components/bitbucket/src/main/resources/assets/bitbucket.svg new file mode 100644 index 0000000000..f7773c5d08 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/main/resources/assets/bitbucket.svg @@ -0,0 +1,3 @@ + + + diff --git a/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/AbstractBitbucketComponentHandlerTest.java b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/AbstractBitbucketComponentHandlerTest.java new file mode 100644 index 0000000000..7aec39753f --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/AbstractBitbucketComponentHandlerTest.java @@ -0,0 +1,32 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket; + +import com.bytechef.test.jsonasssert.JsonFileAssert; +import org.junit.jupiter.api.Test; + +/** + * Provides the base test implementation for the REST based component. + * + * @generated + */ +public abstract class AbstractBitbucketComponentHandlerTest { + @Test + public void testGetDefinition() { + JsonFileAssert.assertEquals("definition/bitbucket_v1.json", new BitbucketComponentHandler().getDefinition()); + } +} diff --git a/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/BitbucketComponentHandlerTest.java b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/BitbucketComponentHandlerTest.java new file mode 100644 index 0000000000..c0b969394f --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/BitbucketComponentHandlerTest.java @@ -0,0 +1,23 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket; + +/** + * @generated + */ +public class BitbucketComponentHandlerTest extends AbstractBitbucketComponentHandlerTest { +} diff --git a/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/action/BitbucketListProjectsActionTest.java b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/action/BitbucketListProjectsActionTest.java new file mode 100644 index 0000000000..14478c05c5 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/action/BitbucketListProjectsActionTest.java @@ -0,0 +1,61 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.action; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; + +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.Parameters; +import com.bytechef.component.test.definition.MockParametersFactory; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.MockedStatic; +import org.mockito.Mockito; + +/** + * @author Nikolina Spehar + */ +class BitbucketListProjectsActionTest { + private final ArgumentCaptor contextArgumentCaptor = ArgumentCaptor.forClass(Context.class); + private final Context mockedContext = mock(Context.class); + private final Parameters mockedParameters = MockParametersFactory.create(Map.of(WORKSPACE, "workspace")); + private final List> responseList = List.of(Map.of()); + private final ArgumentCaptor stringArgumentCaptor = ArgumentCaptor.forClass(String.class); + + @Test + void testPerform() { + try (MockedStatic mockedBitbucketUtils = Mockito.mockStatic(BitbucketUtils.class)) { + mockedBitbucketUtils.when( + () -> BitbucketUtils.getPaginationList( + contextArgumentCaptor.capture(), stringArgumentCaptor.capture())) + .thenReturn(responseList); + + List> result = BitbucketListProjectsAction.perform( + mockedParameters, mockedParameters, mockedContext); + + assertEquals(responseList, result); + + assertEquals(mockedContext, contextArgumentCaptor.getValue()); + assertEquals("/workspaces/workspace/projects", stringArgumentCaptor.getValue()); + } + } +} diff --git a/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/action/BitbucketListRepositoriesActionTest.java b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/action/BitbucketListRepositoriesActionTest.java new file mode 100644 index 0000000000..4cef3a8d29 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/action/BitbucketListRepositoriesActionTest.java @@ -0,0 +1,61 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.action; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; + +import com.bytechef.component.bitbucket.util.BitbucketUtils; +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.Parameters; +import com.bytechef.component.test.definition.MockParametersFactory; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.MockedStatic; +import org.mockito.Mockito; + +/** + * @author Nikolina Spehar + */ +class BitbucketListRepositoriesActionTest { + private final ArgumentCaptor contextArgumentCaptor = ArgumentCaptor.forClass(Context.class); + private final Context mockedContext = mock(Context.class); + private final Parameters mockedParameters = MockParametersFactory.create(Map.of(WORKSPACE, "workspace")); + private final List> responseList = List.of(Map.of()); + private final ArgumentCaptor stringArgumentCaptor = ArgumentCaptor.forClass(String.class); + + @Test + void testPerform() { + try (MockedStatic mockedBitbucketUtils = Mockito.mockStatic(BitbucketUtils.class)) { + mockedBitbucketUtils.when( + () -> BitbucketUtils.getPaginationList( + contextArgumentCaptor.capture(), stringArgumentCaptor.capture())) + .thenReturn(responseList); + + List> result = BitbucketListRepositoriesAction.perform( + mockedParameters, mockedParameters, mockedContext); + + assertEquals(responseList, result); + + assertEquals(mockedContext, contextArgumentCaptor.getValue()); + assertEquals("/repositories/workspace", stringArgumentCaptor.getValue()); + } + } +} diff --git a/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/trigger/BitbucketRepositoryPushTriggerTest.java b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/trigger/BitbucketRepositoryPushTriggerTest.java new file mode 100644 index 0000000000..b4ecef1ed7 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/trigger/BitbucketRepositoryPushTriggerTest.java @@ -0,0 +1,125 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.trigger; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.ACTIVE; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.EVENTS; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.ID; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.REPOSITORY; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.URL; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.bytechef.component.definition.Context.Http.Body; +import com.bytechef.component.definition.Context.Http.Executor; +import com.bytechef.component.definition.Context.Http.Response; +import com.bytechef.component.definition.Parameters; +import com.bytechef.component.definition.TriggerContext; +import com.bytechef.component.definition.TriggerDefinition.HttpHeaders; +import com.bytechef.component.definition.TriggerDefinition.HttpParameters; +import com.bytechef.component.definition.TriggerDefinition.WebhookBody; +import com.bytechef.component.definition.TriggerDefinition.WebhookEnableOutput; +import com.bytechef.component.definition.TriggerDefinition.WebhookMethod; +import com.bytechef.component.definition.TypeReference; +import com.bytechef.component.test.definition.MockParametersFactory; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; + +/** + * @author Nikolina Spehar + */ +class BitbucketRepositoryPushTriggerTest { + private final ArgumentCaptor bodyArgumentCaptor = ArgumentCaptor.forClass(Body.class); + private final Executor mockedExecutor = mock(Executor.class); + private final HttpHeaders mockedHttpHeaders = mock(HttpHeaders.class); + private final HttpParameters mockedHttpParameters = mock(HttpParameters.class); + private final Map mockedMap = Map.of(); + private final Parameters mockedParameters = MockParametersFactory.create( + Map.of(WORKSPACE, "workspace", REPOSITORY, "repository", ID, "id")); + private final Response mockedResponse = mock(Response.class); + private final TriggerContext mockedTriggerContext = mock(TriggerContext.class); + private final WebhookBody mockedWebhookBody = mock(WebhookBody.class); + private final WebhookEnableOutput mockedWebhookEnableOutput = mock(WebhookEnableOutput.class); + private final WebhookMethod mockedWebhookMethod = mock(WebhookMethod.class); + + @Test + void testWebhookDisable() { + when(mockedTriggerContext.http(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.configuration(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.execute()) + .thenReturn(mockedResponse); + + BitbucketRepositoryPushTrigger.webhookDisable( + mockedParameters, mockedParameters, mockedParameters, "testWorkflowExecutionId", + mockedTriggerContext); + + verify(mockedTriggerContext, times(1)).http(any()); + verify(mockedExecutor, times(1)).execute(); + } + + @Test + void testWebhookEnable() { + when(mockedTriggerContext.http(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.body(bodyArgumentCaptor.capture())) + .thenReturn(mockedExecutor); + when(mockedExecutor.configuration(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.execute()) + .thenReturn(mockedResponse); + when(mockedResponse.getBody(any(TypeReference.class))) + .thenReturn(Map.of("uuid", "id")); + + String webhookUrl = "testWebhookUrl"; + WebhookEnableOutput webhookEnableOutput = BitbucketRepositoryPushTrigger.webhookEnable( + mockedParameters, mockedParameters, webhookUrl, "testWorkflowExecutionId", mockedTriggerContext); + + WebhookEnableOutput expectedWebhookEnableOutput = new WebhookEnableOutput(Map.of(ID, "id"), null); + + assertEquals(expectedWebhookEnableOutput, webhookEnableOutput); + + Body body = bodyArgumentCaptor.getValue(); + + Map expectedBody = Map.of( + URL, webhookUrl, + ACTIVE, true, + EVENTS, List.of("repo:push")); + + assertEquals(expectedBody, body.getContent()); + } + + @Test + void testWebhookRequest() { + when(mockedWebhookBody.getContent(any(TypeReference.class))) + .thenReturn(mockedMap); + + Object result = BitbucketRepositoryPushTrigger.webhookRequest( + mockedParameters, mockedParameters, mockedHttpHeaders, mockedHttpParameters, mockedWebhookBody, + mockedWebhookMethod, mockedWebhookEnableOutput, mockedTriggerContext); + + assertEquals(Map.of(), result); + } +} diff --git a/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/util/BitbucketUtilsTest.java b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/util/BitbucketUtilsTest.java new file mode 100644 index 0000000000..5dd13b7676 --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/java/com/bytechef/component/bitbucket/util/BitbucketUtilsTest.java @@ -0,0 +1,151 @@ +/* + * Copyright 2025 ByteChef + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytechef.component.bitbucket.util; + +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.KEY; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.NAME; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.PAGE; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.SLUG; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.VALUES; +import static com.bytechef.component.bitbucket.constant.BitbucketConstants.WORKSPACE; +import static com.bytechef.component.definition.ComponentDsl.option; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.bytechef.component.definition.Context; +import com.bytechef.component.definition.Context.Http.Executor; +import com.bytechef.component.definition.Context.Http.Response; +import com.bytechef.component.definition.Option; +import com.bytechef.component.definition.Parameters; +import com.bytechef.component.definition.TypeReference; +import com.bytechef.component.test.definition.MockParametersFactory; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; + +/** + * @author Nikolina Spehar + */ +class BitbucketUtilsTest { + private final Context mockedContext = mock(Context.class); + private final Executor mockedExecutor = mock(Executor.class); + private final Parameters mockedParameters = MockParametersFactory.create(Map.of(WORKSPACE, "workspace")); + private final Response mockedResponse = mock(Response.class); + private final Map responseMap = Map.of(VALUES, List.of( + Map.of(NAME, "name1", KEY, "key1", SLUG, "slug1"), + Map.of(NAME, "name2", KEY, "key2", SLUG, "slug2"))); + private final ArgumentCaptor stringArgumentCaptor = ArgumentCaptor.forClass(String.class); + + @Test + void testGetPaginationList() { + when(mockedContext.http(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.queryParameter(stringArgumentCaptor.capture(), stringArgumentCaptor.capture())) + .thenReturn(mockedExecutor); + when(mockedExecutor.configuration(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.execute()) + .thenReturn(mockedResponse); + when(mockedResponse.getBody(any(TypeReference.class))) + .thenReturn(responseMap); + + String mockedUrl = "mockedUrl"; + List> result = BitbucketUtils.getPaginationList(mockedContext, mockedUrl); + + assertEquals(responseMap.get(VALUES), result); + + assertEquals(List.of(PAGE, "1"), stringArgumentCaptor.getAllValues()); + } + + @Test + void testGetRepositoryOptions() { + when(mockedContext.http(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.queryParameter(stringArgumentCaptor.capture(), stringArgumentCaptor.capture())) + .thenReturn(mockedExecutor); + when(mockedExecutor.configuration(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.execute()) + .thenReturn(mockedResponse); + when(mockedResponse.getBody(any(TypeReference.class))) + .thenReturn(responseMap); + + List> options = BitbucketUtils.getRepositoryOptions( + mockedParameters, mockedParameters, Map.of(), "", mockedContext); + + List> expectedOptions = List.of( + option("name1", "slug1"), + option("name2", "slug2")); + + assertEquals(expectedOptions, options); + + assertEquals(List.of(PAGE, "1"), stringArgumentCaptor.getAllValues()); + } + + @Test + void testGetKeyOptions() { + when(mockedContext.http(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.queryParameter(stringArgumentCaptor.capture(), stringArgumentCaptor.capture())) + .thenReturn(mockedExecutor); + when(mockedExecutor.configuration(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.execute()) + .thenReturn(mockedResponse); + when(mockedResponse.getBody(any(TypeReference.class))) + .thenReturn(responseMap); + + List> options = BitbucketUtils.getKeyOptions( + mockedParameters, mockedParameters, Map.of(), "", mockedContext); + + List> expectedOptions = List.of( + option("name1", "key1"), + option("name2", "key2")); + + assertEquals(expectedOptions, options); + + assertEquals(List.of(PAGE, "1"), stringArgumentCaptor.getAllValues()); + } + + @Test + void testGetWorkspaceOptions() { + when(mockedContext.http(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.queryParameter(stringArgumentCaptor.capture(), stringArgumentCaptor.capture())) + .thenReturn(mockedExecutor); + when(mockedExecutor.configuration(any())) + .thenReturn(mockedExecutor); + when(mockedExecutor.execute()) + .thenReturn(mockedResponse); + when(mockedResponse.getBody(any(TypeReference.class))) + .thenReturn(responseMap); + + List> options = BitbucketUtils.getWorkspaceOptions( + mockedParameters, mockedParameters, Map.of(), "", mockedContext); + + List> expectedOptions = List.of( + option("name1", "name1"), + option("name2", "name2")); + + assertEquals(expectedOptions, options); + + assertEquals(List.of(PAGE, "1"), stringArgumentCaptor.getAllValues()); + } +} diff --git a/server/libs/modules/components/bitbucket/src/test/resources/definition/bitbucket_v1.json b/server/libs/modules/components/bitbucket/src/test/resources/definition/bitbucket_v1.json new file mode 100644 index 0000000000..ec29af90ac --- /dev/null +++ b/server/libs/modules/components/bitbucket/src/test/resources/definition/bitbucket_v1.json @@ -0,0 +1,6113 @@ +{ + "actions" : [ { + "batch" : null, + "deprecated" : null, + "description" : "Creates a repository in a selected workspace.", + "help" : null, + "metadata" : { + "path" : "/repositories/{workspace}/{repo_slug}", + "mimeType" : "application/json", + "method" : "POST", + "bodyContentType" : "JSON" + }, + "name" : "createRepository", + "outputDefinition" : { + "output" : null, + "outputResponse" : { + "outputSchema" : { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Bitbucket repository object returned from the API.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { + "responseType" : { + "contentType" : "application/json", + "type" : "JSON" + } + }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the object (usually \"repository\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A collection of relevant resource links.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Links", + "metadata" : { }, + "multipleValues" : null, + "name" : "links", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Self", + "metadata" : { }, + "multipleValues" : null, + "name" : "self", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Html", + "metadata" : { }, + "multipleValues" : null, + "name" : "html", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Avatar", + "metadata" : { }, + "multipleValues" : null, + "name" : "avatar", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Pullrequests", + "metadata" : { }, + "multipleValues" : null, + "name" : "pullrequests", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Commits", + "metadata" : { }, + "multipleValues" : null, + "name" : "commits", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Forks", + "metadata" : { }, + "multipleValues" : null, + "name" : "forks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Watchers", + "metadata" : { }, + "multipleValues" : null, + "name" : "watchers", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Downloads", + "metadata" : { }, + "multipleValues" : null, + "name" : "downloads", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of clone URLs (HTTPS and/or SSH).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Clone", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : "clone", + "options" : null, + "optionsDataSource" : null, + "placeholder" : "Add to Clone", + "required" : false, + "type" : "ARRAY" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Hooks", + "metadata" : { }, + "multipleValues" : null, + "name" : "hooks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The globally unique identifier for the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Uuid", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "uuid", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The full name of the repository (workspace/repo_slug).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Full Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "full_name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the repository is private.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The source control system (only \"git\" is supported).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Scm", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "scm", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The user or team that owns the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Owner", + "metadata" : { }, + "multipleValues" : null, + "name" : "owner", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the owner (usually \"user\" or \"team\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The display name of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A short description of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of when the repository was created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Created On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "created_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of the last repository update.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Updated On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "updated_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "INTEGER", + "defaultValue" : null, + "description" : "Total size of the repository in bytes.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Size", + "maxValue" : null, + "metadata" : { }, + "minValue" : null, + "name" : "size", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "INTEGER" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The primary programming language of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Language", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "language", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the issue tracker is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Issues", + "metadata" : { }, + "name" : "has_issues", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the wiki is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Wiki", + "metadata" : { }, + "name" : "has_wiki", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Repository fork policy.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Fork Policy", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "fork_policy", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Project that the repository belongs to.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { }, + "multipleValues" : null, + "name" : "project", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the project object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The default branch of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Mainbranch", + "metadata" : { }, + "multipleValues" : null, + "name" : "mainbranch", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the branch object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : null, + "type" : "OBJECT" + }, + "placeholder" : null, + "sampleOutput" : null + }, + "outputSchema" : { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Bitbucket repository object returned from the API.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { + "responseType" : { + "contentType" : "application/json", + "type" : "JSON" + } + }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the object (usually \"repository\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A collection of relevant resource links.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Links", + "metadata" : { }, + "multipleValues" : null, + "name" : "links", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Self", + "metadata" : { }, + "multipleValues" : null, + "name" : "self", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Html", + "metadata" : { }, + "multipleValues" : null, + "name" : "html", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Avatar", + "metadata" : { }, + "multipleValues" : null, + "name" : "avatar", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Pullrequests", + "metadata" : { }, + "multipleValues" : null, + "name" : "pullrequests", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Commits", + "metadata" : { }, + "multipleValues" : null, + "name" : "commits", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Forks", + "metadata" : { }, + "multipleValues" : null, + "name" : "forks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Watchers", + "metadata" : { }, + "multipleValues" : null, + "name" : "watchers", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Downloads", + "metadata" : { }, + "multipleValues" : null, + "name" : "downloads", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of clone URLs (HTTPS and/or SSH).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Clone", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : "clone", + "options" : null, + "optionsDataSource" : null, + "placeholder" : "Add to Clone", + "required" : false, + "type" : "ARRAY" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Hooks", + "metadata" : { }, + "multipleValues" : null, + "name" : "hooks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The globally unique identifier for the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Uuid", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "uuid", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The full name of the repository (workspace/repo_slug).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Full Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "full_name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the repository is private.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The source control system (only \"git\" is supported).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Scm", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "scm", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The user or team that owns the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Owner", + "metadata" : { }, + "multipleValues" : null, + "name" : "owner", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the owner (usually \"user\" or \"team\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The display name of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A short description of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of when the repository was created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Created On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "created_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of the last repository update.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Updated On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "updated_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "INTEGER", + "defaultValue" : null, + "description" : "Total size of the repository in bytes.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Size", + "maxValue" : null, + "metadata" : { }, + "minValue" : null, + "name" : "size", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "INTEGER" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The primary programming language of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Language", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "language", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the issue tracker is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Issues", + "metadata" : { }, + "name" : "has_issues", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the wiki is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Wiki", + "metadata" : { }, + "name" : "has_wiki", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Repository fork policy.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Fork Policy", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "fork_policy", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Project that the repository belongs to.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { }, + "multipleValues" : null, + "name" : "project", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the project object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The default branch of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Mainbranch", + "metadata" : { }, + "multipleValues" : null, + "name" : "mainbranch", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the branch object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : null, + "type" : "OBJECT" + }, + "sampleOutput" : null + }, + "perform" : null, + "processErrorResponse" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Workspace in which repository will be created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Workspace", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "PATH" + }, + "minLength" : null, + "name" : "workspace", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : null + }, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Repository slug that is used as identifier for the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Repository Slug", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "PATH" + }, + "minLength" : null, + "name" : "repo_slug", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The name of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Specifies the version control system that your repository will use.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Source Control Management.", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "scm", + "options" : [ { + "description" : null, + "label" : "Git", + "value" : "git" + } ], + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Parent project of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { + "type" : "BODY" + }, + "multipleValues" : null, + "name" : "project", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "The key of the parent project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Key", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "key", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : [ "workspace" ] + }, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : true, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Whether the repository is private or not.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { + "type" : "BODY" + }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The description of repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Specifies the fork policy for the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Fork Policy", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "fork_policy", + "options" : [ { + "description" : null, + "label" : "Allow_forks", + "value" : "allow_forks" + }, { + "description" : null, + "label" : "No_public_forks", + "value" : "no_public_forks" + }, { + "description" : null, + "label" : "No_forks", + "value" : "no_forks" + } ], + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Main programming language of the repository", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Language", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "language", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "title" : "Create Repository", + "workflowNodeDescription" : null + }, { + "batch" : null, + "deprecated" : null, + "description" : "Creates a project in selected workspace.", + "help" : null, + "metadata" : { + "path" : "/workspaces/{workspace}/projects", + "mimeType" : "application/json", + "method" : "POST", + "bodyContentType" : "JSON" + }, + "name" : "createProject", + "outputDefinition" : { + "output" : null, + "outputResponse" : { + "outputSchema" : { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : null, + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { + "responseType" : { + "contentType" : "application/json", + "type" : "JSON" + } + }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : null, + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { }, + "multipleValues" : null, + "name" : "metrics", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "INTEGER", + "defaultValue" : null, + "description" : "The total number of keywords that your target ranks for in the top 100 organic search results.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "maxValue" : null, + "metadata" : { }, + "minValue" : null, + "name" : "org_keywords", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "INTEGER" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : null, + "type" : "OBJECT" + }, + "placeholder" : null, + "sampleOutput" : null + }, + "outputSchema" : { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : null, + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { + "responseType" : { + "contentType" : "application/json", + "type" : "JSON" + } + }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : null, + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { }, + "multipleValues" : null, + "name" : "metrics", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "INTEGER", + "defaultValue" : null, + "description" : "The total number of keywords that your target ranks for in the top 100 organic search results.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "maxValue" : null, + "metadata" : { }, + "minValue" : null, + "name" : "org_keywords", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "INTEGER" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : null, + "type" : "OBJECT" + }, + "sampleOutput" : null + }, + "perform" : null, + "processErrorResponse" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Workspace where the project will be added.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Workspace", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "PATH" + }, + "minLength" : null, + "name" : "workspace", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : null + }, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The name of the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Key of the project (eg. AT, for a project named Atlassian). Project keys must start with a letter and may only consist of ASCII letters, numbers and underscores (A-Z, a-z, 0-9, _).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Key", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "key", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The description of project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { + "type" : "BODY" + }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Whether the project is private or not.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { + "type" : "BODY" + }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + } ], + "title" : "Create Project", + "workflowNodeDescription" : null + }, { + "batch" : null, + "deprecated" : null, + "description" : "Returns list of projects from workspace.", + "help" : null, + "metadata" : null, + "name" : "listProjects", + "outputDefinition" : { + "output" : null, + "outputResponse" : { + "outputSchema" : { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of Bitbucket projects returned from the API.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Bitbucket project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the object (typically 'project').", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Relevant links for the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Links", + "metadata" : { }, + "multipleValues" : null, + "name" : "links", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Html", + "metadata" : { }, + "multipleValues" : null, + "name" : "html", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Avatar", + "metadata" : { }, + "multipleValues" : null, + "name" : "avatar", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Globally unique identifier for the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Uuid", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "uuid", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Unique key identifying the project within the workspace.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Key", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "key", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The workspace or user who owns the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Owner", + "metadata" : { }, + "multipleValues" : null, + "name" : "owner", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the owner (usually 'user' or 'workspace').", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Human-readable name of the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Description of the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the project is private.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "DATE_TIME", + "defaultValue" : null, + "description" : "Timestamp of when the project was created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Created On", + "metadata" : { }, + "name" : "created_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "DATE_TIME" + }, { + "advancedOption" : null, + "controlType" : "DATE_TIME", + "defaultValue" : null, + "description" : "Timestamp of the last update to the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Updated On", + "metadata" : { }, + "name" : "updated_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "DATE_TIME" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates if the project contains any public repositories.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Publicly Visible Repos", + "metadata" : { }, + "name" : "has_publicly_visible_repos", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Projects", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : null, + "type" : "ARRAY" + }, + "placeholder" : null, + "sampleOutput" : null + }, + "outputSchema" : { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of Bitbucket projects returned from the API.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Bitbucket project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the object (typically 'project').", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Relevant links for the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Links", + "metadata" : { }, + "multipleValues" : null, + "name" : "links", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Html", + "metadata" : { }, + "multipleValues" : null, + "name" : "html", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Avatar", + "metadata" : { }, + "multipleValues" : null, + "name" : "avatar", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Globally unique identifier for the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Uuid", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "uuid", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Unique key identifying the project within the workspace.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Key", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "key", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The workspace or user who owns the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Owner", + "metadata" : { }, + "multipleValues" : null, + "name" : "owner", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the owner (usually 'user' or 'workspace').", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Human-readable name of the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Description of the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the project is private.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "DATE_TIME", + "defaultValue" : null, + "description" : "Timestamp of when the project was created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Created On", + "metadata" : { }, + "name" : "created_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "DATE_TIME" + }, { + "advancedOption" : null, + "controlType" : "DATE_TIME", + "defaultValue" : null, + "description" : "Timestamp of the last update to the project.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Updated On", + "metadata" : { }, + "name" : "updated_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "DATE_TIME" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates if the project contains any public repositories.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Publicly Visible Repos", + "metadata" : { }, + "name" : "has_publicly_visible_repos", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Projects", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : null, + "type" : "ARRAY" + }, + "sampleOutput" : null + }, + "perform" : { }, + "processErrorResponse" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Workspace from which projects are to be listed.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Workspace", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "workspace", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : null + }, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + } ], + "title" : "List Projects", + "workflowNodeDescription" : null + }, { + "batch" : null, + "deprecated" : null, + "description" : "Returns list of repositories from workspace.", + "help" : null, + "metadata" : null, + "name" : "listRepositories", + "outputDefinition" : { + "output" : null, + "outputResponse" : { + "outputSchema" : { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of Bitbucket repositories returned from the API.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Bitbucket repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Repository", + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the object (usually \"repository\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A collection of relevant resource links.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Links", + "metadata" : { }, + "multipleValues" : null, + "name" : "links", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Self", + "metadata" : { }, + "multipleValues" : null, + "name" : "self", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Html", + "metadata" : { }, + "multipleValues" : null, + "name" : "html", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Avatar", + "metadata" : { }, + "multipleValues" : null, + "name" : "avatar", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Pullrequests", + "metadata" : { }, + "multipleValues" : null, + "name" : "pullrequests", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Commits", + "metadata" : { }, + "multipleValues" : null, + "name" : "commits", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Forks", + "metadata" : { }, + "multipleValues" : null, + "name" : "forks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Watchers", + "metadata" : { }, + "multipleValues" : null, + "name" : "watchers", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Downloads", + "metadata" : { }, + "multipleValues" : null, + "name" : "downloads", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of clone URLs (HTTPS and/or SSH).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Clone", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : "clone", + "options" : null, + "optionsDataSource" : null, + "placeholder" : "Add to Clone", + "required" : false, + "type" : "ARRAY" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Hooks", + "metadata" : { }, + "multipleValues" : null, + "name" : "hooks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The globally unique identifier for the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Uuid", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "uuid", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The full name of the repository (workspace/repo_slug).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Full Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "full_name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the repository is private.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The source control system (only \"git\" is supported).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Scm", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "scm", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The user or team that owns the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Owner", + "metadata" : { }, + "multipleValues" : null, + "name" : "owner", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the owner (usually \"user\" or \"team\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The display name of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A short description of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of when the repository was created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Created On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "created_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of the last repository update.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Updated On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "updated_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "INTEGER", + "defaultValue" : null, + "description" : "Total size of the repository in bytes.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Size", + "maxValue" : null, + "metadata" : { }, + "minValue" : null, + "name" : "size", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "INTEGER" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The primary programming language of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Language", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "language", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the issue tracker is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Issues", + "metadata" : { }, + "name" : "has_issues", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the wiki is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Wiki", + "metadata" : { }, + "name" : "has_wiki", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Repository fork policy.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Fork Policy", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "fork_policy", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Project that the repository belongs to.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { }, + "multipleValues" : null, + "name" : "project", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the project object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The default branch of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Mainbranch", + "metadata" : { }, + "multipleValues" : null, + "name" : "mainbranch", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the branch object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Repositories", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : null, + "type" : "ARRAY" + }, + "placeholder" : null, + "sampleOutput" : null + }, + "outputSchema" : { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of Bitbucket repositories returned from the API.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Bitbucket repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Repository", + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the object (usually \"repository\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A collection of relevant resource links.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Links", + "metadata" : { }, + "multipleValues" : null, + "name" : "links", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Self", + "metadata" : { }, + "multipleValues" : null, + "name" : "self", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Html", + "metadata" : { }, + "multipleValues" : null, + "name" : "html", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Avatar", + "metadata" : { }, + "multipleValues" : null, + "name" : "avatar", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Pullrequests", + "metadata" : { }, + "multipleValues" : null, + "name" : "pullrequests", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Commits", + "metadata" : { }, + "multipleValues" : null, + "name" : "commits", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Forks", + "metadata" : { }, + "multipleValues" : null, + "name" : "forks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Watchers", + "metadata" : { }, + "multipleValues" : null, + "name" : "watchers", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Downloads", + "metadata" : { }, + "multipleValues" : null, + "name" : "downloads", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "ARRAY_BUILDER", + "defaultValue" : null, + "description" : "List of clone URLs (HTTPS and/or SSH).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "items" : [ { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : null, + "metadata" : { }, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Clone", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : "clone", + "options" : null, + "optionsDataSource" : null, + "placeholder" : "Add to Clone", + "required" : false, + "type" : "ARRAY" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "A hyperlink reference with optional name.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Hooks", + "metadata" : { }, + "multipleValues" : null, + "name" : "hooks", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The URL of the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Href", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "href", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A human-readable name for the link.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The globally unique identifier for the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Uuid", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "uuid", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The full name of the repository (workspace/repo_slug).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Full Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "full_name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the repository is private.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Is Private", + "metadata" : { }, + "name" : "is_private", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The source control system (only \"git\" is supported).", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Scm", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "scm", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The user or team that owns the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Owner", + "metadata" : { }, + "multipleValues" : null, + "name" : "owner", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The type of the owner (usually \"user\" or \"team\").", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The display name of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Name", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "name", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "A short description of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Description", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "description", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of when the repository was created.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Created On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "created_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Timestamp of the last repository update.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Updated On", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "updated_on", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "INTEGER", + "defaultValue" : null, + "description" : "Total size of the repository in bytes.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Size", + "maxValue" : null, + "metadata" : { }, + "minValue" : null, + "name" : "size", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : false, + "type" : "INTEGER" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "The primary programming language of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Language", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "language", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the issue tracker is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Issues", + "metadata" : { }, + "name" : "has_issues", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Indicates whether the wiki is enabled.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Has Wiki", + "metadata" : { }, + "name" : "has_wiki", + "options" : [ { + "description" : null, + "label" : "True", + "value" : true + }, { + "description" : null, + "label" : "False", + "value" : false + } ], + "placeholder" : null, + "required" : false, + "type" : "BOOLEAN" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Repository fork policy.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Fork Policy", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "fork_policy", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "Project that the repository belongs to.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Project", + "metadata" : { }, + "multipleValues" : null, + "name" : "project", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the project object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + }, { + "additionalProperties" : null, + "advancedOption" : null, + "controlType" : "OBJECT_BUILDER", + "defaultValue" : null, + "description" : "The default branch of the repository.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Mainbranch", + "metadata" : { }, + "multipleValues" : null, + "name" : "mainbranch", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Type of the branch object.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Type", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "type", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : false, + "type" : "STRING" + } ], + "required" : false, + "type" : "OBJECT" + } ], + "required" : null, + "type" : "OBJECT" + } ], + "label" : "Repositories", + "maxItems" : null, + "metadata" : { }, + "minItems" : null, + "multipleValues" : null, + "name" : null, + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "required" : null, + "type" : "ARRAY" + }, + "sampleOutput" : null + }, + "perform" : { }, + "processErrorResponse" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Workspace from which repositories are to be listed.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Workspace", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "workspace", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : null + }, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + } ], + "title" : "List Repositories", + "workflowNodeDescription" : null + } ], + "clusterElements" : null, + "componentCategories" : [ { + "label" : "Project Management", + "name" : "project-management" + } ], + "connection" : { + "authorizationRequired" : null, + "authorizations" : [ { + "acquire" : null, + "apply" : null, + "authorizationCallback" : null, + "authorizationUrl" : null, + "clientId" : null, + "clientSecret" : null, + "description" : null, + "detectOn" : null, + "name" : "basic_auth", + "oauth2AuthorizationExtraQueryParameters" : null, + "pkce" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "Email address of your Bitbucket account.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Username", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "username", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "TEXT", + "defaultValue" : null, + "description" : "API key creation steps in documentation.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "API Key", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "password", + "options" : null, + "optionsDataSource" : null, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + } ], + "refresh" : null, + "refreshOn" : null, + "refreshToken" : null, + "refreshUrl" : null, + "scopes" : null, + "title" : "API Key Authorization", + "tokenUrl" : null, + "type" : "BASIC_AUTH" + } ], + "baseUri" : { }, + "properties" : null, + "test" : null, + "version" : 1 + }, + "customAction" : true, + "customActionHelp" : null, + "description" : "Elevate your software delivery from planning to production and beyond, with built-in AI, CI/CD, and a best-in-class Jira integration.", + "icon" : "path:assets/bitbucket.svg", + "metadata" : null, + "name" : "bitbucket", + "resources" : null, + "tags" : null, + "title" : "Bitbucket", + "triggers" : [ { + "batch" : null, + "deduplicate" : null, + "deprecated" : null, + "description" : "Triggers whenever a repository push occurs.", + "dynamicWebhookRefresh" : null, + "help" : null, + "listenerDisable" : null, + "listenerEnable" : null, + "name" : "repositoryPush", + "outputDefinition" : { + "output" : null, + "outputResponse" : null, + "outputSchema" : null, + "sampleOutput" : null + }, + "poll" : null, + "processErrorResponse" : null, + "properties" : [ { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Workspace where the repository is located.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Workspace", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "workspace", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : null + }, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + }, { + "advancedOption" : null, + "controlType" : "SELECT", + "defaultValue" : null, + "description" : "Repository that will be connected to the trigger.", + "displayCondition" : null, + "exampleValue" : null, + "expressionEnabled" : null, + "hidden" : null, + "label" : "Repository", + "languageId" : null, + "maxLength" : null, + "metadata" : { }, + "minLength" : null, + "name" : "repository", + "options" : null, + "optionsDataSource" : { + "options" : { }, + "optionsLookupDependsOn" : [ "workspace" ] + }, + "placeholder" : null, + "regex" : null, + "required" : true, + "type" : "STRING" + } ], + "title" : "Repository Push", + "type" : "DYNAMIC_WEBHOOK", + "webhookDisable" : { }, + "webhookEnable" : { }, + "webhookRawBody" : null, + "webhookRequest" : { }, + "webhookValidate" : null, + "webhookValidateOnEnable" : null, + "workflowNodeDescription" : null, + "workflowSyncExecution" : null + } ], + "unifiedApi" : null, + "version" : 1 +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 049e1c1c3b..79b942f1f1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -224,6 +224,7 @@ include("server:libs:modules:components:baserow") include("server:libs:modules:components:bash") include("server:libs:modules:components:beamer") include("server:libs:modules:components:binance") +include("server:libs:modules:components:bitbucket") include("server:libs:modules:components:bolna") include("server:libs:modules:components:box") include("server:libs:modules:components:brevo")