Create a Connectivity insights subscription for a device
POST/connectivityinsights/subscriptions
Create a Connectivity insights subscription for a device
Create a Connectivity insights subscription for a device
curl https://api.example.com/camara/connectivityinsights/subscriptions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $CAMARA_BEARER_TOKEN" \
-d '{
"config": {
"subscriptionDetail": {
"applicationProfileId": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"device": {}
}
},
"protocol": "HTTP",
"sink": "https://endpoint.example.com/sink",
"types": [
"org.camaraproject.connectivity-insights-subscriptions.v0.network-quality"
]
}'{
"config": {
"subscriptionDetail": {
"applicationProfileId": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"device": {
"ipv4Address": {
"privateAddress": "84.125.93.10",
"publicAddress": "84.125.93.10",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344",
"networkAccessIdentifier": "123456789@domain.com",
"phoneNumber": "+123456789"
},
"applicationServer": {
"ipv4Address": "192.168.0.1/24",
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"applicationServerPorts": {
"ports": [
5060,
5070
],
"ranges": [
{
"from": 5010,
"to": 5020
}
]
}
},
"initialEvent": true,
"subscriptionExpireTime": "2023-07-03T12:27:08.312Z",
"subscriptionMaxEvents": 5
},
"protocol": "HTTP",
"sink": "https://endpoint.example.com/sink",
"startsAt": "2023-07-03T12:27:08.312Z",
"types": [
"org.camaraproject.connectivity-insights-subscriptions.v0.network-quality"
],
"expiresAt": "2023-07-03T12:27:08.312Z",
"status": "ACTIVATION_REQUESTED",
"subscriptionId": "qs15-h556-rt89-1298"
}{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param."
}{
"status": 400,
"code": "OUT_OF_RANGE",
"message": "Client specified an invalid range."
}{
"status": 400,
"code": "INVALID_PROTOCOL",
"message": "Only HTTP is supported"
}{
"status": 400,
"code": "INVALID_CREDENTIAL",
"message": "Only Access token is supported"
}{
"status": 400,
"code": "INVALID_TOKEN",
"message": "Only bearer token is supported"
}{
"status": 400,
"code": "INVALID_SINK",
"message": "sink not valid for the specified protocol"
}{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials. A new authentication is required."
}{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
}{
"status": 403,
"code": "SUBSCRIPTION_MISMATCH",
"message": "Inconsistent access token for requested events subscription"
}{
"status": 409,
"code": "ABORTED",
"message": "Concurrency conflict."
}{
"status": 409,
"code": "ALREADY_EXISTS",
"message": "The resource that a client tried to create already exists."
}{
"status": 422,
"code": "SERVICE_NOT_APPLICABLE",
"message": "The service is not available for the provided identifier."
}{
"status": 422,
"code": "MISSING_IDENTIFIER",
"message": "The device cannot be identified."
}{
"status": 422,
"code": "UNNECESSARY_IDENTIFIER",
"message": "The device is already identified by the access token."
}{
"status": 429,
"code": "QUOTA_EXCEEDED",
"message": "Out of resource quota."
}{
"status": 429,
"code": "TOO_MANY_REQUESTS",
"message": "Rate limit reached."
}Returns Examples
{
"config": {
"subscriptionDetail": {
"applicationProfileId": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"device": {
"ipv4Address": {
"privateAddress": "84.125.93.10",
"publicAddress": "84.125.93.10",
"publicPort": 59765
},
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344",
"networkAccessIdentifier": "123456789@domain.com",
"phoneNumber": "+123456789"
},
"applicationServer": {
"ipv4Address": "192.168.0.1/24",
"ipv6Address": "2001:db8:85a3:8d3:1319:8a2e:370:7344"
},
"applicationServerPorts": {
"ports": [
5060,
5070
],
"ranges": [
{
"from": 5010,
"to": 5020
}
]
}
},
"initialEvent": true,
"subscriptionExpireTime": "2023-07-03T12:27:08.312Z",
"subscriptionMaxEvents": 5
},
"protocol": "HTTP",
"sink": "https://endpoint.example.com/sink",
"startsAt": "2023-07-03T12:27:08.312Z",
"types": [
"org.camaraproject.connectivity-insights-subscriptions.v0.network-quality"
],
"expiresAt": "2023-07-03T12:27:08.312Z",
"status": "ACTIVATION_REQUESTED",
"subscriptionId": "qs15-h556-rt89-1298"
}{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param."
}{
"status": 400,
"code": "OUT_OF_RANGE",
"message": "Client specified an invalid range."
}{
"status": 400,
"code": "INVALID_PROTOCOL",
"message": "Only HTTP is supported"
}{
"status": 400,
"code": "INVALID_CREDENTIAL",
"message": "Only Access token is supported"
}{
"status": 400,
"code": "INVALID_TOKEN",
"message": "Only bearer token is supported"
}{
"status": 400,
"code": "INVALID_SINK",
"message": "sink not valid for the specified protocol"
}{
"status": 401,
"code": "UNAUTHENTICATED",
"message": "Request not authenticated due to missing, invalid, or expired credentials. A new authentication is required."
}{
"status": 403,
"code": "PERMISSION_DENIED",
"message": "Client does not have sufficient permissions to perform this action."
}{
"status": 403,
"code": "SUBSCRIPTION_MISMATCH",
"message": "Inconsistent access token for requested events subscription"
}{
"status": 409,
"code": "ABORTED",
"message": "Concurrency conflict."
}{
"status": 409,
"code": "ALREADY_EXISTS",
"message": "The resource that a client tried to create already exists."
}{
"status": 422,
"code": "SERVICE_NOT_APPLICABLE",
"message": "The service is not available for the provided identifier."
}{
"status": 422,
"code": "MISSING_IDENTIFIER",
"message": "The device cannot be identified."
}{
"status": 422,
"code": "UNNECESSARY_IDENTIFIER",
"message": "The device is already identified by the access token."
}{
"status": 429,
"code": "QUOTA_EXCEEDED",
"message": "Out of resource quota."
}{
"status": 429,
"code": "TOO_MANY_REQUESTS",
"message": "Rate limit reached."
}