Skip to content

Requirements

goddess of the hunt edited this page Oct 19, 2024 · 11 revisions

Functional requirements

User Account Management

  1. As a user, I want to query user accounts in AD so that I can retrieve user details. (See #5, #6, #UC3)
  2. As a user, I want to create new user accounts in AD through the REST API so that I can automate account management. (See #7, #8, #9, #UC1)
  3. As a user, I want to update user account information in AD to keep user details current. (See #10, #11, #12, #UC4)
  4. As a user, I want to delete user accounts in AD through the REST API to remove outdated accounts. (See #14, #15, #12, #UC5)
  5. As a user, I want to reset user passwords in AD via the REST API to assist with password recovery. (See #13, #16, #UC6)
  6. As a user, I want to enable or disable user accounts in AD using the REST API to manage user access. (See #17, #18, #UC8)
  7. As a user, I want to add or remove users from groups in AD via the REST API to manage group memberships. (See #49, #50, #UC9)
  8. As a user, I want to search for users in AD by attributes to find specific accounts quickly. (See #40, #41)

Group Management

  1. As a user, I want to create new groups in AD through the REST API to organize users efficiently. (See #19, #20, #UC7)
  2. As a user, I want to update group details in AD via the REST API to ensure group information is up-to-date. (See #31, #32)
  3. As a user, I want to delete groups in AD through the REST API to remove obsolete groups. (See #33, #34, #UC14)
  4. As a user, I want to list all members of a group in AD using the REST API to audit group composition. (See #35, #36, #UC15)

Permission and Role Management

  1. As a user, I want to assign roles to users in AD via the REST API to manage their access rights. (See #43, #44, #UC10)
  2. As a user, I want to remove roles from users in AD using the REST API to revoke permissions as needed. (See #45, #46)
  3. As a user, I want to query role assignments in AD via the REST API to audit user permissions. (See #47, #48, #UC11)

Command Execution and Logging

  1. As a user, I want to view the status of command execution in AD to monitor task completion. (See #29, #30, #UC12)
  2. As a user, I want the system to write the results of executed commands back to the database to make them accessible to the REST API. (See #21, #UC21)

Command Execution and Processing

  1. As a user, I want the system to execute commands in the correct order to ensure that dependent operations are handled correctly. (See #22, #UC2)
  2. As a user, I want the system to validate and execute only correctly formatted commands, preventing errors from disrupting Active Directory operations. (See #37)
  3. As a user, I want the system to prioritize urgent commands when executing, ensuring critical operations are completed promptly. (See #38, #UC16)
  4. As a user, I want a system to handle command execution errors and log them to provide feedback on failed operations. (See #23, #UC17)
  5. As a user, I want a system to validate command inputs before execution to prevent invalid requests from being processed. (See #37)

Interaction with Active Directory

  1. As a user, I want the system to update command status in the database after execution, so I know which commands have been completed and their outcomes. (See #24, #UC19)

Docker Integration and Container Management

  1. As a user, I want the command execution environment to be isolated within Docker containers, ensuring that my Active Directory operations are secure and do not affect other system processes. (See #25, #UC20)

Non-functional requirements

  1. As a user, I want the system to handle at least 100 API requests per minute without delays so that I can rely on it during peak usage times. (Priority: Could-have)
  2. As a user, I want all API endpoints to be secured, so only authorized users can access the system, protecting my data. (Priority: Could-have)
  3. As a user, I want the system to be available 99.9% of the time so that I can rely on it for critical operations without frequent interruptions. (Priority: Must-have)
  4. As a user, I want a user-friendly Swagger UI to interact with the API easily, making it simple to test and explore available commands. (See #27)
  5. As a user, I want clear and informative error messages to understand what went wrong and how to fix issues quickly. (Priority: Could-have)
  6. As a new user, I want detailed documentation for setup, configuration, and usage so that I can deploy and use both applications without confusion. (See #UC23)
  7. As a user, I want all data transmitted to and from the API to be encrypted using HTTPS, ensuring that my data is secure during access. (See #UC22)
  8. As a user, I want the API to execute my commands efficiently, with response times of less than 2 seconds for simple queries, ensuring that my interactions with the system are smooth and responsive. (Priority: Must-have)
  9. As a user, I want my command requests to be queued and prioritized based on importance, ensuring critical commands are processed first during high load periods. (See #22)
  10. As a user, I want system to use PostgreSQL to store commands and outputs. (See #26)
  11. As a user, I want system to use Swagger UI for testing and documentation. (See #27)

Clone this wiki locally