# Snapshot a dSource.

Endpoint: POST /dsources/{dsourceId}/snapshots
Version: 3.30.0
Security: ApiKeyAuth

## Security:

  - `ApiKeyAuth` (unknown)
    apiKey in header Authorization

## Path parameters:

  - `dsourceId` (string, required)
    The ID of the dSource.

## Request body:

  - `application/json` (unknown)
    Optional parameters to snapshot a DSource.

## Request fields (application/json):

  - `drop_and_recreate_devices` (boolean)
    If this parameter is set to true, older devices will be dropped and new
devices created instead of trying to remap the devices. This might increase
the space utilization on Delphix Engine. (ASE only)

  - `sync_strategy` (string)
    Determines how the Delphix Engine will take a backup:
* `latest_backup` - Use the most recent backup.
* `new_backup` - Delphix will take a new backup of your source database.
* `specific_backup` - Use a specific backup. Using this option requires setting
`ase_backup_files` for ASE dSources or `mssql_backup_uuid` for MSSql dSources.
Default is `new_backup`.
(ASE, MSSql only)
    Enum: "latest_backup", "new_backup", "specific_backup"

  - `ase_backup_files` (array)
    When using the `specific_backup` sync_strategy, determines the backup files. (ASE Only)

  - `mssql_backup_uuid` (string)
    When using the `specific_backup` sync_strategy, determines the Backup Set UUID. (MSSql only)

  - `compression_enabled` (boolean)
    When using the `new_backup` sync_strategy, determines if compression must be enabled. Defaults to the configuration of the ingestion strategy configured on the Delphix Engine for this dSource. (MSSql only)

  - `availability_group_backup_policy` (string)
    When using the `new_backup` sync_strategy for an MSSql Availability Group, determines the backup policy:
* `primary` - Backups only go to the primary node.
* `secondary_only` - Backups only go to secondary nodes. If secondary nodes are down, backups will fail.
* `prefer_secondary` - Backups go to secondary nodes, but if secondary nodes are down, backups will go to the primary node.
(MSSql only)
    Enum: "primary", "secondary_only", "prefer_secondary"

  - `do_not_resume` (boolean)
    Indicates whether a fresh SnapSync must be started regardless if it was possible to
resume the current SnapSync. If true, we will not resume but instead ignore previous progress
and backup all datafiles even if already completed from previous failed SnapSync. This does not
force a full backup, if an incremental was in progress this will start a new incremental snapshot.
(Oracle only)

  - `double_sync` (boolean)
    Indicates whether two SnapSyncs should be performed in immediate succession to reduce the number
of logs required to provision the snapshot. This may significantly reduce the time necessary to
provision from a snapshot.
(Oracle only).

  - `force_full_backup` (boolean)
    Whether or not to take another full backup of the source database. (Oracle only)

  - `skip_space_check` (boolean)
    Skip check that tests if there is enough space available to store the database in
the Delphix Engine. The Delphix Engine estimates how much space a database will occupy after
compression and prevents SnapSync if insufficient space is available. This safeguard can be
overridden using this option. This may be useful when linking highly compressible databases.
(Oracle only)

  - `files_for_partial_full_backup` (array)
    List of datafiles to take a full backup of. This would be useful in situations
where certain datafiles could not be backed up during previous SnapSync due to corruption
or because they went offline.
(Oracle only)

  - `appdata_parameters` (object)
    The list of parameters specified by the snapshotParametersDefinition schema in the toolkit (AppData only).
    Example: {"resync":true}

  - `rman_rate_in_MB` (integer)
    RMAN rate in megabytes to be used. This is the upper limit for bytes read so that
RMAN does not consume excessive disk bandwidth and degrade online performance. (Oracle only)

## Request examples:

  - `Using default Values` (unknown)
    This request example does not set any property and will thus use the default behavior.

  - `Oracle customized` (unknown)
    This request examples customizes the snapshot process for an Oracle dSource.

  - `MSSql specific backup` (unknown)
    This request examples demonstrates how to specify a custom backup set UUID for an MSSql dSource.

  - `ASE specific backup` (unknown)
    This request examples demonstrates how to specify a custom backup for an ASE dSource.

## Response 200:

  - `200` (unknown)
    dSource snapshot initiated.

## Response 200 fields (application/json):

  - `job` (object)
    An asynchronous task.

  - `job.id` (string)
    The Job entity ID.
    Example: job-123

  - `job.status` (string)
    The status of the job.
    Enum: "PENDING", "STARTED", "TIMEDOUT", "RUNNING", "CANCELED", "FAILED", "SUSPENDED", "WAITING", "COMPLETED", "ABANDONED"

  - `job.is_waiting_for_telemetry` (boolean)
    Indicates that the operations performed by this Job have completed successfully, but the object changes are not yet reflected. This is only set when when the JOB is in STARTED status, with the guarantee that the job will not transition to the FAILED status. Note that this flag will likely be replaced with a new status in future API versions and be deprecated.

  - `job.type` (string)
    The type of job being done.
    Example: DB_REFRESH

  - `job.localized_type` (string)
    The i18n translated type of job being done.
    Example: DB Refresh

  - `job.error_details` (string)
    Details about the failure for FAILED jobs.
    Example: Unable to connect to the engine.

  - `job.warning_message` (string)
    Warnings for the job.
    Example: Failed to remove local MaskingJob, engineId: 3 localMaskingJobId: 7.

  - `job.target_id` (string)
    A reference to the job's target.
    Example: vdb-123

  - `job.target_name` (string)
    A reference to the job's target name.
    Example: vdb

  - `job.work_source_id` (string)
    The ID of the entity that initiated this job (e.g. a policy ID), if applicable.

  - `job.work_source_name` (string)
    The name of the entity that initiated this job, if applicable.

  - `job.work_source_type` (string)
    The origin of the operation that created this job. Null for DCT-initiated operations (attributed via account_id). DIRECT means the action was performed directly on the engine, bypassing DCT; POLICY means an automated policy triggered it; SYSTEM means it was engine-internal.
    Enum: "DIRECT", "POLICY", "SYSTEM"

  - `job.start_time` (string)
    The time the job started executing.
    Example: 2022-01-02T05:11:24.148Z

  - `job.update_time` (string)
    The time the job was last updated.
    Example: 2022-01-02T06:11:24.148Z

  - `job.trace_id` (string)
    traceId of the request which created this Job

  - `job.engine_ids` (array)
    IDs of the engines this Job is executing on.

  - `job.tags` (array)

  - `job.tags.key` (string, required)
    Key of the tag
    Example: key-1

  - `job.tags.value` (string, required)
    Value of the tag
    Example: value-1

  - `job.engines` (array)

  - `job.engines.engine_id` (string)

  - `job.engines.engine_name` (string)

  - `job.account_id` (integer)
    The ID of the account who initiated this job.
    Example: 1

  - `job.account_name` (string)
    The account name which initiated this job. It can be either firstname and lastname combination or firstname or lastname or username or email address or Account-.
    Example: User 1

  - `job.compliance_node_id` (string)
    The ID of the associated compliance node, if applicable.

  - `job.compliance_node_name` (string)
    The name of the associated compliance node, if applicable.

  - `job.percent_complete` (integer)
    Completion percentage of the Job.
    Example: 50

  - `job.virtualization_tasks` (array)

  - `job.virtualization_tasks.id` (string)

  - `job.virtualization_tasks.parent_job_id` (string)

  - `job.virtualization_tasks.start_time` (string)

  - `job.virtualization_tasks.end_time` (string)

  - `job.virtualization_tasks.title` (string)

  - `job.virtualization_tasks.percent_complete` (integer)

  - `job.virtualization_tasks.events` (array)

  - `job.virtualization_tasks.events.message_details` (string)

  - `job.virtualization_tasks.events.message_action` (string)

  - `job.virtualization_tasks.events.message_command_output` (string)

  - `job.virtualization_tasks.status` (string)
    Enum: "PENDING", "STARTED", "TIMEDOUT", "RUNNING", "CANCELED", "FAILED", "SUSPENDED", "WAITING", "COMPLETED", "ABANDONED"

  - `job.tasks` (array)

  - `job.tasks.id` (string)

  - `job.tasks.parent_job_id` (string)

  - `job.tasks.start_time` (string)

  - `job.tasks.end_time` (string)

  - `job.tasks.title` (string)

  - `job.tasks.percent_complete` (integer)

  - `job.tasks.events` (array)

  - `job.tasks.events.message_details` (string)

  - `job.tasks.events.message_action` (string)

  - `job.tasks.events.message_command_output` (string)

  - `job.tasks.events.timestamp` (string)
    When this specific event occurred. Absent/null for events persisted before this field was added (no backfill) and for any producer not yet updated to set it.

  - `job.tasks.status` (string)
    Enum: "PENDING", "STARTED", "TIMEDOUT", "RUNNING", "CANCELED", "FAILED", "SUSPENDED", "WAITING", "COMPLETED", "ABANDONED"

  - `job.execution_id` (string)
    The ID of the associated masking execution, if any.

  - `job.result_type` (string)
    The type of the job result. This is the type of the object present in the result.

  - `job.result` (object)
    The result of the job execution. This is JSON serialized string of the result object whose type is specified by result_type property.

  - `job.parent_job_id` (string)
    The ID of the parent job, if this job was triggered by another job.

