Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/skills/scalar-api-python-sdk/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ client = Scalar(
)

registry = client.registry.list_all_api_documents()

print(registry)
```

Expand Down
42 changes: 34 additions & 8 deletions .github/workflows/release-title-edit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,24 @@ jobs:
version-consistency:
# Also the check name the release PR's footer tells maintainers to wait for.
name: Release PR version
# Only the platform's release PR carries a version in its title; every other pull request
# skips this job, which GitHub reports as neutral. The release may be presented from
# scalar-next itself or from the release-please branch rendered off it, so both heads
# count as the release PR.
# A release-shaped title against the release branch is the whole test here, with no clause
# on who opened the pull request or what branch it is rendered onto. This job only reads,
# and a pull request claiming to be a release is worth checking against the committed
# version whoever opened it. Every other pull request skips this job, which GitHub reports
# as neutral.
#
# Loose on purpose: the prefix, not the full semver pattern the script matches. A version
# typo'd into the title still reaches the script and fails there, rather than falling out
# of the guard and leaving no check at all — a missing check is not a failing one, and this
# is the check the release PR's footer tells maintainers to wait for before merging.
#
# It is also what keeps the workflow from failing silently if the platform ever opens
# release PRs from a different account: the bridge below stops firing, but this check still
# runs, the retitled version and the committed one disagree, and it turns red. The merge is
# blocked loudly instead of releasing the old version.
if: >-
${{ github.event.pull_request.base.ref == 'main'
&& (github.event.pull_request.head.ref == 'scalar-next'
|| startsWith(github.event.pull_request.head.ref, 'release-please--branches--scalar-next--')) }}
&& startsWith(github.event.pull_request.title, 'release: ') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
Expand Down Expand Up @@ -60,14 +70,30 @@ jobs:
# release PR from). `changes.title` is only set when the title itself changed, and bot
# senders are ignored so the platform's own retitles cannot bounce back into another
# commit.
#
# Both signals are required here, unlike the read-only check above, and each covers what the
# other cannot. The author, because this job pushes with `contents: write` and a title is
# free text — anyone able to open a pull request against main could otherwise
# name a version and have it committed to scalar-next. `user.login` is set by GitHub when
# the pull request is opened and cannot be forged by whoever edits the title afterwards.
# The title, because those accounts open pull requests other than release PRs, and retitling
# one of those must not push a release.
#
# One login per platform deployment, since a repo generated by staging carries staging's
# app. Parenthesised because the group is ANDed with the title clause below: without the
# parens that `&&` would bind to the last login alone, letting the other accounts push a
# release off any title. Listed rather than matched on the shared `scalar-docs` stem — a
# prefix test would also admit any future `scalar-docs-*[bot]`, including someone else's.
if: >-
${{ github.event.action == 'edited'
&& github.event.changes.title != null
&& github.event.sender.type != 'Bot'
&& github.event.pull_request.state == 'open'
&& github.event.pull_request.base.ref == 'main'
&& (github.event.pull_request.head.ref == 'scalar-next'
|| startsWith(github.event.pull_request.head.ref, 'release-please--branches--scalar-next--')) }}
&& (github.event.pull_request.user.login == 'scalar-docs[bot]'
|| github.event.pull_request.user.login == 'scalar-docs-staging[bot]'
|| github.event.pull_request.user.login == 'scalar-docs-development[bot]')
&& startsWith(github.event.pull_request.title, 'release: ') }}
# One bridge run at a time per pull request, newest retitle wins. Two retitles in quick
# succession (a version typo corrected seconds later) would otherwise start two runs that
# both read the version committed on the PR head, both get past the no-op guard, and both
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/sdk-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,8 @@ jobs:
python-version: "3.11"
- run: python -m pip install --upgrade build
- run: python -m build
# Verification only, never auto-fix: the SDK is generated formatted, so a diff here means
# either hand-edited custom code or a regenerate that was not committed. ruff is pinned to
# the release that produced these bytes, since a formatter minor can change them.
- run: python -m pip install "ruff==0.16.1"
- run: ruff format --check .
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.3.2"
".": "0.3.3"
}
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## [0.3.3](https://github.com/scalar/scalar-python/compare/v0.3.2...v0.3.3) (2026-08-07)


### Chores

* **api:** regenerate SDK ([bd41de9](https://github.com/scalar/scalar-python/commit/bd41de9d48cb9e92f4f559a670f7a5335d5dc385))

## [0.3.2](https://github.com/scalar/scalar-python/compare/v0.3.1...v0.3.2) (2026-07-28)


Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2026 Scalar API

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ client = Scalar(
)

registry = client.registry.list_all_api_documents()

print(registry)
```

Expand All @@ -60,10 +61,12 @@ import asyncio

from scalar_sdk import AsyncScalar


async def main() -> None:
client = AsyncScalar()
registry = await client.registry.list_all_api_documents()


asyncio.run(main())
```

Expand Down
1 change: 1 addition & 0 deletions SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ client = Scalar(
)

registry = client.registry.list_all_api_documents()

print(registry)
```

Expand Down
31 changes: 29 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -482,8 +482,35 @@ Create a login portal for the current team.
login_portal = client.login_portals.create(
title="",
slug="",
email={"logo": "", "logo_size": "100", "button_text": "Login", "message": "Click to access private documentation hosted by scalar.com", "title": "Private Docs", "main_color": "#2a2f45", "main_background": "#f6f6f6", "card_color": "2a2f45", "card_background": "#fff", "button_color": "#fff", "button_background": "#0f0f0f"},
page={"title": "Scalar Private Docs", "description": "Login to access your documentation", "head": "", "script": "", "theme": "", "company_name": "", "logo": "", "logo_url": "", "favicon": "", "terms_link": "", "privacy_link": "", "form_title": "Scalar Private Docs", "form_description": "Login to access your documentation", "form_image": ""},
email={
"logo": "",
"logo_size": "100",
"button_text": "Login",
"message": "Click to access private documentation hosted by scalar.com",
"title": "Private Docs",
"main_color": "#2a2f45",
"main_background": "#f6f6f6",
"card_color": "2a2f45",
"card_background": "#fff",
"button_color": "#fff",
"button_background": "#0f0f0f",
},
page={
"title": "Scalar Private Docs",
"description": "Login to access your documentation",
"head": "",
"script": "",
"theme": "",
"company_name": "",
"logo": "",
"logo_url": "",
"favicon": "",
"terms_link": "",
"privacy_link": "",
"form_title": "Scalar Private Docs",
"form_description": "Login to access your documentation",
"form_image": "",
},
)
```

Expand Down
Loading
Loading