Skip to main content
Glama
binalyze

Binalyze AIR MCP Server

Official
by binalyze
organizations.ts8.43 kB
/** * Organizations API Module * * This module provides interfaces and functions to interact with the Binalyze AIR API * for retrieving organization information. * * The module includes: * - Organization interface: Represents a single organization in the system * - OrganizationsResponse interface: Represents the API response structure * - api object: Contains methods to interact with the Organizations API endpoints */ import axios from 'axios'; import { config } from '../../config'; export interface Organization { _id: number; name: string; totalEndpoints: number; owner?: string; shareableDeploymentEnabled: boolean; deploymentToken: string; isDefault: boolean; updatedAt: string; createdAt: string; tags?: string[]; } export interface OrganizationsResponse { success: boolean; result: { entities: Organization[]; filters: Array<{ name: string; type: string; options: string[]; filterUrl: string | null; }>; sortables: string[]; totalEntityCount: number; currentPage: number; pageSize: number; previousPage: number; totalPageCount: number; nextPage: number; }; statusCode: number; errors: string[]; } export interface OrganizationContact { name: string; title?: string; phone?: string; mobile?: string; email: string; } // Interface for create organization request export interface CreateOrganizationRequest { name: string; shareableDeploymentEnabled: boolean; contact: OrganizationContact; note?: string; } export const api = { async getOrganizations(): Promise<OrganizationsResponse> { try { const response = await axios.get( `${config.airHost}/api/public/organizations`, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error('Error fetching organizations:', error); throw error; } }, async createOrganization(data: CreateOrganizationRequest): Promise<{ success: boolean; result: Organization; statusCode: number; errors: string[] }> { try { const response = await axios.post( `${config.airHost}/api/public/organizations`, data, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error('Error creating organization:', error); throw error; } }, async updateOrganization(id: number, data: Partial<CreateOrganizationRequest>): Promise<{ success: boolean; result: Organization; statusCode: number; errors: string[] }> { try { const response = await axios.patch( `${config.airHost}/api/public/organizations/${id}`, data, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error('Error updating organization:', error); throw error; } }, async getOrganizationById(id: number): Promise<{ success: boolean; result: Organization & { note?: string; contact?: OrganizationContact; statistics?: { endpoint: { total: number; managed: number }; case: { total: number; open: number; closed: number; archived: number } } }; statusCode: number; errors: string[] }> { try { const response = await axios.get( `${config.airHost}/api/public/organizations/${id}`, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error(`Error fetching organization with ID ${id}:`, error); throw error; } }, async checkOrganizationNameExists(name: string): Promise<{ success: boolean; result: boolean; statusCode: number; errors: string[] }> { try { const response = await axios.get( `${config.airHost}/api/public/organizations/check`, { params: { name }, headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error('Error checking organization name:', error); throw error; } }, async getShareableDeploymentInfo(deploymentToken: string): Promise<{ success: boolean; result: { organizationId: number; consoleAddress: string; agentVersion: string; }; statusCode: number; errors: string[] }> { try { const response = await axios.get( `${config.airHost}/api/public/organizations/shareable-deployment-info/${deploymentToken}`, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error('Error fetching shareable deployment info:', error); throw error; } }, async updateOrganizationShareableDeployment(id: number, status: boolean): Promise<{ success: boolean; result: null; statusCode: number; errors: string[] }> { try { const response = await axios.post( `${config.airHost}/api/public/organizations/${id}/shareable-deployment`, { status }, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error(`Error updating organization ${id} shareable deployment:`, error); throw error; } }, async updateOrganizationDeploymentToken(id: number, deploymentToken: string): Promise<{ success: boolean; result: null; statusCode: number; errors: string[] }> { try { const response = await axios.post( `${config.airHost}/api/public/organizations/${id}/deployment-token`, { deploymentToken }, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error(`Error updating organization ${id} deployment token:`, error); throw error; } }, async deleteOrganization(id: number): Promise<{ success: boolean; result: null; statusCode: number; errors: string[] }> { try { const response = await axios.delete( `${config.airHost}/api/public/organizations/${id}`, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error(`Error deleting organization with ID ${id}:`, error); throw error; } }, async addTagsToOrganization(id: number, tags: string[]): Promise<{ success: boolean; result: Organization; statusCode: number; errors: string[] }> { try { const response = await axios.patch( `${config.airHost}/api/public/organizations/${id}/tags`, { tags }, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` } } ); return response.data; } catch (error) { console.error(`Error adding tags to organization with ID ${id}:`, error); throw error; } }, async deleteTagsFromOrganization(id: number, tags: string[]): Promise<{ success: boolean; result: Organization; statusCode: number; errors: string[] }> { try { const response = await axios.delete( `${config.airHost}/api/public/organizations/${id}/tags`, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.airApiToken}` }, data: { tags } } ); return response.data; } catch (error) { console.error(`Error deleting tags from organization with ID ${id}:`, error); throw error; } } };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/binalyze/air-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server