01 — Connect
Two credentials, two test calls. Nothing is written anywhere until stage 05.
Request routing
Why the relay exists
api.swaggerhub.com does not send CORS headers, so a browser cannot call it directly — requests fail before they leave the page. When this console is hosted on Cloudflare Pages the relay is already running at this same address. Running locally, start it with
node portage-proxy.mjs. Direct mode works only for GitLab instances that you have configured to allow this origin.SwaggerHub
Not connected
GitLab
Projects are created inside this group. You need Owner or Maintainer on it to add members.
Not connected
Keeping these credentials
02 — Choose what crosses
0 selected
Every API in the owner's registry, with its versions. Pick the versions worth carrying — old drafts rarely are.
Spec options
| API | Versions to carry | Visibility | Repository path | |
|---|---|---|---|---|
| No APIs loaded yet. | ||||
03 — Carry the access list
0 people
SwaggerHub roles do not exist in GitLab, so each one has to land somewhere. Set the rule once, then correct the individual rows that need it.
Where each role lands
GitLab levels: Guest 10 · Reporter 20 · Developer 30 · Maintainer 40 · Owner 50. Reporter is the lowest level that can read a private Pages site.
Who can see the published docs
Read this before choosing public
A public GitLab project with public Pages puts the spec on the open internet with no sign-in. SwaggerHub "public" only meant public within SwaggerHub for many organisations. Internal is the default here for that reason.
Pull the people in
SwaggerHub exposes organisation members through
/orgs/{org}/members. Per-API collaborator lists are not in the public Registry API on every plan — if that call comes back empty or forbidden, export the list from the SwaggerHub UI and paste it here.| SwaggerHub | Role | GitLab account | Level | Match | |
|---|---|---|---|---|---|
| Nobody loaded yet. | |||||
04 — The plan
No plan
Every call the run will make, in order. Amber rows change something in GitLab. Read it before you sign it off.
How the docs get built
| # | Effect | Operation | Target |
|---|---|---|---|
| Nothing planned yet. | |||
05 — Run the crossing
Idle
Specs are fetched first, then repositories, then commits, then access. A failed operation stops its own repository and leaves the rest alone.
ready.
06 — Confirm it landed
Not checked
Reads back what GitLab actually holds now: pipeline result, published URL, and the real member list on each project.
| Repository | Pipeline | Pages | Members | Published at |
|---|---|---|---|---|
| Run a crossing first. | ||||
What this tool does not do
Left behind on purpose
SwaggerHub comments, version history, and the standardisation rules do not have a GitLab Pages equivalent and are not carried across. Nothing in SwaggerHub is deleted or changed by this tool — the source stays exactly as it is until you retire it yourself.