# Create or replace an entity’s theme kit

> Source: /api-reference/partner/explorer/theme-kits/put
> Full replacement, optimistically concurrent: pass the version you read back as `expectedVersion` and the write is rejected if someone else changed the kit meanwhile.
> Full spec: https://docs.journey.com/openapi/partner.v1.json

## `PUT /v1/partner/theme-kits/{entityType}/{entityExternalId}`

```json
{
  "description": "Full replacement, optimistically concurrent: pass the version you read back as `expectedVersion` and the write is rejected if someone else changed the kit meanwhile.",
  "operationId": "themeKitsPartner_put",
  "parameters": [
    {
      "description": "External id of that organization, brand, or property.",
      "in": "path",
      "name": "entityExternalId",
      "required": true,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "The kind of entity the kit is attached to.",
      "in": "path",
      "name": "entityType",
      "required": true,
      "schema": {
        "enum": [
          "organization",
          "brand",
          "property"
        ],
        "type": "string"
      }
    },
    {
      "description": "Global (Journey staff) callers name the organization they act within.",
      "in": "query",
      "name": "organizationId",
      "required": false,
      "schema": {
        "maxLength": 100,
        "type": "string"
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/PutPartnerThemeKitRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "The stored theme kit."
    },
    "400": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "Request validation failed. `errors` lists the offending fields."
    },
    "401": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "No usable credential. Send `Authorization: Bearer <jwt>` or `X-API-Key: jny_...`."
    },
    "403": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "The credential authenticated but lacks the scopes in `x-required-scopes`, or the resource belongs to another organization."
    },
    "404": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "No such resource, or it is outside the organization the credential resolves to."
    },
    "409": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "The request conflicts with the current state of the resource."
    }
  },
  "security": [
    {
      "partnerBearer": []
    },
    {
      "partnerApiKey": []
    }
  ],
  "summary": "Create or replace an entity’s theme kit",
  "tags": [
    "partner/theme-kits"
  ],
  "x-required-scopes": [
    [
      "partner:theme-kits:manage"
    ]
  ]
}
```