MUTATIONS ============= | จะเป็น Function ที่ใช้ในการเขียนข้อมูลหรือมีการเปลี่ยนแปลงข้อมูลใน Database และสามารถตอบกลับผลลัพธ์ได้เช่นเดียวกับ Queries ประกอบด้วย | ClearFeed ----------- สำหรับลบข้อมูลทั้งหมดใน Time Series Data Store ของ Device ตัวนั้น ๆ ใช้ในกรณีที่ต้องการลบข้อมูลในช่วงการทดสอบระบบ หรือเป็นข้อมูลที่ไม่ได้ใช้งานจริง รายละเอียดดังนี้ :clearFeed ( feedid ): Arguments - ``feedid``: *String* คือ รหัสของ Feed ซึ่งใช้ค่าเดียวกับ ``deviceid`` (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : FeedData ตอบกลับเป็น Object Type FeedData ประกอบด้วย - ``feedid``: *String* คือ รหัสของ Feed - ``data``: *JSON* คือ ข้อมูลในแต่ละฟิลด์ ตัวอย่างการเข้าถึงข้อมูล ดังรูปด้านล่าง .. image:: _static/gql2_clearfeed.png CreateAPIToken ------------------------- สำหรับสร้างและขอ API Token เป็น Authentication เพื่อใช้งาน API ต่างๆ ใน Platform รายละเอียดดังนี้ :createAPIToken ( payload, nbf, expireIn ): Arguments - ``payload``: *payload* คือ ระบุสิ่งที่อนุญาตให้เข้าถึงในรูปแบบ Object Type แยกเป็น 3 ฟิล์ด คือ - ``device``: *[device_permission]* คือ สิทธิ์ในการเข้าถึง Device อยู่ในรูปแบบ Array ของ Object ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device ที่อนุญาตให้เข้าถึง - ``scope``: *[scope]* คือ ขอบเขตสิทธิ์การเข้าถึง ประกอบด้วย - ``read_shadow`` (อนุญาตอ่าน Shadow ของ Device) - ``write_shadow`` (อนุญาตเขียน Shadow ของ Device) - ``read_feed`` (อนุญาตอ่านข้อมูลใน Timeseries Data ของ Device) - ``read_devicestatus`` (อนุญาตอ่านสถานะการเชื่อมต่อ Platform ของ Device) - ``project``: *[project_permission]* คือ สิทธิ์ในการเข้าถึง Project อยู่ในรูปแบบ Array ของ Object ประกอบด้วย - ``projectid``: *String* คือ รหัสของ Project ที่อนุญาตให้เข้าถึง - ``scope``: *[scope]* คือ ขอบเขตสิทธิ์การเข้าถึง ประกอบด้วย - ``read_shadow`` (อนุญาตอ่าน Shadow ของทุก Device ภายใต้ Project) - ``write_shadow`` (อนุญาตเขียน Shadow ของทุก Device ภายใต้ Project) - ``read_feed`` (อนุญาตอ่านข้อมูลใน Timeseries Data ของทุก Device ภายใต้ Project) - ``read_devicestatus`` (อนุญาตอ่านสถานะการเชื่อมต่อ Platform ของทุก Device ภายใต้ Project) - ``group``: *[group_permission]* คือ สิทธิ์ในการเข้าถึง Group อยู่ในรูปแบบ Array ของ Object ประกอบด้วย - ``groupid``: *String* คือ รหัสของ Group ที่อนุญาตให้เข้าถึง - ``scope``: *[scope]* คือ ขอบเขตสิทธิ์การเข้าถึง ประกอบด้วย - ``read_shadow`` (อนุญาตอ่าน Shadow ของทุก Device ภายใต้ Group) - ``write_shadow`` (อนุญาตเขียน Shadow ของทุก Device ภายใต้ Group) - ``read_feed`` (อนุญาตอ่านข้อมูลใน Timeseries Data ของทุก Device ภายใต้ Group) - ``read_devicestatus`` (อนุญาตอ่านสถานะการเชื่อมต่อ Platform ของทุก Device ภายใต้ Group) - ``nbf``: *nbf_format* คือ เวลาที่ Token จะเริ่มใช้งานได้ อยู่ในรูปแบบ Object Type { unit: value } ระบุค่าได้ 3 หน่วย คือ - ``minutes``: *Int* คือ ระยะเวลาเป็นหน่วย นาที - ``hours``: *Int* คือ ระยะเวลาเป็นหน่วย ชั่วโมง - ``days``: *Int* คือ ระยะเวลาเป็นหน่วย วัน - ``expireIn``: *expireIn_format* คือ อายุของ Token อยู่ในรูปแบบ Object Type { unit: value } ระบุค่าได้ 3 หน่วย คือ - ``minutes``: *Int* คือ ระยะเวลาเป็นหน่วย นาที - ``hours``: *Int* คือ ระยะเวลาเป็นหน่วย ชั่วโมง - ``days``: *Int* คือ ระยะเวลาเป็นหน่วย วัน Query Variables ``Authorization``: User Token Response Type : ApiToken ตอบกลับเป็น Object Type ApiToken ประกอบด้วย - ``access_token``: *String* คือ Token สำหรับเข้าใช้บริการ API ต่างๆ ตามสิทธิ์ที่ได้รับ - ``refresh_token``: *String* คือ Token สำหรับใช้ขอ Access Token ใหม่เมื่อหมดอายุ - ``iat``: *String* คือ วันเวลาที่ออก Token (issued at) - ``nbf``: *String* คือ วันเวลาที่ Token จะเริ่มใช้งานได้ (not before) - ``exp``: *String* คือ วันเวลาหมดอายุของ Token (expiration time) - ``expireIn``: *String* คือ อายุของ Token - ``userid``:*String* คือ รหัสของ User ที่เป็นผู้ให้สิทธิ์ - ``_key``:*String* คือ รหัสอ้างอิง ตัวอย่างการสร้างและขอ API Token ดังรูปด้านล่าง .. image:: _static/gql2_createapitoken.png CreateDevice ------------------------- สำหรับขอสร้าง Device ใหม่ รายละเอียดดังนี้ :createDevice ( projectid, deviceid, deviceinfo ): Arguments - ``projectid``: *String* คือ รหัสของ Project ที่ Device จะอยู่ภายใต้ (ต้องระบุ) - ``deviceid``: *String* คือ รหัสของ Device (ถ้าไม่ระบุ ระบบจะทำการสร้างให้อัตโนมัติ) - ``deviceinfo``: *DeviceInfo* คือ Object Type ที่เป็นรายละเอียดของ Device ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device (ถ้าไม่ระบุจะถูกกำหนดเป็นค่าเดียวกับ deviceid ใช้สำหรับอ้างอิงถึง Device) - ``description``: *String* คือ คำอธิบาย Device - ``tag``: *String* คือ แท็กของ Device ในรูปแบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device ในรูปแบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value Query Variables ``Authorization``: User Token Response Type : DeviceWithToken ตอบกลับเป็น Object Type DeviceWithToken ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicetoken``: [String] คือ รายการ Token ทั้งหมดของ Device - ``devicesecret``: String คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device ในรูปแบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device ในรูปแบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน [default]) - ``token``: *Token* คือ Object Type ของข้อมูล Token ประกอบด้วย - ``tokencode``: *String* คือ รหัสของ Token - ``iat``: *String* คือ วันเวลาที่ออก Token (issued at) - ``nbf``: *String* คือ วันเวลาที่ Token จะเริ่มใช้งานได้ (not before) - ``exp``: *String* คือ วันเวลาหมดอายุของ Token (expiration time) - ``expireIn``: *String* คือ อายุของ Token ตัวอย่างการสร้าง Device ใหม่ ดังรูปด้านล่าง .. image:: _static/gql2_createdevice.png CreateDeviceToken ------------------------- สำหรับขอสร้าง Token ของ Device ใหม่ รายละเอียดดังนี้ :createDeviceToken ( deviceid, expireIn, nbf, scope, verify ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุ) - ``expireIn``: *String* คือ อายุของ Token - ``nbf``: *String* คือ วันเวลาที่ Token จะเริ่มใช้งานได้ (not before) - ``scope``: *[String]* คือ ขอบเขตสิทธิ์ของ Token ที่สามารถดำเนินการได้ จะอยู่ในรูปแบบ Array ของ String - ``verify``: *Boolean* คือ ต้องมีการตรวจสอบข้อมูลที่ส่งมาว่าถูกต้องหรือไม่ Query Variables ``Authorization``: User Token Response Type : DeviceToken ตอบกลับเป็น Object Type DeviceToken ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device - ``tokencode``: *String* คือ รหัสของ Token - ``iat``: *String* คือ วันเวลาที่ออก Token (issued at) - ``nbf``: *String* คือ วันเวลาที่ Token จะเริ่มใช้งานได้ (not before) - ``exp``: *String* คือ วันเวลาหมดอายุของ Token (expiration time) - ``expireIn``: *String* คือ อายุของ Token ตัวอย่างการสร้าง Device Token ใหม่ ดังรูปด้านล่าง .. image:: _static/gql2_createdevicetoken.png CreateGroup ------------------------- สำหรับขอสร้าง Group ใหม่ รายละเอียดดังนี้ :createGroup ( projectid, groupname, description, tag, hashtag, tags ): Arguments - ``projectid``: *String* คือ รหัสของ Project ที่ Group อยู่ภายใต้ (ต้องระบุ) - ``groupname``: *String* คือ ชื่อของ Group - ``description``: *String* คือ คำอธิบาย Group - ``tag``: *String* คือ แท็กของ Group แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Group แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Group ในรูปแบบ Key Value Query Variables ``Authorization``: User Token Response Type : Group ตอบกลับเป็น Object Type Group ประกอบด้วย - ``groupid``: *String* คือ รหัสของ Group - ``groupname``: *String* คือ ชื่อของ Group - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Group - ``description``: *String* คือ คำอธิบาย Group - ``tag``: *String* คือ แท็กของ Group แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Group แบบหลายค่า - ``tags``: *Json* คือ แท็กของ Group ในรูปแบบ Key Value ตัวอย่างการสร้าง Group ใหม่ ดังรูปด้านล่าง .. image:: _static/gql2_creategroup.png CreateHook ------------------------- สำหรับสร้าง Event Hook ใหม่ รายละเอียดดังนี้ :createHook ( projectid, name, description, type, enabled, param ): Arguments - projectid: *String* คือ รหัสของ Project (ต้องระบุ) - name: *String* คือ ชื่อของ Hook (ต้องระบุ) - description: *String* คือ คำอธิบาย Hook - type: *String* คือ ประเภทของ Hook (ปัจจุบันมีประเภทเดียว คือ WEBHOOK) - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Hook (``true`` เปิดการใช้งาน, ``false`` ปิดการใช้งาน [default]) - param: *JSON* คือ Parameter ต่างๆ ที่ตั้งค่าไว้ใน Hook Query Variables ``Authorization``: User Token Response Type : Hook ตอบกลับเป็น Object Type Hook ประกอบด้วย - ``projectid``: *String* คือ รหัสของ Project - ``name``: *String* คือ ชื่อของ Hook - ``hookid``: *String* คือ รหัสของ Hook - ``description``: *String* คือ คำอธิบายของ Hook - ``type``: *String* คือ ประเภทของ Hook - ``enabled``: *Boolean* คือ สถานะการทำงานของ Hook (``true`` เปิดให้ทำงาน, ``false`` ปิดการทำงาน) - ``param``: *JSON* คือ Parameter ต่างๆ ที่ตั้งค่าไว้ใน Hook ตัวอย่างการสร้าง Hook ดังรูปด้านล่าง .. image:: _static/gql2_createhook.png CreateMembership ------------------------- สำหรับสร้าง Membership ใหม่ที่มีสิทธิ์เข้าถึงข้อมูลในแต่ละ Project ที่ตนเองไม่ได้เป็นเจ้าของ รายละเอียดดังนี้ :createMembership ( projectid, username, level ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) - ``username``: *String* คือ username ของผู้ใช้ที่เป็นสมาชิก (ต้องระบุค่า) - ``level``: *UserLevel* คือ ระดับชั้นของการเป็นสมาชิก ได้แก่ (ดูรายละเอียดสิทธิ์ได้ที่ :ref:`project-membership`) - ``Guest`` (default) - ``Viewer`` - ``Editor`` - ``Master`` - ``Owner`` Query Variables ``Authorization``: User Token Response Type : Membership ตอบกลับเป็น Object Type Membership ประกอบด้วย - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Membership - ``level``: *UserLevel* คือ ระดับสิทธิ์ของการเป็นสมาชิก มีทั้งหมด 5 ระดับ (ดูรายละเอียดสิทธิ์ได้ที่ :ref:`project-membership`) - ``5`` (Owner) - ``4`` (Master) - ``3`` (Editor) - ``2`` (Viewer) - ``1`` (Guest) - ``projectid``: *String* คือ รหัสของ Project ที่ได้รับสิทธิ์ - ``userid``: *String* คือ รหัสของผู้ใช้ที่ได้รับสิทธิ์ - ``username``: *String* คือ username ของผู้ใช้ที่ได้รับสิทธิ์ ตัวอย่างการสร้าง Membership ใหม่ ดังรูปด้านล่าง .. image:: _static/gql2_createmembership.png CreateProject ------------------------- สำหรับสร้างข้อมูล Project ใหม่ รายละเอียดดังนี้ :createProject ( projectname, billingaccountid, description, tag, hashtag, tags ): Arguments - ``projectname``: *String* คือ ชื่อของ Project (ต้องระบุค่า) - ``billingaccountid``: *String* คือ รหัสของ Billing Account - ``description``: *String* คือ คำอธิบาย Project - ``tag``: *String* คือ แท็กของ Project แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Project แบบหลายค่า - ``tags``: *TagsInput* คือ แท็กของ Project ในรูปแบบ Key Value Query Variables ``Authorization`` : User Token Response Type : Project ตอบกลับเป็น Object Type Project ประกอบด้วย - ``projectname``: *String* คือ ชื่อของ Project - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Project - ``description``: *String* คือ คำอธิบาย Project - ``userlevel``: *String* คือ ระดับสิทธิ์การเข้าถึงข้อมูลใน Project ของ User - ``tags``: *Json* คือ แท็กของ Project ในรูปแบบ Key Value - ``tag``: *String* คือ แท็กของ Project แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Project แบบหลายค่า - ``numberdevice``: *Int* คือ จำนวน Device ภายใต้ Project - ``numbergroup``: *Int* คือ จำนวน Group ภายใต้ Project - ``numberdeviceonline``: *Int* คือ จำนวน Device ที่เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``numberdeviceoffline``: *Int* c จำนวน Device ที่ไม่ได้เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``quota``: *Quota* คือ สถานะของ Service แต่ละรายการที่มีโควต้าพร้อมใช้งาน ซึ่งประกอบด้วย - ``apicall``: *Boolean* คือ บริการ REST API (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``connection``: *Boolean* คือ บริการเชื่อมต่อ Platform ของ Device (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``message``: *Boolean* คือ บริการ Real Time Message ผ่าน MQTT Protocol (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``shadowops``: *Boolean* คือ บริการอ่าน/เขียน Shadow (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``store``: *Boolean* คือ บริการเก็บข้อมูลใน Time Series Data (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``trigger``: *Boolean* คือ บริการ Trigger & Action (Notification) (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``datasource``: *Boolean* คือ ผลรวมขนาด Byte ของข้อมูลที่มีการใช้บริการผ่าน ``apicall`` (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) ตัวอย่างการสร้าง Project ใหม่ ดังรูปด้านล่าง .. image:: _static/gql2_createproject.png CreateTrigger ------------------------- สำหรับสร้างข้อมูล Trigger ของ Device รายละเอียดดังนี้ :createTrigger ( deviceid, triggerid, triggername, type, event, condition, action, context, enabled ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *TriggerType* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) (ต้องระบุค่า) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) (ต้องระบุค่า) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook ประกอบด้วย - ``key``: *String* คือ ชื่อของตัวแปร - ``value``: *String* คือ ค่าของตัวแปร - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) Query Variables ``Authorization``: User Token Response Type : [Trigger] ตอบกลับเป็น Array ของ Object Type Trigger ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_createtrigger.png DeleteAllTriggers ------------------------- สำหรับลบข้อมูล Trigger ทั้งหมดของ Device รายละเอียดดังนี้ :deleteAllTriggers ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่ต้องการลบ Trigger (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : [Trigger] ตอบกลับเป็น Array ของ Object Type Trigger ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_deletealltriggers.png DeleteDevice ------------------------- สำหรับลบ Device ด้วย ID รายละเอียดดังนี้ :deleteDevice ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Device ตอบกลับเป็น Object Type Device ที่ถูกลบ ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicesecret``: String คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device ในรูปแบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device ในรูปแบบหลายค่า - ``tags``: *Json* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) ตัวอย่างการลบ Device ด้วย ID ดังรูปด้านล่าง .. image:: _static/gql2_deletedevice.png DeleteFeedData --------------- สำหรับลบข้อมูลบางส่วน Time Series Data Store ของ Device ตัวนั้น ๆ เช่น ข้อมูลช่วงที่ไม่ถูกต้อง รายละเอียดดังนี้ :deleteFeedData ( feedid, attributes, starttime, endtime ): Arguments - ``feedid``: *String* คือ รหัสของ Feed ซึ่งใช้ค่าเดียวกับ ``deviceid`` (ต้องระบุค่า) - ``attributes``: *[String]* คือ ชื่่อฟิลด์ที่ต้องการลบข้อมูล (ถ้าไม่ระบุจะเป็นการลบข้อมูลทุกฟิลด์) - ``starttime``: *Timestamp* คือ ช่วงเวลาเริ่มต้นที่ต้องการลบข้อมูล (ไม่ระบุ คือ ลบทั้งหมด) - ``endtime``: *Timestamp* คือ ช่วงเวลาสิ้นสุดที่ต้องการลบข้อมูล (ไม่ระบุ คือ ลบทั้งหมด) Query Variables ``Authorization``: User Token Response Type : FeedData ตอบกลับเป็น Object Type FeedData ประกอบด้วย - ``feedid``: *String* คือ รหัสของ Feed - ``data``: *JSON* คือ ข้อมูลในแต่ละฟิลด์ ตัวอย่างการเข้าถึงข้อมูล ดังรูปด้านล่าง .. image:: _static/gql2_deletefeeddata.png DeleteGroup ------------------------- สำหรับลบ Group ด้วย ID รายละเอียดดังนี้ :deleteGroup ( groupid ): Arguments - ``groupid``: *String* คือ รหัสของ Group (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Group ตอบกลับเป็น Object Type Group ที่ถูกลบ ประกอบด้วย - ``groupid``: *String* คือ รหัสของ Group - ``groupname``: *String* คือ ชื่อของ Group - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Group - ``description``: *String* คือ คำอธิบาย Group - ``tag``: *String* คือ แท็กของ Group แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Group แบบหลายค่า - ``tags``: *Json* คือ แท็กของ Group ในรูปแบบ Key Value ตัวอย่างการลบ Group ด้วย ID ดังรูปด้านล่าง .. image:: _static/gql2_deletegroup.png DeleteHook ------------------------- สำหรับลบ Hook ด้วย ID รายละเอียดดังนี้ :deleteHook ( projectid, hookid ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) - ``hookid``: *String* คือ รหัสของ Hook (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Hook ตอบกลับเป็น Object Type Hook ที่ถูกลบ ประกอบด้วย - ``projectid``: *String* คือ รหัสของ Project - ``name``: *String* คือ ชื่อของ Hook - ``hookid``: *String* คือ รหัสของ Hook - ``description``: *String* คือ คำอธิบายของ Hook - ``type``: *String* คือ ประเภทของ Hook - ``enabled``: *Boolean* คือ สถานะการทำงานของ Hook (``true`` เปิดให้ทำงาน, ``false`` ปิดการทำงาน) - ``param``: *JSON* คือ Parameter ต่างๆ ที่ตั้งค่าไว้ใน Hook ตัวอย่างการลบ Hook ดังรูปด้านล่าง .. image:: _static/gql2_deletehook.png DeleteMembership ------------------------- สำหรับลบ Membership ในแต้ละ Project รายละเอียดดังนี้ :deleteMembership ( projectid, username ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) - ``username``: *String* คือ username ของผู้ใช้ที่เป็นสมาชิกและต้องการลบ (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Membership ตอบกลับเป็น Object Type Membership ที่ถูกลบ ประกอบด้วย - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Membership - ``level``: *Int* คือ ระดับชั้นของการเป็นสมาชิก - ``projectid``: *String* คือ รหัสของ Project ที่ Membership อยู่ภายใต้ - ``userid``: *Striing* คือ รหัสของ User - ``username``: *String* คือ username ของผู้ใช้ที่เป็นสมาชิก ตัวอย่างการลบ Membership ดังรูปด้านล่าง .. image:: _static/gql2_deletemembership.png DeleteProject ------------------------- สำหรับลบ Project ด้วย ID รายละเอียดดังนี้ :deleteProject ( projectid ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Project ตอบกลับเป็น Object Type Project ที่ถูกลบ ประกอบด้วย - ``projectname``: *String* คือ ชื่อของ Project - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Project - ``description``: *String* คือ คำอธิบาย Project - ``userlevel``: *String* คือ ระดับสิทธิ์การเข้าถึงข้อมูลใน Project ของ User - ``tags``: *Json* คือ แท็กของ Project ในรูปแบบ Key Value - ``tag``: *String* คือ แท็กของ Project แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Project แบบหลายค่า - ``numberdevice``: *Int* คือ จำนวน Device ภายใต้ Project - ``numbergroup``: *Int* คือ จำนวน Group ภายใต้ Project - ``numberdeviceonline``: *Int* คือ จำนวน Device ที่เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``numberdeviceoffline``: *Int* c จำนวน Device ที่ไม่ได้เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``quota``: *Quota* คือ สถานะของ Service แต่ละรายการที่มีโควต้าพร้อมใช้งาน ซึ่งประกอบด้วย - ``apicall``: *Boolean* คือ บริการ REST API (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``connection``: *Boolean* คือ บริการเชื่อมต่อ Platform ของ Device (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``message``: *Boolean* คือ บริการ Real Time Message ผ่าน MQTT Protocol (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``shadowops``: *Boolean* คือ บริการอ่าน/เขียน Shadow (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``store``: *Boolean* คือ บริการเก็บข้อมูลใน Time Series Data (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``trigger``: *Boolean* คือ บริการ Trigger & Action (Notification) (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``datasource``: *Boolean* คือ ผลรวมขนาด Byte ของข้อมูลที่มีการใช้บริการผ่าน ``apicall`` (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) ตัวอย่างการลบ Project ด้วย ID ดังรูปด้านล่าง .. image:: _static/gql2_deleteproject.png DeleteTrigger ------------------------- สำหรับลบ Trigger รายตัว รายละเอียดดังนี้ :deleteTrigger ( deviceid, triggerid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่เซ็ต Trigger ไว้ (ต้องระบุค่า) - ``triggerid``: *String* คือ รหัสของ Trigger (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Trigger ตอบกลับเป็น Object Type Trigger ที่ถูกลบ ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_deletetrigger.png DisableAllTriggers ------------------------- สำหรับปิดการใช้งาน Trigger ทั้งหมดที่อยู่ภายใต้ Device นั้น ๆ รายละเอียดดังนี้ :disableAllTriggers ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่เซ็ต Trigger ไว้ (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : [Trigger] ตอบกลับเป็น Array ของ Object Type Trigger ที่ปิดการใช้งาน ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_disablealltriggers.png DisableDevice ------------------------- สำหรับเซ็ตปิดการใช้งาน Device แต่ละตัวด้วย DeviceID (เซ็ต ``enabled`` ให้เป็น ``false``) รายละเอียดดังนี้ :disableDevice ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่ต้องการปิดการใช้งาน (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Trigger ตอบกลับเป็น Object Type Device ที่ถูกลบ ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicesecret``: *String* คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) ตัวอย่างการเซ็ตปิดการใช้งาน Device ดังรูปด้านล่าง .. image:: _static/gql2_disabledevice.png DisableTrigger ------------------------- สำหรับปิดการใช้งาน Trigger รายตัว รายละเอียดดังนี้ :disableTrigger ( deviceid, triggerid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่เซ็ต Trigger ไว้ (ต้องระบุค่า) - ``triggerid``: *String* คือ รหัสของ Trigger (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Trigger ตอบกลับเป็น Object Type Trigger ที่ปิดการใช้งาน ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_disabletrigger.png EnableAllTriggers ------------------------- สำหรับเปิดการใช้งาน Trigger ทั้งหมดที่อยู่ภายใต้ Device นั้น ๆ รายละเอียดดังนี้ :disableAllTriggers ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่เซ็ต Trigger ไว้ (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : [Trigger] ตอบกลับเป็น Array ของ Object Type Trigger ที่เปิดการใช้งาน ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_enablealltriggers.png EnableDevice ------------------------- สำหรับเซ็ตเปิดการใช้งาน Device แต่ละตัวด้วย DeviceID (เซ็ต ``enabled`` ให้เป็น ``true``) รายละเอียดดังนี้ :enableDevice ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่ต้องการเปิดการใช้งาน (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Trigger ตอบกลับเป็น Object Type Device ที่ถูกลบ ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicesecret``: *String* คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) ตัวอย่างการเซ็ตเปิดการใช้งาน Device ดังรูปด้านล่าง .. image:: _static/gql2_enabledevice.png EnableTrigger ------------------------- สำหรับเปิดการใช้งาน Trigger รายตัว รายละเอียดดังนี้ :enableTrigger ( deviceid, triggerid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่เซ็ต Trigger ไว้ (ต้องระบุค่า) - ``triggerid``: *String* คือ รหัสของ Trigger (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Trigger ตอบกลับเป็น Object Type Trigger ที่เปิดการใช้งาน ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_enabletrigger.png GroupDevice ------------------------- สำหรับกำหนด Group ให้ Devices รายละเอียดดังนี้ :groupDevice ( deviceid, groupid ): Arguments - ``deviceid``: *[String]* คือ Array ของรหัส Device ที่ต้องการกำหนดกลุ่ม (ต้องระบุค่าอย่างน้อย 1 Device) - ``groupid``: *String* คือ รหัสของ Group ที่จะกำหนดให้กับ Devices (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : [Device] ตอบกลับเป็น Array ของ Object Type Device ที่ถูกกำหนด Group ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicesecret``: *String* คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *Json* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) ตัวอย่างการกำหนด Group ให้ Devices ดังรูปด้านล่าง .. image:: _static/gql2_groupdevice.png LeaveProject ------------------------- สำหรับออกจากการเป็นสมาชิกในแต่ละ Project ที่ตนเองได้รับสิทธิ์ รายละเอียดดังนี้ :leaveProject ( projectid ): Arguments - ``projectid``: *String* คือ รหัสของ Project ที่ต้องการออกจากการเป็นสมาชิก (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Membership ตอบกลับเป็น Object Type Membership ที่ถูกลบ ประกอบด้วย - ``createdtime``: *Timestamp* คือ วันเวลาที่ได้เป็นสมาชิก - ``level``: *UserLevel* คือ ระดับสิทธิ์ของการเป็นสมาชิก มีทั้งหมด 5 ระดับ (ดูรายละเอียดสิทธิ์ได้ที่ :ref:`project-membership`) - ``5`` (Owner) - ``4`` (Master) - ``3`` (Editor) - ``2`` (Viewer) - ``1`` (Guest) - ``projectid``: *String* คือ รหัสของ Project ที่ออกจากการเป็นสมาชิก - ``userid``: *String* คือ รหัสของผู้ใช้ที่เป็นสมาชิก - ``username``: *String* คือ username ของผู้ใช้ที่เป็นสมาชิก ตัวอย่างการลบ Membership ดังรูปด้านล่าง .. image:: _static/gql2_leaveproject.png MoveDeviceToProject ------------------------- สำหรับย้าย Device ไปยัง Project ที่ต้องการ รายละเอียดดังนี้ :moveDeviceToProject ( deviceid, devicesecret, projectid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่ต้องการย้าย Project (ต้องระบุค่า) - ``devicesecret``: *String* คือ รหัสลับของ Device ที่ต้องการย้าย Project - ``projectid``: *String* คือ รหัสของ Project ที่ต้องย้าย Device ไปอยู่ภายใต้ (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : DeviceWithToken ตอบกลับเป็น Object Type DeviceWithToken ที่ถูกลบ ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicetoken``: *[String]* คือ รายการ Token ของ Device - ``devicesecret``: *String* คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) - ``token``: *Token* คือ Object Type ของข้อมูล Token ประกอบด้วย - ``tokencode``: *String* คือ รหัสของ Token - ``iat``: *String* คือ วันเวลาที่ออก Token (issued at) - ``nbf``: *String* คือ วันเวลาที่ Token จะเริ่มใช้งานได้ (not before) - ``exp``: *String* คือ วันเวลาหมดอายุของ Token (expiration time) - ``expireIn``: *String* คือ อายุของ Token ตัวอย่างการย้าย Device ไปยัง Project ดังรูปด้านล่าง .. image:: _static/gql2_movedevicetoproject.png PublishMessageToDevice ------------------------- สำหรับ Publish ข้อมูลแบบเจาะจงไปยังแต่ละ Device เหมาะสำหรับใช้กับ Application ที่พัฒนาขึ้นมาเพื่อใช้สื่อสารกับ Device โดย User Token ที่ใช้ Authorization จะต้องเป็นของผู้ที่เป็นเจ้าของ Device นั้นๆ รายละเอียดดังนี้ :publishMessageToDevice ( deviceid, topic, payload ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่ต้องการส่งข้อมูลไปถึง (ต้องระบุค่า) - ``topic``: *String* คือ Topic ที่ต้องการ Publish ข้อมูลไปถึง โดยที่ไม่ต้องระบุ @msg (ต้องระบุค่า) - ``payload``: *String* คือ ข้อมูลหรือข้อความที่ต้องการส่ง Query Variables ``Authorization``: User Token Response Type : Result ตอบกลับเป็น Object Type Result ประกอบด้วย - ``code``: *Int* คือ รหัสตอบกลับ (Response Code) ถ้าเป็น 200 คือ ดำเนินการสำเร็จ - ``text``: *String* คือ ข้อความตอบกลับ (Response Text) ตัวอย่างการ Publish ข้อมูลไปยัง Device แบบเจาะจง ดังรูปด้านล่าง .. image:: _static/gql2_pubdevice.png .. note:: PublishMessageToDevice การ Publish ข้อมูลในฟังก์ชันนี้ การเซ็ต Topic ไม่ต้องใส่ ``@msg`` นำหน้า | การ Subscribe ข้อมูลที่มาจากฟังก์ชัน PublishMessageToDevice จะมี Prefix Topic เป็น ``@private`` เช่น | ``publishMessageToDevice (deviceid: "c55941ce-0f4a-4e57-xxxx-4759af4f872c", topic: "home/door", payload: "open" )`` | การเซ็ต Topic ตอน Subscribe จะเป็นดังนี้ ``@private/home/door`` PublishMessageToGroup ------------------------- สำหรับ Publish ข้อมูลไปยัง Devices ที่อยู่ภายใต้ Group นั้นๆ เหมาะสำหรับใช้กับ Application ที่พัฒนาขึ้นมาเพื่อใช้สื่อสารกับ Devices โดย User Token ที่ใช้ Authorization จะต้องเป็นของผู้ที่เป็นเจ้าของ Device นั้นๆ รายละเอียดดังนี้ :publishMessageToGroup ( groupid, topic, payload ): Arguments - ``groupid``: *String* คือ รหัสของ Group ที่ต้องการส่งข้อมูลไปถึง (ต้องระบุค่า) - ``topic``: *String* คือ Topic ที่ต้องการ Publish ข้อมูลไปถึง โดยที่ไม่ต้องระบุ @msg (ต้องระบุค่า) - ``payload``: *String* คือ ข้อมูลหรือข้อความที่ต้องการส่ง Query Variables ``Authorization``: User Token Response Type : Result ตอบกลับเป็น Object Type Result ประกอบด้วย - ``code``: *Int* คือ รหัสตอบกลับ (Response Code) ถ้าเป็น 200 คือ ดำเนินการสำเร็จ - ``text``: *String* คือ ข้อความตอบกลับ (Response Text) ตัวอย่างการ Publish ข้อมูลไปยัง Devices ที่อยู่ภายใต้ Group ดังรูปด้านล่าง .. image:: _static/gql2_pubgroup.png .. note:: PublishMessageToGroup การ Publish ข้อมูลในฟังก์ชันนี้ การเซ็ต Topic ไม่ต้องใส่ ``@msg`` นำหน้า | การ Subscribe ข้อมูลที่มาจากฟังก์ชัน PublishMessageToGroup จะมี Prefix Topic เป็น ``@msg`` เช่น | ``publishMessageToGroup (groupid: "G272489159405", topic: "home/rooms", payload: "open" )`` | การเซ็ต Topic ตอน Subscribe จะเป็นดังนี้ ``@msg/home/rooms`` ResyncDeviceStatus ------------------------- สำหรับซิงค์ข้อมูลสถานะการเชื่อมต่อ Platform ของ Device ใช้ในกรณีที่มีการนำสถานะของ Device ไปแสดงบน UI แล้วสถานะไม่อัพเดทอัตโนมัติ ให้เรียกฟังก์ชันนี้เพื่อซิงค์ข้อมูล รายละเอียดดังนี้ :resyncDeviceStatus ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่ต้องการซิงค์ข้อมูล (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : Result ตอบกลับเป็น Object Type Result ประกอบด้วย - ``code``: *Int* คือ รหัสตอบกลับ (Response Code) ถ้าเป็น 200 คือ ดำเนินการสำเร็จ - ``text``: *String* คือ ข้อความตอบกลับ (Response Text) ตัวอย่างการซิงค์ข้อมูลสถานะการเชื่อมต่อ Platform ของ Device ดังรูปด้านล่าง .. image:: _static/gql2_resyncdevicestatus.png RevokeDeviceToken ------------------------- สำหรับยกเลิกสิทธิ์ Token ของ Device รายละเอียดดังนี้ :revokeDeviceToken ( tokencode ): Arguments - ``tokencode``: *String* คือ รหัสของ Token ที่ต้องการยกเลิกสิทธิ์ (ต้องระบุค่า) Query Variables ``Authorization``: User Token Response Type : DeviceToken ตอบกลับเป็น Object Type DeviceToken ที่ถูกยกเลิกสิทธิ์ ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device - ``tokencode``: *String* คือ รหัสของ Token - ``iat``: *String* คือ วันเวลาที่ออก Token (issued at) - ``nbf``: *String* คือ วันเวลาที่ Token จะเริ่มใช้งานได้ (not before) - ``exp``: *String* คือ วันเวลาหมดอายุของ Token (expiration time) - ``expireIn``: *String* คือ อายุของ Token ตัวอย่างการยกเลิกสิทธิ์ Token ของ Device ดังรูปด้านล่าง .. image:: _static/gql2_revokedevicetoken.png SaveTrigger ------------------------- สำหรับอัพเดทข้อมูล Trigger ครั้งละหลาย ๆ ตัว รายละเอียดดังนี้ :saveTrigger ( deviceid, triggers ): Arguments - ``deviceid``: *String* คือ รหัสของ Device ที่เซ็ต Trigger ไว้ (ต้องระบุค่า) - ``trigger``: *[TriggerInput]* คือ Array ของ Object Type Trigger ทั้งหมด (ต้องระบุให้ครบทุกค่า) ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) Query Variables ``Authorization``: User Token Response Type : [Trigger] ตอบกลับเป็น Array ของ Object Type Trigger ที่เปิดการใช้งาน ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการใช้งาน ดังรูปด้านล่าง .. image:: _static/gql2_savetrigger.png UnGroupDevice ------------------------- สำหรับถอด Devices ออกจาก Group รายละเอียดดังนี้ :ungroupDevice ( deviceid ): Arguments - ``deviceid``: *[String]* คือ Array ของรหัส Device ที่ต้องการถอดออกจากกลุ่ม (ต้องระบุค่าอย่างน้อย 1 Device) Query Variables ``Authorization``: User Token Response Type : [Device] ตอบกลับเป็น Array ของ Object Type Device ที่ถูกถอดออกจาก Group ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicesecret``: *String* คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *Json* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) ตัวอย่างการถอด Devices ออกจาก Group ดังรูปด้านล่าง .. image:: _static/gql2_ungroupdevice.png UpdateDevice ------------------------- สำหรับแก้ไขข้อมูลทั่วไปของ Device รายละเอียดดังนี้ :updateDevice ( deviceid, projectid, groupid, tag, hashtag, tags ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุ) - ``deviceinfo``: *DeviiceInfo* คือ Object Type ที่เป็นรายละเอียดของ Device ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device (ถ้าไม่ระบุจะถูกกำหนดเป็นค่าเดียวกับ deviceid ใช้สำหรับอ้างอิงถึง Device) - ``description``: *String* คือ คำอธิบาย Device - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value Query Variables ``Authorization``: User Token Response Type : Device ตอบกลับเป็น Object Type Device ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *Credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *String* คือ รหัสของ Device - ``devicesecret``: *String* คือ รหัสลับของ Device - ``groupid``: *String* คือ รหัสของ Group ที่ Device อยู่ภายใต้ - ``groupname``: *String* คือ ชื่อของ Group ที่ Device อยู่ภายใต้ - ``projectid``: *String* คือ รหัสของ Project ที่ Device อยู่ภายใต้ - ``status``: *Int* คือ สถานะการเชื่อมต่อ Platform ของ Device (``0`` offline, ``1`` online) - ``tag``: *String* คือ แท็กของ Device แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Device แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Device ในรูปแบบ Key Value - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน Device (``true`` เปิดการใช้งาน [default], ``false`` ปิดการใช้งาน) - ``banned``: *Boolean* คือ สถานะถูกระงับใช้งานจากระบบ (``true`` ถูกรระงับใช้งาน, ``false`` ไม่ถูกรระงับใช้งาน) ตัวอย่างการแก้ไขข้อมูลทั่วไปของ Device ดังรูปด้านล่าง .. image:: _static/gql2_updatedevice.png UpdateGroup ------------------------- สำหรับแก้ไขข้อมูลทั่วไปของ Group รายละเอียดดังนี้ :updateGroup ( groupid, groupname, description, tag, hashtag, tags ): Arguments - ``groupid``: *String* คือ รหัสของ Group (ต้องระบุ) - ``groupname``: *String* คือ ชื่อของ Group ที่ต้องการแก้ไข - ``description``: *String* คือ คำอธิบาย Group ที่ต้องการแก้ไข - ``tag``: *String* คือ แท็กของ Group แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Group แบบหลายค่า - ``tags``: *JSON* คือ แท็กของ Group ในรูปแบบ Key Value Query Variables ``Authorization``: User Token Response Type : Group ตอบกลับเป็น Object Type Group ประกอบด้วย - ``groupid``: *String* คือ รหัสของ Group - ``groupname``: *String* คือ ชื่อของ Group - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Group - ``description``: *String* คือ คำอธิบาย Group - ``tag``: *String* คือ แท็กของ Group แบบค่าเดียว - ``devicecount``: *Int* คือ จำนวน Device ใน Group - ``hashtag``: *[String]* คือ แท็กของ Group แบบหลายค่า - ``tags``: *Json* คือ แท็กของ Group ในรูปแบบ Key Value ตัวอย่างการแก้ไขข้อมูลทั่วไปของ Group ดังรูปด้านล่าง .. image:: _static/gql2_updategroup.png UpdateHook ------------------------- สำหรับแก้ไขข้อมูลของ Event Hook รายละเอียดดังนี้ :updateHook ( projectid, hookid, name, description, type, enabled, param ): Arguments - projectid: *String* คือ รหัสของ Project (ต้องระบุ) - ``hookid``: *String* คือ รหัสของ Event Hook (ต้องระบุ) - ``name``: *String* คือ ชื่อของ Event Hook (ต้องระบุ) - ``description``: *String* คือ คำอธิบาย Event Hook - ``type``: *String* คือ สถานะการทำงานของ Event Hook (``true`` เปิดให้ทำงาน, ``false`` ปิดการทำงาน) - ``enabled``: *Boolean* คือ สถานะการทำงานของ Event Hook (``true`` เปิดให้ทำงาน, ``false`` ปิดการทำงาน) - ``param``: *JSON* คือ Parameter ต่างๆ ที่ตั้งค่าไว้ใน Event Hook Query Variables ``Authorization``: User Token Response Type : Hook ตอบกลับเป็น Object Type Hook ประกอบด้วย - ``projectid``: *String* คือ รหัสของ Project - ``name``: *String* คือ ชื่อของ Hook - ``hookid``: *String* คือ รหัสของ Hook - ``description``: *String* คือ คำอธิบายของ Hook - ``type``: *String* คือ ประเภทของ Hook - ``enabled``: *Boolean* คือ สถานะการทำงานของ Hook (``true`` เปิดให้ทำงาน, ``false`` ปิดการทำงาน) - ``param``: *JSON* คือ Parameter ต่างๆ ที่ตั้งค่าไว้ใน Hook ตัวอย่างการแก้ไขข้อมูลของ Event Hook ดังรูปด้านล่าง .. image:: _static/gql2_updatehook.png UpdateMembership ------------------------- สำหรับแก้ไขข้อมูลของ Membership รายละเอียดดังนี้ :updateMembership ( projectid, username, level ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) - ``username``: *String* คือ username ของผู้ใช้ที่เป็นสมาชิก (ต้องระบุค่า) - ``level``: *UserLevel* คือ ระดับชั้นของการเป็นสมาชิก ได้แก่ (ต้องระบุค่า) (ดูรายละเอียดสิทธิ์ได้ที่ :ref:`project-membership`) - ``Guest`` - ``Viewer`` - ``Editor`` - ``Master`` - ``Owner`` Query Variables ``Authorization``: User Token Response Type : Membership ตอบกลับเป็น Object Type Membership ประกอบด้วย - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Membership - ``level``: *UserLevel* คือ ระดับสิทธิ์ของการเป็นสมาชิก มีทั้งหมด 5 ระดับ (ดูรายละเอียดสิทธิ์ได้ที่ :ref:`project-membership`) - ``5`` (Owner) - ``4`` (Master) - ``3`` (Editor) - ``2`` (Viewer) - ``1`` (Guest) - ``projectid``: *String* คือ รหัสของ Project ที่ได้รับสิทธิ์ - ``userid``: *String* คือ รหัสของผู้ใช้ที่ได้รับสิทธิ์ - ``username``: *String* คือ username ของผู้ใช้ที่ได้รับสิทธิ์ ตัวอย่างการแก้ไขข้อมูลของ Membership ดังรูปด้านล่าง .. image:: _static/gql2_updatemembership.png UpdateProject ------------------------- สำหรับแก้ไขข้อมูลทั่วไปของ Project รายละเอียดดังนี้ :updateProject ( projectid, projectname, description, tag, hashtag, tags ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) - ``projectname``: *String* คือ ชื่อของ Project - ``description``: *String* คือ คำอธิบาย Project - ``tag``: *String* คือ แท็กของ Project แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Project แบบหลายค่า - ``tags``: *TagsInput* คือ แท็กของ Project ในรูปแบบ Key Value Query Variables ``Authorization`` : User Token Response Type : Project ตอบกลับเป็น Object Type Project ประกอบด้วย - ``projectname``: *String* คือ ชื่อของ Project - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Project - ``description``: *String* คือ คำอธิบาย Project - ``tags``: *Json* คือ แท็กของ Project ในรูปแบบ Key Value - ``tag``: *String* คือ แท็กของ Project แบบค่าเดียว - ``hashtag``: *[String]* คือ แท็กของ Project แบบหลายค่า - ``numberdevice``: *Int* คือ จำนวน Device ภายใต้ Project - ``numbergroup``: *Int* คือ จำนวน Group ภายใต้ Project - ``numberdeviceonline``: *Int* คือ จำนวน Device ที่เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``numberdeviceoffline``: *Int* c จำนวน Device ที่ไม่ได้เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``quota``: *Quota* คือ สถานะของ Service แต่ละรายการที่มีโควต้าพร้อมใช้งาน ซึ่งประกอบด้วย - ``apicall``: *Boolean* คือ บริการ REST API (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``connection``: *Boolean* คือ บริการเชื่อมต่อ Platform ของ Device (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``message``: *Boolean* คือ บริการ Real Time Message ผ่าน MQTT Protocol (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``shadowops``: *Boolean* คือ บริการอ่าน/เขียน Shadow (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``store``: *Boolean* คือ บริการเก็บข้อมูลใน Time Series Data (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``trigger``: *Boolean* คือ บริการ Trigger & Action (Notification) (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) - ``datasource``: *Boolean* คือ ผลรวมขนาด Byte ของข้อมูลที่มีการใช้บริการผ่าน ``apicall`` (``true`` มีโควต้าพร้อมใช้งาน, ``false`` ใช้งานไม่ได้หรือไม่มีโควต้า) ตัวอย่างการแก้ไขข้อมูลทั่วไปของ Project ดังรูปด้านล่าง .. image:: _static/gql2_updateproject.png UpdateSchema ------------------------- สำหรับแก้ไขข้อมูล Shadow Schema ของ Device รายละเอียดดังนี้ :updateSchema ( deviceid, value ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) - ``value``: *JSON* คือ Shadow Schema ที่กำหนดไว้ ซึ่งจะอยู่ในรูปแบบ JSON Query Variables ``Authorization``: User Token Response Type : Schema ตอบกลับเป็น Object Type Schema ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device - ``value``: *JSON* คือ Shadow Schema ที่กำหนดไว้ ซึ่งจะอยู่ในรูปแบบ JSON ตัวอย่างการแก้ไขข้อมูล Shadow Schema ของ Device ดังรูปด้านล่าง .. image:: _static/gql2_updateschema.png UpdateTrigger ------------------------- สำหรับแก้ไขข้อมูล Trigger รายตัว รายละเอียดดังนี้ :updateTrigger ( deviceid, triggerid, triggername, type, event, condition, action, context, enabled ): Arguments - ``deviceid``: *String* คือ รหัสของ Devcie (ต้องระบุ) - ``triggerid``: *String* คือ รหัสของ Trigger (ต้องระบุ) - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) Query Variables ``Authorization``: User Token Response Type : Trigger ตอบกลับเป็น Object Type Trigger ประกอบด้วย - ``triggerid``: *String* คือ รหัสของ Trigger (ต้องระบุ) - ``triggername``: *String* คือ ชื่อของ Trigger - ``type``: *String* คือ ประเภท Trigger (``DEVICE``, ``SHADOW``) - ``event``: *String* คือ ประของเหตุการณ์ที่เกิด Trigger (``STATUSCHANGED`` คู่กับ Trigger ประเภท ``DEVICE``, ``UPDATED`` คู่กับ Trigger ประเภท ``SHADOW``) - ``condition``: *String* คือ เงื่อนไขการเกิด Trigger - ``action``: *String* คือ Event Hook ที่จะรับไปดำเนินการต่อเมื่อเกิด Trigger - ``context``: *[ActionVarType]* คือ ตัวแปร Key-Value ที่จะส่งค่าไปใช้งานต่อที่ Event Hook - ``enabled``: *Boolean* คือ สถานะการเปิดใช้งาน (``true`` เปิดใช้งาน, ``false`` ปิดใช้งาน) ตัวอย่างการแก้ไขข้อมูล Trigger ของ Device ดังรูปด้านล่าง .. image:: _static/gql2_updatetrigger.png UpdateUserProfile ------------------------- สำหรับแก้ไขข้อมูลทั่วไปของ User รายละเอียดดังนี้ :updateUserProfile ( fullname ): Arguments - ``fullname``: *String* คือ ชื่อ-นามสกุล ผู้ใช้ Query Variables ``Authorization``: User Token Response Type : User ตอบกลับเป็น Object Type User ประกอบด้วย - ``username``: *String* คือ ชื่อผู้ใช้ - ``enail``: *String* คือ อีเมลผู้ใช้ - ``profile``: *Profile* คือ Object Type Profile ประกอบด้วย - ``fullname``: *String* คือ ชื่อ-นามสกุล - ``phonenumber``: *String* คือ หมายเลขโทรศัพท์ - ``organization``: *String* คือ ชื่อหน่วยงาน/องค์กร/บริษัท ที่สังกัด - ``created``: *String* คือ วันเวลาที่ลงทะเบียน - ``userid``: *String* คือ รหัสของ User ตัวอย่างการแก้ไขข้อมูลทั่วไปของ User ดังรูปด้านล่าง .. image:: _static/gql2_updateuserprofile.png WriteShadow ------------------------- สำหรับแก้ไขข้อมูล Shadow ของ Device รายละเอียดดังนี้ :writeShadow ( deviceid, data, timestamp, mode ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) - ``data``: *JSON* คือ Shadow ที่ต้องการเขียน ซึ่งจะอยู่ในรูปแบบ JSON - ``timestamp``: *Timestamp* คือ วันเวลาที่ข้อมูลมีการเปลี่ยนแปลง (ถ้าไม่ระบุจะเป็นเวลาปัจจุบันที่เขียน) - ``mode``: *WriteMode* คือ โหมดการเขียน Shadow มี 2 โหมด คือ ``MERGE`` คือ การเขียน Shadow แบบผสาน (Merge) ``REPLACE`` คือ การเขียน Shadow แบบเขียนทับ (Overwrite) Query Variables ``Authorization``: User Token Response Type : Shadow ตอบกลับเป็น Object Type Shadow ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device - ``data``: *JSON* คือ Shadow ที่กำหนดไว้ ซึ่งจะอยู่ในรูปแบบ JSON - ``rev``: *Int* คือ เลขที่ Revision - ``modified``: *Timestamp* คือ วันเวลาที่มีการแก้ไขข้อมูลล่าสุด ตัวอย่างการแก้ไขข้อมูล Shadow ของ Device ดังรูปด้านล่าง .. image:: _static/gql2_writeshadow.png | .. note:: การส่งค่า Parameter ที่เป็น JSON ค่าที่ส่งจะอยู่ในรูปแบบ String ของ JSON ตัวอย่างเช่น ค่าที่จะส่ง คือ | ``json = { "body": "message={{msg}}", "method": "POST", "uri": "https://notify-api.line.me/api/notify" }`` | แปลงให้อยู่ในรูปแบบ String ของ JSON จะได้เป็น | ``string = "{ \"body\": \"message={{msg}}\", \"method\": \"POST\", \"uri\": \"https://notify-api.line.me/api/notify\" }"``