Files
galaxy/client-api/src/example.ts
T

279 lines
7.1 KiB
TypeScript

/**
* Example usage of the Galaxy API client
*
* These examples demonstrate common operations using the Galaxy API.
* All examples use openapi-fetch's typed client for full type safety.
*/
import { createGalaxyApi } from "./index";
// =============================================================================
// CLIENT SETUP EXAMPLES
// =============================================================================
// Basic usage - just provide a base URL
const basicApi = createGalaxyApi("https://usegalaxy.org");
// With API key authentication
const authenticatedApi = createGalaxyApi({
baseUrl: "https://usegalaxy.org",
apiKey: "your-api-key-here",
});
// With custom headers and fetch options
const _customApi = createGalaxyApi({
baseUrl: "https://usegalaxy.org",
apiKey: "your-api-key-here",
headers: {
"User-Agent": "MyGalaxyApp/1.0",
},
fetchOptions: {
credentials: "include",
},
});
// =============================================================================
// HISTORY EXAMPLES
// =============================================================================
/**
* List all histories for the current user
*/
async function listHistories() {
const { data, error } = await authenticatedApi.GET("/api/histories");
if (error) {
console.error("Error fetching histories:", error);
return [];
}
console.log(`Found ${data.length} histories:`);
for (const history of data) {
console.log(` - ${history.name} (${history.id})`);
}
return data;
}
/**
* Get the most recently used history
*/
async function getMostRecentHistory() {
const { data, error } = await authenticatedApi.GET("/api/histories/most_recently_used");
if (error) {
console.error("Error fetching most recent history:", error);
return null;
}
console.log(`Most recent history: ${data.name}`);
return data;
}
/**
* Get detailed information about a specific history
*/
async function getHistoryDetails(historyId: string) {
const { data, error } = await authenticatedApi.GET("/api/histories/{history_id}", {
params: {
path: { history_id: historyId },
},
});
if (error) {
console.error("Error fetching history details:", error);
return null;
}
console.log(`History: ${data.name} (${data.id})`);
return data;
}
/**
* Update a history's name or annotation
*/
async function updateHistory(historyId: string, updates: { name?: string; annotation?: string }) {
const { data, error } = await authenticatedApi.PUT("/api/histories/{history_id}", {
params: {
path: { history_id: historyId },
},
body: updates,
});
if (error) {
console.error("Error updating history:", error);
return null;
}
console.log(`Updated history: ${data.name}`);
return data;
}
/**
* Delete a history (moves to trash)
*/
async function deleteHistory(historyId: string, purge = false) {
const { data, error } = await authenticatedApi.DELETE("/api/histories/{history_id}", {
params: {
path: { history_id: historyId },
query: { purge },
},
});
if (error) {
console.error("Error deleting history:", error);
return null;
}
console.log(`Deleted history: ${historyId}`);
return data;
}
/**
* Get published (public) histories
*/
async function getPublishedHistories() {
const { data, error } = await basicApi.GET("/api/histories/published");
if (error) {
console.error("Error fetching published histories:", error);
return [];
}
console.log(`Found ${data.length} published histories`);
return data;
}
// =============================================================================
// DATASET EXAMPLES
// =============================================================================
/**
* Get details about a specific dataset in a history
*/
async function getDatasetDetails(historyId: string, datasetId: string) {
const { data, error } = await authenticatedApi.GET("/api/histories/{history_id}/contents/{type}s/{id}", {
params: {
path: {
history_id: historyId,
type: "dataset",
id: datasetId,
},
},
});
if (error) {
console.error("Error fetching dataset:", error);
return null;
}
console.log(`Dataset: ${data.name}`);
return data;
}
// =============================================================================
// JOB EXAMPLES
// =============================================================================
/**
* Get job status and details
*/
async function getJobStatus(jobId: string) {
const { data, error } = await authenticatedApi.GET("/api/jobs/{job_id}", {
params: {
path: { job_id: jobId },
},
});
if (error) {
console.error("Error fetching job:", error);
return null;
}
console.log(`Job ${jobId}: ${data.state}`);
return data;
}
// =============================================================================
// WORKFLOW EXAMPLES
// =============================================================================
/**
* List all workflows accessible to the user
*/
async function listWorkflows() {
const { data, error } = await authenticatedApi.GET("/api/workflows");
if (error) {
console.error("Error fetching workflows:", error);
return [];
}
console.log(`Found ${data.length} workflows`);
return data;
}
/**
* Get workflow details
*/
async function getWorkflowDetails(workflowId: string) {
const { data, error } = await authenticatedApi.GET("/api/workflows/{workflow_id}", {
params: {
path: { workflow_id: workflowId },
},
});
if (error) {
console.error("Error fetching workflow:", error);
return null;
}
console.log(`Workflow: ${data.name}`);
return data;
}
// =============================================================================
// INVOCATION EXAMPLES
// =============================================================================
/**
* Get workflow invocation status
*/
async function getInvocationStatus(invocationId: string) {
const { data, error } = await authenticatedApi.GET("/api/invocations/{invocation_id}", {
params: {
path: { invocation_id: invocationId },
},
});
if (error) {
console.error("Error fetching invocation:", error);
return null;
}
console.log(`Invocation ${invocationId}: ${data.state}`);
return data;
}
// =============================================================================
// EXPORTS
// =============================================================================
export {
// History operations
listHistories,
getMostRecentHistory,
getHistoryDetails,
updateHistory,
deleteHistory,
getPublishedHistories,
// Dataset operations
getDatasetDetails,
// Job operations
getJobStatus,
// Workflow operations
listWorkflows,
getWorkflowDetails,
// Invocation operations
getInvocationStatus,
};