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.