Skip to main content

Tango BU User Roles Reconcile API

Generated from Tango BU User Roles Reconcile API Integration Design Specification V0.9.docx in SharePoint folder 01 Common Integrations. OAS spec: user-roles-reconcile-bu.yaml

Overview

Async outbound REST API: client retrieves Tango user accounts and their full provisioning state (brands, BUs, countries, roles, entity security) for reconciliation. Same endpoint as the inbound provisioning API (/v1/usermgmt/batch/users) but called via GET. Page size 1000. Owner: Tango Analytics Spec version: 0.9 Status: Draft (auto-generated — needs review)

Base URLs

Authentication

Headers x-client + x-api-key.

Endpoints

Filter parameters (mutually exclusive)

Only one filter may be supplied per call.

Integration logic

  • Batch refresh runs once per day at a mutually-agreed time.
  • The data API must be invoked at most once per day aligned with the refresh.
  • Additional same-day calls generate a new gu_id but return no data.
  • Status polling is unrestricted — the same gu_id may be polled multiple times.
  • Page size is 1000 (smaller than other Tango outbound APIs which use 5000).

Data model

Each user record carries:
  • Identity: user_name, first_name, last_name, email
  • Type / flags: user_type, sso, status, mobile_access
  • Defaults: default_brand, default_bu, default_country, default_language (e.g., en-US), data_access_level
  • Audit: creation_date, created_by, last_login_date, last_update_date, last_updated_by
  • entity_security[]: per-BU / per-country / per-entity-type security with restrictions
  • brands[], bu[], country[], roles[]: nested audit-bearing structures

Nested-object shape note ⚠

The source data mapping shows an unusual nesting for brands / bu / country / roles. Each item is an object whose key is the field type label (e.g., brand_name, bu_name, country_name) and whose value is an object with name, creation_date, created_by, last_update_date, last_updated_by:
This is unusual; the wrapper key (brand_name) is functionally redundant. Preserved verbatim — confirm wire format.

Open Questions / Assumptions

  • Once-per-day cadence enforcement: how does the API behave if a client polls early? “Generate a new gu_id but no data” suggests the call succeeds but returns empty — confirm error vs. empty-result behaviour.
  • Nested-key shape (described above) is unusual. May be a copy-paste artifact in the doc; confirm whether the real JSON uses the wrapper key.
  • entity_security.entity_type values listed include TARGET, SITE, LEASE, etc. — TARGET isn’t documented elsewhere; confirm the full enum.
  • roles[] shape truncated in the extracted text — the schema uses additionalProperties: true for now.
  • Page size 1000 is half the typical Tango page size — verify this is intentional for large tenants.

Changelog