diff --git a/tests/PLATFORM-QUIRKS.md b/tests/PLATFORM-QUIRKS.md index d849007..3f1fd6c 100644 --- a/tests/PLATFORM-QUIRKS.md +++ b/tests/PLATFORM-QUIRKS.md @@ -19,6 +19,18 @@ editor after upload. ## Adobe Sign API Quirks +### Token refresh uses a separate endpoint `/oauth/v2/refresh` (2026-04-16) +**Symptom:** Calling the standard OAuth2 token endpoint (`/oauth/v2/token`) with +`grant_type=refresh_token` returns `{"error":"invalid_request","error_description": +"Invalid grant_type refresh_token"}` — even with a valid, freshly-issued refresh token. +**Root cause:** Adobe Sign uses a non-standard separate endpoint for token refresh: +`/oauth/v2/refresh` (not `/oauth/v2/token`). This differs from the OAuth2 spec and +virtually all other OAuth2 providers. +**Fix applied:** `adobe_api.py` now uses `REFRESH_URL = .../oauth/v2/refresh` for +refresh requests and `TOKEN_URL = .../oauth/v2/token` only for the initial auth code +exchange. +**Note:** `redirect_uri` is not required in the refresh request and should be omitted. + ### Company/Title contentType returned with `SIGNER_` prefix (2026-04-15) **Symptom:** When Company and Title fields are set via the Adobe Sign UI (the API rejects `COMPANY`/`TITLE` as contentType values), the API returns them as