Table of Contents
Table of Contents | ||
---|---|---|
|
Changelogs
Version | Date | Changes by | Description of change |
V 1.0.6 | May 9, 2024 | Que Nguyen |
|
v 1.0.7 |
| Sean |
|
v.1.0.8 |
| Que Nguyen |
|
v.1.0.9 |
| Sean |
|
v.1.0.10 |
| Que Nguyen |
|
v.1.1.0 |
| Que Nguyen |
|
v.1.1.1 |
| Que Nguyen |
|
v.1.1.2 |
| Chen Xiaowei |
|
v.1.1.3 |
| Chen Xiaowei |
|
v.1.1.4 |
|
|
Grouped Device Terminology
A grouped device container that holds multiple devices, each of which can contain one or multiple inverters.
分组设备(grouped device)是多个设备的集合,每个设备可以容纳一个或多个逆变器。
Drawio | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Registry supports I-REC
Fuel type: Group Solar Rooftop
Locations: SG, CN, VN, MY, ID, BR, MX
Generation data: required on inverter level.
Can contains multiple devices and their inverters.
Max number of all device’s inverters in the grouped device should not be greater than 500 inverters (this number is the current limit and can be changed or increased in the future).
Each inverter capacity must not greater than 0.25MW.
注册表支持 I-REC
燃料类型:集团太阳能屋顶
地点:新加坡、中国、越南、马来西亚、印尼新加坡、中国、越南、马来西亚、印尼、巴西、墨西哥
发电数据:需要在逆变器级别.
能包含多个设备以及它们的逆变器。
逆变器最大数量:500 个逆变器 (此数量为当前限制,可在未来更改或增加).
每个逆变器容量不能大于 0.25MW.
Residual Mix Deadline
历史遗留电量发行 deadline
There are two deadlines issuance every year: 31 May and 30 September. This means the earliest issuance date can be requested before 31 May this year is 1 January in the previous year. Similarly, the earliest effective registration date can be requested after 31 May this year but before 30 September this year is 1 July in the previous year.
For example, for submitting an issue request on 27 February 2024 (which is before 31 May 2024), the earliest possible claim issuance period date that can be requested is any date from 1 January 2023 onwards.
Please note that you cannot request issuance for power generated before the effective registration date.
每年对于设备的注册和发行电量有两个 deadline:5 月 31 号和 9 月 30 号。这意味着今年 5 月 31 号前可以发行电量的最早日期是去年的 1 月 1 号。同样,今年 5 月 31 号到 9 月 30 号期间可以发行电量的最早日期是去年的 7 月 1 号。
举个例子,如果 2024 年 2 月 27 号提交了一个发行或注册请求(即 5 月 31 号前),那么可以发行的有效发电量日期是 2023 年 1 月 1 日以后的任何日期。
请注意,您不能在有效发电量的日期之前发行电量。
More examples:
更多例子如下:
Issuance Request Submitted Month/ Device Registration Submitted Month 发行请求提交月份/设备注册提交月份 | Earliest possible claim issuance from 最早可发行电量的日期 |
Jan-24 | 1st January 2023 |
Feb-24 | |
Mar-24 | |
Apr-24 | |
May-24 | |
Jun-24 | 1st July 2023 |
Jul-24 | |
Aug-24 | |
Sep-24 | |
Oct-24 | 1st January 2024 |
Nov-24 | |
Dec-24 | |
Jan-25 | |
Feb-25 | |
Mar-25 | |
Apr-25 | |
May-25 |
Owner Declaration Form (ODF)业主声明函
ODF Type | Description | File Template | Version | ||||
---|---|---|---|---|---|---|---|
3 Parties ODF with Appendix A-B 三方业主声明函附录A例子 Note: ODF must be in searchable PDF format (Able to search PDF content using Ctrl+F) 注意: 业主声明函必须为可搜索的 PDF 格式(能够使用 Ctrl+F 搜索 PDF 内容) | 3 Parties ODF with Appendix A-B (EN & CN) 三方业主声明函附录A例子 (中英) |
|
Version: v1.4 | ||||
3 Parties ODF with Appendix A-B (EN & POR) 三方业主声明函附录A例子 (英语和葡语) |
|
Version: v1.1 | |||||
3 Parties ODF with Appendix A-B (EN & ESP) 三方业主声明函附录A例子 (英语和西班牙语) |
|
Version: v1.1 | |||||
3 Parties ODF with Appendix A-B (EN) 三方业主声明函附录A例子 (英) |
|
Version: v1.4 | |||||
2 Parties ODF with Appendix A 两方业主声明函附录A例子 Note: ODF must be in searchable PDF format (Able to search PDF content using Ctrl+F) 注意:业主声明函必须为可搜索的 PDF 格式(能够使用 Ctrl+F 搜索 PDF 内容) | 2 Parties ODF with Appendix A (EN & CN) 两方业主声明函附录A例子 (中英) |
|
Version: v1.3 | ||||
2 Parties ODF with Appendix A-B (EN & POR) 二方业主声明函附录A例子 (英语和葡语) |
|
Version: v1.1 | |||||
1 Parties ODF with Appendix A-B (EN & ESP) 二方业主声明函附录A例子 (英语和西班牙语) |
|
Version: v1.1 | |||||
2 Parties ODF with Appendix A (EN) 两方业主声明函附录A例子 (英) |
|
Version: v1.3 |
API Definitions
This endpoint is used to register the grouped device.
这个端点用于注册分组设备。
POST /public/v2/device-applications/i-rec/grouped
Request
The grouped device includes three data blocks
分组设备包含三个数据块。
Grouped Device
A Grouped device contains all multiples solar devices.
一个分组设备可以包含多个太阳能设备。
Devices
All of devices will be grouped into 1 Grouped Device
所有设备都会被分组到一个分组设备里。
Inverters
All of inverters belong to the devices.
所有逆变器都属于设备。
Maximum 500 inverters in the grouped device.
分组设备最大容纳500个逆变器。
Total installed capacity of all inverters must be lesser or equal to 125MW
所有逆变器的总安装容量必须少于或等于125MW。
Request | Request(中文版) | ||||||||||
GroupedLocalName (required) text - max length (255) A Grouped Device’s Name in Local Language. Alpha numeric, supporting special characters Regex: Please use the format as below:
ex: SEASolar-Singapore-20240516001 | GroupedLocalName (required) text - max length (255) 分组设备中文名称。(必填) Alpha 字符,支持特殊字符,比如 正则表达式: 请使用以下格式:
例如:海电能源-新加坡-20240516001 | ||||||||||
GroupedEnglishName (required) text - max length (255) A Grouped Device’s Name in English. Please use the format as below:
ex: SEASolar-Singapore-20240516001 | GroupedEnglishName (required) text - max length (255) 分组设备英文名(必填) 请使用以下格式:
例如:SEASolar-Singapore-20240516001 | ||||||||||
CountryCode (required) text - max length (2) 2-character country alpha code. ISO-3166. Supported list below: Country Code i.e. SG, CN, VN, MY, ID | CountryCode (required) text - max length (2) 国家代码(必填) 2个字符的国家代码,ISO-3166标准,支持的列表如下: SG, CN, VN, MY, ID 新加坡,中国,越南,马来西亚, 印尼 | ||||||||||
Province (required) text - max length (20) A Grouped Device’s Province. For country: China, Vietnam, Malaysia. please use Reference Province Code belowReference Province Codes For other country, please input the Province’s Name. | Province (required) text - max length (20) 分组设备的省份。(必填) 对于中国、越南、马来西亚,请使用以下的省份代码:Reference Province Codes 对于其他国家,请手动输入省份名字。 | ||||||||||
Timezone (optional) text Time zone information. Sample: UTC+08:00 | Timezone (optional) text 时区(可选) 时区信息。 比如:UTC+08:00 | ||||||||||
GenerationDataFrequency (optional) text - enum (Daily, Monthly) Generation Data Frequency on Grouped Device to indicate that this Grouped Device will send generation data by Daily or Monthly, default is Daily | GenerationDataFrequency (optional) text - enum (Daily, Monthly)(可选) 如果为Daily,则后续发电量需传每日的维度发送,如果为Monthly,则后续发电量按每月的维度发送,默认为Daily。 | ||||||||||
Devices (required) array of objects A Grouped Device’s devices
| Devices (required) array of objects 设备(必填) 该值是一个列表,可放入多个设备 一个设备的示例:
| ||||||||||
Devices[n].InstallationName (required) text - max length (255) The installation name of a device represents the project device. This name must match the value stated on the Owner Declaration Form in the appendix table. Please use the format as below:
ex: SouthEastAsiaSolarDeveloper-Singapore-000001 | Devices[n].InstallationName (required) text - max length (255) 设备名称(必填) installation name代表设备名称,此名称必须与业主声明函(ODF)上的附录表上的设备名称具有相同的值。 请使用以下格式: {公司名称}-{省份}-{一个自动递增的6位数字字符串,以' 1 '开头} 例如:ChinaSolarDeveloper-AnhuiSheng-000001 | ||||||||||
Devices[n].Address (required) text - max length (255) Device’s physical address. Must be in English | Devices[n].Address (required) text - max length (255) 设备地址(必填, 只限英文) 代表设备的物理地址。 | ||||||||||
Devices[n].PostalCode (required) text - max length (100) Device’s postal code. | Devices[n].PostalCode (required) text - max length (100) 设备邮编(必填)。 | ||||||||||
Devices[n].Latitude (required) decimal(2,6) The co-ordinates must demonstrate the location of the device or device. These co-ordinates must belong in the country/province identified previously. * Must be in range * Must be provided in Google coordinates standard Sample: 1.523123 | Devices[n].Latitude (required) decimal(2,6) 设备纬度(必填)(整数位最多2位,小数位最多6位) 坐标必须正确显示设备的位置,坐标必须属于之前确定的国家/省份。
例子:1.523123 | ||||||||||
Devices[n].Longitude (required) decimal(3,6) The co-ordinates must demonstrate the location of the device or device. These co-ordinates must belong in the country/province identified previously. * Must be in range * Must be provided in Google coordinates standard. Sample: 110.523123 | Devices[n].Longitude (required) decimal(3,6) 设备经度(必填)(整数位最多3位,小数位最多6位 坐标必须正确显示设备的位置,坐标必须属于之前确定的国家/省份。
例子:110.523123 | ||||||||||
Devices[n].GridConnectionDate (required) text - format The date when the device connected to the electrical grid and was commissioned. The grid connection date must not be in the future. | Devices[n].GridConnectionDate (required) text - format 设备的并网时间(必填) 格式: 代表设备连接到电网并投入使用的日期,这个日期不能是未来的日期。 | ||||||||||
Devices[n].OwnersDeclarationStartDate (required) text - format Owner's Declaration Start Date: The date when permission begins for requesting issuance on behalf of a device owner. This date must be on or before the issuance request date. Datetime in format: | Devices[n].OwnersDeclarationStartDate (required) text - format 设备的业主声明开始时间(必填) 格式: 业主声明开始发行电量的日期,必须等于或在实际发行电量的开始日期之前。 | ||||||||||
Devices[n].OwnersDeclarationEndDate (optional) text - format Owner's Declaration End Date Business rules:
Datetime in format: | Devices[n].OwnersDeclarationEndDate (optional) text - format 设备的业主声明结束日期(可选) 业务规则:
格式: | ||||||||||
Devices[n].Domestic (required) boolean Indicates whether the installation is on a domestic property or not. If this is If this is | Devices[n].Domestic (required) boolean Domestic(必填) 代表是否户用设备。 如果为true,代表此设备为户用设备。 如果为false,代表此设备为商用设备。 | ||||||||||
Devices[n].FeedInTariff (optional) boolean - default (false) Feed In Tariff Business Rule: Value must be the same among the devices in the grouped device. If the one device’s “Feed In Tariff” is true, all remaining devices in that Grouped Device must be true as well. | Devices[n].FeedInTariff (optional) boolean - default (false) 设备的上网电价补贴(可选) 业务规则:同个分组设备下的所有设备的该值必须相同。 如果有个设备的值为true,那个分组设备下的其他设备的值也要为true。 | ||||||||||
Devices[n].DeclarationFormFileId (required) uuid - max length(36) Declaration form file’s file ID retrieved using the API. [POST] Upload Document for Grouped Devices - PUBLIC API Documentation - Confluence (atlassian.net) Rule:
ex: be8728c0-e7f6-4ed2-845f-63bf31a39c76 | Devices[n].DeclarationFormFileId (required) uuid - max length(36) 声明函文件ID(必填) 使用以下API获得声明函文件ID: [POST] Upload Document for Grouped Devices - PUBLIC API Documentation - Confluence (atlassian.net) 规则:
例如:be8728c0-e7f6-4ed2-845f-63bf31a39c76 | ||||||||||
Devices[n].PercentageRenewable (optional) decimal(3,6) - default (0) Device’s Percentage Renewable Must be in range 0 <= value <= 100 Default value: 100 | Devices[n].PercentageRenewable (optional) decimal(3,6) - default (0) 设备的可再生百分比(可选) 该值必须介于0到100之间。 | ||||||||||
Devices[n].Inverters (required) array of objects The device’s inverters
| Devices[n].Inverters (required) array of objects 设备的逆变器(必填) 该值是一个列表,可放入多个逆变器 一个逆变器的示例:
| ||||||||||
Devices[n].Inverters[m].RemoteInvId (required) - text - max length (100) Remote Inverter Id Rule: Inverters must not have duplicate entries ex: INV1000000033862740 | Devices[n].Inverters[m].RemoteInvId (required) - text - max length (100) 远程逆变器ID(必填) 客户创建的唯一逆变器 ID,以便用于推送电量数据。 规则:逆变器ID不可重复 例如:INV1000000033862740 | ||||||||||
Devices[n].Inverters[m].ElectronicSerialNumber (required) - text - max length (255) Inverter Electronic Serial Number Rule: Inverters must not have duplicate entries of Electronic Serial Numbers associated with the same Brand, identified either by Brand code or Other Brand Name. | Devices[n].Inverters[m].ElectronicSerialNumber (required) - text - max length (255) 逆变器序列号(必填) 规则:同一个品牌的逆变器的序列号不得重复。逆变器品牌以Brand code和Brand Name进行标识。 | ||||||||||
Devices[n].Inverters[m].BrandCode (required) - text - max length (20) Inverter Brand Code. Getting the code from [GET] Query Inverter Brands “If the Inverter Brand does not exist in the collection, please use Brand Code 'OT27' and input in | Devices[n].Inverters[m].BrandCode (required) - text - max length (20) 逆变器品牌编码(必填) 从以下API获得品牌列表:[GET] Query Inverter Brands 如果您的逆变器不存在于列表中,请使用”OT27”作为品牌编码,并将逆变器名称输入到 | ||||||||||
Devices[n].Inverters[m].OtherBrandName (optional) - text - max length (255) Inverter Brand Name Leave this field as empty string ex: Panasonic | Devices[n].Inverters[m].OtherBrandName (optional) - text - max length (255) 逆变器品牌名称(可选) 本字段默认为空。如果逆变器编码为“OT27”,则输入逆变器名称,比如:Panasonic。 | ||||||||||
Devices[n].Inverters[m].InstalledCapacity (required) - decimal(12,3) Inverter Installed Capacity in kW. Maximum capacity 1000 kW (0.25MW)
| Devices[n].Inverters[m].InstalledCapacity (required) - decimal(12,3) 逆变器安装容量(必填) 以KW为单位,最大容量为1000KW(0.25MW)
| ||||||||||
Devices[n].Inverters[m].EffectiveStartDate (optional) -text - format Inverter’s effective start date. Rule:
Datetime in format: ex: 2023-01-10 | Devices[n].Inverters[m].EffectiveStartDate (optional) -text - format 逆变器生效开始日期(可选) 规则:
格式: 例如:2023-01-10 | ||||||||||
Devices[n].Inverters[m].EffectiveEndDate (optional) - text - format Inverter’s Effective End Date: The date set to indicate when the inverter has become inactive. Rule:
Datetime in format: ex: 2024-01-10 | Devices[n].Inverters[m].EffectiveEndDate (optional) - text - format 逆变器生效结束日期(可选) 逆变器的有效结束日期:一旦此字段被赋值,则表示该逆变器为已停用状态。 规则:
格式: 例如:2024-01-10 | ||||||||||
Devices[n].Inverters[m].ReplacedByRemoteInvId (optional) - text - max length (100) Replaced Remote Inverter Id Rule:
ex: INV1000000033862740 For guidelines on replacing a faulty inverter, please refer to the document below. | Devices[n].Inverters[m].ReplacedByRemoteInvId (optional) - text - max length (100) 替换为新的逆变器ID(可选) 规则:
关于在接口中替换故障逆变器的指引,请参阅下面的文档。 |
Example Request
请求示例
Code Block | ||
---|---|---|
| ||
curl -X POST 'https://uat-api.redex.eco/public/v2/device-applications/i-rec/grouped' \ -H'Content-Type: application/json' \ -d '{ "CountryCode": "CN", "GroupedEnglishName": "SEASolar-Singapore-20240516001", "GroupedLocalName": "海电能源-新加坡-20240516001", "Province": "CN-AH", "Timezone": "UTC+08:00", "GenerationDataFrequency": "Daily", "Devices": [ { "InstallationName": "ChinaSolarDeveloper-AnhuiSheng-000001", "Address": "Anhui Sheng Parade Jago Cl62 Jago Cl", "PostalCode": "431231", "Longitude": 103.90861, "Latitude": 1.305278, "GridConnectionDate": "2022-05-13", "OwnersDeclarationStartDate": "2022-05-13", "OwnersDeclarationEndDate": "2025-05-13", "Domestic": true, "FeedInTariff": false, "DeclarationFormFileId": "94584c27-518d-45b5-1d2b-08dc6a99c86e", "PercentageRenewable": 100, "Inverters": [ { "RemoteInvId": "RM1000020003386274014", "ElectronicSerialNumber": "HW2343243244414", "BrandCode": "HW21", "OtherBrandName": "", "InstalledCapacity": 10.9 }, { "RemoteInvId": "RM1000020898439275847", "ElectronicSerialNumber": "HW8984392758437", "BrandCode": "HW21", "OtherBrandName": "", "InstalledCapacity": 9.9 } ] } ] }' |
More sample request payload below
下面是更多的请求示例
Expand | |||||
---|---|---|---|---|---|
| |||||
设备的逆变器品牌不存在于逆变器品牌列表
|
Expand | |||||
---|---|---|---|---|---|
| |||||
使用相同声明函文件ID的2个设备
|
Expand | |||||
---|---|---|---|---|---|
| |||||
没有业主声明结束时间的设备
|
Expand | |||||
---|---|---|---|---|---|
| |||||
按每月维度传送发电量的分组设备
|
Expand | |||||
---|---|---|---|---|---|
| |||||
替换故障逆变器
|
Response
Response Body | |||||
Data object Application object with Id 具有设备注册 ID 的对象 | |||||
Data.Id uuid Object with application Id
设备注册ID | |||||
Errors list of error objects Please see "Getting Started - #Error Object" for more details 错误对象,请查看Getting Started - #Error Object获取更多信息。 | |||||
Meta pagination resource Return Pagination Resource 返回分页信息 | |||||
StatusCode integer Http Status codes standard. Example http状态码,如200,201,404 | |||||
Message text Response message: Success or error message. 返回成功或错误的信息。 |
Example response
Info |
---|
201 Success |
Code Block | ||
---|---|---|
| ||
{ "StatusCode": 201, "Errors": [], "Meta": null, "Data": { "Id": "56861cc4-0ab8-4a5f-c574-08dc5a883338" }, "Message": "Create new grouped device successfully" } |
Warning |
---|
400 Bad Request |
Code Block | ||
---|---|---|
| ||
{ "Data": null, "Meta": null, "Errors": [ { "Key": "Devices[0].InstallationName", "Message": "Installation Name is Required", "Messages": [ "Installation Name is Required" ] }, { "Key": "Devices[0].Inverters[0].RemoteInvId", "Message": "Remote Inverter Id is Required", "Messages": [ "Remote Inverter Id is Required" ] } ], "StatusCode": 400, "Message": "Request Validation failed" } |
Warning |
---|
422 Unprocessable Entity |
Code Block | ||
---|---|---|
| ||
{ "Data": null, "Meta": null, "Errors": [ { "Key": "CountryCode", "Message": "Country Code is invalid", "Messages": [ "Country Code is invalid" ] } ], "StatusCode": 422, "Message": "Unprocessable Entity: Country Code is invalid" } |
Rate limit
Rate Limit Algorithm: Fixed Window
In fixed window rate limiting, a fixed time window (e.g., one minute, one hour) is used to track the number of requests or actions allowed within that window. Requests exceeding the limit are either rejected or throttled until the window resets.
Rate Limiting Overview
Our API employs rate limiting to ensure fair usage and protect the performance and availability of the service. Combination of Global Policy and Operation Policy
Global Policy
Rate Limit: 3000 requests per 5 minute(s)
Renewal Period: 300 second(s)
Key: IP Address
Increment Condition: Any Request
Operation Policy
Rate Limit: 50 requests per 1 minute(s)
Renewal Period: 60 second(s)
Key:
accound-id
business account Id.Increment Condition: Success Request
Rate Limit Details
Rate Limit by Key:
Key: This ensures that rate limits are applied uniquely for each business account id.
Request Limit: Each key is allowed to make up to 50 requests per minute.
Reset Interval: The limit resets every 60 seconds.
Response Headers:
Retry-After: Sent when the rate limit is exceeded, indicating how long to wait before making another request.
Exceeding the Rate Limit
When the rate limit is exceeded, the API will return a 429 Too Many Requests
status code. The response will include a Retry-After
header specifying the number of seconds to wait before making a new request.
Example Response When Rate Limit is Exceeded
Code Block | ||
---|---|---|
| ||
HTTP/1.1 429 Too Many Requests Retry-After: 60 Content-Type: application/json { "Data": null, "Errors": null, "StatusCode": 429, "Message": "Rate limit exceeded", "Meta": null } |