In the following examples, we assume that you've already obtained a token with your service account :
TOKEN=$(gcloud auth print-access-token)
We also assume that you've already set ${CLIENT_PROJECT}
to the project ID of the
Google Cloud Project.
List current customers
The following command returns all of the customers that the caller has access to:
curl -X GET -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${ TOKEN } " \"https://sasportal.googleapis.com/v1alpha1/customers"
For convenience, save the Customer name that was returned into a variable:
CUSTOMER_NAME=customers/...
Create a new device configuration
First, set the ${FCCID}
and ${SN}
of the device
that you want to create:
FCCID=f1 SN=sn1
Then create the device configuration with the following command:
curl - X POST - H "X-Goog-User-Project: ${CLIENT_PROJECT} " \ - H "Content-Type: application/json" \ - H "Authorization: Bearer ${TOKEN} " \ "https://sasportal.googleapis.com/v1alpha1/ ${CUSTOMER_NAME} /devices" \ - d "{ \" fcc_id \" : \" $FCCID \" , \" serial_number \" : \" $SN \" , \" preloaded_config \" : { \" call_sign \" : \" cs1 \" , \" category \" : \" DEVICE_CATEGORY_A \" }}"
The command returns a newly created device configuration. For convenience, save the device name into a variable:
DEVICE_NAME=customers/.../devices/...
List current devices
The following command lists existing devices.
curl -X GET -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN " \ "https://sasportal.googleapis.com/v1alpha1/ ${ CUSTOMER_NAME } /devices"
Retrieve device by name
The following command retrieves devices by name.
curl -X GET -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN " \ "https://sasportal.googleapis.com/v1alpha1/ ${ DEVICE_NAME } "
Update existing device
The following command updates existing devices.
curl -X PATCH -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN " \ "https://sasportal.googleapis.com/v1alpha1/ ${ DEVICE_NAME } " \
Validate your CPI identity and certification
Use the following example to generate the secret string:
curl -X POST -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN " \ "https://sasportal.googleapis.com/v1alpha1/installer:generateSecret" \ -d "{}"
This returns a value with the following form:
{ "secret": "<generated secret>" }
The secret string must then be encoded into a JWT. Use the JSON
Web Token format
. We assume that
you've set ${SECRET}
to the secret string, ${ENCODED_SECRET}
to the JWT
string, and ${CPI_ID}
to the ID of the CPI to validate.
The following command validates the identity and certification of the CPI.
curl -X POST -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN " \ "https://sasportal.googleapis.com/v1alpha1/installer:validate" \ -d "{ \"installer_id\": \" ${ CPI_ID } \ ", \"secret\": \" ${ SECRET } \ ", \"encoded_secret\": \" ${ ENCODED_SECRET } \ " }"
The CPI now has the ability to install a CBSD that has all of the required parameters.
Multi-step CBSD registration
There are two ways to perform multi-step CBSD registration covered in the following two sections. You can perform multi-step CBSD registration with parameters previously signed by a CPI or with a CPI account.
With device parameters previously signed by a CPI
This sample shows how to create an inactive device configuration with CBSD installation
parameters previously encoded by a CPI, so the configuration can be created even by non-CPI users.
Use the CPI's private key to encode the CBSD parameters. We use the JSON Web Token format
to do this.
We assume that you have set ${ENCODED_DEVICE}
to the JWT string and ${CPI_ID}
to the ID of the CPI.
The inactive device configuration can then be created with the following command:
curl -X POST -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${ TOKEN } " \ "https://sasportal.googleapis.com/v1alpha1/ ${ CUSTOMER_NAME } /devices:createSigned" \ -d "{ \"installer_id\": \" ${ CPI_ID } \", \"encoded_device\": \" ${ ENCODED_DEVICE } \", \"parent\": \" ${ CUSTOMER_NAME } \" }"
The CBSD must then send a registration request to the SAS to complete its registration.
With a CPI account
First, the CPI’s identity must be validated before you attempt to validate a device configuration. Once that's done, use the following command to create an inactive device configuration:
curl -X POST -H "X-Goog-User-Project: ${ CLIENT_PROJECT } " \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN " \ "https://sasportal.googleapis.com/v1alpha1/ ${ DEVICE_NAME } :signDevice" \ -d " ${ DEVICE } "
We assume that you've set ${DEVICE} to be the JSON representation of the CBSD registration parameters in this format .
The CBSD must then send a registration request to the SAS to complete its registration.