QUERIES ======== จะเป็น Function ที่ใช้ในการดึงข้อมูลเพียงอย่างเดียว ประกอบด้วย BillingAccount ------------------------- สำหรับเข้าถึงข้อมูล Billing Account ซึ่งเป็นข้อมูล Account ที่จะรับผิดชอบค่าใช้จ่ายที่เกิดขึ้นจากการใช้งาน Platform รายละเอียดดังนี้ :BillingAccount ( billingaccountid ): Arguments - ``billingaccountid``: *String* คือ รหัสของ Billing Account (ต้องระบุค่า) Query Variables ``Authorization``: JWT Token Response Type : [BillingAccount] ตอบกลับเป็น Array ของ Object Type BillingAccount ประกอบด้วย - ``billingaccountid``: *String* คือ รหัสของ Billing Account - ``billingaccountname``: *String* คือ ชื่อของ Billing Account - ``balance``: *Int* คือ ยอดเงินคงเหลือจากการเติมเงินเพื่อใช้บริการ (Prepaid) - ``quota``: *JSON* คือ โควต้าการใช้งานที่ยังสามารถใช้บริการต่าง ๆ ใน Platform ได้ ประกอบด้วย ``apicall``: *Int* คือ โควต้าคงเหลือของการใช้บริการที่เกี่ยวกับ API ``message``: *Int* คือ โควต้าคงเหลือที่นับเป็น message ของการใช้บริการ Platform ``shadowops``: *Int* คือ โควต้าคงเหลือของการใช้บริการเกี่ยวกับ Shadow ``store``: *Int* คือ โควต้าคงเหลือเกี่ยวกับการเก็บข้อมูล (Feed) ``trigger``: *Int* คือ โควต้าคงเหลือของการใช้บริการเกี่ยวกับ Trigger *(รายละเอียดการคิดโควต้าการใช้งานสามารถดูได้ที่หัวข้อ Billing)* - ``available``: *Boolean* คือ สถานะการอนุญาตให้ใช้งาน Platform (``true`` อนุญาตให้ใช้งาน, ``false`` ไม่อนุญาตให้ใช้งาน) - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Billing Account - ``updatedtime``: *Timestamp* คือ วันเวลาที่มีการอัพเดทข้อมูลล่าสุด ตัวอย่างการเข้าถึงข้อมูล Billing Account ดังรูปด้านล่าง .. image:: _static/gql_billingaccount.png CountDeviceNumber ------------------------- สำหรับขอข้อมูลจำนวน Device ภายใต้แต่ละ Project รายละเอียดดังนี้ :countDeviceNumber ( projectid ): Arguments - ``projectid``: *String* คือ รหัสของ Project ที่ต้องการทราบจำนวน Device ที่อยู่ภายใต้ (ต้องระบุค่า) Query Variables ``Authorization``: JWT Token Response Type : Count ตอบกลับเป็น Object Type Count ประกอบด้วย - ``length``: *Int* คือ จำนวน Device ทั้งหมดที่อยู่ภายใต้ Project ตัวอย่างการขอข้อมูลจำนวน Device ภายใต้แต่ละ Project ดังรูปด้านล่าง .. image:: _static/gql_countdevicenumber.png CountGroupNumber ------------------------- สำหรับขอข้อมูลจำนวน Group ภายใต้แต่ละ Project รายละเอียดดังนี้ :countGroupNumber ( projectid ): Arguments - ``projectid``: *String* คือ รหัสของ Project ที่ต้องการทราบจำนวน Group ที่อยู่ภายใต้ (ต้องระบุค่า) Query Variables ``Authorization``: JWT Token Response Type : Count ตอบกลับเป็น Object Type Count ประกอบด้วย - ``length``: *Int* คือ จำนวน Group ทั้งหมดที่อยู่ภายใต้ Project ตัวอย่างการขอข้อมูลจำนวน Group ภายใต้แต่ละ Project ดังรูปด้านล่าง .. image:: _static/gql_countgroupnumber.png CountProjectNumber ------------------------- สำหรับขอข้อมูลจำนวน Project ที่มีสิทธิ์เข้าถึงได้ รายละเอียดดังนี้ :countProjectNumber: Arguments - ไม่มี Query Variables ``Authorization``: JWT Token Response Type : Count ตอบกลับเป็น Object Type Count ประกอบด้วย - ``length``: *Int* คือ จำนวน Project ที่มีสิทธิ์เข้าถึงได้ ตัวอย่างการขอข้อมูลจำนวน Project ที่มีสิทธิ์เข้าถึงได้ ดังรูปด้านล่าง .. image:: _static/gql_countprojectnumber.png Hook ------------------------- สำหรับเข้าถึงข้อมูลการตั้งค่า Event Hook รายละเอียดดังนี้ :hook ( projectid, hookid ): Arguments - projectid: *String* คือ รหัสของ Project (ต้องระบุ) - hookid: *String* คือ รหัสของ Hook Query Variables ``Authorization``: JWT Token Response Type : [Hook] ตอบกลับเป็น Array ของ Object Type Hook ประกอบด้วย - ``projectid``: *String* คือ รหัสของ Project - ``name``: *String* คือ ชื่อของ Event Hook - ``hookid``: *String* คือ รหัสของ Event Hook - ``description``: *String* คือ คำอธิบายของ Event Hook - ``type``: *String* คือ ประเภทของ Event Hook - ``enabled``: *Boolean* คือ สถานะการทำงานของ Event Hook (``true`` เปิดให้ทำงาน, ``false`` ปิดการทำงาน) - ``param``: *JSON* คือ Parameter ต่างๆ ที่ตั้งค่าไว้ใน Event Hook ตัวอย่างการเข้าถึงข้อมูล Event Hook ดังรูปด้านล่าง .. image:: _static/gql_hook.png Device ------------------------- สำหรับเข้าถึงข้อมูล Device รายละเอียดดังนี้ :device ( deviceid, projectid, groupid, tag, sort, limit ): Arguments (ต้องระบุอย่างน้อย 1 ค่า ที่ไม่ใช่ตัวแปร Option) - ``deviceid``: *String* คือ รหัสของ Device - ``projectid``: *String* คือ รหัสของ Project - ``groupid``: *String* คือ รหัสของ Group - ``tag``: *String* คือ แท็กของ Device - ``sort``: *OptionSort* คือ การเรียงลำดับข้อมูล Object Type OptionSort ประกอบด้วย ``createdtime``: *Boolean* คือ เรียงตามวันเวลาที่สร้าง Device ใช่หรอไม่ (``true`` ใช่ ค่า default, ``false`` ไม่ใช่) ``desc``: *Boolean* คือ ประเภทการเรียงลำดับจากวันเวลาที่สร้าง Device (``true`` จากใหม่ไปเก่า, ``false`` จากเก่าไปใหม่) *(ณ ปัจจุบัน ฟิลด์ที่ใช้เรียงลำดับได้มีเพียง createdtime เท่านั้น)* - ``limit``: *OptionLimit* คือ การจำกัดจำนวนข้อมูล Object Type OptionLimit ประกอบด้วย ``start``: *Int* คือ เริ่มต้นดึงข้อมูลที่ชุดข้อมูลลำดับเท่าไหร่ (เริ่มต้นที่ศูนย์) ``count``: *Int* คือ จำนวนชุดข้อมูลที่ต้องการ Query Variables ``Authorization``: JWT Token Response Type : [Device] ตอบกลับเป็น Array ของ Object Type Device ประกอบด้วย - ``alias``: *String* คือ ชื่อของ Device - ``billing``: *String* คือ รหัสผู้ใช้ที่รับผิดชอบค่าใช้จ่าย - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Device - ``credential``: *credential* คือ ข้อมูลสำหรับยืนยันตัวตน Object Type credential ประกอบด้วย ``secret``: *String* คือ รหัสลับของ Device สำหรับใช้ Authentication - ``description``: *String* คือ คำอธิบาย Device - ``deviceid``: *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 - ``user``: *String* คือ รหัสผู้ใช้ที่สร้าง Device - ``id``: *String* คือ Primary Key ของ Device ตัวอย่างการเข้าถึงข้อมูล Device ดังรูปด้านล่าง .. image:: _static/gql_device.png DeviceToken ------------------------- สำหรับเข้าถึงข้อมูล Token ของ Device รายละเอียดดังนี้ :devicetoken ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) Query Variables ``Authorization``: JWT 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/gql_devicetoken.png Group ------------------------- สำหรับเข้าถึงข้อมูล Group ซึ่งใช้ในการจัดกลุ่ม Device โดย Device ที่อยู่กลุ่มเดียวกันถึงจะสามารถสื่อสารกันได้ รายละเอียดดังนี้ :group ( groupid, projectid, tag ): Arguments (ต้องระบุอย่างน้อย 1 ค่า) - ``groupid``: *String* คือ รหัสของ Group - ``projectid``: *String* คือ รหัสของ Project - ``tag``: *String* คือ แท็กของ Group Query Variables ``Authorization``: JWT Token Response Type : [Group] ตอบกลับเป็น Array ของ Object Type Group ประกอบด้วย - ``groupid``: *String* คือ รหัสของ Group - ``groupname``: *String* คือ ชื่อของ Group - ``projectid``: *String* คือ รหัสของ Project ที่ Group อยู่ภายใต้ - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Group - ``description``: *String* คือ คำอธิบาย Group - ``tag``: *String* คือ แท็กของ Group ตัวอย่างการเข้าถึงข้อมูล Group ดังรูปด้านล่าง .. image:: _static/gql_group.png Membership ------------------------- สำหรับเข้าถึงข้อมูล Membership ใช้ในการให้สิทธิ์ผู้ใช้คนอื่นสามารถเข้าถึงข้อมูลในแต่ละ Project ที่ตนเองไม่ได้เป็นเจ้าของได้ รายละเอียดดังนี้ :membership ( projectid ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุค่า) Query Variables ``Authorization``: JWT Token Response Type : [Membership] ตอบกลับเป็น Array ของ Object Type Membership ประกอบด้วย - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Membership - ``level``: *String* คือ ระดับชั้นของการเป็นสมาชิก - ``projectid``: *String* คือ รหัสของ Project ที่ Membership อยู่ภายใต้ - ``email``: *String* คือ email ของผู้ใช้ที่เป็นสมาชิก ตัวอย่างการเข้าถึงข้อมูล Membership ดังรูปด้านล่าง .. image:: _static/gql_membership.png Project ------------------------- สำหรับเข้าถึงข้อมูล Project รายละเอียดดังนี้ :project ( projectid, tag ): Arguments (ต้องระบุอย่างน้อย 1 ค่า) - ``projectid``: *String* คือ รหัสของ Project - ``tag``: *String* คือ แท็กของ Project Query Variables ``Authorization`` : JWT Token Response Type : [Project] ตอบกลับเป็น Array ของ Object Type Project ประกอบด้วย - ``projectname``: *String* คือ ชื่อของ Project - ``projectid``: *String* คือ รหัสของ Project - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Project - ``description``: *String* คือ คำอธิบาย Project - ``tag``: *String* คือ แท็กของ Project - ``numberdevice``: *Int* คือ จำนวน Device ภายใต้ Project - ``numbergroup``: *Int* คือ จำนวน Group ภายใต้ Project - ``numberdeviceonline``: *Int* คือ จำนวน Device ที่เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project - ``numberdeviceoffline``: *Int* คือ จำนวน Device ที่ไม่ได้เชื่อมต่อ Platform อยู่ ณ ขณะนั้นภายใต้ Project ตัวอย่างการเข้าถึงข้อมูล Project ดังรูปด้านล่าง .. image:: _static/gql_project.png ProjectBilling ------------------------- สำหรับเข้าถึงข้อมูลการใช้บริการทั้งหมดของแต่ละ Project รายละเอียดดังนี้ :ProjectBilling ( projectid ): Arguments - ``projectid``: *String* คือ รหัสของ Project (ต้องระบุ) Query Variables ``Authorization`` : JWT Token Response Type : ProjectBilling ตอบกลับเป็น Object Type ProjectBilling ประกอบด้วย - ``billingaccountid``: *String* คือ รหัสของ Billing Account - ``createdtime``: *Timestamp* คือ วันเวลาที่สร้าง Project Billing - ``updatedtime``: *Timestamp* คือ วันเวลาที่อัพเดทข้อมูลล่าสุด - ``usage``: *JSON* คือ ข้อมูลการใช้บริการ ตัวอย่างการเข้าถึงข้อมูล Project Billing ดังรูปด้านล่าง .. image:: _static/gql_projectbilling.png Schema ------------------------- สำหรับเข้าถึงข้อมูล Shadow Schema ของ Device รายละเอียดดังนี้ :schema ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) Query Variables ``Authorization``: JWT Token Response Type : Schema ตอบกลับเป็น Object Type Schema ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device - ``value``: *JSON* คือ Shadow Schema ที่กำหนดไว้ ซึ่งจะอยู่ในรูปแบบ JSON ตัวอย่างการเข้าถึงข้อมูล Shadow Schema ของ Device ดังรูปด้านล่าง .. image:: _static/gql_schema.png Shadow ------------------------- สำหรับเข้าถึงข้อมูล Shadow ของ Device รายละเอียดดังนี้ :shadow ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) - ``command``: *String* คือ ระบุ JSON Path โครงสร้าง Shadow ที่ต้องการเข้าถึงค่า (กรณีที่ต้องการข้อมูลบางส่วนใน Shadow) Query Variables ``Authorization``: JWT Token Response Type : Shadow ตอบกลับเป็น Object Type Shadow ประกอบด้วย - ``deviceid``: *String* คือ รหัสของ Device - ``data``: *JSON* คือ Shadow ที่กำหนดไว้ ซึ่งจะอยู่ในรูปแบบ JSON - ``rev``: *Int* คือ เลขที่ Revision - ``modified``: *Timestamp* คือ วันเวลาที่มีการแก้ไขข้อมูลล่าสุด ตัวอย่างการเข้าถึงข้อมูล Shadow ของ Device แบบไม่ระบุ ``command`` จะได้ Shadow มาทั้งหมด ดังรูปด้านล่าง .. image:: _static/gql_shadow.png ตัวอย่างการเข้าถึงข้อมูล Shadow ของ Device แบบไม่ระบุ ``command`` จะได้ Shadow มาทั้งหมด ดังรูปด้านล่าง .. image:: _static/gql_shadowpath.png | .. note:: การส่งค่า ``command`` Parameter ในการ Query Shadow | ตัวอย่างโครงสร้างข้อมูล Shadow เป็นดังนี้ ``{ "bedroom": { "humit": 60.3, "temp": 25.4 }, "humit": 67.9, "temp": 29 }`` | สามารถกำหนด ``command`` ได้ 2 แบบ คือ | แบบที่ 1 *value:[Shadow Path ของ Attribute ที่ต้องการค่า]* เช่น ``command``: "value:bedroom.temp" ได้ผลลัพธ์เป็น 25.4 ``command``: "value:temp" ได้ผลลัพธ์เป็น 29 | แบบที่ 2 กำหนดในรูปแบบ JSON String เช่น ``command``: "{'value':'bedroom.temp'}" ได้ผลลัพธ์เป็น 25.4 ``command``: "{'value':'temp'}" ได้ผลลัพธ์เป็น 29 | Trigger ------------------------- สำหรับเข้าถึงข้อมูล Trigger ของ Device รายละเอียดดังนี้ :trigger ( deviceid ): Arguments - ``deviceid``: *String* คือ รหัสของ Device (ต้องระบุค่า) Query Variables ``Authorization``: JWT Token Response Type : Trigger ตอบกลับเป็น Object Type Trigger ประกอบด้วย - ``id``: *String* คือ Primary Key ของ Device - ``deviceid``: *String* คือ รหัสของ Device - ``value``: *JSON* คือ การตั้งค่า Trigger ที่กำหนดไว้ ซึ่งจะอยู่ในรูปแบบ JSON ตัวอย่างการเข้าถึงข้อมูล Trigger ของ Device ดังรูปด้านล่าง .. image:: _static/gql_trigger.png