def with_properties(properties):
    return {
        'type': 'object',
        'inclusion': 'available',
        'selected-by-default': False,
        'properties': properties
    }


CUSTOM_PROPERTY_LIST = {
    'type': 'array',
    'description': ('Specifies key-value pairs of properties associated with '
                    'an object.'),
    'items': {
        'type': 'object',
        'properties': {
            'Name': {'type': 'string'},
            'Value': {'type': ['null', 'string']},
        }
    }
}

ID_FIELD = {
    'type': 'integer',
    'description': ('Read-only legacy identifier for an object. Not '
                    'supported on all objects. Some objects use the '
                    'ObjectID property as the Marketing Cloud unique '
                    'ID.')
}

CREATED_DATE_FIELD = {
    'type': ['null', 'string'],
    'description': ('Read-only date and time of the object\'s'
                    'creation.'),
}

MODIFIED_DATE_FIELD = {
    'type': ['null', 'string'],
    'description': ('Indicates the last time object information '
                    'was modified.')
}

CUSTOMER_KEY_FIELD = {
    'type': ['null', 'string'],
    'description': ('User-supplied unique identifier for an '
                    'object within an object type (corresponds '
                    'to the external key assigned to an object '
                    'in the user interface).'),
}

OBJECT_ID_FIELD = {
    'type': ['null', 'string'],
    'description': ('System-controlled, read-only text string '
                    'identifier for object.'),
}

DESCRIPTION_FIELD = {
    'type': ['null', 'string'],
    'description': ('Describes and provides information regarding '
                    'the object.'),
}

SUBSCRIBER_KEY_FIELD = {
    'type': 'string',
    'description': 'Identification of a specific subscriber.',
}
