> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tangoanalytics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Space hr outbound api

# Tango Space HR Outbound API

> Generated from `Tango Space HR Outbound API Integration Design Specification V0.9.docx` in SharePoint folder `03 Space Integrations`.
> OAS spec: [`space-hr-outbound-api.yaml`](./space-hr-outbound-api.yaml)

## Overview

Async **delta** REST API: client retrieves People/HR records from Tango — active records updated since the last integration run. Each record includes one or more location assignments (property / store / floor / space / area). People with no assignment are also returned.

**Owner:** Tango Analytics
**Spec version:** 0.9
**Status:** Draft (auto-generated — needs review)

## Endpoints

| Method | Path | Summary |
| - | - | - |
| GET | `/v1/spacemgmt/batch/people` | Initiate delta export — returns `gu_id`. |
| GET | `/v1/batch/status?gu_id=...` | Retrieve records. |

Auth: `x-client` + `x-api-key`.

## Integration logic

* Delta API: only records updated since last run.
* Active-only — Inactive people are not exported.
* People without a space/area assignment are still returned (location fields blank).
* Null fields are omitted from response.

## Data model

The record combines a person's HR data with their location assignment. Key sections:

* **Identity**: `person_id`, `person_number`, `first_name`, `last_name`, `middle_name`, `other_name`
* **HR attributes**: `employee_type`, `cost_center`, `title`, `manager_number`, `shift_worker`, `status`, `country`, `hire_date`, `end_date`, `grade_level`, `work_from_home`, `primary_phone`, `mobile_number`, `email`, `seating_type`, `zip_code`, `brand_id`
* **Identity attributes**: `mac_addresses`, `usernames`, `hostnames` (all comma-separated lists)
* **Location assignment**: `property_number`, `property_name`, `store_number`, `store_name`, `floor_number`, `floor_name`, `space_number`, `space_name`, `space_type`, `space_use`, `shift_space`, `area_type`, `area_number`, `area_name`, `flexible_seating`, `display_name`, `allocation_type`
* **Custom attributes**: `cattr1..10`, `nattr1..5`, `dattr1..5`, `lovattr1..5`

## Open Questions / Assumptions

* [ ] **`shift_worker` Client Label is "People Manager"** in the source — same semantic mismatch as the inbound API.
* [ ] **No `required` annotations** in source data mapping.
* [ ] **Multiple locations per person**: source v0.6/0.7 notes mention "multiple locations per person record" but the schema as documented shows flat location fields. Real payload may use an array of location objects — confirm.
* [ ] **`store_number` / `store_name` vs `building_number` / `building_name`** — this spec uses "store" prefix while Building/Floor Outbound uses "building" prefix. Confirm consistency.
* [ ] **`manager_number` typed NUMBER** but inbound API types as VARCHAR — type asymmetry.

## Changelog (compressed)

| Ver | Date | Description | Author |
| - | - | - | - |
| 0.1–0.8 | 2022-2025 | (see source doc) | Various |
| 0.9 | 05/14/2026 | Updated API Architecture and API endpoint | Jasmin Thasleem |
