Power.Dev Optimization Services

<back to all web services

CommonOptimizerMonthlyRequest

The following routes are available for this service:
POST/optimizer/monthly
import 'package:servicestack/servicestack.dart';

enum DataProvider
{
    Undefined,
    SPP,
    ERCOT,
    MISO,
    CAISO,
    PJM,
    ISONE,
    NYISO,
    NW,
    SW,
    SE,
    AESO,
    IESO,
    CENACE,
    NONISO,
    EIA,
    PNM,
    NREL,
    NOAA,
    ENTSOE,
    EPIAS,
    SELF,
}

enum BooleanValue
{
    Undefined,
    Yes,
    No,
    Custom,
}

enum PriceMarketType
{
    Undefined,
    Realtime,
    DayAhead,
    DART,
}

class BatteryProjectTodItem implements IConvertible
{
    int? month;
    int? weekDay;
    int? hour;
    double? price;
    // @ignore()
    String? id;

    BatteryProjectTodItem({this.month,this.weekDay,this.hour,this.price,this.id});
    BatteryProjectTodItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        month = json['month'];
        weekDay = json['weekDay'];
        hour = json['hour'];
        price = JsonConverters.toDouble(json['price']);
        id = json['id'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'month': month,
        'weekDay': weekDay,
        'hour': hour,
        'price': price,
        'id': id
    };

    getTypeName() => "BatteryProjectTodItem";
    TypeContext? context = _ctx;
}

enum RevenueStackingMode
{
    SolveWithoutAncillary,
    SolveWithAncillary,
}

class MonthlyRequestBase implements IConvertible
{
    String? projectId;
    int? nodeAltId;
    DataProvider? iso;
    BooleanValue? useEnergy;
    BooleanValue? useAncillary;
    bool? useCapacityTod;
    PriceMarketType? baseMarket;
    List<BatteryProjectTodItem>? capacityTODs;
    double? useRegup;
    double? useRegdown;
    double? useSpinning;
    double? useNonSpinning;
    double? paraciticLossesOperation;
    double? paraciticLossesResting;
    double? hvacLosses;
    double? acCablingLosses;
    double? transformatorLosses;
    double? otherLosses;
    int? representativeYear;
    int? incrementReferanceYear;
    int? useFutureData;
    double? maxDailyCycle;
    double? minDailyProfitPerMw;
    int? ancillaryFileId;
    int? lmpFileId;
    double? maxChargingPriceCap;
    double? maxDischargingPriceCap;
    double? maxAncillaryPriceCap;
    RevenueStackingMode? revenueStackingMode;
    int? optimizationQuality;
    int? ensureExlusive;
    int? nodeRefId;
    bool? useInternalSolver;

    MonthlyRequestBase({this.projectId,this.nodeAltId,this.iso,this.useEnergy,this.useAncillary,this.useCapacityTod,this.baseMarket,this.capacityTODs,this.useRegup,this.useRegdown,this.useSpinning,this.useNonSpinning,this.paraciticLossesOperation,this.paraciticLossesResting,this.hvacLosses,this.acCablingLosses,this.transformatorLosses,this.otherLosses,this.representativeYear,this.incrementReferanceYear,this.useFutureData,this.maxDailyCycle,this.minDailyProfitPerMw,this.ancillaryFileId,this.lmpFileId,this.maxChargingPriceCap,this.maxDischargingPriceCap,this.maxAncillaryPriceCap,this.revenueStackingMode,this.optimizationQuality,this.ensureExlusive,this.nodeRefId,this.useInternalSolver});
    MonthlyRequestBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        projectId = json['projectId'];
        nodeAltId = json['nodeAltId'];
        iso = JsonConverters.fromJson(json['iso'],'DataProvider',context!);
        useEnergy = JsonConverters.fromJson(json['useEnergy'],'BooleanValue',context!);
        useAncillary = JsonConverters.fromJson(json['useAncillary'],'BooleanValue',context!);
        useCapacityTod = json['useCapacityTod'];
        baseMarket = JsonConverters.fromJson(json['baseMarket'],'PriceMarketType',context!);
        capacityTODs = JsonConverters.fromJson(json['capacityTODs'],'List<BatteryProjectTodItem>',context!);
        useRegup = JsonConverters.toDouble(json['useRegup']);
        useRegdown = JsonConverters.toDouble(json['useRegdown']);
        useSpinning = JsonConverters.toDouble(json['useSpinning']);
        useNonSpinning = JsonConverters.toDouble(json['useNonSpinning']);
        paraciticLossesOperation = JsonConverters.toDouble(json['paraciticLossesOperation']);
        paraciticLossesResting = JsonConverters.toDouble(json['paraciticLossesResting']);
        hvacLosses = JsonConverters.toDouble(json['hvacLosses']);
        acCablingLosses = JsonConverters.toDouble(json['acCablingLosses']);
        transformatorLosses = JsonConverters.toDouble(json['transformatorLosses']);
        otherLosses = JsonConverters.toDouble(json['otherLosses']);
        representativeYear = json['representativeYear'];
        incrementReferanceYear = json['incrementReferanceYear'];
        useFutureData = json['useFutureData'];
        maxDailyCycle = JsonConverters.toDouble(json['maxDailyCycle']);
        minDailyProfitPerMw = JsonConverters.toDouble(json['minDailyProfitPerMw']);
        ancillaryFileId = json['ancillaryFileId'];
        lmpFileId = json['lmpFileId'];
        maxChargingPriceCap = JsonConverters.toDouble(json['maxChargingPriceCap']);
        maxDischargingPriceCap = JsonConverters.toDouble(json['maxDischargingPriceCap']);
        maxAncillaryPriceCap = JsonConverters.toDouble(json['maxAncillaryPriceCap']);
        revenueStackingMode = JsonConverters.fromJson(json['revenueStackingMode'],'RevenueStackingMode',context!);
        optimizationQuality = json['optimizationQuality'];
        ensureExlusive = json['ensureExlusive'];
        nodeRefId = json['nodeRefId'];
        useInternalSolver = json['useInternalSolver'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'projectId': projectId,
        'nodeAltId': nodeAltId,
        'iso': JsonConverters.toJson(iso,'DataProvider',context!),
        'useEnergy': JsonConverters.toJson(useEnergy,'BooleanValue',context!),
        'useAncillary': JsonConverters.toJson(useAncillary,'BooleanValue',context!),
        'useCapacityTod': useCapacityTod,
        'baseMarket': JsonConverters.toJson(baseMarket,'PriceMarketType',context!),
        'capacityTODs': JsonConverters.toJson(capacityTODs,'List<BatteryProjectTodItem>',context!),
        'useRegup': useRegup,
        'useRegdown': useRegdown,
        'useSpinning': useSpinning,
        'useNonSpinning': useNonSpinning,
        'paraciticLossesOperation': paraciticLossesOperation,
        'paraciticLossesResting': paraciticLossesResting,
        'hvacLosses': hvacLosses,
        'acCablingLosses': acCablingLosses,
        'transformatorLosses': transformatorLosses,
        'otherLosses': otherLosses,
        'representativeYear': representativeYear,
        'incrementReferanceYear': incrementReferanceYear,
        'useFutureData': useFutureData,
        'maxDailyCycle': maxDailyCycle,
        'minDailyProfitPerMw': minDailyProfitPerMw,
        'ancillaryFileId': ancillaryFileId,
        'lmpFileId': lmpFileId,
        'maxChargingPriceCap': maxChargingPriceCap,
        'maxDischargingPriceCap': maxDischargingPriceCap,
        'maxAncillaryPriceCap': maxAncillaryPriceCap,
        'revenueStackingMode': JsonConverters.toJson(revenueStackingMode,'RevenueStackingMode',context!),
        'optimizationQuality': optimizationQuality,
        'ensureExlusive': ensureExlusive,
        'nodeRefId': nodeRefId,
        'useInternalSolver': useInternalSolver
    };

    getTypeName() => "MonthlyRequestBase";
    TypeContext? context = _ctx;
}

enum PowerPlantType
{
    Undefined,
    Solar,
    Wind,
    Hybrid,
}

class BatteryScenarioKeyGroup implements IConvertible
{
    int? keyId;
    int? year;
    int? nodeId;
    DataProvider? provider;
    int? zoneId;
    PowerPlantType? plantType;
    int? solarId;
    int? windId;
    bool? isServerless;

    BatteryScenarioKeyGroup({this.keyId,this.year,this.nodeId,this.provider,this.zoneId,this.plantType,this.solarId,this.windId,this.isServerless});
    BatteryScenarioKeyGroup.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        keyId = json['keyId'];
        year = json['year'];
        nodeId = json['nodeId'];
        provider = JsonConverters.fromJson(json['provider'],'DataProvider',context!);
        zoneId = json['zoneId'];
        plantType = JsonConverters.fromJson(json['plantType'],'PowerPlantType',context!);
        solarId = json['solarId'];
        windId = json['windId'];
        isServerless = json['isServerless'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'keyId': keyId,
        'year': year,
        'nodeId': nodeId,
        'provider': JsonConverters.toJson(provider,'DataProvider',context!),
        'zoneId': zoneId,
        'plantType': JsonConverters.toJson(plantType,'PowerPlantType',context!),
        'solarId': solarId,
        'windId': windId,
        'isServerless': isServerless
    };

    getTypeName() => "BatteryScenarioKeyGroup";
    TypeContext? context = _ctx;
}

enum BatteryScenarioType
{
    Undefined,
    Optimization,
    Sum,
    OptiSum,
    FullTod,
    CapacityTod,
}

class BatteryScenarioKeyItem implements IConvertible
{
    String? projectId;
    int? keyId;
    BatteryScenarioType? keyType;
    String? recordKey;
    int? jobStatus;
    int? status;
    DateTime? minDate;
    DateTime? maxDate;
    int? year;
    int? yoyStatus;
    double? usableCapacity;
    double? usableCapacityFactor;
    double? solarUsableCapacity;
    double? solarUsableCapacityFactor;
    PriceMarketType? baseMarket;
    double? baseCapacityRate;
    double? capacityRate;
    double? solarCapacityRate;
    double? windCapacityRate;
    double? chargeEfficinecy;
    double? dischargeEfficinecy;
    int? nodeId;
    DataProvider? provider;
    int? zoneId;
    int? lmpFileId;
    int? productionFileId;
    int? loadFileId;
    int? capacityFileId;
    PowerPlantType? plantType;
    int? solarId;
    int? windId;
    double? ancillaryIncrementFactor;
    double? energyIncrementFactor;
    double? capacityIncrementFactor;

    BatteryScenarioKeyItem({this.projectId,this.keyId,this.keyType,this.recordKey,this.jobStatus,this.status,this.minDate,this.maxDate,this.year,this.yoyStatus,this.usableCapacity,this.usableCapacityFactor,this.solarUsableCapacity,this.solarUsableCapacityFactor,this.baseMarket,this.baseCapacityRate,this.capacityRate,this.solarCapacityRate,this.windCapacityRate,this.chargeEfficinecy,this.dischargeEfficinecy,this.nodeId,this.provider,this.zoneId,this.lmpFileId,this.productionFileId,this.loadFileId,this.capacityFileId,this.plantType,this.solarId,this.windId,this.ancillaryIncrementFactor,this.energyIncrementFactor,this.capacityIncrementFactor});
    BatteryScenarioKeyItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        projectId = json['projectId'];
        keyId = json['keyId'];
        keyType = JsonConverters.fromJson(json['keyType'],'BatteryScenarioType',context!);
        recordKey = json['recordKey'];
        jobStatus = json['jobStatus'];
        status = json['status'];
        minDate = JsonConverters.fromJson(json['minDate'],'DateTime',context!);
        maxDate = JsonConverters.fromJson(json['maxDate'],'DateTime',context!);
        year = json['year'];
        yoyStatus = json['yoyStatus'];
        usableCapacity = JsonConverters.toDouble(json['usableCapacity']);
        usableCapacityFactor = JsonConverters.toDouble(json['usableCapacityFactor']);
        solarUsableCapacity = JsonConverters.toDouble(json['solarUsableCapacity']);
        solarUsableCapacityFactor = JsonConverters.toDouble(json['solarUsableCapacityFactor']);
        baseMarket = JsonConverters.fromJson(json['baseMarket'],'PriceMarketType',context!);
        baseCapacityRate = JsonConverters.toDouble(json['baseCapacityRate']);
        capacityRate = JsonConverters.toDouble(json['capacityRate']);
        solarCapacityRate = JsonConverters.toDouble(json['solarCapacityRate']);
        windCapacityRate = JsonConverters.toDouble(json['windCapacityRate']);
        chargeEfficinecy = JsonConverters.toDouble(json['chargeEfficinecy']);
        dischargeEfficinecy = JsonConverters.toDouble(json['dischargeEfficinecy']);
        nodeId = json['nodeId'];
        provider = JsonConverters.fromJson(json['provider'],'DataProvider',context!);
        zoneId = json['zoneId'];
        lmpFileId = json['lmpFileId'];
        productionFileId = json['productionFileId'];
        loadFileId = json['loadFileId'];
        capacityFileId = json['capacityFileId'];
        plantType = JsonConverters.fromJson(json['plantType'],'PowerPlantType',context!);
        solarId = json['solarId'];
        windId = json['windId'];
        ancillaryIncrementFactor = JsonConverters.toDouble(json['ancillaryIncrementFactor']);
        energyIncrementFactor = JsonConverters.toDouble(json['energyIncrementFactor']);
        capacityIncrementFactor = JsonConverters.toDouble(json['capacityIncrementFactor']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'projectId': projectId,
        'keyId': keyId,
        'keyType': JsonConverters.toJson(keyType,'BatteryScenarioType',context!),
        'recordKey': recordKey,
        'jobStatus': jobStatus,
        'status': status,
        'minDate': JsonConverters.toJson(minDate,'DateTime',context!),
        'maxDate': JsonConverters.toJson(maxDate,'DateTime',context!),
        'year': year,
        'yoyStatus': yoyStatus,
        'usableCapacity': usableCapacity,
        'usableCapacityFactor': usableCapacityFactor,
        'solarUsableCapacity': solarUsableCapacity,
        'solarUsableCapacityFactor': solarUsableCapacityFactor,
        'baseMarket': JsonConverters.toJson(baseMarket,'PriceMarketType',context!),
        'baseCapacityRate': baseCapacityRate,
        'capacityRate': capacityRate,
        'solarCapacityRate': solarCapacityRate,
        'windCapacityRate': windCapacityRate,
        'chargeEfficinecy': chargeEfficinecy,
        'dischargeEfficinecy': dischargeEfficinecy,
        'nodeId': nodeId,
        'provider': JsonConverters.toJson(provider,'DataProvider',context!),
        'zoneId': zoneId,
        'lmpFileId': lmpFileId,
        'productionFileId': productionFileId,
        'loadFileId': loadFileId,
        'capacityFileId': capacityFileId,
        'plantType': JsonConverters.toJson(plantType,'PowerPlantType',context!),
        'solarId': solarId,
        'windId': windId,
        'ancillaryIncrementFactor': ancillaryIncrementFactor,
        'energyIncrementFactor': energyIncrementFactor,
        'capacityIncrementFactor': capacityIncrementFactor
    };

    getTypeName() => "BatteryScenarioKeyItem";
    TypeContext? context = _ctx;
}

enum BatteryProjectGroup
{
    Undefined,
    StandAlone,
    FTM,
    BTM,
}

class CommonOptimizerMonthlyRequest extends MonthlyRequestBase implements IConvertible
{
    int? month;
    BatteryScenarioKeyGroup? group;
    BatteryScenarioKeyItem? key;
    BatteryProjectGroup? projectGroup;

    CommonOptimizerMonthlyRequest({this.month,this.group,this.key,this.projectGroup});
    CommonOptimizerMonthlyRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        month = json['month'];
        group = JsonConverters.fromJson(json['group'],'BatteryScenarioKeyGroup',context!);
        key = JsonConverters.fromJson(json['key'],'BatteryScenarioKeyItem',context!);
        projectGroup = JsonConverters.fromJson(json['projectGroup'],'BatteryProjectGroup',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'month': month,
        'group': JsonConverters.toJson(group,'BatteryScenarioKeyGroup',context!),
        'key': JsonConverters.toJson(key,'BatteryScenarioKeyItem',context!),
        'projectGroup': JsonConverters.toJson(projectGroup,'BatteryProjectGroup',context!)
    });

    getTypeName() => "CommonOptimizerMonthlyRequest";
    TypeContext? context = _ctx;
}

class MonthlyApiStatusResponse implements IConvertible
{
    int? failedCount;

    MonthlyApiStatusResponse({this.failedCount});
    MonthlyApiStatusResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        failedCount = json['failedCount'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'failedCount': failedCount
    };

    getTypeName() => "MonthlyApiStatusResponse";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'dev_optimization.power.dev', types: <String, TypeInfo> {
    'DataProvider': TypeInfo(TypeOf.Enum, enumValues:DataProvider.values),
    'BooleanValue': TypeInfo(TypeOf.Enum, enumValues:BooleanValue.values),
    'PriceMarketType': TypeInfo(TypeOf.Enum, enumValues:PriceMarketType.values),
    'BatteryProjectTodItem': TypeInfo(TypeOf.Class, create:() => BatteryProjectTodItem()),
    'RevenueStackingMode': TypeInfo(TypeOf.Enum, enumValues:RevenueStackingMode.values),
    'MonthlyRequestBase': TypeInfo(TypeOf.Class, create:() => MonthlyRequestBase()),
    'List<BatteryProjectTodItem>': TypeInfo(TypeOf.Class, create:() => <BatteryProjectTodItem>[]),
    'PowerPlantType': TypeInfo(TypeOf.Enum, enumValues:PowerPlantType.values),
    'BatteryScenarioKeyGroup': TypeInfo(TypeOf.Class, create:() => BatteryScenarioKeyGroup()),
    'BatteryScenarioType': TypeInfo(TypeOf.Enum, enumValues:BatteryScenarioType.values),
    'BatteryScenarioKeyItem': TypeInfo(TypeOf.Class, create:() => BatteryScenarioKeyItem()),
    'BatteryProjectGroup': TypeInfo(TypeOf.Enum, enumValues:BatteryProjectGroup.values),
    'CommonOptimizerMonthlyRequest': TypeInfo(TypeOf.Class, create:() => CommonOptimizerMonthlyRequest()),
    'MonthlyApiStatusResponse': TypeInfo(TypeOf.Class, create:() => MonthlyApiStatusResponse()),
});

Dart CommonOptimizerMonthlyRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /optimizer/monthly HTTP/1.1 
Host: dev-optimization.power.dev 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<CommonOptimizerMonthlyRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.ServiceModel">
  <AcCablingLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</AcCablingLosses>
  <AncillaryFileId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</AncillaryFileId>
  <BaseMarket xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</BaseMarket>
  <CapacityTODs xmlns:d2p1="http://schemas.datacontract.org/2004/07/powerDev.Common.Models" i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models" />
  <EnsureExlusive xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</EnsureExlusive>
  <HVACLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</HVACLosses>
  <IncrementReferanceYear xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</IncrementReferanceYear>
  <Iso xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</Iso>
  <LmpFileId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</LmpFileId>
  <MaxAncillaryPriceCap xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxAncillaryPriceCap>
  <MaxChargingPriceCap xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxChargingPriceCap>
  <MaxDailyCycle xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxDailyCycle>
  <MaxDischargingPriceCap xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxDischargingPriceCap>
  <MinDailyProfitPerMw xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MinDailyProfitPerMw>
  <NodeAltId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</NodeAltId>
  <NodeRefId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</NodeRefId>
  <OptimizationQuality xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</OptimizationQuality>
  <OtherLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</OtherLosses>
  <ParaciticLossesOperation xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</ParaciticLossesOperation>
  <ParaciticLossesResting xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</ParaciticLossesResting>
  <ProjectId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">00000000-0000-0000-0000-000000000000</ProjectId>
  <RepresentativeYear xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</RepresentativeYear>
  <RevenueStackingMode xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">SolveWithoutAncillary</RevenueStackingMode>
  <TransformatorLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</TransformatorLosses>
  <UseAncillary xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</UseAncillary>
  <UseCapacityTod xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">false</UseCapacityTod>
  <UseEnergy xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</UseEnergy>
  <UseFutureData xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseFutureData>
  <UseInternalSolver xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">false</UseInternalSolver>
  <UseNonSpinning xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseNonSpinning>
  <UseRegdown xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseRegdown>
  <UseRegup xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseRegup>
  <UseSpinning xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseSpinning>
  <Group xmlns:d2p1="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">
    <d2p1:IsServerless>false</d2p1:IsServerless>
    <d2p1:KeyId>0</d2p1:KeyId>
    <d2p1:NodeId>0</d2p1:NodeId>
    <d2p1:PlantType>Undefined</d2p1:PlantType>
    <d2p1:Provider>Undefined</d2p1:Provider>
    <d2p1:SolarId>0</d2p1:SolarId>
    <d2p1:WindId>0</d2p1:WindId>
    <d2p1:Year>0</d2p1:Year>
    <d2p1:ZoneId>0</d2p1:ZoneId>
  </Group>
  <Key xmlns:d2p1="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">
    <d2p1:AncillaryIncrementFactor>0</d2p1:AncillaryIncrementFactor>
    <d2p1:BaseCapacityRate>0</d2p1:BaseCapacityRate>
    <d2p1:BaseMarket>Undefined</d2p1:BaseMarket>
    <d2p1:CapacityFileId>0</d2p1:CapacityFileId>
    <d2p1:CapacityIncrementFactor>0</d2p1:CapacityIncrementFactor>
    <d2p1:CapacityRate>0</d2p1:CapacityRate>
    <d2p1:ChargeEfficinecy>0</d2p1:ChargeEfficinecy>
    <d2p1:DischargeEfficinecy>0</d2p1:DischargeEfficinecy>
    <d2p1:EnergyIncrementFactor>0</d2p1:EnergyIncrementFactor>
    <d2p1:JobStatus>0</d2p1:JobStatus>
    <d2p1:KeyId>0</d2p1:KeyId>
    <d2p1:KeyType>Undefined</d2p1:KeyType>
    <d2p1:LmpFileId>0</d2p1:LmpFileId>
    <d2p1:LoadFileId>0</d2p1:LoadFileId>
    <d2p1:MaxDate>0001-01-01T00:00:00</d2p1:MaxDate>
    <d2p1:MinDate>0001-01-01T00:00:00</d2p1:MinDate>
    <d2p1:NodeId>0</d2p1:NodeId>
    <d2p1:PlantType>Undefined</d2p1:PlantType>
    <d2p1:ProductionFileId>0</d2p1:ProductionFileId>
    <d2p1:ProjectId>00000000-0000-0000-0000-000000000000</d2p1:ProjectId>
    <d2p1:Provider>Undefined</d2p1:Provider>
    <d2p1:RecordKey>String</d2p1:RecordKey>
    <d2p1:SolarCapacityRate>0</d2p1:SolarCapacityRate>
    <d2p1:SolarId>0</d2p1:SolarId>
    <d2p1:SolarUsableCapacity>0</d2p1:SolarUsableCapacity>
    <d2p1:SolarUsableCapacityFactor>0</d2p1:SolarUsableCapacityFactor>
    <d2p1:Status>0</d2p1:Status>
    <d2p1:UsableCapacity>0</d2p1:UsableCapacity>
    <d2p1:UsableCapacityFactor>0</d2p1:UsableCapacityFactor>
    <d2p1:WindCapacityRate>0</d2p1:WindCapacityRate>
    <d2p1:WindId>0</d2p1:WindId>
    <d2p1:Year>0</d2p1:Year>
    <d2p1:YoyStatus>0</d2p1:YoyStatus>
    <d2p1:ZoneId>0</d2p1:ZoneId>
  </Key>
  <Month>0</Month>
  <ProjectGroup>Undefined</ProjectGroup>
</CommonOptimizerMonthlyRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<MonthlyApiStatusResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">
  <FailedCount>0</FailedCount>
</MonthlyApiStatusResponse>