REST protocol (with JSON/XML payload support)

Web service protocols ::: webservice_restjson
Maintained by Owen Barritt
REST webservice protocol based on the standard core REST webservice, but with added support for JSON & XML payloads and supports using HTTP ACCEPTS headers for determining response format.
Latest release:
152 sites
21 downloads
10 fans
Current versions available: 1

REST webservice protocol based on the standard core REST webservice, but with added support for JSON & XML payloads and supports using HTTP ACCEPTS headers for determining response format.

Installation

Simply place the plugin files in ./webservice/restjson

Setup

Should be enabled and setup in the standard way for webservices.  See https://docs.moodle.org/29/en/Using_web_services for details.

Usage

The protocol can be called in the usual way for webservices with either JSON or XML data specified in content type (also backward compatible with current REST webservice so will also accept POST form data)

e.g. for a JSON payload

curl -H "Content-Type: application/json" -X POST -d '{"wsfunction":"...", "wstoken":"...",request object}' http://moodle.url/path/to/webservice/restjson/server.php

Parameters such as wsfunction and wstoken can also still be specified in the URL if required

curl -H "Content-Type: application/json" -X POST -d '{request object}' http://moodle.url/path/to/webservice/restjson/server.php?wsfunction=...&wstoken=...

Response format can also be set to XML or JSON by setting the accept HTTP header e.g. to send in JSON and receive in XML (by default same format is used to return as originally received) you could use:

curl -H "Content-Type: application/json" -H "Accept: application/xml"-X POST -d '{request object}' http://moodle.url/path/to/webservice/restjson/server.php?wsfunction=...&wstoken=...

Contributors

Owen Barritt (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Erakutsi iruzkinak
  • Natalie Peyton
    og., 2016(e)ko api.ren 28(e)an, 22:49(e)tan
    Great plugin. Very handy for any web developer.
  • manikandan Selvaraj
    az., 2017(e)ko mar.ren 22(e)an, 18:19(e)tan
    Hi Owen,

    How can i format the json object to post, because call core_course_create_courses method for create course, my json structure was [{"fullname":"Bulk insert","shortname":"short bulk","categoryid":1}]
    But i got the error link {"exception":"invalid_parameter_exception","errorcode":"invalidparameter","message":"Invalid parameter value detected"}

    Could you please suggest what kind of structure i need to send course creation
  • manikandan Selvaraj
    az., 2017(e)ko mar.ren 22(e)an, 18:45(e)tan
    Hi Ownen,

    I tried this json structure too but no luck {"Courses":[{"fullname":"Bulk insert","shortname":"short bulk","categoryid":1}]}
  • Albert Leatherman
    ar., 2017(e)ko api.ren 18(e)an, 08:46(e)tan
    Hi Owen, any chance of getting a quick example video for those of us aspiring to use server calls with Moodle but not yet quite up to speed on how they're done?
  • Mohammad Eftekhari
    al., 2017(e)ko uzt.ren 17(e)an, 16:37(e)tan
    ( For those who don't know how to send the request via Command Line, like me some minutes ago. )

    Because the request format is ambiguous. I couldn't understand how to send the "request Object". so I tried this and it worked :

    curl -k -X POST -d "id=63&filename=windiff.zip" "https://localhost/moodle/webservice/rest/server.php?wsfunction=local_wstemplate_hello_world&wstoken=f5b0854a870e05f960cff39fc2a40665"

    hope it helps
  • Emil Wilmański
    al., 2017(e)ko urr.ren 23(e)an, 07:57(e)tan
    Hello Owen,
    I try to use Moodle webservice within google apps, so json could be great to use, but I cant get that plugin to work.
    Generally Moodle is not easy platform for anybody. So,
    * my Moodle version is 3.1
    * permission webservice/rest:use -> allow (standard REST works)
    * token is valid (standard REST works)
    * plugin webservice_restjson is enabled (0.4 for Moodle 2.9+ 2016021900)
    * protocol REST protocol (with JSON/XML input support) -> enabled
    request:
    curl -H "Content-Type: application/json" -X GET http://elearning.casadelalengua.pl/webservice/restjson/server.php?wsfunction=core_course_get_courses&wstoken=33ff697d305xyz
    I've got
    {"exception":"webservice_access_exception","errorcode":"accessexception","message":"Wyj\u0105tek w kontroli dost\u0119pu"}
    so I don't know what still I have wrong.

    Can you help me with this problem?
  • Chandni Pandya
    og., 2018(e)ko uzt.ren 19(e)an, 18:10(e)tan
    This can be so helpful to web developer
  • Vivek Singh
    az., 2018(e)ko urr.ren 3(e)an, 19:10(e)tan
    Excellent plugin and very helpful for any magento developer.
  • Hodaya Ankri
    og., 2019(e)ko abu.ren 29(e)an, 15:47(e)tan
    Thanks for this useful plugin!!! It helps me a lot!!!
  • mango itsolutions
    az., 2020(e)ko mar.ren 18(e)an, 15:40(e)tan
    Hey Owen,
    I've used your plugin and found it is very well performing and any web developer can use it very easily
  • Marc Mathys
    ig., 2020(e)ko mar.ren 29(e)an, 09:25(e)tan
    Hi. Can this be used by a device to send/receive JSON data (files) and store it in moodle for later access by the device or user?
  • Navneet Kaur
    or., 2021(e)ko urr.ren 8(e)an, 21:09(e)tan
    Best plugin
  • Noha James
    ar., 2024(e)ko abe.ren 17(e)an, 14:41(e)tan
    Thanks for sharing this post. It offers valuable information to the Web Developers
  • Daniel smith
    az., 2024(e)ko abe.ren 18(e)an, 23:47(e)tan
    Great plugin and very helpful for any Kentico developers
  • alouadifa ma
    ig., 2025(e)ko mai.ren 11(e)an, 04:41(e)tan
    This is a great enhancemen adding support for both JSON and XML with HTTP Accept headers brings much-needed flexibility to Moodle’s REST webservices! Whether you're integrating with legacy systems or modern APIs, this plugin bridges the gap beautifully. keeping it backward compatible is a smart move.
1 2 3
Please login to post comments