Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/open-gateway-get-device-identifiers-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Get Device Identifiers API
version: 0.3.0
description: "# Summary\n\nThe Mobile Device Identifier API returns details of the physical mobile device currently being used by a specified mobile subscriber. The following information can be returned:\n - A unique network identifier for the specific device itself (IMEI SV and IMEI)\n - A pseudonymised network identifier for the specific device itself (Pairwise Pseudonymous Identifier)\n - A network identifier for the device make and model (IMEI Type Allocation Code)\n - Device manufacturer name and model\n\n This information can be useful in a number of scenarios, such as the following:\n - For insurance purposes, to automatically identify a device that a customer wishes to insure\n - For security / fraud reasons, to establish that a customer is not using a device they claim to have broken or lost\n - For service delivery reasons, to optimise content for a particular device or OS type\n\n# Introduction\n\nMobile devices are allocated a unique identifier by the manufacturer, known as the International Mobile Equipment Identity, or IMEI. The current software version (SV) of the device can be appended to this, in which case the identifier is known as the IMEI SV. This identifier is signalled to the mobile network when the device connects, both to confirm that the device is not blocked, and also allow device dependent network configurations to be implemented.\n\nThe IMEI is a 15 digit integer, and the IMEI SV is a 16 digit integer:\n- The first 8 digits are known as the Type Allocation Code (TAC), and identify the manufacturer and model of the device\n- The following 6 digits are the serial number of the device for that TAC\n- For IMEI, the remaining digit is a check digit\n- For IMEI SV, the remaining two digits are the software version\n\nTACs are issued and managed by the GSMA, and can be queried using the [GSMA IMEI database](https://www.gsma.com/aboutus/workinggroups/terminal-steering-group/imei-database).\n\nThe mobile network associates this device identifier with the mobile subscription currently using the device. The mobile subscription is defined by the Subscriber Identity Module (SIM) currently active in the mobile device. This may be a removable SIM or an eSIM. In either case, it is possible for the association between the device identifier and subscription to change - for example, when a physical SIM is transferred to another mobile device.\n\n\n\nThe Device Identifier API allows the API consumer to obtain the IMEI and associated parameters for a specified mobile subscription identifier or equivalent. The mobile subscription can be identified using one or more of the following subscription identifiers:\n- the subscription phone number (also known as MSISDN)\n- the subscription network access identifier, which is a domain specific identifier typically allocated to devices that do not require voice / SMS connectivity\n- the current IP address and port alloacted to the device, which must be an IPv6 or public IPv4 address\n\nThe API can be called by an API consumer to establish an identifier for the physical device currently being used by the mobile subscription. The information returned will depend upon the consent that the end user (i.e. mobile subscription owner) has given for that information to be provided to the API consumer. For example, if the end user has not consented to any information about their device being given, then the API consumer will receive an error in response to their request. Otherwise, the information that the end user has consented to being given will be returned.\n\n# Relevant terms and definitions\n\n### Device Identifier API service endpoint\nThe URL pointing to the RESTful resource of the Device Identifier API.\n\n### Identifier for the mobile subscription\nAt least one identifier for the mobile subscription from the following four options:\n - Phone number (i.e. MSISDN)\n - Network Access Identifier assigned by the mobile network operator for the device\n - IPv6 address\n - IPv4 address\n\n### Identifier for the physical mobile device\nThe IMEI or IMEISV of the physical mobile device\n\n### Pairwise Pseudonymous Identifier\nAn identifier that has been pseudonymised such that the resulting pseudonymous identifier is unique to but persistent for a given API consumer\n\n# API functionality\n\nThe API defines three service endpoints:\n\n- `POST /retrieve-identifier` to get details about the specific device being used by a given mobile subscriber, including IMEI / IMEISV and the type of device\n- `POST /retrieve-type` to get details only about the type (i.e. manufacturer and model) of device being used by a given mobile subscriber\n- `POST /retrieve-ppid` to get a pseudonymised identifier for the specific device being used by a given mobile subscriber\n\nTo call any of these endpoints, the API consumer must first obtain a valid access token from the token endpoint, which is then passed as an Authorization header. When a 2-legged access token is used, the API consumer must also pass at least one of the available mobile subscription identifiers in the body of the request.\n\nIf the request is valid, the API response is a JSON object containing the data that the end user has consented to sharing with the API consumer.\n- When calling endpoint `retrieve-identifier`, the response will always contain `imei`\n- When calling endpoint `retrieve-type`, the response will always contain `tac`\n- When calling endpoint `retrieve-ppid`, the response will always contain `ppid`\n- Responses will also always contain a `lastChecked` field, indicating when the information provided was last confirmed to be correct\n- Other response parameters are implementation dependent, and thus optional\n\nAn example of a JSON response object is as follows:\n```\n{\n \"lastChecked\": \"2024-02-20T10:41:38.657Z\",\n \"imeisv\": \"49015420323751800\",\n \"imei\": \"4901542032375181\",\n \"tac\": \"49015420\",\n \"model\": \"3110\",\n \"manufacturer\": \"Nokia\"\n}\n```\n\n## Error handling\n\nErrors may be returned for the following reasons. Note that this list is not exhaustive.\n\n`401 UNAUTHENTICATED`:\n- The access token is not a valid access token for the API provider\n- The access token was valid but has now expired\n\n`400 INVALID_ARGUMENT`:\n- The API request is not compliant with this OAS definition\n\n`400 OUT_OF_RANGE`:\n- A parameter value in the API request is outwith the range documented in this OAS definition for that parameter\n\n`404 IDENTIFIER_NOT_FOUND`:\n- The device identified by the `device` object in the request is not managed by the API provider\n\n`403 PERMISSION_DENIED`:\n- The access token does not have the required scope for the endpoint being called\n- The end user has not consented to the API consumer getting access to the device identifier information (2-legged access token only)\n\n`422 SERVICE_NOT_APPLICABLE`:\n- A device identifier cannot be provided for the identified device. For example, the phone number might identify a landline.\n\n`422 UNSUPPORTED_IDENTIFIER`:\n- A parameter provided in the `device` object is not supported by this implementation (e.g. `networkAccessIdentifier`)\n\n`422 MISSING_IDENTIFIER`:\n`422 UNNECESSARY_IDENTIFIER`:\n- See the section \"Identifying the device from the access token\" below\n\n`429 QUOTA_EXCEEDED`:\n- The API consumer has used up the quota of API requests that they were allocated for this API\n\n`429 TOO_MANY_REQUESTS`:\n- The rate at which the API consumer is sending requests has exceeded that allowed by the API provider. Try again later.\n\n### Additional CAMARA error responses\n\nThe list of error codes in this API specification is not exhaustive. Therefore the API specification may not document some non-mandatory error statuses as indicated in `CAMARA API Design Guide`.\n\nPlease refer to the `CAMARA_common.yaml` of the Commonalities Release associated to this API version for a complete list of error responses. The applicable Commonalities Release can be identified in the `API Readiness Checklist` document associated to this API version.\n\nAs a specific rule, error `501 - NOT_IMPLEMENTED` can be only a possible error response if it is explicitly documented in the API.\n\n# Further info and support\n\n## Authorization and authentication\n\nThe \"Camara Security and Interoperability Profile\" provides details of how an API consumer requests an access token. Please refer to Identity and Consent Management (https://github.com/camaraproject/IdentityAndConsentManagement/) for the released version of the profile.\n\nThe specific authorization flows to be used will be agreed upon during the onboarding process, happening between the API consumer and the API provider, taking into account the declared purpose for accessing the API, whilst also being subject to the prevailing legal framework dictated by local legislation.\n\nIn cases where personal data is processed by the API and users can exercise their rights through mechanisms such as opt-in and/or opt-out, the use of three-legged access tokens is mandatory. This ensures that the API remains in compliance with privacy regulations, upholding the principles of transparency and user-centric privacy-by-design.\n\n## Identifying the device from the access token\n\nThis API requires the API consumer to identify a device as the subject of the API as follows:\n- When the API is invoked using a two-legged access token, the subject will be identified from the optional `device` object, which therefore MUST be provided.\n\n- When a three-legged access token is used however, this optional identifier MUST NOT be provided, as the subject will be uniquely identified from the access token.\n\nThis approach simplifies API usage for API consumers using a three-legged access token to invoke the API by relying on the information that is associated with the access token and was identified during the authentication process.\n\n### Error handling:\n- If the subject cannot be identified from the access token and the optional `device` object is not included in the request, then the server will return an error with the `422 MISSING_IDENTIFIER` error code.\n\n- If the subject can be identified from the access token and the optional `device` object is also included in the request, then the server will return an error with the `422 UNNECESSARY_IDENTIFIER` error code. This will be the case even if the same device is identified by these two methods, as the server is unable to make this comparison.\n\n## Multi-SIM scenario handling\n\nIn scenarios where a main phone number is shared between multiple devices, each of which has its own individual \"secondary\" phone number (e.g. connectivity plans that let you share your airtime and data allowances with a smartwatch or eSIM-enabled tablet), the phone number passed by the API consumer will be treated as the secondary phone number, and hence the identifier returned will be that of the single device associated with that phone number (e.g. smartphone, smartwatch, or eSIM-enabled tablet).\n\nIn such scenarios, the \"primary\" device is usually allocated the same main and secondary phone numbers, and hence providing the main phone number to the API will return the identity of the primary device (usually the smartphone) and not any associated devices.\n\n(FAQs will be added in a later version of the documentation)\n"
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
x-camara-commonalities: 0.6
servers:
- url: '{apiRoot}/device-identifier/v0.3'
variables:
apiRoot:
default: http://localhost:9091
description: API root, defined by the service provider, e.g. `api.example.com` or `api.example.com/somepath`
tags:
- name: Get Device Identifiers
description: Retrieve details about the device being used by a mobile subscriber
paths:
/retrieve-identifier:
post:
summary: Get details about the specific device being used by a given mobile subscriber
description: Get details about the specific device being used by a given mobile subscriber
operationId: retrieveIdentifier
tags:
- Get Device Identifiers
security:
- openId:
- device-identifier:retrieve-identifier
parameters:
- $ref: '#/components/parameters/x-correlator'
requestBody:
description: Parameters to create a new session
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RequestBody'
examples:
Identify Device By 3-Legged Access Token:
$ref: '#/components/examples/IdentifyDeviceBy3LeggedToken'
Identify Device By Phone Number:
$ref: '#/components/examples/IdentifyDeviceByPhoneNumber'
Identify Device By IP Address:
$ref: '#/components/examples/IdentifyDeviceByIPAddress'
Identify Device By Multiple Identifiers:
$ref: '#/components/examples/IdentifyDeviceByMultipleIdentifiers'
responses:
'200':
$ref: '#/components/responses/200RetrieveIdentifier'
'400':
$ref: '#/components/responses/400BadRequest'
'401':
$ref: '#/components/responses/401Unauthorized'
'403':
$ref: '#/components/responses/403Forbidden'
'404':
$ref: '#/components/responses/404NotFound'
'422':
$ref: '#/components/responses/422UnprocessableContent'
'429':
$ref: '#/components/responses/429TooManyRequests'
/retrieve-type:
post:
summary: Get details about the type of device being used by a given mobile subscriber
description: Get details about the type of device being used by a given mobile subscriber
operationId: retrieveType
tags:
- Get Device Identifiers
security:
- openId:
- device-identifier:retrieve-type
parameters:
- $ref: '#/components/parameters/x-correlator'
requestBody:
description: Parameters to create a new session
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RequestBody'
examples:
Identify Device By 3-Legged Access Token:
$ref: '#/components/examples/IdentifyDeviceBy3LeggedToken'
Identify Device By Phone Number:
$ref: '#/components/examples/IdentifyDeviceByPhoneNumber'
Identify Device By IP Address:
$ref: '#/components/examples/IdentifyDeviceByIPAddress'
Identify Device By Multiple Identifiers:
$ref: '#/components/examples/IdentifyDeviceByMultipleIdentifiers'
responses:
'200':
$ref: '#/components/responses/200RetrieveType'
'400':
$ref: '#/components/responses/400BadRequest'
'401':
$ref: '#/components/responses/401Unauthorized'
'403':
$ref: '#/components/responses/403Forbidden'
'404':
$ref: '#/components/responses/404NotFound'
'422':
$ref: '#/components/responses/422UnprocessableContent'
'429':
$ref: '#/components/responses/429TooManyRequests'
/retrieve-ppid:
post:
summary: Get a pseudonymous identifier for device being used by a given mobile subscriber
description: Get a pseudonymous identifier for device being used by a given mobile subscriber
operationId: retrievePPID
tags:
- Get Device Identifiers
security:
- openId:
- device-identifier:retrieve-ppid
parameters:
- $ref: '#/components/parameters/x-correlator'
requestBody:
description: Parameters to identify the mobile subscription when a 2-legged access token is being used
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RequestBody'
examples:
Identify Device By 3-Legged Access Token:
$ref: '#/components/examples/IdentifyDeviceBy3LeggedToken'
Identify Device By Phone Number:
$ref: '#/components/examples/IdentifyDeviceByPhoneNumber'
Identify Device By IP Address:
$ref: '#/components/examples/IdentifyDeviceByIPAddress'
Identify Device By Multiple Identifiers:
$ref: '#/components/examples/IdentifyDeviceByMultipleIdentifiers'
responses:
'200':
$ref: '#/components/responses/200RetrievePPID'
'400':
$ref: '#/components/responses/400BadRequest'
'401':
$ref: '#/components/responses/401Unauthorized'
'403':
$ref: '#/components/responses/403Forbidden'
'404':
$ref: '#/components/responses/404NotFound'
'422':
$ref: '#/components/responses/422UnprocessableContent'
'429':
$ref: '#/components/responses/429TooManyRequests'
components:
responses:
404NotFound:
description: Not found
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorInfo'
- type: object
properties:
status:
enum:
- 404
code:
enum:
- IDENTIFIER_NOT_FOUND
examples:
Device Cannot Be Found:
description: The provided identifier cannot be matched to a device known to the API provider
value:
status: 404
code: IDENTIFIER_NOT_FOUND
message: The provided identifier cannot be matched to a device.
400BadRequest:
description: Bad Request
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorInfo'
- type: object
properties:
status:
enum:
- 400
code:
enum:
- INVALID_ARGUMENT
- OUT_OF_RANGE
examples:
Insufficient Parameters:
description: Sufficient parameters must be provided to allow the target UE to be identified
value:
status: 400
code: INVALID_ARGUMENT
message: At least one of phoneNumber, networkAccessIdentifier, ipv4Address and ipv6Address must be specified
Inconsistent Device Properties:
description: Device parameters provided identify different devices
value:
status: 400
code: INVALID_ARGUMENT
message: Multiple inconsistent device parameters specified
Invalid Network Access Identifier:
value:
status: 400
code: INVALID_ARGUMENT
message: 'Invalid format: networkAccessIdentifier'
Invalid Phone Number:
value:
status: 400
code: INVALID_ARGUMENT
message: 'Invalid format: phoneNumber'
Invalid IPv4 Address:
value:
status: 400
code: INVALID_ARGUMENT
message: 'Invalid format: ipv4Address'
Invalid IPv6 Address:
value:
status: 400
code: INVALID_ARGUMENT
message: 'Invalid format: ipv6Address'
Invalid Port Value:
value:
status: 400
code: OUT_OF_RANGE
message: 'Invalid value: ipv4Address.publicPort'
429TooManyRequests:
description: Too Many Requests
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorInfo'
- type: object
properties:
status:
enum:
- 429
code:
enum:
- QUOTA_EXCEEDED
- TOO_MANY_REQUESTS
examples:
Too Many Requests:
description: Access to the API has been temporarily blocked due to quota or spike arrest limits being reached
value:
status: 429
code: TOO_MANY_REQUESTS
message: Rate limit reached
Quota Exceeded:
description: Request is rejected due to exceeding a business quota limit
value:
status: 429
code: QUOTA_EXCEEDED
message: Out of resource quota
200RetrieveType:
description: A device identifier has been found for the specified subscriber
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
required:
- lastChecked
- tac
allOf:
- $ref: '#/components/schemas/CommonResponseBody'
- $ref: '#/components/schemas/DeviceType'
examples:
Successful Type Retrieval:
description: Device type has been successfully retrieved when the device subcsription was identified by a 3-legged access token or single device subscription identifier
value:
lastChecked: '2024-02-20T10:41:38.657Z'
tac: '49015420'
model: '3110'
manufacturer: Nokia
Successful Type Retrieval With Device Disambiguation:
description: Device type has been successfully retrieved when a 2-legged access token and multiple device subscription identifiers were provided
value:
device:
phoneNumber: '+123456789'
lastChecked: '2024-02-20T10:41:38.657Z'
tac: '49015420'
model: '3110'
manufacturer: Nokia
403Forbidden:
description: Forbidden
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorInfo'
- type: object
properties:
status:
enum:
- 403
code:
enum:
- PERMISSION_DENIED
examples:
Permision Denied:
description: Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security
value:
status: 403
code: PERMISSION_DENIED
message: Client does not have sufficient permissions to perform this action.
422UnprocessableContent:
description: Unprocessable Content
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorInfo'
- type: object
properties:
status:
enum:
- 422
code:
enum:
- SERVICE_NOT_APPLICABLE
- MISSING_IDENTIFIER
- UNSUPPORTED_IDENTIFIER
- UNNECESSARY_IDENTIFIER
examples:
Service Not Applicable For Device:
description: The service is not applicable for the identified device
value:
status: 422
code: SERVICE_NOT_APPLICABLE
message: The service is not applicable for the identified device.
Unsupported Identifier:
description: None of the provided identifiers is supported by the implementation
value:
status: 422
code: UNSUPPORTED_IDENTIFIER
message: None of the provided identifiers is supported by the implementation.
Unnecessary Identifier:
description: An explicit identifier has been provided for the device when this is already identified by the access token
value:
status: 422
code: UNNECESSARY_IDENTIFIER
message: An explicit identifier has been provided for the device when this is already identified by the access token
Missing Identifier:
description: An identifier is not included in the request and the device cannot be identified from the 2-legged access token
value:
status: 422
code: MISSING_IDENTIFIER
message: An identifier is not included in the request and the device cannot be identified from the 2-legged access token
200RetrieveIdentifier:
description: An device identifier has been found for the specified subscriber
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
required:
- lastChecked
- imei
allOf:
- $ref: '#/components/schemas/CommonResponseBody'
- $ref: '#/components/schemas/DeviceIdentifier'
- $ref: '#/components/schemas/DeviceType'
examples:
Successful Identifier Retrieval:
description: Device identifier has been successfully retrieved when the device subscription was identified by a 3-legged access token or single device subscription identifier
value:
lastChecked: '2024-02-20T10:41:38.657Z'
imeisv: '49015420323751800'
imei: '4901542032375181'
tac: '49015420'
model: '3110'
manufacturer: Nokia
Successful Identifier Retrieval With Device Disambiguation:
description: Device identifier has been successfully retrieved when a 2-legged access token and multiple device subscription identifiers were provided
value:
device:
phoneNumber: '+123456789'
lastChecked: '2024-02-20T10:41:38.657Z'
imeisv: '49015420323751800'
imei: '4901542032375181'
tac: '49015420'
model: '3110'
manufacturer: Nokia
200RetrievePPID:
description: A pseudonymous device identifier has been found for the specified mobile subscriber
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
required:
- lastChecked
- ppid
allOf:
- $ref: '#/components/schemas/CommonResponseBody'
- $ref: '#/components/schemas/DevicePPID'
examples:
Successful PPID Retrieval:
description: Device PPID has been successfully retrieved when the device subcsription was identified by a 3-legged access token or single device subscription identifier
value:
lastChecked: '2024-02-20T10:41:38.657Z'
ppid: b083f65ccdad365d7489fff24b6d5074b30c12b6d81db3404d25964ffd908813
Successful PPID Retrieval With Device Disambiguation:
description: Device PPID has been successfully retrieved when a 2-legged access token and multiple device subscription identifiers were provided
value:
device:
phoneNumber: '+123456789'
lastChecked: '2024-02-20T10:41:38.657Z'
ppid: b083f65ccdad365d7489fff24b6d5074b30c12b6d81db3404d25964ffd908813
401Unauthorized:
description: Unauthorized
headers:
x-correlator:
$ref: '#/components/headers/X-Correlator'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorInfo'
- type: object
properties:
status:
enum:
- 401
code:
enum:
- UNAUTHENTICATED
examples:
Unauthenticated Request:
description: Request cannot be authenticated and a new authentication is required
value:
status: 401
code: UNAUTHENTICATED
message: Request not authenticated due to missing, invalid, or expired credentials. A new authentication is required.
parameters:
x-correlator:
name: x-correlator
in: header
description: Correlation id for the different services
schema:
$ref: '#/components/schemas/XCorrelator'
examples:
IdentifyDeviceByMultipleIdentifiers:
description: Identifying device by multiple device identifiers
value:
device:
phoneNumber: '+123456789'
ipv4Address:
publicAddress: 84.125.93.10
publicPort: 59765
networkAccessIdentifier: 123456789@domain.com
IdentifyDeviceByPhoneNumber:
description: Identifying device by phone number
value:
device:
phoneNumber: '+123456789'
IdentifyDeviceByIPAddress:
description: Identifying device by IP address
value:
device:
ipv4Address:
publicAddress: 84.125.93.10
publicPort: 59765
IdentifyDeviceBy3LeggedToken:
description: Empty JSON when device is identified by access token
value: {}
schemas:
XCorrelator:
type: string
pattern: ^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$
example: b4333c46-49c0-4f62-80d7-f0ef930f1c46
NetworkAccessIdentifier:
description: A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator.
type: string
example: 123456789@domain.com
CommonResponseBody:
description: 'Common parameters to be included in all responses
'
properties:
device:
description: The device subscription identifier that was used to identify the device whose identifier is being returned. If this property is not present, then the device subscription identifier specified in the request was used.
allOf:
- $ref: '#/components/schemas/DeviceResponse'
- example:
phoneNumber: '+123456789'
lastChecked:
description: 'Date and time that the information was last confirmed by the mobile operator to be correct. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone.
'
type: string
format: date-time
example: '2024-02-20T10:41:38.657Z'
RequestBody:
description: Common request body to allow optional Device object to be passed
type: object
properties:
device:
$ref: '#/components/schemas/Device'
DeviceIpv4Addr:
type: object
description: 'The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers).
If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress.
If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object)
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/open-gateway/refs/heads/main/openapi/open-gateway-get-device-identifiers-api-openapi.yml