DreamFactory Limit API

API rate limiting management

OpenAPI Specification

dreamfactory-limit-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: DreamFactory System Admin Limit API
  description: The DreamFactory System API provides administrative management capabilities for DreamFactory instances. It allows administrators to manage services, apps, roles, users, CORS configurations, email templates, environment settings, lookups, events, scripts, and more. All system resources are accessible under the /api/v2/system/ base path. Authentication requires either an X-DreamFactory-Session-Token header (for system admins) or an X-DreamFactory-API-Key header (for users with appropriate permissions).
  version: 2.0.0
  contact:
    name: DreamFactory Support
    url: https://www.dreamfactory.com/support
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  termsOfService: https://www.dreamfactory.com/terms-of-use
servers:
- url: https://{instance}/api/v2
  description: DreamFactory instance
  variables:
    instance:
      default: example.dreamfactory.com
      description: Your DreamFactory instance hostname
security:
- sessionToken: []
- apiKey: []
tags:
- name: Limit
  description: API rate limiting management
paths:
  /system/limit:
    get:
      operationId: listLimits
      summary: DreamFactory List API limits
      description: Retrieve a list of API rate limits.
      tags:
      - Limit
      parameters:
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
    post:
      operationId: createLimit
      summary: DreamFactory Create API limit
      description: Create a new API rate limit.
      tags:
      - Limit
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LimitRequest'
      responses:
        '201':
          description: Limit created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
  /system/limit/{id}:
    get:
      operationId: getLimit
      summary: DreamFactory Get API limit
      description: Retrieve a specific API limit by ID.
      tags:
      - Limit
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    patch:
      operationId: updateLimit
      summary: DreamFactory Update API limit
      description: Update a specific API limit by ID.
      tags:
      - Limit
      parameters:
      - $ref: '#/components/parameters/id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LimitRequest'
      responses:
        '200':
          description: Limit updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    delete:
      operationId: deleteLimit
      summary: DreamFactory Delete API limit
      description: Delete a specific API limit by ID.
      tags:
      - Limit
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: Limit deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /system/limit_cache:
    get:
      operationId: listLimitCache
      summary: DreamFactory List limit cache
      description: Retrieve current limit volume levels to check how close limits are to being reached.
      tags:
      - Limit
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
    delete:
      operationId: resetLimitCache
      summary: DreamFactory Reset limit counters
      description: Reset limit counters manually.
      tags:
      - Limit
      responses:
        '200':
          description: Limit cache reset
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    LimitListResponse:
      type: object
      properties:
        resource:
          type: array
          items:
            $ref: '#/components/schemas/LimitResponse'
    LimitResponse:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        type:
          type: string
        rate:
          type: integer
        period:
          type: string
        service_id:
          type: integer
        role_id:
          type: integer
        user_id:
          type: integer
        is_active:
          type: boolean
        created_date:
          type: string
          format: date-time
        last_modified_date:
          type: string
          format: date-time
    ResourceListResponse:
      type: object
      properties:
        resource:
          type: array
          items:
            type: object
    LimitRequest:
      type: object
      properties:
        name:
          type: string
          description: Name of the limit.
        description:
          type: string
          description: Description of the limit.
        type:
          type: string
          description: Type of limit (instance, each_user, each_service, etc.).
        rate:
          type: integer
          description: Number of allowed API calls in the period.
        period:
          type: string
          description: Time period for the limit (minute, hour, day, etc.).
        service_id:
          type: integer
          description: Service ID the limit applies to.
        role_id:
          type: integer
          description: Role ID the limit applies to.
        user_id:
          type: integer
          description: User ID the limit applies to.
        is_active:
          type: boolean
          description: Whether the limit is active.
      required:
      - name
      - type
      - rate
      - period
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              description: Error code.
            message:
              type: string
              description: Error message.
            context:
              type: object
              description: Additional error context.
    SuccessResponse:
      type: object
      properties:
        success:
          type: boolean
  parameters:
    id:
      name: id
      in: path
      required: true
      description: Resource identifier.
      schema:
        type: integer
    limit:
      name: limit
      in: query
      description: Maximum number of records to return.
      schema:
        type: integer
        default: 0
    filter:
      name: filter
      in: query
      description: SQL-like filter to limit results.
      schema:
        type: string
    fields:
      name: fields
      in: query
      description: Comma-delimited list of fields to return.
      schema:
        type: string
    offset:
      name: offset
      in: query
      description: Number of records to skip for pagination.
      schema:
        type: integer
        default: 0
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized - invalid or missing session token or API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    sessionToken:
      type: apiKey
      name: X-DreamFactory-Session-Token
      in: header
      description: Session token obtained after admin login.
    apiKey:
      type: apiKey
      name: X-DreamFactory-API-Key
      in: header
      description: API key associated with a registered application.
externalDocs:
  description: DreamFactory Documentation
  url: https://guide.dreamfactory.com/docs/