What a waiting grant could be for
const url = 'https://api.sloose.com/auth/zoho/connect/options';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"nonce":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.sloose.com/auth/zoho/connect/options \ --header 'Content-Type: application/json' \ --data '{ "nonce": "example" }'The two organisations Zoho answered for, when both of its hosts did and the person has to say which they chose on Zoho’s screen — for the app’s page that asks (/connect/choose). nonce is the one the connect callback handed that page; it is read here and not spent, and the answer goes to POST /auth/zoho/connect/choose.
You never call this directly.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Examplegenerated
{ "nonce": "example"}Responses
Section titled “Responses”What Zoho reported, per host.
object
object
Example
{ "options": [ { "host": "standard" } ]}The request — its body or its query — did not match the schema. issues carries the Zod issue list.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}No choice waits under that nonce: it expired, or was made (code: CHOICE_GONE).
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}