This page contains code samples for the Google Spectrum Access System (SAS) Portal API.
Before you begin
For the following examples, ensure that you complete the following prerequisites:
- Obtain a token with your service account
TOKEN=$(gcloud auth print-access-token). - Set
${CLIENT_PROJECT}to the project ID of the Google Cloud project.
List current customers
-
Return 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"
-
Save the customer name that is returned as a variable:
CUSTOMER_NAME=customers/...
Create a new device configuration
-
Set the
${FCCID}and${SN}of the device that you want to create:FCCID=f1 SN=sn1
-
Create the 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/ ${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.
-
Save the device name as a variable:
DEVICE_NAME=customers/.../devices/...
List current 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 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 an existing device
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 Certified Professional Installer (CPI) identity and certification
-
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 "{}"
The output is similar to the following:
{ "secret": "<generated secret>" } -
Use the JSON Web Token format to encode the secret string into a JWT.
-
Set the following:
-
${SECRET}to the secret string -
${ENCODED_SECRET}to the JWT string -
${CPI_ID}to the ID of the CPI
-
-
Validate 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}\ " }"
Now the CPI can install a Citizens Broadband Radio Service Device (CBSD) that has all the required parameters.
Multistep CBSD registration
You can perform multistep CBSD registration with device parameters previously signed by a CPI or with a CPI account.
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. As a result, the non-CPI users can also create the configuration.
- Use the CPI's private key to encode the CBSD parameters. We recommend that you use the JSON Web Token format .
- Set
${ENCODED_DEVICE}to the JWT string and${CPI_ID}to the ID of the CPI. -
Create the 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/ ${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 SAS to complete its registration.
CPI account
The CPI's identity must be validated before you validate a device configuration. When that is 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} "
Replace ${DEVICE}
with the JSON representation of the
CBSD registration parameters. For more information about the
format, see REST Resource: customers.devices
.
The CBSD must then send a registration request to SAS to complete its registration.
What's next
- To get an overview of the SAS Portal API, see Google SAS Portal API overview .
- For information about each API, see Customers API and Device Manager API .
- For reference documentation, see APIs and reference .

