Help with creating public API

I'm currently evaluating UNA because our existing platform no longer meets our needs. So far, UNA appears to be a good fit, but there's a crucial feature on our current platform that I'm unsure is available in UNA: the ability to automatically create posts/discussions via public API.

In our current setup, we create content on a separate system and use a cron job to post it to our platform via API . Is there a way to achieve this in UNA? If not, is there any documentation explaining the relationships between entities that need to be populated when creating a post/discussion? This is the main obstacle preventing us from transitioning to UNA.

  • 367
  • More
Replies (9)
    • Hello @Olu Ade 👋

      There is an API module. I haven't tackled that one yet, so I have no information outside it is possible. Basically you can access the internal service points using the API. Once you understand how that all works, its easy. It took me a while to wrap my head around service calls (coming from last 10 years of Android development, service calls is a whole different thing 😁). Anyhow..... Here is the stuff to get you started:

      https://unacms.com/wiki/Dev-API

      And a more in depth breakdown of the calls:

      https://ci.una.io/docs/public_api.html

      Be advised, API is a pro app: https://unacms.com/view-product/api

      • @Wise Many thanks for your comments. I'll check the links and see if I can figure this out. I really appreciate your help.

        • When you do, I would also appreciate an update on your progress.

          • I haven't made much progress on this. I've gone through the documentation without any luck. I really need this functionality but I'm currently stuck.😢

            • There needs to be a lot more example scripts. No one knows how to use this stuff, except UNA.

              • We've just updated UNA API documentation describing new API functionality how to authenticate with secret key

                https://unacms.com/wiki/Dev-API#api-keys-authentication

                • Thank you for your response. I was able to resolve the issue after addressing a PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /home/ext/sites/una/modules/base/general/classes/BxBaseModGeneralFormsEntryHelper.php:196.

                  • Thank you for the feedback, could you please more details on how to reproduce the issue and what is your UNA version ?

                    • UNA Version: 14.0.0-A3

                      When using the curl example on the DEV API page:

                      An error occurs:

                      PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /home/ext/sites/una/modules/base/general/classes/BxBaseModGeneralFormsEntryHelper.php:196
                      Stack trace:
                      #0 /home/ext/sites/una/modules/base/general/classes/BxBaseModGeneralModule.php(1230): BxBaseModGeneralFormsEntryHelper->addData()
                      #1 /home/ext/sites/una/inc/classes/BxDolRequest.php(132): BxBaseModGeneralModule->serviceEntityAdd()
                      #2 /home/ext/sites/una/inc/classes/BxDolRequest.php(57): BxDolRequest::_perform()
                      #3 /home/ext/sites/una/inc/classes/BxDolService.php(51): BxDolRequest::processAsService()
                      #4 /home/ext/sites/una/api.php(72): BxDolService::call()
                      #5 {main}
                        thrown in /home/ext/sites/una/modules/base/general/classes/BxBaseModGeneralFormsEntryHelper.php on line 196
                      

                      Temporary Fix:

                      To resolve this issue, check for the type of the $aValues variable passed to the addData method. If it is not an array, cast it to an array.

                      In /home/ext/sites/una/modules/base/general/classes/BxBaseModGeneralFormsEntryHelper.php, modify the addData method as follows:

                      public function addData($iProfile, $aValues, $sDisplay = false)
                      {
                          if (!is_array($aValues)) {
                              $aValues = (array) $aValues;
                          }
                          // Rest of the method implementation
                      }
                      

                      This modification ensures that $aValues is always treated as an array, preventing the fatal error and allowing the method to process the data correctly.

                      Login or Join to comment.