---
title: "PUT /api/activity/address-list/"
method: PUT
path: "/api/activity/address-list/"
tags: ["activity"]
---

# PUT /api/activity/address-list/

`PUT /api/activity/address-list/`

Replace or upsert the caller's organization known-address list from a self-service upload. The uploader hashes each address on-device (see ``libs/data-access-base/src/addressHashUtils.ts``) and sends only ``{identifier, entry_type, level, hash}`` rows — raw addresses never leave the browser. Each address expands into one row per match level (exact / building / street) sharing an ``identifier``. Re-uploading an identifier replaces its whole level set (a changed address that now yields fewer levels leaves no stale level row); when ``replace`` is true, addresses whose identifier is absent from the upload are also deleted so the stored list matches the file exactly. ``upserted`` / ``deleted`` count distinct addresses (identifiers), not the larger per-level row count. Admin/manager + ``activity-tracking`` flag gated; scoped to the caller's organization.

## Request body

- AddressListUpload
  - `organization` string, uuid, required
  - `replace` boolean
  - `entries` object[], required
    - `identifier` string, required
    - `entry_type` 'fraud' | 'employee', required
    - `level` 'exact' | 'building' | 'street', required
    - `hash` string, required

## Response `200`

---

[API](https://skmtc.dev/pixiebrix/apis/pixiebrix-api.md) · [All operations](https://skmtc.dev/pixiebrix/apis/pixiebrix-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pixiebrix/pixiebrix-api/revisions/941ab9eb01d6/schema)
