# Super Slurper # Jobs ## List jobs `r2.super_slurper.jobs.list(JobListParams**kwargs) -> SyncSinglePage[JobListResponse]` **get** `/accounts/{account_id}/slurper/jobs` Lists all R2 Super Slurper migration jobs for the account with their status. ### Parameters - `account_id: str` - `limit: Optional[int]` - `offset: Optional[int]` ### Returns - `class JobListResponse: …` - `id: Optional[str]` - `created_at: Optional[str]` - `finished_at: Optional[str]` - `overwrite: Optional[bool]` - `source: Optional[Source]` - `class SourceS3SourceResponseSchema: …` - `bucket: Optional[str]` - `endpoint: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["s3"]]` - `"s3"` - `class SourceGcsSourceResponseSchema: …` - `bucket: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["gcs"]]` - `"gcs"` - `class SourceR2SourceResponseSchema: …` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Provider]` - `"r2"` - `status: Optional[Literal["running", "paused", "aborted", "completed"]]` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target: Optional[Target]` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `vendor: Optional[Provider]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) page = client.r2.super_slurper.jobs.list( account_id="account_id", ) page = page.result[0] print(page.id) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": [ { "id": "id", "createdAt": "createdAt", "finishedAt": "finishedAt", "overwrite": true, "source": { "bucket": "bucket", "endpoint": "endpoint", "keys": [ "string" ], "pathPrefix": "pathPrefix", "vendor": "s3" }, "status": "running", "target": { "bucket": "bucket", "jurisdiction": "default", "vendor": "r2" } } ], "success": true } ``` ## Get job details `r2.super_slurper.jobs.get(strjob_id, JobGetParams**kwargs) -> JobGetResponse` **get** `/accounts/{account_id}/slurper/jobs/{job_id}` Retrieves detailed status and configuration for a specific R2 Super Slurper migration job. ### Parameters - `account_id: str` - `job_id: str` ### Returns - `class JobGetResponse: …` - `id: Optional[str]` - `created_at: Optional[str]` - `finished_at: Optional[str]` - `overwrite: Optional[bool]` - `source: Optional[Source]` - `class SourceS3SourceResponseSchema: …` - `bucket: Optional[str]` - `endpoint: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["s3"]]` - `"s3"` - `class SourceGcsSourceResponseSchema: …` - `bucket: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["gcs"]]` - `"gcs"` - `class SourceR2SourceResponseSchema: …` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Provider]` - `"r2"` - `status: Optional[Literal["running", "paused", "aborted", "completed"]]` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target: Optional[Target]` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `vendor: Optional[Provider]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) job = client.r2.super_slurper.jobs.get( job_id="job_id", account_id="account_id", ) print(job.id) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": { "id": "id", "createdAt": "createdAt", "finishedAt": "finishedAt", "overwrite": true, "source": { "bucket": "bucket", "endpoint": "endpoint", "keys": [ "string" ], "pathPrefix": "pathPrefix", "vendor": "s3" }, "status": "running", "target": { "bucket": "bucket", "jurisdiction": "default", "vendor": "r2" } }, "success": true } ``` ## Create a job `r2.super_slurper.jobs.create(JobCreateParams**kwargs) -> JobCreateResponse` **post** `/accounts/{account_id}/slurper/jobs` Creates a new R2 Super Slurper migration job to transfer objects from a source bucket (e.g. S3, GCS, R2) to R2. ### Parameters - `account_id: str` - `overwrite: Optional[bool]` - `source: Optional[Source]` - `class SourceR2SlurperS3SourceSchema: …` - `bucket: str` - `secret: SourceR2SlurperS3SourceSchemaSecret` - `access_key_id: str` - `secret_access_key: str` - `vendor: Literal["s3"]` - `"s3"` - `endpoint: Optional[str]` - `keys: Optional[SequenceNotStr[str]]` - `path_prefix: Optional[str]` - `region: Optional[str]` - `class SourceR2SlurperGcsSourceSchema: …` - `bucket: str` - `secret: SourceR2SlurperGcsSourceSchemaSecret` - `client_email: str` - `private_key: str` - `vendor: Literal["gcs"]` - `"gcs"` - `keys: Optional[SequenceNotStr[str]]` - `path_prefix: Optional[str]` - `class SourceR2SlurperR2SourceSchema: …` - `bucket: str` - `secret: SourceR2SlurperR2SourceSchemaSecret` - `access_key_id: str` - `secret_access_key: str` - `vendor: Provider` - `"r2"` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `keys: Optional[SequenceNotStr[str]]` - `path_prefix: Optional[str]` - `target: Optional[Target]` - `bucket: str` - `secret: TargetSecret` - `access_key_id: str` - `secret_access_key: str` - `vendor: Provider` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` ### Returns - `class JobCreateResponse: …` - `id: Optional[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) job = client.r2.super_slurper.jobs.create( account_id="account_id", ) print(job.id) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": { "id": "id" }, "success": true } ``` ## Abort all jobs `r2.super_slurper.jobs.abort_all(JobAbortAllParams**kwargs) -> JobAbortAllResponse` **put** `/accounts/{account_id}/slurper/jobs/abortAll` Cancels all running R2 Super Slurper migration jobs for the account. Any objects in the middle of a transfer will finish, but no new objects will start transferring. ### Parameters - `account_id: str` ### Returns - `str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.jobs.abort_all( account_id="account_id", ) print(response) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": "result", "success": true } ``` ## Abort a job `r2.super_slurper.jobs.abort(strjob_id, JobAbortParams**kwargs) -> JobAbortResponse` **put** `/accounts/{account_id}/slurper/jobs/{job_id}/abort` Cancels a specific R2 Super Slurper migration job. Any objects in the middle of a transfer will finish, but no new objects will start transferring. ### Parameters - `account_id: str` - `job_id: str` ### Returns - `str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.jobs.abort( job_id="job_id", account_id="account_id", ) print(response) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": "result", "success": true } ``` ## Pause a job `r2.super_slurper.jobs.pause(strjob_id, JobPauseParams**kwargs) -> JobPauseResponse` **put** `/accounts/{account_id}/slurper/jobs/{job_id}/pause` Pauses a running R2 Super Slurper migration job. The job can be resumed later to continue transferring. ### Parameters - `account_id: str` - `job_id: str` ### Returns - `str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.jobs.pause( job_id="job_id", account_id="account_id", ) print(response) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": "result", "success": true } ``` ## Get job progress `r2.super_slurper.jobs.progress(strjob_id, JobProgressParams**kwargs) -> JobProgressResponse` **get** `/accounts/{account_id}/slurper/jobs/{job_id}/progress` Retrieves current progress metrics for an R2 Super Slurper migration job ### Parameters - `account_id: str` - `job_id: str` ### Returns - `class JobProgressResponse: …` - `id: Optional[str]` - `created_at: Optional[str]` - `failed_objects: Optional[int]` - `objects: Optional[int]` - `skipped_objects: Optional[int]` - `status: Optional[Literal["running", "paused", "aborted", "completed"]]` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `transferred_objects: Optional[int]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.jobs.progress( job_id="job_id", account_id="account_id", ) print(response.id) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": { "id": "id", "createdAt": "createdAt", "failedObjects": 0, "objects": 0, "skippedObjects": 0, "status": "running", "transferredObjects": 0 }, "success": true } ``` ## Resume a job `r2.super_slurper.jobs.resume(strjob_id, JobResumeParams**kwargs) -> JobResumeResponse` **put** `/accounts/{account_id}/slurper/jobs/{job_id}/resume` Resumes a paused R2 Super Slurper migration job, continuing the transfer from where it stopped. ### Parameters - `account_id: str` - `job_id: str` ### Returns - `str` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.jobs.resume( job_id="job_id", account_id="account_id", ) print(response) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": "result", "success": true } ``` ## Domain Types ### Job List Response - `class JobListResponse: …` - `id: Optional[str]` - `created_at: Optional[str]` - `finished_at: Optional[str]` - `overwrite: Optional[bool]` - `source: Optional[Source]` - `class SourceS3SourceResponseSchema: …` - `bucket: Optional[str]` - `endpoint: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["s3"]]` - `"s3"` - `class SourceGcsSourceResponseSchema: …` - `bucket: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["gcs"]]` - `"gcs"` - `class SourceR2SourceResponseSchema: …` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Provider]` - `"r2"` - `status: Optional[Literal["running", "paused", "aborted", "completed"]]` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target: Optional[Target]` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `vendor: Optional[Provider]` ### Job Get Response - `class JobGetResponse: …` - `id: Optional[str]` - `created_at: Optional[str]` - `finished_at: Optional[str]` - `overwrite: Optional[bool]` - `source: Optional[Source]` - `class SourceS3SourceResponseSchema: …` - `bucket: Optional[str]` - `endpoint: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["s3"]]` - `"s3"` - `class SourceGcsSourceResponseSchema: …` - `bucket: Optional[str]` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Literal["gcs"]]` - `"gcs"` - `class SourceR2SourceResponseSchema: …` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `keys: Optional[List[str]]` - `path_prefix: Optional[str]` - `vendor: Optional[Provider]` - `"r2"` - `status: Optional[Literal["running", "paused", "aborted", "completed"]]` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target: Optional[Target]` - `bucket: Optional[str]` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` - `vendor: Optional[Provider]` ### Job Create Response - `class JobCreateResponse: …` - `id: Optional[str]` ### Job Abort All Response - `str` ### Job Abort Response - `str` ### Job Pause Response - `str` ### Job Progress Response - `class JobProgressResponse: …` - `id: Optional[str]` - `created_at: Optional[str]` - `failed_objects: Optional[int]` - `objects: Optional[int]` - `skipped_objects: Optional[int]` - `status: Optional[Literal["running", "paused", "aborted", "completed"]]` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `transferred_objects: Optional[int]` ### Job Resume Response - `str` # Logs ## Get job logs `r2.super_slurper.jobs.logs.list(strjob_id, LogListParams**kwargs) -> SyncSinglePage[LogListResponse]` **get** `/accounts/{account_id}/slurper/jobs/{job_id}/logs` Gets log entries for an R2 Super Slurper migration job, showing migration status changes, errors, etc. ### Parameters - `account_id: str` - `job_id: str` - `limit: Optional[int]` - `offset: Optional[int]` ### Returns - `class LogListResponse: …` - `created_at: Optional[str]` - `job: Optional[str]` - `log_type: Optional[Literal["migrationStart", "migrationComplete", "migrationAbort", 12 more]]` - `"migrationStart"` - `"migrationComplete"` - `"migrationAbort"` - `"migrationError"` - `"migrationPause"` - `"migrationResume"` - `"migrationErrorFailedContinuation"` - `"importErrorRetryExhaustion"` - `"importSkippedStorageClass"` - `"importSkippedOversized"` - `"importSkippedEmptyObject"` - `"importSkippedUnsupportedContentType"` - `"importSkippedExcludedContentType"` - `"importSkippedInvalidMedia"` - `"importSkippedRequiresRetrieval"` - `message: Optional[str]` - `object_key: Optional[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) page = client.r2.super_slurper.jobs.logs.list( job_id="job_id", account_id="account_id", ) page = page.result[0] print(page.created_at) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": [ { "createdAt": "createdAt", "job": "job", "logType": "migrationStart", "message": "message", "objectKey": "objectKey" } ], "success": true } ``` ## Domain Types ### Log List Response - `class LogListResponse: …` - `created_at: Optional[str]` - `job: Optional[str]` - `log_type: Optional[Literal["migrationStart", "migrationComplete", "migrationAbort", 12 more]]` - `"migrationStart"` - `"migrationComplete"` - `"migrationAbort"` - `"migrationError"` - `"migrationPause"` - `"migrationResume"` - `"migrationErrorFailedContinuation"` - `"importErrorRetryExhaustion"` - `"importSkippedStorageClass"` - `"importSkippedOversized"` - `"importSkippedEmptyObject"` - `"importSkippedUnsupportedContentType"` - `"importSkippedExcludedContentType"` - `"importSkippedInvalidMedia"` - `"importSkippedRequiresRetrieval"` - `message: Optional[str]` - `object_key: Optional[str]` # Connectivity Precheck ## Check source connectivity `r2.super_slurper.connectivity_precheck.source(ConnectivityPrecheckSourceParams**kwargs) -> ConnectivityPrecheckSourceResponse` **put** `/accounts/{account_id}/slurper/source/connectivity-precheck` Check whether tokens are valid against the source bucket ### Parameters - `account_id: str` - `bucket: str` - `secret: R2SlurperS3SourceSchemaSecret` - `access_key_id: str` - `secret_access_key: str` - `vendor: Literal["s3"]` - `"s3"` - `endpoint: Optional[str]` - `keys: Optional[SequenceNotStr[str]]` - `path_prefix: Optional[str]` - `region: Optional[str]` ### Returns - `class ConnectivityPrecheckSourceResponse: …` - `connectivity_status: Optional[Literal["success", "error"]]` - `"success"` - `"error"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.connectivity_precheck.source( account_id="account_id", bucket="bucket", secret={ "access_key_id": "accessKeyId", "secret_access_key": "secretAccessKey", }, vendor="s3", ) print(response.connectivity_status) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": { "connectivityStatus": "success" }, "success": true } ``` ## Check target connectivity `r2.super_slurper.connectivity_precheck.target(ConnectivityPrecheckTargetParams**kwargs) -> ConnectivityPrecheckTargetResponse` **put** `/accounts/{account_id}/slurper/target/connectivity-precheck` Check whether tokens are valid against the target bucket ### Parameters - `account_id: str` - `bucket: str` - `secret: Secret` - `access_key_id: str` - `secret_access_key: str` - `vendor: Provider` - `"r2"` - `jurisdiction: Optional[Literal["default", "eu", "fedramp"]]` - `"default"` - `"eu"` - `"fedramp"` ### Returns - `class ConnectivityPrecheckTargetResponse: …` - `connectivity_status: Optional[Literal["success", "error"]]` - `"success"` - `"error"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.r2.super_slurper.connectivity_precheck.target( account_id="account_id", bucket="bucket", secret={ "access_key_id": "accessKeyId", "secret_access_key": "secretAccessKey", }, vendor="r2", ) print(response.connectivity_status) ``` #### Response ```json { "errors": [ { "code": 7003, "message": "No route for the URI", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "result": { "connectivityStatus": "success" }, "success": true } ``` ## Domain Types ### Connectivity Precheck Source Response - `class ConnectivityPrecheckSourceResponse: …` - `connectivity_status: Optional[Literal["success", "error"]]` - `"success"` - `"error"` ### Connectivity Precheck Target Response - `class ConnectivityPrecheckTargetResponse: …` - `connectivity_status: Optional[Literal["success", "error"]]` - `"success"` - `"error"`