{ "swagger" : "2.0", "info" : { "description" : "TMF654 Prepay Balance Management", "version" : "1.0.0", "title" : "Balance Management" }, "basePath" : "/balanceManagement/v1/", "tags" : [ { "name" : "bucket" }, { "name" : "accumulatedBalance" }, { "name" : "topupBalance" }, { "name" : "adjustBalance" }, { "name" : "transferBalance" }, { "name" : "eventsSubscription" } ], "schemes" : [ "http", "https" ], "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "paths" : { "/bucket" : { "get" : { "tags" : [ "bucket" ], "summary" : "List or find 'bucket' objects", "operationId" : "retrieveBuckets", "parameters" : [ ], "responses" : { "200" : { "description" : "Successful", "schema" : { "$ref" : "#/definitions/BucketBalance" } }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/bucket/{bucketId}" : { "get" : { "tags" : [ "bucket" ], "summary" : "This operation lists a individual bucket entites", "operationId" : "retrieveBucket", "parameters" : [ { "name" : "bucketId", "in" : "path", "description" : "Id of the bucket to fetch", "required" : true, "type" : "string" } ], "responses" : { "200" : { "description" : "Successful", "schema" : { "$ref" : "#/definitions/BucketBalance" } }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false }, "delete" : { "tags" : [ "bucket" ], "summary" : "This operation deletes a 'bucket' by Id", "operationId" : "bucketDelete", "parameters" : [ { "name" : "bucketId", "in" : "path", "description" : "identity of the bucket", "required" : true, "type" : "string" } ], "responses" : { "204" : { "description" : "Success" }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/product/{id}/accumulatedBalance" : { "get" : { "tags" : [ "accumulatedBalance" ], "summary" : "This operation lists total balance or an aggregation of a set of buckets", "operationId" : "retrieveAccumulatedBalanceOfProduct", "parameters" : [ { "name" : "id", "in" : "path", "description" : "Id of the product", "required" : true, "type" : "string" } ], "responses" : { "200" : { "description" : "Balance information was returned successfully", "schema" : { "$ref" : "#/definitions/AccumulatedBalance" } }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/service/{id}/accumulatedBalance" : { "get" : { "tags" : [ "accumulatedBalance" ], "summary" : "This operation lists total balance or an aggregation of a set of buckets", "operationId" : "retrieveAccumulatedBalanceOfService", "parameters" : [ { "name" : "id", "in" : "path", "description" : "Id of the product", "required" : true, "type" : "string" } ], "responses" : { "200" : { "description" : "Balance information was returned successfully", "schema" : { "$ref" : "#/definitions/AccumulatedBalance" } }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/product/{id}/balanceTopup" : { "post" : { "tags" : [ "topupBalance" ], "summary" : "Create a new top-up operation for a given prodcut", "operationId" : "createNewTopupProduct", "parameters" : [ { "name" : "id", "in" : "path", "description" : "Id of the product", "required" : true, "type" : "string" }, { "in" : "body", "name" : "TopUp Body", "description" : "The request body.", "required" : true, "schema" : { "$ref" : "#/definitions/BalanceTopupBody" } } ], "responses" : { "201" : { "description" : "Successful", "schema" : { "$ref" : "#/definitions/BalanceTopupBody" } }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/service/{id}/balanceTopup" : { "post" : { "tags" : [ "topupBalance" ], "summary" : "Create a new top-up operation for a given service", "operationId" : "createNewTopupService", "parameters" : [ { "name" : "id", "in" : "path", "description" : "Id of the service", "required" : true, "type" : "string" }, { "in" : "body", "name" : "TopUp Body", "description" : "The request body.", "required" : true, "schema" : { "$ref" : "#/definitions/BalanceTopupBody" } } ], "responses" : { "201" : { "description" : "Successful", "schema" : { "$ref" : "#/definitions/BalanceTopupBody" } }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/balanceAdjustment" : { "post" : { "tags" : [ "adjustBalance" ], "summary" : "Perform a balance adjustment", "operationId" : "CreateAdjustment", "parameters" : [ { "in" : "body", "name" : "AdjustmentBody", "description" : "The Adjustment to be created.", "required" : true, "schema" : { "$ref" : "#/definitions/BalanceAdjustmentBody" } } ], "responses" : { "204" : { "description" : "Adjusted" }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/hub" : { "post" : { "tags" : [ "eventsSubscription" ], "summary" : "Register a subscriber", "operationId" : "registerSubscriber", "parameters" : [ { "in" : "body", "name" : "data", "description" : "Data containing the callback endpoint to deliver the information", "required" : true, "schema" : { "$ref" : "#/definitions/EventSubscriptionInput" } } ], "responses" : { "201" : { "description" : "Created" }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } }, "/hub/{id}" : { "delete" : { "tags" : [ "eventsSubscription" ], "summary" : "This operation deletes a 'subscriber' by Id", "operationId" : "deleteSubscriber", "parameters" : [ { "name" : "id", "in" : "path", "description" : "identity of the subscriber", "required" : true, "type" : "string" } ], "responses" : { "204" : { "description" : "Success" }, "400" : { "description" : "Bad Request" }, "404" : { "description" : "Not Found" }, "500" : { "description" : "Internal Server Error" } }, "deprecated" : false } } }, "definitions" : { "BucketBalance" : { "properties" : { "id" : { "type" : "string", "description" : "Unique Identifier within the server for the bucket" }, "href" : { "type" : "string", "description" : "A resource URI pointing to the resource in the OB that stores the detailed information for the bucket" }, "remainedAmount" : { "description" : "Amount remained in the bucket", "$ref" : "#/definitions/QuantityType" }, "validFor" : { "description" : "The period for which the balance in the bucket is valid", "$ref" : "#/definitions/TimePeriodType" }, "product" : { "type" : "array", "description" : "A reference to the product whose consumption is managed by the bucket.", "items" : { "$ref" : "#/definitions/ProductRefType" } }, "price" : { "type" : "string", "description" : "The name of a Product Offering Price (POP) to which this Bucket is exclusively available." } }, "description" : "Represents and tracks the amount remained or owed for a certain type of service by certain customer" }, "AccumulatedBalance" : { "properties" : { "id" : { "type" : "string", "description" : "Unique Identifier within the server for the product" }, "totalBalance" : { "description" : "Aggregated for a set of prepay balance buckets associated to the product", "$ref" : "#/definitions/QuantityType" }, "bucket" : { "type" : "array", "description" : "A reference to the buckets involved in the aggregation", "items" : { "$ref" : "#/definitions/BucketBalanceRefType" } }, "product" : { "type" : "array", "description" : "A reference to the product whose consumption is managed by the bucket . This is an array to allow scenarios where a buckets are shared between different products", "items" : { "$ref" : "#/definitions/ProductRefType" } } }, "description" : "Represents and tracks the aggregated amount remained or owed in certain account which is owned by certain customer for a set of buckets." }, "BalanceTopupBody" : { "properties" : { "remainedAmount" : { "description" : "Amount (can be monetary or non-monetary) to be recharged in the bucket", "$ref" : "#/definitions/QuantityType" } } }, "BalanceAdjustmentBody" : { "properties" : { "type" : { "type" : "string", "description" : "A preconfigured value that describes a TopUp type which determines the prepay balance bucket in which the top-up is done (national-voice, roaming-voice, promotional-voice, data, ....)" }, "amount" : { "description" : "Amount (can be monetary or non-monetary) to be recharged in the bucket. It could refer to positive (increment) or negative (decrement) values", "$ref" : "#/definitions/QuantityType" }, "product" : { "description" : "A reference to the product related to the bucket that is impacted by the balance related operation", "$ref" : "#/definitions/ProductRefType" }, "service" : { "description" : "A reference to the service related to the bucket that is impacted by the balance related operation", "$ref" : "#/definitions/ServiceRefType" } } }, "BucketBalanceRefType" : { "required" : [ "href", "id" ], "properties" : { "id" : { "type" : "string", "description" : "Unique identifier for the bucket entity" }, "href" : { "type" : "string", "description" : "A resource URI pointing to the resource in the OB that stores the balance information for a bucket" } }, "description" : "link to the resource that holds bucket balance information" }, "ProductRefType" : { "required" : [ "href", "id" ], "properties" : { "id" : { "type" : "string", "description" : "Unique identifier for the product entity" }, "href" : { "type" : "string", "description" : "A resource URI pointing to the resource in the OB that stores the product information" }, "name" : { "type" : "string", "description" : "Name of the product" } }, "description" : "Representation of a resource that holds information about the product that is linked to the bucket balance." }, "ServiceRefType" : { "required" : [ "href", "id" ], "properties" : { "id" : { "type" : "string", "description" : "Unique identifier for the service entity" }, "href" : { "type" : "string", "description" : "A resource URI pointing to the resource in the OB that stores the service information" } }, "description" : "Representation of a resource that holds information about the service that is linked to the bucket balance." }, "QuantityType" : { "properties" : { "amount" : { "type" : "string", "description" : "Measured amount" }, "units" : { "type" : "string", "description" : "Units the quantity is measured in" } }, "description" : "Representation of a quantity of something" }, "TimePeriodType" : { "properties" : { "startDateTime" : { "type" : "string", "format" : "date-time", "description" : "Start date of the period" }, "endDateTime" : { "type" : "string", "format" : "date-time", "description" : "End date of the period" } }, "description" : "Representation of a time period" }, "EventSubscriptionInput" : { "type" : "object", "required" : [ "callback" ], "properties" : { "callback" : { "type" : "string", "description" : "The callback being registered." }, "query" : { "type" : "string", "description" : "additional data to be passed" } }, "description" : "Sets the communication endpoint address the service instance must use to deliver notification information" } } }