Airtel Locate API

Airtel Locate is the operator's network-based device-location platform, letting enterprises track a device by MSISDN without relying on the device's GPS. Published as an OpenAPI 3.0.0 catalogue (version 1.4.8) of 19 operations across five areas — Authorization, Resource Consent, Location, Address Validation and Tenant management — with explicit subscriber consent capture and an asynchronous mode that posts location to a customer-registered callback listener. This is Airtel's proprietary location API, not the CAMARA Device Location or Location Verification API. Documented publicly with Redoc, no login required.

OpenAPI Specification

bharti-airtel-locate-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: "Airtel Locate platform enables enterprises and small businesses to easily track device\
    \ location to enhance their IoT use cases irrespective of device's GPS capabilities. Airtel Locate\
    \ APIs will allow you to easily get Assets' location and manage consent. \n\nKey word : \n* MSISDN\
    \ – represents a valid 10 or 13 digit airtel mobile number \n* Locate – Airtel Locate platform\n*\
    \ Resource – a resource is equivalent to a MSISDN\n* Location – location of the resource \n* License\
    \ – represents an Airtel Locate customer’s commercial license to use location API’s "
  version: 1.4.8
  title: Locate API Catalog
  contact:
    name: Support
    email: locate.support@airtel.com
tags:
- name: Authorization API
  description: This API will help you to generate token from the client credentials shared upon subscription
    to location services. In case you have not yet subscribed to location service, email us to locate.support@airtel.com
- name: Resource Consent API
  description: This set of APIs allow customer initiate consent, fetch consent details, delete resource,
    fetch list of msisdn for consent was initiated and various other API to handle consumer msisdn's and
    their consent
- name: Location API
  description: This API will return location of MSISDN including Latitude and Longitude.
- name: Validation API
  description: These set of APIs allow customer to validate a physical address against network fetched
    live location. To get access to these API's please email to  locate.support@airtel.com
- name: Tenant API
  description: '

    These set of Tenant APIs allow customer to initiate consent, fetch consent details, delete consent,
    fetch list of msisdn for consent was initiated and various other API to handle tenant msisdn''s and
    their consent.

    '
paths:
  /locate/apis/customers/{customerBaId}/oauth2_token:
    post:
      tags:
      - Authorization API
      summary: Generate Oauth token
      description: This API will generate Access Token for given scope. Generated token will be valid
        for 24 hours. To access Airtel Locate APIs, user will need generated access token.
      operationId: getOrCreateOauthTokenUsingPOST_2
      parameters:
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessTokenRequest'
        description: credentials
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OauthAccessToken'
        '400':
          description: Bad request for invalid scope
        '401':
          description: Unauthorized
        '404':
          description: Customer BA ID not found
      deprecated: false
  /locate/apis/customers/{customerBaId}/resources:
    get:
      tags:
      - Resource Consent API
      summary: Fetch MSISDNs
      description: "This API returns the list of resource registered by customer for location tracking.\
        \ Optional query params consent, tracking and daysSinceLastLocationFetched can be used to further\
        \ filter the result.This API returns the list of resource for which consent initiated by customer\
        \ for location tracking. \n\n"
      operationId: findAllUsingGET_2
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: consent
        in: query
        description: consent
        required: false
        allowEmptyValue: false
        example: PENDING
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: daysSinceLastLocationFetched
        in: query
        description: daysSinceLastLocationFetched
        required: false
        allowEmptyValue: false
        example: '10'
        schema:
          type: string
      - name: page
        in: query
        description: Page to be returned (0..N)
        required: false
        schema:
          type: ref
          default: '0'
      - name: size
        in: query
        description: Number of records per page.
        required: false
        schema:
          type: ref
          default: '20'
      - name: tracking
        in: query
        description: tracking
        required: false
        allowEmptyValue: false
        example: 'true'
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponseDto'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      deprecated: false
  /locate/apis/customers/{customerBaId}/resources/consent:
    post:
      tags:
      - Resource Consent API
      summary: Initiate Consent
      description: "This API shall allow the customer to initiate consent on number prefixed by 91 via\
        \ available channel. Current supported channels are IVR and SMS. \n Use this to \n - Initiating\
        \ new consent\n - Initiating consent if current state is REJECTED \n - Initiate consent in different\
        \ language then previous\n\n> *__Supported Language__*\n> *English(en) | Hindi(hi) | Assamese(as)\
        \ | Bengali(bn) | Oriya(or) | Kannada(kn) | Malayalam(ml) | Tamil(ta) | Telugu(te)*\n\n__Sample\
        \ Message__:\n - __Customer with short code__ :To allow ABC Pvt Ltd. to fetch your location using\
        \ your SIM Provider, please reply \"Y\" (Toll Free). \n - __Customer without short code__: To\
        \ allow ABC Pvt Ltd. to fetch your location using your SIM Provider, please reply \"{unique_id}\
        \ Y\" (Toll Free)."
      operationId: initiateConsentUsingPOST_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsentRequest'
        description: consentRequest
        required: true
      responses:
        '202':
          description: accepted
        '400':
          description: "Bad Request\n   • Invalid language\n   • Not an airtel number\n   • Invalid channel"
        '401':
          description: Unauthorized
        '403':
          description: Forbidden consent state or channel
      deprecated: false
  /locate/apis/customers/{customerBaId}/resources/{msisdn}:
    get:
      tags:
      - Resource Consent API
      summary: Search Resource
      description: This API will return the details for requested MSISDN like name, consent status and
        tracking status.
      operationId: searchUsingGET_2
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponseDto'
      deprecated: false
    delete:
      tags:
      - Resource Consent API
      summary: Remove MSISDN
      description: This API will allow you to remove a MSISDN. It requires customer ID and MSISDN to be
        deleted.
      operationId: deleteResourceUsingDELETE_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Deleted Successfully
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Msisdn not found for customer
      deprecated: false
    patch:
      tags:
      - Resource Consent API
      summary: Modify Resource
      description: 'API to modify tracking and alias(name) for registered msisdn.

        '
      operationId: patchResourceUsingPATCH_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/ResourcePatchOptions'
      responses:
        '204':
          description: Successfully updated
        '400':
          description: Bad Request in case of bad json body
        '401':
          description: Unauthorized
        '403':
          description: Forbidden if number issued licenses exhausted
        '404':
          description: Msisdn not found for customer
      deprecated: false
  /locate/apis/customers/{customerBaId}/resources/{msisdn}/consent:
    get:
      tags:
      - Resource Consent API
      summary: Fetch Consent Details
      description: "API to get the consent details insight\n>  *__Consent  States__*    -- _PROCESSING\
        \ | INITIATED | PENDING | ALLOWED | REJECTED | FAILED_\n\n*__Consent Events Types__*  -- _MT |\
        \ DR | MO | CALL | CDR_\n\n - _MT- Event when platform sends consent via SMS_\n - _DR- Event when\
        \ delivery report is received against a sent MT event_\n - _MO- Event when platform receives a\
        \ valid consent sent by user via SMS_\n - _CALL- Event when platform initiates consent call via\
        \ IVR_\n - _CDR- Event when platform receives call data record  against the initiated CALL event_\n\
        \n"
      operationId: getConsentUsingGET_2
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Msisdn not found for customer
      deprecated: false
  /locate/apis/customers/{customerBaId}/resources/{msisdn}/location:
    get:
      tags:
      - Location API
      summary: Get Location
      description: This API shall allow user to fetch the location of the registered resource. The access
        token must be generated with “location” scope for using this API. The value for query parameter
        “type” is ”sync” for synchronous request and ”async” for asynchronous request and the default
        value is ”sync”. Customer need to register the callback listener for the async API where Locate
        would post the location.
      operationId: getLocationUsingGET_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: type
        in: query
        description: type
        required: true
        allowEmptyValue: false
        example: async
        schema:
          type: string
          default: sync
      responses:
        '200':
          description: Ok - successful synchronous location request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationResponse'
        '202':
          description: Accepted - successful asynchronous location request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncCorrelationId'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: "Forbidden-  \n Subscription expired | Subscription limit reached || resource has\
            \ not given consent | tracking is disabled | callback url is not registered"
        '404':
          description: Not Found
        '429':
          description: Request for location fetch can before location rate issues in license| Location
            request in progress for given msisdn
        '502':
          description: "Error in Fetching location of msisdn because of network error in HLR, \n MME,\
            \ MSC. The ~5-10% of such error is expected."
      deprecated: false
  /locate/apis/customers/{customerBaId}/resources/{msisdn}/validation/address:
    post:
      tags:
      - Validation API
      summary: Address validation API
      description: API to get the distance between live network location and given physical address.
      operationId: addressValidationUsingPOST_1
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/AddressValidationDto'
      responses:
        '200':
          description: Ok - successful address validation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressValidationResponseDto'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: "Forbidden-  \nresource has not given consent | tracking is disabled "
        '404':
          description: Not Found
        '502':
          description: "Error in Fetching location of msisdn because of network error in HLR, \n MME,\
            \ MSC. The ~5-10% of such error is expected.| Error retrieving geocode while processing request.\
            \ Please try again!"
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants:
    get:
      tags:
      - Tenant API
      summary: Fetch Customer Tenants
      description: 'This API returns the list of tenants registered by customer.

        '
      operationId: getCustomerTenantsUsingGET_1
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: organizationName
        in: query
        description: organizationName
        required: false
        schema:
          type: string
      - name: pageNumber
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: pageSize
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: paged
        in: query
        required: false
        schema:
          type: boolean
      - name: profileNeeded
        in: query
        description: profileNeeded
        required: false
        schema:
          type: string
      - name: sort.sorted
        in: query
        required: false
        schema:
          type: boolean
      - name: sort.unsorted
        in: query
        required: false
        schema:
          type: boolean
      - name: unpaged
        in: query
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerTenantResponseDto'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/consent/purpose:
    get:
      tags:
      - Tenant API
      summary: Fetch Tenant Consent purpose
      description: "This API returns the list of available tenant consent purpose for initiating consent.\
        \ This API returns the list of consent purpose for which consent can be initiated by customer\
        \ for location tracking. \n\n"
      operationId: getAllConsentPurposeUsingGET_1
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: pageNumber
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: pageSize
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: paged
        in: query
        required: false
        schema:
          type: boolean
      - name: sort.sorted
        in: query
        required: false
        schema:
          type: boolean
      - name: sort.unsorted
        in: query
        required: false
        schema:
          type: boolean
      - name: unpaged
        in: query
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentPurpose'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/{tenantId}/resources:
    get:
      tags:
      - Tenant API
      summary: Fetch MSISDNs
      description: "This API returns the list of resource registered by customer for location tracking.\
        \ Optional query params consent, tracking and daysSinceLastLocationFetched can be used to further\
        \ filter the result.This API returns the list of resource for which consent initiated by customer\
        \ for location tracking. \n\n"
      operationId: findAllUsingGET_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: consent
        in: query
        description: consent
        required: false
        allowEmptyValue: false
        example: PENDING
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: daysSinceLastLocationFetched
        in: query
        description: daysSinceLastLocationFetched
        required: false
        allowEmptyValue: false
        example: '10'
        schema:
          type: string
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: pageNumber
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: pageSize
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: paged
        in: query
        required: false
        schema:
          type: boolean
      - name: sort.sorted
        in: query
        required: false
        schema:
          type: boolean
      - name: sort.unsorted
        in: query
        required: false
        schema:
          type: boolean
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      - name: tracking
        in: query
        description: tracking
        required: false
        allowEmptyValue: false
        example: 'true'
        schema:
          type: string
      - name: unpaged
        in: query
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponseDto'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/{tenantId}/resources/consent:
    post:
      tags:
      - Tenant API
      summary: Initiate Consent
      description: "This API shall allow the customer to initiate consent on number prefixed by 91 via\
        \ available channel. Current supported channels are IVR and SMS. \n Use this to \n - Initiating\
        \ new consent\n - Initiating consent if current state is REJECTED \n - Initiate consent in different\
        \ language then previous\n\n> *__Supported Language__*\n> *English(en) | Hindi(hi) | Assamese(as)\
        \ | Bengali(bn) | Oriya(or) | Kannada(kn) | Malayalam(ml) | Tamil(ta) | Telugu(te)*\n\n__Sample\
        \ Message__:\n - __Customer with short code__ :To allow ABC Pvt Ltd. to fetch your location using\
        \ your SIM Provider, please reply \"Y\" (Toll Free). \n - __Customer without short code__: To\
        \ allow ABC Pvt Ltd. to fetch your location using your SIM Provider, please reply \"{unique_id}\
        \ Y\" (Toll Free)."
      operationId: initiateConsentUsingPOST_4
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenantConsentRequest'
        description: consentRequest
        required: true
      responses:
        '202':
          description: accepted
        '400':
          description: "Bad Request\n   • Invalid language\n   • Not an airtel number\n   • Invalid channel"
        '401':
          description: Unauthorized
        '403':
          description: Forbidden consent state or channel
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/{tenantId}/resources/{msisdn}:
    get:
      tags:
      - Tenant API
      summary: Search Resource
      description: This API will return the details for requested MSISDN like name, consent status and
        tracking status.
      operationId: searchUsingGET_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceResponseDto'
      deprecated: false
    delete:
      tags:
      - Tenant API
      summary: Remove MSISDN
      description: This API will allow you to remove a MSISDN. It requires customer ID and MSISDN to be
        deleted.
      operationId: deleteResourceUsingDELETE_4
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Deleted Successfully
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Msisdn not found for customer
      deprecated: false
    patch:
      tags:
      - Tenant API
      summary: Modify Resource
      description: 'API to modify tracking and alias(name) for registered msisdn.

        '
      operationId: patchResourceUsingPATCH_4
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/ResourcePatchOptions'
      responses:
        '204':
          description: Successfully updated
        '400':
          description: Bad Request in case of bad json body
        '401':
          description: Unauthorized
        '403':
          description: Forbidden if number issued licenses exhausted
        '404':
          description: Msisdn not found for customer
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/{tenantId}/resources/{msisdn}/consent:
    get:
      tags:
      - Tenant API
      summary: Fetch Consent Details
      description: "API to get the consent details insight\n>  *__Consent  States__*    -- _PROCESSING\
        \ | INITIATED | PENDING | ALLOWED | REJECTED | FAILED_\n\n*__Consent Events Types__*  -- _MT |\
        \ DR | MO | CALL | CDR_\n\n - _MT- Event when platform sends consent via SMS_\n - _DR- Event when\
        \ delivery report is received against a sent MT event_\n - _MO- Event when platform receives a\
        \ valid consent sent by user via SMS_\n - _CALL- Event when platform initiates consent call via\
        \ IVR_\n - _CDR- Event when platform receives call data record  against the initiated CALL event_\n\
        \n"
      operationId: getConsentUsingGET_3
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Msisdn not found for customer
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/{tenantId}/resources/{msisdn}/location:
    get:
      tags:
      - Tenant API
      summary: Get Location
      description: This API shall allow user to fetch the location of the registered resource. The access
        token must be generated with “location” scope for using this API. The value for query parameter
        “type” is ”sync” for synchronous request and ”async” for asynchronous request and the default
        value is ”sync”. Customer need to register the callback listener for the async API where Locate
        would post the location.
      operationId: getLocationForTenantsUsingGET_1
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      - name: type
        in: query
        description: type
        required: true
        allowEmptyValue: false
        example: async
        schema:
          type: string
          default: sync
      responses:
        '200':
          description: Ok - successful synchronous location request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationResponse'
        '202':
          description: Accepted - successful asynchronous location request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncCorrelationId'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: "Forbidden-  \n Subscription expired | Subscription limit reached || resource has\
            \ not given consent | tracking is disabled | callback url is not registered"
        '404':
          description: Not Found
        '429':
          description: Request for location fetch can before location rate issues in license| Location
            request in progress for given msisdn
        '502':
          description: "Error in Fetching location of msisdn because of network error in HLR, \n MME,\
            \ MSC. The ~5-10% of such error is expected."
      deprecated: false
  /locate/apis/customers/{customerBaId}/tenants/{tenantId}/resources/{msisdn}/validation/address:
    post:
      tags:
      - Tenant API
      summary: Address validation API
      description: API to get the distance between live network location and given physical address.
      operationId: addressValidationForTenantsUsingPOST_1
      parameters:
      - name: access_token
        in: header
        required: true
        schema:
          type: string
      - name: customerBaId
        in: path
        description: customerBaId
        required: true
        schema:
          type: string
      - name: msisdn
        in: path
        description: msisdn
        required: true
        schema:
          type: string
      - name: tenantId
        in: path
        description: tenantId
        required: true
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/AddressValidationDto'
      responses:
        '200':
          description: Ok - successful address validation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressValidati

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bharti-airtel/refs/heads/main/openapi/bharti-airtel-locate-openapi.yml