How to ship via API

Let’s say we have a ShipStation account attached to our store. We have 2 options to ship programitically (from our WMS application), as I see it:

  1. Ship via ShipStation API directly from our server, and then communicate fulfillment back to Shopify via the order admin API.
  2. Ship via Shopify using order admin API, and let Shopify talk to ShipStation

Which is the preferred method? The advantage to the second option is that it takes care of updating all Shopify data AND eliminates the need to manage ShipStation setup on my end, and is one “step”. That said, I am not even sure it is possible. The https://shopify.dev/api/admin-rest/2022-01/resources/fulfillment#top looks promising, maybe, but still trying to digest it.

I assume the first option is possible, since I know we can pull down the orders. We currently use admin/api/2020-01/orders.xml?fulfillment_status=unfulfilled&limit=$Limit to get refresh orders nightly, so I am thinking it is possible to do something similar with admin/api/2020-01/{order-id}.xml (based on https://shopify.dev/api/admin-rest/2022-01/resources/order#[put]/admin/api/2022-01/orders/{order_id}.json). Yes, I assume I can replace “json” with “xml”, since that works great for reading the orders. I already have XML code, so using it might be easier. Then again, maybe I need to use one of the actions at https://shopify.dev/api/admin-rest/2022-01/resources/fulfillmentorder#top, or one of the related fulfillment APIs.

On a related note, does anyone know of a handy help article that shows the full process (order creation to order fulfillment), purely through API calls? A sort of “best practices” type help article is all I am looking for, really.

Maybe my question is irelevent because maybe ShipStation automatically communicates back to Shopify for fulfillment? I guess my question might have value for other situations, not sure it has value for mine. Please tell me where my thinking is wrong.