By "official programming interface", I'm referring to what IBM calls "general-use programming interface" (GUPI), which means that IBM officially support that usage. There is also "product-specific programming interface" (PSPI), which is a "use at your own risk" interface where they are free to change it, even in service updates, but they will normally call attention to such changes as a reminder. GUPI and PSPI constitute intended programming interfaces. Listings are not even normally considered PSPI. Message identifiers (where present) can be used for programming purposes, but message text information is primarily documented for human reference and diagnosis purposes. Automation tools often rely to some extent on message text but may need frequent maintenance to keep track of changes. In some cases, products may make message inserts available separately, for example to user exits.
For an example of how IBM document programming interfaces, see the following page for Db2: https://www.ibm.com/docs/en/db2-for-zos/13.0.0?topic=notices-programming-interface-information IBM is obviously well aware that vendors and customers are using programs to process listings, messages and perform screen-scraping, so it tries to avoid unnecessary change and calls attention to necessary change. However, there is no guarantee that changes will be compatible or that existing techniques will continue to be supported unless IBM explicitly documents them as a general-use programming interface (GUPI). Jonathan Scott