Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This endpoint submits monthly generation data for a grouped device.

此接口用于提交分组设备每月的发电数据。

Table of Contents

Table of Contents
stylenone

Changelogs

Version

Date

Changes by

Description of change

V1.0.1

Que Nguyen

  • Add Added Table of Contents.

  • Add Added Changelogs.

V1.0.2

Que Nguyen

  • Added Resources

  • Modified the API document format

  • Added Rate Limit

The Monthly Generation Data resource

RemoteInvId (required) - text

Remote Inverter Id

Data (required) - object (Yearly Generation Data Resource)

Generation data by Year

Code Block
languagejson
{
  "RemoteInvId": "RM10000203212003543386274014-INV02",
  "Data": {
    "Year": 2023,
    "PeriodProductionPerMonthInKWh": {
      "Jan": 321.111,
      "Feb": 211.222,
      "Mar": 211.333,
      "Apr": 221.444,
      "May": 311.555,
      "Jun": 211.666,
      "Jul": 189.777,
      "Aug": 221.888,
      "Sep": 231.999,
      "Oct": 311.109,
      "Nov": 321.111,
      "Dec": 171.121
    }
  }
}

The Yearly Generation Data Resource

Year (required) - number

The time to capture data in the format 'YYYY'

PeriodProductionPerMonthInKWh (required) - object (Monthly Period Production in kWh)

Generation by Month

Code Block
languagejson
{
  "Year": 2023,
  "PeriodProductionPerMonthInKWh": {
    "Jan": 321.111,
    "Feb": 211.222,
    "Mar": 211.333,
    "Apr": 221.444,
    "May": 311.555,
    "Jun": 211.666,
    "Jul": 189.777,
    "Aug": 221.888,
    "Sep": 231.999,
    "Oct": 311.109,
    "Nov": 321.111,
    "Dec": 171.121
  }
}

The Monthly Period Production in kWh resource

Jan (nullable) - number

Energy generation in January

Feb (nullable) - number

Energy generation in February

Mar (nullable) - number

Energy generation in March

Apr (nullable) - number

Energy generation in April

May (nullable) - number

Energy generation in May

Jun (nullable) - number

Energy generation in June

July (nullable) - number

Energy generation in July

Aug (nullable) - number

Energy generation in August

Sep (nullable) - number

Energy generation in September

Oct (nullable) - number

Energy generation in October

Nov (nullable) - number

Energy generation in November

Dec (nullable) - number

Energy generation in December

Code Block
languagejson
{
  "Jan": 321.111,
  "Feb": 211.222,
  "Mar": 211.333,
  "Apr": 221.444,
  "May": 311.555,
  "Jun": 211.666,
  "Jul": 189.777,
  "Aug": 221.888,
  "Sep": 231.999,
  "Oct": 311.109,
  "Nov": 321.111,
  "Dec": 171.121
}

API Definition

Status
colourGreen
titlePost
/public/v2/generation-datas/monthly-data

Request Header

Content-Type

application/json

Request Payload

Array object - Array of Month Generation Data Resource above

RemoteInvId (required) - text

Remote Inverter Id

Data (required) - object (Yearly Generation Data Resource)

Generation data by Year

Data.Year (required) - number

The time to capture data in the format 'YYYY'

Data.PeriodProductionPerMonthInKWh (required) - object (Monthly Period Production in kWh)

Generation by Month

Data.PeriodProductionPerMonthInKWh.Jan (nullable) - number

Energy generation in January

Data.PeriodProductionPerMonthInKWh.Feb (nullable) - number

Energy generation in February

Data.PeriodProductionPerMonthInKWh.Mar (nullable) - number

Energy generation in March

Data.PeriodProductionPerMonthInKWh.Apr (nullable) - number

Energy generation in April

Data.PeriodProductionPerMonthInKWh.May (nullable) - number

Energy generation in May

Data.PeriodProductionPerMonthInKWh.Jun (nullable) - number

Energy generation in June

Data.PeriodProductionPerMonthInKWh.July (nullable) - number

Energy generation in July

Data.PeriodProductionPerMonthInKWh.Aug (nullable) - number

Energy generation in August

Data.PeriodProductionPerMonthInKWh.Sep (nullable) - number

Energy generation in September

Data.PeriodProductionPerMonthInKWh.Oct (nullable) - number

Energy generation in October

Data.PeriodProductionPerMonthInKWh.Nov (nullable) - number

Energy generation in November

Data.PeriodProductionPerMonthInKWh.Dec (nullable) - number

Energy generation in December

Example Request

Code Block
curl --location 'https://uat-api.redex.eco/public/v2/generation-datas/monthly-data' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjE0MjM5MTBGN0Y1Qjk5RTNCMzNGNTFGRTBEMkQwN0U1MzkzNDg3RTZSUzI1NiIsInR5cCI6ImF0K2p3dCIsImN0eSI6IkpXVCIsIng1dCI6IkZDT1JEMzlibWVPelAxSC1EUzBINVRrMGgtWSJ9.eyJuYmYiOjE3MTgzNTQyNjIsImV4cCI6MTcxODM1Nzg2MiwiaXNzIjoiaHR0cHM6Ly9kZXYuaWQucmVkZXguZWNvIiwiYXVkIjpbIlJFQ29ubmVjdF9hcGkiLCJEYXRhU2VydmljZV9hcGkiLCJSRUhhc2hfYXBpIiwiUkVIYXNoX0NOX2FwaSIsIlJFU3VpdGVfYXBpIiwiQXVjdGlvbl9hcGkiLCJTaW5hcm1hc19hcGkiXSwiY2xpZW50X2lkIjoiVHZXUXo1Z3BKQjhWZGtNcktFWU5Dam00YXVSMmhzNmVQSEZVIiwic3ViIjoiZTZjMDBjOGYtNDUzNS00OTJhLThhNTctZDkxODZhZWZjNTU2IiwiYXV0aF90aW1lIjoxNzE4MzU0MjYyLCJpZHAiOiJsb2NhbCIsInVzZXJuYW1lIjoiZHV5MjkwMjIwMjQiLCJlbWFpbCI6ImR1eTI5MDIyMDI0QHlvcG1haWwuY29tIiwibmFtZSI6ImR1eTI5MDIyMDI0IiwiYnVzaW5lc3NfYWNjb3VudF9pZCI6ImU5M2U4NjE4LTAyYWItNGMzZC1iZWZkLTJmMjczM2U5NjYwZCIsIm5vdGlmaWNhdGlvbl9tZXRob2RzIjoiRW1haWwiLCJpYXQiOjE3MTgzNTQyNjIsInNjb3BlIjpbImFkZHJlc3MiLCJlbWFpbCIsIm9wZW5pZCIsInByb2ZpbGUiLCJSRUNvbm5lY3RfYXBpIiwiUkVERVhfYXBpIiwiUkVIYXNoX2FwaSIsIlJFSGFzaF9DTl9hcGkiLCJyb2xlcyIsIm9mZmxpbmVfYWNjZXNzIl0sImFtciI6WyJhcGlfa2V5Il19.CsZcNp7OwpJUAAyoWU0l4PJ0tMn1pcm4vrlDu33-IJK46eEOd8F6hmNTKquO70DoVv3874FzsbkhS_4O6MTLgV_oVWSfw9eihlvKxe_rU5qiGFTm7B8Sw3K4RDFlJ7yc8fG9dLWFzInBzclXh5pIYyc8dCdV42kt4NTp7fSKQiKl_qGkoOxX2BcoeK119Dmqc2NgYlmnb45Oa-yPWV8oQHy5sLZM7AQdQCof8LGMqo2EZk9RqCCX30esIz5aQz1NlZfT2m_K0penEHBe3gwm8daKKSjYCFXrKhAphxw8Wsv_DIPrTzAFnUjuqyJnJWGoYN919f7sV1Vp_nLoXtc1Mw' \
--header 'Content-Type: application/json' \
--data '[
  {
    "RemoteInvId": "RM10000203212003543386274014-INV02",
    "Data": {
      "Year": 2023,
      "PeriodProductionPerMonthInKWh": {
        "Jan": 321.111,
        "Feb": 211.222,
        "Mar": 211.333,
        "Apr": 221.444,
        "May": 311.555,
        "Jun": 211.666,
        "Jul": 189.777,
        "Aug": 221.888,
        "Sep": 231.999,
        "Oct": 311.109,
        "Nov": 321.111,
        "Dec": 171.121
      }
    }
  }
]'

Response

Response Body

Data:ProcessId - number

Process Unique Identifier

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 200, 201, 400, 422.

http状态码,如200,201,400, 422

Message text

Response message: Success or error message.

返回成功或错误的信息。

Info

201 Created

Code Block
languagejson
{
    "StatusCode": 201,
    "Errors": null,
    "Meta": null,
    "Data": {
      "ProcessId": 2024
    },
    "Message": "Send Power Data successfully"
}

Warning

400 Bad Request

Code Block
languagejson
{
    "StatusCode": 400,
    "Errors": null,
    "Meta": null,
    "Data": null,
    "Message": "Request Validation failed."
}

Warning

422 Unprocessable Entity

Code Block
languagejson
{
    "StatusCode": 422,
    "Errors": [
      {
        "Key": "[0].RemoteInvId",
        "Message" : "Invalid Generation Data Frequency: Remote Inverter Id 'RMI321904392090' must send {Daily} generation data."
        "Messages": [
          "Invalid Generation Data Frequency: Remote Inverter Id 'RMI321904392090' must send {Daily} generation data."
        ]
      }
    ],
    "Meta": null,
    "Data": null,
    "Message": "Request Validation failed: Unprocessable Entity"
}

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

我们的API采用限流机制,旨在公平使用并保护服务的性能和可用性。采用全局策略和操作策略相结合的方式。

Global Policy

  • Rate Limit: 3000 requests per 5 minute(s)

  • 限流机制:每5分钟内可允许3000次请求

  • Renewal Period: 300 second(s)

  • 续订周期:300秒

  • Key: IP Address

  • 密钥:客户端IP地址

  • Increment Condition: Any Request

  • 增量条件:任何请求

Operation Policy

  • Rate Limit: 5 requests per 5 second(s)

  • 限流机制:每5秒钟内可允许5次请求

  • Renewal Period: 5 second(s)

  • 续订周期:5秒

  • Key: accound-id business account Id.

  • 密钥:accound-id business account Id

  • Increment Condition: Any Request

  • 增量条件:任何请求

Rate Limit Details

  1. Rate Limit by Key: (根据密钥限流)

    1. Key: This ensures that rate limits are applied uniquely for each business account id.(密钥:确保每个企业帐号ID都能够独立享有其唯一的限流策略。)

    2. Request Limit: Each key is allowed to make up to 5 requests per 5 seconds.(请求限制:每个密钥允许在每5秒内最多进行5次请求。)

    3. Reset Interval: The limit resets every 5 seconds.(重置间隔:每隔5秒进行一次限流重置。)

  2. Response Headers:(响应头)

    1. Retry-After: Sent when the rate limit is exceeded, indicating how long to wait before making another request.(Retry-After:当请求次数超过限流数量时发送该头部,提示需要等待多长时间才能再次发出请求,等待时间以秒为单位。)

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.

当请求次数超过限流数量时,API将返回状态码429 Too Many Requests。响应头中将包含一个Retry-After,以提示需要等待多少秒后才能发出新请求。

Example Response When Rate Limit is Exceeded

Code Block
languagejson
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
}