const { object } = require("./utils") const Resource = require("./utils/Resource") const user = { _id: "us_693a73206518477283a8d5ae31103252", email: "test@test.com", roles: { app_957b12f943d348faa61db7e18e088d0f: "BASIC", }, builder: { global: false, }, admin: { global: true, }, tenantId: "default", status: "active", budibaseAccess: true, csrfToken: "9c70291d-7137-48f9-9166-99ab5473a3d4", userId: "us_693a73206518477283a8d5ae31103252", roleId: "ADMIN", role: { _id: "ADMIN", name: "Admin", permissionId: "admin", inherits: "POWER", }, } const userSchema = object( { email: { description: "The email address of the user, this must be unique.", type: "string", }, password: { description: "The password of the user if using password based login - this will never be returned. This can be" + " left out of subsequent requests (updates) and will be enriched back into the user structure.", type: "string", }, status: { description: "The status of the user, if they are active.", type: "string", enum: ["active"], }, firstName: { description: "The first name of the user", type: "string", }, lastName: { description: "The last name of the user", type: "string", }, forceResetPassword: { description: "If set to true forces the user to reset their password on first login.", type: "boolean", }, builder: { description: "Describes if the user is a builder user or not.", type: "object", properties: { global: { description: "If set to true the user will be able to build any app in the system.", type: "boolean", }, }, }, admin: { description: "Describes if the user is an admin user or not.", type: "object", properties: { global: { description: "If set to true the user will be able to administrate the system.", type: "boolean", }, }, }, roles: { description: "Contains the roles of the user per app (assuming they are not a builder user).", type: "object", additionalProperties: { type: "string", description: "A map of app ID (production app ID, minus the _dev component) to a role ID, e.g. ADMIN.", }, }, }, { required: ["email", "roles"] } ) const userOutputSchema = { ...userSchema, properties: { ...userSchema.properties, _id: { description: "The ID of the user.", type: "string", }, }, required: [...userSchema.required, "_id"], } module.exports = new Resource() .setExamples({ user: { value: { data: user, }, }, users: { value: { data: [user], }, }, }) .setSchemas({ user: userSchema, userOutput: object({ data: userOutputSchema, }), userSearch: object({ data: { type: "array", items: userOutputSchema, }, }), })