Microsoft Windows Server Application Pools API

Application pools provide an isolation mechanism for processes on the web server. There are many different settings available to fine-tune the behavior of the worker processes used to serve requests through IIS.

OpenAPI Specification

microsoft-windows-server-application-pools-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: IIS Administration Application Pools API
  description: REST API for managing Internet Information Services (IIS) web servers. The IIS Administration API enables configuration and monitoring of IIS web sites, applications, and application pools from any HTTP client. Based on the Microsoft IIS Administration documentation at https://learn.microsoft.com/en-us/iis-administration/.
  version: 2.3.0
  contact:
    name: Microsoft Support
    url: https://support.microsoft.com
    email: support@microsoft.com
  license:
    name: MIT
    url: https://github.com/microsoft/IIS.Administration/blob/main/LICENSE
  x-logo:
    url: https://www.microsoft.com/favicon.ico
servers:
- url: https://localhost:55539
  description: Default IIS Administration API server
security:
- accessToken: []
tags:
- name: Application Pools
  description: Application pools provide an isolation mechanism for processes on the web server. There are many different settings available to fine-tune the behavior of the worker processes used to serve requests through IIS.
paths:
  /api/webserver/application-pools:
    get:
      operationId: listApplicationPools
      summary: List All Application Pools
      description: Retrieves a list of all application pools configured on the IIS server.
      tags:
      - Application Pools
      responses:
        '200':
          description: A list of application pools.
          content:
            application/json:
              schema:
                type: object
                properties:
                  application_pools:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApplicationPoolSummary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createApplicationPool
      summary: Create an Application Pool
      description: Creates a new application pool. The only required information is the name of the application pool.
      tags:
      - Application Pools
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationPoolCreate'
      responses:
        '201':
          description: The application pool was successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationPool'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: An application pool with the specified name already exists.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/webserver/application-pools/{id}:
    get:
      operationId: getApplicationPool
      summary: Get an Application Pool
      description: Retrieves the details of a specific application pool by its identifier.
      tags:
      - Application Pools
      parameters:
      - $ref: '#/components/parameters/ApplicationPoolId'
      responses:
        '200':
          description: The application pool details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationPool'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    patch:
      operationId: updateApplicationPool
      summary: Update an Application Pool
      description: Updates the configuration of an existing application pool.
      tags:
      - Application Pools
      parameters:
      - $ref: '#/components/parameters/ApplicationPoolId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationPoolUpdate'
      responses:
        '200':
          description: The application pool was successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationPool'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteApplicationPool
      summary: Delete an Application Pool
      description: Deletes an application pool from the IIS server.
      tags:
      - Application Pools
      parameters:
      - $ref: '#/components/parameters/ApplicationPoolId'
      responses:
        '204':
          description: The application pool was successfully deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    ProcessModel:
      type: object
      description: Process model settings for the application pool worker processes.
      properties:
        idle_timeout:
          type: integer
          description: The idle timeout in minutes before a worker process is shut down.
          default: 20
          example: 10
        max_processes:
          type: integer
          description: The maximum number of worker processes for the application pool (web garden).
          default: 1
          example: 10
        pinging_enabled:
          type: boolean
          description: Whether health monitoring pings are enabled.
          default: true
          example: true
        ping_interval:
          type: integer
          description: The interval in seconds between health monitoring pings.
          default: 30
          example: 10
        ping_response_time:
          type: integer
          description: The maximum time in seconds allowed for a worker process to respond to a health ping.
          default: 90
          example: 10
        shutdown_time_limit:
          type: integer
          description: The time in seconds allowed for a worker process to gracefully shut down.
          default: 90
          example: 10
        startup_time_limit:
          type: integer
          description: The time in seconds allowed for a worker process to start up.
          default: 90
          example: 10
        idle_timeout_action:
          type: string
          description: The action to take when the idle timeout is reached.
          enum:
          - Terminate
          - Suspend
          default: Terminate
          example: Terminate
    ApplicationPoolCreate:
      type: object
      description: Request body for creating a new application pool.
      required:
      - name
      properties:
        name:
          type: string
          description: The name of the application pool to create.
          examples:
          - Demonstration App Pool
        auto_start:
          type: boolean
          default: true
          example: true
        pipeline_mode:
          type: string
          enum:
          - integrated
          - classic
          default: integrated
          example: integrated
        managed_runtime_version:
          type: string
          default: v4.0
          example: example_value
        enable_32bit_win64:
          type: boolean
          default: false
          example: true
        queue_length:
          type: integer
          default: 1000
          example: 10
        cpu:
          $ref: '#/components/schemas/CpuSettings'
        process_model:
          $ref: '#/components/schemas/ProcessModel'
        identity:
          $ref: '#/components/schemas/Identity'
        recycling:
          $ref: '#/components/schemas/Recycling'
        rapid_fail_protection:
          $ref: '#/components/schemas/RapidFailProtection'
        process_orphaning:
          $ref: '#/components/schemas/ProcessOrphaning'
    CpuSettings:
      type: object
      description: CPU usage settings for the application pool.
      properties:
        limit:
          type: integer
          description: The maximum CPU usage percentage (in 1/1000ths of a percent) allowed for the application pool.
          default: 0
          example: 10
        limit_interval:
          type: integer
          description: The interval in minutes for CPU limit monitoring.
          default: 5
          example: 10
        action:
          type: string
          description: The action to take when the CPU limit is exceeded.
          enum:
          - NoAction
          - KillW3wp
          - Throttle
          - ThrottleUnderLoad
          default: NoAction
          example: NoAction
        processor_affinity_enabled:
          type: boolean
          description: Whether processor affinity is enabled.
          default: false
          example: true
        processor_affinity_mask32:
          type: string
          description: The 32-bit processor affinity mask.
          default: '0xFFFFFFFF'
          example: example_value
        processor_affinity_mask64:
          type: string
          description: The 64-bit processor affinity mask.
          default: '0xFFFFFFFF'
          example: example_value
    Error:
      type: object
      properties:
        title:
          type: string
          description: A short description of the error.
          example: Example Title
        detail:
          type: string
          description: A detailed description of the error.
          example: example_value
        status:
          type: integer
          description: The HTTP status code.
          example: 10
    RecyclingLogEvents:
      type: object
      description: Configuration for which recycling events are logged.
      properties:
        time:
          type: boolean
          default: true
          example: true
        requests:
          type: boolean
          default: true
          example: true
        schedule:
          type: boolean
          default: true
          example: true
        memory:
          type: boolean
          default: true
          example: true
        isapi_unhealthy:
          type: boolean
          default: true
          example: true
        on_demand:
          type: boolean
          default: true
          example: true
        config_change:
          type: boolean
          default: true
          example: true
        private_memory:
          type: boolean
          default: true
          example: true
    HalLink:
      type: object
      properties:
        href:
          type: string
          format: uri-reference
          description: The URI of the linked resource.
          example: example_value
    ProcessOrphaning:
      type: object
      description: Process orphaning settings that control behavior when a worker process cannot be shut down gracefully.
      properties:
        enabled:
          type: boolean
          description: Whether process orphaning is enabled.
          default: false
          example: true
        orphan_action_exe:
          type: string
          description: The path to an executable to run when a worker process is orphaned.
          example: example_value
        orphan_action_params:
          type: string
          description: Parameters for the orphan action executable.
          example: example_value
    Identity:
      type: object
      description: The identity configuration for the application pool worker process.
      properties:
        identity_type:
          type: string
          description: The type of identity used by the application pool.
          enum:
          - ApplicationPoolIdentity
          - LocalSystem
          - LocalService
          - NetworkService
          - SpecificUser
          default: ApplicationPoolIdentity
          example: ApplicationPoolIdentity
        username:
          type: string
          description: The username for the identity when using SpecificUser identity type.
          example: example_value
        load_user_profile:
          type: boolean
          description: Whether to load the user profile for the worker process.
          default: true
          example: true
    ApplicationPoolUpdate:
      type: object
      description: Request body for updating an application pool. Only include properties that should be changed.
      properties:
        name:
          type: string
          example: Example Title
        auto_start:
          type: boolean
          example: true
        pipeline_mode:
          type: string
          enum:
          - integrated
          - classic
          example: integrated
        managed_runtime_version:
          type: string
          example: example_value
        enable_32bit_win64:
          type: boolean
          example: true
        queue_length:
          type: integer
          example: 10
        cpu:
          $ref: '#/components/schemas/CpuSettings'
        process_model:
          $ref: '#/components/schemas/ProcessModel'
        identity:
          $ref: '#/components/schemas/Identity'
        recycling:
          $ref: '#/components/schemas/Recycling'
        rapid_fail_protection:
          $ref: '#/components/schemas/RapidFailProtection'
        process_orphaning:
          $ref: '#/components/schemas/ProcessOrphaning'
    Recycling:
      type: object
      description: Recycling settings for the application pool.
      properties:
        disable_overlapped_recycle:
          type: boolean
          description: Whether to disable overlapped recycling.
          default: false
          example: true
        disable_recycle_on_config_change:
          type: boolean
          description: Whether to disable recycling on configuration changes.
          default: false
          example: true
        log_events:
          $ref: '#/components/schemas/RecyclingLogEvents'
        periodic_restart:
          $ref: '#/components/schemas/PeriodicRestart'
    ApplicationPoolLinks:
      type: object
      description: HAL-style links to related resources for an application pool.
      properties:
        webapps:
          $ref: '#/components/schemas/HalLink'
        websites:
          $ref: '#/components/schemas/HalLink'
        worker_processes:
          $ref: '#/components/schemas/HalLink'
    PeriodicRestart:
      type: object
      description: Periodic restart configuration for the application pool.
      properties:
        time_interval:
          type: integer
          description: The time interval in minutes after which the application pool recycles.
          default: 1740
          example: 10
        private_memory:
          type: integer
          description: The private memory threshold in kilobytes that triggers recycling. 0 means disabled.
          default: 0
          example: 10
        request_limit:
          type: integer
          description: The number of requests after which the application pool recycles. 0 means disabled.
          default: 0
          example: 10
        virtual_memory:
          type: integer
          description: The virtual memory threshold in kilobytes that triggers recycling. 0 means disabled.
          default: 0
          example: 10
        schedule:
          type: array
          description: Scheduled times for recycling the application pool.
          items:
            type: string
            format: time
          example: []
    RapidFailProtection:
      type: object
      description: Rapid fail protection settings that determine how IIS responds to repeated worker process failures.
      properties:
        enabled:
          type: boolean
          description: Whether rapid fail protection is enabled.
          default: true
          example: true
        load_balancer_capabilities:
          type: string
          description: The load balancer capabilities response type.
          enum:
          - HttpLevel
          - TcpLevel
          default: HttpLevel
          example: HttpLevel
        interval:
          type: integer
          description: The time interval in minutes during which the max crash count is monitored.
          default: 5
          example: 10
        max_crashes:
          type: integer
          description: The maximum number of worker process crashes allowed within the interval.
          default: 5
          example: 10
        auto_shutdown_exe:
          type: string
          description: The path to an executable to run when the application pool is shut down due to rapid fail protection.
          example: example_value
        auto_shutdown_params:
          type: string
          description: Parameters for the auto shutdown executable.
          example: example_value
    ApplicationPoolSummary:
      type: object
      description: A summary representation of an application pool in list responses.
      properties:
        name:
          type: string
          description: The name of the application pool.
          example: Example Title
        id:
          type: string
          description: The unique identifier of the application pool.
          example: abc123
        status:
          type: string
          description: The current status of the application pool.
          enum:
          - started
          - stopped
          - starting
          - stopping
          example: started
        _links:
          type: object
          properties:
            self:
              $ref: '#/components/schemas/HalLink'
          example: example_value
    ApplicationPool:
      type: object
      description: A complete IIS application pool resource with all configuration settings for worker process isolation and management.
      properties:
        name:
          type: string
          description: The name of the application pool.
          examples:
          - DefaultAppPool
        id:
          type: string
          description: The unique identifier of the application pool.
          example: abc123
        status:
          type: string
          description: The current status of the application pool.
          enum:
          - started
          - stopped
          - starting
          - stopping
          example: started
        auto_start:
          type: boolean
          description: Whether the application pool starts automatically when IIS starts.
          default: true
          example: true
        pipeline_mode:
          type: string
          description: The managed pipeline mode for the application pool.
          enum:
          - integrated
          - classic
          default: integrated
          example: integrated
        managed_runtime_version:
          type: string
          description: The version of the .NET CLR loaded by the application pool. Empty string for unmanaged code.
          examples:
          - v4.0
          - v2.0
          - ''
        enable_32bit_win64:
          type: boolean
          description: Whether to enable 32-bit applications on 64-bit Windows.
          default: false
          example: true
        queue_length:
          type: integer
          description: The maximum number of requests that can be queued for the application pool before requests are rejected.
          default: 1000
          example: 10
        cpu:
          $ref: '#/components/schemas/CpuSettings'
        process_model:
          $ref: '#/components/schemas/ProcessModel'
        identity:
          $ref: '#/components/schemas/Identity'
        recycling:
          $ref: '#/components/schemas/Recycling'
        rapid_fail_protection:
          $ref: '#/components/schemas/RapidFailProtection'
        process_orphaning:
          $ref: '#/components/schemas/ProcessOrphaning'
        _links:
          $ref: '#/components/schemas/ApplicationPoolLinks'
  responses:
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The authenticated user does not have permission for this operation.
    Unauthorized:
      description: Authentication credentials are missing or invalid.
    BadRequest:
      description: The request body is malformed or contains invalid values.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    ApplicationPoolId:
      name: id
      in: path
      required: true
      description: The unique identifier of the application pool.
      schema:
        type: string
  securitySchemes:
    accessToken:
      type: http
      scheme: bearer
      description: Access token for authenticating with the IIS Administration API. Tokens are generated through the API management portal at https://localhost:55539.