TMF648 Quote Management

The Quote Management API handles the lifecycle of commercial quotes for telecommunications products and services, supporting quote creation, pricing, approval workflow, and conversion to orders.

OpenAPI Specification

tm-forum-tmf648-quote-management-openapi.json Raw ↑
{
    "swagger": "2.0",
    "info": {
        "title": "Quote",
        "description": "**TMF API Reference : TMF 648 - Quote Management**\n\n**Release : 19.0 - June 2019**\n\nThe Quote API provides a standardized mechanism for placing a quote with all of the necessary parameters. The API consists of a simple set of operations that interact with CRM/Quote/Pricing Negotiation systems in a consistent manner. A Quote is created based on product offering(s) that is(are) defined in a catalog. The quote identifies the product or set of products that are available to a customer for pricing request, and includes product characteristics.\n\nThe Quote references the product offer(s) which (future) customer request pricing.\nQuote resource features authorization subclass to manage special pricing UC requiring authorization tracking management\n\n**Quote resource**\nA Quote can be used to request pricing between a customer and a service provider or between a service provider and a partner and vice versa. Main quote attributes are its identifier, state, priority, related dates (requested, expected, valid, completion, etc.), related parties and quote items. Main Quote Items attributes are the discribed offering and product characteristics with the related action to be performed (e.g. add, change or delete the products), location information, and product characteristics.\n\nQuote API performs the following operations on Quote :\n\n- Retrieval of a quote or a collection of quotes depending on filter criteria\n- Partial update of a quote (including updating rules)\n- Creation of a quote (including default values and creation rules)\n- Deletion of quote (for administration purposes)\n- Notification of events on quote.\n\nCopyright \u00a9 TM Forum 2019. All Rights Reserved\n\n",
        "version": "4.0.0"
    },
    "host": "serverRoot",
    "basePath": "/tmf-api/quoteManagement/v4/",
    "schemes": [
        "https"
    ],
    "consumes": [
        "application/json;charset=utf-8"
    ],
    "produces": [
        "application/json;charset=utf-8"
    ],
    "tags": [
        {
            "name": "quote"
        },
        {
            "name": "notification listeners (client side)"
        },
        {
            "name": "events subscription"
        }
    ],
    "paths": {
        "/quote": {
            "get": {
                "operationId": "listQuote",
                "summary": "List or find Quote objects",
                "description": "This operation list or find Quote entities",
                "tags": [
                    "quote"
                ],
                "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/Quote"
                            }
                        }
                    },
                    "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": "createQuote",
                "summary": "Creates a Quote",
                "description": "This operation creates a Quote entity.",
                "tags": [
                    "quote"
                ],
                "parameters": [
                    {
                        "name": "quote",
                        "description": "The Quote to be created",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/Quote_Create"
                        },
                        "in": "body"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/Quote"
                        }
                    },
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/Quote"
                        }
                    },
                    "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"
                        }
                    }
                }
            }
        },
        "/quote/{id}": {
            "get": {
                "operationId": "retrieveQuote",
                "summary": "Retrieves a Quote by ID",
                "description": "This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes.",
                "tags": [
                    "quote"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "description": "Identifier of the Quote",
                        "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/Quote"
                        }
                    },
                    "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": "patchQuote",
                "summary": "Updates partially a Quote",
                "description": "This operation updates partially a Quote entity.",
                "tags": [
                    "quote"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "description": "Identifier of the Quote",
                        "required": true,
                        "type": "string",
                        "in": "path"
                    },
                    {
                        "name": "quote",
                        "description": "The Quote to be updated",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/Quote_Update"
                        },
                        "in": "body"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Updated",
                        "schema": {
                            "$ref": "#/definitions/Quote"
                        }
                    },
                    "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"
                        }
                    }
                }
            },
            "delete": {
                "operationId": "deleteQuote",
                "summary": "Deletes a Quote",
                "description": "This operation deletes a Quote entity.",
                "tags": [
                    "quote"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "description": "Identifier of the Quote",
                        "required": true,
                        "type": "string",
                        "in": "path"
                    }
                ],
                "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": [
                    {
                        "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/quoteCreateEvent": {
            "post": {
                "operationId": "listenToQuoteCreateEvent",
                "summary": "Client listener for entity QuoteCreateEvent",
                "description": "Example of a client listener for receiving the notification QuoteCreateEvent",
                "tags": [
                    "notification listeners (client side)"
                ],
                "parameters": [
                    {
                        "name": "data",
                        "required": true,
                        "in": "body",
                        "description": "The event data",
                        "schema": {
                            "$ref": "#/definitions/QuoteCreateEvent"
                        }
                    }
                ],
                "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/quoteStateChangeEvent": {
            "post": {
                "operationId": "listenToQuoteStateChangeEvent",
                "summary": "Client listener for entity QuoteStateChangeEvent",
                "description": "Example of a client listener for receiving the notification QuoteStateChangeEvent",
                "tags": [
                    "notification listeners (client side)"
                ],
                "parameters": [
                    {
                        "name": "data",
                        "required": true,
                        "in": "body",
                        "description": "The event data",
                        "schema": {
                            "$ref": "#/definitions/QuoteStateChangeEvent"
                        }
                    }
                ],
                "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/quoteDeleteEvent": {
            "post": {
                "operationId": "listenToQuoteDeleteEvent",
                "summary": "Client listener for entity QuoteDeleteEvent",
                "description": "Example of a client listener for receiving the notification QuoteDeleteEvent",
                "tags": [
                    "notification listeners (client side)"
                ],
                "parameters": [
                    {
                        "name": "data",
                        "required": true,
                        "in": "body",
                        "description": "The event data",
                        "schema": {
                            "$ref": "#/definitions/QuoteDeleteEvent"
                        }
                    }
                ],
                "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/quoteInformationRequiredEvent": {
            "post": {
                "operationId": "listenToQuoteInformationRequiredEvent",
                "summary": "Client listener for entity QuoteInformationRequiredEvent",
                "description": "Example of a client listener for receiving the notification QuoteInformationRequiredEvent",
                "tags": [
                    "notification listeners (client side)"
                ],
                "parameters": [
                    {
                        "name": "data",
                        "required": true,
                        "in": "body",
                        "description": "The event data",
                        "schema": {
                            "$ref": "#/definitions/QuoteInformationRequiredEvent"
                        }
                    }
                ],
                "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/quoteAttributeValueChangeEvent": {


# --- truncated at 32 KB (147 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-tmf648-quote-management-openapi.json