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

# List Activities

> Returns a paginated list of active activities with pricing in the requested currency.
Only activities with at least one valid variation are included.




## OpenAPI

````yaml GET /users/activities
openapi: 3.0.3
info:
  title: Seyaha Affiliate API
  description: >
    API for affiliates who list and book Seyaha activities on behalf of their
    users.

    All endpoints require a JWT bearer token issued by Seyaha in the
    `Authorization` header.
  version: 1.0.0
servers:
  - url: /api/v1/affiliates
    description: Affiliate API base URL
security:
  - bearerAuth: []
tags:
  - name: Activities
    description: Browse the activity catalog
  - name: Bookings
    description: Create and manage bookings
  - name: Payments
    description: Process payments for bookings
paths:
  /users/activities:
    get:
      tags:
        - Activities
      summary: List activities
      description: >
        Returns a paginated list of active activities with pricing in the
        requested currency.

        Only activities with at least one valid variation are included.
      operationId: listActivities
      parameters:
        - name: currency
          in: query
          description: >-
            Currency code for pricing (e.g. `USD`, `SAR`, `EUR`). Defaults to
            `USD`.
          schema:
            type: string
            example: SAR
        - name: search
          in: query
          description: Full-text search across activity title and description.
          schema:
            type: string
            example: desert safari
        - name: page
          in: query
          schema:
            type: integer
            minimum: 1
            default: 1
            example: 1
        - name: pageSize
          in: query
          schema:
            type: integer
            default: 10
            example: 10
      responses:
        '200':
          description: Activity list
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: integer
                    example: 1
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Activity'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    Activity:
      type: object
      description: Activity as returned in list view (condensed).
      properties:
        _id:
          type: string
          example: 6744810075becd2ef8c140f7
        activity_title:
          type: string
          example: Desert Safari Adventure
        main_promo_title:
          type: string
          example: Experience dune bashing at sunset
        categories:
          type: array
          items:
            type: string
          example:
            - Adventure
            - Outdoor
        location:
          type: object
          properties:
            country:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                  example: Saudi Arabia
            city:
              type: string
              example: Riyadh
            region:
              type: string
              example: Riyadh Region
        media:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
                example: https://res.cloudinary.com/example/image/upload/desert.jpg
              type:
                type: string
                example: image
        currency:
          type: string
          example: SAR
        admin_discount_percentage:
          type: number
          example: 10
        partner_details:
          type: object
          properties:
            id:
              type: string
            companyDetails:
              type: object
              properties:
                slug:
                  type: string
            profileImage:
              type: string
              nullable: true
        variations:
          type: array
          items:
            type: object
            properties:
              price:
                type: object
                properties:
                  prices:
                    type: object
                    additionalProperties:
                      type: number
                    example:
                      adult: 250
                      child: 150
                  discount_percentage:
                    type: number
                    example: 0
        translation:
          type: object
          additionalProperties:
            type: object
    Pagination:
      type: object
      properties:
        page:
          type: integer
          example: 1
        pageSize:
          type: integer
          example: 10
        totalCount:
          type: integer
          example: 42
    Error:
      type: object
      properties:
        success:
          type: integer
          enum:
            - 0
          example: 0
        error:
          type: array
          items:
            type: string
          example:
            - error detail
        message:
          type: string
          example: Error description
        code:
          type: integer
          example: 400
  responses:
    Unauthorized:
      description: Missing or invalid JWT
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: 0
            error:
              - unauthorized access
            message: unauthorized access
            code: 401
    RateLimitExceeded:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: 0
            error:
              - rate limit exceeded
            message: rate limit exceeded
            code: 429
    ServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'JWT issued by Seyaha — include as `Authorization: Bearer <token>`'

````