> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Support Package Requests

> Lists support package requests created by API Portal users in Apinizer, approves or rejects them. Manages support packages that portal users want to purchase and can change application statuses between PENDING, APPROVED, or REJECTED.

## Roles and Access

* Menu path: Portal Management → Support Package → Requests.
* Access: Users with portal management authority (e.g., PORTAL\_MANAGER) can view and perform operations.
* Portal end users do not access this screen; operations are only performed from the management panel.

For a **request** to appear on the **Support Package Requests** screen, the user performs the following steps on the API Portal side:

<Steps>
  <Step title="User logs into API Portal">
    Developer or project member logs into their API Portal account with username and password.
  </Step>

  <Step title="Goes to Support Package page">
    Clicks on **Support Packages** tab from Portal menu.
  </Step>

  <Step title="Selects appropriate support package">
    Selects one of the following example packages:

    * Enterprise Integration Full Support Package
    * Developer Tools Full Support Package
    * Full Startup Support Package
  </Step>

  <Step title="Creates support package request">
    Clicks the **"Request Support Package"** button for the selected package and submits the request.
  </Step>

  <Step title="Pending approval status">
    The created request transitions to **PENDING** status and appears on the **Apinizer Manager** panel.
  </Step>

  <Step title="Notification">
    User receives an email notification when the request status changes (when approved or rejected).
  </Step>
</Steps>

<Frame caption="Support Package Selection on Portal">
  <img src="https://mintcdn.com/apinizer/kGW75Xw-tjGRkf9w/images/portal/destek_paketleri.png?fit=max&auto=format&n=kGW75Xw-tjGRkf9w&q=85&s=556ea463d7b21ca760e568e8bf89f074" alt="Support Package Selection on Portal" width="900" height="600" style={{ borderRadius: '0.5rem' }} data-path="images/portal/destek_paketleri.png" />
</Frame>

<Frame caption="Support Package Request Form">
  <img src="https://mintcdn.com/apinizer/kGW75Xw-tjGRkf9w/images/portal/destek_paketleri2.png?fit=max&auto=format&n=kGW75Xw-tjGRkf9w&q=85&s=f0a5f1ee8ebd57592ff576326c21ce74" alt="Support Package Request Form" width="900" height="500" style={{ borderRadius: '0.5rem' }} data-path="images/portal/destek_paketleri2.png" />
</Frame>

The administrator checks support package requests coming to the Apinizer Manager interface with the following steps:

<Steps>
  <Step title="Administrator Login">
    Admin logs into **Apinizer Manager Panel** with user credentials.
  </Step>

  <Step title="Access Relevant Menu">
    Follows this path through menu: **Administration → Portal → Support Packages → Support Package Requests**
  </Step>

  <Step title="View Support Package Requests">
    Support package requests created by all users are listed in table format.
  </Step>

  <Step title="Table Review">
    Administrator can see the detail, status, and dates of each request in the table. (Table details are below.)
  </Step>

  <Step title="Perform Operation">
    Administrator can perform operations in the **Actions** field on each request's row:

    **Approve** – Updates status to *APPROVED*.

    **Reject** – Updates status to *REJECTED*.
  </Step>

  <Step title="Post-Approval Process">
    **Approved Date** and **Expired Date** information of approved request is automatically updated.
  </Step>

  <Step title="User Notification">
    When the operation is completed, the system sends an email or portal notification to the user (the person who created the request).
  </Step>
</Steps>

## Approval and Rejection Flow

<Tabs>
  <Tab title="Approve">
    1. Click Approve button (only visible in PENDING or REJECTED statuses).
    2. Confirmation dialog opens.
    3. If you approve, supportPackageRequestService.approve(id, currentUserId) is called.
    4. After operation, list automatically refreshes; status becomes APPROVED.
  </Tab>

  <Tab title="Reject">
    1. Click Reject button (only visible in PENDING or APPROVED statuses).
    2. RejectDialogComponent opens for reason entry.
    3. Reason is required; if left empty, button remains inactive.
    4. When you save, supportPackageRequestService.reject(id, currentUserId, reason) is called.
    5. List refreshes; status is updated to REJECTED.
  </Tab>
</Tabs>

## Business Rules

<Note>
  * There is no deletion operation. Manual intervention via API/DB is required if needed.
  * PENDING record can be both approved and rejected.
  * APPROVED record can be rejected again (e.g., in case of accidental approval).
  * REJECTED record can be approved again (e.g., if user request is re-evaluated).
  * After operation, entire list is reloaded; no page refresh needed.
</Note>

<Frame caption="Support Package Requests Management Screen">
  <img src="https://mintcdn.com/apinizer/kGW75Xw-tjGRkf9w/images/portal/destek_paketleri3.png?fit=max&auto=format&n=kGW75Xw-tjGRkf9w&q=85&s=e6cc61ac82eab1c0744283a47fa5fbfc" alt="Support Package Requests Management Screen" width="900" height="600" style={{ borderRadius: '0.5rem' }} data-path="images/portal/destek_paketleri3.png" />
</Frame>

| Column Name           | Description                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------ |
| **Account E-mail**    | Email address of the user who created the request                                          |
| **Account Full Name** | Full name of the user                                                                      |
| **Organization**      | Organization or project name to which the user belongs                                     |
| **Support Package**   | Type of requested support package (example: *Enterprise Integration Full Support Package*) |
| **Status**            | Current status of the request (example: *PENDING*, *APPROVED*, *REJECTED*)                 |
| **Usage (Detail)**    | Link that redirects to package usage detail page                                           |
| **Request Date**      | Date the request was created                                                               |
| **Approved Date**     | If request is approved, the date it was approved                                           |
| **Expired Date**      | Expiration date of the support package validity period                                     |
| **Actions**           | Operations that can be performed by administrator (✅ Approve / ❌ Reject)                   |

## Frequently Asked Questions

<Accordion title="Can I delete records on this screen?">
  No. Only approval and rejection operations are supported.
</Accordion>

<Accordion title="Is the rejection reason shown to the user?">
  Reject dialog records the reason. Display of the reason in external systems depends on backend/portal integration.
</Accordion>

<Accordion title="Can I approve a rejected application later?">
  Yes. "Approve" button is visible for rejected record; you can re-evaluate.
</Accordion>

<Accordion title="Why can't the detail dialog be edited?">
  This page is only for package request management; package definitions are made on other screens of portal management.
</Accordion>
