---
title: "Resolve property ids and exact names in bulk"
method: POST
path: "/api/property-lists/resolve-properties"
tags: ["Property Lists"]
---

# Resolve property ids and exact names in bulk

`POST /api/property-lists/resolve-properties`

## Request

- Base URL: `https://api.sponsorunited.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sponsorunited.com/api/property-lists/resolve-properties`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sponsorunited/apis/sponsorunited-api/docs/api/property-lists/resolve-properties/post.ts> (a function with typed inputs; its response is checked against the schema)

Looks up every row of a bulk add by property id or by exact property name (ignoring surrounding whitespace and letter case) and returns one result per row, in request order. A row with neither field, a property id below 1 or an unusable property name comes back as invalid with a reason instead of failing the request. Nothing is written; the list is saved through POST /api/property-lists

## Request body

- PropertyListResolvePropertiesRequest
  - `rows` object[], required: One item per input line, at most 1000. Each needs a property_id or a property_name; when both are sent the id is used and the name is ignored. A property_id that is not a whole number fails the request with a 422. Any other problem with a row's property_id or property_name does not: the row comes back with the status invalid and a reason, so the other rows still resolve.
    - `row` integer, required: The source line number, echoed back in the result
    - `property_id` integer, nullable
    - `property_name` string, nullable: Compared exactly, ignoring surrounding whitespace and letter case

## Response `200`

One result per request row, in request order

- object
  - `results` PropertyListResolvedProperty[]
    - `row` integer, required: The line number sent in the request
    - `status` 'matched' | 'not_found' | 'ambiguous' | 'invalid', required
    - `property` object: Present only when the status is matched
      - `id` integer
      - `name` string
    - `candidates` object[]: Present only when the status is ambiguous: every property with that name, sorted by id
      - `id` integer
      - `name` string
      - `league_name` string, nullable: The property's league, so that candidates sharing a name can be told apart
    - `reason` string: Present only when the status is invalid: why the row's fields could not be used, for example a property id that is not a whole number or a row with neither field

## Other responses

- `403`: The user cannot create property lists
- `422`: No rows, more than 1000 rows, a row that is not an object, a row without a valid line number, or a property id that is not a whole number

---

[API](https://skmtc.dev/sponsorunited/apis/sponsorunited-api.md) - [All operations](https://skmtc.dev/sponsorunited/apis/sponsorunited-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sponsorunited/apis/sponsorunited-api/revisions/cbf1ca5bff8f?raw)
