February, 2024

🥥

Highlights

The February release introduces currency conversion and cloning.

  • New APIs: Currency Conversion API, Copy API, and Clone API
  • New Operation: Create Risk Data Report supporting Exposure Summary and Analysis Summary reports in PDF and JSON ✨
  • The Convert Event Rates and Losses operation now supports overriding of event IDs in an analysis
  • The Create Export Job operation now supports a maximum of 100 analyses for RDM export type

Learn More

Currency Conversion API 🆕

Create Currency Conversion Job

The Create Currency Conversion Job operation (POST /platform/currencyconversion/v1/jobs) creates a Currency Conversion job that converts the currency used in an account, aggregate portfolio, analysis result, portfolio, or treaty.

Sample Request Body:

{
  "resourceUri": "/platform/riskdata/v1/exposures/12/portfolios/1", 
  "resourceType": "portfolio", 
  "settings": {
    "currencyCode": "string",
    "currencyScheme": "string",
    "currencyAsOfDate": "string",
    "currencyVintage": "string"
  }
}

This request accepts two request headers:

  • The mandatory x-rms-resource-group-id header specifies the resource group.
  • The optional x-rms-requestId enables idempotency.

If successful, the response returns 201 Created with the Location header denoting the currency conversion job.

Update Convert Currency Job

The Update Convert Currency Job operation (PATCH /platform/currencyconversion/v1/jobs/{jobsId}) updates a Currency Conversion job. This resource can be used to update the status or priority of a job.

The request can specify the jobStatus of the job:

{
  "jobStatus": "cancelled"
}

The request can specify the priority of the job:

{
  "priority": "veryhigh" 
}

One of veryhigh, high, medium, low, verylow

Search Currency Conversion Jobs

The Search Currency Conversion Jobs operation (GET /platform/currencyconversion/v1/jobs/{jobsId}) returns Currency Conversion jobs.

Sample Response Body:

{
  "jobId": "19956429",
        "userName": "<<user_name>>",
        "status": "FINISHED",
        "submittedAt": "2023-11-02T01:00:41.882Z",
        "startedAt": "2023-11-02T01:00:43Z",
        "endedAt": "2023-11-02T01:03:12Z",
        "name": "<<jobName>>",
        "type": "CONVERT_PORTFOLIO_CURRENCY",
        "progress": 100,
        "priority": "medium",
        "entitlement": "RI-RISKMODELER",
        "resourceGroupId": "uuid",
        "details": {
            "resources": [
                {
                    "uri": "/platform/riskdata/v1/exposures/12/portfolios/1"
                }
            ],
            "summary": "CONVERT_PORTFOLIO_CURRENCY is successful"
        },
        "warnings": []
}

This operation also supports filtering, sorting, offsetting, and limiting currency conversion jobs. To learn more, see Response Filtering.

Get Currency Conversion Job

The Get Currency Conversion Job operation (GET /platform/currencyconversion/v1/jobs/{jobId}) returns Currency Conversion job by ID.

Sample Response Body:

{
  "jobId": "19956429",
    "userName": "<<user_name>>",
    "status": "FINISHED",
    "submittedAt": "2023-11-02T01:00:41.882Z",
    "startedAt": "2023-11-02T01:00:43Z",
    "endedAt": "2023-11-02T01:03:12Z",
    "name": "<<jobName>",
    "type": "CONVERT_PORTFOLIO_CURRENCY",
    "progress": 100,
    "priority": "medium",
    "entitlement": "RI-RISKMODELER",
    "resourceGroupId": "uuid",
    "details": {
        "resources": [
            {
                "uri": "/platform/riskdata/v1//exposures/e1/portfolios/1"
            }
        ],
        "summary": "CONVERT_PORTFOLIO_CURRENCY is successful"
    },
    "warnings": [],
    "tasks": [
        {
            "taskId": "1",
            "guid": "uuid",
            "jobId": "string",
            "status": "string",
            "submittedAt": "2023-11-02T18:30:53.645Z",
            "createdAt": "2023-11-02T18:30:51.664Z",
            "name": "CONVERT_PORTFOLIO_CURRENCY",
            "percentComplete": 100,
            "output": {
                "summary": "",
                "errors": [],
                "log": {
                    "databaseName": "string",
                    "currencyCovertedTo": "string",
                    "currencyScheme": "string",
                    "currencyAsOfDate": "string",
                    "currencyVintage": "string"
                }
            }
        }
    ]
}

Copy API 🆕

Create Copy Job

The Create Copy Job operation (POST /platform/copy/v1/jobs) creates a Copy job that performs copying of entity provided in resourceUri and supports account, portfolio, aggregated portfolio, and exposure (EDM) as resourceType

Sample Request Body:

// For Account / Portfolio / Aggregated Portfolio:
{
    "resourceUri": "/platform/riskdata/v1/exposures/12/accounts/1",
    "resourceType": "account",
    "settings": {
        "name": "newAccountName",
        "number": "newAccountNumber",
        "description": "newAccountDescription",
        "preserveLink": true
    }
}

//For Exposure (EDM:
{
    "resourceUri": "/platform/riskdata/v1/exposures/12",
    "resourceType": "exposure",
    "settings": {
        "destinationExposureId": {{exposureId}},
        "newExposureName": "newExposureName", 
      //one of destinationExposureId or newExposureName is required
        "exposureSetId": {{exposureSetId}},
        "filters": {
            "exposureResourceType": "PORTFOLIOS",
            "exposureResourceIds": [
                7
            ]
        }
    }
}
  • If the resourceType parameter is set to exposure, an EDM2EDM job is submitted.
  • If the resourceType parameter is set to account|portfolio|aggregateportfolio, a copy exposure job is submitted.
  • Use the destinationExposureId parameter to export exposure resources in an existing EDM.
  • Use the newExposureName and exposureSetId parameters to export exposure resources in a newly created EDM.
  • The submitted EDM2EDM job does not preserve IDs.

This request accepts two request headers:

  • The mandatory x-rms-resource-group-id header specifies the resource group.
  • The optional x-rms-requestId enables idempotency.

If successful, the response returns 201 Created with the Location header denoting the currency conversion job.

Update Copy Job

The Update Copy Job operation (PATCH /platform/copy/v1/jobs/{jobId}) updates a Copy job. This resource can be used to update the status or priority of a job.

The request can specify the jobStatus of the job:

{
  "jobStatus": "cancelled"
}

One of veryhigh, high, medium, low, verylow

The request can specify the priority of the job:

{
  "priority": "veryhigh" 
}

One of veryhigh, high, medium, low, verylow

Search Copy Jobs

The Search Copy Jobs operation (GET /platform/copy/v1/jobs/{jobsId}) returns Copy jobs.

Sample Response Body:

[
    {
        "jobId": "21314094",
        "userName": "<<user_name>>",
        "status": "RUNNING",
        "submittedAt": "2024-01-30T13:26:12.825Z",
        "startedAt": "2024-01-30T13:26:14Z",
        "name": "string",
        "type": "COPY_ACCOUNT",
        "progress": 0,
        "priority": "medium",
        "entitlement": "RI-RISKMODELER",
        "resourceGroupId": "9938ded4-a5a6-4e83-9abe-79def55cf713",
        "details": {
            "resources": []
        },
        "warnings": []
    }
]

This operation also supports filtering, sorting, offsetting, and limiting currency conversion jobs. To learn more, see Response Filtering.

Get Copy Job

The Get Copy Job operation (GET /platform/copy/v1/jobs/{jobId}) returns a Copy job by ID.

Sample Response Body:

{
    "jobId": "21314094",
    "userName": "<<user_name>>",
    "status": "FINISHED",
    "submittedAt": "2024-01-30T13:26:12.825Z",
    "startedAt": "2024-01-30T13:26:14Z",
    "endedAt": "2024-01-30T13:26:32Z",
    "name": "string",
    "type": "COPY_ACCOUNT",
    "progress": 100,
    "priority": "medium",
    "entitlement": "RI-RISKMODELER",
    "resourceGroupId": "9938ded4-a5a6-4e83-9abe-79def55cf713",
    "details": {
        "resources": [],
        "summary": "COPY_ACCOUNT is successful"
    },
    "warnings": [],
    "tasks": [
        {
            "taskId": "1",
            "guid": "45dbc8ca-f164-4518-b1fd-5797c30a082a",
            "jobId": "21314094",
            "status": "Succeeded",
            "submittedAt": "2024-01-30T13:26:14.542Z",
            "createdAt": "2024-01-30T13:26:12.816Z",
            "name": "COPY_ACCOUNT",
            "percentComplete": 100,
            "output": {
                "summary": "",
                "errors": [],
                "log": {}
            }
        }
    ]
}

Clone API 🆕

Create Clone Job

The Create Clone Job operation (POST /platform/clone/v1/jobs) creates a Clone job that clones an exposure (EDM) as-is or by adding a filter on accounts, portfolios, and aggregated portfolios.

Sample Request Body:

{
    "resourceUri": "/platform/riskdata/v1/exposures/13",
    "resourceType": "exposure",
    "settings": {
        "newExposureName": "newExposureName",
        "exposureSetId": <exposureSetId>,
        "filters": {
            "exposureResourceType": "PORTFOLIOS",
            "exposureResourceIds": [
                7
            ]
        }
    }
}
  • Submitted EDM2EDM jobs always preserve IDs.

This request accepts two request headers:

  • The mandatory x-rms-resource-group-id header specifies the resource group.
  • The optional x-rms-requestId enables idempotency.

If successful, the response returns 201 Created with the Location header denoting the currency conversion job.

Update Clone Job

The Update Clone Job operation (PATCH /platform/clone/v1/jobs/{jobId}) updates a Clone job. This resource can be used to update the status or priority of a job.

The request can specify the jobStatus of the job:

{
  "jobStatus": "cancelled"
}

The request can specify the priority of the job:

{
  "priority": "veryhigh"
}

One of veryhigh, high, medium, low, verylow

Search Clone Jobs

The Search Clone Jobs operation (GET /platform/clone/v1/jobs/{jobsId}) returns Clone jobs.

Sample Response Body:

{
    "jobId": "21564504",
    "userName": "<<user_name>>",
    "status": "FINISHED",
    "submittedAt": "2024-02-08T16:43:01.808Z",
    "startedAt": "2024-02-08T16:43:05Z",
    "endedAt": "2024-02-08T16:45:39Z",
    "name": "string",
    "type": "EDM2EDM",
    "progress": 100,
    "priority": "medium",
    "entitlement": "RI-RISKMODELER",
    "resourceGroupId": "9938ded4-a5a6-4e83-9abe-79def55cf713",
    "details": {
        "resources": [],
        "summary": "EDM2EDM is successful"
    },
    "warnings": [],
    "tasks": [
        {
            "taskId": "1",
            "guid": "9ee8df88-ba10-445a-bc2a-c89d2e7fc6e8",
            "jobId": "21564504",
            "status": "Succeeded",
            "submittedAt": "2024-02-08T16:43:05.612Z",
            "createdAt": "2024-02-08T16:43:01.802Z",
            "name": "EDM2EDM",
            "percentComplete": 100,
            "output": {
                "summary": "",
                "errors": [],
                "log": {}
            }
        }
    ]
}

This operation also supports filtering, sorting, offsetting, and limiting currency conversion jobs. To learn more, see Response Filtering.

Get Clone Job

The Get Clone Job operation (GET /platform/clone/v1/jobs/{jobsId}) returns a Clone job by ID.

Sample Response Body:

{
    "jobId": "21564504",
    "userName": "<<user_name>>",
    "status": "FINISHED",
    "submittedAt": "2024-02-08T16:43:01.808Z",
    "startedAt": "2024-02-08T16:43:05Z",
    "endedAt": "2024-02-08T16:45:39Z",
    "name": "string",
    "type": "EDM2EDM",
    "progress": 100,
    "priority": "medium",
    "entitlement": "RI-RISKMODELER",
    "resourceGroupId": "9938ded4-a5a6-4e83-9abe-79def55cf713",
    "details": {
        "resources": [],
        "summary": "EDM2EDM is successful"
    },
    "warnings": [],
    "tasks": [
        {
            "taskId": "1",
            "guid": "9ee8df88-ba10-445a-bc2a-c89d2e7fc6e8",
            "jobId": "21564504",
            "status": "Succeeded",
            "submittedAt": "2024-02-08T16:43:05.612Z",
            "createdAt": "2024-02-08T16:43:01.802Z",
            "name": "EDM2EDM",
            "percentComplete": 100,
            "output": {
                "summary": "",
                "errors": [],
                "log": {}
            }
        }
    ]
}

This operation also supports filtering, sorting, offsetting, and limiting currency conversion jobs. To learn more, see Response Filtering.

Risk Data API Updates

Create Risk Data Report 🆕

The Create Risk Data Report operation (POST /platform/riskdata/v1/reports) submits a report generation job that supports EXPOSURE_SUMMARY or ANALYSIS_SUMMARY report types as PDF or JSON ✨

Sample Request Body:

 {{
  "resourceUri": "/riskdata/v1/exposures/12312/portfolios/1 OR /riskdata/v1/exposures/12312/accounts/1 OR /riskdata/v1/analyses/12312",
  "reportType": "EXPOSURE_SUMMARY",
  "settings": {
    "reportName": "Test",
    "customBands": [
      {
        "hazard": "string",
        "bands": [
          {
            "greaterThanOrEqualTo": 0,
            "lessThan": 10000
          }
        ]
      }
    ],
    "perilCodes": [
      "EQ"
    ],
    "fileExtension": "PDF"
  }
}

Convert Event Rates and Losses

The Convert Event Rates and Losses operation (POST /platform/riskdata/v1/analyses/{analysisId}/convert-event-rate-loss) now supports a new boolean parameter overrideEventIds

When overrideEventIds set as true, each event ID in the original analysis will be overridden in the new resulting analysis with the custom ID (if present) defined in externalId of each event rate in the Event Rate Schemes provided in the request.

Sample Request Body:

{
  "analysisName": "New Analysis Name",
  "eventRateSchemeIds": [
    {{eventRateSchemeId}}
  ],
  "eventLossAdjustmentSchemeIds": [],
  "overrideEventIds": "true"
}

Export API Updates

The Create Export Job operation (POST /platform/export/v1/jobs) now supports a maximum of 100 analyses in resourceUris array for the exportType= RDM.

❗️

Warning

Export of analyses into an RDM may encounter issues if the size of the analyses is too large. Please split the export job into multiple jobs based on the size.