Skip to content

Release 1.161.0 - #3799

Open
odlbot wants to merge 10 commits into
releasefrom
release-candidate
Open

Release 1.161.0#3799
odlbot wants to merge 10 commits into
releasefrom
release-candidate

Conversation

@odlbot

@odlbot odlbot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Nathan Levesque

Tobias Macey

cp-at-mit

Alex H

Muhammad Anas

Asad Ali

asadali145 and others added 10 commits July 23, 2026 13:28
…rt (#3782)

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…umentation (#3783)

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Signed-off-by: Alex H <ahiguera@mit.edu>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…g UUID (#3789)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

OpenAPI Changes

Show/hide changes
## Changes for v0.yaml:
20 changes: 0 error, 0 warning, 20 info
info	[new-optional-request-parameter] at head/openapi/specs/v0.yaml
	in API GET /api/v0/b2b/manager/organizations/
		added the new optional `query` request parameter `sso_organization_id`

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/b2b/manager/organizations/
		added the required property `results/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/b2b/manager/organizations/{id}/
		added the required property `sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/b2b/organizations/
		added the required property `items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/b2b/organizations/{organization_slug}/
		added the required property `sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/discounts/{parent_lookup_discount}/assignees/
		added the required property `results/items/user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API POST /api/v0/discounts/{parent_lookup_discount}/assignees/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API PATCH /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API PUT /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/
		added the required property `results/items/redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API POST /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API PATCH /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API PUT /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/userinfo/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/users/current_user/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API PATCH /api/v0/users/current_user/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API GET /api/v0/users/me
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml
	in API PATCH /api/v0/users/me
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status



## Changes for v1.yaml:
20 changes: 0 error, 0 warning, 20 info
info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml
	in API GET /api/v0/b2b/manager/organizations/
		added the new optional `query` request parameter `sso_organization_id`

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/b2b/manager/organizations/
		added the required property `results/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/b2b/manager/organizations/{id}/
		added the required property `sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/b2b/organizations/
		added the required property `items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/b2b/organizations/{organization_slug}/
		added the required property `sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/discounts/{parent_lookup_discount}/assignees/
		added the required property `results/items/user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API POST /api/v0/discounts/{parent_lookup_discount}/assignees/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API PATCH /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API PUT /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/
		added the required property `results/items/redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API POST /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API PATCH /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API PUT /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/userinfo/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/users/current_user/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API PATCH /api/v0/users/current_user/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API GET /api/v0/users/me
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml
	in API PATCH /api/v0/users/me
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status



## Changes for v2.yaml:
20 changes: 0 error, 0 warning, 20 info
info	[new-optional-request-parameter] at head/openapi/specs/v2.yaml
	in API GET /api/v0/b2b/manager/organizations/
		added the new optional `query` request parameter `sso_organization_id`

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/b2b/manager/organizations/
		added the required property `results/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/b2b/manager/organizations/{id}/
		added the required property `sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/b2b/organizations/
		added the required property `items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/b2b/organizations/{organization_slug}/
		added the required property `sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/discounts/{parent_lookup_discount}/assignees/
		added the required property `results/items/user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API POST /api/v0/discounts/{parent_lookup_discount}/assignees/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API PATCH /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API PUT /api/v0/discounts/{parent_lookup_discount}/assignees/{id}/
		added the required property `user/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/
		added the required property `results/items/redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API POST /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API PATCH /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API PUT /api/v0/discounts/{parent_lookup_redeemed_discount}/redemptions/{id}/
		added the required property `redeemed_by/b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/userinfo/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/users/current_user/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API PATCH /api/v0/users/current_user/
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API GET /api/v0/users/me
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v2.yaml
	in API PATCH /api/v0/users/me
		added the required property `b2b_organizations/items/sso_organization_id` to the response with the `200` status



Unexpected changes? Ensure your branch is up-to-date with main (consider rebasing).

@gitguardian

gitguardian Bot commented Jul 29, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
9430286 Triggered Generic Password 63ded11 .github/workflows/ci.yml View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

member,
],
)
wait_ms = float(result)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: The Redis Lua script returns a byte string, but the code attempts to call float() directly on it, which will raise a TypeError in Python 3.
Severity: CRITICAL

Suggested Fix

Decode the byte string returned from the Redis script before passing it to float(). For example, change float(result) to float(result.decode("utf-8")). Alternatively, configure the Redis connection with decode_responses=True to automatically handle decoding.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.

Location: hubspot_sync/rate_limiter.py#L93

Potential issue: The Redis client is not configured with `decode_responses=True`, so the
Lua script's return value `tostring(wait_ms)` is received as a bytes object (e.g.,
`b"0.0"`). The code at `hubspot_sync/rate_limiter.py:93` calls `float(result)` on this
byte string. In Python 3, this is invalid and raises a `TypeError`. Since
`wait_for_rate_limit()` is called for every HubSpot sync task, this will cause all sync
tasks to fail unconditionally at runtime.

Did we get this right? 👍 / 👎 to inform future reviews.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants