Partially update a shelter profile

This operation edits specific fields of an existing shelter record in the PawFinder System.

PUT vs PATCH

PUT replaces an entire profile and PATCH only updates the fields provided in the request body. In a PUT request, missing fields set to null or default values. In a PATCH request, fields not present in the request remain unchanged.

Endpoint structure

PATCH /shelters/{id}

Request headers

Header Value Required
Content-Type application/json Yes

Request body

All fields required.

Property Type Description
name string Shelter’s name
address string Shelter’s address information
phone string Shelter’s phone number, E.164 format
email string Shelter’s email address
hours string Shelter’s hours of operation
available_pet_count integer Shelter’s available pets
adoption_fee_range string Shelter’s fee range in United States Dollar

Field requirements

Field Validation Rule
phone Must be E.164 format: +1-XXX-XXX-XXXX

ID generation

PawFinder auto-generates shelter unique identifiers, id. The system ignores id fields in PATCH request bodies or returns a 400 error.

cURL request

curl -X PATCH {base_url}/shelters/1 \
  -H "Authorization: Bearer pawfinder-secret-2025" \
  -H "Content-Type: application/json" \
  -d '{ 
          "available_pet_count": 20 
      } 

Example responses

Response: 200 OK

{
  "name": "Dallas Animal Services",
  "address": "1818 N Westmoreland Rd, Dallas, TX 75212",
  "phone": "+1-214-671-0249",
  "email": "info@dallasanimalservices.org",
  "hours": "Mon-Sat 11:00-19:00",
  "available_pet_count": 20,
  "adoption_fee_range": "75-200",
  "id" : 1
}

Response: 400 Bad Request - missing required field values

{
  "error": "Bad Request",
  "message": "Missing required field: name",
  "status": 400
}

Response: 400 Bad Request - invalid values for fields phone or adoption_fee_range

{
  "error": "Bad Request",
  "message": "Invalid value for 'adoption_fee_range'.
             Must be in USD.",
  "status": 400
}

Response: 404 Not Found - no matching id

{
  "error": "Not Found",
  "message": "Shelter with ID 999 not found",
  "status": 404
}