:doc:`CustomerProfiles <../../customer-profiles>` / Client / put_profile_object_type

***********************
put_profile_object_type
***********************



.. py:method:: CustomerProfiles.Client.put_profile_object_type(**kwargs)

  

  Defines a ProfileObjectType.

   

  To add or remove tags on an existing ObjectType, see `TagResource <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_TagResource.html>`__/ `UntagResource <https://docs.aws.amazon.com/customerprofiles/latest/APIReference/API_UntagResource.html>`__.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/customer-profiles-2020-08-15/PutProfileObjectType>`_  


  **Request Syntax**
  ::

    response = client.put_profile_object_type(
        DomainName='string',
        ObjectTypeName='string',
        Description='string',
        TemplateId='string',
        ExpirationDays=123,
        EncryptionKey='string',
        AllowProfileCreation=True|False,
        SourceLastUpdatedTimestampFormat='string',
        MaxProfileObjectCount=123,
        Fields={
            'string': {
                'Source': 'string',
                'Target': 'string',
                'ContentType': 'STRING'|'NUMBER'|'PHONE_NUMBER'|'EMAIL_ADDRESS'|'NAME'
            }
        },
        Keys={
            'string': [
                {
                    'StandardIdentifiers': [
                        'PROFILE'|'ASSET'|'CASE'|'ORDER'|'COMMUNICATION_RECORD'|'AIR_PREFERENCE'|'HOTEL_PREFERENCE'|'AIR_BOOKING'|'AIR_SEGMENT'|'HOTEL_RESERVATION'|'HOTEL_STAY_REVENUE'|'LOYALTY'|'LOYALTY_TRANSACTION'|'LOYALTY_PROMOTION'|'UNIQUE'|'SECONDARY'|'LOOKUP_ONLY'|'NEW_ONLY',
                    ],
                    'FieldNames': [
                        'string',
                    ]
                },
            ]
        },
        Tags={
            'string': 'string'
        }
    )
    
  :type DomainName: string
  :param DomainName: **[REQUIRED]** 

    The unique name of the domain.

    

  
  :type ObjectTypeName: string
  :param ObjectTypeName: **[REQUIRED]** 

    The name of the profile object type.

    

  
  :type Description: string
  :param Description: **[REQUIRED]** 

    Description of the profile object type.

    

  
  :type TemplateId: string
  :param TemplateId: 

    A unique identifier for the object template. For some attributes in the request, the service will use the default value from the object template when TemplateId is present. If these attributes are present in the request, the service may return a ``BadRequestException``. These attributes include: AllowProfileCreation, SourceLastUpdatedTimestampFormat, Fields, and Keys. For example, if AllowProfileCreation is set to true when TemplateId is set, the service may return a ``BadRequestException``.

    

  
  :type ExpirationDays: integer
  :param ExpirationDays: 

    The number of days until the data in the object expires.

    

  
  :type EncryptionKey: string
  :param EncryptionKey: 

    The customer-provided key to encrypt the profile object that will be created in this profile object type.

    

  
  :type AllowProfileCreation: boolean
  :param AllowProfileCreation: 

    Indicates whether a profile should be created when data is received if one doesn’t exist for an object of this type. The default is ``FALSE``. If the AllowProfileCreation flag is set to ``FALSE``, then the service tries to fetch a standard profile and associate this object with the profile. If it is set to ``TRUE``, and if no match is found, then the service creates a new standard profile.

    

  
  :type SourceLastUpdatedTimestampFormat: string
  :param SourceLastUpdatedTimestampFormat: 

    The format of your ``sourceLastUpdatedTimestamp`` that was previously set up.

    

  
  :type MaxProfileObjectCount: integer
  :param MaxProfileObjectCount: 

    The amount of profile object max count assigned to the object type

    

  
  :type Fields: dict
  :param Fields: 

    A map of the name and ObjectType field.

    

  
    - *(string) --* 

    
      - *(dict) --* 

        Represents a field in a ProfileObjectType.

        

      
        - **Source** *(string) --* 

          A field of a ProfileObject. For example: _source.FirstName, where “_source” is a ProfileObjectType of a Zendesk user and “FirstName” is a field in that ObjectType.

          

        
        - **Target** *(string) --* 

          The location of the data in the standard ProfileObject model. For example: _profile.Address.PostalCode.

          

        
        - **ContentType** *(string) --* 

          The content type of the field. Used for determining equality when searching.

          

        
      


  :type Keys: dict
  :param Keys: 

    A list of unique keys that can be used to map data to the profile.

    

  
    - *(string) --* 

    
      - *(list) --* 

      
        - *(dict) --* 

          An object that defines the Key element of a ProfileObject. A Key is a special element that can be used to search for a customer profile.

          

        
          - **StandardIdentifiers** *(list) --* 

            The types of keys that a ProfileObject can have. Each ProfileObject can have only 1 UNIQUE key but multiple PROFILE keys. PROFILE, ASSET, CASE, or ORDER means that this key can be used to tie an object to a PROFILE, ASSET, CASE, or ORDER respectively. UNIQUE means that it can be used to uniquely identify an object. If a key a is marked as SECONDARY, it will be used to search for profiles after all other PROFILE keys have been searched. A LOOKUP_ONLY key is only used to match a profile but is not persisted to be used for searching of the profile. A NEW_ONLY key is only used if the profile does not already exist before the object is ingested, otherwise it is only used for matching objects to profiles.

            

          
            - *(string) --* 

            
        
          - **FieldNames** *(list) --* 

            The reference for the key name of the fields map.

            

          
            - *(string) --* 

            
        
        
    


  :type Tags: dict
  :param Tags: 

    The tags used to organize, track, or control access for this resource.

    

  
    - *(string) --* 

    
      - *(string) --* 

      


  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'ObjectTypeName': 'string',
          'Description': 'string',
          'TemplateId': 'string',
          'ExpirationDays': 123,
          'EncryptionKey': 'string',
          'AllowProfileCreation': True|False,
          'SourceLastUpdatedTimestampFormat': 'string',
          'MaxProfileObjectCount': 123,
          'MaxAvailableProfileObjectCount': 123,
          'Fields': {
              'string': {
                  'Source': 'string',
                  'Target': 'string',
                  'ContentType': 'STRING'|'NUMBER'|'PHONE_NUMBER'|'EMAIL_ADDRESS'|'NAME'
              }
          },
          'Keys': {
              'string': [
                  {
                      'StandardIdentifiers': [
                          'PROFILE'|'ASSET'|'CASE'|'ORDER'|'COMMUNICATION_RECORD'|'AIR_PREFERENCE'|'HOTEL_PREFERENCE'|'AIR_BOOKING'|'AIR_SEGMENT'|'HOTEL_RESERVATION'|'HOTEL_STAY_REVENUE'|'LOYALTY'|'LOYALTY_TRANSACTION'|'LOYALTY_PROMOTION'|'UNIQUE'|'SECONDARY'|'LOOKUP_ONLY'|'NEW_ONLY',
                      ],
                      'FieldNames': [
                          'string',
                      ]
                  },
              ]
          },
          'CreatedAt': datetime(2015, 1, 1),
          'LastUpdatedAt': datetime(2015, 1, 1),
          'Tags': {
              'string': 'string'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **ObjectTypeName** *(string) --* 

        The name of the profile object type.

        
      

      - **Description** *(string) --* 

        Description of the profile object type.

        
      

      - **TemplateId** *(string) --* 

        A unique identifier for the object template.

        
      

      - **ExpirationDays** *(integer) --* 

        The number of days until the data in the object expires.

        
      

      - **EncryptionKey** *(string) --* 

        The customer-provided key to encrypt the profile object that will be created in this profile object type.

        
      

      - **AllowProfileCreation** *(boolean) --* 

        Indicates whether a profile should be created when data is received if one doesn’t exist for an object of this type. The default is ``FALSE``. If the AllowProfileCreation flag is set to ``FALSE``, then the service tries to fetch a standard profile and associate this object with the profile. If it is set to ``TRUE``, and if no match is found, then the service creates a new standard profile.

        
      

      - **SourceLastUpdatedTimestampFormat** *(string) --* 

        The format of your ``sourceLastUpdatedTimestamp`` that was previously set up in fields that were parsed using `SimpleDateFormat <https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html>`__. If you have ``sourceLastUpdatedTimestamp`` in your field, you must set up ``sourceLastUpdatedTimestampFormat``.

        
      

      - **MaxProfileObjectCount** *(integer) --* 

        The amount of profile object max count assigned to the object type.

        
      

      - **MaxAvailableProfileObjectCount** *(integer) --* 

        The amount of provisioned profile object max count available.

        
      

      - **Fields** *(dict) --* 

        A map of the name and ObjectType field.

        
        

        - *(string) --* 
          

          - *(dict) --* 

            Represents a field in a ProfileObjectType.

            
            

            - **Source** *(string) --* 

              A field of a ProfileObject. For example: _source.FirstName, where “_source” is a ProfileObjectType of a Zendesk user and “FirstName” is a field in that ObjectType.

              
            

            - **Target** *(string) --* 

              The location of the data in the standard ProfileObject model. For example: _profile.Address.PostalCode.

              
            

            - **ContentType** *(string) --* 

              The content type of the field. Used for determining equality when searching.

              
        
    
  
      

      - **Keys** *(dict) --* 

        A list of unique keys that can be used to map data to the profile.

        
        

        - *(string) --* 
          

          - *(list) --* 
            

            - *(dict) --* 

              An object that defines the Key element of a ProfileObject. A Key is a special element that can be used to search for a customer profile.

              
              

              - **StandardIdentifiers** *(list) --* 

                The types of keys that a ProfileObject can have. Each ProfileObject can have only 1 UNIQUE key but multiple PROFILE keys. PROFILE, ASSET, CASE, or ORDER means that this key can be used to tie an object to a PROFILE, ASSET, CASE, or ORDER respectively. UNIQUE means that it can be used to uniquely identify an object. If a key a is marked as SECONDARY, it will be used to search for profiles after all other PROFILE keys have been searched. A LOOKUP_ONLY key is only used to match a profile but is not persisted to be used for searching of the profile. A NEW_ONLY key is only used if the profile does not already exist before the object is ingested, otherwise it is only used for matching objects to profiles.

                
                

                - *(string) --* 
            
              

              - **FieldNames** *(list) --* 

                The reference for the key name of the fields map.

                
                

                - *(string) --* 
            
          
        
    
  
      

      - **CreatedAt** *(datetime) --* 

        The timestamp of when the domain was created.

        
      

      - **LastUpdatedAt** *(datetime) --* 

        The timestamp of when the domain was most recently edited.

        
      

      - **Tags** *(dict) --* 

        The tags used to organize, track, or control access for this resource.

        
        

        - *(string) --* 
          

          - *(string) --* 
    
  
  
  **Exceptions**
  
  *   :py:class:`CustomerProfiles.Client.exceptions.BadRequestException`

  
  *   :py:class:`CustomerProfiles.Client.exceptions.ResourceNotFoundException`

  
  *   :py:class:`CustomerProfiles.Client.exceptions.AccessDeniedException`

  
  *   :py:class:`CustomerProfiles.Client.exceptions.ThrottlingException`

  
  *   :py:class:`CustomerProfiles.Client.exceptions.InternalServerException`

  