Aghanim Item Categories API

The Item Categories API from Aghanim — 2 operation(s) for item categories.

OpenAPI Specification

aghanim-item-categories-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Aghanim Server-to-Server Achievements Item Categories API
  description: "The Aghanim Server-to-Server API is designed for **backend server integrations only**. Use this API when you need to automate game hub updates from your server-side applications.\n\n\n## OpenAPI Specification\n\nYou can download the [OpenAPI](https://www.openapis.org/) specification for this API at the following link:\n[docs.aghanim.com/openapi.json](https://docs.aghanim.com/openapi.json).\n\n## Changelog\n\nSee the [S2S API Changelog](https://docs.aghanim.com/s2s-api/changelog/) for a history of changes to this API.\n\n## Authentication\n\nAghanim supports two methods of authentication: **Bearer token** and **Basic authentication**.\n\nTo authenticate, you will need your API key, which can be retrieved from\nthe Aghanim Dashboard → [**Game → Integration → API Keys**](https://dashboard.aghanim.com/go/integration/api-keys).\n\n**⚠️ Security Notice**: The S2S API key is **secret** and must be kept secure on your server. Never expose the S2S API key in client-side code, mobile apps, or any public-facing applications.\n\n### Bearer Token Authentication\n\nUse the Bearer method by including an `Authorization` header with the word `Bearer`\nfollowed by your API key. The `Authorization` header in your HTTP request should look like this: `Authorization: Bearer API_KEY`\n\n### Basic Authentication\n\nAlternatively, you can authenticate using Basic authentication. Your API key is used\nas the `username`, and the `password` should be left empty. Send an `Authorization`\nheader with the word `Basic` followed by a base64-encoded string\nin the format `API_KEY:` (note the colon at the end).\n\nThe `Authorization` header should look like this: `Authorization: Basic ZGVtbzpwQDU1dzByZA==`\n\n## Error Codes\n\nAghanim employs standard HTTP response codes to denote the success or failure of an API request.\nBelow is a table detailing error codes.\n\n| Code | Description |\n| ---- | ----------- |\n| 200  | OK          |\n| 400  | Bad request |\n| 401  | Not authenticated |\n| 403  | Not authorized |\n| 404  | Resource not found |\n| 409  | Conflict. Request conflicts with current state of resource |\n| 422  | Validation error |\n| 429  | Too many requests. Rate limit exceeded |\n| 503  | Server unavailable |\n\n### Generic error schema\n\n```json\n{\n  \"detail\": \"string\"\n}\n```\n\n### Validation error schema\n\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [\n        \"string\",\n        0\n      ],\n      \"msg\": \"string\",\n      \"type\": \"string\"\n    }\n  ]\n}\n```\n\n## Rate Limits\n\nThe Aghanim API has rate limiting in place to avoid overloading and to ensure it remains stable.\nThe allowable rate of requests is capped at 1,000 per minute for every game.\nGame developers who exceed this limit will receive a 429 error code.\n\nTo increase the rate limit, please contact us via [integration@aghanim.com](mailto:integration@aghanim.com).\n\n## Pagination\n\nIn the Aghanim API, pagination is managed through the use of the `limit` and `offset` query parameters.\nThese parameters allow to fine-tune your data retrieval requests by specifying:\n\n- `limit`: the number of records to be returned in a single request.\n- `offset`: indicates the number of records to skip from the start of the dataset.\n"
  contact:
    name: Aghanim
    email: integration@aghanim.com
  version: 2026.07.14
servers:
- url: https://api.aghanim.com/s2s
  description: Production
tags:
- name: Item Categories
paths:
  /v1/item_categories/{item_category_id}:
    get:
      tags:
      - Item Categories
      summary: Get Item Category
      operationId: get_item_category
      security:
      - HTTPBearer: []
      parameters:
      - name: item_category_id
        in: path
        required: true
        schema:
          title: Item Category Id
          type: string
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemCategoryRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Item Categories
      summary: Update Item Category
      operationId: update_item_category
      security:
      - HTTPBearer: []
      parameters:
      - name: item_category_id
        in: path
        required: true
        schema:
          title: Item Category Id
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: Update
              $ref: '#/components/schemas/ItemCategoryUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemCategoryRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Item Categories
      summary: Delete Item Category
      operationId: delete_item_category
      security:
      - HTTPBearer: []
      parameters:
      - name: item_category_id
        in: path
        required: true
        schema:
          title: Item Category Id
          type: string
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/item_categories:
    get:
      tags:
      - Item Categories
      summary: Get Item Categories
      operationId: get_item_categories
      security:
      - HTTPBearer: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          title: Limit
          description: A limit on the number of objects to be returned
          default: 10
          type: integer
        description: A limit on the number of objects to be returned
      - name: offset
        in: query
        required: false
        schema:
          title: Offset
          description: The number of objects to skip
          type: integer
        description: The number of objects to skip
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Get Item Categories
                type: array
                items:
                  $ref: '#/components/schemas/ItemCategoryRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - Item Categories
      summary: Bulk Update Item Categories
      description: Updates multiple categories.
      operationId: bulk_update_item_categories
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: Bulk Update
              type: array
              items:
                $ref: '#/components/schemas/ItemCategoryBulkUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Bulk Update Item Categories
                type: array
                items:
                  $ref: '#/components/schemas/ItemCategoryRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Item Categories
      summary: Create Item Category
      operationId: create_item_category
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: Create
              $ref: '#/components/schemas/ItemCategoryCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemCategoryRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Item Categories
      summary: Bulk Delete Item Categories
      operationId: bulk_delete_item_categories
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: Bulk Delete
              type: array
              items:
                $ref: '#/components/schemas/ItemCategoryBulkDelete'
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Expression:
      properties:
        tokens:
          items:
            $ref: '#/components/schemas/Token'
          type: array
          title: Tokens
        variables:
          items:
            $ref: '#/components/schemas/MathExpression'
          type: array
          title: Variables
      type: object
      title: Expression
    StoreCategoryRenderOptions:
      properties:
        delay:
          type: integer
          title: Delay
        loop:
          type: boolean
          title: Loop
        autoplay:
          type: boolean
          title: Autoplay
        show_dots:
          type: boolean
          title: Show Dots
        display_type:
          $ref: '#/components/schemas/CarouselDisplayType'
      type: object
      title: StoreCategoryRenderOptions
    StoreCategoryDividerPosition:
      type: string
      enum:
      - top
      - bottom
      title: StoreCategoryDividerPosition
      description: An enumeration.
    BackgroundSize:
      type: string
      enum:
      - contain
      - repeat
      - cover
      title: BackgroundSize
      description: An enumeration.
    ItemCategoryBulkDelete:
      properties:
        id:
          type: string
          title: Id
      type: object
      required:
      - id
      title: ItemCategoryBulkDelete
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    MathExpression:
      properties:
        tokens:
          items:
            $ref: '#/components/schemas/Token'
          type: array
          title: Tokens
        name:
          type: string
          title: Name
      type: object
      required:
      - name
      title: MathExpression
    ItemCategoryBulkUpdate:
      properties:
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
        position:
          type: integer
          title: Position
        parent_id:
          type: string
          title: Parent Id
        item_template_id:
          type: string
          title: Item Template Id
        pinned_expression:
          $ref: '#/components/schemas/Expression'
        slug:
          type: string
          title: Slug
        icon:
          type: string
          title: Icon
        image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Image Url
        divider_image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Divider Image Url
        divider_position:
          $ref: '#/components/schemas/StoreCategoryDividerPosition'
        divider_type:
          $ref: '#/components/schemas/StoreCategoryDividerType'
        background_color:
          type: string
          title: Background Color
        background_image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Background Image Url
        background_size:
          $ref: '#/components/schemas/BackgroundSize'
        render_type:
          $ref: '#/components/schemas/StoreCategoryRenderType'
        render_options:
          $ref: '#/components/schemas/StoreCategoryRenderOptions'
        id:
          type: string
          title: Id
      type: object
      required:
      - id
      title: ItemCategoryBulkUpdate
    ItemCategoryCreate:
      properties:
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
        position:
          type: integer
          title: Position
        parent_id:
          type: string
          title: Parent Id
        item_template_id:
          type: string
          title: Item Template Id
        pinned_expression:
          $ref: '#/components/schemas/Expression'
        slug:
          type: string
          title: Slug
        icon:
          type: string
          title: Icon
        image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Image Url
        divider_image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Divider Image Url
        divider_position:
          default: top
          $ref: '#/components/schemas/StoreCategoryDividerPosition'
        divider_type:
          default: image
          $ref: '#/components/schemas/StoreCategoryDividerType'
        background_color:
          type: string
          title: Background Color
        background_image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Background Image Url
        background_size:
          $ref: '#/components/schemas/BackgroundSize'
        render_type:
          $ref: '#/components/schemas/StoreCategoryRenderType'
        render_options:
          $ref: '#/components/schemas/StoreCategoryRenderOptions'
      type: object
      required:
      - name
      - position
      title: ItemCategoryCreate
    ItemCategoryRead:
      properties:
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
        position:
          type: integer
          title: Position
        parent_id:
          type: string
          title: Parent Id
        item_template_id:
          type: string
          title: Item Template Id
        pinned_expression:
          $ref: '#/components/schemas/Expression'
        slug:
          type: string
          title: Slug
        icon:
          type: string
          title: Icon
        image_url:
          type: string
          title: Image Url
        divider_image_url:
          type: string
          title: Divider Image Url
        divider_position:
          default: top
          $ref: '#/components/schemas/StoreCategoryDividerPosition'
        divider_type:
          default: image
          $ref: '#/components/schemas/StoreCategoryDividerType'
        background_color:
          type: string
          title: Background Color
        background_image_url:
          type: string
          title: Background Image Url
        background_size:
          $ref: '#/components/schemas/BackgroundSize'
        render_type:
          $ref: '#/components/schemas/StoreCategoryRenderType'
        render_options:
          $ref: '#/components/schemas/StoreCategoryRenderOptions'
        id:
          type: string
          title: Id
      type: object
      required:
      - name
      - position
      - id
      title: ItemCategoryRead
    CarouselDisplayType:
      type: string
      enum:
      - default
      - compact
      - alone
      title: CarouselDisplayType
      description: An enumeration.
    TokenType:
      type: string
      enum:
      - attribute
      - custom_attribute
      - event_attribute
      - custom_event_attribute
      - operator
      - number
      - date
      - string
      - boolean
      - list
      - variable
      - virtual_currency
      title: TokenType
    Token:
      properties:
        type:
          $ref: '#/components/schemas/TokenType'
        value:
          title: Value
      type: object
      required:
      - type
      title: Token
    StoreCategoryRenderType:
      type: string
      enum:
      - default
      - carousel
      title: StoreCategoryRenderType
      description: An enumeration.
    ItemCategoryUpdate:
      properties:
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
        position:
          type: integer
          title: Position
        parent_id:
          type: string
          title: Parent Id
        item_template_id:
          type: string
          title: Item Template Id
        pinned_expression:
          $ref: '#/components/schemas/Expression'
        slug:
          type: string
          title: Slug
        icon:
          type: string
          title: Icon
        image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Image Url
        divider_image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Divider Image Url
        divider_position:
          $ref: '#/components/schemas/StoreCategoryDividerPosition'
        divider_type:
          $ref: '#/components/schemas/StoreCategoryDividerType'
        background_color:
          type: string
          title: Background Color
        background_image_url:
          type: string
          maxLength: 65536
          minLength: 1
          format: uri
          title: Background Image Url
        background_size:
          $ref: '#/components/schemas/BackgroundSize'
        render_type:
          $ref: '#/components/schemas/StoreCategoryRenderType'
        render_options:
          $ref: '#/components/schemas/StoreCategoryRenderOptions'
      type: object
      title: ItemCategoryUpdate
    StoreCategoryDividerType:
      type: string
      enum:
      - image
      - mask
      title: StoreCategoryDividerType
      description: An enumeration.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
      description: Refer to the [Authentication](https://docs.aghanim.com/api-reference/) section for instructions on obtaining an API key and use it as the `Bearer` token.