Start a calendar OAuth consent
POST
/v1/integration-connections
const url = 'https://api.vocapable.com/v1/integration-connections';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"provider":"calendar"}'};
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.vocapable.com/v1/integration-connections \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "provider": "calendar" }'Mint the tenant-bound consent state and hand back the provider’s consent URL.
No row is written here. integration_connections.status has no pending value
(docs/03-domain-model.md) - a connection exists only once consent has completed at the
callback, so an abandoned consent leaves nothing behind to expire or clean up.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
IntegrationConnectionCreateRequest
Start an OAuth consent. No connection exists until the callback completes it.
object
provider
required
Provider
string
Responses
Section titled “Responses”Successful Response
Media typeapplication/json
IntegrationAuthorization
Where to send the customer’s admin, and how long the signed state admits them.
object
provider
required
Provider
string
authorization_url
required
Authorization Url
string
state_expires_at
required
State Expires At
string format: date-time
Example
{ "provider": "calendar"}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}