Bitbucket Cloud Sync

This guide is for Bitbucket Cloud (bitbucket.org). If you use self-hosted Bitbucket Server, see Bitbucket Server Sync.

Bitbucket Cloud Sync allows you to synchronize your API definition, auto-generated server code, or client SDK with the specified Git repository in Bitbucket Cloud (bitbucket.org). The synchronization is made every time you save the API in API Hub for Design. You can fully control which files will be added, updated or ignored in the target repository.

OpenAPI 2.0, OpenAPI 3.0 and AsyncAPI 2.x APIs are supported.

1. Prepare the repository

The target Git repository must not be empty. If it is empty, add at least one file to it, for example, a README or .gitignore file.

2. Configure the integration

  1. Open the API in the API Hub for Design editor.

  2. If the API has several versions, select the version whose code you want to store in Bitbucket:

    API_screenshot_API_versions_01.png
  3. Click the API name to open the API Info panel.

  4. In the info panel, switch to the Integrations tab, and click Add New Integrations:

    Add New Integration menu command
  5. Select Bitbucket Cloud Sync from the list of integrations.

  6. Specify the integration parameters:

    • Name – Required. A display name for the integration.

    • Click Link with Bitbucket and grant access to your Bitbucket Cloud account and repositories.

    • Repository Owner – Select the owner of the Bitbucket Cloud repository you want to push the code to.

    • Repository – Select the repository to push the code to. This repository must not be empty. It must contain at least one commit, for example, a README or .gitignore file.

    • Sync Method – Select the synchronization type:

      Sync method

      Description

      Basic Sync

      API Hub for Design will manage all files in the specified branch and folder: new files will be added, existing files will be overwritten, and unused files will be deleted.

      Advanced Sync

      Similar to Basic Sync, but you can specify which files will be overwritten or ignored. Use this method if the output folder contains existing files that you want to keep.

    • Branch – Required. The name of the branch in the repository where your API code will be stored.

    • Generated API Code – Required. Select what you want to generate: server code, client SDK, API documentation, or the OpenAPI definition itself as YAML or JSON. See here for a list of supported languages and frameworks.

      Tip

      To customize code generation options, such as package names, use the Export > Codegen Options menu in the API Hub for Design editor. See Code Generation Options for details.

    • Output Folder – The output folder for the generated code, relative to the repository root. For example, server or sdk/android. If this folder does not exist, it will be created. If the output folder is not specified, API Hub for Design will create files and folders in the repository root.

      Important

      Use forward slashes (/) as path separators:

      folder/subfolder1/subfolder2 – Correct

      folder\subfolder1\subfolder2 – Incorrect

    • Output file – Only used if Generated API Code is JSON or YAML, that is, the OpenAPI definition itself. Specifies the name of the .json or .yaml file to create, for example, swagger.yaml or petstore.json. This file will be created in the Output Folder.

    • Paths – Available only if you selected Advanced Sync. Use these options to control which files and folders will be created, updated, deleted, or ignored during synchronization. All the paths are relative to the Output Folder. You need to specify either Partially Managed Paths or Fully Managed Paths.

      • Partially Managed Paths – These files and folders will be created if they do not exist, but the existing files and folders will not be modified. The wildcard * indicates all files and folders in the Output Folder.

      • Fully Managed Paths – These files and folders will be completely managed by the integration: new files will be added, the existing files will be overwritten, and the files that are no longer used will be deleted. You can use * as a wildcard for all files.

      • Ignored Paths – These files and folders will remain as is and will not be changed in any way.

      Important

      Use forward slashes (/) as path separators, for example, sdk/android/README.md.

    • Enable – Keep this check box selected for the integration to work. Unselect it to disable the integration temporarily.

  7. Click Create, then Done.

Push to Bitbucket Cloud

When you are ready to push your changes, click Sync on the editor toolbar, enter a commit message and click Push. API Hub for Design will generate the specified target (server code, client code, API documentation or an OpenAPI JSON or YAML file) and push it to the configured repository and branch.

Commits are made on behalf of the user associated with the access token. If synchronization fails (for example, due to a permission problem), you will see an integration error at the top of the API Hub for Design Editor.

Tip: How to generate multiple targets

You can add multiple instances of the integration for different targets. For example, one for the Node.js server and another for the Android client SDK. If you push all the targets to the same repository, use different Output Folders to avoid conflicts.

Disable the integration

If you no longer want to sync with Bitbucket Cloud, you can disable or delete the integration. The existing files will remain in your Bitbucket Cloud repository, but API Hub for Design will not update them anymore.

Troubleshooting

Integration fails with an error, or the files are not updated in the repository

Make sure the target repository is not empty. If this is a new repository, commit something to it, for example, a README file.

This can happen if the Bitbucket app password used by the integration was revoked. To resolve the issue:

  1. Generate a new app password in Bitbucket Cloud.

  2. Delete the existing integration in API Hub for Design.

  3. Add and configure the integration again.

See Also

Publication date: