{
  "openapi": "3.0.1",
  "info": {
    "title": "Points Of Interest",
    "description": "Create and administer points of interest.",
    "version": "9.1.20.0",
    "x-introduced": "9.1.0.0"
  },
  "servers": [
    {
      "url": "https://{hostname}:{port}/rest/admin/v2",
      "variables": {
        "port": {
          "default": "443",
          "enum": [
            "443",
            "8000"
          ]
        },
        "hostname": {
          "default": "localhost",
          "enum": [
            "localhost",
            "test.hcl.com"
          ]
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Points Of Interest",
      "description": "Provide RESTful services to manage points of interest."
    }
  ],
  "paths": {
    "/points-of-interest": {
      "get": {
        "tags": [
          "Points Of Interest"
        ],
        "description": "Get a collection of points of interest.",
        "operationId": "getPointsOfInterest",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The unique numeric ID for identifying the point of interest.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "The name of the point of interest.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeId",
            "in": "query",
            "description": "The unique numeric ID for identifying the store that defines the point of interest.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "description": "Reserved for IBM internal use.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Reserved for IBM internal use.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regionId",
            "in": "query",
            "description": "The identifier for uniquely identifying the region that the point of interest represents.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "poiType",
            "in": "query",
            "description": "The point of interest type. Available values Region: - The point of interest represents a geographic region. Store - The point of interest represents a physical store.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zoneId",
            "in": "query",
            "description": "The identifier for uniquely identifying the zone or subregion that the point of interest represents, such as a physical store.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cellId",
            "in": "query",
            "description": "The identifier for uniquely identifying the zone subregion that the point of interest represents, such as an aisle or department.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pointId",
            "in": "query",
            "description": "The identifier for uniquely identifying the point within a cell that the point of interest represents, such as a shelf or kiosk.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Reserved for IBM internal use.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "latitude",
            "in": "query",
            "description": "The latitude (in degrees) of the point of interest location.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "description": "The longitude (in degrees) of the point of interest location.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "altitude",
            "in": "query",
            "description": "The altitude or height (in meters) of the point of interest location.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "radius",
            "in": "query",
            "description": "The radius (in meters) of the point of interest location.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "precedence",
            "in": "query",
            "description": "The precedence of the point of interest.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "field1",
            "in": "query",
            "description": "Customizable field 1.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "field2",
            "in": "query",
            "description": "Customizable field 2.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "field3",
            "in": "query",
            "description": "Customizable field 3.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The position within the resulting dataset where the query begins returning item records. If the offset is \"5\", the records that returned begin with the sixth record that matches the query parameters. If the offset is \"0\", the records that are returned begin with the first record that matches the query parameters.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "The comma-separated set of properties to be returned. If no properties are specified, all properties are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "The comma-separated set of related resources referenced in the links to be returned. If no related resources are specified, no related resources are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The comma-separated set of properties which controls the order of the items being listed, prefixed by either (-) to sort by descending order, or optionally (+) to sort by ascending order. For example, sort=name,-d which means, order the items based on the name value in ascending order, then by the id value in descending order.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of points of interest.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PointOfInterestCollection"
                }
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Points Of Interest"
        ],
        "description": "Create a point of interest.",
        "operationId": "createPointOfInterest",
        "requestBody": {
          "description": "The points of interest.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PointOfInterest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The operation was successful.",
            "headers": {
              "Location": {
                "description": "The URI of the point-of-interest.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {},
            "links": {
              "GetPointOfInterestById": {
                "operationRef": "#/paths/~1points-of-interest~1{id}/get",
                "parameters": {
                  "id": "$request.body#/id"
                },
                "description": "The `id`value used in the request body can be used as the `id` parameter in `GET /points-of-interest/{id}`.\n"
              },
              "DeletePointOfInterestById": {
                "operationRef": "#/paths/~1points-of-interest~1{id}/delete",
                "parameters": {
                  "id": "$request.body#/id"
                },
                "description": "The `id`value used in the request body can be used as the `id`parameter in `DELETE /points-of-interest/{id}`.\n"
              },
              "UpdatePointOfInterestById": {
                "operationRef": "#/paths/~1points-of-interest~1{id}/patch",
                "parameters": {
                  "id": "$request.body#/id"
                },
                "description": "The `id`value used in the request body can be used as the `id` parameter in  `PATCH /points-of-interest/{id}`.\n"
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "PointOfInterest"
      }
    },
    "/points-of-interest/{id}": {
      "get": {
        "tags": [
          "Points Of Interest"
        ],
        "description": "Get a point of interest.",
        "operationId": "getPointOfInterestById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique numeric ID for identifying the point of interest.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "The comma-separated set of properties to be returned. If no properties are specified, all properties are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "The comma-separated set of related resources referenced in the links to be returned. If no related resources are specified, no related resources are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The comma-separated set of properties which controls the order of the items being listed, prefixed by either (-) to sort by descending order, or optionally (+) to sort by ascending order. For example, sort=name,-d which means, order the items based on the name value in ascending order, then by the id value in descending order.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The points of interest.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PointOfInt"
                }
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "404": {
            "description": "The resource was not found.",
            "content": {}
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Points Of Interest"
        ],
        "description": "Delete a point of interest.",
        "operationId": "deletePointOfInterestById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique numeric ID for identifying the point of interest.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The operation was successful.",
            "content": {}
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "404": {
            "description": "The resource was not found.",
            "content": {}
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Points Of Interest"
        ],
        "description": "Update a point of interest.",
        "operationId": "updatePointOfInterestById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique numeric ID for identifying the point of interest.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The points of interest.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PointOfInterest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The operation was successful.",
            "content": {}
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "404": {
            "description": "The resource was not found.",
            "content": {}
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "PointOfInterest"
      }
    },
    "/points-of-interest/{id}/point-of-interest-descriptions": {
      "get": {
        "tags": [
          "Points Of Interest"
        ],
        "description": "Finds the point of interest description relationship of a point of interest.",
        "operationId": "getPointOfInterestDescriptionsOfPointOfInterest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique numeric ID for identifying the point of interest.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The position within the resulting dataset where the query begins returning item records. If the offset is \"5\", the records that returned begin with the sixth record that matches the query parameters. If the offset is \"0\", the records that are returned begin with the first record that matches the query parameters.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "The comma-separated set of properties to be returned. If no properties are specified, all properties are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "The comma-separated set of related resources referenced in the links to be returned. If no related resources are specified, no related resources are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The comma-separated set of properties which controls the order of the items being listed, prefixed by either (-) to sort by descending order, or optionally (+) to sort by ascending order. For example, sort=name,-d which means, order the items based on the name value in ascending order, then by the id value in descending order.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of point of interest descriptions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PointOfInterestDescriptionCollection"
                }
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Link": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "The URL of the link.",
            "format": "uri"
          }
        },
        "description": "Links to related resources."
      },
      "Error": {
        "type": "object",
        "properties": {
          "errorCode": {
            "type": "string",
            "description": "The error message code."
          },
          "errorMessage": {
            "type": "string",
            "description": "The error message."
          },
          "errorKey": {
            "type": "string",
            "description": "The error message key."
          },
          "errorParameters": {
            "type": "array",
            "description": "The arguments used to construct the error message.",
            "items": {
              "type": "object",
              "properties": {}
            }
          },
          "errorLevel": {
            "type": "string",
            "description": "The error level."
          },
          "errorHref": {
            "type": "string",
            "description": "The error hypertext reference."
          }
        },
        "description": "The error message item model."
      },
      "ErrorResponseContainer": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "The request identifier."
          },
          "errors": {
            "type": "array",
            "description": "The errors.",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The error message model."
      },
      "PointOfInterest": {
        "type": "object",
        "required": [
          "id",
          "name",
          "storeId"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique numeric ID for identifying the point of interest.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "The name of the point of interest."
          },
          "storeId": {
            "type": "integer",
            "description": "The unique numeric ID for identifying the store that defines the point of interest.",
            "format": "int32"
          },
          "programId": {
            "type": "string",
            "description": "Reserved for IBM internal use."
          },
          "status": {
            "type": "string",
            "description": "Reserved for IBM internal use."
          },
          "regionId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the region that the point of interest represents."
          },
          "poiType": {
            "type": "string",
            "description": "The point of interest type. Available values Region: - The point of interest represents a geographic region. Store - The point of interest represents a physical store."
          },
          "zoneId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the zone or subregion that the point of interest represents, such as a physical store."
          },
          "cellId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the zone subregion that the point of interest represents, such as an aisle or department."
          },
          "pointId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the point within a cell that the point of interest represents, such as a shelf or kiosk."
          },
          "tags": {
            "type": "string",
            "description": "Reserved for IBM internal use."
          },
          "latitude": {
            "type": "number",
            "description": "The latitude (in degrees) of the point of interest location."
          },
          "longitude": {
            "type": "number",
            "description": "The longitude (in degrees) of the point of interest location."
          },
          "altitude": {
            "type": "number",
            "description": "The altitude or height (in meters) of the point of interest location."
          },
          "radius": {
            "type": "number",
            "description": "The radius (in meters) of the point of interest location."
          },
          "precedence": {
            "type": "number",
            "description": "The precedence of the point of interest."
          },
          "field1": {
            "type": "integer",
            "description": "Customizable field 1.",
            "format": "int64"
          },
          "field2": {
            "type": "number",
            "description": "Customizable field 2."
          },
          "field3": {
            "type": "string",
            "description": "Customizable field 3."
          }
        },
        "description": "The points of interest."
      },
      "PointOfInt": {
        "type": "object",
        "required": [
          "id",
          "name",
          "storeId"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique numeric ID for identifying the point of interest.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "The name of the point of interest."
          },
          "storeId": {
            "type": "integer",
            "description": "The unique numeric ID for identifying the store that defines the point of interest.",
            "format": "int32"
          },
          "programId": {
            "type": "string",
            "description": "Reserved for IBM internal use."
          },
          "status": {
            "type": "string",
            "description": "Reserved for IBM internal use."
          },
          "regionId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the region that the point of interest represents."
          },
          "poiType": {
            "type": "string",
            "description": "The point of interest type. Available values Region: - The point of interest represents a geographic region. Store - The point of interest represents a physical store."
          },
          "zoneId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the zone or subregion that the point of interest represents, such as a physical store."
          },
          "cellId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the zone subregion that the point of interest represents, such as an aisle or department."
          },
          "pointId": {
            "type": "string",
            "description": "The identifier for uniquely identifying the point within a cell that the point of interest represents, such as a shelf or kiosk."
          },
          "tags": {
            "type": "string",
            "description": "Reserved for IBM internal use."
          },
          "latitude": {
            "type": "number",
            "description": "The latitude (in degrees) of the point of interest location."
          },
          "longitude": {
            "type": "number",
            "description": "The longitude (in degrees) of the point of interest location."
          },
          "altitude": {
            "type": "number",
            "description": "The altitude or height (in meters) of the point of interest location."
          },
          "radius": {
            "type": "number",
            "description": "The radius (in meters) of the point of interest location."
          },
          "precedence": {
            "type": "number",
            "description": "The precedence of the point of interest."
          },
          "field1": {
            "type": "integer",
            "description": "Customizable field 1.",
            "format": "int64"
          },
          "field2": {
            "type": "number",
            "description": "Customizable field 2."
          },
          "field3": {
            "type": "string",
            "description": "Customizable field 3."
          },
          "links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string"
                  }
                }
              },
              "point-of-interest-descriptions": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "The URL of the link."
                  }
                },
                "description": "The point of interest description relationship of a point of interest."
              }
            },
            "description": "Links to related resources."
          }
        },
        "description": "The points of interest."
      },
      "PointOfInterestCollection": {
        "type": "object",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of items.",
            "format": "int64"
          },
          "href": {
            "type": "string",
            "description": "The URL of the link.",
            "format": "uri"
          },
          "items": {
            "type": "array",
            "description": "The items.",
            "items": {
              "$ref": "#/components/schemas/PointOfInt"
            }
          }
        },
        "description": "A collection of points of interest."
      },
      "PointOfInterestDescription": {
        "type": "object",
        "required": [
          "id",
          "pointOfInterestId",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique numeric ID for identifying the point of interest description.",
            "format": "int64"
          },
          "pointOfInterestId": {
            "type": "integer",
            "description": "The unique numeric ID for identifying the point of interest.",
            "format": "int64"
          },
          "languageId": {
            "type": "integer",
            "description": "The unique ID for identifying the language for the point of interest description.",
            "format": "int32"
          },
          "shortDescription": {
            "type": "string",
            "description": "The translated short description of the point of interest."
          },
          "longDescription": {
            "type": "string",
            "description": "The translated long description of the point of insterest."
          },
          "displayImage1": {
            "type": "string",
            "description": "The URL of the display image 1 for the point of interest."
          },
          "displayImage2": {
            "type": "string",
            "description": "The URL of the display image 2 for the point of interest."
          },
          "name": {
            "type": "string",
            "description": "The translated name of the point of interest."
          },
          "field1": {
            "type": "integer",
            "description": "Customizable field 1.",
            "format": "int64"
          },
          "field2": {
            "type": "number",
            "description": "Customizable field 2."
          },
          "field3": {
            "type": "string",
            "description": "Customizable field 3."
          },
          "links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "description": "The point of interest description."
      },
      "PointOfInterestDescriptionCollection": {
        "type": "object",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of items.",
            "format": "int64"
          },
          "href": {
            "type": "string",
            "description": "The URL of the link.",
            "format": "uri"
          },
          "items": {
            "type": "array",
            "description": "The items.",
            "items": {
              "$ref": "#/components/schemas/PointOfInterestDescription"
            }
          }
        },
        "description": "A collection of point of interest descriptions."
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    }
  },
  "security": [
    {
      "basicAuth": []
    }
  ]
}
