Files
headquarter/apps/web/src/api/ssh_keys.ts
T

54 lines
1.3 KiB
TypeScript

import { apiClient } from "./client";
export interface SSHKey {
id: string;
name: string;
public_key: string;
created_at: string;
}
export interface SSHKeyCreate {
name: string;
}
export async function listSSHKeys(): Promise<SSHKey[]> {
const response = await apiClient.get<SSHKey[]>("/ssh-keys");
return response.data;
}
export async function createSSHKey(data: SSHKeyCreate): Promise<SSHKey> {
const response = await apiClient.post<SSHKey>("/ssh-keys", data);
return response.data;
}
export async function deleteSSHKey(keyId: string): Promise<void> {
await apiClient.delete(`/ssh-keys/${keyId}`);
}
export interface SignPayloadRequest {
payload: string;
}
export interface SignatureResponse {
signature: string;
}
export interface VerifySignatureRequest {
payload: string;
signature: string;
}
export interface VerifySignatureResponse {
valid: boolean;
}
export async function signPayload(keyId: string, data: SignPayloadRequest): Promise<SignatureResponse> {
const response = await apiClient.post<SignatureResponse>(`/ssh-keys/${keyId}/sign`, data);
return response.data;
}
export async function verifySignature(keyId: string, data: VerifySignatureRequest): Promise<VerifySignatureResponse> {
const response = await apiClient.post<VerifySignatureResponse>(`/ssh-keys/${keyId}/verify`, data);
return response.data;
}