feat: add spender user, device token, and mobile API specs - #896
Merged
Aniruddha-Shriwant merged 2 commits intoSep 15, 2026
Merged
Conversation
KrupaH
approved these changes
Sep 15, 2026
Aniruddha-Shriwant
force-pushed
the
feat/spender-user-device-mobile-api-specs
branch
from
September 15, 2026 04:01
ae12db8 to
f3c7032
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds the missing OpenAPI contracts for Task 5 (spender user, device-token, and mobile APIs):
GET /spender/device_tokenPOST /spender/device_tokenPOST /spender/employees/unverify_mobilePOST /spender/users(bare route; resolves to the"post"pseudo-action ->UserUpdate)POST /spender/users/change_passwordGET /spender/users/password_requiredAll six operations are marked
x-internal: true(hidden from rendered public documentation, raw contract remains in the public repository/bundle). Follows the existing repo precedent of documenting each concrete Flaskaction_schema_mapaction as its own literal path (e.g.spender@employees@mark_active.yaml) rather than a generic{action_name}templated path, since no role in this repo currently uses that pattern.Extends the existing but previously-unused
user_outschema insrc/components/schemas/user.yaml(zero prior consumers, so safe to extend) withis_email_verified,is_onboarded,password_changed_at, andsignup_paramsto match whatUserROVAPISchemaactually dumps. Adds a newdevice_token.yamlshared schema.Runtime verification
c1beddd6fc1a2d1aeecb45a6049b299b9673af2c.BaseView.dispatch_request(api/flask/view.py) resolves the barePOST /spender/usersthrough the"post"pseudo-action key inaction_schema_map, not a plain upsert; and thatchange_passwordis the only real templated action (a literal URL action name of"post"is explicitly blocked).Schema().dump(None)exec inside the running platform-api container that actions returningNone(e.g.ChangePassword.action,UnVerifyMobile.action) serialize to{}; documented those operations with a bare200and no response content, matching the existingmark_active-style convention.libs/assertions.py(assert_valid->400,assert_found->404,assert_true->403,assert_auth->401) instead of assuming by convention -- e.g.password_required's "User not found" check usesassert_valid(400), notassert_found(404).is_email_verified,is_onboarded,password_changed_at, andsignup_paramsare nullable at the DB level viadb-migrations/tests/columns/list/expected.csv.Docs validation
@redocly/cli@2.19.0(the CI-pinned version); all succeeded.user.yamlanddevice_token.yamlare shared components, bundled every role root (not just spender) and diffed each non-spender role against the exact base commit (69bb2641) to confirm zero fan-out impact.reference/spender.yamldiff is purely additive.x-internal: trueafter bundling, at the correct operation-level placement (sibling oftags/summary/operationId), matching the repo's existing marker-placement precedent.fyle-platform-docssubmodule pointer are unchanged.Clickup
Task link was not provided; repository-check placeholder: https://app.clickup.com/