openapi: 3.0.3
info:
  title: Everflow Network API - Categories
  description: >
    Endpoints for managing offer categories in the Everflow network.
    Categories are public classifications that help partners find relevant
    offers — common examples include Gaming, Lead Generation, Retail, and
    Finance. For an overview, see the [Categories guide](https://helpdesk.everflow.io/customer/offer-labels-categories-segmentation-options).
  version: 1.0.0
servers:
  - url: https://api.eflow.team/v1
tags:
  - name: Categories
paths:
  /networks/categories:
    get:
      summary: List Categories
      tags:
        - Categories
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  categories:
                    type: array
                    description: List of categories.
                    items:
                      $ref: "#/components/schemas/Category"
              example:
                categories:
                  - network_category_id: 6
                    network_id: 1
                    name: "321312"
                    status: "inactive"
                    time_created: 1774712593
                    time_saved: 1774712593
      security:
        - API Key: []
    post:
      summary: Create Category
      description: >
        Create a new offer category. Provide a name and status to define
        the category.
      tags:
        - Categories
      requestBody:
        required: true
        content:
          application/json:
            example:
              name: "Documentation Test Category"
              status: "active"
            schema:
              type: object
              required:
                - name
                - status
              properties:
                name:
                  type: string
                  description: Name of the category.
                status:
                  type: string
                  enum:
                    - active
                    - inactive
                  description: Status of the category.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Category"
              example:
                network_category_id: 6
                network_id: 1
                name: "321312"
                status: "inactive"
                time_created: 1774712593
                time_saved: 1774712593
      security:
        - API Key: []
  /networks/categories/{categoryId}:
    get:
      summary: Get Category
      description: >
        Retrieve a single category by its ID.
      tags:
        - Categories
      parameters:
        - in: path
          name: categoryId
          required: true
          schema:
            type: integer
          description: The unique category ID.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Category"
              example:
                network_category_id: 6
                network_id: 1
                name: "321312"
                status: "inactive"
                time_created: 1774712593
                time_saved: 1774712593
        "404":
          description: Category not found.
      security:
        - API Key: []
    put:
      summary: Update Category
      tags:
        - Categories
      parameters:
        - in: path
          name: categoryId
          required: true
          schema:
            type: integer
          description: The unique category ID to update.
      requestBody:
        required: true
        content:
          application/json:
            example:
              name: "Finance"
              status: "active"
            schema:
              type: object
              required:
                - name
                - status
              properties:
                name:
                  type: string
                  description: Name of the category.
                status:
                  type: string
                  enum:
                    - active
                    - inactive
                  description: Status of the category.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Category"
              example:
                network_category_id: 6
                network_id: 1
                name: "Finance"
                status: "active"
                time_created: 1774712593
                time_saved: 1774712648
        "404":
          description: Category not found.
      security:
        - API Key: []
components:
  schemas:
    Category:
      type: object
      description: An offer category in the network.
      properties:
        network_category_id:
          type: integer
          description: Unique category ID.
        network_id:
          type: integer
          description: Network ID this category belongs to.
        name:
          type: string
          description: Category name.
        status:
          type: string
          enum:
            - active
            - inactive
          description: Category status.
        time_created:
          type: integer
          example: 1734455015
          description: Unix timestamp of creation.
        time_saved:
          type: integer
          example: 1734455015
          description: Unix timestamp of last update.
  securitySchemes:
    API Key:
      description: The Everflow API key generated from the Control Center > Security.
      in: header
      name: X-Eflow-Api-Key
      type: apiKey
