swagger: '2.0'
info:
description: >-
This API to be used to manage a Subscriber information.
version: 1.0.2
title: Subscriber Management API
host: api.mtn.com
basePath: /v1
schemes:
- https
consumes:
- application/json;charset=utf-8
produces:
- application/json;charset=utf-8
tags:
- name: subscriberinfo
securityDefinitions:
ApiKeyAuth:
type: "apiKey"
name: "X-API-Key"
in: "header"
OAuth2:
type: oauth2
flow: application
tokenUrl: "https://api.mtn.com/v1/oauth/access_token/accesstoken?grant_type=client_credentials"
security:
- ApiKeyAuth: []
- OAuth2: []
paths:
/subscriber/{id}:
get:
operationId: retrieveSubscriberinfoById
summary: Retrieves a Subscriber info by ID
description: >-
This operation retrieves a subscriber's detail based upon the filter criteria.
tags:
- subscriberinfo
parameters:
- name: id
description: Identifier of the subscriber
required: true
type: string
in: path
- name: queryType
description: "'personalDetail' will return only personal data of the subscriber, i.e., Subscriberinfo object. 'identityDetail' will return only identity information of the subscriber , i.e., SubscriberIdentification object. 'addressDetail' will return only address of the subscriber , i.e., Address object. 'deviceDetail' will return only device related information of the subscriber like puk number , imsi number etc. It will return only SubscriberAsset object in response. 'basicProfile' will return subscriber details , like- subscriber id , subscriber type, subscriber status etc. along with subscriber asset information. 'completeProfile' will return complete information of the subscriber. It will return SubscriberProfile object in response."
required: true
type: string
in: query
enum:
- personalDetail
- identityDetail
- addressDetail
- deviceDetail
- basicProfile
- completeProfile
default: basicProfile
- name: transactionId
type: string
in: header
required: false
description: Unique transaction id genereted by client system. This will be used to track requests
- name: countryCode
type: string
in: header
required: false
description: Will be used internally by application
- name: additionalFilter
type: string
in: query
required: false
description: "Reserve for future use. This can be used to further filter the response object. For example - if we want to retrieve only username a subscriber, then choose queryType as 'personalDetail' and additionalFilter as 'username'. Use comma seperation if case of retrive multiple attributes of an object"
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Response_Subscriber'
'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'
/linkednumber/{id}:
get:
operationId: retrieveLinkedNumbersById
summary: Retrieves MTN numbers linked to an ID
description: >-
This operation will be used to retrieve the linked numbers associated to an identity, which will be sent to subscriber's msisdn.
tags:
- subscriberinfo
parameters:
- name: id
description: National ID of a subscriber, which is linked to his/her subscribed MTN numbers.
required: true
type: string
in: path
- name: certificateType
type: string
in: query
required: true
description: Type of National ID
- name: serviceNumber
type: string
in: query
required: true
description: MSISDN of the subscriber
- name: transactionId
type: string
in: header
required: false
description: Unique transaction id genereted by client system. This will be used to track requests
- name: countryCode
type: string
in: header
required: false
description: Will be used internally by application
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Response_LinkedNumber'
'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:
Address:
type: object
properties:
id:
type: string
description: Unique identifier of the place
city:
type: string
description: City that the address is in
country:
type: string
description: Country that the address is in
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
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
streetType:
type: string
description: >-
alley, avenue, boulevard, brae, crescent, drive, highway, lane,
terrace, parade, place, tarn, way, wharf
streetLine1:
type: string
streetLine2:
type: string
streetLine3:
type: string
SubscriberIdentification:
type: object
description: >-
Represents our registration of information used as proof of identity by a subscriber (passport, national identity card, drivers license, social security number, birth certificate etc.)
properties:
identificationId:
type: string
description: Value of the chosen identification type
identificationType:
type: string
description: >-
Identification type (passport, national identity card, drivers
license, social security number, birth certificate etc.)
issuingAuthority:
type: string
description: >-
Authority which has issued the identifier, such as: social security,town hall etc.
issuingDate:
type: string
format: date
description: Date at which the identifier was issued
validFor:
$ref: '#/definitions/TimePeriod'
description: The period for which the identification information is valid.
Quantity:
type: object
description: An amount in a given unit
properties:
amount:
default: 1
type: number
format: float
description: Numeric value in a given unit
units:
type: string
description: Unit
TimePeriod:
type: object
description: >-
A period of time, either as a deadline (endDateTime only) a startDateTime
only, or both
properties:
endDate:
example: '1985-04-12'
type: string
description: 'End of the time period,represented as an [ISO8601-2004] YYYY-MM-DD format'
startDate:
example: '1985-04-10'
type: string
format: date
description: 'Start of the time period,represented as an [ISO8601-2004] YYYY-MM-DD format'
SubscriberAsset:
type: object
required:
- entityType
- id
properties:
id:
example: f066ffd5-e685-43bc-ad57-bfb7639decb1
type: string
description: >-
Unique identifier of referenced entity within the entity/asset pair (customerId, accountId, mobile line number, imsi number, iccid,puk number, pin number ...)
assetType:
type: string
description: >-
product/service/resource managed entities (e.g.: mobile line
subscription, video platform license, mobile equipment, device information etc). Allows identifying the specific asset within the server referenced. Supported values are implementation and application specific. Other values can be added if those listed are not enough
entityType:
type: string
description: >-
Type of managed entity (e.g.: product, resource, service, customer, account)
createDate:
type: string
description : Creation date of the asset resource,represented as an [ISO8601-2004] YYYY-MM-DD format
activationDate:
type: string
description : Activation date of the asset resource,represented as an [ISO8601-2004] YYYY-MM-DD format
role:
example: owner
type: string
description: >-
Represents the part played by an individual in relation to being
granted a set of entitlements for manageable assets (e.g.: owner,
user, viewer, ...)
Subscriberinfo:
type: object
required:
- name
properties:
firstName:
example: Jane
type: string
description: >-
First name(s) or given name(s) of the End-User. Note that in some
cultures, people can have multiple given names; all can be present, with the names being separated by space characters
middleName:
example: Mary
type: string
description: >-
Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used
lastName:
example: Doe
type: string
description: >-
Last name(s) or surname(s) or of the End-User. Note that in some
cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters
fullName:
example: Jane Mary Doe
type: string
description: >-
End-User's full name in displayable form including all name parts,
possibly including titles and suffixes, ordered according to the
End-User's locale and preferences
nickname:
example: JaneDoe
type: string
description: >-
Casual name of the End-User that may or may not be the same as the
given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael
gender:
example: female
type: string
description: >-
End-User's gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable
birthdate:
example: '1970-11-02'
type: string
description: >-
End-User's birthday, represented as an [ISO8601-2004] YYYY-MM-DD
format. The year MAY be 0000, indicating that it is omitted. To
represent only the year, YYYY format is allowed. Note that depending on the underlying platform's date related function, providing just year can result in varying month and day, so the implementers need to take this factor into account to correctly process the dates
email:
example: jane.doe@email.com
type: string
description: >-
End-User's preferred e-mail address. Its value MUST conform to the
[RFC5322] addr-spec syntax
emailVerified:
default: false
type: boolean
description: True if the user's email has been verified.
phoneNumber:
example: +250897654321
type: string
description: >-
End-User's preferred mobile number or telephone number. If it's mobile number, format will be mobile number prefixed with country code and (+) sign, for example, +25076854321. [E.164] is RECOMMENDED as the format if it is telephone number, for example, +1 (425) 555-1212 or +56 82) 6872400. If the telephone number contains an extension, it is RECOMMENDED that the extension be represented using the [RFC3966] extension syntax, for example, +1 (604) 555-1234;ext=5678
phoneNumberVerified:
default: false
type: boolean
description: True if the user's phone number has been verified.
alternateNumber:
example: +250897654543
type: string
description: >-
End-User's preferred mobile number or telephone number. If it's mobile number, format will be mobile number prefixed with country code and (+) sign, for example, +25076854321. [E.164] is RECOMMENDED as the format if it is telephone number, for example, +1 (425) 555-1212 or +56 82) 6872400. If the telephone number contains an extension, it is RECOMMENDED that the extension be represented using the [RFC3966] extension syntax, for example, +1 (604) 555-1234;ext=5678
preferredLanguage:
example: en
type: string
description: >-
End-User's locale, represented as a [RFC5646] language tag. This is typically an [ISO639-1] language code in lowercase and an [ISO3166-1] country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US
picture:
example: 'https://some.url.com/janeDoe.jpg'
type: string
description: >-
URL of the End-User's profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User
username:
example: janeDoe
type: string
description: >-
User ID of the subscriber
profile:
example: 'https://my.blog.com/janeDoe'
type: string
description: >-
URL of the End-User's profile page. The contents of this Web page
SHOULD be about the End-User
website:
example: 'https://janedoe.com'
type: string
description: >-
URL of the End-User's Web page or blog. This Web page SHOULD contain
information published by the End-User or an organization that the
End-User is affiliated with
zoneinfo:
example: America/Los_Angeles
type: string
description: >-
String from zoneinfo time zone database representing the End-User's
time zone. For example, Europe/Paris or America/Los_Angeles
Response_Subscriber:
type: object
required:
- resultCode
- resultDescription
- data
properties:
resultCode:
type: string
description: Result code. Example- '0000'
resultDescription:
type: string
description: Result message. Example- 'Successfully processed'
transactionId:
type: string
description: Transaction id returned by the provider system.
data:
$ref: '#/definitions/Subscriber'
Response_LinkedNumber:
type: object
required:
- resultCode
- resultDescription
properties:
resultCode:
type: string
description: Result code. Example- '0000'
resultDescription:
type: string
description: Result message. Example- 'Successfully processed'
transactionId:
type: string
description: Transaction id returned by the provider system.
data:
type: object
properties:
linkedNumbers:
type: array
items:
type: string
Subscriber:
type: object
properties:
subscriberId:
type: string
description: Subscriber ID
subscriberType:
type: string
description: Subscription type
enum:
- Prepaid
- Postpaid
- Hybrid
accountNumber:
type: string
description: Account number of the subscriber
serviceNumber:
type: string
description: Service number of the subscriber. This can be msisdn etc.
createDate:
type: string
description: The date of new connection,represented as an [ISO8601-2004] YYYY-MM-DD format
activationDate:
type: string
description: Activation date of new connection, represented as an [ISO8601-2004] YYYY-MM-DD format
validFor:
$ref: "#/definitions/TimePeriod"
description: Subscription period
status:
$ref : "#/definitions/StatusType"
description:
type: string
description: Blocking description etc.
effectiveDate:
type: string
description: Effective date of blocking or termination etc, represented as an [ISO8601-2004] YYYY-MM-DD
format
personalDetail:
$ref: "#/definitions/Subscriberinfo"
addressDetail:
$ref: "#/definitions/Address"
identificationDetail:
type: array
items:
$ref : "#/definitions/SubscriberIdentification"
assetDetail:
type: array
items:
$ref : "#/definitions/SubscriberAsset"
StatusType:
type: string
enum:
- Active
- Inactive
- One-Way Block
- Two-Way Block
- Termination
Error:
type: "object"
title: "Error"
required:
- "status"
- "message"
properties:
timestamp:
type: "string"
format: "date-time"
description: "Time stamp of the error"
status:
type: "string"
description: "Status/Error code returned from the provider system"
error:
type: "string"
description: "Status/Error description"
message:
type: "string"
description: "More error details and corrective measures"
path:
type: "string"
description: "the path that caused the error"