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

# Update Store Items

> _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for version 2._ Updates an existing virtual item store with new or modified items

## Error codes

This operation may return the following PlayFab errors:

| Error | Code |
| --- | --- |
| CatalogNotConfigured | 1218 |
| InvalidItemId | 1093 |
| InvalidJSONContent | 1200 |
| ProductDisabledForTitle | 1609 |




## OpenAPI

````yaml /services/playfab/api-references/rest/admin/admin.openapi.json post /Admin/UpdateStoreItems
openapi: 3.0.0
info:
  version: '260922'
  title: PlayFab Admin API
  description: >-
    APIs for managing title configurations, uploaded Game Server code
    executables, and user data
  termsOfService: https://playfab.com/terms/
  contact:
    url: https://community.playfab.com/index.html
  license:
    name: Apache 2.0
    url: https://github.com/PlayFab/API_Specs/blob/master/LICENSE
servers:
  - url: https://{titleId}.playfabapi.com
    description: PlayFab title endpoint
    variables:
      titleId:
        default: your_title_id
        description: Your PlayFab title ID (hex).
security: []
tags:
  - name: Account Management
    description: Account Management APIs
  - name: Authentication
    description: Authentication APIs
  - name: Characters
    description: Characters APIs
  - name: Content
    description: Content Service APIs
  - name: Custom Server Management
    description: Custom Server Management APIs
  - name: Matchmaking
    description: Matchmaking APIs
  - name: Player Data Management
    description: Player Data Management APIs
  - name: Player Item Management
    description: Player Item Management APIs
  - name: PlayStream
    description: PlayStream Management APIs
  - name: ScheduledTask
    description: Task management APIs
  - name: Segments
    description: Segment management APIs
  - name: Server-Side Cloud Script
    description: Server-Side Cloud Script APIs
  - name: Shared Group Data
    description: Shared Group Data APIs
  - name: Title-Wide Data Management
    description: Title-Wide Data Management APIs
  - name: Xbox Store
    description: Xbox Store APIs
paths:
  /Admin/UpdateStoreItems:
    post:
      tags:
        - Title-Wide Data Management
      summary: Update Store Items
      description: >
        _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new
        Economy features are being developed only for version 2._ Updates an
        existing virtual item store with new or modified items


        ## Error codes


        This operation may return the following PlayFab errors:


        | Error | Code |

        | --- | --- |

        | CatalogNotConfigured | 1218 |

        | InvalidItemId | 1093 |

        | InvalidJSONContent | 1200 |

        | ProductDisabledForTitle | 1609 |
      operationId: UpdateStoreItems
      requestBody:
        $ref: '#/components/requestBodies/UpdateStoreItemsRequest'
      responses:
        '200':
          $ref: '#/components/responses/UpdateStoreItemsResult'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - SecretKey: []
components:
  requestBodies:
    UpdateStoreItemsRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateStoreItemsRequest'
      description: >-
        When used for SetStoreItems, this operation is not additive. Using it
        will cause the indicated virtual store to be created from scratch. If
        there is an existing store with the same storeId, it will be deleted and
        replaced with only the items specified in this call. When used for
        UpdateStoreItems, this operation is additive. Items with ItemId values
        not currently in the store will be added, while those with ItemId values
        matching items currently in the catalog will overwrite those items with
        the given values. In both cases, a store contains an array of references
        to items defined in the catalog, along with the prices for the item, in
        both real world and virtual currencies. These prices act as an override
        to any prices defined in the catalog. In this way, the base definitions
        of the items may be defined in the catalog, with all associated
        properties, while the pricing can be set for each store, as needed. This
        allows for subsets of goods to be defined for different purposes (in
        order to simplify showing some, but not all catalog items to users,
        based upon different characteristics), along with unique prices. Note
        that all prices defined in the catalog and store definitions for the
        item are considered valid, and that a compromised client can be made to
        send a request for an item based upon any of these definitions. If no
        price is specified in the store for an item, the price set in the
        catalog should be displayed to the user.
  responses:
    UpdateStoreItemsResult:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                description: >-
                  The Http status code. If X-ReportErrorAsSuccess header is set
                  to true, this will report the actual http error code.
              status:
                type: string
                description: The Http status code as a string.
              data:
                $ref: '#/components/schemas/UpdateStoreItemsResult'
    ApiErrorWrapper:
      description: This is the outer wrapper for all responses with errors
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorWrapper'
  schemas:
    UpdateStoreItemsRequest:
      description: >-
        When used for SetStoreItems, this operation is not additive. Using it
        will cause the indicated virtual store to be created from scratch. If
        there is an existing store with the same storeId, it will be deleted and
        replaced with only the items specified in this call. When used for
        UpdateStoreItems, this operation is additive. Items with ItemId values
        not currently in the store will be added, while those with ItemId values
        matching items currently in the catalog will overwrite those items with
        the given values. In both cases, a store contains an array of references
        to items defined in the catalog, along with the prices for the item, in
        both real world and virtual currencies. These prices act as an override
        to any prices defined in the catalog. In this way, the base definitions
        of the items may be defined in the catalog, with all associated
        properties, while the pricing can be set for each store, as needed. This
        allows for subsets of goods to be defined for different purposes (in
        order to simplify showing some, but not all catalog items to users,
        based upon different characteristics), along with unique prices. Note
        that all prices defined in the catalog and store definitions for the
        item are considered valid, and that a compromised client can be made to
        send a request for an item based upon any of these definitions. If no
        price is specified in the store for an item, the price set in the
        catalog should be displayed to the user.
      type: object
      properties:
        CatalogVersion:
          description: >-
            Catalog version of the store to update. If null, uses the default
            catalog.
          type: string
        CustomTags:
          description: >-
            The optional custom tags associated with the request (e.g. build
            number, external trace identifiers, etc.).
          type: object
        MarketingData:
          allOf:
            - $ref: '#/components/schemas/StoreMarketingModel'
          description: Additional data about the store
        Store:
          description: >-
            Array of store items - references to catalog items, with specific
            pricing - to be added
          type: array
          items:
            $ref: '#/components/schemas/StoreItem'
          x-isclass: true
        StoreId:
          description: Unique identifier for the store which is to be updated
          type: string
      required:
        - StoreId
      example:
        StoreId: BonusStore
        Store:
          - ItemId: shield_level_5
            VirtualCurrencyPrices:
              RM: 180
              GV: 20
            RealCurrencyPrices:
              GBP: 100
          - ItemId: energy_boost_1
            VirtualCurrencyPrices:
              RM: 250
              GV: 30
          - ItemId: starterpack_1
            VirtualCurrencyPrices:
              RM: 399
    UpdateStoreItemsResult:
      type: object
      properties: {}
    ApiErrorWrapper:
      description: The basic wrapper around every failed API response
      type: object
      properties:
        code:
          description: Numerical HTTP code
          type: integer
        status:
          description: String HTTP code
          type: string
        error:
          description: Playfab error code
          type: string
        errorCode:
          description: Numerical PlayFab error code
          type: integer
        errorMessage:
          description: Description for the PlayFab errorCode
          type: string
        errorDetails:
          description: Detailed description of individual issues with the request object
          type: object
      required:
        - code
        - errorCode
    StoreMarketingModel:
      description: Marketing data about a specific store
      type: object
      properties:
        Description:
          description: Tagline for a store.
          type: string
        DisplayName:
          description: Display name of a store as it will appear to users.
          type: string
        Metadata:
          description: Custom data about a store.
          type: object
    StoreItem:
      description: A store entry that list a catalog item at a particular price
      type: object
      properties:
        CustomData:
          description: >-
            Store specific custom data. The data only exists as part of this
            store; it is not transferred to item instances
          type: object
        DisplayPosition:
          description: >-
            Intended display position for this item. Note that 0 is the first
            position
          type: number
          x-actualtype: uint32
        ItemId:
          description: >-
            Unique identifier of the item as it exists in the catalog - note
            that this must exactly match the ItemId from the catalog
          type: string
        RealCurrencyPrices:
          description: Override prices for this item for specific currencies
          type: object
          x-actualtype: uint32
        VirtualCurrencyPrices:
          description: >-
            Override prices for this item in virtual currencies and "RM" (the
            base Real Money purchase price, in USD pennies)
          type: object
          x-actualtype: uint32
      required:
        - ItemId
      x-sortKey: ItemId
  securitySchemes:
    SecretKey:
      type: apiKey
      in: header
      name: X-SecretKey
      description: >-
        This API requires a title secret key, available to title admins, from
        PlayFab Game Manager.

````

## Related topics

- [Update Store Items](/services/playfab/api-references/rest/admin/title-wide-data-management/update-store-items.md)
- [Set Store Items](/api-reference/title-wide-data-management/set-store-items.md)
- [Stores (Legacy Economy)](/services/playfab/economy-monetization/economy/stores/index.md)
- [Profile Writes Meter API Description](/services/playfab/pricing/meters/profile-writes.md)
- [Update Draft Item](/api-reference/catalog/update-draft-item.md)
