---
title: "Permanently remove a practitioner specialty (hard delete with FK cascade)"
method: DELETE
path: "/practitioners/{practitionerId}/tenant-practitioner-specialties/{tpsId}"
tags: ["Practitioner"]
---

# Permanently remove a practitioner specialty (hard delete with FK cascade)

`DELETE /practitioners/{practitionerId}/tenant-practitioner-specialties/{tpsId}`

Hard-deletes a TenantPractitionerSpecialty record and all dependent group_practitioner_location_specialties and tenant_group_practitioner_location_network_specialties rows in a single atomic Spanner transaction. The specialty must not be the primary specialty (isPrimary=true).

## Path parameters

- `practitionerId` string, required
- `tpsId` string, required

## Headers

- `tenant-id` string

## Response `200`

Specialty removed successfully

## Other responses

- `400` — Bad request — cannot remove primary specialty
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — TenantPractitionerSpecialty not found
- `500` — Internal server error

---

[API](https://skmtc.net/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.net/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/versions/3d27e9019c7b/schema)
