# Catalog API does NOT offer PATCH, correct?

**URL:** <https://developer.squareup.com/forums/t/catalog-api-does-not-offer-patch-correct/1271>\
**Category:** Questions\
**Tags:** catalog-api\
**Created:** [November 19, 2020, 1:46am UTC](https://developer.squareup.com/forums/t/catalog-api-does-not-offer-patch-correct/1271 "2020-11-19T01:46:29Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![JasonFil](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/jasonfil/32/321_2.png) [@JasonFil](https://developer.squareup.com/forums/u/JasonFil)\
**Post date:** [November 19, 2020, 1:46am UTC](https://developer.squareup.com/forums/t/catalog-api-does-not-offer-patch-correct/1271/1 "2020-11-19T01:46:29Z")

</div>

Hello,

I was playing around with the API explorer in the Catalog API to understand how the `UpsertCatalogObject` endpoint works as effectively the common gateway of `POST` and `PUT`. After using the correct `(Object_ID, version)` pair on the second `UpsertCatalogObject` request, I was able to confirm through the `SearchObjects` API call that `PUT` had occured correctly: my Sandbox environment only has one `CatalogObject`, and it is the one that I provided in the second `UpsertCatalogObject` payload.

I noticed, however, that when I left some fields that I have used for the first `Upsert` unset for the second, that those fields ended up unset on the object left on the server.

This, to me, means that `UpsertCatalogObject` is a `POST` and `PUT` - only API. Is this correct? If so, is there perhaps a different API or mechanism I could use if I ever wanted to serve a `PATCH`?

---

<div class="post-metadata">

**Author:** ![sjosey](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/sjosey/32/40_2.png) [@sjosey](https://developer.squareup.com/forums/u/sjosey)\
**Post date:** [November 19, 2020, 5:08pm UTC](https://developer.squareup.com/forums/t/catalog-api-does-not-offer-patch-correct/1271/2 "2020-11-19T17:08:08Z")

</div>

Unfortunately not at this time. As you say, the `UpsertCatalogObject` must include all the fields that you intend on keeping or else they will be removed from the actual object. Typically in these scenarios we recommend retrieving the entire catalog object first, and editing the object directly changing what you need, and then pushing the entire object to `UpsertCatalogObject` to ensure nothing is accidentally deleted.
