You can connect your CMS to Batch to send push notifications using the Push Campaigns API. It gives you the same level of features as Batch's dashboard:
Targeting: Basic, native and custom attributes targeting.
Scheduling: Scheduled and recurring push campaigns.
Messaging: A/B testing, deeplink, custom payload, rich push notifications, etc.
Here is how a basic Campaigns API + CMS setup looks like:

With the Push Campaigns API you can:
POST - Create, edit or delete an existing push campaign. If the POST to the API endpoint is successfull you will receive an HTTP 201 confirmation with a campaigns token. Each time you send a push campaign, Batch also receives feedback from APNS/FCM and cleans the invalid tokens for you.
GET - Get the list of the push campaigns you have scheduled in the past
GET - Retrieve the properties of a specific push campaign.
GET - Track the results of a campaign using a campaign token (collected beforehand or when you retrieved the list of push campaigns).
You can do the exact same thing to create In-App Campaigns, using the In-App Campaigns API.
🚧 Important note : Batch manages iOS, Android and web push integrations apps separately. You will need to call our APIs twice if your app has an iOS and an Android version.