@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
174 lines (173 loc) • 5.98 kB
JavaScript
import { z } from "zod";
import { getQueryRequestBodySchema, getQueryResponseBodySchema, API_VERSION } from "../common.js";
import { queryGroupsRequestBodySchema, queryGroupsResponseBodySchema } from "./group.js";
import { queryRolesRequestBodySchema, queryRolesResponseBodySchema } from "./role.js";
import { queryMappingRulesRequestBodySchema, queryMappingRulesResponseBodySchema } from "./mapping-rule.js";
const tenantSchema = z.object({
tenantKey: z.string(),
tenantId: z.string(),
name: z.string(),
description: z.string().optional()
});
const createTenantRequestBodySchema = tenantSchema.pick({
tenantId: true,
name: true,
description: true
});
const createTenantResponseBodySchema = tenantSchema;
const updateTenantRequestBodySchema = tenantSchema.pick({
name: true,
description: true
});
const updateTenantResponseBodySchema = tenantSchema;
const queryTenantsRequestBodySchema = getQueryRequestBodySchema({
sortFields: ["key", "name", "tenantId"],
filter: tenantSchema.pick({
tenantId: true,
name: true
}).partial()
});
const queryTenantsResponseBodySchema = getQueryResponseBodySchema(tenantSchema);
const tenantUserSchema = z.object({
username: z.string()
});
const queryUsersByTenantRequestBodySchema = getQueryRequestBodySchema({
sortFields: ["username"],
filter: z.never()
});
const queryUsersByTenantResponseBodySchema = getQueryResponseBodySchema(tenantUserSchema);
const tenantClientSchema = z.object({
clientId: z.string()
});
const queryClientsByTenantRequestBodySchema = getQueryRequestBodySchema({
sortFields: ["clientId"],
filter: z.never()
});
const queryClientsByTenantResponseBodySchema = getQueryResponseBodySchema(tenantClientSchema);
const queryGroupsByTenantRequestBodySchema = queryGroupsRequestBodySchema;
const queryGroupsByTenantResponseBodySchema = queryGroupsResponseBodySchema;
const queryRolesByTenantRequestBodySchema = queryRolesRequestBodySchema;
const queryRolesByTenantResponseBodySchema = queryRolesResponseBodySchema;
const queryMappingRulesByTenantRequestBodySchema = queryMappingRulesRequestBodySchema;
const queryMappingRulesByTenantResponseBodySchema = queryMappingRulesResponseBodySchema;
const createTenant = {
method: "POST",
getUrl: () => `/${API_VERSION}/tenants`
};
const getTenant = {
method: "GET",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}`
};
const updateTenant = {
method: "PUT",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}`
};
const deleteTenant = {
method: "DELETE",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}`
};
const queryTenants = {
method: "POST",
getUrl: () => `/${API_VERSION}/tenants/search`
};
const assignUserToTenant = {
method: "PUT",
getUrl: ({ tenantId, username }) => `/${API_VERSION}/tenants/${tenantId}/users/${username}`
};
const unassignUserFromTenant = {
method: "DELETE",
getUrl: ({ tenantId, username }) => `/${API_VERSION}/tenants/${tenantId}/users/${username}`
};
const queryUsersByTenant = {
method: "POST",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}/users/search`
};
const queryClientsByTenant = {
method: "POST",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}/clients/search`
};
const queryGroupsByTenant = {
method: "POST",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}/groups/search`
};
const queryRolesByTenant = {
method: "POST",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}/roles/search`
};
const assignClientToTenant = {
method: "PUT",
getUrl: ({ tenantId, clientId }) => `/${API_VERSION}/tenants/${tenantId}/clients/${clientId}`
};
const unassignClientFromTenant = {
method: "DELETE",
getUrl: ({ tenantId, clientId }) => `/${API_VERSION}/tenants/${tenantId}/clients/${clientId}`
};
const assignMappingRuleToTenant = {
method: "PUT",
getUrl: ({ tenantId, mappingId }) => `/${API_VERSION}/tenants/${tenantId}/mappings/${mappingId}`
};
const unassignMappingRuleFromTenant = {
method: "DELETE",
getUrl: ({ tenantId, mappingId }) => `/${API_VERSION}/tenants/${tenantId}/mappings/${mappingId}`
};
const queryMappingRulesByTenant = {
method: "POST",
getUrl: ({ tenantId }) => `/${API_VERSION}/tenants/${tenantId}/mappings/search`
};
const assignGroupToTenant = {
method: "PUT",
getUrl: ({ tenantId, groupId }) => `/${API_VERSION}/tenants/${tenantId}/groups/${groupId}`
};
const unassignGroupFromTenant = {
method: "DELETE",
getUrl: ({ tenantId, groupId }) => `/${API_VERSION}/tenants/${tenantId}/groups/${groupId}`
};
const assignRoleToTenant = {
method: "PUT",
getUrl: ({ tenantId, roleId }) => `/${API_VERSION}/tenants/${tenantId}/roles/${roleId}`
};
const unassignRoleFromTenant = {
method: "DELETE",
getUrl: ({ tenantId, roleId }) => `/${API_VERSION}/tenants/${tenantId}/roles/${roleId}`
};
export {
assignClientToTenant,
assignGroupToTenant,
assignMappingRuleToTenant,
assignRoleToTenant,
assignUserToTenant,
createTenant,
createTenantRequestBodySchema,
createTenantResponseBodySchema,
deleteTenant,
getTenant,
queryClientsByTenant,
queryClientsByTenantRequestBodySchema,
queryClientsByTenantResponseBodySchema,
queryGroupsByTenant,
queryGroupsByTenantRequestBodySchema,
queryGroupsByTenantResponseBodySchema,
queryMappingRulesByTenant,
queryMappingRulesByTenantRequestBodySchema,
queryMappingRulesByTenantResponseBodySchema,
queryRolesByTenant,
queryRolesByTenantRequestBodySchema,
queryRolesByTenantResponseBodySchema,
queryTenants,
queryTenantsRequestBodySchema,
queryTenantsResponseBodySchema,
queryUsersByTenant,
queryUsersByTenantRequestBodySchema,
queryUsersByTenantResponseBodySchema,
tenantClientSchema,
tenantSchema,
tenantUserSchema,
unassignClientFromTenant,
unassignGroupFromTenant,
unassignMappingRuleFromTenant,
unassignRoleFromTenant,
unassignUserFromTenant,
updateTenant,
updateTenantRequestBodySchema,
updateTenantResponseBodySchema
};