Hi again, I'm Anudit Verma, a sophomore undergraduate student pursuing Computer Science and Engineering at University School of Information and Communication Technology, in New Delhi, India.
This year I worked on Open Supporter Data Interface (OSDI) API implementation into CiviCRM project as a 2015 Google Summer of Code student. This is my second blog post in which I will be concluding and summarizing the work I have done past this summer.
You can look at the introductory blog post which was posted at the start of the coding period here:
https://civicrm.org/blogs/anudit-verma/implementing-open-supporter-data-interface-osdi-api-civicrm
Looking back at the 'Overview'
The OSDI API implementation is in line with CiviCRM's mission to be an open platform for organizations of all sizes. Creating the implementation will allow them to use the OSDI API easily. The existence of a common API will reduce progressive data vendors’ customer costs related to moving data between different systems, lower integration costs and enhance the ability of innovators to create products for the marketplace. You can learn more about OSDI at www.opensupporter.org
The 'org.civicrm.osdi' Extension
The OSDI implementation project was developed as an extension for CiviCRM. This extension act as a connecting bridge between two systems one having OSDI implementation and the one using this extension. It can performs GET request to retrieve the people's data from the implemented system based on OSDI specifications. It includes 'Person Sign-up Helper' which is a helper endpoint to aid in the creation of People resources via POST requests. This extension utilizes REST API calls, you can GET the desired data or perform various actions like POST, PUT and DELETE through the REST interface.
AEP : API Entry Point
To explore the people's data on the server AEP was constructed which is a part of the OSDI specification. The AEP helps in exploring the various endpoints like people's collection, individual person's record, brand logo etc. Also AEP has 'Person Sign-up Helper' for creation of new individual resources.
[]
This extension is capable of handling the following actions, let's look up to them briefly:
[]
POST -these requests are used to add a new person's record into the system. The 'Person Sign-up Helper' accepts these requests in JSON format having fields' name according to OSDI specification.To POST a new record click on the NON-GET button (orange color) and provide the data in JSON format. The fields provided should be based OSDI specification in order to get this request accepted into the system.
[]
[]
[]
Using the extension
You can follow the documentation present in the GitHub repository of this project. Here : https://github.com/anuditverma/org.civicrm.osdi
Conclusion
This project fulfills the basic requirements to be considered as an extension for implementing OSDI into the CiviCRM system. The 'Person Sign-up Helper' is developed to post a new record into the system based on OSDI specification. Similarly, various actions like GET, POST, PUT and DELETE are used to perform control actions as per OSDI specification. So as per GSoC and other mandatory fulfillments this project stands complete. Right now, its alpha version would be released and uploaded on the CiviCRM extension directory. Though I would continue contributing to the Git Hub repository, testing the extension more, fixing self-raised issues and issues reported by others. I would add more helpers which are defined in the OSDI specification.
Acknowledgments
I would like to thanks Joe McLaughlin and Eileen McNaughton who were the mentors assigned to me for this project.
See Also
Project repository on GitHub here https://github.com/anuditverma/org.civicrm.osdi
Learn more about OSDI.
Comments
DELETE use case
Anudit, you are to be commended for your unfailing politeness and eventual persistence in completing this project. Thanks for the useful work.
One small note about this post: would the example DELETE cause the deletion of all persons in the CiviCRM database? Wouldn't a more common use case be to delete a specific person based on their external_identifier or email + first_name + last_name? Perhaps you could provide an image of that instead of the empty body one above.
Best wishes,
Joe
Thank you so much Sir.