diff --git a/lib/src/types/aidConf.ts b/lib/src/types/aidConf.ts index e5309c5..9bdf3a7 100644 --- a/lib/src/types/aidConf.ts +++ b/lib/src/types/aidConf.ts @@ -27,22 +27,78 @@ export type InterfaceMetadata = { events: InterfaceEvent[]; } +/* +So here are some changes to the original spec: +IMO it is really redundant to have so many attributes for our property in the AID. +These attributes like min and max should be set on the actual attribute, not in the AID. +The AID should only contain the information about the endpoint and the type +(because the answer from the asset needs to be casted). +The WoT spec also has way less information for the elements and their forms. +Also their forms are using all the same interface (which is a good idea). +Multiple forms (like for read and write) can be added to the same property. + +And last but not least: maybe we want some kind of transformation for the data. +Like if the answer we're looking for is part of a JSON object, we can use a JSONPath to get the value. +That does not seem to be included in the WoT so maybe add it to the AID? + +As the WoT currently focuses on HTTP, CoAP and MQTT, and the AID focuses on HTTP, MQTT and Modbus +we focus on HTTP and MQTT for now. +It should be pretty easy to extend this. + +So let's derive some of this from the WoT and see what we can achieve. +*/ + export type InterfaceProperty = { title?: string; observable?: boolean; forms: InterfacePropertyForm; type?: string; - enum?: string[]; + // enum?: string[]; const?: any; default?: any; - //unit?: string; - minimum?: number; // TODO muss das gecapped werden? - maximum?: number; - minLength?: number; - maxLength?: number; - //items?: any[]; - minItems?: number; - maxItems?: number; + // unit?: string; + // minimum?: number; // TODO muss das gecapped werden? + // maximum?: number; + // minLength?: number; + // maxLength?: number; + // items?: any[]; + // minItems?: number; + // maxItems?: number; +} + +type FormOp = "readproperty" | +"writeproperty" | +"observeproperty" | +"unobserveproperty" | +"invokeaction" | +"subscribeevent" | +"unsubscribeevent" | +"readallproperties" | +"writeallproperties" | +"readmultipleproperties" | +"writemultipleproperties"; + +type FormOpHTTP = "readproperty" | +"writeproperty" | +"invokeaction" | +"readallproperties" | +"writeallproperties" | +"readmultipleproperties" | +"writemultipleproperties"; + +type IForm = { + href: string; + op: FormOp; + contentType: string; +} + +type IFormHTTP = IForm & { + "htv:methodName": "GET" | "PUT" | "POST" | "DELETE" | "PATCH"; + "htv:headers": { + "htv:fieldName": string; + "htv:fieldValue": string; + }[]; + op: FormOpHTTP; } export type InterfacePropertyForm = InterfacePropertyFormHTTP | InterfacePropertyFormMQTT | InterfacePropertyFormModbus; @@ -79,7 +135,23 @@ type InterfacePropertyFormMQTT = InterfacePropertyFormBase & { /** @alpha */ export type InterfaceAction = { - // TODO + title: string; + +} + +type InterfaceActionBase = { + title: string; + type: string; + const?: boolean; +} + +type InterfaceActionSync = { + + +} + +type InterfaceActionAsync = { + } /** @alpha */