11 Commits

Author SHA1 Message Date
Meik
bd701ea63f chore: prepare signed Linux package v1.4.0.2 2026-07-28 14:59:06 +02:00
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
19 changed files with 728 additions and 86 deletions

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')`"") $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)) [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') $textFileExtensions = @('.json', '.xml', '.dat', '.type', '.class', '.config', '.host')
Get-ChildItem -LiteralPath $packageDir -Recurse -File | Get-ChildItem -LiteralPath $packageDir -Recurse -File |
Where-Object { $textFileExtensions -contains $_.Extension.ToLowerInvariant() } | Where-Object { $textFileExtensions -contains $_.Extension.ToLowerInvariant() } |

View File

@@ -94,27 +94,35 @@ namespace C4IT.F4SD
return GetRequiredService<IJournalService>(); return GetRequiredService<IJournalService>();
} }
[Route("getDirectLinkCreateTicket/{sid?}/{assetname?}"), HttpGet] [Route("getDirectLinkCreateTicket"), HttpGet]
public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket(string sid = "", string assetname = "") public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket([FromUri] string sid = "", [FromUri] string assetname = "")
{ {
await Task.Delay(0); await Task.Delay(0);
sid = QueryValue(sid, nameof(sid));
assetname = QueryValue(assetname, nameof(assetname));
return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname) return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname)
?? new F4SDHelperService.DirectLink(); ?? new F4SDHelperService.DirectLink();
} }
[Route("getDirectLinkF4SD/{eoid?}/{type?}"), HttpGet] [Route("getDirectLinkF4SD"), HttpGet]
public async Task<string> getDirectLinkF4SD(Guid eoid, string type = "") 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; return await _f4stHelperService.getDirectLinkF4SD(eoid, type) ?? string.Empty;
} }
[Route("getTicketList/{sid?}/{hours?}/{queueoption?}/{queues?}"), HttpGet] [Route("getTicketList"), HttpGet]
public async Task<List<cF4SDTicketSummary>> getTicketList( public async Task<List<cF4SDTicketSummary>> getTicketList(
string sid = "", [FromUri] string sid,
int hours = 0, [FromUri] int hours,
int queueoption = 0, [FromUri] int queueoption = 0,
string queues = "" [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); var decodedPairs = ParseQueues(queues);
// Nun weiterreichen an Service // Nun weiterreichen an Service
@@ -128,8 +136,9 @@ namespace C4IT.F4SD
[Route("getTicketDetails"), HttpGet] [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 }); var tickets = await _f4stHelperService.getTicketDetails(new List<Guid>() { objectId });
if (tickets?.Count > 0) if (tickets?.Count > 0)
return tickets[0]; return tickets[0];
@@ -138,20 +147,26 @@ namespace C4IT.F4SD
} }
[Route("getTicketHistory"), HttpGet] [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>(); return await _f4stHelperService.GetJournalEntries(objectId) ?? new List<cTicketJournalItem>();
} }
[Route("getTicketOverviewCounts"), HttpGet] [Route("getTicketOverviewCounts"), HttpGet]
public async Task<F4SDHelperService.TicketOverviewCountsResult> getTicketOverviewCounts( public async Task<F4SDHelperService.TicketOverviewCountsResult> getTicketOverviewCounts(
string sid, [FromUri] string sid,
string scope = "personal", [FromUri] string scope = "personal",
string keys = "", [FromUri] string keys = "",
int queueoption = 0, [FromUri] int queueoption = 0,
string queues = "" [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) var parsedKeys = (keys ?? string.Empty)
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(key => key.Trim()) .Select(key => key.Trim())
@@ -189,14 +204,20 @@ namespace C4IT.F4SD
[Route("getTicketOverviewRelations"), HttpGet] [Route("getTicketOverviewRelations"), HttpGet]
public async Task<List<F4SDHelperService.TicketOverviewRelationDto>> getTicketOverviewRelations( public async Task<List<F4SDHelperService.TicketOverviewRelationDto>> getTicketOverviewRelations(
string sid, [FromUri] string sid,
string scope = "personal", [FromUri] string scope = "personal",
string key = "", [FromUri] string key = "",
int count = 0, [FromUri] int count = 0,
int queueoption = 0, [FromUri] int queueoption = 0,
string queues = "" [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); var decodedQueues = ParseQueues(queues);
return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count, queueoption, decodedQueues) return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count, queueoption, decodedQueues)
?? new List<F4SDHelperService.TicketOverviewRelationDto>(); ?? new List<F4SDHelperService.TicketOverviewRelationDto>();
@@ -211,11 +232,14 @@ namespace C4IT.F4SD
}; };
} }
*/ */
[Route("getPickup/{name?}"), HttpGet] [Route("getPickup/{name}"), HttpGet]
//[CacheOutput(UseETAG = true)] //[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); await Task.Delay(0);
name = QueryValue(name, nameof(name));
mode = QueryValue(mode, nameof(mode));
group = QueryValue(group, nameof(group));
EntityEnumeration enumerationTemp = GetEnumeration(name, mode); EntityEnumeration enumerationTemp = GetEnumeration(name, mode);
var vals = enumerationTemp.Values; var vals = enumerationTemp.Values;
@@ -251,8 +275,11 @@ namespace C4IT.F4SD
} }
[HttpGet] [HttpGet]
[Route("getRoleMemberships")] [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 = ""; var filter = "";
if (id != null && id.Value != Guid.Empty) if (id != null && id.Value != Guid.Empty)
@@ -374,6 +401,38 @@ namespace C4IT.F4SD
?? Guid.Empty; ?? 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) private static List<cApiM42TicketQueueInfo> ParseQueues(string queues)
{ {
return (queues ?? string.Empty) return (queues ?? string.Empty)
@@ -408,13 +467,14 @@ namespace C4IT.F4SD
} }
[Route("loglevel"), HttpGet] [Route("loglevel"), HttpGet]
public async Task<string> setDebugMode(string debug = "0") public async Task<string> setDebugMode([FromUri] string debug = "0")
{ {
var CM = MethodBase.GetCurrentMethod(); var CM = MethodBase.GetCurrentMethod();
LogMethodBegin(CM); LogMethodBegin(CM);
try try
{ {
await Task.Delay(0); await Task.Delay(0);
debug = QueryValue(debug, nameof(debug));
DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info; DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info;
return DefaultLogger.Manager.Level.ToString(); return DefaultLogger.Manager.Level.ToString();
} }
@@ -430,10 +490,13 @@ namespace C4IT.F4SD
} }
[Route("log"), HttpGet] [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 try
{ {
download = QueryValue(download, nameof(download));
count = QueryValue(count, nameof(count));
filter = QueryValue(filter, nameof(filter));
var response = _f4stHelperService.privGetLog(download, count, Request, filter); var response = _f4stHelperService.privGetLog(download, count, Request, filter);
if (response == null) if (response == null)
return new StatusCodeResult(HttpStatusCode.NoContent); return new StatusCodeResult(HttpStatusCode.NoContent);

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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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" /> <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,7 +137,8 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>b3193051-6fe6-cdd2-7d76-08da9bbec2b6</ID> <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> <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> <Name>getDirectLinkCreateTicket(sid,assetname)</Name>
<RouteTemplate>getDirectLinkCreateTicket</RouteTemplate> <RouteTemplate>getDirectLinkCreateTicket</RouteTemplate>
<Documentation /> <Documentation />

View File

@@ -137,7 +137,8 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>04d0755f-27dd-c4ac-2785-08dac1666661</ID> <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> <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> <Name>getDirectLinkF4SD(eoid,type)</Name>
<RouteTemplate>getDirectLinkF4SD</RouteTemplate> <RouteTemplate>getDirectLinkF4SD</RouteTemplate>
<Documentation /> <Documentation />

View File

@@ -137,7 +137,8 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>f977a1d8-f21c-c1bc-4ea0-08dac09d3c99</ID> <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> <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> <Name>getLog(download,count,filter)</Name>
<RouteTemplate>log</RouteTemplate> <RouteTemplate>log</RouteTemplate>
<Documentation /> <Documentation />

View File

@@ -137,8 +137,9 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>6cec89ab-b843-cd6b-d6b5-08db99ad32ee</ID> <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> <ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"System_Object"}}</ResponseContract>
<Name>getMyRoleMemberships</Name> <RequestContract>{"UsedTypes":{},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>getMyRoleMemberships()</Name>
<RouteTemplate>getMyRoleMemberships</RouteTemplate> <RouteTemplate>getMyRoleMemberships</RouteTemplate>
<Documentation /> <Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID> <TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -137,9 +137,10 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>ef14b892-628c-c1c1-801f-08db99ad32e9</ID> <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> <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> <Name>getPickup(name,mode,group)</Name>
<RouteTemplate>getPickup</RouteTemplate> <RouteTemplate>getPickup/{name}</RouteTemplate>
<Documentation /> <Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID> <TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service> <Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>

View File

@@ -137,7 +137,8 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>06747fe1-8113-c51f-4969-08db99ad32f1</ID> <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> <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> <Name>getRoleMemberships(sid,upn,id)</Name>
<RouteTemplate>getRoleMemberships</RouteTemplate> <RouteTemplate>getRoleMemberships</RouteTemplate>
<Documentation /> <Documentation />

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> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>94d0317f-a8db-caf0-a353-08da9bbec2dc</ID> <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> <Name>getTicketHistory(objectId)</Name>
<RouteTemplate>getTicketHistory</RouteTemplate> <RouteTemplate>getTicketHistory</RouteTemplate>
<Documentation /> <Documentation />

View File

@@ -137,7 +137,8 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>163e04c2-8b5c-c0e6-0535-08da9bbec2df</ID> <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> <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> <Name>getTicketList(sid,hours,queueoption,queues)</Name>
<RouteTemplate>getTicketList</RouteTemplate> <RouteTemplate>getTicketList</RouteTemplate>
<Documentation /> <Documentation />

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:element>
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>750c8dc4-ada0-c1b0-c877-08da9bbec2e3</ID> <ID>c5dd653a-54d8-c430-c9df-08ded882fc79</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_F4SD_F4SDHelperService+TicketOverviewRelationDto]"}}</ResponseContract>
<Name>getTicketDetails(objectId)</Name> <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>
<RouteTemplate>getTicketDetails</RouteTemplate> <Name>getTicketOverviewRelations(sid,scope,key,count,queueoption,queues)</Name>
<RouteTemplate>getTicketOverviewRelations</RouteTemplate>
<Documentation /> <Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID> <TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>
<Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service> <Service>dcd66369-4933-ed11-1b9c-e3e293f5401c</Service>
@@ -148,11 +149,11 @@
<IsPublic>0</IsPublic> <IsPublic>0</IsPublic>
</PLSLWebServiceOperation> </PLSLWebServiceOperation>
<PDRAudienceClass> <PDRAudienceClass>
<ID>336febdb-9a39-ed11-209c-b0c4b3911a8e</ID> <ID>82d8de08-7afc-f13f-6bfa-da4b9403a863</ID>
<Unrestricted>1</Unrestricted> <Unrestricted>1</Unrestricted>
<Configured>1</Configured> <Configured>1</Configured>
<ConsiderRelated>0</ConsiderRelated> <ConsiderRelated>0</ConsiderRelated>
<UsedInTypePLSLWebServiceOperationType>750c8dc4-ada0-c1b0-c877-08da9bbec2e3</UsedInTypePLSLWebServiceOperationType> <UsedInTypePLSLWebServiceOperationType>c5dd653a-54d8-c430-c9df-08ded882fc79</UsedInTypePLSLWebServiceOperationType>
<StrictAdminControl>0</StrictAdminControl> <StrictAdminControl>0</StrictAdminControl>
</PDRAudienceClass> </PDRAudienceClass>
</NewDataSet> </NewDataSet>

View File

@@ -137,8 +137,9 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>9df9d16f-1a00-cc19-1727-08dac09d3c08</ID> <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> <ResponseContract>{"UsedTypes":{},"ContractDescriptor":{"ReturnCountType":"NotProvided","Documentation":"Return value","Type":"Matrix42_WebApi_Contracts_IHttpActionResult"}}</ResponseContract>
<Name>isAlive</Name> <RequestContract>{"UsedTypes":{},"ContractDescriptor":{"Type":"RequestContract"}}</RequestContract>
<Name>isAlive()</Name>
<RouteTemplate>isAlive</RouteTemplate> <RouteTemplate>isAlive</RouteTemplate>
<Documentation /> <Documentation />
<TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID> <TypeID>7660e907-769c-e711-a182-f079595b3ec7</TypeID>

View File

@@ -137,7 +137,8 @@
</xs:schema> </xs:schema>
<PLSLWebServiceOperation> <PLSLWebServiceOperation>
<ID>14366b3c-b79d-cfe3-ded3-08da9bbec2d7</ID> <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> <Name>setDebugMode(debug)</Name>
<RouteTemplate>loglevel</RouteTemplate> <RouteTemplate>loglevel</RouteTemplate>
<Documentation /> <Documentation />

View File

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

View File

@@ -108,6 +108,28 @@ Beim Portieren eines Legacy-Pakets:
3. Extension-/Assembly-ID beibehalten, wenn ein Update statt einer Neuinstallation gewollt ist. 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. 4. Operation-IDs nur dann aendern, wenn bewusst neue Operationen entstehen sollen.
5. Obsolete oder entfernte Schema-Attribute aus 26.1 entfernen. 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: Konkretes 26.1-Learning:
@@ -224,7 +246,7 @@ Bewaehrt:
- Datenendpoints geben direkte Nutzdaten zurueck, z. B. `Task<List<T>>`, `Task<object>` oder `Task<EntityEnumeration>`. - Datenendpoints geben direkte Nutzdaten zurueck, z. B. `Task<List<T>>`, `Task<object>` oder `Task<EntityEnumeration>`.
- Leere Listen duerfen nicht `null` sein. - 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: Healthcheck:
@@ -232,7 +254,13 @@ Healthcheck:
[Route("isAlive"), HttpGet] [Route("isAlive"), HttpGet]
public IHttpActionResult isAlive() 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 ## 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 ```csharp
[Route("getDirectLinkF4SD/{eoid}/{type}"), HttpGet] [Route("getDirectLinkCreateTicket"), HttpGet]
public async Task<string> getDirectLinkF4SD(Guid eoid, string type) 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 ```csharp
/m42Services/api/c4itf4sdwebapi/getdirectlinkf4sd/?eoid=<guid>&type=user [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. ```csharp
- Keine Query-Helper einbauen. private string GetQueryValue(string name)
- 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. return Request?.GetQueryNameValuePairs()
- `PLSLWebServiceOperation.RouteTemplate` darf path-basiert sein, die alten Query-Aufrufe muessen trotzdem getestet werden. .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: Betroffene alte Testformate:
@@ -295,6 +358,7 @@ Betroffene alte Testformate:
getTicketList?sid=...&hours=...&queueoption=...&queues=... getTicketList?sid=...&hours=...&queueoption=...&queues=...
getDirectLinkCreateTicket?sid=...&assetname=... getDirectLinkCreateTicket?sid=...&assetname=...
getDirectLinkF4SD?eoid=...&type=... getDirectLinkF4SD?eoid=...&type=...
getPickup/<name>?mode=...&group=...
``` ```
## Pickups und Enumerations ## Pickups und Enumerations
@@ -452,7 +516,7 @@ Ein `HttpResponseMessage` wurde als DTO serialisiert. Rueckgabe auf direkten Nut
{"result":null,"parameters":{}} {"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 ```text
Method <name> returned null 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. - Immer mehr Module auf Vorrat laden, ohne die konkrete fehlende Registrierung zu kennen.
- `HttpResponseMessage` als Datenantwort verwenden. - `HttpResponseMessage` als Datenantwort verwenden.
- Query-Parameter per eigenem Helper aus `RequestUri` lesen. - 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. - `JournalService` direkt konstruieren.
- NoOp-/Proxy-Abhaengigkeiten fuer Journal-Services erzeugen. - NoOp-/Proxy-Abhaengigkeiten fuer Journal-Services erzeugen.
- Journal-Historie aus unvollstaendigen Kommentarfeldern nachbauen. - 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. 8. AssemblyVersion als einzige Package-Versionsquelle verwenden.
9. WebAPI-Rueckgaben auf direkte DTOs/Listen umstellen. 9. WebAPI-Rueckgaben auf direkte DTOs/Listen umstellen.
10. `isAlive` auf echten 204 umstellen. 10. `isAlive` auf echten 204 umstellen.
11. Pickups zuerst ueber schlanke Services loesen. 11. Controller-Routen aus der funktionierenden Legacy-Version uebernehmen.
12. Komplexe Matrix42-Services erst bei Bedarf laden. 12. GET-Parameter mit `[FromUri]` versehen und fehlende Querywerte zentral ueber `Request.GetQueryNameValuePairs()` nachziehen.
13. Bei Unity-Fehlern konkrete Implementierung/Registrator suchen. 13. Pickups zuerst ueber schlanke Services loesen.
14. Postman-Collection fuer alte Client-Routen aufbauen. 14. Komplexe Matrix42-Services erst bei Bedarf laden.
15. Paket installieren, Service synchronisieren und Smoke-Tests ausfuehren. 15. Bei Unity-Fehlern konkrete Implementierung/Registrator suchen.
16. Erst nach erfolgreicher Kompatibilitaet fachliche Weiterentwicklungen einbringen. 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 ## Git- und Datei-Hinweise