---
title: "Get my property setup draft"
method: GET
path: "/property_setup_draft"
tags: ["PropertySetupDrafts"]
---

# Get my property setup draft

`GET /property_setup_draft`

## Request

- Base URL: `https://api.purplegrain.com/api/v1`
- URL: `https://api.purplegrain.com/api/v1/property_setup_draft`
- Auth: HTTP bearer

The caller's unsaved property for one owner — the name, place, corners
and checklist row the map editor last wrote — or `data: null` when
there is none. One draft per person per owner; only the person who
wrote it can read it. The owner must be the caller or a business where
the caller may add properties (the `createFarm` rule).

## Query parameters

- `owner_type` 'User' | 'Organization', required
- `owner_id` string, uuid, required

## Response `200`

The draft, or `data: null`.

- PropertySetupDraftResponseAttributes: Attributes-adapter response (Accept application/json). `data` is null when the caller has no draft for the owner.
  - `data` PropertySetupDraftModelAttributes, nullable: The caller's unsaved property for one owner in attributes-adapter shape (Accept application/json), or null when there is none.
    - `id` string
    - `type` 'property_setup_drafts'
    - `owner_type` 'User' | 'Organization'
    - `owner_id` string, uuid
    - `name` string, nullable
    - `location` SetupDraftLocation, nullable: The place the editor found for the property. `label` is required; `lng` and `lat` are both present or both absent. No other keys.
      - `label` string, required
      - `lng` number
      - `lat` number
    - `ring` array[], nullable: The corners placed so far: an OPEN array of `[longitude, latitude]` pairs in RFC 7946 order — **longitude first** — 0 to 2000 of them. A draft may hold one or two corners, so this is neither a polygon nor GeoJSON; it becomes one only when the boundary is saved (`updateFarmBoundary`, `updatePaddockBoundary`). Longitude within ±180, latitude within ±90.
      - number[]: [longitude, latitude]
    - `step` 'owner' | 'name' | 'location' | 'boundary', nullable
    - `updated_at` string, date-time

## Other responses

- `401`: Unauthorized — no session.
- `403`: Forbidden — the owner is someone else, or a business where the caller may not add properties; or an API key or an assistant's token (first-party only).
- `404`: No such person or business.
- `422`: `owner_type` is not User or Organization, or `owner_id` is not a uuid.

---

[API](https://skmtc.dev/purplegrain/apis/purple-grain-api.md) · [All operations](https://skmtc.dev/purplegrain/apis/purple-grain-api/llms.txt) · [OpenAPI document](https://skmtc.dev/purplegrain/apis/purple-grain-api/revisions/4bedbc1c784c?raw)
