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

# Update Loyalty Program Details

> ### Update Program

Update the details of a specific loyalty program based on provided data.

- **programId**: The unique identifier of the loyalty program.
- **data**: A dictionary containing the fields to update.
- **Returns**: The updated program details.



## OpenAPI

````yaml https://api.loyalty.dog/openapi.json put /v2/loyalty/programs/{programId}
openapi: 3.1.0
info:
  title: LoyaltyDog
  description: >-

    Welcome to the LoyaltyDog API! This API provides access to our loyalty
    program features, allowing you to integrate with various platforms and
    manage your loyalty data.


    Want to query LoyaltyDog via an AI assistant (Claude, Cursor, Windsurf)? See
    the [MCP Integration guide](https://loyaltydog.ai/playground#mcp).
        
  termsOfService: https://loyalty.dog/loyalty-program-terms-service
  contact:
    name: LoyaltyDog Support
    url: https://loyalty.dog/contact-us
    email: support@loyalty.dog
  version: 1.0.1
servers:
  - url: https://api.loyalty.dog
    description: Production
security:
  - bearerAuth: []
paths:
  /v2/loyalty/programs/{programId}:
    put:
      tags:
        - Loyalty
      summary: Update Loyalty Program Details
      description: |-
        ### Update Program

        Update the details of a specific loyalty program based on provided data.

        - **programId**: The unique identifier of the loyalty program.
        - **data**: A dictionary containing the fields to update.
        - **Returns**: The updated program details.
      operationId: update_loyalty_program_details_v2_loyalty_programs__programId__put
      parameters:
        - name: programId
          in: path
          required: true
          schema:
            anyOf:
              - $ref: '#/components/schemas/PydanticObjectId'
              - type: string
            title: Programid
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProgramPayload'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PydanticObjectId:
      type: string
      maxLength: 24
      minLength: 24
      pattern: ^[0-9a-f]{24}$
      example: 5eb7cf5a86d9755df3a6c593
    UpdateProgramPayload:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
        country:
          anyOf:
            - type: string
            - type: 'null'
          title: Country
        company:
          anyOf:
            - type: string
            - type: 'null'
          title: Company
        address:
          anyOf:
            - type: string
            - type: 'null'
          title: Address
        website:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Website
        email:
          anyOf:
            - type: string
              format: email
            - type: string
            - type: 'null'
          title: Email
        phone:
          anyOf:
            - type: string
            - type: 'null'
          title: Phone
        terms:
          anyOf:
            - type: string
            - type: 'null'
          title: Terms
        pointsAddEmail:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsaddemail
        pointsAddPhone:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsaddphone
        pointsInstallPass:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsinstallpass
        pointsScanPass:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsscanpass
        dynamicScanPoints:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Dynamicscanpoints
        pointsReferral:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsreferral
        referralRequiredPoints:
          anyOf:
            - type: integer
            - type: 'null'
          title: Referralrequiredpoints
        scannerType:
          anyOf:
            - $ref: '#/components/schemas/PassScannerType'
            - type: 'null'
        customPointsChangeMessage:
          anyOf:
            - type: string
            - type: 'null'
          title: Custompointschangemessage
        disableCustomPointsChangeMessage:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disablecustompointschangemessage
        customPointName:
          anyOf:
            - type: string
            - type: 'null'
          title: Custompointname
        customPointsName:
          anyOf:
            - type: string
            - type: 'null'
          title: Custompointsname
        customFields:
          items:
            $ref: '#/components/schemas/TemplatePlaceholder'
          type: array
          title: Customfields
          default: []
        requiredFields:
          items:
            type: string
          type: array
          title: Requiredfields
          default: []
        retention_period_days:
          anyOf:
            - type: integer
              maximum: 365
              minimum: 0
            - type: 'null'
          title: Retention Period Days
          description: Days to retain deleted data (0-365)
      type: object
      title: UpdateProgramPayload
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PassScannerType:
      type: string
      enum:
        - Browser
        - PassVerifier
        - CodeReadr
        - None
      title: PassScannerType
    TemplatePlaceholder:
      properties:
        name:
          type: string
          title: Name
        type:
          $ref: '#/components/schemas/TemplatePlaceholderType'
          default: text
        displayName:
          anyOf:
            - type: string
            - type: 'null'
          title: Displayname
        defaultValue:
          anyOf:
            - type: string
            - type: 'null'
          title: Defaultvalue
        points:
          anyOf:
            - type: integer
            - type: 'null'
          title: Points
        options:
          anyOf:
            - type: string
            - type: 'null'
          title: Options
        required:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Required
      type: object
      required:
        - name
      title: TemplatePlaceholder
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    TemplatePlaceholderType:
      type: string
      enum:
        - text
        - email
        - number
        - date
        - selection
        - json
      title: TemplatePlaceholderType
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT access token obtained from POST /v2/token.

````