{
  "openapi": "3.1.0",
  "info": {
    "version": "v1",
    "title": "Locations API",
    "description": "Service to manage location information for HPE GreenLake platform.",
    "contact": {},
    "license": {
      "name": "HPE License",
      "url": "https://www.hpe.com/us/en/software/licensing.html"
    }
  },
  "servers": [
    {
      "url": "https://global.api.greenlake.hpe.com"
    }
  ],
  "security": [
    {
      "Bearer": []
    }
  ],
  "paths": {
    "/locations/v1/locations": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Lists all locations",
        "operationId": "listAllLocations",
        "description": "Retrieve location information for all locations.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The zero-based resource offset to start the response from. A negative or non-integer value returns 400.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of results to be returned. A value below 1, above 2000 or that is not an integer returns 400.",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 2000,
              "default": 100
            }
          },
          {
            "name": "workspaceIds",
            "in": "query",
            "description": "Optional. Comma-separated workspace ids to restrict the consolidated list to, for an MSP or organization parent workspace. Ids outside the caller's scope are ignored; an empty intersection returns no items. For a non-parent workspace only its own id matches. Ignored unless the consolidated view is enabled for the caller.",
            "required": false,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Limit the resources operated on by an endpoint or when used with a multiple-GET endpoint, return only the subset of resources that match the filter. The filter grammar is a subset of OData 4.0. <br><br>Supported properties and operators: <ul><li>`name` with `contains`, for example `contains(name, 'test')`. The match is not case-sensitive.</li><li>`city` and `country` with `eq`, for example `city eq 'Austin'`. The match is not case-sensitive, and a location matches when any of its addresses matches.</li><li>`validated` and `validationExpired` with `eq true` or `eq false`.</li></ul>Only these combinations are supported, using `and`: `city` with `country` (for example `country eq 'United States' and city eq 'Austin'`, which returns locations with an address that matches both), and `validated` with `validationExpired` (for example `validated eq false and validationExpired eq false` returns locations that were never validated). `or`, `not`, other operators, other combinations and a property given more than once return 400. <br><br>**NOTE:** The filter query parameter must use [URL encoding](https://en.wikipedia.org/wiki/URL_encoding). Most clients do this automatically with inputs provided to them specifically as query parameters. Encoding must be done manually for any query parameters provided as part of the URL. The reserved characters `!` `#` `$` `&` `'` `(` `)` `*` `+` `,` `/` `:` `;` `=` `?` `@` `[` `]` must be encoded with percent encoded equivalents. <br><br>\n",
            "schema": {
              "type": "string"
            },
            "examples": {
              "contains": {
                "summary": "Filter by location name.",
                "description": "Return locations that contain a name that matches the one provided.",
                "value": "contains(name, 'test')"
              },
              "eq": {
                "summary": "Filter by location city.",
                "description": "Return locations belonging to the city that matches the one provided.",
                "value": "city eq 'test city'"
              },
              "equals": {
                "summary": "Filter by location country.",
                "description": "Return locations belonging to the country that matches the one provided.",
                "value": "country eq 'test country'"
              },
              "cityAndCountry": {
                "summary": "Filter by location city and country.",
                "description": "Return locations with an address in the city and country provided.",
                "value": "country eq 'test country' and city eq 'test city'"
              },
              "validationExpired": {
                "summary": "Filter by expired validation.",
                "description": "Return locations whose validation cycle has lapsed and need re-validation.",
                "value": "validationExpired eq true"
              },
              "neverValidated": {
                "summary": "Filter locations that were never validated.",
                "description": "Return locations that are neither validated nor expired.",
                "value": "validated eq false and validationExpired eq false"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "$ref": "#/components/schemas/server.ListLocationNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {}
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "location"
      },
      "post": {
        "tags": [
          "Locations"
        ],
        "summary": "Create a Location",
        "operationId": "CreateLocation",
        "description": "Create a location and store its associated information.",
        "requestBody": {
          "description": "Location Information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/server.CreateLocationNBRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "type"
                  ],
                  "$ref": "#/components/schemas/server.UpdateLocationNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Duplicate location name found. Response includes existingLocationId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "location"
      }
    },
    "/locations/v1/locations/{id}": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Retrieve a location",
        "operationId": "getLocationBy",
        "description": "Return information for a location specified by a location ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the location. For example, `945e70ec-b043-4cad-9ed0-069c06fdb8af`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "$ref": "#/components/schemas/server.GetLocationNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Locations"
        ],
        "summary": "Delete a location",
        "operationId": "deleteLocation",
        "description": "Delete a location by providing a specific location ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier for the location. For example, `945e70ec-b043-4cad-9ed0-069c06fdb8af`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Locations"
        ],
        "summary": "Update a location",
        "operationId": "UpdateLocation",
        "description": "Update a location's information by specifying its location ID. Only include the fields that need to be updated in the request body. Fields that are not included in the request body will remain unchanged.\n<br><br>**Note:** The `name` and `locationType` fields are mandatory and cannot be set to empty or invalid values.\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier for the location.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Updated Location Information",
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/server.UpdateLocationNBRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "type"
                  ],
                  "$ref": "#/components/schemas/server.UpdateLocationNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - The location name or locationType is empty or invalid. Both fields are mandatory and must contain valid values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Duplicate location name found. Response includes existingLocationId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "location"
      }
    },
    "/locations/v1/locations/update/{id}": {
      "patch": {
        "tags": [
          "Locations"
        ],
        "summary": "Manage a location",
        "operationId": "manageLocation",
        "description": "Manage the location information for a location specified by its location ID. Provide information in the request body schema to create, update, or delete the location's address, contact, or location details. Only include the fields that need to be modified in the request body. Fields that are not included will remain unchanged.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier for the location. For example, `945e70ec-b043-4cad-9ed0-069c06fdb8af`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/server.UpdateLocationPatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "type"
                  ],
                  "$ref": "#/components/schemas/server.UpdateLocationNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Duplicate location name found. Response includes existingLocationId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      }
    },
    "/locations/v1/locations/tags": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Get tags for a workspace",
        "operationId": "listAllTags",
        "description": "Retrieve tag information for your workspace.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The zero-based resource offset to start the response from. A negative or non-integer value returns 400.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of results to be returned. A value below 1, above 2000 or that is not an integer returns 400.",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 2000,
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "$ref": "#/components/schemas/server.ListLocationTagsNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {}
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Locations"
        ],
        "summary": "Create or delete a tag",
        "operationId": "UpdateTags",
        "description": "Use this API to create or delete a tag. In the request body, provide: <ul><li>The tag name and tag value in the appropriate array to create (`createTags`) or delete (`deleteTags`) tags as needed.</li><li>The location ID.</li></ul> \n",
        "requestBody": {
          "description": "Update tags for a location",
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/server.UpdateLocationTagsNBRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "type"
                  ],
                  "$ref": "#/components/schemas/server.UpdateLocationTagsNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      }
    },
    "/locations/v1/locations/tags/{id}": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Retrieves tags for given a location",
        "operationId": "listTagsById",
        "description": "Return a listing of all tag names and tag values for a given location. If a location has no tags, only the location ID and location name are returned.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the location. For example, `945e70ec-b043-4cad-9ed0-069c06fdb8af`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "$ref": "#/components/schemas/server.GetLocationTagsNBResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      }
    },
    "/locations/v1/locations/address/revgeocode": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Retrieve location from latitude and longitude.",
        "operationId": "reverseGeocode",
        "description": "Geolocate a location by providing the longitude and latitude. Optionally, provide an ISO language code to return the information in a language different from the default (English).",
        "parameters": [
          {
            "name": "latitude",
            "in": "query",
            "description": "Provide a latitude coordinate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "description": "Provide a longitude coordinate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "language",
            "in": "query",
            "description": "(Optional) Specify a language code to return the location information in that language. The default is English.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "equals": {
                "summary": "Language",
                "description": "Return the location description in Simplified Chinese.",
                "value": "zh-CN"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/server.AddressItem"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {}
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      }
    },
    "/locations/v1/locations/locations-csv-upload": {
      "post": {
        "tags": [
          "Locations"
        ],
        "summary": "Create locations using CSV file",
        "operationId": "CreateLocationCsv",
        "description": "Create locations using a CSV file and store the associated information.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "array",
                "description": "CSV file contents.",
                "items": {
                  "$ref": "#/components/schemas/server.csvFile"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "source": "curl -i -X POST \\\n  'https://global.api.greenlake.hpe.com/locations/v1/locations/locations-csv-upload' \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -F 'file=@file.csv'\n"
          }
        ],
        "responses": {
          "202": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/server.AsyncOperationStatus"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        }
      }
    },
    "/locations/v1/locations/async-operation/{id}": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Retrieve a CSV upload status",
        "operationId": "getCsvUploadStatus",
        "description": "Return status information for a CSV location upload by using the async location ID as a parameter.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the async operation location ID. For example, `945e70ec-b043-4cad-9ed0-069c06fdb8af`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "$ref": "#/components/schemas/server.AsyncOperationStatus"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/apiError"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "location"
      }
    },
    "/locations/v1/locations/status": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Locations Management service status",
        "operationId": "getLocationServiceStatusV1",
        "description": "Get Locations Management service status",
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Bearer": {
        "description": "Personal access token issued by the HPE GreenLake platform.",
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "schemas": {
      "db.AddressType": {
        "type": "string",
        "enum": [
          "street",
          "shipping_receiving"
        ],
        "x-enum-varnames": [
          "AddressTypeStreet",
          "AddressTypeShippingReceiving"
        ]
      },
      "db.ContactType": {
        "type": "string",
        "enum": [
          "primary",
          "shipping_receiving",
          "security",
          "operations"
        ],
        "x-enum-varnames": [
          "ContactTypePrimary",
          "ContactTypeShippingReceiving",
          "ContactTypeSecurity",
          "ContactTypeOperations"
        ]
      },
      "db.LocationType": {
        "type": "string",
        "enum": [
          "building"
        ],
        "x-enum-varnames": [
          "LocationTypeBuilding"
        ]
      },
      "db.ValidationCycle": {
        "type": "string",
        "enum": [
          "",
          "6",
          "12",
          "18"
        ],
        "x-enum-varnames": [
          "ValidationCycleValue0",
          "ValidationCycle6",
          "ValidationCycle12",
          "ValidationCycle18"
        ]
      },
      "db.csvUploadStatus": {
        "type": "string",
        "enum": [
          "INITIALIZED",
          "IN_PROGRESS",
          "SUCCEEDED",
          "FAILED"
        ],
        "x-enum-varnames": [
          "INITIALIZED",
          "IN_PROGRESS",
          "SUCCEEDED",
          "FAILED"
        ]
      },
      "server.CreateAddressNBRequest": {
        "required": [
          "city",
          "country",
          "postalCode",
          "state",
          "streetAddress",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the address."
          },
          "city": {
            "maxLength": 60,
            "type": "string",
            "description": "The location's city."
          },
          "country": {
            "maxLength": 100,
            "type": "string",
            "description": "The location's country."
          },
          "locationId": {
            "type": "string",
            "description": "The unique identifier of the location."
          },
          "postalCode": {
            "maxLength": 20,
            "type": "string",
            "description": "The location's postal code."
          },
          "state": {
            "maxLength": 60,
            "type": "string",
            "description": "The location's state or region."
          },
          "streetAddress": {
            "maxLength": 100,
            "type": "string",
            "description": "The location's street address."
          },
          "streetAddress2": {
            "type": "string",
            "description": "The location's street address."
          },
          "type": {
            "type": "string",
            "enum": [
              "shipping_receiving"
            ],
            "description": "Only addresses of type “shipping_receiving” can be added during an add operation."
          }
        }
      },
      "server.CreateContactsNBRequest": {
        "required": [
          "email",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 100,
            "type": "string",
            "description": "The email address associated with the contact."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the contact."
          },
          "locationId": {
            "type": "string",
            "description": "The unique identifier of the location."
          },
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "The name of the contact. For API-created locations with a non-GLP email, append \"NONGLP\" to the name (e.g., \"John Doe NONGLP\")."
          },
          "phoneExtension": {
            "maxLength": 4,
            "type": "string",
            "description": "The phone extension of the contact. Required only when the Phone Number is provided."
          },
          "phoneNumber": {
            "maxLength": 20,
            "type": "string",
            "description": "The phone number of the contact, [+][country code][phone number] format (e.g., `+14155552671`), without spaces or separators."
          },
          "type": {
            "description": "The type of contact.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.ContactType"
              }
            ]
          }
        }
      },
      "server.CreateLocationNBRequest": {
        "required": [
          "addresses",
          "contacts",
          "name",
          "locationType"
        ],
        "type": "object",
        "properties": {
          "addresses": {
            "type": "array",
            "minItems": 1,
            "description": "Exactly one address of type street is required; one address of type shipping_receiving is optional.",
            "items": {
              "$ref": "#/components/schemas/server.CreateAddressNBRequest"
            }
          },
          "contacts": {
            "type": "array",
            "description": "Locations must have one primary contact but can have more than one of the other contact types.",
            "items": {
              "$ref": "#/components/schemas/server.CreateContactsNBRequest"
            }
          },
          "description": {
            "type": "string",
            "description": "A long description of the location."
          },
          "expiredAt": {
            "type": "string",
            "description": "The date the location expired."
          },
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "Provide a descriptive name for the location."
          },
          "locationType": {
            "description": "The type of the location.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.LocationType"
              }
            ]
          },
          "validated": {
            "type": "boolean",
            "default": true,
            "description": "Boolean confirming whether the location has been validated or not."
          },
          "validatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the location was validated, as an RFC 3339 timestamp in UTC."
          },
          "validatedByEmail": {
            "type": "string",
            "description": "Email address of the workspace user that validated the location."
          },
          "validatedByName": {
            "type": "string",
            "description": "The name of the workspace user that validated the location."
          },
          "validationCycle": {
            "description": "The number of months that the location remains validated, as a string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.ValidationCycle"
              }
            ]
          },
          "validationExpired": {
            "type": "boolean",
            "description": "A boolean confirming whether the location validation has expired or not.",
            "default": false
          }
        }
      },
      "server.GetAddressNBResponse": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "The location's city."
          },
          "country": {
            "type": "string",
            "description": "The location's country."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "A unique identifier for the address."
          },
          "postalCode": {
            "type": "string",
            "description": "The locations postal code."
          },
          "state": {
            "type": "string",
            "description": "The location's state or region."
          },
          "streetAddress": {
            "type": "string",
            "description": "The location's address."
          },
          "streetAddress2": {
            "type": [
              "string",
              "null"
            ],
            "description": "The location's address."
          },
          "type": {
            "description": "The type of address.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.AddressType"
              }
            ]
          },
          "lat": {
            "type": "string",
            "description": "Latitude coordinate of the address."
          },
          "lng": {
            "type": "string",
            "description": "Longitude coordinate of the address."
          }
        }
      },
      "server.GetContactNBResponse": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the contact."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the contact."
          },
          "name": {
            "type": "string",
            "description": "The name of the contact."
          },
          "phoneExtension": {
            "type": [
              "string",
              "null"
            ],
            "description": "The phone extension of the contact. Required only when the Phone Number is provided."
          },
          "phoneNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "The phone number of the contact, [+][country code][phone number] format (e.g., `+14155552671`), without spaces or separators."
          },
          "type": {
            "$ref": "#/components/schemas/db.ContactType"
          }
        }
      },
      "server.LocationWithNBAddress": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "city": {
            "type": "string",
            "description": "The location's city."
          },
          "country": {
            "type": "string",
            "description": "The location's country."
          },
          "expiredAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The date the location expired."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the location."
          },
          "name": {
            "type": "string",
            "description": "The name of the location."
          },
          "validated": {
            "type": "boolean",
            "default": true,
            "description": "Boolean confirming whether the location has been validated or not."
          },
          "validatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "The date and time the location was validated, as an RFC 3339 timestamp in UTC."
          },
          "validatedByEmail": {
            "type": "string",
            "description": "Email address of the workspace user that validated the location."
          },
          "validatedByName": {
            "type": "string",
            "description": "The name of the workspace user that validated the location."
          },
          "validationCycle": {
            "description": "The number of months that the location remains validated, as a string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.ValidationCycle"
              }
            ]
          },
          "validationExpired": {
            "type": "boolean",
            "description": "A boolean confirming whether the location validation has expired or not.",
            "default": false
          },
          "lat": {
            "type": "string",
            "description": "Latitude coordinate of the location."
          },
          "lng": {
            "type": "string",
            "description": "Longitude coordinate of the location."
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "description": "Tags associated with the location.",
            "items": {
              "$ref": "#/components/schemas/server.GetTags"
            }
          }
        }
      },
      "server.UpdateAddressNBRequest": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the address."
          },
          "city": {
            "maxLength": 60,
            "type": "string",
            "description": "The city the location is in."
          },
          "country": {
            "maxLength": 100,
            "type": "string",
            "description": "The country the location is in."
          },
          "locationId": {
            "type": "string",
            "description": "The unique identifier of the location."
          },
          "postalCode": {
            "maxLength": 20,
            "type": "string",
            "description": "The location's postal code."
          },
          "state": {
            "maxLength": 60,
            "type": "string",
            "description": "The location's state."
          },
          "streetAddress": {
            "maxLength": 100,
            "type": "string",
            "description": "The location's address."
          },
          "streetAddress2": {
            "type": "string",
            "description": "The location's address."
          },
          "type": {
            "type": "string",
            "enum": [
              "street",
              "shipping_receiving"
            ],
            "description": "Must match the existing address type. The address type cannot be changed during an update operation."
          }
        }
      },
      "server.UpdateContactsNBRequest": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 100,
            "type": "string",
            "description": "The email address of the contact."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the contact."
          },
          "locationId": {
            "type": "string",
            "description": "The location ID related to the contact."
          },
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "The name of the contact."
          },
          "phoneExtension": {
            "maxLength": 4,
            "type": "string",
            "description": "The phone extension of the contact. Required only when the Phone Number is provided."
          },
          "phoneNumber": {
            "maxLength": 20,
            "type": "string",
            "description": "The phone number of the contact, [+][country code][phone number] format (e.g., `+14155552671`), without spaces or separators."
          },
          "type": {
            "$ref": "#/components/schemas/db.ContactType"
          }
        }
      },
      "server.UpdateLocationNBRequest": {
        "type": "object",
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.UpdateAddressNBRequest"
            }
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.UpdateContactsNBRequest"
            }
          },
          "description": {
            "type": "string",
            "description": "A long description of the location."
          },
          "expiredAt": {
            "type": "string",
            "description": "The date the location expired."
          },
          "name": {
            "maxLength": 100,
            "description": "The name of location.",
            "type": "string"
          },
          "locationType": {
            "description": "Type of location.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.LocationType"
              }
            ]
          },
          "validated": {
            "type": "boolean",
            "default": true,
            "description": "Boolean confirming whether the location has been validated or not."
          },
          "validatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the location was validated, as an RFC 3339 timestamp in UTC."
          },
          "validatedByEmail": {
            "type": "string",
            "description": "Email address of the workspace user that validated the location."
          },
          "validatedByName": {
            "type": "string",
            "description": "The name of the workspace user that validated the location."
          },
          "validationCycle": {
            "description": "The number of months that the location remains validated, as a string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.ValidationCycle"
              }
            ]
          },
          "validationExpired": {
            "type": "boolean",
            "description": "A boolean confirming whether the location validation has expired or not.",
            "default": false
          }
        }
      },
      "server.UpdateLocationNBResponse": {
        "type": "object",
        "required": [
          "id",
          "type",
          "createdAt",
          "updatedAt",
          "generation"
        ],
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.GetAddressNBResponse"
            }
          },
          "contacts": {
            "type": "array",
            "description": "Locations must have one primary contact but can have more than one of the other contact types.",
            "items": {
              "$ref": "#/components/schemas/server.GetContactNBResponse"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the location."
          },
          "name": {
            "type": "string",
            "description": "The name of the location."
          },
          "locationType": {
            "description": "Type of location.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.LocationType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time the location was created."
          },
          "description": {
            "type": "string",
            "description": "A long descriptions of the location."
          },
          "expiredAt": {
            "type": "string",
            "description": "The date and time the location expired."
          },
          "generation": {
            "type": "integer",
            "description": "Monotonically increasing update counter."
          },
          "type": {
            "type": "string",
            "description": "The type of the resource.",
            "const": "locations/external-service"
          },
          "updatedAt": {
            "type": "string",
            "description": "Time of the last update to the location."
          },
          "validated": {
            "type": "boolean",
            "default": true,
            "description": "Boolean confirming whether the location has been validated or not."
          },
          "validatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the location was validated, as an RFC 3339 timestamp in UTC."
          },
          "validatedByEmail": {
            "type": "string",
            "description": "Email address of the workspace user that validated the location."
          },
          "validatedByName": {
            "type": "string",
            "description": "The name of the workspace user that validated the location."
          },
          "validationCycle": {
            "description": "The number of months that the location remains validated, as a string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.ValidationCycle"
              }
            ]
          },
          "validationExpired": {
            "type": "boolean",
            "description": "A boolean confirming whether the location validation has expired or not.",
            "default": false
          }
        }
      },
      "server.ListLocationNBResponse": {
        "type": "object",
        "required": [
          "items",
          "count",
          "offset"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.LocationWithNBAddress"
            }
          },
          "count": {
            "type": "integer",
            "description": "Number of items returned"
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based resource offset"
          },
          "total": {
            "type": "integer",
            "description": "Total number of items in the collection that match the filter query, if one was provided in the request."
          }
        }
      },
      "server.GetLocationNBResponse": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.GetAddressNBResponse"
            }
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.GetContactNBResponse"
            }
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A long description of the location."
          },
          "expiredAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The date the location expired."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier for the location."
          },
          "name": {
            "type": "string",
            "description": "The name of the location."
          },
          "locationType": {
            "description": "Type of location.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.LocationType"
              }
            ]
          },
          "validated": {
            "type": "boolean",
            "default": true,
            "description": "Boolean confirming whether the location has been validated or not."
          },
          "validatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "The date and time the location was validated, as an RFC 3339 timestamp in UTC."
          },
          "validatedByEmail": {
            "type": "string",
            "description": "Email address of the workspace user that validated the location."
          },
          "validatedByName": {
            "type": "string",
            "description": "The name of the workspace user that validated the location."
          },
          "validationCycle": {
            "description": "The number of months that the location remains validated, as a string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.ValidationCycle"
              }
            ]
          },
          "validationExpired": {
            "type": "boolean",
            "description": "A boolean confirming whether the location validation has expired or not.",
            "default": false
          }
        }
      },
      "server.GetLocationTagsNBResponse": {
        "type": "object",
        "required": [
          "locationId",
          "locationName"
        ],
        "properties": {
          "tags": {
            "type": "array",
            "description": "An array of tag names and values. The array is empty if the location has no associated tags.",
            "items": {
              "$ref": "#/components/schemas/server.GetTags"
            }
          },
          "locationId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier for the location."
          },
          "locationName": {
            "type": "string",
            "description": "The name of the location."
          }
        }
      },
      "server.GetTags": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the tag."
          },
          "name": {
            "type": "string",
            "description": "The tag name."
          },
          "value": {
            "type": "string",
            "description": "The tag value."
          }
        }
      },
      "server.ListLocationTagsNBResponse": {
        "type": "object",
        "required": [
          "items",
          "count",
          "offset"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/server.LocationTags"
            }
          },
          "count": {
            "type": "integer",
            "description": "The number of items returned."
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based resource offset"
          },
          "total": {
            "type": "integer",
            "description": "The total number of items in the collection that match the filter query, if one was provided in the request."
          }
        }
      },
      "server.LocationTags": {
        "type": "object",
        "required": [
          "name",
          "value",
          "createdAt"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The tag name."
          },
          "value": {
            "type": "string",
            "description": "The tag value."
          },
          "createdAt": {
            "type": "string",
            "description": "The date the location was created."
          }
        }
      },
      "server.UpdateLocationTagsNBRequest": {
        "type": "object",
        "properties": {
          "createTags": {
            "type": "array",
            "description": "An array of key-value pairs to create new tags.",
            "items": {
              "$ref": "#/components/schemas/server.GetTags"
            }
          },
          "deleteTags": {
            "type": "array",
            "description": "An array of key-value pairs to delete existing tags.",
            "items": {
              "$ref": "#/components/schemas/server.GetTags"
            }
          },
          "locationId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the location."
          }
        }
      },
      "server.UpdateLocationTagsNBResponse": {
        "type": "object",
        "required": [
          "id",
          "type",
          "createdAt",
          "updatedAt",
          "generation"
        ],
        "properties": {
          "createTags": {
            "type": "array",
            "description": "Location Tags to be created",
            "items": {
              "$ref": "#/components/schemas/server.GetTags"
            }
          },
          "deleteTags": {
            "type": "array",
            "description": "Location Tags to be deleted",
            "items": {
              "$ref": "#/components/schemas/server.GetTags"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the tag."
          },
          "type": {
            "type": "string",
            "description": "The type of the resource.",
            "const": "locations/external-service"
          },
          "generation": {
            "type": "integer",
            "description": "Monotonically increasing update counter."
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time the tag was created."
          },
          "updatedAt": {
            "type": "string",
            "description": "Date and time of the last update to the tag."
          }
        }
      },
      "server.UpdateLocationPatchRequest": {
        "type": "object",
        "properties": {
          "addresses": {
            "$ref": "#/components/schemas/server.UpdateAddressesPatchRequest"
          },
          "contacts": {
            "$ref": "#/components/schemas/server.UpdateContactsPatchRequest"
          },
          "locationDetails": {
            "$ref": "#/components/schemas/server.LocationDetails"
          }
        }
      },
      "server.UpdateAddressesPatchRequest": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "Add new location address information.",
            "items": {
              "$ref": "#/components/schemas/server.CreateAddressNBRequest"
            }
          },
          "delete": {
            "type": "array",
            "description": "Delete location address information by providing the address ID (UUID). Note that \"street\" type addresses cannot be deleted.",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "update": {
            "type": "array",
            "description": "Update location address information.",
            "items": {
              "$ref": "#/components/schemas/server.UpdateAddressNBRequest"
            }
          }
        }
      },
      "server.UpdateContactsPatchRequest": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "description": "Add location contact information.",
            "items": {
              "$ref": "#/components/schemas/server.CreateContactsNBRequest"
            }
          },
          "delete": {
            "type": "array",
            "description": "Delete location contact information.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "server.LocationDetails": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A description of the location."
          },
          "expiredAt": {
            "type": "string",
            "description": "The date and time the location expired."
          },
          "locationType": {
            "$ref": "#/components/schemas/db.LocationType"
          },
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "The name of the location."
          },
          "validated": {
            "type": "boolean",
            "description": "A boolean confirming whether the location has been validated or not."
          },
          "validatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the location was validated, as an RFC 3339 timestamp in UTC."
          },
          "validatedByEmail": {
            "type": "string",
            "description": "The email address of the workspace user that validated the location."
          },
          "validatedByName": {
            "type": "string",
            "description": "The name of the workspace user that validated the location."
          },
          "validationCycle": {
            "$ref": "#/components/schemas/db.ValidationCycle"
          },
          "validationExpired": {
            "type": "boolean"
          }
        }
      },
      "server.AddressItem": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Full address label."
          },
          "countryCode": {
            "type": "string",
            "description": "ISO country code."
          },
          "countryName": {
            "type": "string",
            "description": "Country name."
          },
          "stateCode": {
            "type": "string",
            "description": "State or province code."
          },
          "state": {
            "type": "string",
            "description": "State or province name."
          },
          "county": {
            "type": "string",
            "description": "County name."
          },
          "city": {
            "type": "string",
            "description": "City name."
          },
          "street": {
            "type": "string",
            "description": "Street address."
          },
          "postalCode": {
            "type": "string",
            "description": "Postal or ZIP code."
          },
          "lat": {
            "type": "number",
            "format": "double",
            "description": "Latitude coordinate."
          },
          "lng": {
            "type": "number",
            "format": "double",
            "description": "Longitude coordinate."
          }
        }
      },
      "apiError": {
        "type": "object",
        "required": [
          "errorCode",
          "message",
          "debugId",
          "httpStatusCode"
        ],
        "properties": {
          "httpStatusCode": {
            "type": "integer",
            "description": "HTTP equivalent status code."
          },
          "errorCode": {
            "type": "string",
            "description": "Unique error code identifier (e.g., HPE_GL_LM_BAD_REQUEST)."
          },
          "message": {
            "type": "string",
            "description": "User-friendly error message."
          },
          "debugId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the instance of this error for debugging purposes."
          },
          "errorDetails": {
            "type": "array",
            "description": "Additional details about the error.",
            "items": {
              "$ref": "#/components/schemas/apiErrorDetail"
            }
          }
        }
      },
      "apiErrorDetail": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of error detail (e.g., hpe.greenlake.metadata, or hpe.greenlake.bad_request for an invalid query parameter)."
          },
          "source": {
            "type": "string",
            "description": "Source of the error (e.g., hpe.greenlake.lm)."
          },
          "metadata": {
            "type": "object",
            "description": "Additional metadata about the error.",
            "properties": {
              "error": {
                "type": "string",
                "description": "Detailed error message."
              }
            }
          },
          "issues": {
            "type": "array",
            "description": "Present when type is hpe.greenlake.bad_request. One entry for each invalid part of the request.",
            "items": {
              "type": "object",
              "required": [
                "source",
                "subject"
              ],
              "properties": {
                "source": {
                  "type": "string",
                  "description": "The part of the request with the issue, for example query.parameter."
                },
                "subject": {
                  "type": "string",
                  "description": "The name of the invalid item, for example limit."
                },
                "description": {
                  "type": "string",
                  "description": "What is wrong and how to correct it."
                }
              }
            }
          }
        }
      },
      "server.CreateListLocationResponse": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer"
          },
          "succeededCount": {
            "type": "integer",
            "description": "Number of locations created successfully."
          },
          "failedCount": {
            "type": "integer",
            "description": "The number of failed location creations."
          },
          "failedRecords": {
            "items": {
              "$ref": "#/components/schemas/server.FailedCreateRecord"
            },
            "type": "array"
          },
          "succeededRecords": {
            "items": {
              "$ref": "#/components/schemas/server.SuccessCreateRecord"
            },
            "type": "array"
          },
          "errorMessage": {
            "type": "string"
          }
        }
      },
      "server.FailedCreateRecord": {
        "properties": {
          "error": {
            "$ref": "#/components/schemas/server.ErrorResponse"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "server.SuccessCreateRecord": {
        "properties": {
          "id": {
            "type": "string",
            "description": "The location ID created from a CSV upload."
          },
          "name": {
            "type": "string",
            "description": "The location name created from a CSV upload."
          }
        },
        "type": "object"
      },
      "server.ErrorResponse": {
        "properties": {
          "message": {
            "type": "string"
          },
          "statusCode": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "server.AsyncOperationStatus": {
        "type": "object",
        "required": [
          "id",
          "result",
          "type"
        ],
        "properties": {
          "status": {
            "description": "The status of the CSV upload operation.",
            "allOf": [
              {
                "$ref": "#/components/schemas/db.csvUploadStatus"
              }
            ]
          },
          "startedAt": {
            "type": "string",
            "description": "The date and time the CSV upload operation started."
          },
          "endedAt": {
            "type": "string",
            "description": "The date and time the CSV upload operation ended."
          },
          "progressPercent": {
            "type": "integer",
            "description": "Progress percentage of the CSV upload operation."
          },
          "suggestedPollingIntervalSeconds": {
            "type": "integer",
            "description": "The polling interval of the CSV upload operation."
          },
          "timeoutMinutes": {
            "type": "integer"
          },
          "result": {
            "type": "object",
            "$ref": "#/components/schemas/server.CreateListLocationResponse"
          },
          "id": {
            "type": "string",
            "description": "CSV upload operation generated ID."
          },
          "type": {
            "type": "string",
            "description": "The type of the resource.",
            "const": "locations/asyncOperation"
          }
        }
      },
      "server.csvFile": {
        "type": "object",
        "required": [
          "Location Name(Required)",
          "Street Address(Required)",
          "City(Required)",
          "State/Province(Required)",
          "Country(Required)",
          "Zip/Postal Code(Required)",
          "Primary Contact Email(Required)"
        ],
        "properties": {
          "Location Name(Required)": {
            "type": "string",
            "description": "The name of the location to be created."
          },
          "Street Address(Required)": {
            "type": "string",
            "description": "The street address of the location to be created."
          },
          "City(Required)": {
            "type": "string",
            "description": "The city of the location to be created."
          },
          "State/Province(Required)": {
            "type": "string",
            "description": "The state of the location to be created."
          },
          "Country(Required)": {
            "type": "string",
            "description": "The country of the location to be created."
          },
          "Zip/Postal Code(Required)": {
            "type": "string",
            "description": "The postal code of the location to be created."
          },
          "Primary Contact Email(Required)": {
            "type": "string",
            "description": "The email of the primary contact."
          },
          "First Name(Required)": {
            "type": "string",
            "description": "First name of the primary contact. Required only when the email provided is a NON GLP email."
          },
          "Last Name(Required)": {
            "type": "string",
            "description": "Last name of the primary contact. Required only when the email provided is a NON GLP email."
          },
          "Phone Number(Optional)": {
            "type": "string",
            "description": "The phone number of the primary contact, [+][country code][phone number] format (e.g., `+14155552671`), without spaces or separators."
          },
          "Phone Extension(Optional)": {
            "type": "string",
            "description": "The phone extension of the primary contact, 1 to 4 digits (0-9). Required only when the Phone Number is provided."
          },
          "Tag 1 Name (optional)": {
            "type": "string",
            "description": "Tag name associated with the location."
          },
          "Tag 1 Value (optional)": {
            "type": "string",
            "description": "Tag value for the tag name associated with the location."
          }
        }
      }
    }
  }
}