arazzo: 1.0.1
info:
title: Gitea Feature Branch To Merged Pull Request
summary: Create a feature branch, open a pull request, and merge it.
description: >-
Models the core Gitea contribution loop. The workflow creates a new branch
off a base branch, opens a pull request from that branch back into the base,
and then merges the pull request using the requested merge strategy. Each
step spells out its request inline so the flow can be read and executed
without opening the underlying OpenAPI description.
version: 1.0.0
x-realizes-capability-ids:
- BC-4200.40
x-capability-derivation:
method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
min_confidence: 0.7
sources:
- capability_id: BC-4200.40
capability_name: Software Construction Management
spec: gitea-repository-api-openapi.yml
confidence: 0.85
model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: repositoryApi
url: ../openapi/gitea-repository-api-openapi.yml
type: openapi
workflows:
- workflowId: branch-pull-request-merge
summary: Create a branch, open a pull request, and merge it.
description: >-
Creates a feature branch from a base branch, opens a pull request targeting
the base branch, and merges it.
inputs:
type: object
required:
- authToken
- owner
- repo
- newBranch
- baseBranch
- prTitle
properties:
authToken:
type: string
description: Authorization header value, e.g. "token <personal-access-token>".
owner:
type: string
description: Owner of the repository.
repo:
type: string
description: Name of the repository.
newBranch:
type: string
description: Name of the feature branch to create.
baseBranch:
type: string
description: Existing branch the feature branch is created from and merged back into.
prTitle:
type: string
description: Title of the pull request.
prBody:
type: string
description: Description body for the pull request.
mergeStyle:
type: string
description: Merge strategy (merge, rebase, rebase-merge, squash, fast-forward-only).
steps:
- stepId: createBranch
description: Create a new feature branch from the base branch.
operationId: repoCreateBranch
parameters:
- name: Authorization
in: header
value: $inputs.authToken
- name: owner
in: path
value: $inputs.owner
- name: repo
in: path
value: $inputs.repo
requestBody:
contentType: application/json
payload:
new_branch_name: $inputs.newBranch
old_ref_name: $inputs.baseBranch
successCriteria:
- condition: $statusCode == 201
outputs:
branchName: $response.body#/name
- stepId: createPullRequest
description: Open a pull request from the new feature branch into the base branch.
operationId: repoCreatePullRequest
parameters:
- name: Authorization
in: header
value: $inputs.authToken
- name: owner
in: path
value: $inputs.owner
- name: repo
in: path
value: $inputs.repo
requestBody:
contentType: application/json
payload:
title: $inputs.prTitle
body: $inputs.prBody
head: $inputs.newBranch
base: $inputs.baseBranch
successCriteria:
- condition: $statusCode == 201
outputs:
prNumber: $response.body#/number
prId: $response.body#/id
prUrl: $response.body#/html_url
- stepId: mergePullRequest
description: Merge the pull request using the requested merge strategy.
operationId: repoMergePullRequest
parameters:
- name: Authorization
in: header
value: $inputs.authToken
- name: owner
in: path
value: $inputs.owner
- name: repo
in: path
value: $inputs.repo
- name: index
in: path
value: $steps.createPullRequest.outputs.prNumber
requestBody:
contentType: application/json
payload:
do: $inputs.mergeStyle
delete_branch_after_merge: true
successCriteria:
- condition: $statusCode == 200
outputs:
branchName: $steps.createBranch.outputs.branchName
prNumber: $steps.createPullRequest.outputs.prNumber
prUrl: $steps.createPullRequest.outputs.prUrl
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.