Bell Canada Trouble Ticket API

Bell's implementation of the TM Forum TMF621 Trouble Ticket Open API (Bell version v2.5, TMF621 v4.1.1), letting an enterprise or wholesale partner create, patch, retrieve and list trouble tickets against Bell services from their own ITSM or fault management system. Includes the TM Forum hub/listener notification pattern for ticket create, attribute-value-change, status-change, delete, resolved and information-required events.

OpenAPI Specification

bell-canada-trouble-ticket-api-openapi.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "title": "Trouble Ticket",
    "description": "**TMF API Reference : TMF - 621 Trouble Ticket**\n\n**Release : 19.0 - June 2019**\n\nThe Trouble Ticket API provides a standardized client interface to Trouble Ticket Management Systems for creating, tracking and managing trouble tickets as a result of an issue or problem identified by a customer or another system. \nExamples of Trouble Ticket API originators (clients) include CRM applications, network management or fault management systems, or other Trouble Ticket management systems (e.g. B2B).\n\nThe API supports the ability to send requests to create a new trouble ticket specifying the nature and severity of the trouble or issue as well as all necessary related information. The API also includes mechanisms to search for and update existing trouble tickets. Notifications are defined to provide information when a trouble ticket has been updated, including status changes. A basic set of states of a trouble ticket has been specified (as an example) to handle trouble ticket lifecycle management.\nTrouble Ticketing API manages trouble ticket resource:\n\n  -\tA trouble ticket represents a record, or an issue raised by requestor that need to be solved, used for reporting and managing the resolution of problems, incidents or request -\tMain trouble ticket attributes are its description, severity, type, related dates (creation, expected resolution, resolution), state and related information (change reason and change date), related parties (originator, owner, reviser, etc.), related entities (product, product order, customer bill) and notes Trouble Ticket API performs the following operations on trouble ticket -\tRetrieval of a trouble ticket or a collection of trouble ticket depending on filter criteria -\tPartial update of a trouble ticket -\tCreation of a trouble ticket -\tNotification of events on trouble ticket: o\tTrouble ticket state change o\tTrouble ticket change o\tTrouble ticket resoled o\tTrouble ticket created o\tTrouble ticket Information required\n\n\n\nCopyright \u00A9 TM Forum 2019. All Rights Reserved\n\n\n",
    "version": "4.1.1"
  },
  "host": "serverRoot",
  "basePath": "/tmf-api/troubleTicket/v4/",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json;charset=utf-8"
  ],
  "produces": [
    "application/json;charset=utf-8"
  ],
  "tags": [
    {
      "name": "troubleTicket"
    },
    {
      "name": "notification listeners (client side)"
    },
    {
      "name": "events subscription"
    }
  ],
  "paths": {
    "/troubleTicket": {
      "get": {
        "operationId": "listTroubleTicket",
        "summary": "List or find TroubleTicket objects",
        "description": "This operation list or find TroubleTicket entities",
        "tags": [
          "troubleTicket"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "fields",
            "required": false,
            "type": "string",
            "description": "Comma-separated properties to be provided in response"
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "type": "integer",
            "description": "Requested index for start of resources to be provided in response"
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "type": "integer",
            "description": "Requested number of resources to be provided in response"
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "type": "string",
            "description": "To have the output sorted by fields. Can support one or many fields, as well as ascending and descending sort order"
          },
          {
            "in": "query",
            "name": "expand",
            "required": false,
            "type": "string",
            "description": "Lists the sub-entities to expand along with the depth value. Empty means expand all at depth level N"
          },
          {
            "in": "query",
            "name": "depth",
            "required": false,
            "type": "string",
            "description": "Depth level where objects are dereferenced and inserted as values into the response"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-Result-Count": {
                "type": "integer",
                "description": "Actual number of items returned in the response body"
              },
              "X-Total-Count": {
                "type": "integer",
                "description": "Total number of items matching criteria"
              }
            },
            "schema": {
              "items": {
                "$ref": "#/definitions/TroubleTicket"
              },
              "type": "array"
            }
          },
          "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"
            }
          }
        }
      },
      "post": {
        "operationId": "createTroubleTicket",
        "summary": "Creates a TroubleTicket",
        "description": "This operation creates a TroubleTicket entity.",
        "tags": [
          "troubleTicket"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "troubleTicket",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicket_Create"
            },
            "description": "The TroubleTicket to be created"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/TroubleTicket"
            }
          },
          "202": {
            "description": "Accepted"
          },
          "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"
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/troubleTicket/{id}": {
      "get": {
        "operationId": "retrieveTroubleTicket",
        "summary": "Retrieves a TroubleTicket by ID",
        "description": "This operation retrieves a TroubleTicket entity. Attribute selection is enabled for all first level attributes.",
        "tags": [
          "troubleTicket"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string",
            "description": "Identifier of the TroubleTicket"
          },
          {
            "in": "query",
            "name": "fields",
            "required": false,
            "type": "string",
            "description": "Comma-separated properties to be provided in response"
          },
          {
            "in": "query",
            "name": "expand",
            "required": false,
            "type": "string",
            "description": "Lists the sub-entities to expand along with the depth value. Empty means expand all at depth level N"
          },
          {
            "in": "query",
            "name": "depth",
            "required": false,
            "type": "string",
            "description": "Depth level where objects are dereferenced and inserted as values into the response"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/TroubleTicket"
            }
          },
          "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": "patchTroubleTicket",
        "summary": "Updates partially a TroubleTicket",
        "description": "This operation updates partially a TroubleTicket entity.",
        "tags": [
          "troubleTicket"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string",
            "description": "Identifier of the TroubleTicket"
          },
          {
            "in": "body",
            "name": "troubleTicket",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicket_Update"
            },
            "description": "The TroubleTicket to be updated"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated",
            "schema": {
              "$ref": "#/definitions/TroubleTicket"
            }
          },
          "204": {
            "description": "No Content"
          },
          "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"
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteTroubleTicket",
        "summary": "Deletes a TroubleTicket",
        "description": "This operation deletes a TroubleTicket entity.",
        "tags": [
          "troubleTicket"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string",
            "description": "Identifier of the TroubleTicket"
          }
        ],
        "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"
            }
          },
          "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": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EventSubscriptionInput"
            },
            "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": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string",
            "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/troubleTicketCreateEvent": {
      "post": {
        "operationId": "listenToTroubleTicketCreateEvent",
        "summary": "Client listener for entity TroubleTicketCreateEvent",
        "description": "Example of a client listener for receiving the notification TroubleTicketCreateEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicketCreateEvent"
            },
            "description": "The event data"
          }
        ],
        "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"
            }
          }
        }
      }
    },
    "/listener/troubleTicketAttributeValueChangeEvent": {
      "post": {
        "operationId": "listenToTroubleTicketAttributeValueChangeEvent",
        "summary": "Client listener for entity TroubleTicketAttributeValueChangeEvent",
        "description": "Example of a client listener for receiving the notification TroubleTicketAttributeValueChangeEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicketAttributeValueChangeEvent"
            },
            "description": "The event data"
          }
        ],
        "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"
            }
          }
        }
      }
    },
    "/listener/troubleTicketStatusChangeEvent": {
      "post": {
        "operationId": "listenToTroubleTicketStatusChangeEvent",
        "summary": "Client listener for entity TroubleTicketStatusChangeEvent",
        "description": "Example of a client listener for receiving the notification TroubleTicketStatusChangeEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicketStatusChangeEvent"
            },
            "description": "The event data"
          }
        ],
        "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"
            }
          }
        }
      }
    },
    "/listener/troubleTicketDeleteEvent": {
      "post": {
        "operationId": "listenToTroubleTicketDeleteEvent",
        "summary": "Client listener for entity TroubleTicketDeleteEvent",
        "description": "Example of a client listener for receiving the notification TroubleTicketDeleteEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicketDeleteEvent"
            },
            "description": "The event data"
          }
        ],
        "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"
            }
          }
        }
      }
    },
    "/listener/troubleTicketResolvedEvent": {
      "post": {
        "operationId": "listenToTroubleTicketResolvedEvent",
        "summary": "Client listener for entity TroubleTicketResolvedEvent",
        "description": "Example of a client listener for receiving the notification TroubleTicketResolvedEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicketResolvedEvent"
            },
            "description": "The event data"
          }
        ],
        "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"
            }
          }
        }
      }
    },
    "/listener/troubleTicketInformationRequiredEvent": {
      "post": {
        "operationId": "listenToTroubleTicketInformationRequiredEvent",
        "summary": "Client listener for entity TroubleTicketInformationRequiredEvent",
        "description": "Example of a client listener for receiving the notification TroubleTicketInformationRequiredEvent",
        "tags": [
          "notification listeners (client side)"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "data",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TroubleTicketInformationRequiredEvent"
            },
            "description": "The event data"
          }
        ],
        "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": {
    "Attachment": {
      "description": "Complements the description of an element (for instance a product) through video, pictures...",
      "allOf": [
        {
          "$ref": "#/definitions/Entity"
        },
        {
          "properties": {
            "id": {
              "type": "string",
              "description": "Unique identifier for this particular attachment"
            },
            "href": {
              "type": "string",
              "description": "URI for this Attachment"
            },
            "attachmentType": {
              "type": "string",
              "description": "Attachment type such as video, picture"
            },
            "content": {
              "type": "string",
              "description": "The actual contents of the attachment object, if embedded, encoded as base64"
            },
            "description": {
              "type": "string",
              "description": "A narrative text describing the content of the attachment"
            },
            "mimeType": {
              "type": "string",
              "description": "Attachment mime type such as extension file for video, picture and document"
            },
            "name": {
              "type": "string",
              "description": "The name of the attachment"
            },
            "url": {
              "type": "string",
              "description": "Uniform Resource Locator, is a web page address (a subset of URI)"
            },
            "size": {
              "$ref": "#/definitions/Quantity",
              "description": "The size of the attachment."
            },
            "validFor": {
              "$ref": "#/definitions/TimePeriod",
              "description": "The period of time for which the attachment is valid"
            }
          }
        }
      ]
    },
    "AttachmentRef": {
      "description": "Attachment reference. An attachment complements the description of an element (for instance a product) through video, pictures",
      "allOf": [
        {
          "$ref": "#/definitions/EntityRef"
        },
        {
          "properties": {
            "description": {
              "type": "string",
              "description": "A narrative text describing the content of the attachment"
            },
            "url": {
              "type": "string",
              "description": "Link to the attachment media/content"
      

# --- truncated at 32 KB (123 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bell-canada/refs/heads/main/openapi/bell-canada-trouble-ticket-api-openapi.json