Skip to content

Add Release Management API how-to guides - #53

Open
zoltan-baba wants to merge 6 commits into
mainfrom
rm-api-guides
Open

Add Release Management API how-to guides#53
zoltan-baba wants to merge 6 commits into
mainfrom
rm-api-guides

Conversation

@zoltan-baba

Copy link
Copy Markdown
Collaborator

Summary

  • Adds five new how-to guides under the Release Management API section: adding and connecting an app, creating releases, creating presets, releasing an app, and distributing builds to testers

Test plan

  • Check the new guides render correctly under /en/release-management/api/
  • Verify internal links within the guides resolve

🤖 Generated with Claude Code

zoltan-baba and others added 2 commits June 11, 2026 18:31
Moves the existing RM API overview into a new api/ subfolder and adds
five step-by-step API guides covering app connection, releases, presets,
build distribution, and store release flows for iOS and Android.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Comment thread docs/release-management/api/release-management-api.mdx Outdated
Comment thread docs/release-management/api/adding-and-connecting-an-app.mdx Outdated
Comment thread docs/release-management/api/creating-a-release.mdx Outdated
Comment thread docs/release-management/api/creating-an-app-version.mdx Outdated
Comment thread docs/release-management/api/creating-a-release.mdx Outdated
Comment thread docs/release-management/api/creating-a-release.mdx Outdated
Comment thread docs/release-management/api/creating-a-release.mdx Outdated
- Rename "release" to "app version" for the individual resource, matching product terminology; group category naming under "Create store releases" to match the product's Releases section
- Restructure the overview feature list into one item per category
- Replace the incomplete automation event list with the full iOS/Android event lists from the release-automation page
- Remove the unused release timeline section
- Fix a broken self-referential link in the overview page

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
zoltan-baba and others added 3 commits July 23, 2026 21:13
Mirrors the existing Bitrise CI / RDE setup: commits a snapshot of each of
the four Release Management sub-API specs (Apps, Store Releases, CodePush,
Build Distributions), generates their reference docs via
docusaurus-plugin-openapi-docs, and wires them into the Release Management
sidebar as a nested "API reference" category alongside the hand-written
"API guides".

- Add per-sub-API sync scripts and nightly workflow entries, matching the
  RDE pattern, so the snapshots stay current automatically
- Normalize generated operation titles (strip trailing periods, un-conjugate
  third-person-singular leading verbs) as a permanent post-generation step,
  which also fixes the same pre-existing issue in the Bitrise CI reference
- Rename the "Release Management API" sidebar label to "API guides" to
  distinguish the how-to guides from the new generated reference

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Addresses the review's request for Swagger links, now pointing at the
newly generated internal API reference instead of the external Swagger UI:

- Add a reference link next to every sub-API base URL mention
- Link every endpoint-table row to its exact operation page, verified
  against the real OpenAPI spec paths

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@zoltan-baba
zoltan-baba requested a review from gsanta July 24, 2026 07:52
Comment on lines +50 to +56
Use the presigned URL from the previous response to upload the file directly to storage:

```bash
curl -X PUT "PRESIGNED_UPLOAD_URL" \
-H "Content-Type: application/octet-stream" \
--data-binary "@/path/to/MyApp.ipa"
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content-Type header's value is wrong, and one other header is missing. I would also mention what kind of files you can upload ipa/apk/aab

#Use the method, url, and headers exactly as returned by the Step 1 response.

curl -X PUT "PRESIGNED_UPLOAD_URL" \
  -H "Content-Type: <value from response headers>" \
  -H "X-Goog-Content-Length-Range: <value from response headers>" \
  --data-binary "@/path/to/MyApp.aab"


The response returns the current `status`. Poll this endpoint until the status indicates the artifact is ready for distribution.

## Enabling a public install page

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The list endpoint would be usefule before or after this section to let the user know how they can obtain the ARTIFACT_ID. And unfortunately the list endpoint returns artifact that has both id and uuid fields, here the uuid has to be used.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

You can upload build artifacts to Release Management and distribute them to internal tester groups directly via the API. This covers both the artifact upload flow (Apps sub-API) and tester group management (Build Distributions sub-API).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have external tester groups and it's not mentioned in the docs


### Creating a tester group

```bash

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can create either internal or external tester groups with this endpoint, I would definitely mention that, and I would change the url to make it clear how (see the attached image, at the end of the url there is a type option with possible values external/internal)

Image

### Adding testers to a group

```bash
curl -X POST "https://api.bitrise.io/release-management/v2/build-distributions/v1/tester-groups/GROUP_ID/add-testers" \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you can also provide the ?type=external/internal at the end of the url and when the type is external there are no user_slugs but emails in the body:

curl -X 'POST' \
  'https://api.bitrise.io/release-management/v2/build-distributions/v1/tester-groups/0af00fd7-7746-4b00-9d29-728a9bc06610/add-testers?type=external' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "emails": [
    "tester@example.com"
  ]
}'

So it might be worth to show two examples for external and internal

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Once your release has a release candidate and all approvals are completed, you can submit the app for store review and then release it to users.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should highlight that the store review is only present for ios, and you also need to upload first to the store both for ios and android so:

Once your release has a release candidate uploaded to the store and all approvals completed...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants