createOAuthClient method

Future<OAuthClient> createOAuthClient(
  1. String projectId, {
  2. required List<String> grantTypes,
  3. required List<String> responseTypes,
  4. required List<String> redirectUris,
  5. required String scope,
  6. Map<String, dynamic>? metadata,
})

POST /accounts/projects/{project_id}/oauth/clients Body: { grant_types, response_types, redirect_uris, scope, metadata? } Returns the newly created OAuthClient (often includes client_secret).

Implementation

Future<OAuthClient> createOAuthClient(
  String projectId, {
  required List<String> grantTypes,
  required List<String> responseTypes,
  required List<String> redirectUris,
  required String scope,
  Map<String, dynamic>? metadata,
}) async {
  final uri = Uri.parse('$baseUrl/accounts/projects/$projectId/oauth/clients');
  final body = <String, dynamic>{
    'grant_types': grantTypes,
    'response_types': responseTypes,
    'redirect_uris': redirectUris,
    'scope': scope,
    'metadata': metadata ?? <String, dynamic>{},
  };

  final response = await http.post(uri, headers: _getHeaders(), body: jsonEncode(body));

  if (response.statusCode >= 400) {
    throw MeshagentException(
      'Failed to create OAuth client. '
      'Status code: ${response.statusCode}, body: ${response.body}',
    );
  }
  return OAuthClient.fromJson(jsonDecode(response.body)["client"]);
}