In web 8 there is a new concept introduced as “Purpose” to manage all the publishing target settings directly into the Topology Manager. So In web 8, instead of defining the Target Type / Publishing Target you can also define the Purpose which I think is more user-friendly and meaningful for a developer.
Here is the example for your first requirement -
var filter = new PublishedItemsFilterData();
filter.Purpose = "Staging";
var listXml = client.GetSystemWideListXml(filter);
But if you want to use the target type then I think below sample can help you to build your code -
string publicationUri = "tcm:0-20-1";
TargetTypesFilterData targetTypesFilter = new TargetTypesFilterData();
IEnumerable<TargetTypeData> targetTypes = client.GetSystemWideList(targetTypesFilter).OfType<TargetTypeData>();
ResolveInstructionData resolveInstruction = new ResolveInstructionData();
IEnumerable<PublishContextData> publishContextDatas = client.ResolveItems(
new string[]
{
publicationUri
},
resolveInstruction,
targetTypes.Select(tt => tt.Id).ToArray(),
new ReadOptions());
IEnumerable< LinkToTargetTypeData> finaltargetData = publishContextDatas.Select(pc => pc.TargetType);
foreach (LinkToTargetTypeData item in finaltargetData)
{
if (item.Title == "NameOfTheTargetType")
{
var filter = new PublishedItemsFilterData();
filter.TargetType = item;
//filter.Purpose = "Stging";
var listXml = client.GetSystemWideList(filter);
}
}
I think it will help you to start.