c8y(1)
c8y(1) π β the manual, bestie
NAME π
c8y-devices-enroll β enroll a device using the Cumulocity Certificate Authority
SYNOPSIS β¨
c8y devices enroll [flags]
DESCRIPTION π¦
okay so this command registers a device using the Cumulocity Certificate Authority, and it keeps trying to download the deviceβs certificate by submitting a Certificate Signing Request via the EST protocol. Itβs giving βpersistent bestieβ energy β it polls until it gets the cert.
The registration url and QR code get printed on the console so users can register the device via a web browser. Cute, right? π«Ά
heads up: this feature requires the feature toggle "certificate-authority" π
OPTIONS π
--cert=""β path to write the downloaded certificate to--csr=""β use the given certificate signing request instead of generating one-d,--data=[]β static data to slap onto the body; accepts json or shorthand json, i.e.--data 'value1=1,my.nested.value=100'-h,--help[=false]β help forenroll--host=""β custom Cumulocity host--id=""β device identifier.Max: 1000 characters. E.g. IMEI. required, and it accepts pipeline--key=""β device's private certificate; if it doesnβt exist, it will be created--mode=""β registration mode--one-time-password=""β One Time Password used for initial enrollment. Leave blank for a randomly generated password--overwrite[=false]β overwrite any existing device key and certificate--processingMode=""β Cumulocity processing mode--retry-every=5sβ polling interval to try to download the device certificate--show-qr[=false]β show QR Code with the registration url--show-url[=true]β show URL with the registration url--template=""β body template--templateVars=[]β body template variables--type=""β device type to register (only works when pre-registering the device)
OPTIONS INHERITED FROM PARENT COMMANDS π§¬
--abortOnErrors=10β abort batch when reaching specified number of errors--allowEmptyPipe[=false]β don't fail when piped input is empty (stdin)--cache[=false]β enable cached responses--cacheBodyPaths=[]β cache should limit hashing of selected paths in the json body. Empty indicates all values--cacheTTL="60s"β cache time-to-live (TTL) as a duration, i.e.60s,2m-c,--compact[=false]β compact instead of pretty-printed output when using json output. Pretty print is the default if output is the terminal--confirm[=false]β prompt for confirmation--confirmText=""β custom confirmation text--currentPage=0β current page which should be returned--customQueryParam=[]β add custom URL query parameters. i.e.--customQueryParam 'withCustomOption=true,myOtherOption=myvalue'--debug[=false]β set very verbose log messages--delay="0ms"β delay after each request, i.e.5ms,1.2s--delayBefore="0ms"β delay before each request, i.e.5ms,1.2s--dry[=false]β dry run. Don't send any data to the server--dryFormat="markdown"β dry run output format. i.e.json,dump,markdownorcurl--examples[=false]β show examples for the current command--filter=[]β apply a client side filter to response before returning it to the user--flatten[=false]β flatten json output by replacing nested json properties with properties where their names are represented by dot notation-f,--force[=false]β do not prompt for confirmation. Ignored when using--confirm-H,--header=[]β custom headers. i.e.--header "Accept: value, AnotherHeader: myvalue"--includeAll[=false]β include all results by iterating through each page-k,--insecure[=false]β allow insecure server connections when using SSL-l,--logMessage=""β add custom message to the activity log--maxJobs=0β maximum number of jobs.0 = unlimited(use with caution!)--noAccept[=false]β ignore Accept header will remove the Accept header from requests, however PUT and POST requests will only see the effect--noCache[=false]β force disabling of cached responses (overwrites cache setting)-M,--noColor[=false]β don't use colors when displaying log entries on the console--noLog[=false]β disables the activity log for the current command--noProgress[=false]β disable progress bars--noProxy[=false]β ignore the proxy settings-n,--nullInput[=false]β don't read the input (stdin). Useful if using in shell for/while loops-o,--output="table"β output format i.e.table,json,csv,csvheader--outputFile=""β save JSON output to file (after select/view)--outputFileRaw=""β save raw response to file (before select/view)--outputTemplate=""β jsonnet template to apply to the output-p,--pageSize=5β maximum results per page--progress[=false]β show progress bar. This will also disable any other verbose output--proxy=""β proxy setting, i.e.http://10.0.0.1:8080-r,--raw[=false]β show raw response. This mode will forceoutput=jsonandview=off--retries=3β max number of attempts when a failed http call is encountered--select=[]β comma separated list of properties to return. wildcards and globstar accepted, i.e.--select 'id,name,type,**.serialNumber'--session=""β session configuration--sessionMode=""β override default session mode for a single command which would normally be disabled-P,--sessionPassword=""β override session password-U,--sessionUsername=""β override session username. i.e.peterort1234/peter(with tenant)--silentExit[=false]β silent status codes do not affect the exit code--silentStatusCodes=""β status codes which will not print out an error message--timeout="600s"β request timeout duration, i.e.60s,2m--totalPages=0β total number of pages to get-v,--verbose[=false]β verbose logging--view="auto"β use views when displaying data on the terminal. Disable using--view off--withError[=false]β errors will be printed on stdout instead of stderr--withTotalElements[=false]β request Cumulocity to include the total elements in the response statistics under.statistics.totalElements(introduced in10.13)-t,--withTotalPages[=false]β request Cumulocity to include the total pages in the response statistics under.statistics.totalPages--workers=1β number of workers
EXAMPLE π
Enroll a new device with a randomized one-time password:
$ c8y devices enroll --id "ASDF098SD1J10912UD92JDLCNCU8"
Enroll a new device and provide the one-time-password to be used for enrollment:
$ c8y devices enroll --id "ASDF098SD1J10912UD92JDLCNCU8" --one-time-password "RqzwJeTusABlk4)KmtIc"
Enroll a new device and specify a host name so a session does not need to be set:
$ c8y devices enroll --id "ASDF098SD1J10912UD92JDLCNCU8" --host example.cumulocity.com
Enroll a new device and specify the names of the private key and public certificate to use:
$ c8y devices enroll --id "ASDF098SD1J10912UD92JDLCNCU8" --key myname.key --cert myname.crt
Enroll 2 devices and create unique private key and certificate per device:
$ c8y util repeat 3 | c8y devices enroll --template "{id: 'device' + input.index}"
Enroll a device and use the certificate to connect to Cumulocity via MQTT (with mosquitto_sub):
$ DEVICE_ID=example
$ c8y devices enroll --id "$DEVICE_ID"
$ mosquitto_sub --key "${DEVICE_ID}.key" --cert "${DEVICE_ID}.crt" -t 's/ds' -i "$DEVICE_ID" -h $C8Y_DOMAIN -p 8883 --cafile "$(brew --prefix)/etc/ca-certificates/cert.pem" --debug
$ mosquitto_sub --key "${DEVICE_ID}.key" --cert "${DEVICE_ID}.crt" --cafile "$(brew --prefix)/etc/ca-certificates/cert.pem" -i "$DEVICE_ID" -h $C8Y_DOMAIN -p 9883 -t 'custom/topic' --debug
SEE ALSO π
thatβs the c8y(1) manual, bestie β Jan 1980 edition, slay ππ
π¦ where this page comes from
- nixpkgs unstable: go-c8y-cli 2.56.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms