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

# List deals with commission data

> Returns paid/closed deals with financial data for the commissions grid:
revenue, commission, earnings (commission minus margin deduction minus
referral fee), and effective rate. Non-admins see only their own deals.

**Nonce:** `sagescreen_frontend_nonce`
**Capability:** `ss_sales` or `ss_sales_admin` or `ss_admin_all`




## OpenAPI

````yaml /openapi/private/specs/wp/deal-internal.yml post /wp-admin/admin-ajax.php?action=sagescreen_get_commissions
openapi: 3.1.0
info:
  title: SageScreen — Deal Module
  description: >
    Enterprise deal lifecycle management. Deals represent sales proposals that

    flow through a multi-stage approval and payment pipeline before provisioning

    a council.


    **CPT:** `ss_deal`

    **Custom statuses:** `draft`, `ss_pending_approval`, `ss_approved`,

    `ss_customer_sent`, `ss_customer_approved`, `ss_customer_rejected`,

    `ss_invoiced`, `ss_paid`, `ss_closed`, `ss_lost`


    **Business rule:** Only Enterprise (E-SKU) products go through the
    deal/sales

    process. Packs and subscriptions are not sold via deals. Trials are
    Stripe-only.
  version: 1.0.0
servers:
  - url: https://{domain}/wp-json/sagescreen/v1
    description: WordPress REST API
    variables:
      domain:
        default: api.sagescreen.app
security: []
tags:
  - name: Deal REST
    description: REST API endpoints authenticated via X-API-Key
  - name: Deal AJAX
    description: AJAX endpoints authenticated via WordPress nonce + capability check
paths:
  /wp-admin/admin-ajax.php?action=sagescreen_get_commissions:
    post:
      tags:
        - Deal AJAX
      summary: List deals with commission data
      description: |
        Returns paid/closed deals with financial data for the commissions grid:
        revenue, commission, earnings (commission minus margin deduction minus
        referral fee), and effective rate. Non-admins see only their own deals.

        **Nonce:** `sagescreen_frontend_nonce`
        **Capability:** `ss_sales` or `ss_sales_admin` or `ss_admin_all`
      operationId: ajaxGetCommissions
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - nonce
                - action
              properties:
                nonce:
                  type: string
                  examples:
                    - abc123def456
                action:
                  type: string
                  const: sagescreen_get_commissions
      responses:
        '200':
          description: Commission data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AjaxGetCommissionsResponse'
              example:
                success: true
                data:
                  deals:
                    - id: 1042
                      customer_name: Greenville City Council
                      contact_name: Bob Johnson
                      revenue: 12500
                      commission: 1875
                      earnings: 1625
                      eff_rate: 13
                      closed_month: 2026-02
                      closed_at: Feb 15, 2026 3:45 PM
                      status: ss_closed
                  is_admin: false
        '403':
          $ref: '#/components/responses/AjaxForbidden'
      security:
        - wpAjaxNonce: []
components:
  schemas:
    AjaxGetCommissionsResponse:
      type: object
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          properties:
            deals:
              type: array
              items:
                $ref: '#/components/schemas/CommissionListItem'
            is_admin:
              type: boolean
              examples:
                - false
    CommissionListItem:
      type: object
      properties:
        id:
          type: integer
          examples:
            - 1042
        customer_name:
          type: string
          examples:
            - Greenville City Council
        contact_name:
          type: string
          examples:
            - Bob Johnson
        revenue:
          type: number
          format: float
          description: Year 1 total (calculated_year1_total)
          examples:
            - 12500
        commission:
          type: number
          format: float
          description: Year 1 commission (calculated_commission_year1)
          examples:
            - 1875
        earnings:
          type: number
          format: float
          description: Commission minus margin deduction minus referral fee
          examples:
            - 1625
        eff_rate:
          type: number
          format: float
          description: Effective commission rate as percentage (earnings / revenue * 100)
          examples:
            - 13
        closed_month:
          type: string
          description: YYYY-MM format for month filtering
          examples:
            - 2026-02
        closed_at:
          type: string
          description: Formatted datetime
          examples:
            - Feb 15, 2026 3:45 PM
        status:
          $ref: '#/components/schemas/DealStatus'
        owner:
          type: string
          description: Display name of deal owner (admin view only)
          examples:
            - Jane Smith
    AjaxErrorResponse:
      type: object
      description: WordPress AJAX error envelope (wp_send_json_error)
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          const: false
        data:
          oneOf:
            - type: object
              properties:
                message:
                  type: string
                  description: Human-readable error message
                  examples:
                    - Deal not found
                errors:
                  type: array
                  description: Validation error list (submit_deal only)
                  items:
                    type: string
                  examples:
                    - - Customer name is required
                      - Contact email is required
                redirect_edit:
                  type: boolean
                  description: Whether front end should redirect to edit form
                  examples:
                    - true
                edit_url:
                  type: string
                  description: URL to redirect to for fixing validation errors
                  examples:
                    - /admin/sales/calc?deal=1042
            - type: string
              description: Simple error message string
              examples:
                - Deal not found
    DealStatus:
      type: string
      enum:
        - draft
        - ss_pending_approval
        - ss_approved
        - ss_customer_sent
        - ss_customer_approved
        - ss_customer_rejected
        - ss_invoiced
        - ss_paid
        - ss_closed
        - ss_lost
      description: Custom post status for `ss_deal`
  responses:
    AjaxForbidden:
      description: User does not have the required capability
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AjaxErrorResponse'
          example:
            success: false
            data:
              message: You do not have permission to perform this action
  securitySchemes:
    wpAjaxNonce:
      type: apiKey
      in: query
      name: nonce
      description: |
        WordPress AJAX nonce — either `sagescreen_frontend_nonce` or
        `sagescreen_sales_calc` depending on the endpoint (see each endpoint
        description). Sent as a form field in the POST body.

````