12 Commits

Author SHA1 Message Date
Meik
4d939e9005 chore: prepare platform packages v1.4.0.1 2026-07-28 14:48:03 +02:00
Meik
b8ad580ae5 fix: sync configuration version from assembly 2026-07-03 08:04:21 +02:00
Meik
e5122c677f docs: document final 26.1 migration process 2026-07-03 00:35:20 +02:00
Meik
5d5f113d89 fix: update overview operation audiences 2026-07-02 23:57:12 +02:00
Meik
7588f83965 chore: name web service operation files by operation 2026-07-02 23:54:06 +02:00
Meik
ca2cf9581b fix: merge synchronized web service operations 2026-07-02 23:50:28 +02:00
Meik
8bfc3d497f chore: move query binding helpers 2026-07-02 23:06:50 +02:00
Meik
edbd34de61 fix: read missing parameters from query 2026-07-02 23:05:06 +02:00
Meik
93d1fc20b4 fix: restore legacy pickup route 2026-07-02 22:55:06 +02:00
Meik
a3a929e229 fix: bind legacy web api parameters from uri 2026-07-02 22:43:14 +02:00
Meik
9521693e27 fix: close isAlive responses 2026-07-02 10:33:05 +02:00
Meik
089c52fa99 chore: remove obsolete web api project files 2026-07-02 09:02:07 +02:00
22 changed files with 736 additions and 115 deletions

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration />

View File

@@ -62,6 +62,25 @@ $packageJson = [regex]::Replace($packageJson, '"Version"\s*:\s*"[^"]+"', "`"Vers
$packageJson = [regex]::Replace($packageJson, '"LastUpdatedDate"\s*:\s*"[^"]+"', "`"LastUpdatedDate`": `"$(Get-Date -Format 'yyyy-MM-ddTHH:mm:ss')`"")
[System.IO.File]::WriteAllText($packageJsonPath, $packageJson, [System.Text.UTF8Encoding]::new($true))
$configDataPath = Join-Path $packageDir 'install\1010_Config_Data\02-01-0080 C4IT_F4SDConfigurationType.dat'
if (-not (Test-Path -LiteralPath $configDataPath)) {
throw "Configuration data file not found: $configDataPath"
}
$configData = [System.IO.File]::ReadAllText($configDataPath)
$configData = [regex]::Replace(
$configData,
'(<C4IT_AddonConfigClassBase>[\s\S]*?<Version>)[^<]*(</Version>)',
"`${1}$PackageVersion`${2}",
[System.Text.RegularExpressions.RegexOptions]::Singleline
)
if ($configData -notmatch "<Version>$([regex]::Escape($PackageVersion))</Version>") {
throw "Could not update C4IT_F4SDConfigurationType Version to $PackageVersion in $configDataPath"
}
[System.IO.File]::WriteAllText($configDataPath, $configData, [System.Text.UTF8Encoding]::new($true))
$textFileExtensions = @('.json', '.xml', '.dat', '.type', '.class', '.config', '.host')
Get-ChildItem -LiteralPath $packageDir -Recurse -File |
Where-Object { $textFileExtensions -contains $_.Extension.ToLowerInvariant() } |

View File

@@ -94,27 +94,35 @@ namespace C4IT.F4SD
return GetRequiredService<IJournalService>();
}
[Route("getDirectLinkCreateTicket/{sid}/{assetname}"), HttpGet]
public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket(string sid = "", string assetname = "")
[Route("getDirectLinkCreateTicket"), HttpGet]
public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket([FromUri] string sid = "", [FromUri] string assetname = "")
{
await Task.Delay(0);
sid = QueryValue(sid, nameof(sid));
assetname = QueryValue(assetname, nameof(assetname));
return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname)
?? new F4SDHelperService.DirectLink();
}
[Route("getDirectLinkF4SD/{eoid}/{type}"), HttpGet]
public async Task<string> getDirectLinkF4SD(Guid eoid, string type)
[Route("getDirectLinkF4SD"), HttpGet]
public async Task<string> getDirectLinkF4SD([FromUri] Guid eoid, [FromUri] string type)
{
eoid = QueryValue(eoid, nameof(eoid));
type = QueryValue(type, nameof(type));
return await _f4stHelperService.getDirectLinkF4SD(eoid, type) ?? string.Empty;
}
[Route("getTicketList/{sid}/{hours}/{queueoption}/{queues}"), HttpGet]
[Route("getTicketList"), HttpGet]
public async Task<List<cF4SDTicketSummary>> getTicketList(
string sid,
int hours,
int queueoption = 0,
string queues = ""
[FromUri] string sid,
[FromUri] int hours,
[FromUri] int queueoption = 0,
[FromUri] string queues = ""
)
{
sid = QueryValue(sid, nameof(sid));
hours = QueryValue(hours, nameof(hours));
queueoption = QueryValue(queueoption, nameof(queueoption));
queues = QueryValue(queues, nameof(queues));
var decodedPairs = ParseQueues(queues);
// Nun weiterreichen an Service
@@ -128,8 +136,9 @@ namespace C4IT.F4SD
[Route("getTicketDetails"), HttpGet]
public async Task<cF4SDTicket> getTicketDetails(Guid objectId)
public async Task<cF4SDTicket> getTicketDetails([FromUri] Guid objectId)
{
objectId = QueryValue(objectId, nameof(objectId));
var tickets = await _f4stHelperService.getTicketDetails(new List<Guid>() { objectId });
if (tickets?.Count > 0)
return tickets[0];
@@ -138,20 +147,26 @@ namespace C4IT.F4SD
}
[Route("getTicketHistory"), HttpGet]
public async Task<List<cTicketJournalItem>> getTicketHistory(Guid objectId)
public async Task<List<cTicketJournalItem>> getTicketHistory([FromUri] Guid objectId)
{
objectId = QueryValue(objectId, nameof(objectId));
return await _f4stHelperService.GetJournalEntries(objectId) ?? new List<cTicketJournalItem>();
}
[Route("getTicketOverviewCounts"), HttpGet]
public async Task<F4SDHelperService.TicketOverviewCountsResult> getTicketOverviewCounts(
string sid,
string scope = "personal",
string keys = "",
int queueoption = 0,
string queues = ""
[FromUri] string sid,
[FromUri] string scope = "personal",
[FromUri] string keys = "",
[FromUri] int queueoption = 0,
[FromUri] string queues = ""
)
{
sid = QueryValue(sid, nameof(sid));
scope = QueryValue(scope, nameof(scope));
keys = QueryValue(keys, nameof(keys));
queueoption = QueryValue(queueoption, nameof(queueoption));
queues = QueryValue(queues, nameof(queues));
var parsedKeys = (keys ?? string.Empty)
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(key => key.Trim())
@@ -189,14 +204,20 @@ namespace C4IT.F4SD
[Route("getTicketOverviewRelations"), HttpGet]
public async Task<List<F4SDHelperService.TicketOverviewRelationDto>> getTicketOverviewRelations(
string sid,
string scope = "personal",
string key = "",
int count = 0,
int queueoption = 0,
string queues = ""
[FromUri] string sid,
[FromUri] string scope = "personal",
[FromUri] string key = "",
[FromUri] int count = 0,
[FromUri] int queueoption = 0,
[FromUri] string queues = ""
)
{
sid = QueryValue(sid, nameof(sid));
scope = QueryValue(scope, nameof(scope));
key = QueryValue(key, nameof(key));
count = QueryValue(count, nameof(count));
queueoption = QueryValue(queueoption, nameof(queueoption));
queues = QueryValue(queues, nameof(queues));
var decodedQueues = ParseQueues(queues);
return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count, queueoption, decodedQueues)
?? new List<F4SDHelperService.TicketOverviewRelationDto>();
@@ -213,9 +234,12 @@ namespace C4IT.F4SD
*/
[Route("getPickup/{name}"), HttpGet]
//[CacheOutput(UseETAG = true)]
public async Task<EntityEnumeration> getPickup(string name, EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, Int32 group = -1)
public async Task<EntityEnumeration> getPickup([FromUri] string name, [FromUri] EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, [FromUri] Int32 group = -1)
{
await Task.Delay(0);
name = QueryValue(name, nameof(name));
mode = QueryValue(mode, nameof(mode));
group = QueryValue(group, nameof(group));
EntityEnumeration enumerationTemp = GetEnumeration(name, mode);
var vals = enumerationTemp.Values;
@@ -251,8 +275,11 @@ namespace C4IT.F4SD
}
[HttpGet]
[Route("getRoleMemberships")]
public async Task<object> getRoleMemberships(string sid = "", string upn = "", Guid? id = null)
public async Task<object> getRoleMemberships([FromUri] string sid = "", [FromUri] string upn = "", [FromUri] Guid? id = null)
{
sid = QueryValue(sid, nameof(sid));
upn = QueryValue(upn, nameof(upn));
id = QueryValue(id, nameof(id));
var filter = "";
if (id != null && id.Value != Guid.Empty)
@@ -374,6 +401,38 @@ namespace C4IT.F4SD
?? Guid.Empty;
}
private string GetQueryValue(string name)
{
return Request?.GetQueryNameValuePairs()
.FirstOrDefault(pair => string.Equals(pair.Key, name, StringComparison.OrdinalIgnoreCase))
.Value;
}
private string QueryValue(string value, string name)
{
return GetQueryValue(name) ?? value ?? string.Empty;
}
private int QueryValue(int value, string name)
{
return int.TryParse(GetQueryValue(name), out var parsed) ? parsed : value;
}
private Guid QueryValue(Guid value, string name)
{
return Guid.TryParse(GetQueryValue(name), out var parsed) ? parsed : value;
}
private Guid? QueryValue(Guid? value, string name)
{
return Guid.TryParse(GetQueryValue(name), out var parsed) ? parsed : value;
}
private TEnum QueryValue<TEnum>(TEnum value, string name) where TEnum : struct
{
return Enum.TryParse<TEnum>(GetQueryValue(name), true, out var parsed) ? parsed : value;
}
private static List<cApiM42TicketQueueInfo> ParseQueues(string queues)
{
return (queues ?? string.Empty)
@@ -398,17 +457,24 @@ namespace C4IT.F4SD
[Route("isAlive"), HttpGet]
public IHttpActionResult isAlive()
{
return new StatusCodeResult(HttpStatusCode.NoContent);
var response = new HttpResponseMessage(HttpStatusCode.NoContent)
{
RequestMessage = Request
};
response.Headers.ConnectionClose = true;
return ResponseMessage(response);
}
[Route("loglevel"), HttpGet]
public async Task<string> setDebugMode(string debug = "0")
public async Task<string> setDebugMode([FromUri] string debug = "0")
{
var CM = MethodBase.GetCurrentMethod();
LogMethodBegin(CM);
try
{
await Task.Delay(0);
debug = QueryValue(debug, nameof(debug));
DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info;
return DefaultLogger.Manager.Level.ToString();
}
@@ -424,10 +490,13 @@ namespace C4IT.F4SD
}
[Route("log"), HttpGet]
public IHttpActionResult getLog(string download = "0", int count = 50, string filter = "")
public IHttpActionResult getLog([FromUri] string download = "0", [FromUri] int count = 50, [FromUri] string filter = "")
{
try
{
download = QueryValue(download, nameof(download));
count = QueryValue(count, nameof(count));
filter = QueryValue(filter, nameof(filter));
var response = _f4stHelperService.privGetLog(download, count, Request, filter);
if (response == null)
return new StatusCodeResult(HttpStatusCode.NoContent);

View File

@@ -1,9 +0,0 @@
@echo off
setlocal
pushd "%~dp0.."
dotnet build "F4SDM42WebApi\F4SD - M42WebApi.csproj" -c Release /p:M42SignAssemblies=true %*
set EXITCODE=%ERRORLEVEL%
popd
exit /b %EXITCODE%

View File

@@ -1,16 +0,0 @@
{
"Id": "6673a25d-33d6-4072-91d9-abed4be1a966",
"Vendor": "Consulting4IT GmbH",
"Name": "C4IT.F4SD.M42WebApi",
"Version": "1.3.0.0",
"Prerequisites": {
"MinimalRequiredProductVersion": "26.1.0",
"DependentPackages": []
},
"SetupDirectives": {
"MaintenanceMode": false,
"RecycleWebApplication": false,
"RestartM42WindowsServices": true
},
"Sandboxed": true
}

View File

@@ -5,17 +5,20 @@
<Script Major="2" Minor="1" Build="30" Type="dat" Name="0030_Navigation_C4IT_Addon_ServiceDesk.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0000_Global\0030_Navigation_C4IT_Addon_ServiceDesk.dat" />
<Script Major="2" Minor="1" Build="40" Type="dat" Name="0040_Navigation_C4IT_Addon_ServiceCatalog.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0000_Global\0040_Navigation_C4IT_Addon_ServiceCatalog.dat" />
<Script Major="2" Minor="1" Build="50" Type="dat" Name="02-01-0050 PLSLServiceTypeWebAPI.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0001_WebAPIService\02-01-0050 PLSLServiceTypeWebAPI.dat" />
<Script Major="2" Minor="1" Build="60" Type="dat" Name="02-01-0060 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0060 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="70" Type="dat" Name="02-01-0070 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0070 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="80" Type="dat" Name="02-01-0080 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0080 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="90" Type="dat" Name="02-01-0090 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0090 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="100" Type="dat" Name="02-01-0100 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0100 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="110" Type="dat" Name="02-01-0110 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0110 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="120" Type="dat" Name="02-01-0120 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0120 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="130" Type="dat" Name="02-01-0130 PLSLWebServiceOperationType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\02-01-0130 PLSLWebServiceOperationType.dat" />
<Script Major="2" Minor="1" Build="60" Type="dat" Name="getdirectlinkcreateticket.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getdirectlinkcreateticket.dat" />
<Script Major="2" Minor="1" Build="70" Type="dat" Name="getdirectlinkf4sd.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getdirectlinkf4sd.dat" />
<Script Major="2" Minor="1" Build="80" Type="dat" Name="getlog.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getlog.dat" />
<Script Major="2" Minor="1" Build="90" Type="dat" Name="getticketdetails.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getticketdetails.dat" />
<Script Major="2" Minor="1" Build="100" Type="dat" Name="gettickethistory.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\gettickethistory.dat" />
<Script Major="2" Minor="1" Build="110" Type="dat" Name="getticketlist.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getticketlist.dat" />
<Script Major="2" Minor="1" Build="120" Type="dat" Name="isalive.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\isalive.dat" />
<Script Major="2" Minor="1" Build="130" Type="dat" Name="setdebugmode.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\setdebugmode.dat" />
<Script Major="2" Minor="1" Build="140" Type="dat" Name="getmyrolememberships.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getmyrolememberships.dat" />
<Script Major="2" Minor="1" Build="150" Type="dat" Name="getpickup.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getpickup.dat" />
<Script Major="2" Minor="1" Build="160" Type="dat" Name="getrolememberships.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getrolememberships.dat" />
<Script Major="2" Minor="1" Build="161" Type="dat" Name="getticketoverviewcounts.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getticketoverviewcounts.dat" />
<Script Major="2" Minor="1" Build="162" Type="dat" Name="getticketoverviewcountsbyroles.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getticketoverviewcountsbyroles.dat" />
<Script Major="2" Minor="1" Build="163" Type="dat" Name="getticketoverviewrelations.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0002_WebServiceOperation\getticketoverviewrelations.dat" />
<Script Major="2" Minor="1" Build="170" Type="dat" Name="02-01-0150 PDRActionType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0003_UUXActions\02-01-0150 PDRActionType.dat" />
<Script Major="2" Minor="1" Build="180" Type="dat" Name="02-01-0160 PDRActionType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0003_UUXActions\02-01-0160 PDRActionType.dat" />
<Script Major="2" Minor="1" Build="190" Type="dat" Name="02-01-0170 PDRActionType.dat" PackageVersion="1.4" Mode="Merge" Register="false" FilePath="install\0003_UUXActions\02-01-0170 PDRActionType.dat" />

View File

@@ -137,9 +137,10 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>b3193051-6fe6-cdd2-7d76-08da9bbec2b6</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType"},"assetname":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getDirectLinkCreateTicket(sid, assetname)</Name>
<RouteTemplate>getDirectLinkCreateTicket/{sid}/{assetname}</RouteTemplate>
<ResponseContract>{"UsedTypes":{"C4IT_F4SD_F4SDHelperService+DirectLink":{"Descriptor":{"Link":{"Type":"StringType"},"SubjectParameter":{"Type":"StringType"},"DescriptionParameter":{"Type":"StringType"}}}},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"C4IT_F4SD_F4SDHelperService+DirectLink"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType","Source":0},"assetname":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getDirectLinkCreateTicket(sid,assetname)</Name>
<RouteTemplate>getDirectLinkCreateTicket</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>

View File

@@ -137,9 +137,10 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>04d0755f-27dd-c4ac-2785-08dac1666661</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"eoid":{"Type":"StringType"},"type":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getDirectLinkF4SD(eoid, type)</Name>
<RouteTemplate>getDirectLinkF4SD/{eoid}/{type}</RouteTemplate>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"StringType"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"eoid":{"Type":"GuidType","Source":0},"type":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getDirectLinkF4SD(eoid,type)</Name>
<RouteTemplate>getDirectLinkF4SD</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>

View File

@@ -137,8 +137,9 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>f977a1d8-f21c-c1bc-4ea0-08dac09d3c99</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"download":{"Type":"StringType"},"count":{"Type":"StringType"},"filter":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getLog(download, count, filter)</Name>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"Matrix42_WebApi_Contracts_IHttpActionResult"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"download":{"Type":"StringType","Source":0},"count":{"Type":"IntType","Source":0},"filter":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getLog(download,count,filter)</Name>
<RouteTemplate>log</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -137,8 +137,9 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>6cec89ab-b843-cd6b-d6b5-08db99ad32ee</ID>
<RequestContract>{"UsedTypes":{},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getMyRoleMemberships</Name>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"System_Object"}}</ResponseContract>
<RequestContract>{"UsedTypes":{},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getMyRoleMemberships()</Name>
<RouteTemplate>getMyRoleMemberships</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -137,8 +137,9 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>ef14b892-628c-c1c1-801f-08db99ad32e9</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"name":{"Type":"StringType"},"mode":{"Type":"StringType"},"group":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getPickup(name, mode, group)</Name>
<ResponseContract>{"UsedTypes":{"Matrix42_Pandora_Contracts_EntityEnumeration":{"Documentation":"Describes Entity Enumeration","Descriptor":{"Name":{"Documentation":"Technical name of the Enumeration","Type":"StringType"},"Values":{"Documentation":"Enumeration Values","Type":["Matrix42_Pandora_Contracts_EntityEnumerationValue"]}},"DisplayName":"Name"},"Matrix42_Pandora_Contracts_EntityEnumerationValue":{"Documentation":"Represents a single value in Entity Enumeration","Descriptor":{"Value":{"Documentation":"Gets or sets a value","Type":"IntType"},"DisplayString":{"Documentation":"Gets or sets the display string for Enumeration Value","Type":"StringType"},"Hidden":{"Documentation":"Gets or sets a Hidden attribute","Type":"BoolType"},"Extentions":{"Documentation":"Additional pickup value attributes","Type":["StringType"]}}}},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"Matrix42_Pandora_Contracts_EntityEnumeration"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"name":{"Type":"StringType","Source":0},"mode":{"Type":"IntType","Source":0},"group":{"Type":"IntType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getPickup(name,mode,group)</Name>
<RouteTemplate>getPickup/{name}</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -137,8 +137,9 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>06747fe1-8113-c51f-4969-08db99ad32f1</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType"},"upn":{"Type":"StringType"},"id":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getRoleMemberships(sid, upn, id)</Name>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"System_Object"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType","Source":0},"upn":{"Type":"StringType","Source":0},"id":{"Type":"GuidType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getRoleMemberships(sid,upn,id)</Name>
<RouteTemplate>getRoleMemberships</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="PLSLWebServiceOperation">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="ResponseContract" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RequestContract" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RouteTemplate" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Documentation" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TypeID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Service" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="SupportedOperation" type="xs:int" minOccurs="0" />
<xs:element name="Type" type="xs:int" minOccurs="0" />
<xs:element name="IsPublic" type="xs:unsignedByte" />
<xs:element name="DocumentationLink" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PDRAudienceClass">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="UsedInTypePDRContentWidgetTypeDialog" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRContentWidgetTypeObjectDetails" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRDataQueryFilterType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Unrestricted" type="xs:unsignedByte" />
<xs:element name="Configured" type="xs:unsignedByte" />
<xs:element name="UsedInTypePDRActionType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRNavigationItemType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="ConsiderRelated" type="xs:unsignedByte" />
<xs:element name="UsedInTypePLSLWebServiceOperationType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePLSLServiceTypeWebAPI" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRContentWidgetTemplateViewType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypeSVMEmailSignatureType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="StrictAdminControl" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2PDRAudienceClass">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="InheritedFrom" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="ApplyTo" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSUserClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Users" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSSecurityClassRole">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Roles" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSOrgUnitClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="OUs" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSLocationClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Locations" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//PLSLWebServiceOperation" />
<xs:field xpath="ID" />
</xs:unique>
<xs:unique name="PDRAudienceClass_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//PDRAudienceClass" />
<xs:field xpath="ID" />
</xs:unique>
</xs:element>
</xs:schema>
<PLSLWebServiceOperation>
<ID>750c8dc4-ada0-c1b0-c877-08da9bbec2e3</ID>
<ResponseContract>{"UsedTypes":{"C4IT_FASD_Base_cF4SDTicket":{"Descriptor":{"AffectedUserId":{"Type":"GuidType"},"AssetId":{"Type":"GuidType"},"CreationDate":{"Type":"DateType"},"ClosingDate":{"Type":"DateType"},"CreationSourceId":{"Type":"IntType"},"CreationSource":{"Type":"StringType"},"Description":{"Type":"StringType"},"DescriptionHtml":{"Type":"StringType"},"PriorityId":{"Type":"IntType"},"Priority":{"Type":"StringType"},"CategoryId":{"Type":"GuidType"},"Category":{"Type":"StringType"},"CategoryHierarchical":{"Type":"StringType"},"CIName":{"Type":"StringType"},"DirectLinkEdit":{"Type":"StringType"},"AssetCIId":{"Type":"GuidType"},"AssetSKUAssetGroupId":{"Type":"IntType"},"AssetSKUAssetGroup":{"Type":"StringType"},"AssetSKUTypeId":{"Type":"IntType"},"AssetSKUType":{"Type":"StringType"},"DirectLinkPreview":{"Type":"StringType"},"DirectLinkClose":{"Type":"StringType"},"AffectedUser":{"Type":"StringType"},"SolutionHtml":{"Type":"StringType"},"Solution":{"Type":"StringType"},"AssetDomain":{"Type":"StringType"},"TicketObjectId":{"Type":"GuidType"},"Name":{"Type":"StringType"},"ActivityType":{"Type":"StringType"},"Summary":{"Type":"StringType"},"Sid":{"Type":"StringType"},"Status":{"Type":"StringType"},"StatusId":{"Type":"IntType"},"Urgency":{"Type":"StringType"},"UrgencyId":{"Type":"IntType"},"Impact":{"Type":"StringType"},"ImpactId":{"Type":"IntType"},"AssetCIName":{"Type":"StringType"},"AssetName":{"Type":"StringType"},"ServiceName":{"Type":"StringType"},"ServiceId":{"Type":"GuidType"},"IsPrimaryAccount":{"Type":"BoolType"}},"DisplayName":"Name"}},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"C4IT_FASD_Base_cF4SDTicket"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"objectId":{"Type":"GuidType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getTicketDetails(objectId)</Name>
<RouteTemplate>getTicketDetails</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>
<SupportedOperation>0</SupportedOperation>
<Type>1</Type>
<IsPublic>0</IsPublic>
</PLSLWebServiceOperation>
<PDRAudienceClass>
<ID>336febdb-9a39-ed11-209c-b0c4b3911a8e</ID>
<Unrestricted>1</Unrestricted>
<Configured>1</Configured>
<ConsiderRelated>0</ConsiderRelated>
<UsedInTypePLSLWebServiceOperationType>750c8dc4-ada0-c1b0-c877-08da9bbec2e3</UsedInTypePLSLWebServiceOperationType>
<StrictAdminControl>0</StrictAdminControl>
</PDRAudienceClass>
</NewDataSet>

View File

@@ -137,7 +137,8 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>94d0317f-a8db-caf0-a353-08da9bbec2dc</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"objectId":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"System_Collections_Generic_List`1[C4IT_FASD_Base_cF4SDTicket+cTicketJournalItem]"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"objectId":{"Type":"GuidType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getTicketHistory(objectId)</Name>
<RouteTemplate>getTicketHistory</RouteTemplate>
<Documentation />

View File

@@ -137,9 +137,10 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>163e04c2-8b5c-c0e6-0535-08da9bbec2df</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType"},"hours":{"Type":"StringType"},"queueoption":{"Type":"StringType"},"queues":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getTicketList(sid, hours, queueoption, queues)</Name>
<RouteTemplate>getTicketList/{sid}/{hours}/{queueoption}/{queues}</RouteTemplate>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"System_Collections_Generic_List`1[C4IT_FASD_Base_cF4SDTicketSummary]"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType","Source":0},"hours":{"Type":"IntType","Source":0},"queueoption":{"Type":"IntType","Source":0},"queues":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getTicketList(sid,hours,queueoption,queues)</Name>
<RouteTemplate>getTicketList</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="PLSLWebServiceOperation">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="ResponseContract" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RequestContract" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RouteTemplate" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Documentation" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TypeID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Service" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="SupportedOperation" type="xs:int" minOccurs="0" />
<xs:element name="Type" type="xs:int" minOccurs="0" />
<xs:element name="IsPublic" type="xs:unsignedByte" />
<xs:element name="DocumentationLink" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PDRAudienceClass">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="UsedInTypePDRContentWidgetTypeDialog" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRContentWidgetTypeObjectDetails" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRDataQueryFilterType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Unrestricted" type="xs:unsignedByte" />
<xs:element name="Configured" type="xs:unsignedByte" />
<xs:element name="UsedInTypePDRActionType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRNavigationItemType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="ConsiderRelated" type="xs:unsignedByte" />
<xs:element name="UsedInTypePLSLWebServiceOperationType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePLSLServiceTypeWebAPI" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRContentWidgetTemplateViewType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypeSVMEmailSignatureType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="StrictAdminControl" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2PDRAudienceClass">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="InheritedFrom" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="ApplyTo" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSUserClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Users" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSSecurityClassRole">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Roles" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSOrgUnitClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="OUs" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSLocationClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Locations" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//PLSLWebServiceOperation" />
<xs:field xpath="ID" />
</xs:unique>
<xs:unique name="PDRAudienceClass_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//PDRAudienceClass" />
<xs:field xpath="ID" />
</xs:unique>
</xs:element>
</xs:schema>
<PLSLWebServiceOperation>
<ID>99eef84e-a303-c248-36c5-08ded882fc6c</ID>
<ResponseContract>{"UsedTypes":{"C4IT_F4SD_F4SDHelperService+TicketOverviewCountsResult":{"Descriptor":{"Counts":{"Type":["StringType"]}}}},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"C4IT_F4SD_F4SDHelperService+TicketOverviewCountsResult"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType","Source":0},"scope":{"Type":"StringType","Source":0},"keys":{"Type":"StringType","Source":0},"queueoption":{"Type":"IntType","Source":0},"queues":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getTicketOverviewCounts(sid,scope,keys,queueoption,queues)</Name>
<RouteTemplate>getTicketOverviewCounts</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>
<SupportedOperation>0</SupportedOperation>
<Type>1</Type>
<IsPublic>0</IsPublic>
</PLSLWebServiceOperation>
<PDRAudienceClass>
<ID>82d8de08-6cfc-1483-6bfa-da4b9403a82d</ID>
<Unrestricted>1</Unrestricted>
<Configured>1</Configured>
<ConsiderRelated>0</ConsiderRelated>
<UsedInTypePLSLWebServiceOperationType>99eef84e-a303-c248-36c5-08ded882fc6c</UsedInTypePLSLWebServiceOperationType>
<StrictAdminControl>0</StrictAdminControl>
</PDRAudienceClass>
</NewDataSet>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="PLSLWebServiceOperation">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="ResponseContract" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RequestContract" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RouteTemplate" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Documentation" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TypeID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Service" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="SupportedOperation" type="xs:int" minOccurs="0" />
<xs:element name="Type" type="xs:int" minOccurs="0" />
<xs:element name="IsPublic" type="xs:unsignedByte" />
<xs:element name="DocumentationLink" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PDRAudienceClass">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" />
<xs:element name="UsedInTypePDRContentWidgetTypeDialog" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRContentWidgetTypeObjectDetails" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRDataQueryFilterType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Unrestricted" type="xs:unsignedByte" />
<xs:element name="Configured" type="xs:unsignedByte" />
<xs:element name="UsedInTypePDRActionType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRNavigationItemType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="ConsiderRelated" type="xs:unsignedByte" />
<xs:element name="UsedInTypePLSLWebServiceOperationType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePLSLServiceTypeWebAPI" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypePDRContentWidgetTemplateViewType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="UsedInTypeSVMEmailSignatureType" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="StrictAdminControl" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2PDRAudienceClass">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="InheritedFrom" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="ApplyTo" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSUserClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Users" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSSecurityClassRole">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Roles" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSOrgUnitClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="OUs" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SchemaRelation-PDRAudienceClass2SPSLocationClassBase">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Audiences" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Locations" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//PLSLWebServiceOperation" />
<xs:field xpath="ID" />
</xs:unique>
<xs:unique name="PDRAudienceClass_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//PDRAudienceClass" />
<xs:field xpath="ID" />
</xs:unique>
</xs:element>
</xs:schema>
<PLSLWebServiceOperation>
<ID>290c8d51-b8d4-ce74-50c5-08ded882fc72</ID>
<ResponseContract>{"UsedTypes":{"C4IT_F4SD_F4SDHelperService+TicketOverviewCountsByRoleResult":{"Descriptor":{"GeneratedAtUtc":{"Type":"DateType"},"CountsByRole":{"Type":["StringType"]}}}},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"C4IT_F4SD_F4SDHelperService+TicketOverviewCountsByRoleResult"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"request":{"Type":"C4IT_F4SD_F4SDM42WebApiController+TicketOverviewCountsByRolesRequest","Source":1}}},"C4IT_F4SD_F4SDM42WebApiController+TicketOverviewCountsByRolesRequest":{"Descriptor":{"Sid":{"Type":"StringType"},"RoleGuids":{"Type":["GuidType"]},"Keys":{"Type":["StringType"]},"QueueOption":{"Type":"IntType"},"Queues":{"Type":"StringType"}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getTicketOverviewCountsByRoles(request)</Name>
<RouteTemplate>getTicketOverviewCountsByRoles</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>
<SupportedOperation>16</SupportedOperation>
<Type>2</Type>
<IsPublic>0</IsPublic>
</PLSLWebServiceOperation>
<PDRAudienceClass>
<ID>82d8de08-72fc-4476-6bfa-da4b9403a848</ID>
<Unrestricted>1</Unrestricted>
<Configured>1</Configured>
<ConsiderRelated>0</ConsiderRelated>
<UsedInTypePLSLWebServiceOperationType>290c8d51-b8d4-ce74-50c5-08ded882fc72</UsedInTypePLSLWebServiceOperationType>
<StrictAdminControl>0</StrictAdminControl>
</PDRAudienceClass>
</NewDataSet>

View File

@@ -136,10 +136,11 @@
</xs:element>
</xs:schema>
<PLSLWebServiceOperation>
<ID>750c8dc4-ada0-c1b0-c877-08da9bbec2e3</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"objectId":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>getTicketDetails(objectId)</Name>
<RouteTemplate>getTicketDetails</RouteTemplate>
<ID>c5dd653a-54d8-c430-c9df-08ded882fc79</ID>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"System_Collections_Generic_List`1[C4IT_F4SD_F4SDHelperService+TicketOverviewRelationDto]"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType","Source":0},"scope":{"Type":"StringType","Source":0},"key":{"Type":"StringType","Source":0},"count":{"Type":"IntType","Source":0},"queueoption":{"Type":"IntType","Source":0},"queues":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getTicketOverviewRelations(sid,scope,key,count,queueoption,queues)</Name>
<RouteTemplate>getTicketOverviewRelations</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>
@@ -148,11 +149,11 @@
<IsPublic>0</IsPublic>
</PLSLWebServiceOperation>
<PDRAudienceClass>
<ID>336febdb-9a39-ed11-209c-b0c4b3911a8e</ID>
<ID>82d8de08-7afc-f13f-6bfa-da4b9403a863</ID>
<Unrestricted>1</Unrestricted>
<Configured>1</Configured>
<ConsiderRelated>0</ConsiderRelated>
<UsedInTypePLSLWebServiceOperationType>750c8dc4-ada0-c1b0-c877-08da9bbec2e3</UsedInTypePLSLWebServiceOperationType>
<UsedInTypePLSLWebServiceOperationType>c5dd653a-54d8-c430-c9df-08ded882fc79</UsedInTypePLSLWebServiceOperationType>
<StrictAdminControl>0</StrictAdminControl>
</PDRAudienceClass>
</NewDataSet>

View File

@@ -137,8 +137,9 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>9df9d16f-1a00-cc19-1727-08dac09d3c08</ID>
<RequestContract>{"UsedTypes":{},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<Name>isAlive</Name>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"Matrix42_WebApi_Contracts_IHttpActionResult"}}</ResponseContract>
<RequestContract>{"UsedTypes":{},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>isAlive()</Name>
<RouteTemplate>isAlive</RouteTemplate>
<Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -137,7 +137,8 @@
</xs:schema>
<PLSLWebServiceOperation>
<ID>14366b3c-b79d-cfe3-ded3-08da9bbec2d7</ID>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"debug":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}}</RequestContract>
<ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"StringType"}}</ResponseContract>
<RequestContract>{"UsedTypes":{"RequestContract":{"Descriptor":{"debug":{"Type":"StringType","Source":0}}}},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>setDebugMode(debug)</Name>
<RouteTemplate>loglevel</RouteTemplate>
<Documentation />

View File

@@ -5,5 +5,5 @@
[assembly: AssemblyCopyright("Copyright © 2026, Consulting4IT GmbH, Germany")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("1.4.0.0")]
[assembly: AssemblyInformationalVersion("1.4.0.0")]
[assembly: AssemblyVersion("1.4.0.1")]
[assembly: AssemblyInformationalVersion("1.4.0.1")]

View File

@@ -108,6 +108,28 @@ Beim Portieren eines Legacy-Pakets:
3. Extension-/Assembly-ID beibehalten, wenn ein Update statt einer Neuinstallation gewollt ist.
4. Operation-IDs nur dann aendern, wenn bewusst neue Operationen entstehen sollen.
5. Obsolete oder entfernte Schema-Attribute aus 26.1 entfernen.
6. Nach der ersten lauffaehigen Version die Webservice-Operationen in Matrix42 synchronisieren, exportieren und die synchronisierten Contracts in die Paketdateien mergen.
Wichtiges finales Learning zu Webservice-Operationen:
- Wenn ein Endpoint nur nach "Service synchronisieren" korrekt funktioniert, sind die `PLSLWebServiceOperation`-Contracts im Paket nicht mehr synchron zum Controller.
- Die synchronisierten Operationen exportieren und mit den bestehenden Paketdateien mergen.
- Bestehende `PLSLWebServiceOperation.ID`s nicht durch Export-IDs ersetzen, sonst entstehen auf Bestandssystemen doppelte Operationen.
- Bestehende `PDRAudienceClass.ID`s ebenfalls erhalten.
- Nur fachliche Operation-Felder uebernehmen: `ResponseContract`, `RequestContract`, `Name`, `RouteTemplate`, `SupportedOperation`, `Type`, `IsPublic`.
- Neue Operationen, die bisher nicht im Paket vorhanden waren, duerfen die exportierten IDs verwenden, wenn sie aus dem Zielsystem stammen, auf dem sie bereits synchronisiert wurden.
- Operation-Dateien nach Operation benennen, z. B. `getticketlist.dat`, `getpickup.dat`, `isalive.dat`. Das erleichtert Reviews und verhindert Verwechslungen mit generischen `02-01-xxxx PLSLWebServiceOperationType.dat`-Dateien.
- Jede Datei aus `PackageTemplate/install/0002_WebServiceOperation` muss in `PackageTemplate/install.xml` referenziert sein.
Validierung:
```powershell
# XML parsebar?
python -c "import pathlib,xml.etree.ElementTree as ET; [ET.parse(p) for p in pathlib.Path('PackageTemplate/install/0002_WebServiceOperation').glob('*.dat')]"
# Debug-Paket bauen und pruefen, ob alle Operation-Dateien im Paket liegen
dotnet build "C:\Workspace\C4IT FASD\F4SD_M42WebApi\C4IT - F4SD - M42WebApi.sln" -c Debug
```
Konkretes 26.1-Learning:
@@ -224,7 +246,7 @@ Bewaehrt:
- Datenendpoints geben direkte Nutzdaten zurueck, z. B. `Task<List<T>>`, `Task<object>` oder `Task<EntityEnumeration>`.
- Leere Listen duerfen nicht `null` sein.
- `isAlive` gibt `IHttpActionResult` mit `StatusCodeResult(HttpStatusCode.NoContent)` zurueck.
- `isAlive` gibt `IHttpActionResult` mit einem expliziten HTTP-204-Response zurueck.
Healthcheck:
@@ -232,7 +254,13 @@ Healthcheck:
[Route("isAlive"), HttpGet]
public IHttpActionResult isAlive()
{
return new StatusCodeResult(HttpStatusCode.NoContent);
var response = new HttpResponseMessage(HttpStatusCode.NoContent)
{
RequestMessage = Request
};
response.Headers.ConnectionClose = true;
return ResponseMessage(response);
}
```
@@ -266,28 +294,63 @@ Regel:
## Routen und Parameterbindung
Wichtiges spaetes Learning: Der Matrix42 `m42Services`-Gateway kann Query-Parameter auch dann an die Methode binden, wenn die Controller-Route path-basierte Platzhalter hat.
Finales Learning: Fuer Legacy-Kompatibilitaet muessen Route, `PLSLWebServiceOperation.RouteTemplate`, `[FromUri]` und die alten Client-URLs zusammen betrachtet werden.
Beispiel im Code:
Bewaehrte Regeln:
- Die Route-Attribute aus der funktionierenden Legacy-Version uebernehmen.
- Query-basierte Legacy-Endpoints bleiben query-basiert, z. B. `[Route("getTicketList")]`.
- Path-basierte Legacy-Endpoints bleiben path-basiert, z. B. `[Route("getPickup/{name}")]`.
- GET-Parameter mit `[FromUri]` markieren.
- Zusaetzlich einen kleinen zentralen Query-Fallback verwenden, weil in 26.1 einzelne optionale Queryparameter trotz `[FromUri]` nicht immer in der Methode ankamen.
- Keine doppelten Controller-Methoden fuer alte und neue URL-Formen bauen.
- Die Postman-Collection testet bewusst die alten Client-URLs.
Beispiel Query-Route:
```csharp
[Route("getDirectLinkF4SD/{eoid}/{type}"), HttpGet]
public async Task<string> getDirectLinkF4SD(Guid eoid, string type)
[Route("getDirectLinkCreateTicket"), HttpGet]
public async Task<DirectLink> getDirectLinkCreateTicket(
[FromUri] string sid = "",
[FromUri] string assetname = "")
{
sid = QueryValue(sid, nameof(sid));
assetname = QueryValue(assetname, nameof(assetname));
...
}
```
Funktionierende Legacy-URL:
Beispiel Path-Route mit zusaetzlichen Queryparametern:
```text
/m42Services/api/c4itf4sdwebapi/getdirectlinkf4sd/?eoid=<guid>&type=user
```csharp
[Route("getPickup/{name}"), HttpGet]
public async Task<EntityEnumeration> getPickup(
[FromUri] string name,
[FromUri] EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None,
[FromUri] int group = -1)
{
name = QueryValue(name, nameof(name));
mode = QueryValue(mode, nameof(mode));
group = QueryValue(group, nameof(group));
...
}
```
Daraus folgt fuer diese Migration:
Der zentrale Query-Fallback ist bewusst klein und verwendet die strukturierte WebAPI-API statt eigenes URL-Parsen:
- Controller nicht doppeln.
- Keine Query-Helper einbauen.
- Kein `[FromUri]` als Rettungsversuch verwenden, wenn das Matrix42-Binding ohnehin funktioniert.
- Die Postman-Collection testet bewusst die alten Query-Routen, damit Client-Kompatibilitaet erhalten bleibt.
- `PLSLWebServiceOperation.RouteTemplate` darf path-basiert sein, die alten Query-Aufrufe muessen trotzdem getestet werden.
```csharp
private string GetQueryValue(string name)
{
return Request?.GetQueryNameValuePairs()
.FirstOrDefault(pair => string.Equals(pair.Key, name, StringComparison.OrdinalIgnoreCase))
.Value;
}
private string QueryValue(string value, string name)
{
return GetQueryValue(name) ?? value ?? string.Empty;
}
```
Betroffene alte Testformate:
@@ -295,6 +358,7 @@ Betroffene alte Testformate:
getTicketList?sid=...&hours=...&queueoption=...&queues=...
getDirectLinkCreateTicket?sid=...&assetname=...
getDirectLinkF4SD?eoid=...&type=...
getPickup/<name>?mode=...&group=...
```
## Pickups und Enumerations
@@ -452,7 +516,7 @@ Ein `HttpResponseMessage` wurde als DTO serialisiert. Rueckgabe auf direkten Nut
{"result":null,"parameters":{}}
```
Void-Endpoint oder falsch behandelte leere Rueckgabe. Fuer NoContent `StatusCodeResult(HttpStatusCode.NoContent)` nutzen.
Void-Endpoint oder falsch behandelte leere Rueckgabe. Fuer NoContent einen `IHttpActionResult` mit HTTP 204 liefern.
```text
Method <name> returned null
@@ -468,7 +532,7 @@ Diese Ansaetze haben nicht nachhaltig geholfen und sollen nicht erneut aufgebaut
- Immer mehr Module auf Vorrat laden, ohne die konkrete fehlende Registrierung zu kennen.
- `HttpResponseMessage` als Datenantwort verwenden.
- Query-Parameter per eigenem Helper aus `RequestUri` lesen.
- `[FromUri]` pauschal an alle GET-Parameter setzen.
- Doppelte Controller-Methoden fuer alte Query-URLs und neue Path-URLs bauen.
- `JournalService` direkt konstruieren.
- NoOp-/Proxy-Abhaengigkeiten fuer Journal-Services erzeugen.
- Journal-Historie aus unvollstaendigen Kommentarfeldern nachbauen.
@@ -486,12 +550,17 @@ Diese Ansaetze haben nicht nachhaltig geholfen und sollen nicht erneut aufgebaut
8. AssemblyVersion als einzige Package-Versionsquelle verwenden.
9. WebAPI-Rueckgaben auf direkte DTOs/Listen umstellen.
10. `isAlive` auf echten 204 umstellen.
11. Pickups zuerst ueber schlanke Services loesen.
12. Komplexe Matrix42-Services erst bei Bedarf laden.
13. Bei Unity-Fehlern konkrete Implementierung/Registrator suchen.
14. Postman-Collection fuer alte Client-Routen aufbauen.
15. Paket installieren, Service synchronisieren und Smoke-Tests ausfuehren.
16. Erst nach erfolgreicher Kompatibilitaet fachliche Weiterentwicklungen einbringen.
11. Controller-Routen aus der funktionierenden Legacy-Version uebernehmen.
12. GET-Parameter mit `[FromUri]` versehen und fehlende Querywerte zentral ueber `Request.GetQueryNameValuePairs()` nachziehen.
13. Pickups zuerst ueber schlanke Services loesen.
14. Komplexe Matrix42-Services erst bei Bedarf laden.
15. Bei Unity-Fehlern konkrete Implementierung/Registrator suchen.
16. Webservice-Operationen nach erfolgreicher Installation in Matrix42 synchronisieren.
17. Synchronisierte Operationen exportieren und in die Paketdateien mergen, ohne bestehende IDs zu ersetzen.
18. Operation-Dateien sprechend nach Operation benennen und in `install.xml` referenzieren.
19. Postman-Collection fuer alte Client-Routen aufbauen.
20. Paket installieren, Service synchronisieren und Smoke-Tests ausfuehren.
21. Erst nach erfolgreicher Kompatibilitaet fachliche Weiterentwicklungen einbringen.
## Git- und Datei-Hinweise