| Recurso | Descripción |
|---|---|
| Number Verification | API operation to verify a phone number received as input. It can be received either in plain text or hashed format. |
| Sim Swap | API operation related with sim swap. |
| Device Swap | API operation related with device swap. |
| KYC Match | API operation related with kyc match. |
| KYC Age Verification | API operation related with kyc age verification. |
| KYC Tenure | API operation to check the length of tenure of a subscriber. |
| Consent Information | API related with the consent information. |
| QoS Profiles | API related with the QoS Profiles. |
| QoD | API related with the QoD. |
| Authentication | API related with the Authentication. |
| Recurso | Descripción |
|---|---|
| Number Verification | API operation to verify a phone number received as input. It can be received either in plain text or hashed format. |
| Sim Swap | API operation related with sim swap. |
| Device Swap | API operation related with device swap. |
| KYC Match | API operation related with kyc match. |
| KYC Age Verification | API operation related with kyc age verification. |
| KYC Tenure | API operation to check the length of tenure of a subscriber. |
| Consent Information | API related with the consent information. |
| QoS Profiles | API related with the QoS Profiles. |
| QoD | API related with the QoD. |
| Authentication | API related with the Authentication. |
(V1) Verifies if the specified phone number (either in plain text or hashed format) matches the one that the user is currently using. Only one of the plain or hashed formats must be provided. - The number verification will be done for the user that has authenticated via mobile network - It returns true/false depending on if the hashed phone number received as input matches the authenticated user's device phone number associated to the access token
HEADER PARAMETERS
Bearer 'token'
{
"phoneNumber": "+346661113334",
"hashedPhoneNumber": "32f67ab4e4312618b09cd23ed8ce41b13e095fe52b73b2e8da8ef49830e50dba"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
hashedPhoneNumber | string | Hashed phone number. SHA-256 (in hexadecimal representation) of the mobile phone number in **E.164 format (starting with country code)**. Prefixed with '+'. |
OK OK
{
"devicePhoneNumberVerified": true
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
devicePhoneNumberVerified* | boolean | Number verification. True, if it matches |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/number-verification/v1/verify' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334",
"hashedPhoneNumber": "32f67ab4e4312618b09cd23ed8ce41b13e095fe52b73b2e8da8ef49830e50dba"
}' (V2) Verifies if the specified phone number (either in plain text or hashed format) matches the one that the user is currently using. Only one of the plain or hashed formats must be provided. - The number verification will be done for the user that has authenticated via mobile network - It returns true/false depending on if the hashed phone number received as input matches the authenticated user's device phone number associated to the access token
HEADER PARAMETERS
Bearer 'token'
{
"phoneNumber": "+346661113334",
"hashedPhoneNumber": "32f67ab4e4312618b09cd23ed8ce41b13e095fe52b73b2e8da8ef49830e50dba"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
hashedPhoneNumber | string | Hashed phone number. SHA-256 (in hexadecimal representation) of the mobile phone number in **E.164 format (starting with country code)**. Prefixed with '+'. |
OK OK
{
"devicePhoneNumberVerified": true
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
devicePhoneNumberVerified* | boolean | Number verification. True, if it matches |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/number-verification/v2/verify' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334",
"hashedPhoneNumber": "32f67ab4e4312618b09cd23ed8ce41b13e095fe52b73b2e8da8ef49830e50dba"
}' (V1) Get timestamp of last SIM swap event for a mobile user account provided with phone number.
HEADER PARAMETERS
Bearer 'token'
Create a SIM swap date request for a phone number.
{
"phoneNumber": "+346661113334"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ |
OK Contains information about SIM swap change
{
"latestSimChange": "2023-07-03T14:27:08.312+02:00"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
latestSimChange* | string (date-time) | null | Timestamp of latest SIM swap performed. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/sim-swap/v1/retrieve-date' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334"
}' (V1) Check if SIM swap has been performed during a past period
HEADER PARAMETERS
Bearer 'token'
Create a check SIM swap request for a phone number.
{
"phoneNumber": "+346661113334",
"maxAge": 240
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
maxAge | integer (int32) | Period in hours to be checked for SIM swap. | min: 1, max: 2400 | 240 |
OK Returns whether a SIM swap has been performed during a past period
{
"swapped": true
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
swapped* | boolean | Indicates whether the SIM card has been swapped during the period within the provided age. |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/sim-swap/v1/check' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334",
"maxAge": 240
}' (V0) Get timestamp of last device swap for a mobile user account provided with phone number.
HEADER PARAMETERS
Bearer 'token'
Create a device swap date request for a phone number.
{
"phoneNumber": "+346661113334"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ |
OK Contains information about Device swap change
{
"latestDeviceChange": "2023-07-03T14:27:08.312+02:00"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
latestDeviceChange* | string (date-time) | null | Timestamp of latest device swap performed. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/device-swap/v0/retrieve-date' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334"
}' (V0) Check if device swap has been performed during a past period
HEADER PARAMETERS
Bearer 'token'
Create a check device swap request for a phone number.
{
"phoneNumber": "+346661113334",
"maxAge": 240
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
maxAge | integer (int32) | Period in hours to be checked for device swap. | min: 1, max: 2400 | 240 |
OK Returns whether a device swap has been performed during a past period
{
"swapped": true
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
swapped* | boolean | Indicates whether the device has been swapped during the period within the provided age. |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/device-swap/v0/check' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334",
"maxAge": 240
}' (V0) Verify matching of a number of attributes related to a customer identity against the verified data bound to their phone number in the Operator systems. Regardless of whether the phoneNumber is explicitly stated in the request body, at least one of the other fields must be provided, otherwise a HTTP 400 - KNOW_YOUR_CUSTOMER.INVALID_PARAM_COMBINATION error will be returned. In order to proceed with the match check, some Operators may have the requirement to perform an additional level of validation based on the idDocument property. This means that, in those cases, the idDocument is required and the provided value needs to match the one stored in the Operator system associated with the indicated phoneNumber. This validation will be done before proceeding with the match check of the rest of the properties. The following two rules apply only in the cases where the Operator have the requirement to validate the idDocument: - If no idDocument is provided, then a HTTP 403 - KNOW_YOUR_CUSTOMER.ID_DOCUMENT_REQUIRED error will be returned. - If the provided idDocument does not match the one stored in the Operator systems, then a HTTP 403 - KNOW_YOUR_CUSTOMER.ID_DOCUMENT_MISMATCH error will be returned. The API will return the result of the matching process for each requested attribute. This means that the response will only contain the attributes for which validation has been requested. Possible values are: - true: the attribute provided matches with the one in the Operator systems. - false: the attribute provided does not match with the one in the Operator systems. - not_available: the attribute is not available to validate.
HEADER PARAMETERS
Bearer 'token'
{
"phoneNumber": "+34629255833",
"idDocument": "66666666q",
"name": "Federica Sanchez Arjona",
"givenName": "Federica",
"familyName": "Sanchez Arjona",
"nameKanaHankaku": "federica",
"nameKanaZenkaku": "Federica",
"middleNames": "Sanchez",
"familyNameAtBirth": "YYYY",
"address": "Tokyo-to Chiyoda-ku Iidabashi 3-10-10",
"streetName": "Nicolas Salmeron",
"streetNumber": "4",
"postalCode": "1028460",
"region": "Tokyo",
"locality": "ZZZZ",
"country": "JP",
"houseNumberExtension": "VVVV",
"birthdate": "1978-08-22",
"email": "abc@example.com",
"gender": "OTHER"
} {
"idDocument": "66666666q",
"name": "Federica Sanchez Arjona",
"givenName": "Federica",
"familyName": "Sanchez Arjona",
"nameKanaHankaku": "federica",
"nameKanaZenkaku": "Federica",
"middleNames": "Sanchez",
"familyNameAtBirth": "YYYY",
"address": "Tokyo-to Chiyoda-ku Iidabashi 3-10-10",
"streetName": "Nicolas Salmeron",
"streetNumber": "4",
"postalCode": "1028460",
"region": "Tokyo",
"locality": "ZZZZ",
"country": "JP",
"houseNumberExtension": "VVVV",
"birthdate": "1978-08-22",
"email": "abc@example.com",
"gender": "OTHER"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
idDocument | string | Id number associated to the official identity document in the country. It may contain alphanumeric characters. | ||
name | string | Complete name of the customer, usually composed of first/given name and last/family/sur- name in a country. Depending on the country, the order of first/give name and last/family/sur- name varies, and middle name could be included. It can use givenName, middleNames, familyName and/or familyNameAtBirth. For example, in ESP, name+familyName; in NLD, it can be name+middleNames+familyName or name+middleNames+familyNameAtBirth, etc. | ||
givenName | string | First/given name or compound first/given name of the customer. | ||
familyName | string | Last name, family name, or surname of the customer. | ||
nameKanaHankaku | string | Complete name of the customer in Hankaku-Kana format (reading of name) for Japan. | ||
nameKanaZenkaku | string | Complete name of the customer in Zenkaku-Kana format (reading of name) for Japan. | ||
middleNames | string | Middle name/s of the customer. | ||
familyNameAtBirth | string | Last/family/sur- name at birth of the customer. | ||
address | string | Complete address of the customer. For some countries, it is built following the usual concatenation of parameters in a country, but for other countries, this is not the case. For some countries, it can use streetName, streetNumber and/or houseNumberExtension. For example, in ESP, streetName+streetNumber; in NLD, it can be streetName+streetNumber or streetName+streetNumber+houseNumberExtension. | ||
streetName | string | Name of the street of the customer's address. It should not include the type of the street. | ||
streetNumber | string | The street number of the customer's address. Number identifying a specific property on the 'streetName'. | ||
postalCode | string | Zip code or postal code | ||
region | string | Region/prefecture of the customer's address | ||
locality | string | Locality of the customer's address | ||
country | string | Country of the customer's address. Format ISO 3166-1 alpha-2 | ||
houseNumberExtension | string | Specific identifier of the house needed depending on the property type. For example, number of apartment in an apartment building. | ||
birthdate | string (date) | The birthdate of the customer, in RFC 3339 / ISO 8601 calendar date format (YYYY-MM-DD). | ||
email | string (email) | Email address of the customer in the RFC specified format (local-part@domain). | ||
gender | string
()
MALEFEMALEOTHER | Gender of the customer (Male/Female/Other). |
OK OK
{
"idDocumentMatch": "true",
"nameMatch": "true",
"givenNameMatch": "not_available",
"familyNameMatch": "not_available",
"nameKanaHankakuMatch": "true",
"nameKanaZenkakuMatch": "false",
"middleNamesMatch": "true",
"familyNameAtBirthMatch": "false",
"familyNameAtBirthMatchScore": 90,
"addressMatch": "true",
"streetNameMatch": "true",
"streetNumberMatch": "true",
"postalCodeMatch": "true",
"regionMatch": "true",
"localityMatch": "not_available",
"countryMatch": "true",
"houseNumberExtensionMatch": "not_available",
"birthdateMatch": "false",
"emailMatch": "false",
"emailMatchScore": 87,
"genderMatch": "false"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
idDocumentMatch | string
()
truefalsenot_available | Indicates whether Id number associated to the ID document of the customer matches with the one on the Operator's system. | ||
nameMatch | string
()
truefalsenot_available | Indicates whether the complete name of the customer matches with the one on the Operator's system. | ||
nameMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
givenNameMatch | string
()
truefalsenot_available | Indicates whether First name/given name of the customer matches with the one on the Operator's system. | ||
givenNameMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
familyNameMatch | string
()
truefalsenot_available | Indicates whether last name/ family name/ surname of the customer matches with the one on the Operator's system. | ||
familyNameMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
nameKanaHankakuMatch | string
()
truefalsenot_available | Indicates whether complete name of the customer in Hankaku-Kana format (reading of name) for Japan matches with the one on the Operator's system. | ||
nameKanaHankakuMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
nameKanaZenkakuMatch | string
()
truefalsenot_available | Indicates whether complete name of the customer in Zenkaku-Kana format (reading of name) for Japan matches with the one on the Operator's system. | ||
nameKanaZenkakuMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
middleNamesMatch | string
()
truefalsenot_available | Indicates whether the middle names of the customer matches with the one on the Operator's system. | ||
middleNamesMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
familyNameAtBirthMatch | string
()
truefalsenot_available | Indicates whether the Family Name At Birth of the customer matches with the one on the Operator's system. | ||
familyNameAtBirthMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
addressMatch | string
()
truefalsenot_available | Indicates whether complete address of the customer matches with the one on the Operator's system. | ||
addressMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
streetNameMatch | string
()
truefalsenot_available | Indicates whether the street name of the customer matches with the one on the Operator's system. | ||
streetNameMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
streetNumberMatch | string
()
truefalsenot_available | Indicates whether the street number of the customer matches with the one on the Operator's system. | ||
streetNumberMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
postalCodeMatch | string
()
truefalsenot_available | Indicates whether the postal code / zip code of the customer matches with the one on the Operator's system. | ||
regionMatch | string
()
truefalsenot_available | Indicates whether the region of the customer's address matches with the one on the Operator's system. | ||
regionMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
localityMatch | string
()
truefalsenot_available | Indicates whether the locality of the customer's address matches with the one on the Operator's system. | ||
localityMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
countryMatch | string
()
truefalsenot_available | Indicates whether the country of the customer's address matches with the one on the Operator's system. | ||
houseNumberExtensionMatch | string
()
truefalsenot_available | Indicates whether the house number extension of the customer's address matches with the one on the Operator's system. | ||
birthdateMatch | string
()
truefalsenot_available | Indicates whether the birthdate of the customer matches with the one on the Operator's system. | ||
emailMatch | string
()
truefalsenot_available | Indicates whether the email address of the customer matches with the one on the Operator's system. | ||
emailMatchScore | integer | Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. | min: 0, max: 100 | |
genderMatch | string
()
truefalsenot_available | Indicates whether the gender of the customer matches with the one on the Operator's system. |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/kyc-match/v0/match' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+34629255833",
"idDocument": "66666666q",
"name": "Federica Sanchez Arjona",
"givenName": "Federica",
"familyName": "Sanchez Arjona",
"nameKanaHankaku": "federica",
"nameKanaZenkaku": "Federica",
"middleNames": "Sanchez",
"familyNameAtBirth": "YYYY",
"address": "Tokyo-to Chiyoda-ku Iidabashi 3-10-10",
"streetName": "Nicolas Salmeron",
"streetNumber": "4",
"postalCode": "1028460",
"region": "Tokyo",
"locality": "ZZZZ",
"country": "JP",
"houseNumberExtension": "VVVV",
"birthdate": "1978-08-22",
"email": "abc@example.com",
"gender": "OTHER"
}' (V0) Verify that the age of the subscriber associated with a phone number is equal to or greater than the specified age threshold value.
As it is possible that the person holding the contract and the end-user of the subscription may not be the same, the endpoint also admits a list of optional properties to be included in the request to improve the identification. The response may optionally include the identityMatchScore property with a value that indicates how certain it is that the information returned relates to the person that the API Client is requesting. To increase the reliability of the information returned, the API Provider may include in the response the verifiedStatus property, indicating whether the identity information in its possession has been verified against an identification document legally accepted as an age verification document (Note). Note: Depending on the country, credit-check or other mechanism can be used instead of official identification for Age Verification. For details, please contact API Provider.
If the API Client indicates request properties includeContentLock or includeParentalControl with value true and the API Provider implements this functionality, then the response will also include contentLock and parentalControl properties to indicate if the subscription has any kind of content filtering enabled. On the other hand, if the request properties are not included or the API Client specifies value false, then the response properties will not be returned. If the API Provider doesn't implement this functionality, request properties will be ignored and response properties won't be returned in any case.
HEADER PARAMETERS
Bearer 'token'
{
"ageThreshold": 18,
"idDocument": "66666666q",
"name": "Federica Sanchez Arjona",
"givenName": "Federica",
"familyName": "Sanchez Arjona",
"middleNames": "Sanchez",
"familyNameAtBirth": "YYYY",
"birthdate": "1978-08-22",
"email": "federicaSanchez.Arjona@example.com",
"includeContentLock": true,
"includeParentalControl": true
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
ageThreshold* | integer | The age to be verified. The indicated range is a global definition of maximum and minimum values allowed to be requested. It is important to note that this range might be more restrictive in some implementations due to local regulations of a country i.e. A country does not allow to request for an age under 18. This limitation must be informed during the onboarding process. | min: 0, max: 120 | |
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
idDocument | string | Id number associated to the official identity document in the country. It may contain alphanumeric characters. | ||
name | string | Complete name of the customer, usually composed of first/given name and last/family/sur- name in a country. Depending on the country, the order of first/give name and last/family/sur- name varies, and middle name could be included. It can use givenName, middleNames, familyName and/or familyNameAtBirth. For example, in ESP, name+familyName; in NLD, it can be name+middleNames+familyName or name+middleNames+familyNameAtBirth, etc. | ||
givenName | string | First/given name or compound first/given name of the customer. | ||
familyName | string | Last name, family name, or surname of the customer. | ||
middleNames | string | Middle name/s of the customer. | ||
familyNameAtBirth | string | Last/family/sur- name at birth of the customer. | ||
birthdate | string (date) | The birthdate of the customer, in RFC 3339 / ISO 8601 calendar date format (YYYY-MM-DD). | ||
email | string (email) | Email address of the customer in the RFC specified format (local-part@domain). | ||
includeContentLock | boolean | If this parameter is included in the request with value `true`, the response property `contentLock` will be returned. If it is not included or its value is `false`, the response property will not be returned. | false | |
includeParentalControl | boolean | If this parameter is included in the request with value `true`, the response property `parentalControl` will be returned. If it is not included or its value is `false`, the response property will not be returned. | false |
OK OK
{
"ageCheck": "true",
"verifiedStatus": true,
"identityMatchScore": 90,
"contentLock": "false",
"parentalControl": "true"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
ageCheck* | string
()
truefalsenot_available | Indicate `"true"` when the age of the user is the same age or older than the age threshold (age >= age threshold), and `"false"` if not (age < age threshold). If the API Provider doesn't have enough information to perform the validation, a `not_available` can be returned. | ||
verifiedStatus | boolean | Indicate `true` if the information provided has been compared against information based on an identification document legally accepted as an age verification document (Note), otherwise indicate `false`. Note: Depending on the country, credit-check or other mechanism can be used instead of official identification for Age Verification. For details, please contact API Provider. | ||
identityMatchScore | integer | The overall score of identity information available in the API Provider, information either provided in the request body comparing it to the one that the API Provider holds or directly using internal API Provider's information. It is optional for the API Provider to return the Identity match score. | min: 0, max: 100 | |
contentLock | string
()
truefalsenot_available | Indicate `"true"` if the subscription associated with the phone number has any kind of content lock (i.e certain web content blocked) and `"false"` if not. If the information is not available the value `not_available` can be returned. | ||
parentalControl | string
()
truefalsenot_available | Indicate `"true"` if the subscription associated with the phone number has any kind of parental control activated and `"false"` if not. If the information is not available the value `not_available` can be returned. |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/kyc-age-verification/v0/verify' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"ageThreshold": 18,
"idDocument": "66666666q",
"name": "Federica Sanchez Arjona",
"givenName": "Federica",
"familyName": "Sanchez Arjona",
"middleNames": "Sanchez",
"familyNameAtBirth": "YYYY",
"birthdate": "1978-08-22",
"email": "federicaSanchez.Arjona@example.com",
"includeContentLock": true,
"includeParentalControl": true
}' (V0) Verifies a specified length of tenure, based on a provided date, for a network subscriber to establish a level of trust for the network subscription identifier.
HEADER PARAMETERS
Bearer 'token'
{
"phoneNumber": "+34629255833",
"tenureDate": "2023-07-03"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
tenureDate* | string (date) | The date, in RFC 3339 / ISO 8601 compliant format "YYYY-MM-DD", from which continuous tenure is required to be confirmed. Must not be in the future. | pattern: ^\d{4}-\d{2}-\d{2}$ |
OK Respond with tenure information
{
"tenureDateCheck": true,
"contractType": "PAYM"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
tenureDateCheck* | boolean | `true` when the identified mobile subscription has had valid tenure since `tenureDate`, otherwise `false` | ||
contractType | string
()
PAYGPAYMBusiness | If exists, populated with: - `PAYG` - prepaid (pay-as-you-go) account - `PAYM` - contract account - `Business` - Business (enterprise) account This attribute may be omitted from the response set if the information is not available |
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/kyc-tenure/v0/check-tenure' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+34629255833",
"tenureDate": "2023-07-03"
}' (V0) Create a request to retrieve the validity status of the API Consumer data processing for a given User, scope(s) and Purpose.
HEADER PARAMETERS
Bearer 'token'
{
"phoneNumber": "+346661113334",
"scopes": [
"location-verification:verify"
],
"purpose": "dpv:FraudPreventionAndDetection",
"requestCaptureUrl": true
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
phoneNumber* | string | A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. | pattern: ^\+[1-9][0-9]{4,14}$ | |
scopes* | string[] | List of requested scopes. | minItems: 1 | |
purpose* | string | The reason for which personal data will be processed by the API Consumer. CAMARA uses the [W3C Data Privacy Vocabulary](https://w3c.github.io/dpv/2.0/dpv/) (DPV) to represent these purposes e.g. `dpv:FraudPreventionAndDetection` or `dpv:RequestedServiceProvision`. | pattern: ^dpv:[a-zA-Z0-9]+$ | |
requestCaptureUrl* | boolean | A boolean flag indicating whether the API Consumer requests API Provider to return a Consent capture URL. |
OK OK
{
"statusInfo": [
{
"scopes": [
"location-verification:verify"
],
"purpose": "dpv:FraudPreventionAndDetection",
"statusValidForProcessing": true,
"statusReason": "PENDING",
"expirationDate": "2023-07-03T14:27:08.312+02:00"
}
],
"captureUrl": "string"
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
statusInfo* | object[] | Provides information about the validity status of the requested data processing for the specified scope(s) and Purpose. | minItems: 1 | |||||||||||||||||||||||||||||||
Array items:
| ||||||||||||||||||||||||||||||||||
captureUrl | string (url) | URL where the User can provide the necessary Consent. | ||||||||||||||||||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorstringCorrelation id for the different services
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/consent-info/v0/retrieve' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"phoneNumber": "+346661113334",
"scopes": [
"location-verification:verify"
],
"purpose": "dpv:FraudPreventionAndDetection",
"requestCaptureUrl": true
}' (V1) Returns all QoS Profiles that match the given criteria.
HEADER PARAMETERS
Bearer 'token'
Parameters to query QoS Profiles for a given device
{
"device": {
"phoneNumber": "+346661113334",
"networkAccessIdentifier": "123456789@domain.com",
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"name": "voice",
"status": "ACTIVE"
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` NOTE1: the network operator might support only a subset of these options. The API consumer can provide multiple identifiers to be compatible across different operators. In this case the identifiers MUST belong to the same device. NOTE2: as for this Commonalities release, we are enforcing that the networkAccessIdentifier is only part of the schema for future-proofing, and CAMARA does not currently allow its use. After the CAMARA meta-release work is concluded and the relevant issues are resolved, its use will need to be explicitly documented in the guidelines. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
status | string
()
ACTIVEINACTIVEDEPRECATED | The current status of the QoS Profile - `ACTIVE`- QoS Profile is available to be used - `INACTIVE`- QoS Profile is not currently available to be deployed - `DEPRECATED`- QoS profile is actively being used in a QoD session, but can not be deployed in new QoD sessions | ||||||||||||||||||||||||||||||||||||||||||||||||||||
OK Contains information about QoS Profiles
[
{
"name": "voice",
"description": "QoS profile for high-quality interactive voice",
"status": "ACTIVE",
"targetMinUpstreamRate": {
"value": 100,
"unit": "kbps"
},
"targetMinDownstreamRate": {
"value": 100,
"unit": "kbps"
},
"minDuration": {
"value": 1,
"unit": "Days"
},
"maxDuration": {
"value": 10,
"unit": "Days"
},
"priority": 10,
"packetDelayBudget": {
"value": 50,
"unit": "Milliseconds"
},
"jitter": {
"value": 5,
"unit": "Milliseconds"
},
"packetErrorLossRate": 3,
"l4sQueueType": "non-l4s-queue"
}
] | Property | Type | Description | Constraints | Default | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | ||||||||||||||||
description | string | A description of the QoS profile. | |||||||||||||||||
status* | string
()
ACTIVEINACTIVEDEPRECATED | The current status of the QoS Profile - `ACTIVE`- QoS Profile is available to be used - `INACTIVE`- QoS Profile is not currently available to be deployed - `DEPRECATED`- QoS profile is actively being used in a QoD session, but can not be deployed in new QoD sessions | |||||||||||||||||
countryAvailability | object[] | A list of countries, and optionally networks, for which the API provider makes the profile available. - When profiles are filtered for a specific device (i.e. using a 3-legged access token or an explicit device filter parameter), the profile can be used by that device in any of these countries when connected to any of the listed networks (assuming roaming is permitted for networks that are not the device's home network), or the API provider's own network if no networks are listed - When there is no device filter, availability for a given country means that the QoS profile may be available to some devices connected to the listed networks in that country (or to the API provider’s default network if none are listed). However, this does not imply that the profile is available to all devices, or that a particular device will be able to use the profile across all listed countries or networks. In particular, the response does not provide enough information to determine availability for roaming for specific devices; consumers should query the API with a specific device identifier to get definitive availability. - If this field is not present in the QoS profile, no assumption can be made about the availability of the profile in any given country or for any given network | |||||||||||||||||
Array items:
| |||||||||||||||||||
targetMinUpstreamRate | object | This is the target minimum upload speed for the QoS profile. It represents the minimum rate that the network attempts to deliver. Please note that this is a target value—the network might not always be able to provide this rate under all conditions. It helps ensure that applications like video calls or live streaming perform consistently. | |||||||||||||||||
| |||||||||||||||||||
maxUpstreamRate | object | The maximum best effort data | |||||||||||||||||
| |||||||||||||||||||
maxUpstreamBurstRate | object | When defined, this is the maximum upstream burst rate for the QoS profile, that will enable the network to burst data at a higher rate than the maxUpstreamRate for a period of time. | |||||||||||||||||
| |||||||||||||||||||
targetMinDownstreamRate | object | This is the target maximum upload speed for the QoS profile. It represents the maximum rate that the network attempts to deliver. Please note that this is a target value—the network might not always be able to provide this rate under all conditions. It helps ensure that applications like video calls or live streaming perform consistently. | |||||||||||||||||
| |||||||||||||||||||
maxDownstreamRate | object | The maximum best effort rate | |||||||||||||||||
| |||||||||||||||||||
maxDownstreamBurstRate | object | When defined, this is the maximum downstream burst rate for the QoS profile, that will enable the network to burst data at a higher rate than the maxDownstreamRate for a period of time. This can result in improved user experience when there is additional network capacity. For instance, when a user is streaming a video, the network can burst data at a higher rate to fill the buffer, and then return to the maxUpstreamRate once the buffer is full. | |||||||||||||||||
| |||||||||||||||||||
minDuration | object | The shortest time period that this profile can be deployed. | |||||||||||||||||
| |||||||||||||||||||
maxDuration | object | The maximum time period that this profile can be deployed. Overall session duration must not exceed this value. This includes the initial requested duration plus any extensions. | |||||||||||||||||
| |||||||||||||||||||
priority | integer (int32) | Priority levels allow efficient resource allocation and ensure optimal performance for various services in each technology, with the highest priority traffic receiving preferential treatment. The lower value the higher priority. Not all access networks use the same priority range, so this priority will be scaled to the access network's priority range. | min: 1, max: 100 | ||||||||||||||||
packetDelayBudget | object | The packet delay budget is the maximum allowable one-way latency between the customer's device and the gateway from the operator's network to other networks. By limiting the delay, the network can provide an acceptable level of performance for various services, such as voice calls, video streaming, and data. The end-to-end or round trip latency will be about two times this value plus the latency not controlled by the operator | |||||||||||||||||
| |||||||||||||||||||
jitter | object | The jitter requirement aims to limit the maximum variation in round-trip packet delay for the 99th percentile of traffic, following ITU Y.1540 standards. It considers only acknowledged packets in a session, which are packets that receive a confirmation of receipt from the recipient (e.g., using TCP). This requirement helps maintain consistent latency, essential for real-time applications such as VoIP, video calls, and gaming. | |||||||||||||||||
| |||||||||||||||||||
packetErrorLossRate | integer (int32) | This field specifies the acceptable level of data loss during transmission. The value is an exponent of 10, so a value of 3 means that up to 10⁻³, or 0.1%, of the data packets may be lost. This setting is part of a broader system that categorizes different types of network traffic (like phone calls, video streams, or data transfers) to ensure they perform reliably on the network. | min: 1, max: 10 | ||||||||||||||||
l4sQueueType | string
()
non-l4s-queuel4s-queuemixed-queue | **NOTE**: l4sQueueType is experimental and could change or be removed in a future release. Specifies the type of queue for L4S (Low Latency, Low Loss, Scalable Throughput) traffic management. L4S is an advanced queue management approach designed to provide ultra-low latency and high throughput for internet traffic, particularly beneficial for interactive applications such as gaming, video conferencing, and virtual reality. **Queue Type Descriptions:** - **non-l4s-queue**: A traditional queue used for legacy internet traffic that does not utilize L4S enhancements. It provides standard latency and throughput levels. - **l4s-queue**: A dedicated queue optimized for L4S traffic, delivering ultra-low latency, low loss, and scalable throughput to support latency-sensitive applications. - **mixed-queue**: A shared queue that can handle both L4S and traditional traffic, offering a balance between ultra-low latency for L4S flows and compatibility with non-L4S flows. | |||||||||||||||||
serviceClass | string
()
microsoft_voicemicrosoft_audio_videoreal_time_interactivemultimedia_streamingbroadcast_videolow_latency_datahigh_throughput_datalow_priority_datastandard | **NOTE**: serviceClass is experimental and could change or be removed in a future release. The name of a Service Class, representing a QoS Profile designed to provide optimized behavior for a specific application type. While DSCP values are commonly associated with Service Classes, their use may vary across network segments and may not be applied throughout the entire end-to-end QoS session. This aligns with the serviceClass concept used in HomeDevicesQoQ for consistent terminology. Service classes define specific QoS behaviors that map to DSCP (Differentiated Services Code Point) values or Microsoft QoS traffic types. The supported mappings are: 1. Values aligned with the [RFC4594](https://datatracker.ietf.org/doc/html/rfc4594) guidelines for differentiated traffic classes. 2. Microsoft [QOS_TRAFFIC_TYPE](https://learn.microsoft.com/en-us/windows/win32/api/qos2/ne-qos2-qos_traffic_type) values for Windows developers. **Supported Service Classes**: | Service Class Name | DSCP Name | DSCP value (decimal) | DCSP value (binary) | Microsoft Value | Application Examples | |-----------------------|-----------|----------------------|---------------------|-----------------|----------------------------------------------------------------------| | Microsoft Voice | CS7 | 56 | 111000 | 4,5 | Microsoft QOSTrafficTypeVoice and QOSTrafficTypeControl | | Microsoft Audio/Video | CS5 | 40 | 101000 | 2,3 | Microsoft QOSTrafficTypeExcellentEffort and QOSTrafficTypeAudioVideo | | Real-Time Interactive | CS4 | 32 | 100000 | | Video conferencing and Interactive gaming | | Multimedia Streaming | AF31 | 26 | 011010 | | Streaming video and audio on demand | | Broadcast Video | CS3 | 24 | 011000 | | Broadcast TV & live events | | Low-Latency Data | AF21 | 18 | 010010 | | Client/server transactions Web-based ordering | | High-Throughput Data | AF11 | 10 | 001010 | | Store and forward applications | | Low-Priority Data | CS1 | 8 | 001000 | 1 | Any flow that has no BW assurance - also: | | | | | | | Microsoft QOSTrafficTypeBackground | | Standard | DF(CS0) | 0 | 000000 | 0 | Undifferentiated applications - also: | | | | | | | Microsoft QOSTrafficTypeBestEffort | | |||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/qos-profiles/v1/retrieve-qos-profiles' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"device": {
"phoneNumber": "+346661113334",
"networkAccessIdentifier": "123456789@domain.com",
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"name": "voice",
"status": "ACTIVE"
}' (V1) Returns a QoS Profile that matches the given name.
PATH PARAMETERS
Qos Profile name
HEADER PARAMETERS
Bearer 'token'
OK Contains information about QoS Profiles
{
"name": "voice",
"description": "QoS profile for video streaming",
"status": "ACTIVE",
"countryAvailability": [
{
"countryName": "GB",
"networks": [
"23591",
"23415"
]
},
{
"countryName": "DE",
"networks": [
"26202"
]
}
],
"targetMinUpstreamRate": {
"value": 10,
"unit": "bps"
},
"maxUpstreamRate": {
"value": 10,
"unit": "bps"
},
"maxUpstreamBurstRate": {
"value": 10,
"unit": "bps"
},
"targetMinDownstreamRate": {
"value": 10,
"unit": "bps"
},
"maxDownstreamRate": {
"value": 10,
"unit": "bps"
},
"maxDownstreamBurstRate": {
"value": 10,
"unit": "bps"
},
"minDuration": {
"value": 12,
"unit": "Days"
},
"maxDuration": {
"value": 12,
"unit": "Days"
},
"priority": 20,
"packetDelayBudget": {
"value": 12,
"unit": "Days"
},
"jitter": {
"value": 12,
"unit": "Days"
},
"packetErrorLossRate": 3,
"l4sQueueType": "non-l4s-queue",
"serviceClass": "real_time_interactive"
} | Property | Type | Description | Constraints | Default | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | ||||||||||||||||
description | string | A description of the QoS profile. | |||||||||||||||||
status* | string
()
ACTIVEINACTIVEDEPRECATED | The current status of the QoS Profile - `ACTIVE`- QoS Profile is available to be used - `INACTIVE`- QoS Profile is not currently available to be deployed - `DEPRECATED`- QoS profile is actively being used in a QoD session, but can not be deployed in new QoD sessions | |||||||||||||||||
countryAvailability | object[] | A list of countries, and optionally networks, for which the API provider makes the profile available. - When profiles are filtered for a specific device (i.e. using a 3-legged access token or an explicit device filter parameter), the profile can be used by that device in any of these countries when connected to any of the listed networks (assuming roaming is permitted for networks that are not the device's home network), or the API provider's own network if no networks are listed - When there is no device filter, availability for a given country means that the QoS profile may be available to some devices connected to the listed networks in that country (or to the API provider’s default network if none are listed). However, this does not imply that the profile is available to all devices, or that a particular device will be able to use the profile across all listed countries or networks. In particular, the response does not provide enough information to determine availability for roaming for specific devices; consumers should query the API with a specific device identifier to get definitive availability. - If this field is not present in the QoS profile, no assumption can be made about the availability of the profile in any given country or for any given network | |||||||||||||||||
Array items:
| |||||||||||||||||||
targetMinUpstreamRate | object | This is the target minimum upload speed for the QoS profile. It represents the minimum rate that the network attempts to deliver. Please note that this is a target value—the network might not always be able to provide this rate under all conditions. It helps ensure that applications like video calls or live streaming perform consistently. | |||||||||||||||||
| |||||||||||||||||||
maxUpstreamRate | object | The maximum best effort data | |||||||||||||||||
| |||||||||||||||||||
maxUpstreamBurstRate | object | When defined, this is the maximum upstream burst rate for the QoS profile, that will enable the network to burst data at a higher rate than the maxUpstreamRate for a period of time. | |||||||||||||||||
| |||||||||||||||||||
targetMinDownstreamRate | object | This is the target maximum upload speed for the QoS profile. It represents the maximum rate that the network attempts to deliver. Please note that this is a target value—the network might not always be able to provide this rate under all conditions. It helps ensure that applications like video calls or live streaming perform consistently. | |||||||||||||||||
| |||||||||||||||||||
maxDownstreamRate | object | The maximum best effort rate | |||||||||||||||||
| |||||||||||||||||||
maxDownstreamBurstRate | object | When defined, this is the maximum downstream burst rate for the QoS profile, that will enable the network to burst data at a higher rate than the maxDownstreamRate for a period of time. This can result in improved user experience when there is additional network capacity. For instance, when a user is streaming a video, the network can burst data at a higher rate to fill the buffer, and then return to the maxUpstreamRate once the buffer is full. | |||||||||||||||||
| |||||||||||||||||||
minDuration | object | The shortest time period that this profile can be deployed. | |||||||||||||||||
| |||||||||||||||||||
maxDuration | object | The maximum time period that this profile can be deployed. Overall session duration must not exceed this value. This includes the initial requested duration plus any extensions. | |||||||||||||||||
| |||||||||||||||||||
priority | integer (int32) | Priority levels allow efficient resource allocation and ensure optimal performance for various services in each technology, with the highest priority traffic receiving preferential treatment. The lower value the higher priority. Not all access networks use the same priority range, so this priority will be scaled to the access network's priority range. | min: 1, max: 100 | ||||||||||||||||
packetDelayBudget | object | The packet delay budget is the maximum allowable one-way latency between the customer's device and the gateway from the operator's network to other networks. By limiting the delay, the network can provide an acceptable level of performance for various services, such as voice calls, video streaming, and data. The end-to-end or round trip latency will be about two times this value plus the latency not controlled by the operator | |||||||||||||||||
| |||||||||||||||||||
jitter | object | The jitter requirement aims to limit the maximum variation in round-trip packet delay for the 99th percentile of traffic, following ITU Y.1540 standards. It considers only acknowledged packets in a session, which are packets that receive a confirmation of receipt from the recipient (e.g., using TCP). This requirement helps maintain consistent latency, essential for real-time applications such as VoIP, video calls, and gaming. | |||||||||||||||||
| |||||||||||||||||||
packetErrorLossRate | integer (int32) | This field specifies the acceptable level of data loss during transmission. The value is an exponent of 10, so a value of 3 means that up to 10⁻³, or 0.1%, of the data packets may be lost. This setting is part of a broader system that categorizes different types of network traffic (like phone calls, video streams, or data transfers) to ensure they perform reliably on the network. | min: 1, max: 10 | ||||||||||||||||
l4sQueueType | string
()
non-l4s-queuel4s-queuemixed-queue | **NOTE**: l4sQueueType is experimental and could change or be removed in a future release. Specifies the type of queue for L4S (Low Latency, Low Loss, Scalable Throughput) traffic management. L4S is an advanced queue management approach designed to provide ultra-low latency and high throughput for internet traffic, particularly beneficial for interactive applications such as gaming, video conferencing, and virtual reality. **Queue Type Descriptions:** - **non-l4s-queue**: A traditional queue used for legacy internet traffic that does not utilize L4S enhancements. It provides standard latency and throughput levels. - **l4s-queue**: A dedicated queue optimized for L4S traffic, delivering ultra-low latency, low loss, and scalable throughput to support latency-sensitive applications. - **mixed-queue**: A shared queue that can handle both L4S and traditional traffic, offering a balance between ultra-low latency for L4S flows and compatibility with non-L4S flows. | |||||||||||||||||
serviceClass | string
()
microsoft_voicemicrosoft_audio_videoreal_time_interactivemultimedia_streamingbroadcast_videolow_latency_datahigh_throughput_datalow_priority_datastandard | **NOTE**: serviceClass is experimental and could change or be removed in a future release. The name of a Service Class, representing a QoS Profile designed to provide optimized behavior for a specific application type. While DSCP values are commonly associated with Service Classes, their use may vary across network segments and may not be applied throughout the entire end-to-end QoS session. This aligns with the serviceClass concept used in HomeDevicesQoQ for consistent terminology. Service classes define specific QoS behaviors that map to DSCP (Differentiated Services Code Point) values or Microsoft QoS traffic types. The supported mappings are: 1. Values aligned with the [RFC4594](https://datatracker.ietf.org/doc/html/rfc4594) guidelines for differentiated traffic classes. 2. Microsoft [QOS_TRAFFIC_TYPE](https://learn.microsoft.com/en-us/windows/win32/api/qos2/ne-qos2-qos_traffic_type) values for Windows developers. **Supported Service Classes**: | Service Class Name | DSCP Name | DSCP value (decimal) | DCSP value (binary) | Microsoft Value | Application Examples | |-----------------------|-----------|----------------------|---------------------|-----------------|----------------------------------------------------------------------| | Microsoft Voice | CS7 | 56 | 111000 | 4,5 | Microsoft QOSTrafficTypeVoice and QOSTrafficTypeControl | | Microsoft Audio/Video | CS5 | 40 | 101000 | 2,3 | Microsoft QOSTrafficTypeExcellentEffort and QOSTrafficTypeAudioVideo | | Real-Time Interactive | CS4 | 32 | 100000 | | Video conferencing and Interactive gaming | | Multimedia Streaming | AF31 | 26 | 011010 | | Streaming video and audio on demand | | Broadcast Video | CS3 | 24 | 011000 | | Broadcast TV & live events | | Low-Latency Data | AF21 | 18 | 010010 | | Client/server transactions Web-based ordering | | High-Throughput Data | AF11 | 10 | 001010 | | Store and forward applications | | Low-Priority Data | CS1 | 8 | 001000 | 1 | Any flow that has no BW assurance - also: | | | | | | | Microsoft QOSTrafficTypeBackground | | Standard | DF(CS0) | 0 | 000000 | 0 | Undifferentiated applications - also: | | | | | | | Microsoft QOSTrafficTypeBestEffort | | |||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Internal Server Error Server error
{
"status": 500,
"code": "INTERNAL",
"message": "Server error"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Service Unavailable Service unavailable. Typically the server is down.
{
"status": 503,
"code": "UNAVAILABLE",
"message": "Service unavailable"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Request time exceeded. If it happens repeatedly, consider reducing the request complexity
{
"status": 504,
"code": "TIMEOUT",
"message": "Request timeout exceeded. Try later."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
curl -X GET 'https://apimanager-opengateway.sta.k8s.masmovil.com/qos-profiles/v1/qos-profiles/:name' \
-H 'Authorization: string' \
-H 'Accept: application/json' Create QoS Session to manage latency/throughput priorities
If the qosStatus in the API response is "AVAILABLE" and a notification callback is provided the API consumer will receive in addition to the response a
QOS_STATUS_CHANGED event notification with qosStatus as AVAILABLE.
If the qosStatus in the API response is REQUESTED, the client will receive either
QOS_STATUS_CHANGED event notification with qosStatus as AVAILABLE after the network notifies that it has created the requested session, orQOS_STATUS_CHANGED event notification with qosStatus as UNAVAILABLE and statusInfo as NETWORK_TERMINATED after the network notifies that it has failed to provide the requested session.A QOS_STATUS_CHANGED event notification with qosStatus as UNAVAILABLE will also be send if the network terminates the session before the requested duration expired
NOTES:
In case of a QOS_STATUS_CHANGED event with qosStatus as UNAVAILABLE and statusInfo as NETWORK_TERMINATED the resources of the QoS session are not directly released, but will get deleted automatically at earliest 360 seconds after the event.
This behavior allows API consumers which are not receiving notification events but are polling to get the session information with the qosStatus UNAVAILABLE and statusInfo NETWORK_TERMINATED. Before a API consumer can attempt to create a new QoD session for the same device and flow period they must release the session resources with an explicit delete operation if not yet automatically deleted.
The access token may be either 2-legged or 3-legged. See "Identifying the device from the access token" for further information
device object, which therefore MUST be provided.HEADER PARAMETERS
Bearer 'token'
Parameters to create a new session
{
"device": {
"phoneNumber": "+346661113334",
"networkAccessIdentifier": "123456789@domain.com",
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"applicationServer": {
"ipv4Address": "198.51.100.0/24",
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"devicePorts": {
"ranges": [
{
"from": 5010,
"to": 5020
}
],
"ports": [
5060,
5070
]
},
"applicationServerPorts": {
"ranges": [
{
"from": 5010,
"to": 5020
}
],
"ports": [
5060,
5070
]
},
"qosProfile": "voice",
"sink": "https://endpoint.example.com/sink",
"sinkCredential": {
"credentialType": "PLAIN"
},
"duration": 3600
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | End-user equipment able to connect to a network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE1: the network operator might support only a subset of these options. The API consumer can provide multiple identifiers to be compatible across different network operators. In this case the identifiers MUST belong to the same device. NOTE2: as for this Commonalities release, we are enforcing that the networkAccessIdentifier is only part of the schema for future-proofing, and CAMARA does not currently allow its use. After the CAMARA meta-release work is concluded and the relevant issues are resolved, its use will need to be explicitly documented in the guidelines. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServer* | object | A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
devicePorts | object | The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServerPorts | object | A list of single ports or port ranges on the application server | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
qosProfile* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sink | string (uri) | The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol. | pattern: ^https:\/\/.+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sinkCredential | object | A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
duration* | integer (int32) | Requested session duration in seconds. Value may be explicitly limited for the QoS profile, as specified in the Qos Profile (see qos-profile API). Implementations can grant the requested session duration or set a different duration, based on network policies or conditions. | min: 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||
Created Session created
{
"applicationServer": {
"ipv4Address": "198.51.100.0/24"
},
"qosProfile": "QOS_L",
"sink": "https://application-server.com/notifications",
"sessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"duration": 3600,
"qosStatus": "REQUESTED"
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | Disambiguates the device to which the session applies when multiple device identifiers were provided | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServer* | object | A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
devicePorts | object | The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServerPorts | object | A list of single ports or port ranges on the application server | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
qosProfile* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sink | string (uri) | The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol. | pattern: ^https:\/\/.+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sinkCredential | object | A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sessionId* | string (uuid) | Session ID in UUID format | ||||||||||||||||||||||||||||||||||||||||||||||||||||
duration* | integer (int32) | Session duration in seconds. Implementations can grant the requested session duration or set a different duration, based on network policies or conditions. - When `qosStatus` is "REQUESTED", the value is the duration to be scheduled, granted by the implementation. - When `qosStatus` is AVAILABLE", the value is the overall duration since `startedAt. When the session is extended, the value is the new overall duration of the session. - When `qosStatus` is "UNAVAILABLE", the value is the overall effective duration since `startedAt` until the session was terminated. | min: 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||
startedAt | string (date-time) | Date and time when the QoS status became "AVAILABLE". Not to be returned when `qosStatus` is "REQUESTED". It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
expiresAt | string (date-time) | Date and time of the QoS session expiration. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. - When `qosStatus` is "AVAILABLE", it is the limit time when the session is scheduled to finnish, if not terminated by other means. - When `qosStatus` is "UNAVAILABLE", it is the time when the session was terminated. - Not to be returned when `qosStatus` is "REQUESTED". When the session is extended, the value is the new expiration time of the session. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
qosStatus* | string
()
REQUESTEDAVAILABLEUNAVAILABLE | The current status of the requested QoS session. The status can be one of the following: * `REQUESTED` - QoS has been requested by creating a session * `AVAILABLE` - The requested QoS has been provided by the network * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason | ||||||||||||||||||||||||||||||||||||||||||||||||||||
statusInfo | string
()
DURATION_EXPIREDNETWORK_TERMINATEDDELETE_REQUESTED | Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is 'UNAVAILABLE'. * `DURATION_EXPIRED` - Session terminated due to requested duration expired * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Conflict Conflict with the current state of the server
{
"status": 409,
"code": "CONFLICT",
"message": "Request could not be completed due to a conflict with the current state of the target resource."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorunknowncurl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/quality-on-demand/v1/sessions' \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"device": {
"phoneNumber": "+346661113334",
"networkAccessIdentifier": "123456789@domain.com",
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"applicationServer": {
"ipv4Address": "198.51.100.0/24",
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"devicePorts": {
"ranges": [
{
"from": 5010,
"to": 5020
}
],
"ports": [
5060,
5070
]
},
"applicationServerPorts": {
"ranges": [
{
"from": 5010,
"to": 5020
}
],
"ports": [
5060,
5070
]
},
"qosProfile": "voice",
"sink": "https://endpoint.example.com/sink",
"sinkCredential": {
"credentialType": "PLAIN"
},
"duration": 3600
}' Querying for QoS session resource information details
NOTES:
PATH PARAMETERS
Session ID that was obtained from the createSession operation
HEADER PARAMETERS
Bearer 'token'
Correlation id for the different services
OK Contains information about active session
{
"duration": 3600,
"applicationServer": {
"ipv4Address": "198.51.100.0/24"
},
"qosProfile": "QOS_L",
"sink": "https://application-server.com/notifications",
"sessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"startedAt": "2024-06-01T12:00:00Z",
"expiresAt": "2024-06-01T13:00:00Z",
"qosStatus": "AVAILABLE"
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | Disambiguates the device to which the session applies when multiple device identifiers were provided | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServer* | object | A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
devicePorts | object | The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServerPorts | object | A list of single ports or port ranges on the application server | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
qosProfile* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sink | string (uri) | The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol. | pattern: ^https:\/\/.+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sinkCredential | object | A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sessionId* | string (uuid) | Session ID in UUID format | ||||||||||||||||||||||||||||||||||||||||||||||||||||
duration* | integer (int32) | Session duration in seconds. Implementations can grant the requested session duration or set a different duration, based on network policies or conditions. - When `qosStatus` is "REQUESTED", the value is the duration to be scheduled, granted by the implementation. - When `qosStatus` is AVAILABLE", the value is the overall duration since `startedAt. When the session is extended, the value is the new overall duration of the session. - When `qosStatus` is "UNAVAILABLE", the value is the overall effective duration since `startedAt` until the session was terminated. | min: 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||
startedAt | string (date-time) | Date and time when the QoS status became "AVAILABLE". Not to be returned when `qosStatus` is "REQUESTED". It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
expiresAt | string (date-time) | Date and time of the QoS session expiration. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. - When `qosStatus` is "AVAILABLE", it is the limit time when the session is scheduled to finnish, if not terminated by other means. - When `qosStatus` is "UNAVAILABLE", it is the time when the session was terminated. - Not to be returned when `qosStatus` is "REQUESTED". When the session is extended, the value is the new expiration time of the session. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
qosStatus* | string
()
REQUESTEDAVAILABLEUNAVAILABLE | The current status of the requested QoS session. The status can be one of the following: * `REQUESTED` - QoS has been requested by creating a session * `AVAILABLE` - The requested QoS has been provided by the network * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason | ||||||||||||||||||||||||||||||||||||||||||||||||||||
statusInfo | string
()
DURATION_EXPIREDNETWORK_TERMINATEDDELETE_REQUESTED | Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is 'UNAVAILABLE'. * `DURATION_EXPIRED` - Session terminated due to requested duration expired * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorunknowncurl -X GET 'https://apimanager-opengateway.sta.k8s.masmovil.com/quality-on-demand/v1/sessions/:sessionId' \
-H 'Authorization: string' \
-H 'x-correlator: string' \
-H 'Accept: application/json' Release resources related to QoS session
If the notification callback is provided and the qosStatus of the session was AVAILABLE the client will receive in addition to the response a QOS_STATUS_CHANGED event with
qosStatus as UNAVAILABLE andstatusInfo as DELETE_REQUESTED
There will be no notification event if the qosStatus was already UNAVAILABLE.NOTES:
PATH PARAMETERS
Session ID that was obtained from the createSession operation
HEADER PARAMETERS
Bearer 'token'
Correlation id for the different services
No Content Session deleted
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorunknowncurl -X DELETE 'https://apimanager-opengateway.sta.k8s.masmovil.com/quality-on-demand/v1/sessions/:sessionId' \
-H 'Authorization: string' \
-H 'x-correlator: string' \
-H 'Accept: application/json' Extend the overall session duration of an active QoS session (with qosStatus = AVAILABLE).
The overall duration of the QoS session, including the additional extended duration, shall not exceed the maximum duration limit fixed for the QoS Profile. If the current duration plus the value of requestedAdditionalDuration exceeds the maximum limit, the new overall duration shall be capped to the maximum value allowed.
An example: For a QoS profile limited to a maxDuration of 50,000 seconds, a QoD session was originally created with duration 30,000 seconds. Before the session expires, the developer requests to extend the session by another 30,000 seconds:
NOTES:
PATH PARAMETERS
Session ID that was obtained from the createSession operation
HEADER PARAMETERS
Bearer 'token'
Correlation id for the different services
Parameters to extend the duration of an active session
{
"requestedAdditionalDuration": 1800
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
requestedAdditionalDuration* | integer (int32) | Additional duration in seconds to be added to the current session duration. The overall session duration, including extensions, shall not exceed the maximum duration limit for the QoS Profile. | min: 1 |
OK Contains information about active session
{
"device": {
"phoneNumber": "+123456789"
},
"applicationServer": {
"ipv4Address": "198.51.100.0/24",
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"devicePorts": {
"ranges": [
{
"from": 5010,
"to": 5020
}
],
"ports": [
5060,
5070
]
},
"applicationServerPorts": {
"ranges": [
{
"from": 5010,
"to": 5020
}
],
"ports": [
5060,
5070
]
},
"qosProfile": "voice",
"sink": "https://endpoint.example.com/sink",
"sinkCredential": {
"credentialType": "PLAIN"
},
"sessionId": "string",
"duration": 3600,
"startedAt": "2024-06-01T12:00:00Z",
"expiresAt": "2024-06-01T13:00:00Z",
"qosStatus": "REQUESTED",
"statusInfo": "DURATION_EXPIRED"
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | Disambiguates the device to which the session applies when multiple device identifiers were provided | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServer* | object | A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
devicePorts | object | The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServerPorts | object | A list of single ports or port ranges on the application server | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
qosProfile* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sink | string (uri) | The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol. | pattern: ^https:\/\/.+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sinkCredential | object | A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sessionId* | string (uuid) | Session ID in UUID format | ||||||||||||||||||||||||||||||||||||||||||||||||||||
duration* | integer (int32) | Session duration in seconds. Implementations can grant the requested session duration or set a different duration, based on network policies or conditions. - When `qosStatus` is "REQUESTED", the value is the duration to be scheduled, granted by the implementation. - When `qosStatus` is AVAILABLE", the value is the overall duration since `startedAt. When the session is extended, the value is the new overall duration of the session. - When `qosStatus` is "UNAVAILABLE", the value is the overall effective duration since `startedAt` until the session was terminated. | min: 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||
startedAt | string (date-time) | Date and time when the QoS status became "AVAILABLE". Not to be returned when `qosStatus` is "REQUESTED". It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
expiresAt | string (date-time) | Date and time of the QoS session expiration. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. - When `qosStatus` is "AVAILABLE", it is the limit time when the session is scheduled to finnish, if not terminated by other means. - When `qosStatus` is "UNAVAILABLE", it is the time when the session was terminated. - Not to be returned when `qosStatus` is "REQUESTED". When the session is extended, the value is the new expiration time of the session. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
qosStatus* | string
()
REQUESTEDAVAILABLEUNAVAILABLE | The current status of the requested QoS session. The status can be one of the following: * `REQUESTED` - QoS has been requested by creating a session * `AVAILABLE` - The requested QoS has been provided by the network * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason | ||||||||||||||||||||||||||||||||||||||||||||||||||||
statusInfo | string
()
DURATION_EXPIREDNETWORK_TERMINATEDDELETE_REQUESTED | Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is 'UNAVAILABLE'. * `DURATION_EXPIRED` - Session terminated due to requested duration expired * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Conflict Conflict with the current state of the server
{
"status": 409,
"code": "CONFLICT",
"message": "Request could not be completed due to a conflict with the current state of the target resource."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorunknowncurl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/quality-on-demand/v1/sessions/:sessionId/extend' \
-H 'Authorization: string' \
-H 'x-correlator: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"requestedAdditionalDuration": 1800
}' Querying for QoS session resource information details for a device
NOTES:
device parameter MUST NOT be provided in the request.HEADER PARAMETERS
Correlation id for the different services
Parameters to get QoS session information by device
{
"device": {
"phoneNumber": "+346661113334",
"networkAccessIdentifier": "123456789@domain.com",
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
}
} | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` NOTE1: the network operator might support only a subset of these options. The API consumer can provide multiple identifiers to be compatible across different operators. In this case the identifiers MUST belong to the same device. NOTE2: as for this Commonalities release, we are enforcing that the networkAccessIdentifier is only part of the schema for future-proofing, and CAMARA does not currently allow its use. After the CAMARA meta-release work is concluded and the relevant issues are resolved, its use will need to be explicitly documented in the guidelines. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
OK Returns the QoS sessions information for a given device. A device may have multiple sessions, thus the response is an array. An empty array is returned if no sessions are found.
[
{
"applicationServer": {
"ipv4Address": "0.0.0.0/0"
},
"qosProfile": "QOS_L",
"sink": "https://application-server.com/notifications",
"sessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"duration": 3600,
"startedAt": "2024-06-01T12:00:00Z",
"expiresAt": "2024-06-01T13:00:00Z",
"qosStatus": "AVAILABLE"
}
] | Property | Type | Description | Constraints | Default | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
device | object | Disambiguates the device to which the session applies when multiple device identifiers were provided | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServer* | object | A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
devicePorts | object | The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
applicationServerPorts | object | A list of single ports or port ranges on the application server | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
qosProfile* | string | A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profile names like `QOS_E`, `QOS_S`, `QOS_M`, and `QOS_L` - A searchable descriptive name | minLength: 3, maxLength: 256, pattern: ^[a-zA-Z0-9_.-]+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sink | string (uri) | The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol. | pattern: ^https:\/\/.+$ | |||||||||||||||||||||||||||||||||||||||||||||||||||
sinkCredential | object | A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
sessionId* | string (uuid) | Session ID in UUID format | ||||||||||||||||||||||||||||||||||||||||||||||||||||
duration* | integer (int32) | Session duration in seconds. Implementations can grant the requested session duration or set a different duration, based on network policies or conditions. - When `qosStatus` is "REQUESTED", the value is the duration to be scheduled, granted by the implementation. - When `qosStatus` is AVAILABLE", the value is the overall duration since `startedAt. When the session is extended, the value is the new overall duration of the session. - When `qosStatus` is "UNAVAILABLE", the value is the overall effective duration since `startedAt` until the session was terminated. | min: 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||
startedAt | string (date-time) | Date and time when the QoS status became "AVAILABLE". Not to be returned when `qosStatus` is "REQUESTED". It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
expiresAt | string (date-time) | Date and time of the QoS session expiration. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. - When `qosStatus` is "AVAILABLE", it is the limit time when the session is scheduled to finnish, if not terminated by other means. - When `qosStatus` is "UNAVAILABLE", it is the time when the session was terminated. - Not to be returned when `qosStatus` is "REQUESTED". When the session is extended, the value is the new expiration time of the session. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
qosStatus* | string
()
REQUESTEDAVAILABLEUNAVAILABLE | The current status of the requested QoS session. The status can be one of the following: * `REQUESTED` - QoS has been requested by creating a session * `AVAILABLE` - The requested QoS has been provided by the network * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason | ||||||||||||||||||||||||||||||||||||||||||||||||||||
statusInfo | string
()
DURATION_EXPIREDNETWORK_TERMINATEDDELETE_REQUESTED | Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is 'UNAVAILABLE'. * `DURATION_EXPIRED` - Session terminated due to requested duration expired * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Bad Request Problem with the client request
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unauthorized Unauthorized
{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Forbidden Forbidden
{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Not Found Not found
{
"status": 404,
"code": "NOT_FOUND",
"message": "The specified resource is not found."
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
Unprocessable Entity Unprocessable Content
{
"status": 422,
"code": "NOT_SUPPORTED",
"message": "Service not supported for this phoneNumber"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
status* | integer | HTTP response status code | ||
code* | string | Code given to this error | ||
message* | string | Detailed error description |
x-correlatorunknowncurl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/quality-on-demand/v1/retrieve-sessions' \
-H 'x-correlator: string' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"device": {
"phoneNumber": "+346661113334",
"networkAccessIdentifier": "123456789@domain.com",
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
}
}' The Backchannel Authentication Endpoint is used to initiate an out-of-band authentication of the end-user. This is done by sending an HTTP POST message directly from the Client to the OpenID Provider's Backchannel Authentication Endpoint
HEADER PARAMETERS
Basic <base64(client_id:client_secret)>
{
"login_hint": "tel:+34xxxxxxx",
"scope": "string",
"binding_message": "usuario@gmail.com",
"client_id": "M7p4ae2yWH7SymwbUYGq2UuweVjzXNOG",
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
"client_assertion": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
login_hint* | string | A hint to the OpenID Provider regarding the end-user for whom authentication is being requested. The value contains a msisdn, which identifies the end-user to the OP. RFC 3966 The tel URI for Telephone Numbers | ||
scope* | string | Scope of permissions | ||
binding_message | string | A human-readable identifier or message intended to be displayed on both the consumption device and the authentication device to interlock them together for the transaction by way of a visual cue for the end-user. This interlocking message enables the end-user to ensure that the action taken on the authentication device is related to the request initiated by the consumption device. | ||
client_id | string | The client identifier (required when using client_assertion) | ||
client_assertion_type | string | Must be urn:ietf:params:oauth:client-assertion-type:jwt-bearer (if you use client_assertion authorization) | ||
client_assertion | string | The signed JWT |
OK OK
{
"auth_req_id": "d221eb9b-9d33-4fe9-ba41-9711ed0309ce",
"expires_in": 360,
"interval": 60
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
auth_req_id* | string | REQUIRED. This is a unique identifier to identify the authentication request made by the Client. | ||
expires_in* | integer | The duration in seconds for which the authentication request is valid. | ||
interval* | integer | The minimum amount of time in seconds that the client SHOULD wait between polling to check if the authentication request has been completed. |
Bad Request Bad Request
{
"error": "invalid_request",
"error_description": "string",
"error_uri": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
error* | string
()
invalid_requestaccess_deniedinvalid_clientinvalid_grantunauthorized_clientunauthorized_grant_typeinvalid_scopeerror_descriptionerror_uri | A single error code | ||
error_description | string | A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred | ||
error_uri | string |
Unauthorized Unauthorized
{
"error": "invalid_request",
"error_description": "string",
"error_uri": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
error* | string
()
invalid_requestaccess_deniedinvalid_clientinvalid_grantunauthorized_clientunauthorized_grant_typeinvalid_scopeerror_descriptionerror_uri | A single error code | ||
error_description | string | A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred | ||
error_uri | string |
Cache-ControlstringThe authorization server MUST include the HTTP "Cache-Control" response header field with a value of "no-store" in any response containing tokens, secrets, or other sensitive information.
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/bc-authorize' \
-H 'Authorization: string' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json' \
--data-urlencode 'login_hint=tel:+34xxxxxxx' \
--data-urlencode 'scope=string' \
--data-urlencode 'binding_message=usuario@gmail.com' \
--data-urlencode 'client_id=M7p4ae2yWH7SymwbUYGq2UuweVjzXNOG' \
--data-urlencode 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' \
--data-urlencode 'client_assertion=string' After a successful authentication, the Client polls the Token Endpoint to obtain an Access Token sending an authentication request id. The Client MUST poll the Token Endpoint at a rate not exceeding that specified by the interval parameter included in the response from the Backchannel Authentication Endpoint (/bc-authorize).
HEADER PARAMETERS
Basic <base64(client_id:client_secret)>
{
"grant_type": "urn:openid:params:grant-type:ciba",
"assertion": "string",
"auth_req_id": "d221eb9b-9d33-4fe9-ba41-9711ed0309ce",
"code": "SplxlOBeZQQYbYS6WxSbIA",
"redirect_uri": "https://myapp.com/callback",
"client_id": "M7p4ae2yWH7SymwbUYGq2UuweVjzXNOG",
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
"client_assertion": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
grant_type* | string
()
urn:openid:params:grant-type:cibaurn:ietf:params:oauth:grant-type:jwt-bearerauthorization_code | Grant type | ||
assertion | string | Assertion with which to get an access_token (required for grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer). | ||
auth_req_id | string | It is the unique identifier to identify the authentication request (transaction) made by the Client. | ||
code | string | It is the authorization code received from the /authorize endpoint. | ||
redirect_uri | string | It is the redirection URI used in the /authorize endpoint. | ||
client_id | string | The client identifier | ||
client_assertion_type | string | Must be urn:ietf:params:oauth:client-assertion-type:jwt-bearer (if you use client_assertion authorization) | ||
client_assertion | string | The signed JWT |
OK OK
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik1VTkJaNa0ZGTWtKQlFqVkRPVFV4TlVWQ04wRTRPVEV5UWpGRFJFSTFNMFZEUXpBMU1UVTVNQSJ9.eyJpc3MiOiJodHRwczovL21hc21vdmlsLmV1LmF1dGgwLmNvbS8iLCJzdWIiOiJNN3A0YWUyeVdIN1N5bXdiVVlHcTJVdXdlVmp6WE5PR0BjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9tYXNtb3ZpbC5ldS5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTU1MDQyMDM3NywiZXhwIjoxNTUwNTA2Nzc3LCJhenAiOiJNN3A0YWUyeVdIN1N5bXdiVVlHcTJVdXdlVmp6WE5PRyIsInNjb3BlIjoicmVhZDpjbGllbnRfZ3JhbnRzIGNyZWF0ZTpjbGllbnRfZ3JhbnRzIGRlbGV0ZTpjbGllbnRfZ3JhbnRzIHVwZGF0ZTpjbGllbnRfZ3JhbnRzIHJlYWQ6dXNlcnMgdXBkYXRlOnVzZXJzIGRlbGV0ZTp1c2VycyBjcmVhdGU6dXNlcnMgcmVhZDp1c2Vyc19hcHBfbWV0YWRhdGEgdXBkYXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBkZWxldGU6dXNlcnNfYXBwX21ldGFkYXRhIGNyZWF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgY3JlYXRlOnVzZXJfdGlja2V0cyByZWFkOmNsaWVudHMgdXBkYXRlOmNsaWVudHMgZGVsZXRlOmNsaWVudHMgY3JlYXRlOmNsaWVudHMgcmVhZDpjbGllbnRfa2V5cyB1cGRhdGU6Y2xpZW50X2tleXMgZGVsZXRlOmNsaWVudF9rZXlzIGNyZWF0ZTpjbGllbnRfa2V5cyByZWFkOmNvbm5lY3Rpb25zIHVwZGF0ZTpjb25uZWN0aW9ucyBkZWxldGU6Y29ubmVjdGlvbnMgY3JlYXRlOmNvbm5lY3Rpb25zIHJlYWQ6cmVzb3VyY2Vfc2VydmVycyB1cGRhdGU6cmVzb3VyY2Vfc2VydmVycyBkZWxldGU6cmVzb3VyY2Vfc2VydmVycyBjcmVhdGU6cmVzb3VyY2Vfc2VydmVycyByZWFkOmRldmljZV9jcmVkZW50aWFscyB1cGRhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIGRlbGV0ZTpkZXZpY2VfY3JlZGVudGlhbHMgY3JlYXRlOmRldmljZV9jcmVkZW50aWFscyByZWFkOnJ1bGVzIHVwZGF0ZTpydWxlcyBkZWxldGU6cnVsZXMgY3JlYXRlOnJ1bGVzIHJlYWQ6cnVsZXNfY29uZmlncyB1cGRhdGU6cnVsZXNfY29uZmlncyBkZWxldGU6cnVsZXNfY29uZmlncyByZWFkOmVtYWlsX3Byb3ZpZGVyIHVwZGF0ZTplbWFpbF9wcm92aWRlciBkZWxldGU6ZW1haWxfcHJvdmlkZXIgY3JlYXRlOmVtYWlsX3Byb3ZpZGVyIGJsYWNrbGlzdDp0b2tlbnMgcmVhZDpzdGF0cyByZWFkOnRlbmFudF9zZXR0aW5ncyB1cGRhdGU6dGVuYW50X3NldHRpbmdzIHJlYWQ6bG9ncyByZWFkOnNoaWVsZHMgY3JlYXRlOnNoaWVsZHMgZGVsZXRlOnNoaWVsZHMgdXBkYXRlOnRyaWdnZXJzIHJlYWQ6dHJpZ2dlcnMgcmVhZDpncmFudHMgZGVsZXRlOmdyYW50cyByZWFkOmd1YXJkaWFuX2ZhY3RvcnMgdXBkYXRlOmd1YXJkaWFuX2ZhY3RvcnMgcmVhZDpndWFyZGlhbl9lbnJvbGxtZW50cyBkZWxldGU6Z3VhcmRpYW5fZW5yb2xsbWVudHMgY3JlYXRlOmd1YXJkaWFuX2Vucm9sbG1lbnRfdGlja2V0cyByZWFkOnVzZXJfaWRwX3Rva2VucyBjcmVhdGU6cGFzc3dvcmRzX2NoZWNraW5nX2pvYiBkZWxldGU6cGFzc3dvcmRzX2NoZWNraW5nX2pvYiByZWFkOmN1c3RvbV9kb21haW5zIGRlbGV0ZTpjdXN0b21fZG9tYWlucyBjcmVhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIn0.h6GTIB8OMcMXDxyUzUW8tJ8LW7U_yIQfCshDuOW9E-_rd9NNRBxzsPhVHllawcB336Xfo3kwrVmS0KdkLGWz4BJo67R_4KXjQ_1VcmHD2WfzpS06fmjdV1DWZbd5dv3LBtPXEIYxWVzFSUcAlIKo5cstYlUWvb1weh56yBu26Y48UK5CIjwLmqAtlxL3kNcMI_PPuM-UmiQPeNe8cKPN4c7Tf_aVw38DcGydY53GIJ_fTeRvB5kb9CO4bs6g4iWOFZFFuLAluRFZsKcqJwNdW1RDYB_blmva5Q8JrBeU5TkbfdrWIL2QfdD93hjLFcWgE9z6txUz5opW2qkcMoQkLA",
"scope": "read:client_grants create:client_grants delete:client_grants update:client_grants",
"expires_in": 86400,
"token_type": "Bearer",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik1VTkJNa0ZGTWtKQlFqVkRPVFV4TlVWQ04wRTRPVEV5UWpGRFJFSTFNMFZEUXpBMU1UVTVNQSJ9"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
access_token* | string | A token used by the client to make authenticated requests on behalf of the resource owner | ||
scope | string | Scopes | ||
expires_in | integer | |||
token_type* | string | |||
refresh_token | string | A token used by the client to obtain a new access token without having to involve the resource owner. |
Bad Request Bad Request
{
"error": "invalid_request",
"error_description": "string",
"error_uri": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
error* | string
()
authorization_pendinginvalid_requestaccess_deniedinvalid_clientinvalid_grantunauthorized_clientunauthorized_grant_typeinvalid_scopeerror_descriptionerror_uri | A single error code | ||
error_description | string | A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred | ||
error_uri | string |
Unauthorized Unauthorized
{
"error": "invalid_request",
"error_description": "string",
"error_uri": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
error* | string
()
authorization_pendinginvalid_requestaccess_deniedinvalid_clientinvalid_grantunauthorized_clientunauthorized_grant_typeinvalid_scopeerror_descriptionerror_uri | A single error code | ||
error_description | string | A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred | ||
error_uri | string |
Cache-ControlstringThe authorization server MUST include the HTTP "Cache-Control" response header field with a value of "no-store" in any response containing tokens, secrets, or other sensitive information.
curl -X POST 'https://apimanager-opengateway.sta.k8s.masmovil.com/token' \
-H 'Authorization: string' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json' \
--data-urlencode 'grant_type=urn:openid:params:grant-type:ciba' \
--data-urlencode 'assertion=string' \
--data-urlencode 'auth_req_id=d221eb9b-9d33-4fe9-ba41-9711ed0309ce' \
--data-urlencode 'code=SplxlOBeZQQYbYS6WxSbIA' \
--data-urlencode 'redirect_uri=https://myapp.com/callback' \
--data-urlencode 'client_id=M7p4ae2yWH7SymwbUYGq2UuweVjzXNOG' \
--data-urlencode 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' \
--data-urlencode 'client_assertion=string' Logs in the user or redirects it to a page to authenticate itself
QUERY PARAMETERS
The identifier of the client representing the app.
Which in a basic authorization code flow request should be code. Authn only support code
Should be the HTTP endpoint on your server that will receive the response from Authn. The value must exactly match one of the authorized redirect URIs for the OAuth 2.0 client, which you configured in the register of application. If this value doesn't match an authorized URI, the request will fail with a 401 error.
Should include the value of the anti-forgery unique session token, as well as any other information needed to recover the context when the user returns to your application, e.g., the starting URL.
If your application knows which user is trying to authenticate, it can use this parameter to provide a hint to the Authentication Server. The server uses the hint to simplify the login flow either by prefilling the email field in the sign-in form or by selecting the appropriate multi-login session.
The sub string is equivalent to the groups in the provider (only support Google ). If you do not provide a groups_hint and the user is currently logged in, in the next request of token, the access_token will not contain claim groups
The allowed values are offline and online. If an access token is being requested, the client does not receive a refresh token unless a value of offline is specified.
Specifies an encoded code_verifier that will be used as a server-side challenge during authorization code exchange. This string helps mitigating against the threat usually through the use of Proof Key for Code Exchange (PKCE)
Specifies what method was used to encode a code_verifier that will be used during authorization code exchange. This parameter must be used with the code_challenge parameter. The value of the code_challenge_method defaults to plain if not present in the request that includes a code_challenge. The only supported values for this parameter are S256 or plain.
Found Authorization code/Implicit grant response
Bad Request Bad Request
{
"error": "invalid_request",
"error_description": "string",
"error_uri": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
error* | string
()
invalid_requestaccess_deniedinvalid_clientinvalid_grantunauthorized_clientunauthorized_grant_typeinvalid_scopeerror_descriptionerror_uri | A single error code | ||
error_description | string | A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred | ||
error_uri | string |
Unauthorized Unauthorized
{
"error": "invalid_request",
"error_description": "string",
"error_uri": "string"
} | Property | Type | Description | Constraints | Default |
|---|---|---|---|---|
error* | string
()
invalid_requestaccess_deniedinvalid_clientinvalid_grantunauthorized_clientunauthorized_grant_typeinvalid_scopeerror_descriptionerror_uri | A single error code | ||
error_description | string | A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred | ||
error_uri | string |
LocationstringThe redirect uri of the client
curl -X GET 'https://apimanager-opengateway.sta.k8s.masmovil.com/authorize?client_id=TtsdmebPcQtEnvLsKw7x&response_type=token&redirect_uri=https%3A%2F%2Fmasmovil.com%2Flogin%2Fcallback&state=0AxLygT73V6kreKzkQySOjfYShIvK%2FTR&login_hint=my_user%40masmovil.com&groups_hint=group1%2Bgroup2&access_type=online&code_challenge=5VTycQU924SQ3jHp5g9zcvMF2ai3aN89kxzB2D5QJUrejxam3jddqFUugD8F&code_challenge_method=S256&scopes=openid%20dpv%3AFraudPreventionAndDetection%20number-verification%3Averify' \
-H 'Accept: */*'