Skip to main content

Tango Lookups Inbound API

Generated from Tango Lookups Inbound Integration Design Specification - API V0.8.docx in SharePoint folder 01 Common Integrations. OAS spec: lookups-inbound.yaml

Overview

Async REST API for posting custom-lookup dropdown values into Tango. Used to populate specific Tango custom lookups (CLOV_*) so client-defined values are available in dropdowns across Projects / Properties modules. Owner: Tango Analytics Spec version: 0.8 Status: Draft (auto-generated — needs review)

Base URLs

Authentication

Headers x-client + x-api-key.

Endpoints

Supported lookups

Only the following custom lookups can be loaded through this integration:
  • CLOV_COST_CENTER
  • CLOV_INTERNAL_ORDER
  • CLOV_PRODUCT_LIST
  • CLOV_PROFIT_CENTER

Integration logic

  • Upsert key: (lookup_name, lookup_code). For multi-country clients, country is added to the key.
  • Existing (name, code) combination → updates the other fields.
  • New (name, code) combination → inserts a new lookup value.
  • status = ACTIVE makes the value selectable in UI; any other status hides it.
  • Duplicate records in a single payload → the latest entry wins.

Data model (required ✅)

Validations

  1. lookup_name null → lookup_name is missing or empty
  2. lookup_name does not exist → lookup_name does not exist
  3. lookup_code null → lookup_code is missing or empty
  4. lookup_value null → lookup_value is missing or empty
  5. status null → status is missing or empty
  6. country null → country is missing or empty (multi-country clients only)
  7. country invalid → country <> is invalid
  8. sequence not a number → Sequence <> is invalid (whole numbers only)

Open Questions / Assumptions

  • Sample JSON has mixed case for ext_attr* — one record uses ext_attr1 (lowercase), another uses Ext_Attr1 (PascalCase) within the same payload. Mapping table uses lowercase with internal space (ext _Attr1); preserved as lowercase no-space in the schema. Confirm wire format.
  • Sample JSON sends sequence as a string ("sequence": "10") but the mapping table types it as NUMBER. Schema uses number; consumers may need to coerce.
  • Error response includes lookup_code as a top-level field within each error entry (in addition to record_key). This differs from other Tango APIs where errors only have record_index / record_key / error.
  • Missing comma in the sample JSON between "ext_attr6": "" and "ext_attr7": "" is preserved in the source — that’s a doc typo, not a wire format requirement.
  • Lookup-name expansion — only 4 CLOV_* types are supported; if new ones are added, the integration logic section needs updating.

Changelog