{
  "swagger": "2.0",
  "info": {
    "title": "API Place - GeographicAddress",
    "description": "## TMF API Reference : TMF 673 - Place - Geographic Address Management\n### Release : 19.5 - January 2020\n\nThe Geographic Address API provides a standardized client interface to an Address management system.\nIt allows looking for worldwide addresses.\nIt can also be used to validate geographic address data, to be sure that it corresponds to a real address.\n\n### Resources\n- GeographicAddress\n- GeographicSubAddress\n- GeographicAddressValidation\n- Hub\n\n### Operations\nGeographic Address Management API performs the following operations :\n- Retrieve a geographic address or a collection of geographic addresses\n- Retrieve a geographic sub-address\n- Create a geographic address validation\n- Retrieve, update and delete an existing  geographic address validation\n- Notify events on these resources",
    "version": "4.0.1"
  },
  "host": "serverRoot",
  "basePath": "/tmf-api/geographicAddressManagement/v4/",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json;charset=utf-8"
  ],
  "produces": [
    "application/json;charset=utf-8"
  ],
  "tags": [
    {
      "name": "geographicAddressValidation"
    },
    {
      "name": "geographicAddress"
    },
    {
      "name": "geographicSubAddress"
    },
    {
      "name": "notification listeners (client side)"
    },
    {
      "name": "events subscription"
    }
  ],
  "paths": {
    "/geographicAddressValidation": {
      "get": {
        "operationId": "listGeographicAddressValidation",
        "summary": "List or find GeographicAddressValidation objects",
        "description": "This operation list or find GeographicAddressValidation entities",
        "tags": [
          "geographicAddressValidation"
        ],
        "parameters": [
          {
            "name": "fields",
            "description": "Comma-separated properties to be provided in response",
            "required": false,
            "in": "query",
            "type": "string"
          },
          {
            "name": "offset",
            "description": "Requested index for start of resources to be provided in response",
            "required": false,
            "in": "query",
            "type": "integer"
          },
          {
            "name": "limit",
            "description": "Requested number of resources to be provided in response",
            "required": false,
            "in": "query",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Result-Count": {
                "description": "Actual number of items returned in the response body",
                "type": "integer"
              },
              "X-Total-Count": {
                "description": "Total number of items matching criteria",
                "type": "integer"
              }
            },
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GeographicAddressValidation"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      },
      "post": {
        "operationId": "createGeographicAddressValidation",
        "summary": "Creates a GeographicAddressValidation",
        "description": "This operation creates a GeographicAddressValidation entity.",
        "tags": [
          "geographicAddressValidation"
        ],
        "parameters": [
          {
            "name": "geographicAddressValidation",
            "description": "The GeographicAddressValidation to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GeographicAddressValidation_Create"
            },
            "in": "body"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/GeographicAddressValidation"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/geographicAddressValidation/{id}": {
      "get": {
        "operationId": "retrieveGeographicAddressValidation",
        "summary": "Retrieves a GeographicAddressValidation by ID",
        "description": "This operation retrieves a GeographicAddressValidation entity. Attribute selection is enabled for all first level attributes.",
        "tags": [
          "geographicAddressValidation"
        ],
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the GeographicAddressValidation",
            "required": true,
            "type": "string",
            "in": "path"
          },
          {
            "name": "fields",
            "description": "Comma-separated properties to provide in response",
            "required": false,
            "type": "string",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GeographicAddressValidation"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      },
      "patch": {
        "operationId": "patchGeographicAddressValidation",
        "summary": "Updates partially a GeographicAddressValidation",
        "description": "This operation updates partially a GeographicAddressValidation entity.",
        "tags": [
          "geographicAddressValidation"
        ],
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the GeographicAddressValidation",
            "required": true,
            "type": "string",
            "in": "path"
          },
          {
            "name": "geographicAddressValidation",
            "description": "The GeographicAddressValidation to be updated",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GeographicAddressValidation_Update"
            },
            "in": "body"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated",
            "schema": {
              "$ref": "#/definitions/GeographicAddressValidation"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/geographicAddress": {
      "get": {
        "operationId": "listGeographicAddress",
        "summary": "List or find GeographicAddress objects",
        "description": "This operation list or find GeographicAddress entities",
        "tags": [
          "geographicAddress"
        ],
        "parameters": [
          {
            "name": "fields",
            "description": "Comma-separated properties to be provided in response",
            "required": false,
            "in": "query",
            "type": "string"
          },
          {
            "name": "offset",
            "description": "Requested index for start of resources to be provided in response",
            "required": false,
            "in": "query",
            "type": "integer"
          },
          {
            "name": "limit",
            "description": "Requested number of resources to be provided in response",
            "required": false,
            "in": "query",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Result-Count": {
                "description": "Actual number of items returned in the response body",
                "type": "integer"
              },
              "X-Total-Count": {
                "description": "Total number of items matching criteria",
                "type": "integer"
              }
            },
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GeographicAddress"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/geographicAddress/{id}": {
      "get": {
        "operationId": "retrieveGeographicAddress",
        "summary": "Retrieves a GeographicAddress by ID",
        "description": "This operation retrieves a GeographicAddress entity. Attribute selection is enabled for all first level attributes.",
        "tags": [
          "geographicAddress"
        ],
        "parameters": [
          {
            "name": "id",
            "description": "Identifier of the GeographicAddress",
            "required": true,
            "type": "string",
            "in": "path"
          },
          {
            "name": "fields",
            "description": "Comma-separated properties to provide in response",
            "required": false,
            "type": "string",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GeographicAddress"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/geographicAddress/{geographicAddressId}/geographicSubAddress": {
      "get": {
        "operationId": "listGeographicSubAddress",
        "summary": "List or find GeographicSubAddress objects",
        "description": "This operation list or find GeographicSubAddress entities",
        "tags": [
          "geographicSubAddress"
        ],
        "parameters": [
          {
            "name": "geographicAddressId",
            "description": "Identifier of the parent GeographicAddress entity",
            "required": true,
            "type": "string",
            "in": "path"
          },
          {
            "name": "fields",
            "description": "Comma-separated properties to be provided in response",
            "required": false,
            "in": "query",
            "type": "string"
          },
          {
            "name": "offset",
            "description": "Requested index for start of resources to be provided in response",
            "required": false,
            "in": "query",
            "type": "integer"
          },
          {
            "name": "limit",
            "description": "Requested number of resources to be provided in response",
            "required": false,
            "in": "query",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Result-Count": {
                "description": "Actual number of items returned in the response body",
                "type": "integer"
              },
              "X-Total-Count": {
                "description": "Total number of items matching criteria",
                "type": "integer"
              }
            },
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GeographicSubAddress"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/geographicAddress/{geographicAddressId}/geographicSubAddress/{id}": {
      "get": {
        "operationId": "retrieveGeographicSubAddress",
        "summary": "Retrieves a GeographicSubAddress by ID",
        "description": "This operation retrieves a GeographicSubAddress entity. Attribute selection is enabled for all first level attributes.",
        "tags": [
          "geographicSubAddress"
        ],
        "parameters": [
          {
            "name": "geographicAddressId",
            "description": "Identifier of the parent GeographicAddress entity",
            "required": true,
            "type": "string",
            "in": "path"
          },
          {
            "name": "id",
            "description": "Identifier of the GeographicSubAddress",
            "required": true,
            "type": "string",
            "in": "path"
          },
          {
            "name": "fields",
            "description": "Comma-separated properties to provide in response",
            "required": false,
            "type": "string",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GeographicSubAddress"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/hub": {
      "post": {
        "operationId": "registerListener",
        "summary": "Register a listener",
        "description": "Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.",
        "tags": [
          "events subscription"
        ],
        "parameters": [
          {
            "name": "data",
            "schema": {
              "$ref": "#/definitions/EventSubscriptionInput"
            },
            "required": true,
            "in": "body",
            "description": "Data containing the callback endpoint to deliver the information"
          }
        ],
        "responses": {
          "201": {
            "description": "Subscribed",
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/hub/{id}": {
      "delete": {
        "operationId": "unregisterListener",
        "summary": "Unregister a listener",
        "description": "Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.",
        "tags": [
          "events subscription"
        ],
        "parameters": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "in": "path",
            "description": "The id of the registered listener"
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/listener/geographicAddressValidationStateChangeEvent": {
      "post": {
        "operationId": "listenToGeographicAddressValidationStateChangeEvent",
        "summary": "Client listener for entity GeographicAddressValidationStateChangeEvent",
        "description": "Example of a client listener for receiving the notification GeographicAddressValidationStateChangeEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "name": "data",
            "required": true,
            "in": "body",
            "description": "The event data",
            "schema": {
              "$ref": "#/definitions/GeographicAddressValidationStateChangeEvent"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Notified",
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "405": {
            "description": "Method Not allowed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "Addressable": {
      "type": "object",
      "description": "Base schema for adressable entities",
      "properties": {
        "id": {
          "type": "string",
          "description": "unique identifier"
        },
        "href": {
          "type": "string",
          "description": "Hyperlink reference"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "EntityRef": {
      "type": "object",
      "description": "Entity reference schema to be use for all entityRef class.",
      "properties": {
        "id": {
          "type": "string",
          "description": "unique identifier"
        },
        "href": {
          "type": "string",
          "description": "Hyperlink reference"
        },
        "name": {
          "type": "string",
          "description": "Name of the related entity."
        },
        "@baseType": {
          "example": "ResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "example": "https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json",
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "example": "LogicalResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the sub-class Extensible name"
        },
        "@referredType": {
          "type": "string",
          "description": "The actual type of the target instance when needed for disambiguation."
        }
      },
      "required": [
        "id"
      ]
    },
    "Extensible": {
      "type": "object",
      "description": "Base Extensible schema for use in TMForum Open-APIs",
      "properties": {
        "@baseType": {
          "example": "ResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "example": "https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json",
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "example": "LogicalResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the sub-class Extensible name"
        }
      }
    },
    "GeographicAddress": {
      "type": "object",
      "description": "Structured textual way of describing how to find a Property in an urban area (country properties are often defined differently).\nNote : Address corresponds to SID UrbanPropertyAddress",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier of the place"
        },
        "href": {
          "type": "string",
          "description": "Unique reference of the place"
        },
        "city": {
          "type": "string",
          "description": "City that the address is in"
        },
        "country": {
          "type": "string",
          "description": "Country that the address is in"
        },
        "locality": {
          "type": "string",
          "description": "An area of defined or undefined boundaries within a local authority or other legislatively defined area, usually rural or semi rural in nature. [ANZLIC-STREET], or a suburb, a bounded locality within a city, town or shire principally of urban character [ANZLICSTREET]"
        },
        "name": {
          "type": "string",
          "description": "A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]"
        },
        "postcode": {
          "type": "string",
          "description": "descriptor for a postal delivery area, used to speed and simplify the delivery of mail (also know as zipcode)"
        },
        "stateOrProvince": {
          "type": "string",
          "description": "the State or Province that the address is in"
        },
        "streetName": {
          "type": "string",
          "description": "Name of the street or other street type"
        },
        "streetNr": {
          "type": "string",
          "description": "Number identifying a specific property on a public street. It may be combined with streetNrLast for ranged addresses"
        },
        "streetNrLast": {
          "type": "string",
          "description": "Last number in a range of street numbers allocated to a property"
        },
        "streetNrLastSuffix": {
          "type": "string",
          "description": "Last street number suffix for a ranged address"
        },
        "streetNrSuffix": {
          "type": "string",
          "description": "the first street number suffix"
        },
        "streetSuffix": {
          "type": "string",
          "description": "A modifier denoting a relative direction"
        },
        "streetType": {
          "type": "string",
          "description": "alley, avenue, boulevard, brae, crescent, drive, highway, lane, terrace, parade, place, tarn, way, wharf "
        },
        "geographicLocation": {
          "$ref": "#/definitions/GeographicLocationRefOrValue"
        },
        "geographicSubAddress": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GeographicSubAddress"
          }
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "GeographicAddressValidation": {
      "type": "object",
      "description": "This resource is used to manage address validation request and response",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier of the Address Validation"
        },
        "href": {
          "type": "string",
          "description": "An URI used to access to the address validation resource"
        },
        "provideAlternative": {
          "type": "boolean",
          "description": "Indicator provided by the requester to specify if alternate addresses must be provided in case of partial or fail result."
        },
        "validationDate": {
          "type": "string",
          "format": "date-time",
          "description": "Date when the address validation is performed"
        },
        "validationResult": {
          "type": "string",
          "description": "Result of the address validation (success, partial, fails)"
        },
        "alternateGeographicAddress": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GeographicAddress"
          }
        },
        "state": {
          "$ref": "#/definitions/TaskStateType"
        },
        "submittedGeographicAddress": {
          "$ref": "#/definitions/GeographicAddress",
          "description": "the address as submitted to validation"
        },
        "validGeographicAddress": {
          "$ref": "#/definitions/GeographicAddress",
          "description": "the correct form of the validated address in case of validation success"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "GeographicAddressValidation_Create": {
      "type": "object",
      "description": "This resource is used to manage address validation request and response\nSkipped properties: id,href,alternateGeographicAddress,validGeographicAddress,state,validationResult,validationDate",
      "required": [
        "submittedGeographicAddress",
        "provideAlternative"
      ],
      "properties": {
        "provideAlternative": {
          "type": "boolean",
          "description": "Indicator provided by the requester to specify if alternate addresses must be provided in case of partial or fail result."
        },
        "submittedGeographicAddress": {
          "$ref": "#/definitions/GeographicAddress",
          "description": "the address as submitted to validation"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "GeographicAddressValidation_Update": {
      "type": "object",
      "description": "This resource is used to manage address validation request and response\nSkipped properties: id,href",
      "properties": {
        "provideAlternative": {
          "type": "boolean",
          "description": "Indicator provided by the requester to specify if alternate addresses must be provided in case of partial or fail result."
        },
        "validationDate": {
          "type": "string",
          "format": "date-time",
          "description": "Date when the address validation is performed"
        },
        "validationResult": {
          "type": "string",
          "description": "Result of the address validation (success, partial, fails)"
        },
        "alternateGeographicAddress": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GeographicAddress"
          }
        },
        "state": {
          "$ref": "#/definitions/TaskStateType"
        },
        "submittedGeographicAddress": {
          "$ref": "#/definitions/GeographicAddress",
          "description": "the address as submitted to validation"
        },
        "validGeographicAddress": {
          "$ref": "#/definitions/GeographicAddress",
          "description": "the correct form of the validated address in case of validation success"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "GeographicLocation": {
      "type": "object",
      "description": "A GeographicLocation is a pure-virtual super-class to the GeoJSON-aligned geometries of Point (addresses and locations), MultiPoint, LineString (streets, highways and boundaries), MultiLineString and Polygon (countries, provinces, tracts of land). Use the @type attribute to specify which of these is being specified by the geometry attribute.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier of the geographic location"
        },
        "href": {
          "type": "string",
          "description": "An URI used to access to the geographic location resource"
        },
        "@type": {
          "type": "string",
          "enum": [
            "GeoJsonPoint",
            "GeoJsonMultiPoint",
            "GeoJsonLineString",
            "GeoJsonMultiLineString",
            "GeoJsonPolygon"
          ],
          "description": "The name of the GeoJSON structure used in the geometry attribute"
        },
        "bbox": {
          "type": "array",
          "description": "A bounding box array that contains the geometry. The axes order follows the axes order of the geometry",
          "items": {
            "type": "number"
          }
        }
      },
      "required": [
        "@type"
      ]
    },
    "GeographicLocationRef": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "unique identifier"
        },
        "href": {
          "type": "string",
          "description": "Hyperlink reference"
        },
        "name": {
          "type": "string",
          "description": "Name of the related entity."
        },
        "@baseType": {
          "example": "ResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "example": "https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json",
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "example": "LogicalResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the sub-class Extensible name"
        },
        "@referredType": {
          "type": "string",
          "description": "The actual type of the target instance when needed for disambiguation."
        }
      },
      "required": [
        "id"
      ]
    },
    "GeographicLocationRefOrValue": {
      "type": "object",
      "description": "A GeographicLocation is a pure-virtual super-class to the GeoJSON-aligned geometries of Point (addresses and locations), MultiPoint, LineString (streets, highways and boundaries), MultiLineString and Polygon (countries, provinces, tracts of land). Use the @type attribute to specify which of these is being specified by the geometry attribute.",
      "required": [
        "@type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier of the place"
        },
        "href": {
          "type": "string",
          "description": "Unique reference of the place"
        },
        "name": {
          "type": "string",
          "description": "A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]"
        },
        "@baseType": {
          "example": "ResourceSpecification",
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "bbox": {
          "type": "array",
          "description": "A bounding box array that contains the geometry. The axes order follows the axes order of the geometry",
          "items": {
            "type": "number"
          }
        },
        "@schemaLocation": {
          "example": "https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json",
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "enum": [
            "GeoJsonPoint",
            "GeoJsonMultiPoint",
            "GeoJsonLineString",
            "GeoJsonMultiLineString",
            "GeoJsonPolygon"
          ],
          "description": "The name of the GeoJSON structure used in the geometry attribute"
        },
        "@referredType": {
          "type": "string",
          "description": "The actual type of the target instance when needed for disambiguation."
        }
      }
    },
    "GeographicSubAddress": {
      "type": "object",
      "description": "Representation of a GeographicSubAddress \nIt is used for addressing within a property in an urban area (country properties are often defined differently). It may refer to a building, a building cluster, or a floor of a multistory building.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique Identifier of the subAddress"
        },
        "href": {
          "type": "string",
          "description": "Link to the subAddress"
        },
        "buildingName": {
          "type": "string",
          "description": "allows for buildings that have well-known names"
        },
        "levelNumber": {
          "type": "string",
          "description": "used where a level type may be repeated e.g. BASEMENT 1, BASEMENT 2"
        },
        "levelType": {
          "type": "string",
          "description": "describes level types within a building"
        },
        "name": {
          "type": "string",
          "description": "Name of the subAddress to identify it with a meaningful identification"
        },
        "privateStreetName": {
          "type": "string",
          "description": "private streets internal to a property (e.g. a university) may have internal names that are not recorded by the land title office."
        },
        "privateStreetNumber": {
          "type": "string",
          "description": "private streets numbers internal to a private street"
        },
        "subAddressType": {
          "type": "string",
          "description": "Type of subAddress : it can be a subunit or a private street"
        },
        "subUnitNumber": {
          "type": "string",
          "description": "the discriminator used for the subunit\noften just a simple number e.g. FLAT 5, may also be a range"
        },
        "subUnitType": {
          "type": "string",
          "description": "the type of subunit\ne.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT, WHARF"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "Place": {
      "type": "object",
      "description": "Place reference. Place defines the places where the products are sold or delivered.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier of the place"
        },
        "href": {
          "type": "string",
          "description": "Unique reference of the place"
        },
        "name": {
          "type": "string",
          "description": "A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "TaskStateType": {
      "type": "string",
      "description": "Possible values for the state of a task",
      "enum": [
        "accepted",
        "terminatedWithError",
        "inProgress",
        "done"
      ]
    },
    "EventSubscription": {
      "type": "object",
      "description": "Sets the communication endpoint address the service instance must use to deliver notification information",
      "required": [
        "id",
        "callback"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Id of the listener"
        },
        "callback": {
          "type": "string",
          "description": "The callback being registered."
        },
        "query": {
          "type": "string",
          "description": "additional data to be passed"
        }
      }
    },
    "EventSubscriptionInput": {
      "type": "object",
      "description": "Sets the communication endpoint address the service instance must use to deliver notification information",
      "required": [
        "callback"
      ],
      "properties": {
        "callback": {
          "type": "string",
          "description": "The callback being registered."
        },
        "query": {
          "type": "string",
          "description": "additional data to be passed"
        }
      }
    },
    "GeographicAddressValidationStateChangeEvent": {
      "type": "object",
      "description": "The notification data structure",
      "properties": {
        "event": {
          "description": "The event payload linked to the involved resource object",
          "$ref": "#/definitions/GeographicAddressValidationStateChangeEventPayload"
        },
        "eventId": {
          "type": "string",
          "description": "The identifier of the notification."
        },
        "eventTime": {
          "type": "string",
          "format": "date-time",
          "description": "Time of the event occurrence."
        },
        "eventType": {
          "type": "string",
          "description": "The type of the notification."
        },
        "correlationId": {
          "type": "string",
          "description": "The correlation id for this event."
        },
        "domain": {
          "type": "string",
          "description": "The domain of the event."
        },
        "title": {
          "type": "string",
          "description": "The title of the event."
        },
        "description": {
          "type": "string",
          "description": "An explnatory of the event."
        },
        "priority": {
          "type": "string",
          "description": "A priority."
        },
        "timeOcurred": {
          "type": "string",
          "format": "date-time",
          "description": "The time the event occured."
        }
      }
    },
    "GeographicAddressValidationStateChangeEventPayload": {
      "type": "object",
      "description": "The event data structure",
      "properties": {
        "geographicAddressValidation": {
          "description": "The involved resource data for the event",
          "$ref": "#/definitions/GeographicAddressValidation"
        }
      }
    },
    "GeoJsonLineString": {
      "type": "object",
      "description": "Container for GeoJson LineString: A collection of Points forming a connected line",
      "allOf": [
        {
          "$ref": "#/definitions/GeographicLocation"
        },
        {
          "type": "object",
          "properties": {
            "geoJson": {
              "$ref": "#/definitions/LineString"
            }
          }
        }
      ]
    },
    "GeoJsonMultiLineString": {
      "type": "object",
      "description": "A container for GeoJSON MultiLineString: A collection of distinct LineStrings",
      "allOf": [
        {
          "$ref": "#/definitions/GeographicLocation"
        },
        {
          "type": "object",
          "properties": {
            "geoJson": {
              "$ref": "#/definitions/MultiLineString"
            }
          }
        }
      ]
    },
    "GeoJsonMultiPoint": {
      "type": "object",
      "description": "Container for GeoJSON MultiPoint: A collection of Points",
      "allOf": [
        {
          "$ref": "#/definitions/GeographicLocation"
        },
        {
          "type": "object",
          "properties": {
            "geoJson": {
              "$ref": "#/definitions/MultiPoint"
            }
          }
        }
      ]
    },
    "GeoJsonPoint": {
      "type": "object",
      "description": "Container for a GeoJSON Point: A single position",
      "allOf": [
        {
          "$ref": "#/definitions/GeographicLocation"
        },
        {
          "type": "object",
          "properties": {
            "geoJson": {
              "$ref": "#/definitions/Point"
            }
          }
        }
      ]
    },
    "GeoJsonPolygon": {
      "type": "object",
      "description": "Container for GeoJSON Polygon: An array of linear rings",
      "allOf": [
        {
          "$ref": "#/definitions/GeographicLocation"
        },
        {
          "type": "object",
          "properties": {
            "geoJson": {
              "$ref": "#/definitions/Polygon"
            }
          }
        }
      ]
    },
    "LineString": {
      "type": "object",
      "description": "GeoJSON: A collection of Points forming a connected line",
      "required": [
        "coordinates"
      ],
      "properties": {
        "coordinates": {
          "$ref": "#/definitions/lineString"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "MultiLineString": {
      "type": "object",
      "description": "A collection of distinct LineStrings",
      "required": [
        "coordinates",
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/lineString"
          },
          "minItems": 1
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "MultiPoint": {
      "type": "object",
      "description": "A collection of Points",
      "required": [
        "coordinates",
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "coordinates": {
          "$ref": "#/definitions/positionArray"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "Point": {
      "type": "object",
      "description": "GeoJSON: A single position",
      "required": [
        "coordinates",
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "coordinates": {
          "$ref": "#/definitions/position"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "Polygon": {
      "type": "object",
      "description": "An array of linear rings",
      "required": [
        "coordinates",
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "coordinates": {
          "$ref": "#/definitions/polygon"
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class"
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name"
        }
      }
    },
    "position": {
      "description": "GeoJSON: A single position",
      "type": "array",
      "minItems": 2,
      "items": {
        "type": "number"
      },
      "maxItems": 2
    },
    "positionArray": {
      "description": "GeoJSON: An array of positions",
      "type": "array",
      "items": {
        "$ref": "#/definitions/position"
      }
    },
    "lineString": {
      "description": "GeoJSON: An array of two or more positions",
      "allOf": [
        {
          "$ref": "#/definitions/positionArray"
        },
        {
          "minItems": 2
        }
      ]
    },
    "linearRing": {
      "description": "GeoJSON: An array of four positions where the first equals the last",
      "allOf": [
        {
          "$ref": "#/definitions/positionArray"
        },
        {
          "minItems": 4
        }
      ]
    },
    "polygon": {
      "description": "GeoJSON: An array of linear rings",
      "type": "array",
      "items": {
        "$ref": "#/definitions/linearRing"
      }
    },
    "Error": {
      "description": "Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)",
      "type": "object",
      "required": [
        "code",
        "reason"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Application relevant detail, defined in the API or a common list."
        },
        "reason": {
          "type": "string",
          "description": "Explanation of the reason for the error which can be shown to a client user."
        },
        "message": {
          "type": "string",
          "description": "More details and corrective actions related to the error which can be shown to a client user."
        },
        "status": {
          "type": "string",
          "description": "HTTP Error code extension"
        },
        "referenceError": {
          "type": "string",
          "format": "uri",
          "description": "URI of documentation describing the error."
        },
        "@baseType": {
          "type": "string",
          "description": "When sub-classing, this defines the super-class."
        },
        "@schemaLocation": {
          "type": "string",
          "format": "uri",
          "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
        },
        "@type": {
          "type": "string",
          "description": "When sub-classing, this defines the sub-class entity name."
        }
      }
    }
  }
}