{"openapi":"3.0.2","info":{"title":"Bulk Geohaz API","version":"2024.11.d"},"servers":[{"url":"https://{host}/platform/bulkgeohaz/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":[]}],"x-readme":{"explorer-enabled":false,"parameter-ordering":["header","path","query","body","form","cookie"],"samples-languages":["json","curl","python","java","csharp","node"],"proxy-enabled":true,"samples-enabled":true},"paths":{"/folders":{"post":{"tags":["Bulk Geohaz Folders"],"summary":"Create bulk geohaz folder","operationId":"createBulkGeohazFolder","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BulkGeohazFolderRequest"}],"discriminator":{"propertyName":"folderType","mapping":{"BULK_GEOHAZ":"#/components/schemas/BulkGeohazFolderRequest"}}}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BulkGeohazFiles"}],"discriminator":{"propertyName":"folderType","mapping":{"BULK_GEOHAZ":"#/components/schemas/BulkGeohazFiles"}}}}}},"400":{"$ref":"#/components/responses/400Response"},"401":{"$ref":"#/components/responses/401Response"},"403":{"$ref":"#/components/responses/403Response"},"404":{"$ref":"#/components/responses/404Response"},"405":{"$ref":"#/components/responses/405Response"},"500":{"$ref":"#/components/responses/500Response"}}}},"/jobs":{"post":{"tags":["Bulk Geohaz Jobs"],"summary":"Create bulk geohaz job","operationId":"createBulkGeohazjob","parameters":[{"in":"header","name":"x-rms-resource-group-id","description":"ID of <<glossary:resource group>>. Operation is assigned to this resource group's quota. See [Resource Groups](doc:resource-management)","schema":{"type":"string","format":"uuid","default":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkGeohazJobRequest"}}}},"responses":{"202":{"description":"Accepted. `BULK_GEOHAZ`  job created and accepted.","headers":{"Location":{"description":"URI of geocode job. Includes `jobId`.","schema":{"type":"string","format":"uri"}}}},"400":{"$ref":"#/components/responses/400Response"},"401":{"$ref":"#/components/responses/401Response"},"403":{"$ref":"#/components/responses/403Response"},"404":{"$ref":"#/components/responses/404Response"},"405":{"$ref":"#/components/responses/405Response"},"500":{"$ref":"#/components/responses/500Response"}}}},"/jobs/{jobId}":{"get":{"tags":["Bulk Geohaz Jobs"],"summary":"Get bulk geohaz job","operationId":"getBulkGeohazJob","parameters":[{"$ref":"#/components/parameters/JobIdParam"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"$ref":"#/components/responses/400Response"},"401":{"$ref":"#/components/responses/401Response"},"403":{"$ref":"#/components/responses/403Response"},"404":{"$ref":"#/components/responses/404Response"},"405":{"$ref":"#/components/responses/405Response"},"500":{"$ref":"#/components/responses/500Response"}}},"patch":{"tags":["Bulk Geohaz Jobs"],"summary":"Update bulk geohaz job","operationId":"updateBulkGeohazJob","parameters":[{"$ref":"#/components/parameters/JobIdParam"}],"requestBody":{"description":"Set of operations to perform against the Job Entity","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchJobOperationStatusValue"}}}},"responses":{"202":{"description":"LI-Bulk update accepted.","headers":{"Location":{"description":"location of the job with jobId","schema":{"type":"string","format":"uri"}}}},"400":{"$ref":"#/components/responses/400Response"},"401":{"$ref":"#/components/responses/401Response"},"403":{"$ref":"#/components/responses/403Response"},"404":{"$ref":"#/components/responses/404Response"},"405":{"$ref":"#/components/responses/405Response"},"422":{"$ref":"#/components/responses/422Response"},"500":{"$ref":"#/components/responses/500Response"}}}}},"components":{"parameters":{"JobIdParam":{"name":"jobId","in":"path","description":"ID of `BULK_GEOHAZ` job.","schema":{"type":"string","format":"uuid"},"required":true}},"schemas":{"LIBulkFolderProperties":{"type":"object","properties":{"fileExtension":{"type":"string","description":"File extension of uploaded flat file, e.g. `CSV`.","enum":["CSV"]},"fileCompressionType":{"type":"string","enum":["BZIP2","GZIP","LZ4","SNAPPY","DEFLATE","NONE"],"default":"NONE","description":"Type of file compression used for uploaded flat file:\n\n  |Type| Content Type|\n  |-----| ----------|\n  |`BZIP2` | `Content-Type: application/x-bzip2`|\n  |`GZIP` | `Content-Type: application/gzip`|\n  |`LZ4` | `Content-Type: application/x-lz4`|\n  |`SNAPPY` | `Content-Type: application/x-snappy`|\n  |`DEFLATE`| `Content-Type: application/deflate`|\n  |`NONE` | `Content-Type: text/csv`|"}}},"multiPartUploadDetails":{"type":"object","properties":{"uploadUrls":{"description":"URI of AWS bucket, a container for objects. URI includes security token, credential, and signature.","type":"array","items":{"type":"string","example":"https://host.amazonaws.com/xxx/li-bulk/xxx/input/file/xxx","format":"url"}}}},"BulkGeohazFiles":{"type":"object","properties":{"folderType":{"type":"string","description":"Type of import folder.","enum":["BULK_GEOHAZ"]},"folderId":{"$ref":"#/components/schemas/FolderId"},"uploadDetails":{"description":"List contains a single URL.\n\nMultiple files to be supported in a future release. The max file size is 5gb.","allOf":[{"$ref":"#/components/schemas/multiPartUploadDetails"}]}}},"BulkGeohazFolderRequest":{"allOf":[{"type":"object","properties":{"folderType":{"type":"string","description":"Type of import folder.","enum":["BULK_GEOHAZ"]}}},{"type":"object","properties":{"properties":{"$ref":"#/components/schemas/LIBulkFolderProperties"}}}]},"PatchJobOperationStatusValue":{"properties":{"status":{"type":"string","description":"Status of job.","enum":["CANCELLED"]},"priority":{"type":"string","description":"Priority of job.","enum":["VERYLOW","LOW","MEDIUM","HIGH","VERYHIGH"]}}},"BulkGeohazJobRequest":{"allOf":[{"type":"object","properties":{"settings":{"$ref":"#/components/schemas/BulkGeohazSettings"}}}]},"BulkGeohazSettings":{"type":"object","description":"Configuration for `BULK_GEOHAZ` job.","properties":{"folderId":{"$ref":"#/components/schemas/FolderId"},"delimiter":{"type":"string","description":"Text delimiter used to separate columns in uploaded <<glossary:flat file>>.","enum":["COMMA","SEMICOLON","TAB","TILDE"]},"jobName":{"type":"string","description":"Name of job."},"layers":{"type":"array","description":"List of data layers\n\nThis operation currently supports a single `geocode` data layer.","items":{"$ref":"#/components/schemas/Layer"},"uniqueItems":true,"maxItems":100}}},"Details":{"type":"object","properties":{"resources":{"type":"array","description":"List of <<glossary:resource URI>>s.","items":{"type":"string"}},"summary":{"type":"string","example":"BULK_GEOHAZ is completed successfully"}}},"Task":{"type":"object","properties":{"taskId":{"type":"integer","format":"int64","description":"ID of <<glossary:task>>.","example":1},"guid":{"type":"string","format":"uuid","description":"Unique ID of task.","example":"4206ee30-7abf-411d-982f-5be70103a8bb"},"jobId":{"type":"string","description":"ID of <<glossary:batch job>>.","example":18307979},"status":{"type":"string","description":"Status of task.","example":"FINISHED","enum":["CANCELLED","CANCELLING","CANCEL_REQUESTED","FAILED","FINISHED","PENDING","QUEUED","RUNNING"]},"submittedAt":{"type":"string","format":"date-time","description":"Time task was submitted in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`.","example":"2024-08-19T18:25:59.698Z"},"createdAt":{"type":"string","format":"date-time","description":"Time data job was started in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`.","example":"2024-08-19T18:25:58.056Z"},"name":{"type":"string","description":"Name of task.","example":"GEOCODING"},"percentComplete":{"type":"integer","format":"int32","description":"Percent of task completion.","example":100},"output":{"$ref":"#/components/schemas/TaskOutput"}}},"TaskOutput":{"type":"object","description":"List of error messages and logs.","properties":{"summary":{"type":"string","description":"Summary of task.","example":"14 locations of 14 geocoded successfully with geocode version 23.0"},"errors":{"type":"array","description":"List of error messages.","example":[],"items":{"type":"string"}},"log":{"type":"array","description":"List of task processing logs.","items":{"$ref":"#/components/schemas/OutputLog"}}}},"OutputLog":{"type":"object","properties":{"downloadLink":{"type":"string","description":"Pre-signed URL of <<glossary:Amazon S3 bucket>> from which the geocoded files can be downloaded.","example":"https://xxx.amazonaws.com/xxx/export/reports/xxx/PL_EXP_SUMMARY_ACC.pdf?X-Amz-Algorithm=xx&X-Amz-Date=xx&X-Amz-SignedHeaders=host&X-Amz-Expires=xxx-Amz-Credential=&X-Amz-Signature=xxx","format":"uri"},"downloadFileSize":{"type":"integer","format":"int64","example":298.1,"description":"Size of report."},"fileExtension":{"type":"string","description":"File extension of report. File extension depends on value specified in the Create Geohaz Folder request. One of `BZIP2`, `CSV`, `DEFLATE`, `GZIP`, `SNAPPY`","example":"csv"},"expirationDate":{"type":"string","format":"date-time","description":"Time that download URL expires in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`."},"messages":{"type":"array","description":"List of messages.","example":[],"items":{"type":"string"}}}},"JobMessage":{"type":"object","properties":{"message":{"type":"string","description":"Error message.","example":"Info text"},"type":{"type":"string","description":"Type of error message.","enum":["INFO","WARN","ERROR"]}}},"Job":{"allOf":[{"$ref":"#/components/schemas/JobSummary"},{"type":"object","properties":{"tasks":{"type":"array","description":"List of jobs.","items":{"$ref":"#/components/schemas/Task"}},"messages":{"type":"array","description":"List of messages.","items":{"$ref":"#/components/schemas/JobMessage"}}}}]},"JobSummary":{"type":"object","properties":{"jobId":{"type":"string","description":"ID of `BULK_GEOHAZ` job.","example":18307979},"userName":{"type":"string","format":"email","description":"Login of <<glossary:principal>> that created job, e.g. `user.name@company.com` or `SSO_user.name@company` for <<glossary:federated tenant>>s. Login strings are lowercase. See [Logins](principals).","example":"user.name@company.com"},"status":{"type":"string","description":"Status of job.","example":"FINISHED","enum":["CANCELLED","CANCELLING","CANCEL_REQUESTED","FAILED","FINISHED","PENDING","QUEUED","RUNNING"]},"submittedAt":{"type":"string","format":"date-time","description":"Time job was submitted in [ISO 8601](ref:https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`","example":"2024-08-19T18:25:58.060Z"},"startedAt":{"type":"string","format":"date-time","example":"2024-08-19T18:25:59Z","description":"Time job was started in [ISO 8601](ref:https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`"},"endedAt":{"type":"string","format":"date-time","example":"2024-08-19T18:29:47Z","description":"Time job was completed in [ISO 8601](ref:https://en.wikipedia.org/wiki/ISO_8601) format, e.g. `2020-01-01T00:00:00.000Z`"},"name":{"type":"string","description":"Name of job.","example":"workflow_name"},"type":{"type":"string","description":"Type of job. See [Platform Job](doc:platform-jobs).","example":"BULK_GEOHAZ"},"progress":{"type":"integer","format":"int32","description":"Percent of job completed.","example":100},"priority":{"type":"string","description":"Priority of job.","example":"medium","enum":["VERYLOW","LOW","MEDIUM","HIGH","VERYHIGH"]},"entitlement":{"type":"string","description":"Licensed Intelligent Risk Platform program. One of `RI-EXPOSUREIQ`, `RI-RISKMODELER`, `RI-TREATYIQ`, `UNDERWRITEIQ`","example":"RI-RISKMODELER"},"resourceGroupId":{"type":"string","format":"uuid","description":"ID of resource group.","example":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"details":{"type":"array","description":"Detailed information about job and child tasks.","items":{"$ref":"#/components/schemas/Details"}}}},"FolderId":{"type":"string","format":"uuid","description":"ID of `BULK_GEOHAZ` folder, a temporary storage location on Amazon S3. \n\nA flat file of exposure data should already be uploaded to this folder.","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"Layer":{"type":"object","properties":{"name":{"type":"string","description":"Name of <<glossary:data layer>>. This operation currently supports the `geocode` data layer only.","example":"geocode"},"version":{"type":"string","description":"Version of data layer.\n\nFor list of geocode layer versions, see [Geocoding Layers](doc:geocoding-layers).","example":"latest","enum":["18.0","18.1","21.0","22.0","23.0","24.0","25.0","latest"]},"options":{"description":"Layer-specific job configurations.","type":"object","properties":{"aggregateTrigger":{"type":"boolean","description":"If `false`, returns coordinates for lower resolution matches. If `true`, sets coordinates to (0.0, 0.0) in lower resolutions."},"forceCountryLevel":{"type":"boolean","description":"If `false`, locations are skipped if the only properties specified are the `countryCode` and `countryScheme`. If `true`, locations are geocoded whenever the `countryCode` and `countrySchemes` properties are valid, and the `geoResolutionCode` (match level) is automatically set to 14 (Country)."},"licenseType":{"type":"integer","description":"Licensed <<glossary:geocoding engine>> used to geocode exposures. If `0` uses RL geocoding engine. If `1`, uses HD geocoding engine. See [Geocoding Layers](doc:geocoding-layers).","enum":[0,1]},"skipPrevGeocoded":{"type":"boolean","description":"If `true`, skips locations with a `geoResolutionCode` that is greater than 0 (None)."}}}}},"ErrorItem":{"type":"object","properties":{"code":{"type":"string","example":"ERR_XXXX","description":"Error codes:\n\n|   Code   | Description |\n|----------|-------------|\n| ERR_4010 | Forbidden. |\n| ERR_4030 | Unauthorized. |\n| ERR_4040 | Not found. |\n| ERR_4050 | Method not allowed. |\n| ERR_4060 | Not acceptable. |\n| ERR_4080 | Request timeout. |\n| ERR_4130 | Request too large. |\n| ERR_4150 | Unsupported media type. |\n| ERR_4220 | Unprocessable entity. |\n| ERR_4290 | Quota exceeded. |\n| ERR_5000 | Internal server error. |\n| ERR_5040 | Gateway timeout. |"},"message":{"type":"string","example":"Error message"}}},"ErrorOutput":{"type":"object","properties":{"contextId":{"type":"string","example":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"additionalInfo":{"type":"string","example":""},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorItem"}}}}},"responses":{"400Response":{"description":"The request was unacceptable, likely due to missing a required input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}},"401Response":{"description":"No valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}},"403Response":{"description":"Forbidden: Access to this resource / action is denied or not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}},"404Response":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}},"405Response":{"description":"Method not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}},"422Response":{"description":"Unprocessable Entity: The job is in unprocessable state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}},"500Response":{"description":"Something went wrong on our end (this happens rarely)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOutput"}}}}},"securitySchemes":{"rms_bearer_token":{"type":"http","description":"RMS tenant specific bearer token to make authorized requests with temporary life span","scheme":"bearer","bearerFormat":"JWT"},"rms_api_key":{"type":"apiKey","name":"Authorization","description":"RMS tenant specific api key to make authorized requests","in":"header"}}}}