feat: add OAuth APIs with scoped permissions (#1542)

Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
This commit is contained in:
Elias Schneider
2026-07-06 12:25:02 -07:00
committed by GitHub
co-authored by Alessandro Segala
parent 0b2706a488
commit 09d196f7c5
68 changed files with 3945 additions and 157 deletions
+56
View File
@@ -0,0 +1,56 @@
import type {
Api,
ApiCreate,
ApiListItem,
ApiPermissionInput,
ApiUpdate,
ClientApiAccess
} from '$lib/types/api.type';
import type { ListRequestOptions, Paginated } from '$lib/types/list-request.type';
import APIService from './api-service';
export default class ApisService extends APIService {
list = async (options?: ListRequestOptions) => {
const res = await this.api.get('/apis', { params: options });
return res.data as Paginated<ApiListItem>;
};
listAll = async () => {
const res = await this.api.get('/apis', { params: { pagination: { page: 1, limit: 1000 } } });
return (res.data as Paginated<ApiListItem>).data;
};
get = async (id: string) => {
const res = await this.api.get(`/apis/${id}`);
return res.data as Api;
};
create = async (api: ApiCreate) => {
const res = await this.api.post('/apis', api);
return res.data as Api;
};
update = async (id: string, api: ApiUpdate) => {
const res = await this.api.put(`/apis/${id}`, api);
return res.data as Api;
};
remove = async (id: string) => {
await this.api.delete(`/apis/${id}`);
};
updatePermissions = async (id: string, permissions: ApiPermissionInput[]) => {
const res = await this.api.put(`/apis/${id}/permissions`, { permissions });
return res.data as Api;
};
getClientAccess = async (clientId: string) => {
const res = await this.api.get(`/api-access/${clientId}`);
return res.data as ClientApiAccess;
};
updateClientAccess = async (clientId: string, access: ClientApiAccess) => {
const res = await this.api.put(`/api-access/${clientId}`, access);
return res.data as ClientApiAccess;
};
}