Prewave Actions API

🆕 NEW - Retrieve actions (tasks/work items), action types, and action statuses for supplier relationships, compliance reviews, and operational activities. Available from February 2026.

OpenAPI Specification

prewave-actions-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Public Prewave Actions API
  description: 'Documentation of the Public Prewave API.


    ## What''s New


    ### Q1 2026 — Supplier Management, User Management, Actions and Feed


    This quarter introduces major v2 upgrades, expanded administrative capabilities, and the new Actions API.


    - **Core Releases:** Deployed Supplier Management API v2 and Feed API v2, alongside the all-new Actions API.

    - **Enhanced Functionality:** Added robust identifier management, granular user and role configuration, and endpoints for managing supplier connection contacts.

    - ⚠️ **Required Migration:** Legacy v1 endpoints for Suppliers and Sites Upsert have been deprecated. Developers must migrate existing integrations to v2 by **May 31, 2027** (original deadline was December 31, 2026).


    📖 **[Read the Q1 2026 changelog](https://docs.prewave.com/en/articles/699847-q1-2026-public-api-updates)**


    ### Q2 2026 — Supplier Screening and External Scores


    We have expanded our v2 documentation to include comprehensive integration guidance for supplier screening and validation workflows and identifier-based external score ingestion.


    - **New Capabilities:** Added support for optional post-onboarding screening and validation during the create event.

    - **External Scores:** Batch POST for multiple supplier sites, per-site history GET, and event-type discovery GET (`/public/v1/scores/externals` and `/public/v1/scores/externals/event-types`). Documented in OpenAPI when enabled for your organization.

    - **Developer Resources:** Published new integration examples and detailed identifier validation rules to streamline your implementation process.


    📖 **[Read the Q2 2026 changelog](https://docs.prewave.com/en/articles/699849-q2-2026-public-api-updates)**


    ### Q3 2026 — Scores Webhooks


    To support event-driven architectures and eliminate the need for continuous API polling, we are introducing webhooks for score state changes later this year.


    - **Event-Driven Architecture:** Register webhook URLs to receive real-time HTTP payloads whenever a supplier''s score updates, so you can drive immediate mitigation responses without polling the API.

    - **Availability:** Comprehensive OpenAPI specifications and payload schemas will be published closer to the release date.

    - **Note:** Schemas and behaviors are subject to refinement prior to general availability.


    Documentation updates will be provided prior to release.


    ### Q4 2026 — Feed V2


    We are enhancing Feed API v2 with additional capabilities on top of the existing `GET /public/v2/feed` contract (see Q1 changelog and OpenAPI for the current Feed v2 integration).


    - **Availability:** Details will be announced before release.

    - **Note:** Schemas and behaviors are subject to refinement prior to the official release.


    Documentation updates will be provided prior to release.


    ---


    ## Authentication

    Prewave’s public api uses *API tokens* to authenticate against our RESTful service. We’ll provide you an *API-token* that each

    endpoint needs present as a http header.


    To pass the token in a request, simply add it as a header-parameter with

    * key = X-Auth-Token

    * value = api-token


    See an example in curl below where the api-token would be 12345678-90ab-cdef-1234-567890abcdef

    ```

    curl --request GET \

    --url https://REPLACE_WITH_SERVER/public/v1/target/prewave/3975230/alerts \

    --header ''X-Auth-Token: 12345678-90ab-cdef-1234-567890abcdef''

    ```


    ---


    ## Manage API Tokens


    Before you can obtain your API token, you''ll need the credentials for your API user. These credentials will be

    sent to you as part of the company-onboarding. If you haven''t got your credentials yet, please reach out to

    your sales-contact at Prewave or contact us via info@prewave.ai


    To generate an API Token, navigate to https://www.prewave.com/management/api and log in with the

    credentials of your API user. Then click at the button "Create New" and use your new api-token authentication as a header parameter.


    You can create multiple API tokens and also remove existing API tokens on https://www.prewave.com/management/api.

    API tokens do not expire, therefore you have to maintain the list of API tokens you are using manually.


    ---


    ## Default Rate Limits


    We have two types of default rate limits. For increased access, please contact customer success.


    | Type                              | Requests per 10 seconds | Requests per Minute |

    |-----------------------------------|-------------------------|---------------------|

    | GET requests                      | 100                     | 500                 |

    | POST, PUT, PATCH, DELETE requests | 20                      | 100                 |


    '
  version: '1.0'
servers:
- url: https://api.prewave.com
  description: Production Environment
security:
- Token authentication: []
tags:
- name: Actions
  description: 🆕 NEW - Retrieve actions (tasks/work items), action types, and action statuses for supplier relationships, compliance reviews, and operational activities. Available from February 2026.
paths:
  /public/v1/actions:
    get:
      tags:
      - Actions
      summary: List actions
      description: "\nRetrieves a paginated list of actions with filtering and sorting capabilities.\n\nFor detailed information about actions, action types, and action statuses, see the [Prewave Help Center](https://help.prewave.com/en/articles/258470-action-planner-action-dashboard-action-status-and-action-types).\n\n**Quick Start:**\n```\nGET /public/v1/actions?page=0&size=20\n```\n\n**Response Format:**\nReturns a lightweight summary view optimized for list/table displays. For complete action details including full descriptions, action items, and attachment metadata, use `GET /public/v1/actions/{actionId}`.\n\n**Filtering:**\nAll filter parameters are optional and can be combined. Multiple values are passed as comma-separated lists (e.g., `typeIds=5,6,7`).\n\n**Finding Valid Filter Values:**\n- **Target IDs**: Use `GET /public/v2/suppliers/sites` to get valid `prewaveTargetId` values\n- **Action Types & Status IDs**: Use [`GET /public/v1/actions/types`](#/Actions/listActionTypes) to get valid action type IDs and [`GET /public/v1/actions/statuses`](#/Actions/listActionStatuses) to get valid status IDs\n- **Team IDs & User IDs**: Available in your organization's team and user management interfaces\n\n**Performance:**\n- Response payloads are optimized for list views (60-80% smaller than full detail responses)\n- Using multiple filters may impact query performance\n- Text search (`query` parameter) searches across title and description fields\n- Date range filters are inclusive (both endpoints included)\n- Use pagination (`page`, `size`) to limit response size for large result sets\n\n**Required Permission:** `access_public_actions`\n        "
      operationId: listActions
      parameters:
      - name: page
        in: query
        description: Zero-based page index (0..N)
        required: false
        schema:
          minimum: 0
          type: integer
          default: 0
      - name: size
        in: query
        description: The size of the page to be returned
        required: false
        schema:
          minimum: 1
          type: integer
          default: 10
      - name: sort
        in: query
        description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.'
        required: false
        schema:
          type: array
          items:
            type: string
      - name: typeIds
        in: query
        description: 'Filter by action type IDs. Multiple values: comma-separated (e.g., ''5,6,7'') or repeated parameter. Use GET /public/v1/actions/types to find valid type IDs.'
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: integer
            format: int32
        example: 5
      - name: statusIds
        in: query
        description: 'Filter by status IDs. Multiple values: comma-separated (e.g., ''2,3'') or repeated parameter. Use GET /public/v1/actions/statuses to find valid status IDs.'
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: integer
            format: int32
        example: 2
      - name: targetIds
        in: query
        description: 'Filter by target/supplier IDs (prewaveTargetId). Multiple values: comma-separated (e.g., ''102006215,102006216'') or repeated parameter'
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: integer
            format: int32
        example: 102006215
      - name: assigneeIds
        in: query
        description: 'Filter by assignee user IDs. Multiple values: comma-separated (e.g., ''100,101'') or repeated parameter'
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: integer
            format: int32
        example: 100
      - name: teamIds
        in: query
        description: 'Filter by team IDs. Multiple values: comma-separated (e.g., ''10,11'') or repeated parameter'
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: integer
            format: int32
        example: 10
      - name: organizationIds
        in: query
        description: 'Filter by organization/site group IDs. Multiple values: comma-separated (e.g., ''500001'') or repeated parameter'
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: integer
            format: int32
        example: 500001
      - name: dueDateFrom
        in: query
        description: Due date from (ISO 8601 timestamp)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-01T00:00:00Z'
      - name: dueDateTo
        in: query
        description: Due date to (ISO 8601 timestamp)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-12-31T23:59:59Z'
      - name: createdAtFrom
        in: query
        description: Creation date from (ISO 8601 timestamp)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-01T00:00:00Z'
      - name: createdAtTo
        in: query
        description: Creation date to (ISO 8601 timestamp)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-31T23:59:59Z'
      - name: updatedAtFrom
        in: query
        description: Update date from (ISO 8601 timestamp)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-01T00:00:00Z'
      - name: updatedAtTo
        in: query
        description: Update date to (ISO 8601 timestamp)
        required: false
        schema:
          type: string
          format: date-time
        example: '2024-01-31T23:59:59Z'
      - name: query
        in: query
        description: Text search in title/description (case-insensitive)
        required: false
        schema:
          type: string
        example: compliance
      responses:
        '200':
          description: Successfully retrieved actions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaPublicActionDTO'
              examples:
                Paginated actions:
                  description: Paginated actions
                  value: '{"content":[{"actionId":12345,"title":"Review supplier compliance documentation","type":{"id":5,"displayName":"Incident Review"},"status":{"id":2,"title":"In Progress","state":"InProgress"},"target":{"id":102006215,"name":"Acme Corporation"},"assignees":[{"id":100,"name":"John Doe","email":"john.doe@example.com"}],"teams":[{"id":10,"name":"Compliance Team"}],"dueDate":1735689599.000000000,"createdAt":1705314600.000000000,"updatedAt":1705761900.000000000}],"totalElements":57,"totalPages":3,"size":20,"number":0}'
        '403':
          description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 100,\n        \"requestCount\": 100,\n        \"limits\": [\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 500,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
  /public/v1/actions/{actionId}:
    get:
      tags:
      - Actions
      summary: Get action by ID
      description: "\nRetrieves detailed information about a specific action.\n\nFor detailed information about actions, action types, and action statuses, see the [Prewave Help Center](https://help.prewave.com/en/articles/258470-action-planner-action-dashboard-action-status-and-action-types).\n\n**Quick Start:**\n```\nGET /public/v1/actions/12345\n```\n\n**Response:**\nReturns comprehensive action details including description, creator, action items, skip information, and attachment metadata.\n\n**Action ID:**\nThe `actionId` is a **stable identifier** that uniquely identifies an action. Once created, it never changes, making it safe for:\n- Storing in your database for future reference\n- Using in URLs and bookmarks\n- External references and integrations\n\nTo find action IDs, use [`GET /public/v1/actions`](#/Actions/listActions) to list all actions and retrieve their `actionId` values.\n\n**Related Operations:**\n- `GET /public/v1/actions` - List all actions (to find actions by other criteria)\n\n**Required Permission:** `access_public_actions`\n        "
      operationId: getActionById
      parameters:
      - name: actionId
        in: path
        description: Action key (stable identifier). Use GET /public/v1/actions to find action keys.
        required: true
        schema:
          type: integer
          format: int32
        example: 12345
      responses:
        '200':
          description: Action found and returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicActionDetailDTO'
              examples:
                Action detail:
                  description: Action detail
                  value: '{"actionId":12345,"title":"Review supplier compliance documentation","description":"Please review the compliance documentation provided by Acme Corporation","type":{"id":5,"displayName":"Incident Review"},"status":{"id":2,"title":"In Progress","state":"InProgress"},"target":{"id":102006215,"name":"Acme Corporation"},"assignees":[{"id":100,"name":"John Doe","email":"john.doe@example.com"}],"teams":[{"id":10,"name":"Compliance Team"}],"creator":{"id":99,"name":"Alice Manager","email":"alice.manager@example.com"},"dueDate":1735689599.000000000,"createdAt":1705314600.000000000,"updatedAt":1705761900.000000000,"mainItem":{"id":1001,"type":"Alert","entityId":5001},"attachmentItems":[]}'
        '404':
          description: 404 Not Found - The action with the specified actionId was not found or is not accessible to your organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Action not found:
                  summary: actionId does not exist or access denied
                  description: Action not found
                  value:
                    code: resource_not_found
                    message: Action not found for actionId 12345
                    solution: Verify the actionId and ensure it belongs to your organization. Use GET /public/v1/actions to list all accessible actions.
        '403':
          description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 100,\n        \"requestCount\": 100,\n        \"limits\": [\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 500,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
  /public/v1/actions/types:
    get:
      tags:
      - Actions
      summary: List action types
      description: "\nRetrieves a list of all action types available for your organization.\n\nFor detailed information about actions, action types, and action statuses, see the [Prewave Help Center](https://help.prewave.com/en/articles/258470-action-planner-action-dashboard-action-status-and-action-types).\n\n**Quick Start:**\n```\nGET /public/v1/actions/types\n```\n\n**Response Format:**\nReturns all action types accessible to your organization. Each action type includes:\n- `id` - Internal action type identifier\n- `displayName` - Human-readable name for display in UI\n\n**Filtering:**\nAction types are automatically filtered to show only those:\n- Available for your organization\n- Not excluded for your user/role\n- Marked as public\n\n**Use Cases:**\n- Discover available action types for dropdown/select UI components\n- Display action type information in user interfaces\n- Find valid `typeId` values for filtering actions (`GET /public/v1/actions?typeIds=...`)\n\n**Related Operations:**\n- `GET /public/v1/actions/types/{typeId}` - Get details for a specific action type\n- `GET /public/v1/actions?typeIds={typeId}` - Filter actions by type ID\n\n**Required Permission:** `access_public_actions`\n        "
      operationId: listActionTypes
      responses:
        '200':
          description: Successfully retrieved action types
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicActionTypeDTO'
              examples:
                Action types list:
                  description: Action types list
                  value: '[{"id":5,"displayName":"Incident Review"},{"id":6,"displayName":"Self Assessment Request"},{"id":7,"displayName":"Code of Conduct Review"}]'
        '403':
          description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 100,\n        \"requestCount\": 100,\n        \"limits\": [\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 500,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
  /public/v1/actions/types/{typeId}:
    get:
      tags:
      - Actions
      summary: Get action type by ID
      description: "\nRetrieves detailed information about a specific action type.\n\nFor detailed information about actions, action types, and action statuses, see the [Prewave Help Center](https://help.prewave.com/en/articles/258470-action-planner-action-dashboard-action-status-and-action-types).\n\n**Quick Start:**\n```\nGET /public/v1/actions/types/5\n```\n\n**Response Format:**\nReturns the action type details including ID and display name.\n\n**Use Cases:**\n- Display action type information in detail views\n- Check if a specific action type is available for your organization\n\n**Related Operations:**\n- `GET /public/v1/actions/types` - List all available action types\n- `GET /public/v1/actions?typeIds={typeId}` - Filter actions by this type ID\n\n**Required Permission:** `access_public_actions`\n        "
      operationId: getActionTypeById
      parameters:
      - name: typeId
        in: path
        description: Action type ID. Use GET /public/v1/actions/types to find action type IDs.
        required: true
        schema:
          type: integer
          format: int32
        example: 5
      responses:
        '200':
          description: Action type found and returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicActionTypeDTO'
              examples:
                Action type detail:
                  description: Action type detail
                  value: '{"id":5,"displayName":"Incident Review"}'
        '404':
          description: 404 Not Found - The action type with the specified ID was not found or is not accessible to your organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Action type not found:
                  summary: typeId does not exist or is not accessible
                  description: Action type not found
                  value:
                    code: resource_not_found
                    message: Action type with id 999 is not found or is not accessible
                    solution: Verify the typeId and ensure it belongs to your organization. Use GET /public/v1/actions/types to list all accessible action types.
        '403':
          description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 100,\n        \"requestCount\": 100,\n        \"limits\": [\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 500,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
  /public/v1/actions/statuses:
    get:
      tags:
      - Actions
      summary: List action statuses for type
      description: "\nRetrieves a list of action statuses that are valid for a specific action type.\n\nFor detailed information about actions, action types, and action statuses, see the [Prewave Help Center](https://help.prewave.com/en/articles/258470-action-planner-action-dashboard-action-status-and-action-types).\n\n**Quick Start:**\n```\nGET /public/v1/actions/statuses?typeId=5\n```\n\n**Response Format:**\nReturns only the statuses that are valid for the specified action type. This is essential for:\n- Building type-specific status selection UI components\n- Understanding which statuses can be assigned to actions of a specific type\n\n**Status Transitions:**\nEach action type has a defined set of valid statuses.\n\n**Use Cases:**\n- Discover valid statuses for a specific action type\n- Build dynamic UI that only shows valid statuses for each action type\n\n**Finding Action Type IDs:**\nUse `GET /public/v1/actions/types` to find valid `typeId` values.\n\n**Related Operations:**\n- `GET /public/v1/actions/types` - List all available action types\n- `GET /public/v1/actions/statuses` - List all statuses (not filtered by type)\n\n**Required Permission:** `access_public_actions`\n        "
      operationId: listActionStatusesForType
      parameters:
      - name: typeId
        in: query
        description: Action type ID. Use GET /public/v1/actions/types to find action type IDs.
        required: true
        schema:
          type: integer
          format: int32
        example: 5
      responses:
        '200':
          des

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/prewave/refs/heads/main/openapi/prewave-actions-api-openapi.yml