You can copy existing API and create your own. In the new API, comment out below code and create new procedure or rename existing to something like shipOnly(not a requirement just best practise):
local procedure PostWithShipAndInvoice(var SalesHeader: Record "Sales Header"; var SalesInvoiceHeader: Record "Sales Invoice Header")
var
DummyO365SalesDocument: Record "O365 Sales Document";
LinesInstructionMgt: Codeunit "Lines Instruction Mgt.";
O365SendResendInvoice: Codeunit "O365 Send + Resend Invoice";
OrderNo: Code[20];
OrderNoSeries: Code[20];
begin
O365SendResendInvoice.CheckDocumentIfNoItemsExists(SalesHeader, false, DummyO365SalesDocument);
LinesInstructionMgt.SalesCheckAllLinesHaveQuantityAssigned(SalesHeader);
OrderNo := SalesHeader."No.";
OrderNoSeries := SalesHeader."No. Series";
SalesHeader.Ship := true;
//SalesHeader.Invoice := true;//
SalesHeader.SendToPosting(Codeunit::"Sales-Post");
SalesInvoiceHeader.SetCurrentKey("Order No.");
SalesInvoiceHeader.SetRange("Pre-Assigned No. Series", '');
SalesInvoiceHeader.SetRange("Order No. Series", OrderNoSeries);
SalesInvoiceHeader.SetRange("Order No.", OrderNo);
SalesInvoiceHeader.FindFirst();
end;
Note: You also need to change few other bits since API looking for created invoice number so find that code but above works as is though u get a error response but order is shiped
/salesOrders(4bac2cec-1821-ec11-8f46-00224810896b)/Microsoft.NAV.shipOnly