Difference between revisions of "UBIK Web Service"
| (28 intermediate revisions by 2 users not shown) | |||
| Line 6: | Line 6: | ||
* Updating Content objects (Update Contents) | * Updating Content objects (Update Contents) | ||
* Uploading a file Document (Upload Document ) | * Uploading a file Document (Upload Document ) | ||
| + | * CheckOur and release a set of Contents objects | ||
= Fetch MetaDefinitions = | = Fetch MetaDefinitions = | ||
== Fetch MetaDefinitions == | == Fetch MetaDefinitions == | ||
| − | Provides the configured ACM (see [[Application_Context_Management]]) | + | Provides the configured ACM (see [[Application_Context_Management]]) data model to the client. |
<source lang="csharp"> | <source lang="csharp"> | ||
| Line 33: | Line 34: | ||
| − | === List | + | === List of Parameters === |
{| class="wikitable" | width = "50%" | {| class="wikitable" | width = "50%" | ||
|- | |- | ||
| Line 49: | Line 50: | ||
| − | === Code Example ( | + | === Code Example (C#) === |
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 69: | Line 70: | ||
= Download Content = | = Download Content = | ||
| − | + | == Download Content == | |
GetHierarchyDeltasV212 is used for downloading single objects as well as branches, root objects and the infrastructure. | GetHierarchyDeltasV212 is used for downloading single objects as well as branches, root objects and the infrastructure. | ||
| Line 84: | Line 85: | ||
/// <returns>a set of content objects</returns> | /// <returns>a set of content objects</returns> | ||
[OperationContract] | [OperationContract] | ||
| − | [WebInvoke(UriTemplate = " | + | [WebInvoke(UriTemplate = "GetHierarchyDeltasV212/{appName}/{contextName}/{authentication}/{version}", Method = "POST", |
RequestFormat = WebMessageFormat.Json, | RequestFormat = WebMessageFormat.Json, | ||
| + | BodyStyle = WebMessageBodyStyle.Bare, | ||
ResponseFormat = WebMessageFormat.Json)] | ResponseFormat = WebMessageFormat.Json)] | ||
| Line 97: | Line 99: | ||
| − | === List | + | === List of Parameters === |
{| class="wikitable" | width = "50%" | {| class="wikitable" | width = "50%" | ||
|- | |- | ||
| Line 113: | Line 115: | ||
|- | |- | ||
|} | |} | ||
| + | |||
| + | == Code Examples == | ||
| + | |||
| + | === Downloading Root Objects === | ||
| + | ==== HTTP (REST) ==== | ||
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | POST <CONTENT-PATH>/UBIKContent.svc/GetHierarchyDeltasV212/<APP>/<CTX>/<TOKEN>/<VERSION> HTTP/1.1 | ||
| + | Host: <HOSTNAME/IP>:<PORT> | ||
| + | Content-Type: application/json | ||
| + | </source> | ||
| + | <source lang="javascript" style="padding-top: 0; border-top: 0;"> | ||
| + | { | ||
| + | "StartingPoint": { | ||
| + | "__type": "HierarchyRoot:#UBIK.Service.DTO.V211" | ||
| + | }, | ||
| + | "ParentDepth": 0, | ||
| + | "ChildrenDepth": 1, | ||
| + | "KnownRelations": null, | ||
| + | "KnownContents": null | ||
| + | } | ||
| + | </source> | ||
| + | Make sure to replace the <code><tags></code> accordingly! | ||
| + | |||
| + | The <code>__type</code> property allows the JSON deserializer to find the correct class. [[https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/stand-alone-json-serialization?redirectedfrom=MSDN#polymorphism-1| Microsoft Documentation]]. | ||
| + | |||
| + | |||
| + | |||
| + | ==== SOAP ==== | ||
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ubik="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V211" xmlns:ubik1="http://schemas.datacontract.org/2004/07/UBIK.Service" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:ubik2="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V244" xmlns:ubik3="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V260"> | ||
| + | <soapenv:Header/> | ||
| + | <soapenv:Body> | ||
| + | <tem:GetHierarchyDeltasV212> | ||
| + | <tem:appName>application</tem:appName> | ||
| + | <tem:contextName>context</tem:contextName> | ||
| + | <tem:args> | ||
| + | <ubik:ChildrenDepth>1</ubik:ChildrenDepth> | ||
| + | <ubik:ParentDepth>0</ubik:ParentDepth> | ||
| + | <ubik:StartingPoint xsi:type="ubik:HierarchyRoot"/> | ||
| + | </tem:args> | ||
| + | <tem:authentication>authttoken</tem:authentication> | ||
| + | <tem:version>264</tem:version> | ||
| + | </tem:GetHierarchyDeltasV212> | ||
| + | </soapenv:Body> | ||
| + | </soapenv:Envelope> | ||
| + | |||
| + | </source> | ||
| + | |||
| + | Make sure to replace the application, context and authtoken accordingly! | ||
| − | |||
| − | |||
| + | ==== C# ==== | ||
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 143: | Line 193: | ||
| − | Downloading Infrastructure Objects | + | === Downloading Infrastructure Objects === |
| + | ==== HTTP (REST) ==== | ||
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | POST <CONTENT-PATH>/UBIKContent.svc/GetHierarchyDeltasV212/<APP>/<CTX>/<TOKEN>/<VERSION> HTTP/1.1 | ||
| + | Host: <HOSTNAME/IP>:<PORT> | ||
| + | Content-Type: application/json | ||
| + | </source> | ||
| + | <source lang="javascript" style="padding-top: 0; border-top: 0;"> | ||
| + | { | ||
| + | "StartingPoint": { | ||
| + | "__type": "HierarchyInfrastructure:#UBIK.Service.DTO.V211" | ||
| + | }, | ||
| + | "ParentDepth": 0, | ||
| + | "ChildrenDepth": 1, | ||
| + | "KnownRelations": null, | ||
| + | "KnownContents": null | ||
| + | } | ||
| + | </source> | ||
| + | Make sure to replace the <code><tags></code> accordingly! | ||
| + | |||
| + | |||
| + | |||
| + | ==== SOAP ==== | ||
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ubik="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V211" xmlns:ubik1="http://schemas.datacontract.org/2004/07/UBIK.Service" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:ubik2="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V244" xmlns:ubik3="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V260"> | ||
| + | <soapenv:Header/> | ||
| + | <soapenv:Body> | ||
| + | <tem:GetHierarchyDeltasV212> | ||
| + | <tem:appName>application</tem:appName> | ||
| + | <tem:contextName>context</tem:contextName> | ||
| + | <tem:args> | ||
| + | <ubik:ChildrenDepth>1</ubik:ChildrenDepth> | ||
| + | <ubik:ParentDepth>0</ubik:ParentDepth> | ||
| + | <ubik:StartingPoint xsi:type="ubik:HierarchyInfrastructure"/> | ||
| + | </tem:args> | ||
| + | <tem:authentication>authttoken</tem:authentication> | ||
| + | <tem:version>264</tem:version> | ||
| + | </tem:GetHierarchyDeltasV212> | ||
| + | </soapenv:Body> | ||
| + | </soapenv:Envelope> | ||
| + | </source> | ||
| + | |||
| + | Make sure to replace the application, context and authtoken accordingly! | ||
| + | ==== C#==== | ||
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 170: | Line 263: | ||
| − | Downloading | + | === Downloading branch === |
| + | The branch starting at object with UID = '9E8FC21E-137E-4DDB-9D85-6E71B01F12FA' will be downloaded. | ||
| + | ==== HTTP (REST) ==== | ||
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | POST <CONTENT-PATH>/UBIKContent.svc/GetHierarchyDeltasV212/<APP>/<CTX>/<TOKEN>/<VERSION> HTTP/1.1 | ||
| + | Host: <HOSTNAME/IP>:<PORT> | ||
| + | Content-Type: application/json | ||
| + | </source> | ||
| + | <source lang="javascript" style="padding-top: 0; border-top: 0;"> | ||
| + | { | ||
| + | "StartingPoint": { | ||
| + | "__type": "HierarchyStartingPoint:#UBIK.Service.DTO.V211", | ||
| + | "UID": "9E8FC21E-137E-4DDB-9D85-6E71B01F12FA" | ||
| + | }, | ||
| + | "ParentDepth": 0, | ||
| + | "ChildrenDepth": 1, | ||
| + | "KnownRelations": null, | ||
| + | "KnownContents": null | ||
| + | } | ||
| + | </source> | ||
| + | |||
| + | ==== SOAP ==== | ||
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ubik="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V211" xmlns:ubik1="http://schemas.datacontract.org/2004/07/UBIK.Service" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:ubik2="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V244" xmlns:ubik3="http://schemas.datacontract.org/2004/07/UBIK.Service.DTO.V260"> | ||
| + | <soapenv:Header/> | ||
| + | <soapenv:Body> | ||
| + | <tem:GetHierarchyDeltasV212> | ||
| + | <tem:appName>APP_TEST</tem:appName> | ||
| + | <tem:contextName>CTX_TEST</tem:contextName> | ||
| + | <tem:args> | ||
| + | <ubik:ChildrenDepth>1</ubik:ChildrenDepth> | ||
| + | <ubik:ParentDepth>0</ubik:ParentDepth> | ||
| + | <ubik:StartingPoint xsi:type="ubik:HierarchyStartingPoint"> | ||
| + | <ubik:UID>9E8FC21E-137E-4DDB-9D85-6E71B01F12FA</ubik:UID> | ||
| + | </ubik:StartingPoint> | ||
| + | </tem:args> | ||
| + | <tem:authentication>authttoken</tem:authentication> | ||
| + | <tem:version>264</tem:version> | ||
| + | </tem:GetHierarchyDeltasV212> | ||
| + | </soapenv:Body> | ||
| + | </soapenv:Envelope> | ||
| + | </source> | ||
| + | |||
| + | Make sure to replace the application, context and authtoken accordingly! | ||
| + | |||
| + | |||
| + | |||
| + | ==== C# ==== | ||
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
string contextName = "CTX_TEST"; | string contextName = "CTX_TEST"; | ||
string authToken = FetchValidAuthToken(); | string authToken = FetchValidAuthToken(); | ||
| − | string version = " | + | string version = "264"; |
HierarchyDeltaArguments args = new HierarchyDeltaArguments() | HierarchyDeltaArguments args = new HierarchyDeltaArguments() | ||
| Line 194: | Line 334: | ||
version); | version); | ||
</source> | </source> | ||
| − | |||
| − | |||
= Download a Document = | = Download a Document = | ||
| − | + | == Download a Document == | |
Method provides a stream to the document referenced by the contentId. | Method provides a stream to the document referenced by the contentId. | ||
| Line 230: | Line 368: | ||
</source> | </source> | ||
| − | === List | + | === List of Parameters === |
{| class="wikitable" | width = "50%" | {| class="wikitable" | width = "50%" | ||
|- | |- | ||
| Line 247: | Line 385: | ||
|} | |} | ||
| − | === Code Example ( | + | === Code Example (C#) === |
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 289: | Line 427: | ||
= Create a single Content = | = Create a single Content = | ||
| + | == Create a single Content == | ||
Method for creating a single content object and retrieving the new object as result | Method for creating a single content object and retrieving the new object as result | ||
| Line 321: | Line 460: | ||
| − | === List | + | === List of Parameters === |
{| class="wikitable" | width = "50%" | {| class="wikitable" | width = "50%" | ||
|- | |- | ||
| Line 341: | Line 480: | ||
| − | === Code Example ( | + | === Code Example (C#) === |
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 392: | Line 531: | ||
= Update Contents = | = Update Contents = | ||
| + | == Update Contents == | ||
Method for updating a set of content objects and retrieving the updated objects as result | Method for updating a set of content objects and retrieving the updated objects as result | ||
| Line 418: | Line 558: | ||
</source> | </source> | ||
| − | === List | + | === List of Parameters === |
{| class="wikitable" | width = "50%" | {| class="wikitable" | width = "50%" | ||
|- | |- | ||
| Line 435: | Line 575: | ||
|} | |} | ||
| − | === Code Example ( | + | ==== HTTP (REST) ==== |
| + | <source lang="html4strict" style="padding-bottom: 0; border-bottom: 0;"> | ||
| + | POST <CONTENT-PATH>/UBIKContent.svc/UpdateContentListV212/<APP>/<CTX>/<TOKEN>/<VERSION> HTTP/1.1 | ||
| + | Host: <HOSTNAME/IP>:<PORT> | ||
| + | Content-Type: application/json | ||
| + | </source> | ||
| + | <source lang="javascript" style="padding-top: 0; border-top: 0;"> | ||
| + | [ | ||
| + | { | ||
| + | "__type": "UbikContent:#UBIK.Service.DTO.V260", | ||
| + | "UID": "c02e668b-d400-41df-b7bc-ab3f1f31d250", | ||
| + | "PropertyValues": | ||
| + | [ | ||
| + | { | ||
| + | "__type": "TypePropertyValueOfstring:#UBIK.Service", | ||
| + | "MetaPropertyID": "4ec5281a-e0bd-4917-aff5-708352fc6953", | ||
| + | "ValidationTS":"/Date(1569942000000+0200)/", | ||
| + | "Value": "TESTVALUE" | ||
| + | }, | ||
| + | { | ||
| + | "__type": "TypePropertyValueOfNullableOfint:#UBIK.Service", | ||
| + | "MetaPropertyID": "7c95ec83-a399-4b47-b827-6d87795a7b19", | ||
| + | "ValidationTS":"/Date(1569942000000+0200)/", | ||
| + | "Value": 33 | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | </source> | ||
| + | Make sure to replace the <code><tags></code> accordingly! | ||
| + | |||
| + | The <code>__type</code> property allows the JSON deserializer to find the correct class. [[https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/stand-alone-json-serialization?redirectedfrom=MSDN#polymorphism-1| Microsoft Documentation]]. | ||
| + | |||
| + | |||
| + | |||
| + | === Code Example (C#) === | ||
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 477: | Line 652: | ||
version); | version); | ||
</source> | </source> | ||
| − | |||
| − | |||
= Upload Document = | = Upload Document = | ||
| − | + | == Upload Document == | |
Method for updating a set of content objects and retrieving the updated objects as result | Method for updating a set of content objects and retrieving the updated objects as result | ||
| Line 522: | Line 695: | ||
|} | |} | ||
| − | === Code Example ( | + | === Code Example (C#) === |
<source lang="csharp"> | <source lang="csharp"> | ||
string appName = "APP_TEST"; | string appName = "APP_TEST"; | ||
| Line 559: | Line 732: | ||
</source> | </source> | ||
| + | |||
| + | = Exclusive Access = | ||
| + | == CheckOut == | ||
| + | Tries to get exclusive access to all provided contents. | ||
| + | |||
| + | <source lang="csharp"> | ||
| + | [OperationContract] | ||
| + | [WebInvoke(UriTemplate = "CheckOut/{appName}/{contextName}/{authentication}/{version}", Method = "POST", | ||
| + | RequestFormat = WebMessageFormat.Json, | ||
| + | BodyStyle = WebMessageBodyStyle.Bare, | ||
| + | ResponseFormat = WebMessageFormat.Json)] | ||
| + | |||
| + | BCDataShipments CheckOut( | ||
| + | string appName, | ||
| + | string contextName, | ||
| + | string authentication, | ||
| + | UbikContent[] contents, | ||
| + | string version); | ||
| + | </source> | ||
| + | |||
| + | |||
| + | === List of Parameters === | ||
| + | {| class="wikitable" | width = "50%" | ||
| + | |- | ||
| + | ! Name!! Type !! Description | ||
| + | |- | ||
| + | | appName|| String || Name of the Application | ||
| + | |- | ||
| + | | contextName|| String || Name of the Context | ||
| + | |- | ||
| + | | authentication|| String || Valid auth token | ||
| + | |- | ||
| + | | contents|| UbikContent[] || Content objects to be checked out | ||
| + | |- | ||
| + | | version|| String || Indicator of the expected data format version | ||
| + | |- | ||
| + | |} | ||
| + | |||
| + | |||
| + | === Code Example (C#) === | ||
| + | <source lang="csharp"> | ||
| + | string appName = "APP_TEST"; | ||
| + | string contextName = "CTX_TEST"; | ||
| + | string authToken = FetchValidAuthToken(); | ||
| + | string version = "362"; | ||
| + | |||
| + | UbikContent content = new UbikContent() | ||
| + | { | ||
| + | // reference to the MetaDefinition | ||
| + | MetaClassID = new Guid("6b4bd904-8504-4e05-93dd-ae120d15a5be"), | ||
| + | // object => we must use the UID of an existing content object | ||
| + | UID = new Guid("6b4bd904-8504-4e05-93dd-ae120d15a5be") | ||
| + | }; | ||
| + | |||
| + | UBIKContentClient target = new UBIKContentClient(WEBSERVER_NAME); | ||
| + | |||
| + | BCDataShipments result = target.CheckOut( | ||
| + | appName, | ||
| + | contextName, | ||
| + | authToken, | ||
| + | new UbikContent[] { content }, | ||
| + | version); | ||
| + | </source> | ||
| + | |||
| + | == Release == | ||
| + | Tries to release the exclusive access to all provided contents. | ||
| + | |||
| + | <source lang="csharp"> | ||
| + | [OperationContract] | ||
| + | [WebInvoke(UriTemplate = "Release/{appName}/{contextName}/{authentication}/{version}", Method = "POST", | ||
| + | RequestFormat = WebMessageFormat.Json, | ||
| + | BodyStyle = WebMessageBodyStyle.Bare, | ||
| + | ResponseFormat = WebMessageFormat.Json)] | ||
| + | |||
| + | BCDataShipments Release( | ||
| + | string appName, | ||
| + | string contextName, | ||
| + | string authentication, | ||
| + | UbikContent[] contents, | ||
| + | string version); | ||
| + | </source> | ||
| + | |||
| + | |||
| + | === List of Parameters === | ||
| + | {| class="wikitable" | width = "50%" | ||
| + | |- | ||
| + | ! Name!! Type !! Description | ||
| + | |- | ||
| + | | appName|| String || Name of the Application | ||
| + | |- | ||
| + | | contextName|| String || Name of the Context | ||
| + | |- | ||
| + | | authentication|| String || Valid auth token | ||
| + | |- | ||
| + | | contents|| UbikContent[] || Content objects to be checked out | ||
| + | |- | ||
| + | | version|| String || Indicator of the expected data format version | ||
| + | |- | ||
| + | |} | ||
| + | |||
| + | |||
| + | === Code Example (C#) === | ||
| + | <source lang="csharp"> | ||
| + | string appName = "APP_TEST"; | ||
| + | string contextName = "CTX_TEST"; | ||
| + | string authToken = FetchValidAuthToken(); | ||
| + | string version = "362"; | ||
| + | |||
| + | UbikContent content = new UbikContent() | ||
| + | { | ||
| + | // reference to the MetaDefinition | ||
| + | MetaClassID = new Guid("6b4bd904-8504-4e05-93dd-ae120d15a5be"), | ||
| + | // object => we must use the UID of an existing content object | ||
| + | UID = new Guid("6b4bd904-8504-4e05-93dd-ae120d15a5be") | ||
| + | }; | ||
| + | |||
| + | UBIKContentClient target = new UBIKContentClient(WEBSERVER_NAME); | ||
| + | |||
| + | BCDataShipments result = target.Release( | ||
| + | appName, | ||
| + | contextName, | ||
| + | authToken, | ||
| + | new UbikContent[] { content }, | ||
| + | version); | ||
| + | </source> | ||
<headertabs /> | <headertabs /> | ||
[[Category:Server|Web Service]] | [[Category:Server|Web Service]] | ||
Latest revision as of 16:30, 4 April 2022
The following section describes the most important UBIK Webservice Methods used for
- Fetching information about the Datamodell (Fetch MetaDefinitions)
- Downloading Content objects (Download Content)
- Downloading Content File Documents (Download Document)
- Creating a single Content object (Create Content)
- Updating Content objects (Update Contents)
- Uploading a file Document (Upload Document )
- CheckOur and release a set of Contents objects
