installLuccaClientCredentials method

Future<OrgIntegrationModel> installLuccaClientCredentials({
  1. required String orgId,
  2. required String subdomain,
  3. required String clientId,
  4. required String clientSecret,
})

Installs Lucca via client credentials — no browser redirect. The Edge Function immediately validates the credentials by hitting users/me; a successful response means the integration is ready.

Implementation

Future<OrgIntegrationModel> installLuccaClientCredentials({
  required String orgId,
  required String subdomain,
  required String clientId,
  required String clientSecret,
}) async {
  final response = await _client.functions.invoke(
    'integrations-oauth-start',
    body: {
      'org_id': orgId,
      'provider': 'lucca',
      'subdomain': subdomain,
      'client_id': clientId,
      'client_secret': clientSecret,
    },
  );
  if (response.status != 200) {
    throw StateError(
      'installLucca failed (${response.status}): ${response.data}',
    );
  }
  final row = response.data?['integration'] as Map<String, dynamic>?;
  if (row == null) {
    throw StateError('installLucca returned no integration');
  }
  return OrgIntegrationModel.fromJson(row);
}