Locations API
HTTP reference for locations. Read authentication and access before using these operations. All examples use made-up data and placeholder credentials.
GET /v1/farm/{farm_id}/locations
List Locations
List premises and sublocations for the farm, including identifiers and the parent path. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} include_archived query No {"type":"boolean","default":false}
Request example
bash example Copy example
curl --fail-with-body -X GET \
'https://api.ranch.bot/v1/farm/<farm_id>/locations' \
-H "Authorization: Bearer $RANCHBOT_TOKEN"
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints total number Required locations array Required locations[] object Required locations[].id string Required locations[].farm_id string Required locations[].parent_id (variant 1) null Optional locations[].parent_id (variant 2) string Optional locations[].name string Required locations[].category (variant 1) null Optional locations[].category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] locations[].context (variant 1) null Optional locations[].context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] locations[].address (variant 1) null Optional locations[].address (variant 2) string Optional locations[].legal_land_description (variant 1) null Optional locations[].legal_land_description (variant 2) string Optional locations[].country (variant 1) null Optional locations[].country (variant 2) string Optional locations[].province_state (variant 1) null Optional locations[].province_state (variant 2) string Optional locations[].is_active boolean Required locations[].version integer Required locations[].path string Required locations[].root_id string Required locations[].identifiers array Required locations[].identifiers[] object Required locations[].identifiers[].id string Required locations[].identifiers[].location_id string Required locations[].identifiers[].scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] locations[].identifiers[].scheme_label (variant 1) null Optional locations[].identifiers[].scheme_label (variant 2) string Optional locations[].identifiers[].issuer (variant 1) null Optional locations[].identifiers[].issuer (variant 2) string Optional locations[].identifiers[].jurisdiction (variant 1) null Optional locations[].identifiers[].jurisdiction (variant 2) string Optional locations[].identifiers[].value string Required locations[].identifiers[].source (variant 1) null Optional locations[].identifiers[].source (variant 2) string Optional locations[].identifiers[].confirmed_by_user_id (variant 1) null Optional locations[].identifiers[].confirmed_by_user_id (variant 2) string Optional locations[].identifiers[].confirmed_at (variant 1) null Optional locations[].identifiers[].confirmed_at (variant 2) string Optional format: "date-time" locations[].identifiers[].is_preferred boolean Required locations[].identifiers[].version integer Required locations[].identifiers[].created_at string Required format: "date-time" locations[].identifiers[].updated_at string Required format: "date-time" locations[].created_at string Required format: "date-time" locations[].updated_at string Required format: "date-time"
POST /v1/farm/{farm_id}/locations
Create Location
Create a premises (no parent_id) or a sublocation beneath an existing premises. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints name string Required parent_id (variant 1) null Optional parent_id (variant 2) string Optional category (variant 1) null Optional category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] context (variant 1) null Optional context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] address string Optional legal_land_description string Optional country string Optional province_state string Optional
json example Copy example
{
"name": "Home place",
"category": "FARM",
"province_state": "Alberta"
}
Request example
bash example Copy example
curl --fail-with-body -X POST \
'https://api.ranch.bot/v1/farm/<farm_id>/locations' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"Home place","category":"FARM","province_state":"Alberta"}'
Responses
Status Meaning Content type 201 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
201 response schema (application/json)
Field Type Presence Constraints location object Required location.id string Required location.farm_id string Required location.parent_id (variant 1) null Optional location.parent_id (variant 2) string Optional location.name string Required location.category (variant 1) null Optional location.category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] location.context (variant 1) null Optional location.context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] location.address (variant 1) null Optional location.address (variant 2) string Optional location.legal_land_description (variant 1) null Optional location.legal_land_description (variant 2) string Optional location.country (variant 1) null Optional location.country (variant 2) string Optional location.province_state (variant 1) null Optional location.province_state (variant 2) string Optional location.is_active boolean Required location.version integer Required location.path string Required location.root_id string Required location.identifiers array Required location.identifiers[] object Required location.identifiers[].id string Required location.identifiers[].location_id string Required location.identifiers[].scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] location.identifiers[].scheme_label (variant 1) null Optional location.identifiers[].scheme_label (variant 2) string Optional location.identifiers[].issuer (variant 1) null Optional location.identifiers[].issuer (variant 2) string Optional location.identifiers[].jurisdiction (variant 1) null Optional location.identifiers[].jurisdiction (variant 2) string Optional location.identifiers[].value string Required location.identifiers[].source (variant 1) null Optional location.identifiers[].source (variant 2) string Optional location.identifiers[].confirmed_by_user_id (variant 1) null Optional location.identifiers[].confirmed_by_user_id (variant 2) string Optional location.identifiers[].confirmed_at (variant 1) null Optional location.identifiers[].confirmed_at (variant 2) string Optional format: "date-time" location.identifiers[].is_preferred boolean Required location.identifiers[].version integer Required location.identifiers[].created_at string Required format: "date-time" location.identifiers[].updated_at string Required format: "date-time" location.created_at string Required format: "date-time" location.updated_at string Required format: "date-time"
PUT /v1/farm/{farm_id}/locations/home
Set Home Premises
Set the explicitly selected default home premises. This is never assumed as an event origin. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints location_id string Required format: "uuid"
json example Copy example
{
"location_id": "00000000-0000-4000-8000-000000000010"
}
Request example
bash example Copy example
curl --fail-with-body -X PUT \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/home' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"location_id":"00000000-0000-4000-8000-000000000010"}'
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints home_location_id string Required
DELETE /v1/farm/{farm_id}/locations/home
Clear Home Premises
Clear the default home premises. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"}
Request example
bash example Copy example
curl --fail-with-body -X DELETE \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/home' \
-H "Authorization: Bearer $RANCHBOT_TOKEN"
Responses
Status Meaning Content type 204 Cleared No body 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
GET /v1/farm/{farm_id}/locations/{location_id}
Get Location
Get one location with its sublocations and premises identifiers. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"}
Request example
bash example Copy example
curl --fail-with-body -X GET \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>' \
-H "Authorization: Bearer $RANCHBOT_TOKEN"
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints location object Required location.id string Required location.farm_id string Required location.parent_id (variant 1) null Optional location.parent_id (variant 2) string Optional location.name string Required location.category (variant 1) null Optional location.category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] location.context (variant 1) null Optional location.context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] location.address (variant 1) null Optional location.address (variant 2) string Optional location.legal_land_description (variant 1) null Optional location.legal_land_description (variant 2) string Optional location.country (variant 1) null Optional location.country (variant 2) string Optional location.province_state (variant 1) null Optional location.province_state (variant 2) string Optional location.is_active boolean Required location.version integer Required location.path string Required location.root_id string Required location.identifiers array Required location.identifiers[] object Required location.identifiers[].id string Required location.identifiers[].location_id string Required location.identifiers[].scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] location.identifiers[].scheme_label (variant 1) null Optional location.identifiers[].scheme_label (variant 2) string Optional location.identifiers[].issuer (variant 1) null Optional location.identifiers[].issuer (variant 2) string Optional location.identifiers[].jurisdiction (variant 1) null Optional location.identifiers[].jurisdiction (variant 2) string Optional location.identifiers[].value string Required location.identifiers[].source (variant 1) null Optional location.identifiers[].source (variant 2) string Optional location.identifiers[].confirmed_by_user_id (variant 1) null Optional location.identifiers[].confirmed_by_user_id (variant 2) string Optional location.identifiers[].confirmed_at (variant 1) null Optional location.identifiers[].confirmed_at (variant 2) string Optional format: "date-time" location.identifiers[].is_preferred boolean Required location.identifiers[].version integer Required location.identifiers[].created_at string Required format: "date-time" location.identifiers[].updated_at string Required format: "date-time" location.created_at string Required format: "date-time" location.updated_at string Required format: "date-time"
PUT /v1/farm/{farm_id}/locations/{location_id}
Update Location
Edit a location directory entry. Pass expected_version to reject a stale edit. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints name string Optional parent_id (variant 1) null Optional parent_id (variant 2) string Optional category (variant 1) null Optional category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] context (variant 1) null Optional context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] address string Optional legal_land_description string Optional country string Optional province_state string Optional expected_version integer Optional
json example Copy example
{
"name": "North field",
"expected_version": 1
}
Request example
bash example Copy example
curl --fail-with-body -X PUT \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"name":"North field","expected_version":1}'
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints location object Required location.id string Required location.farm_id string Required location.parent_id (variant 1) null Optional location.parent_id (variant 2) string Optional location.name string Required location.category (variant 1) null Optional location.category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] location.context (variant 1) null Optional location.context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] location.address (variant 1) null Optional location.address (variant 2) string Optional location.legal_land_description (variant 1) null Optional location.legal_land_description (variant 2) string Optional location.country (variant 1) null Optional location.country (variant 2) string Optional location.province_state (variant 1) null Optional location.province_state (variant 2) string Optional location.is_active boolean Required location.version integer Required location.path string Required location.root_id string Required location.identifiers array Required location.identifiers[] object Required location.identifiers[].id string Required location.identifiers[].location_id string Required location.identifiers[].scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] location.identifiers[].scheme_label (variant 1) null Optional location.identifiers[].scheme_label (variant 2) string Optional location.identifiers[].issuer (variant 1) null Optional location.identifiers[].issuer (variant 2) string Optional location.identifiers[].jurisdiction (variant 1) null Optional location.identifiers[].jurisdiction (variant 2) string Optional location.identifiers[].value string Required location.identifiers[].source (variant 1) null Optional location.identifiers[].source (variant 2) string Optional location.identifiers[].confirmed_by_user_id (variant 1) null Optional location.identifiers[].confirmed_by_user_id (variant 2) string Optional location.identifiers[].confirmed_at (variant 1) null Optional location.identifiers[].confirmed_at (variant 2) string Optional format: "date-time" location.identifiers[].is_preferred boolean Required location.identifiers[].version integer Required location.identifiers[].created_at string Required format: "date-time" location.identifiers[].updated_at string Required format: "date-time" location.created_at string Required format: "date-time" location.updated_at string Required format: "date-time"
POST /v1/farm/{farm_id}/locations/{location_id}/archive
Archive Location
Archive a location. Archiving a premises archives its sublocations and clears a matching home default. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints expected_version integer Optional
json example Copy example
{
"expected_version": 1
}
Request example
bash example Copy example
curl --fail-with-body -X POST \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>/archive' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"expected_version":1}'
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints location object Required location.id string Required location.farm_id string Required location.parent_id (variant 1) null Optional location.parent_id (variant 2) string Optional location.name string Required location.category (variant 1) null Optional location.category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] location.context (variant 1) null Optional location.context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] location.address (variant 1) null Optional location.address (variant 2) string Optional location.legal_land_description (variant 1) null Optional location.legal_land_description (variant 2) string Optional location.country (variant 1) null Optional location.country (variant 2) string Optional location.province_state (variant 1) null Optional location.province_state (variant 2) string Optional location.is_active boolean Required location.version integer Required location.path string Required location.root_id string Required location.identifiers array Required location.identifiers[] object Required location.identifiers[].id string Required location.identifiers[].location_id string Required location.identifiers[].scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] location.identifiers[].scheme_label (variant 1) null Optional location.identifiers[].scheme_label (variant 2) string Optional location.identifiers[].issuer (variant 1) null Optional location.identifiers[].issuer (variant 2) string Optional location.identifiers[].jurisdiction (variant 1) null Optional location.identifiers[].jurisdiction (variant 2) string Optional location.identifiers[].value string Required location.identifiers[].source (variant 1) null Optional location.identifiers[].source (variant 2) string Optional location.identifiers[].confirmed_by_user_id (variant 1) null Optional location.identifiers[].confirmed_by_user_id (variant 2) string Optional location.identifiers[].confirmed_at (variant 1) null Optional location.identifiers[].confirmed_at (variant 2) string Optional format: "date-time" location.identifiers[].is_preferred boolean Required location.identifiers[].version integer Required location.identifiers[].created_at string Required format: "date-time" location.identifiers[].updated_at string Required format: "date-time" location.created_at string Required format: "date-time" location.updated_at string Required format: "date-time"
POST /v1/farm/{farm_id}/locations/{location_id}/restore
Restore Location
Restore an archived location. A sublocation requires an active parent; restoring a premises restores its sublocations. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints expected_version integer Optional
json example Copy example
{
"expected_version": 2
}
Request example
bash example Copy example
curl --fail-with-body -X POST \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>/restore' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"expected_version":2}'
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints location object Required location.id string Required location.farm_id string Required location.parent_id (variant 1) null Optional location.parent_id (variant 2) string Optional location.name string Required location.category (variant 1) null Optional location.category (variant 2) string Optional enum: ["FARM","FIELD","PEN","BARN","VET","RODEO","ABATTOIR","AUCTION","OTHER"] location.context (variant 1) null Optional location.context (variant 2) string Optional enum: ["OPERATED","LEASED","EXTERNAL"] location.address (variant 1) null Optional location.address (variant 2) string Optional location.legal_land_description (variant 1) null Optional location.legal_land_description (variant 2) string Optional location.country (variant 1) null Optional location.country (variant 2) string Optional location.province_state (variant 1) null Optional location.province_state (variant 2) string Optional location.is_active boolean Required location.version integer Required location.path string Required location.root_id string Required location.identifiers array Required location.identifiers[] object Required location.identifiers[].id string Required location.identifiers[].location_id string Required location.identifiers[].scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] location.identifiers[].scheme_label (variant 1) null Optional location.identifiers[].scheme_label (variant 2) string Optional location.identifiers[].issuer (variant 1) null Optional location.identifiers[].issuer (variant 2) string Optional location.identifiers[].jurisdiction (variant 1) null Optional location.identifiers[].jurisdiction (variant 2) string Optional location.identifiers[].value string Required location.identifiers[].source (variant 1) null Optional location.identifiers[].source (variant 2) string Optional location.identifiers[].confirmed_by_user_id (variant 1) null Optional location.identifiers[].confirmed_by_user_id (variant 2) string Optional location.identifiers[].confirmed_at (variant 1) null Optional location.identifiers[].confirmed_at (variant 2) string Optional format: "date-time" location.identifiers[].is_preferred boolean Required location.identifiers[].version integer Required location.identifiers[].created_at string Required format: "date-time" location.identifiers[].updated_at string Required format: "date-time" location.created_at string Required format: "date-time" location.updated_at string Required format: "date-time"
POST /v1/farm/{farm_id}/locations/{location_id}/identifiers
Add Premises Identifier
Add a premises identifier to a root premises. Values are stored as strings with leading zeros preserved; no registry verification is claimed. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] scheme_label string Optional issuer string Optional jurisdiction string Optional value string Required source string Optional confirmed boolean Optional is_preferred boolean Optional
json example Copy example
{
"scheme": "CA_PID",
"value": "A0012345",
"issuer": "Alberta"
}
Request example
bash example Copy example
curl --fail-with-body -X POST \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>/identifiers' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"scheme":"CA_PID","value":"A0012345","issuer":"Alberta"}'
Responses
Status Meaning Content type 201 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
201 response schema (application/json)
Field Type Presence Constraints identifier object Required identifier.id string Required identifier.location_id string Required identifier.scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] identifier.scheme_label (variant 1) null Optional identifier.scheme_label (variant 2) string Optional identifier.issuer (variant 1) null Optional identifier.issuer (variant 2) string Optional identifier.jurisdiction (variant 1) null Optional identifier.jurisdiction (variant 2) string Optional identifier.value string Required identifier.source (variant 1) null Optional identifier.source (variant 2) string Optional identifier.confirmed_by_user_id (variant 1) null Optional identifier.confirmed_by_user_id (variant 2) string Optional identifier.confirmed_at (variant 1) null Optional identifier.confirmed_at (variant 2) string Optional format: "date-time" identifier.is_preferred boolean Required identifier.version integer Required identifier.created_at string Required format: "date-time" identifier.updated_at string Required format: "date-time"
PUT /v1/farm/{farm_id}/locations/{location_id}/identifiers/{identifier_id}
Update Premises Identifier
Update a premises identifier. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"} identifier_id path Yes {"type":"string","format":"uuid"}
Request body (application/json)
Field Type Presence Constraints scheme string Optional scheme_label string Optional issuer string Optional jurisdiction string Optional value string Optional source string Optional confirmed boolean Optional is_preferred boolean Optional expected_version integer Optional
json example Copy example
{
"value": "A0012346",
"expected_version": 1
}
Request example
bash example Copy example
curl --fail-with-body -X PUT \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>/identifiers/<identifier_id>' \
-H "Authorization: Bearer $RANCHBOT_TOKEN" \
-H "Content-Type: application/json" \
--data '{"value":"A0012346","expected_version":1}'
Responses
Status Meaning Content type 200 Success application/json 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
200 response schema (application/json)
Field Type Presence Constraints identifier object Required identifier.id string Required identifier.location_id string Required identifier.scheme string Required enum: ["CA_PID","US_PIN","US_LID","OTHER"] identifier.scheme_label (variant 1) null Optional identifier.scheme_label (variant 2) string Optional identifier.issuer (variant 1) null Optional identifier.issuer (variant 2) string Optional identifier.jurisdiction (variant 1) null Optional identifier.jurisdiction (variant 2) string Optional identifier.value string Required identifier.source (variant 1) null Optional identifier.source (variant 2) string Optional identifier.confirmed_by_user_id (variant 1) null Optional identifier.confirmed_by_user_id (variant 2) string Optional identifier.confirmed_at (variant 1) null Optional identifier.confirmed_at (variant 2) string Optional format: "date-time" identifier.is_preferred boolean Required identifier.version integer Required identifier.created_at string Required format: "date-time" identifier.updated_at string Required format: "date-time"
DELETE /v1/farm/{farm_id}/locations/{location_id}/identifiers/{identifier_id}
Delete Premises Identifier
Remove a premises identifier. Directory scopes use read:farms/write:farms; minimum farm role READER for reads and EDITOR for writes.
Parameter In Required Schema farm_id path Yes {"type":"string","format":"uuid"} location_id path Yes {"type":"string","format":"uuid"} identifier_id path Yes {"type":"string","format":"uuid"}
Request example
bash example Copy example
curl --fail-with-body -X DELETE \
'https://api.ranch.bot/v1/farm/<farm_id>/locations/<location_id>/identifiers/<identifier_id>' \
-H "Authorization: Bearer $RANCHBOT_TOKEN"
Responses
Status Meaning Content type 204 Removed No body 400 Request validation failed. No body 401 Missing/invalid authentication or insufficient farm role. No body 403 Missing required external credential scope. No body 404 Location not found. No body
Error body
Validation and authentication errors generally use this envelope. Rate-limit errors omit data; OAuth polling also has protocol-specific errors shown in its reference.
json example Copy example
{
"success": false,
"errors": [
{
"code": 400,
"name": "ValidationError",
"message": "Example validation failure"
}
]
}