---
title: "Get my boundary draft for a property"
method: GET
path: "/properties/{property_id}/boundary_draft"
tags: ["BoundaryDrafts"]
---

# Get my boundary draft for a property

`GET /properties/{property_id}/boundary_draft`

## Request

- Base URL: `https://api.purplegrain.com/api/v1`
- URL: `https://api.purplegrain.com/api/v1/properties/{property_id}/boundary_draft`
- Auth: HTTP bearer

The caller's unsaved boundary on this property — the corners, and the place set before drawing, the map
editor last wrote — or `data: null` when there is none. One per person
per property, readable only by the person who wrote it, and only while
they may save the boundary (PATCH /properties/{id}/boundary).

## Path parameters

- `property_id` string, required

## Response `200`

The draft, or `data: null`.

- BoundaryDraftResponseAttributes: Attributes-adapter response (Accept application/json). `data` is null when the caller has no draft for the target.
  - `data` BoundaryDraftModelAttributes, nullable: The caller's unsaved boundary in attributes-adapter shape (Accept application/json), or null when there is none.
    - `id` string
    - `type` 'boundary_drafts'
    - `target_type` 'Property' | 'Paddock'
    - `target_id` string, uuid
    - `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 (`updatePropertyBoundary`, `updatePaddockBoundary`). Longitude within ±180, latitude within ±90.
      - number[]: [longitude, latitude]
    - `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
    - `updated_at` string, date-time

## Other responses

- `401`: Unauthorized — no session.
- `403`: Forbidden — the caller may not edit this property's boundary; or an API key or an assistant's token (first-party only).
- `404`: No such property.

## Changes

- **2026-10-30** `92c4663a1266`: 18 warning, 18 info
  - removed the optional property `_meta` from the response with the `401` status (media type: application/json)
  - removed the optional property `_meta` from the response with the `401` status (media type: application/vnd.api+json)
  - removed the optional property `_meta` from the response with the `403` status (media type: application/json)
  - removed the optional property `_meta` from the response with the `403` status (media type: application/vnd.api+json)
  - …32 more
- **2026-10-24** `e285768a8f1d`: 36 warning
  - added the new `map_boundaries` enum value to the `_meta/onboarding/completed_steps/items/` response property for the response status `401` (media type: application/json)
  - added the new `map_boundaries` enum value to the `_meta/onboarding/completed_steps/items/` response property for the response status `401` (media type: application/vnd.api+json)
  - added the new `map_boundaries` enum value to the `_meta/onboarding/completed_steps/items/` response property for the response status `403` (media type: application/json)
  - added the new `map_boundaries` enum value to the `_meta/onboarding/completed_steps/items/` response property for the response status `403` (media type: application/vnd.api+json)
  - …32 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/purplegrain/apis/purple-grain-api/changes/properties/:property_id/boundary_draft/get.md)

---

[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/e32f34ba218b?raw)
