> ## 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.

# Create Or Update Apple

> Creates the Apple addon on a title, or updates it if it already exists.

## Error codes

This operation may return the following PlayFab errors:

| Error | Code |
| --- | --- |
| AddonAlreadyExists | 19008 |
| BillingInformationRequired | 1266 |
| CatalogBadRequest | 4013 |
| CatalogConfigInvalid | 4010 |
| InvalidEntityType | 1373 |
| InvalidParams | 1000 |
| InvalidTitleId | 1004 |




## OpenAPI

````yaml post /Addon/CreateOrUpdateApple
openapi: 3.0.0
info:
  version: '260922'
  title: PlayFab Addon API
  description: APIs for managing addons.
  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: Addon
    description: Addon APIs
paths:
  /Addon/CreateOrUpdateApple:
    post:
      tags:
        - Addon
      summary: Create Or Update Apple
      description: |
        Creates the Apple addon on a title, or updates it if it already exists.

        ## Error codes

        This operation may return the following PlayFab errors:

        | Error | Code |
        | --- | --- |
        | AddonAlreadyExists | 19008 |
        | BillingInformationRequired | 1266 |
        | CatalogBadRequest | 4013 |
        | CatalogConfigInvalid | 4010 |
        | InvalidEntityType | 1373 |
        | InvalidParams | 1000 |
        | InvalidTitleId | 1004 |
      operationId: CreateOrUpdateApple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrUpdateAppleRequest'
      responses:
        '200':
          $ref: '#/components/responses/CreateOrUpdateAppleResponse'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - EntityToken: []
components:
  schemas:
    CreateOrUpdateAppleRequest:
      type: object
      properties:
        AllowProduction:
          description: >-
            Allow validation of receipts from the Apple production environment.
            Required for app releases.
          type: boolean
        AllowSandbox:
          description: >-
            Allow validation of receipts from the Apple sandbox environment.
            Typically used while testing.
          type: boolean
        AppBundleId:
          description: >-
            iOS App Bundle ID obtained after setting up your app in the App
            Store.
          type: string
        AppId:
          description: AppId obtained after setting up your app in the App Store.
          type: string
        AppSharedSecret:
          description: >-
            iOS App Shared Secret obtained after setting up your app in the App
            Store.
          type: string
        CustomTags:
          description: >-
            The optional custom tags associated with the request (e.g. build
            number, external trace identifiers, etc.).
          type: object
        Entity:
          allOf:
            - $ref: '#/components/schemas/EntityKey'
          description: >-
            The optional entity to perform this action on. Defaults to the
            currently logged in entity.
        ErrorIfExists:
          description: If an error should be returned if the addon already exists.
          type: boolean
        IgnoreExpirationDate:
          description: >-
            Ignore expiration date for identity tokens. Be aware that when set
            to true this can invalidate expired tokens in the case where Apple
            rotates their signing keys.
          type: boolean
        IssuerId:
          description: IssuerId obtained after setting up your app in the App Store.
          type: string
        KeyId:
          description: KeyId obtained after setting up your app in the App Store.
          type: string
        PrivateKey:
          description: PrivateKey obtained after setting up your app in the App Store.
          type: string
        RequireSecureAuthentication:
          description: Require secure authentication only for this app.
          type: boolean
      required:
        - AppBundleId
      example:
        AppBundleId: '123456'
        AppSharedSecret: '654321'
        AppId: '78901'
        IssuerId: '345678'
        KeyId: '901234'
        PrivateKey: '567890'
        AllowSandbox: true
        AllowProduction: true
        RequireSecureAuthentication: true
    EntityKey:
      description: >-
        Combined entity type and ID structure which uniquely identifies a single
        entity.
      type: object
      properties:
        Id:
          description: Unique ID of the entity.
          type: string
        Type:
          description: >-
            Entity type. See
            https://learn.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types
          type: string
      required:
        - Id
    CreateOrUpdateAppleResponse:
      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
  responses:
    CreateOrUpdateAppleResponse:
      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/CreateOrUpdateAppleResponse'
    ApiErrorWrapper:
      description: This is the outer wrapper for all responses with errors
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorWrapper'
  securitySchemes:
    EntityToken:
      type: apiKey
      in: header
      name: X-EntityToken
      description: >-
        This API requires an Entity Session Token, available from the Entity
        GetEntityToken method.

````

## Related topics

- [Create Or Update Apple](/api-reference/addon/create-or-update-apple.md)
- [Create Or Update Google](/api-reference/addon/create-or-update-google.md)
- [Create Or Update Kongregate](/api-reference/addon/create-or-update-kongregate.md)
- [Create Or Update Nintendo](/api-reference/addon/create-or-update-nintendo.md)
- [Create Or Update PSN](/api-reference/addon/create-or-update-psn.md)
