Skip to content

Add Global Profile API support - #86

Open
tholovina-sift wants to merge 3 commits into
masterfrom
atlas-382-global-profile-api
Open

Add Global Profile API support#86
tholovina-sift wants to merge 3 commits into
masterfrom
atlas-382-global-profile-api

Conversation

@tholovina-sift

@tholovina-sift tholovina-sift commented Aug 18, 2026

Copy link
Copy Markdown

Purpose:

  • Add client support for the new Global Profile API, which returns cross-tenant identity, decision, chargeback, order, transaction, and location signals for a user
  • Expose two new endpoints: GET /v3/accounts/{accountId}/global_profile/users/{userId} (lookup by Sift user ID) and POST /v3/accounts/{accountId}/global_profile/lookup (lookup by email and/or phone)

Technical overview:

  • GlobalProfileRequest — GET endpoint; takes AccountId, UserId, and optional GlobalOnly (bool?) and IncludeOwnData (bool?) query params; params are only added to the URL when explicitly set so server-side defaults apply otherwise
  • GlobalProfileLookupRequest — POST endpoint; takes AccountId, Email, and Phone; throws MissingFieldException client-side before the request is built when both Email and Phone are missing, mirroring the existing required-field validation pattern
  • GlobalProfileResponse : SiftResponse with nested POCOs for all response fields (ProfileSummaryJson, IdentityAgeJson, UserDecisionsJson, ChargebacksJson, OrdersJson, TransactionsJson, LocationsJson, LocationConnectedAccountJson); all nested objects and count fields are nullable so identity_found: false responses deserialize cleanly
  • Client gains SendAsync(GlobalProfileRequest) and SendAsync(GlobalProfileLookupRequest) overloads following the existing SendAsync<T> dispatch pattern

Testing plan:

  • This PR contains all required labels and reviewers as per our Change Management Procedure
  • Live tested against the Sift API with a real account: both GET and POST returned status=0, error_message=OK with identity_found=True, link_count=31, and fully populated location entries including city, region, and country

Deployment plan:

  • Related documentation is updated

    • README.md: new "Global Profile" section with usage examples for both endpoints; version heading bumped to v1.8.0
    • CHANGES.MD: new 1.8.0 entry
    • Sift/Sift.csproj: version bumped to 1.8.0
  • Merge when Global Profile API is publicly available

  • Merge before https://github.com/SiftScience/sift-docs/pull/92

Rollback plan:

  • Revert this PR; no schema changes, no breaking changes to existing methods, fully additive

Customer Impact Assessment:

Co-Authored-By: Claude <noreply@anthropic.com>
@tholovina-sift tholovina-sift self-assigned this Aug 19, 2026
tholovina-sift and others added 2 commits August 19, 2026 17:22
- Add missing Region field to LocationConnectedAccountJson (P2)
- Make HasLinks/LinkCount nullable in ProfileSummaryJson (P2)
- Change count fields from int to long to match server types (P3)

Co-Authored-By: Claude <noreply@anthropic.com>
System.MissingFieldException and Sift.MissingFieldException are both
in scope; use the fully qualified Sift.MissingFieldException.

Co-Authored-By: Claude <noreply@anthropic.com>
@tholovina-sift
tholovina-sift marked this pull request as ready for review August 20, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant