{"openapi":"3.0.1","info":{"title":"Tenant Data API","version":"2026.03.b"},"x-readme":{"explorer-enabled":false,"parameter-ordering":["header","path","query","body","form","cookie"],"samples-languages":["curl","java","csharp","node","python"],"proxy-enabled":true,"samples-enabled":true},"servers":[{"url":"https://{host}/platform/tenantdata/v1","variables":{"host":{"enum":["api-euw1.rms.com","api-use1.rms.com"],"default":"api-euw1.rms.com","description":"Data center that hosts the tenant instance: api-euw1.rms.com or api-use1.rms.com."}}}],"security":[{"rms_api_key":[]},{"rms_bearer_token":[]}],"paths":{"/entitlements/{entitlement}/resourcegroups":{"get":{"tags":["Resource Groups"],"summary":"Search resource groups","operationId":"getResourceGroups","parameters":[{"$ref":"#/components/parameters/EntitlementParam"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilteredResourceGroups"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/entitlements/{entitlement}/resourcegroups/{resourceGroupId}":{"get":{"tags":["Resource Groups"],"summary":"Get resource group","operationId":"getResourceGroup","parameters":[{"$ref":"#/components/parameters/ResourceGroupIdPathParam"},{"$ref":"#/components/parameters/EntitlementParam"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGroup"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/entitlements/{entitlement}/usages":{"get":{"tags":["Usages"],"summary":"Get usage metrics","operationId":"getUsages","parameters":[{"name":"entitlement","in":"path","required":true,"description":"Licensed application.","schema":{"type":"string","enum":["RI-RISKMODELER","RI-UNDERWRITEIQ"]}},{"name":"date","in":"query","required":false,"description":"Date of usages to return in `YYYY-MM-DD` format. If unspecified, defaults to current date.","example":"2024-10-01","schema":{"type":"string"}},{"name":"usageType","in":"query","description":"Type of resource quota usage.","schema":{"$ref":"#/components/schemas/UsageType"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Usage"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/entitlements/{entitlement}/usages/{usageType}/timevalues":{"get":{"tags":["Usages"],"summary":"Get usage metrics by date","operationId":"getUsageTimeValues","parameters":[{"name":"entitlement","in":"path","description":"Licensed application.","required":true,"schema":{"type":"string","enum":["RI-RISKMODELER","RI-UNDERWRITEIQ"]}},{"name":"usageType","in":"path","description":"Type of resource quota usage.","required":true,"schema":{"$ref":"#/components/schemas/UsageType"}},{"name":"key","in":"query","description":"Resource quota metric to return. Metric values indicate usage by hour or day depending on scope of query.\n\nValid options depend on value of `usageType` parameter:\n  - If `ModeledLocations`, `ModeledLocationsCount` is valid.\n  - If `Jobs`, `CancelledJobsCount`, `CompletedJobsCount`, `ModelJobsCount`, `ModelJobsMaxConcurrency`, `NonModelJobsCount` `TotalJobsCount` are valid.\n  - If `Storage`, `ExposureStorageInGB`, `OtherStorageInGB`, and `TotalEdmsCount` are valid.","required":true,"schema":{"type":"string","enum":["CancelledJobsCount","CompletedJobsCount","ExposureStorageInGB","FailedJobsCount","ModelJobsCount","ModelJobsMaxConcurrency","ModeledLocationsCount","ModeledLocationsCount","NonModelJobsCount","NonModelJobsMaxConcurrency","OtherStorageInGB","TotalEdmsCount","TotalJobsCount","TotalJobsMaxConcurrency"]}},{"name":"rangeStart","in":"query","required":false,"description":"Start date and time of time values returned in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, i.e. `yyyy-MM-dd hh:mm:ss`. If unspecified, defaults to current date at 00:00:00 (midnight).","schema":{"type":"string","format":"date-time"}},{"name":"rangeEnd","in":"query","required":false,"description":"End date and time of time values returned in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, i.e. `yyyy-MM-dd hh:mm:ss`. If unspecified, defaults to current date and time.","schema":{"type":"string","format":"date-time"}},{"name":"offset","in":"query","required":false,"description":"Number of records to skip for pagination.","schema":{"type":"integer","format":"int32","default":0}},{"name":"limit","in":"query","required":false,"description":"Number of records to return per page. See [Response Pagination](doc:response-pagination)","schema":{"type":"integer","format":"int32","default":100,"maximum":1000}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double","maxItems":2,"minItems":2,"example":[1709247600000,12]}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/jobs":{"get":{"tags":["Tenant Jobs"],"summary":"Search tenant jobs","operationId":"getTenantJobs","parameters":[{"name":"filter","in":"query","description":"<<glossary:Query string>> to select response data based on property values. \n\nDepending on the property, supports comparison operators, list operators, and logical operators.\n\n| Property                | Type   | Comparison  | List | \n| :---------------------- | :---------- | :---------- | :--- | \n| `endedAt `              | `YYY-MM-DD` | `=`         |      | \n| `entitlement`           | `String`    |             | `IN` | \n| `jobId`                 | `Number`    | `=`         | `IN`     |         \n| `name`                  | `String`    | `=` |      |         \n| `platformOperationType` | `String`         |  `=`           | `IN` |         \n| `resourceGroupId`                  | `String`    | `=`         | `IN`     |\n| `startedAt`             | `YYY-MM-DD` | `=`         |      | \n| `status`                | `String`    | `=`         |      | \n| `type`                  | `String`    | `=`         | `IN`     |\n| `userName`              | `String`    | `=`         |      |\n\nAll properties support the `AND` logical operator, e.g. `jobId=\"100\" AND status=\"FINISHED\"`. To learn more, see [Response Filtering](doc:response-filtering).","schema":{"type":"string"}},{"name":"sort","in":"query","description":"Comma-delimited list of properties. Sort order defined by one of `ASC` (ascending) or `DESC` (descending).\n\nSupported properties: `jobId`, `name`, `status`, `submittedAt`, `type`. See [Response Pagination](doc:response-pagination).","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of records returned per page. See [Response Pagination](doc:response-pagination).","schema":{"maximum":100,"minimum":1,"type":"integer","format":"int32","default":10}},{"name":"offset","in":"query","description":"Number of page displaying the returned records.","schema":{"type":"integer","format":"int32","default":0}},{"name":"includeArchivedJobs","in":"query","description":"Include archived jobs in the response. Jobs are automatically archived after 30 days. If `true` and the archived data is not yet ready, returns 202 with an empty object. Retry the request to get the full response with 200.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenantDataJobResponse"}}}}},"202":{"description":"Accepted: Archived job data is not yet ready. Retry the request after a delay.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/jobs/{jobId}":{"patch":{"tags":["Tenant Jobs"],"summary":"Update tenant job","description":"","operationId":"updatetenantjob","parameters":[{"name":"jobId","in":"path","description":"ID of tenant job.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchJobRequest"}}}},"responses":{"202":{"description":"Job successfully updated."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/encryption-keys":{"get":{"tags":["Encryption Keys"],"summary":"Search encryption keys","description":"","operationId":"searchKeys","parameters":[{"name":"query","in":"query","description":"<<glossary:Query string>> to select response data based on property values. \n\nDepending on the property, supports comparison operators and logical operators.\n\n| Property                | Type   | Comparison  | List| \n| :---------------------- | :---------- | :---------- |  ----|\n| `createdAt`| Timestamp|`=`, `!=`, `<`, `>`, `<=`, `>=`| |\n| `createdBy`| Timestamp|`=`, `!=`| `IN`, `NOT IN`, `LIKE`, `NOT LIKE`|\n| `encryptionKeyName`| String|`=`, `!=`| `IN`, `NOT IN`, `LIKE`, `NOT LIKE`|\n| `encryptionKeySubType`| String|`=`, `!=`| `IN`, `NOT IN`|\n| `encryptionKeyType`| String|`=`, `!=`| `IN`, `NOT IN`|\n| `expirationDate`| Timestamp|`=`, `!=`, `<`, `>`, `<=`, `>=`| |\n| `id`| Number|`=`, `!=`, `<`, `>`, `<=`, `>=`| `IN`, `NOT IN`|\n| `startDate`| Timestamp|`=`, `!=`, `<`, `>`, `<=`, `>=`| |\n| `status`| String|`=`, `!=`| `IN`, `NOT IN`|\n| `tenantId`| String|`=`, `!=`| `IN`, `NOT IN`|\n\n\nAll properties support the `AND` logical operator, e.g. `encryptionKType=\"VPN\" AND status=\"IN-USE\"`. To learn more, see [Response Filtering](doc:response-filtering).","schema":{"type":"string"},"example":"encryptionKeyType=VPN AND status=ACTIVE"},{"name":"sort","in":"query","description":"Comma-delimited list of properties. Sort order defined by one of `ASC` (ascending) or `DESC` (descending).","schema":{"type":"string"},"example":"createdAt:desc"},{"name":"limit","in":"query","description":"Number of records returned per page. See [Response Pagination](doc:response-pagination).","schema":{"type":"integer","format":"int32","maximum":1000,"default":100}},{"name":"offset","in":"query","description":"Number of page displaying the returned records.","schema":{"type":"integer","format":"int32","default":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EncryptionKey"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to resource is denied. Client is not authorized to perform the View Encryption Keys action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["Encryption Keys"],"summary":"Create encryption key","description":"","operationId":"createKey","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EncryptionKey"}}}},"responses":{"201":{"description":"Encryption key created successfully."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to resource is denied or not authorized to perform the Edit Encryption Keys action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"409":{"description":"Key with same name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/encryption-keys/{keyId}":{"get":{"tags":["Encryption Keys"],"summary":"Get encryption key","description":"","operationId":"getKey","parameters":[{"name":"keyId","in":"path","description":"ID of encryption key.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EncryptionKey"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the View Encryption Keys action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/encryption-keys/{encryptionKeyId}":{"patch":{"tags":["Encryption Keys"],"summary":"Update encryption key","description":"","operationId":"updatekey","parameters":[{"name":"encryptionKeyId","in":"path","description":"ID of encryption key.\n\nCurent status of encryption key must be `AVAILABLE`. Keys with status of `IN-USE` cannot be revoked.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchEncryptionKey"}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request: Invalid status. Status of encryption key can only changed to `REVOKED` status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the Edit Encryption Keys action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/vpn-connections":{"get":{"tags":["VPN Connections"],"summary":"Search VPN connections","description":"","operationId":"searchConnections","parameters":[{"name":"query","in":"query","description":"<<glossary:Query string>> to select response data based on property values.\n\n| Parameter             | Type      | Comparision                     | List           |\n| --------------------- | --------- | ------------------------------- | -------------- |\n| `awsVpnConnectionId`  | String    | `=`, `!=`                       | `IN`, `NOT IN` |\n| `bgpRouting`          | String    | `=`, `!=`                       | `IN`, `NOT IN` |\n| `comments`            | String    | `=`, `!=`, `LIKE`, `NOT LIKE`   | `IN`, `NOT IN` |\n| `createdAt`           | Timestamp | `=`, `!=`, `<`, `>`, `<=`, `>=` |                |\n| `createdBy`           | String    | `=`, `!=`, `LIKE`, `NOT LIKE`   | `IN`, `NOT IN` |\n| `customerBgpAsn`      | Number    | `=`, `!=`, `<`, `>`, `<=`, `>=` | `IN`, `NOT IN` |\n| `customerGatewayIp`   | String    | `=`, `!=`                       | `IN`, `NOT IN` |\n| `enabledAt`           | Timestamp | `=`, `!=`, `<`, `>`, `<=`, `>=` |                |\n| `encryptionKeyId`     | Number    | `=`, `!=`, `<`, `>`, `<=`, `>=` | `IN`, `NOT IN` |\n| `encryptionType`      | String    | `=`, `!=`                       | `IN`, `NOT IN` |\n| `id`                  | Number    | `=`, `!=`, `<`, `>`, `<=`, `>=` | `IN`, `NOT IN` |\n| `irpBgpAsn`           | Number    | `=`, `!=`, `<`, `>`, `<=`, `>=` | `IN`, `NOT IN` |\n| `status`              | String    | `=`, `!=`                       | `IN`, `NOT IN` |\n| `vpnConnectionName`   | String    | `=`, `!=`, `LIKE`, `NOT LIKE`   | `IN`, `NOT IN` |\n\nAll properties support the `AND` logical operator. To learn more, see [Response Filtering](doc:response-filtering).","schema":{"type":"string"}},{"name":"sort","in":"query","description":"Comma-delimited list of properties. Sort order defined by one of `ASC` (ascending) or `DESC` (descending).","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of records returned per page. See [Response Pagination](doc:response-pagination).","schema":{"maximum":1000,"default":100,"type":"integer","format":"int32"}},{"name":"offset","in":"query","description":"Number of page displaying the returned records.","schema":{"type":"integer","default":0,"format":"int32"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VpnConnection"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the View VPN Details action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["VPN Connections"],"summary":"Create VPN connection","description":"","operationId":"createConnection","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVpnConnection"}}}},"responses":{"202":{"description":"`CREATE_VPN` job submitted."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the Edit VPN Details action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"409":{"description":"VPN connection name already exists or encryption key already in use","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/vpn-connections/{connectionId}":{"get":{"tags":["VPN Connections"],"summary":"Get VPN connection","description":"","operationId":"getConnection","parameters":[{"name":"connectionId","in":"path","description":"ID of VPN connection.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VpnConnection"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the View VPN Details action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["VPN Connections"],"summary":"Delete VPN connection","description":"","operationId":"deleteConnection","parameters":[{"name":"connectionId","in":"path","description":"VPN connection ID.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"202":{"description":"`DELETE_VPN` job submitted."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the Delete VPN Details action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"409":{"description":"VPN connection is already being deleted or has been deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"patch":{"tags":["VPN Connections"],"summary":"Update VPN connection","description":"","operationId":"updateConnection","parameters":[{"name":"connectionId","in":"path","description":"ID of VPN connection.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"VPN connection update request","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVpnConnection"}}}},"responses":{"200":{"description":"VPN connection updated successfully (synchronous)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VpnConnection"}}}},"202":{"description":"`UPDATE_VPN` job submitted."},"400":{"description":"Bad Request: Invalid or missing parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: Access to this resource is denied or not authorized to perform the Edit VPN Details action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"409":{"description":"VPN connection in transitional state (CREATING, DELETING)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}}},"components":{"parameters":{"EntitlementParam":{"in":"path","schema":{"type":"string","enum":["RI-DATAADMIN","RI-DATAVAULT","RI-EXPOSUREIQ","RI-RISKMODELER","RI-TREATYIQ","RI-UNDERWRITEIQ"]},"name":"entitlement","description":"Licensed application.","required":true},"JobSummaryTypeParam":{"in":"query","name":"jobsType","required":false,"schema":{"$ref":"#/components/schemas/JobType"}},"JobIdParam":{"in":"path","schema":{"type":"string"},"name":"id","required":true},"ResourceGroupIdPathParam":{"in":"path","schema":{"type":"string","format":"uuid"},"name":"resourceGroupId","required":true},"SecurableTypeParam":{"in":"query","name":"securableType","required":false,"schema":{"$ref":"#/components/schemas/SecurableType"}},"GroupNameQueryParam":{"in":"query","schema":{"type":"string"},"name":"groupName","required":false},"SecurableIdPathParam":{"in":"path","schema":{"type":"string"},"name":"securableId","required":true}},"schemas":{"ErrorMessage":{"type":"object","properties":{"message":{"type":"string"}}},"UsageType":{"type":"string","description":"Type of <<glossary:usage>>.","enum":["ModeledLocations","Jobs","Storage"]},"Usage":{"type":"object","properties":{"usageType":{"$ref":"#/components/schemas/UsageType"},"scope":{"type":"string","description":"Scope of usage tracking, e.g. entitlement.","enum":["RI-RISKMODELER","RI-UNDERWRITEIQ","PLATFORM"]},"stats":{"type":"array","description":"Usage metrics and statistics by usage type.","items":{"type":"object","properties":{"key":{"type":"string","description":"Name of metric or statistic.","enum":["ModeledLocationsCount","TotalJobsCount","CancelledJobsCount","FailedJobsCount","CompletedJobsCount","ModelJobsCount","NonModelJobsCount","ModelJobsMaxConcurrency","NonModelJobsMaxConcurrency","TotalJobsMaxConcurrency","TotalJobsAverage","TotalDelayedJobsAverage","TotalEdmsCount","ExposureStorageInGB","OtherStorageInGB"]},"value":{"type":"string","description":"Value of metric or statistic.","example":10502}}}}}},"JobType":{"type":"string"},"FilteredResourceGroups":{"type":"array","items":{"$ref":"#/components/schemas/ResourceGroupSummary"}},"ResourceGroupSummary":{"type":"object","properties":{"resourceGroupId":{"type":"string","description":"ID of <<glossary:resource group>>.","nullable":false,"format":"uuid"},"name":{"type":"string","description":"Name of resource group.","example":"SFT-group","nullable":false},"entitlement":{"type":"string","description":"Name of <<glossary:entitlement>> to which the resource group belongs.","example":"RI-RISKMODELER","enum":["RI-DATAADMIN - RI-DATAVAULT","RI-EXPOSUREIQ","RI-RISKMODELER","RI-TREATYIQ","RI-UNDERWRITEIQ"]},"createdBy":{"type":"string","description":"Email address of <<glossary:principal>> that created resource group.","example":"user.name@company.com"},"createdAt":{"type":"string","format":"date-time","description":"Date that resource group was created."},"modifiedBy":{"type":"string","description":"Email address of <<glossary:principal>> that last modified resource group.","example":"user.name@company.com"},"modifiedAt":{"type":"string","format":"date-time","description":"Date that resource group was last updated."},"default":{"type":"boolean","enum":[true,false]},"allAccess":{"description":"Scope of resource group access. \n\n- If `true`, all principals (users and clients) on the tenant belong to resource group. By default, seeded resource groups grant access to all principals. \n- If `false`, principals belong to resource group based on <<glossary:user group>> membership.","type":"boolean","default":true,"enum":[true,false]}}},"ResourceGroup":{"type":"object","allOf":[{"$ref":"#/components/schemas/ResourceGroupSummary"}]},"SecurableType":{"type":"string","nullable":false,"enum":["exposureSet","profile","programSet","businessHierarchySet","DataBridgeDatabase","DataBridgeServer"]},"TenantDataJobResponse":{"type":"object","properties":{"jobId":{"type":"string","description":"ID of job.","example":40582903},"userName":{"type":"string","format":"email","description":"Login of <<glossary:principal>> that submitted job, e.g. `user.name@company.com` or `SSO_user.name@company.com` for federated tenants. Login strings are lowercase. See [Logins](ref:principals).","example":"user.name@company.com"},"status":{"type":"string","description":"Current status of job.","enum":["QUEUED","RUNNING","FINISHED","FAILED","CANCELLED","PENDING","CANCELLING","CANCEL_REQUESTED"],"example":"FINISHED"},"submittedAt":{"type":"string","description":"Time job was submitted in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`.","example":"2025-09-30T19:36:16.277Z"},"startedAt":{"type":"string","description":"Time job started in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`.","example":"2025-09-30T19:38:22Z"},"endedAt":{"type":"string","description":"Time job ended in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`.","example":"2025-09-30T19:39:31Z"},"name":{"type":"string","description":"User-defined name of job.","example":"Upload PEQT"},"type":{"type":"string","description":"Type of job.","example":"UPLOAD_PEQT"},"progress":{"type":"integer","description":"Percent of job completion.","example":100,"format":"int32"},"entitlement":{"type":"string","description":"Licensed application.","example":"RI-RISKMODELER","enum":["RI-DATAADMIN","RI-EXPOSUREIQ","RI-RISKMODELER","RI-TREATYIQ","RI-UNDERWRITEIQ"]},"resourceGroupId":{"type":"string","description":"ID of <<glossary:resource group>>.","example":"ef8dacb9-8e25-41b8-9520-5b771970eb6a"},"details":{"$ref":"#/components/schemas/JobDetails"},"jobUri":{"type":"string","description":"URI of job.","example":"/platform/riskdata/v1/jobs/38169585"}}},"JobDetails":{"type":"object","properties":{"resources":{"type":"array","description":"List of resource URIs.","example":[],"items":{"$ref":"#/components/schemas/Uri"}},"summary":{"type":"string","description":"Summary of job status.","example":"BATCH is successful"}}},"Uri":{"type":"object","properties":{"uri":{"type":"string"}}},"PatchJobRequest":{"type":"object","properties":{"status":{"description":"Status of updated tenant job.","type":"string","enum":["CANCELLED"]},"priority":{"type":"string","description":"Priority of update tenant job.","enum":["veryhigh","high","medium","low","verylow"]}}},"PatchEncryptionKey":{"type":"object","required":["status"],"description":"VPN encryption key.","properties":{"status":{"type":"string","description":"Updated status of encryption key.","example":"REVOKED","enum":["REVOKED"]}}},"EncryptionKey":{"type":"object","required":["encryptionKeyName","encryptionKeySubType","encryptionKeyType"],"description":"Encryption key for VPN.","properties":{"id":{"type":"integer","format":"int64","description":"ID of encryption key.","readOnly":true,"example":123},"status":{"type":"string","description":"Status of encryption key.","readOnly":true,"example":"AVAILABLE","enum":["AVAILABLE","IN-USE","REVOKED"]},"createdBy":{"type":"string","description":"Service or <<glossary:principal>> that created key.","readOnly":true,"example":"user.name@company.com"},"createdAt":{"type":"string","description":"Timestamp of encryption key creation date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-01T01:00:00"},"activatedAt":{"type":"string","description":"Timestamp of encryption key activation date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-02T01:00:00"},"expiredAt":{"type":"string","description":"Timestamp of revocation date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-12-31T01:00:00"},"encryptionKeyType":{"type":"string","pattern":"(?i)^(vpn)$","description":"Type of encryption key, i.e. `vpn`.","example":"vpn"},"encryptionKeySubType":{"type":"string","pattern":"(?i)^(pre-shared-key|master-key-password|customer-uploaded-key)$","description":"Subtype of encryption key, i.e. `pre-shared-key`.","example":"pre-shared-key"},"encryptionKeyName":{"type":"string","minLength":3,"maxLength":100,"description":"Name of encryption key.","example":"vpn-key-2024"},"encryptionKeyValue":{"type":"string","minLength":8,"maxLength":256,"example":"************abcd","description":"Value of encryption key.\n\nString consisting of 8-26 characters that defines a pre-shared key that can be used to secure traffic on a VPN connection.\n\nDisplayed as masked value in responses: 12 asterisks followed by last four characters of key, e.g., `************abcd`"}}},"VpnConnection":{"type":"object","required":["customerGatewayIps"],"description":"VPN connection configuration","properties":{"vpnConnectionId":{"type":"integer","format":"int64","description":"Unique ID of VPN connection.","readOnly":true,"example":123},"dnsResolverIps":{"type":"array","description":"List of DNS resolver IPs from AWS Route53.","readOnly":true,"items":{"type":"string","description":"DNS resolver IPs from AWS Route53."}},"irpBgpAsn":{"type":"string","description":"Intelligent Risk Platform BGP ASN (from cloud response).","readOnly":true,"example":"64512"},"irpSubnetIps":{"type":"array","description":"Intelligent Risk Platform private subnet IPs.","readOnly":true,"items":{"type":"string","description":"IRP private subnet IPs."}},"irpTargetIps":{"type":"array","description":"Intelligent Risk Platform target IPs (private load balancer IPs for VPN traffic routing).","readOnly":true,"example":["10.1.0.6","10.1.11.28","10.1.17.50"],"items":{"type":"string","description":"Intelligent Risk Platform target IPs (private load balancer IPs for VPN traffic routing)."}},"tunnelSettings":{"type":"object","description":"Tunnel configuration of VPN connection. Passed through as-is.","readOnly":true},"createdBy":{"type":"string","description":"Service or <<glossary:principal>> that created VPN connection.","readOnly":true,"example":"rlax"},"createdAt":{"type":"string","description":"Timestamp of VPN connection creation in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-01T01:00:00Z"},"enabledAt":{"type":"string","description":"Timestamp of VPN connection enablement in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-02T01:00:00Z"},"customerGatewayIps":{"type":"array","minItems":0,"maxItems":1,"description":"Customer gateway IPs  (currently only one supported).","example":["21.32.1.1"],"items":{"type":"string","description":"Customer gateway IPs (currently only one supported)."}},"comments":{"type":"string","minLength":0,"maxLength":50,"description":"Comments for reference","example":"Production VPN connection"},"bgpRouting":{"type":"boolean","description":"If `true`, BGP routing is enabled.","example":true},"customerBgpAsn":{"type":"string","pattern":"^$|^[0-9]{1,10}$","description":"Customer BGP ASN.","example":"64512"},"customerSubnetIps":{"type":"array","description":"Customer subnet IPs in CIDR format.","items":{"type":"string","description":"Customer subnet IPs in CIDR format."}},"encryptionType":{"type":"string","description":"Type of encryption.","example":"preSharedKey"},"encryptionKeyResourceId":{"type":"integer","description":"ID of encryption key.","example":123},"enabledApps":{"type":"array","description":"List of Intelligent Risk Platform applications accessible via VPN connection.","example":["DATA_BRIDGE"],"items":{"type":"string","description":"Enabled applications"}},"vpnStatus":{"type":"string","description":"Status of VPN connection. \n\n- If `on`, VPN connection is available. Status of attached encryption key is `IN-USE`.\n- If `off`, VPN connection is unavailable. Status of attached encryption key is `AVAILABLE`.\n\nSystem may return `creating`, `deleting`, `failed_create`, `failed_delete` during `CREATE_VPN`, `UPDATE_VPN`, or `DELETE_VPN` jobs.","example":"on","enum":["creating","deleting","failed_create","failed_delete","off","on"]}}},"CreateVpnConnection":{"type":"object","description":"VPN connection configuration","properties":{"vpnConnectionId":{"type":"integer","format":"int64","description":"Unique ID of VPN connection.","readOnly":true,"example":123},"dnsResolverIps":{"type":"array","description":"List of DNS resolver IPs from AWS Route53.","readOnly":true,"items":{"type":"string","description":"DNS resolver IPs from AWS Route53."}},"irpBgpAsn":{"type":"string","description":"Intelligent Risk Platform BGP ASN (from cloud response).","readOnly":true,"example":"64512"},"irpSubnetIps":{"type":"array","description":"Intelligent Risk Platform private subnet IPs.","readOnly":true,"items":{"type":"string","description":"IRP private subnet IPs."}},"irpTargetIps":{"type":"array","description":"Intelligent Risk Platform target IPs (private load balancer IPs for VPN traffic routing).","readOnly":true,"example":["10.1.0.6","10.1.11.28","10.1.17.50"],"items":{"type":"string","description":"Intelligent Risk Platform target IPs (private load balancer IPs for VPN traffic routing)."}},"tunnelSettings":{"type":"object","description":"Tunnel configuration of VPN connection. Passed through as-is.","readOnly":true},"createdBy":{"type":"string","description":"Service or <<glossary:principal>> that created VPN connection.","readOnly":true,"example":"rlax"},"createdAt":{"type":"string","description":"Timestamp of VPN connection creation in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-01T01:00:00Z"},"enabledAt":{"type":"string","description":"Timestamp of VPN connection enablement in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-02T01:00:00Z"},"customerGatewayIps":{"type":"array","minItems":0,"maxItems":1,"description":"Customer gateway IPs  (currently only one supported).","example":["21.32.1.1"],"items":{"type":"string","description":"Customer gateway IPs (currently only one supported)."}},"comments":{"type":"string","minLength":0,"maxLength":50,"description":"Comments for reference","example":"Production VPN connection"},"bgpRouting":{"type":"boolean","description":"If `true`, BGP routing is enabled.","example":true},"customerBgpAsn":{"type":"string","pattern":"^$|^[0-9]{1,10}$","description":"Customer BGP ASN.","example":"64512"},"customerSubnetIps":{"type":"array","description":"Customer subnet IPs in CIDR format.","items":{"type":"string","description":"Customer subnet IPs in CIDR format."}},"encryptionType":{"type":"string","description":"Type of encryption.","example":"preSharedKey"},"encryptionKeyResourceId":{"type":"string","pattern":"^/platform/tenantdata/v1/encryption-keys/[0-9]+$","description":"Resource URI of encryption key.","example":"/platform/tenantdata/v1/encryption-keys/123"},"enabledApps":{"type":"array","description":"List of Intelligent Risk Platform applications accessible via VPN connection.","example":["DATA_BRIDGE"],"items":{"type":"string","description":"Enabled applications"}},"vpnStatus":{"type":"string","description":"Status of VPN connection. Client can set `on` or `off`.","example":"on","enum":["off","on"]}}},"UpdateVpnConnection":{"type":"object","description":"VPN connection configuration","properties":{"vpnConnectionId":{"type":"integer","format":"int64","description":"Unique ID of VPN connection.","readOnly":true,"example":123},"dnsResolverIps":{"type":"array","description":"List of DNS resolver IPs from AWS Route53.","readOnly":true,"items":{"type":"string","description":"DNS resolver IPs from AWS Route53."}},"irpBgpAsn":{"type":"string","description":"Intelligent Risk Platform BGP ASN (from cloud response).","readOnly":true,"example":"64512"},"irpSubnetIps":{"type":"array","description":"Intelligent Risk Platform private subnet IPs.","readOnly":true,"items":{"type":"string","description":"IRP private subnet IPs."}},"irpTargetIps":{"type":"array","description":"Intelligent Risk Platform target IPs (private load balancer IPs for VPN traffic routing).","readOnly":true,"example":["10.1.0.6","10.1.11.28","10.1.17.50"],"items":{"type":"string","description":"Intelligent Risk Platform target IPs (private load balancer IPs for VPN traffic routing)."}},"tunnelSettings":{"type":"object","description":"Tunnel configuration of VPN connection. Passed through as-is.","readOnly":true},"createdBy":{"type":"string","description":"Service or <<glossary:principal>> that created VPN connection.","readOnly":true,"example":"rlax"},"createdAt":{"type":"string","description":"Timestamp of VPN connection creation in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-01T01:00:00Z"},"enabledAt":{"type":"string","description":"Timestamp of VPN connection enablement in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format.","readOnly":true,"example":"2024-01-02T01:00:00Z"},"customerGatewayIps":{"type":"array","minItems":0,"maxItems":1,"description":"Customer gateway IPs  (currently only one supported).","example":["21.32.1.1"],"items":{"type":"string","description":"Customer gateway IPs (currently only one supported)."}},"comments":{"type":"string","minLength":0,"maxLength":50,"description":"Comments for reference","example":"Production VPN connection"},"bgpRouting":{"type":"boolean","description":"If `true`, BGP routing is enabled.","example":true},"customerBgpAsn":{"type":"string","pattern":"^$|^[0-9]{1,10}$","description":"Customer BGP ASN.","example":"64512"},"customerSubnetIps":{"type":"array","description":"Customer subnet IPs in CIDR format.","items":{"type":"string","description":"Customer subnet IPs in CIDR format."}},"encryptionType":{"type":"string","description":"Type of encryption.","example":"preSharedKey"},"encryptionKeyResourceId":{"type":"string","pattern":"^/platform/tenantdata/v1/encryption-keys/[0-9]+$","description":"Resource URI of encryption key.","example":"/platform/tenantdata/v1/encryption-keys/123"},"enabledApps":{"type":"array","description":"List of Intelligent Risk Platform applications accessible via VPN connection.","example":["DATA_BRIDGE"],"items":{"type":"string","description":"Enabled applications"}},"vpnStatus":{"type":"string","description":"Status of VPN connection. \n\nVPN status determines status of assigned encryption key.\n\n- If `off`, the `status` of the encryption key is set to `AVAILABLE`.\n- If `on`, the `status` of the encryption key is set to `IN-USE`.","example":"on","enum":["off","on"]}}}},"securitySchemes":{"rms_bearer_token":{"type":"http","description":"Tenant-specific bearer token to make authorized requests with temporary life span.","scheme":"bearer","bearerFormat":"JWT"},"rms_api_key":{"type":"apiKey","name":"Authorization","description":"Tenant-specific api key to make authorized requests","in":"header"}}}}