POST | /optimizer/monthly |
---|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using powerDev.Optimization.ServiceModel;
using powerDev.Optimization.Models;
using powerDev.Common.Types;
using powerDev.Common.Models;
using powerDev.Common.Types.Enums;
namespace powerDev.Common.Models
{
public partial class BatteryProjectTodItem
{
public virtual int Month { get; set; }
public virtual int WeekDay { get; set; }
public virtual int Hour { get; set; }
public virtual decimal Price { get; set; }
[Ignore]
public virtual string Id { get; set; }
}
public partial class BatteryScenarioKeyGroup
{
public virtual int KeyId { get; set; }
public virtual int Year { get; set; }
public virtual int NodeId { get; set; }
public virtual DataProvider Provider { get; set; }
public virtual int ZoneId { get; set; }
public virtual PowerPlantType PlantType { get; set; }
public virtual int SolarId { get; set; }
public virtual int WindId { get; set; }
public virtual bool IsServerless { get; set; }
}
public partial class BatteryScenarioKeyItem
{
public virtual Guid ProjectId { get; set; }
public virtual int KeyId { get; set; }
public virtual BatteryScenarioType KeyType { get; set; }
public virtual string RecordKey { get; set; }
public virtual int JobStatus { get; set; }
public virtual int Status { get; set; }
public virtual DateTime MinDate { get; set; }
public virtual DateTime MaxDate { get; set; }
public virtual int Year { get; set; }
public virtual int YoyStatus { get; set; }
public virtual decimal UsableCapacity { get; set; }
public virtual decimal UsableCapacityFactor { get; set; }
public virtual decimal SolarUsableCapacity { get; set; }
public virtual decimal SolarUsableCapacityFactor { get; set; }
public virtual PriceMarketType BaseMarket { get; set; }
public virtual decimal BaseCapacityRate { get; set; }
public virtual decimal CapacityRate { get; set; }
public virtual decimal SolarCapacityRate { get; set; }
public virtual decimal WindCapacityRate { get; set; }
public virtual decimal ChargeEfficinecy { get; set; }
public virtual decimal DischargeEfficinecy { get; set; }
public virtual int NodeId { get; set; }
public virtual DataProvider Provider { get; set; }
public virtual int ZoneId { get; set; }
public virtual int LmpFileId { get; set; }
public virtual int ProductionFileId { get; set; }
public virtual int LoadFileId { get; set; }
public virtual int CapacityFileId { get; set; }
public virtual PowerPlantType PlantType { get; set; }
public virtual int SolarId { get; set; }
public virtual int WindId { get; set; }
public virtual decimal AncillaryIncrementFactor { get; set; }
public virtual decimal EnergyIncrementFactor { get; set; }
public virtual decimal CapacityIncrementFactor { get; set; }
}
}
namespace powerDev.Common.Types
{
public enum BatteryProjectGroup
{
Undefined,
StandAlone,
FTM,
BTM,
}
public enum BatteryScenarioType
{
Undefined,
Optimization,
Sum,
OptiSum,
FullTod,
CapacityTod,
}
public enum BooleanValue
{
Undefined,
Yes,
No,
Custom,
}
public enum DataProvider
{
Undefined = 0,
SPP = 1,
ERCOT = 2,
MISO = 3,
CAISO = 4,
PJM = 5,
ISONE = 6,
NYISO = 7,
NW = 8,
SW = 9,
SE = 10,
AESO = 11,
IESO = 12,
CENACE = 20,
NONISO = 99,
EIA = 100,
PNM = 150,
NREL = 200,
NOAA = 210,
ENTSOE = 1000,
EPIAS = 1010,
SELF = 10000,
}
public enum PriceMarketType
{
Undefined = 0,
Realtime = 1,
DayAhead = 10,
DART = 101,
}
}
namespace powerDev.Common.Types.Enums
{
public enum PowerPlantType
{
Undefined,
Solar,
Wind,
Hybrid,
}
public enum RevenueStackingMode
{
SolveWithoutAncillary,
SolveWithAncillary,
}
}
namespace powerDev.Optimization.Models
{
public partial class MonthlyApiStatusResponse
{
public virtual int FailedCount { get; set; }
}
public partial class MonthlyRequestBase
{
public virtual Guid ProjectId { get; set; }
public virtual int NodeAltId { get; set; }
public virtual DataProvider Iso { get; set; }
public virtual BooleanValue UseEnergy { get; set; }
public virtual BooleanValue UseAncillary { get; set; }
public virtual bool UseCapacityTod { get; set; }
public virtual PriceMarketType BaseMarket { get; set; }
public virtual IEnumerable<BatteryProjectTodItem> CapacityTODs { get; set; }
public virtual decimal UseRegup { get; set; }
public virtual decimal UseRegdown { get; set; }
public virtual decimal UseSpinning { get; set; }
public virtual decimal UseNonSpinning { get; set; }
public virtual decimal ParaciticLossesOperation { get; set; }
public virtual decimal ParaciticLossesResting { get; set; }
public virtual decimal HVACLosses { get; set; }
public virtual decimal AcCablingLosses { get; set; }
public virtual decimal TransformatorLosses { get; set; }
public virtual decimal OtherLosses { get; set; }
public virtual int RepresentativeYear { get; set; }
public virtual int IncrementReferanceYear { get; set; }
public virtual int UseFutureData { get; set; }
public virtual decimal MaxDailyCycle { get; set; }
public virtual decimal MinDailyProfitPerMw { get; set; }
public virtual int AncillaryFileId { get; set; }
public virtual int LmpFileId { get; set; }
public virtual decimal MaxChargingPriceCap { get; set; }
public virtual decimal MaxDischargingPriceCap { get; set; }
public virtual decimal MaxAncillaryPriceCap { get; set; }
public virtual RevenueStackingMode RevenueStackingMode { get; set; }
public virtual int OptimizationQuality { get; set; }
public virtual int EnsureExlusive { get; set; }
public virtual int NodeRefId { get; set; }
public virtual bool UseInternalSolver { get; set; }
}
}
namespace powerDev.Optimization.ServiceModel
{
public partial class CommonOptimizerMonthlyRequest
: MonthlyRequestBase
{
public virtual int Month { get; set; }
public virtual BatteryScenarioKeyGroup Group { get; set; }
public virtual BatteryScenarioKeyItem Key { get; set; }
public virtual BatteryProjectGroup ProjectGroup { get; set; }
}
}
C# CommonOptimizerMonthlyRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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: text/jsv
Content-Type: text/jsv
Content-Length: length
{
month: 0,
group:
{
keyId: 0,
year: 0,
nodeId: 0,
provider: Undefined,
zoneId: 0,
plantType: Undefined,
solarId: 0,
windId: 0,
isServerless: False
},
key:
{
projectId: 00000000000000000000000000000000,
keyId: 0,
keyType: Undefined,
recordKey: String,
jobStatus: 0,
status: 0,
year: 0,
yoyStatus: 0,
usableCapacity: 0,
usableCapacityFactor: 0,
solarUsableCapacity: 0,
solarUsableCapacityFactor: 0,
baseMarket: Undefined,
baseCapacityRate: 0,
capacityRate: 0,
solarCapacityRate: 0,
windCapacityRate: 0,
chargeEfficinecy: 0,
dischargeEfficinecy: 0,
nodeId: 0,
provider: Undefined,
zoneId: 0,
lmpFileId: 0,
productionFileId: 0,
loadFileId: 0,
capacityFileId: 0,
plantType: Undefined,
solarId: 0,
windId: 0,
ancillaryIncrementFactor: 0,
energyIncrementFactor: 0,
capacityIncrementFactor: 0
},
projectGroup: Undefined,
projectId: 00000000000000000000000000000000,
nodeAltId: 0,
iso: Undefined,
useEnergy: Undefined,
useAncillary: Undefined,
useCapacityTod: False,
baseMarket: Undefined,
useRegup: 0,
useRegdown: 0,
useSpinning: 0,
useNonSpinning: 0,
paraciticLossesOperation: 0,
paraciticLossesResting: 0,
hvacLosses: 0,
acCablingLosses: 0,
transformatorLosses: 0,
otherLosses: 0,
representativeYear: 0,
incrementReferanceYear: 0,
useFutureData: 0,
maxDailyCycle: 0,
minDailyProfitPerMw: 0,
ancillaryFileId: 0,
lmpFileId: 0,
maxChargingPriceCap: 0,
maxDischargingPriceCap: 0,
maxAncillaryPriceCap: 0,
revenueStackingMode: SolveWithoutAncillary,
optimizationQuality: 0,
ensureExlusive: 0,
nodeRefId: 0,
useInternalSolver: False
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { failedCount: 0 }