# Super Slurper # Jobs ## List jobs `client.r2.superSlurper.jobs.list(JobListParamsparams, RequestOptionsoptions?): SinglePage` **get** `/accounts/{account_id}/slurper/jobs` Lists all R2 Super Slurper migration jobs for the account with their status. ### Parameters - `params: JobListParams` - `account_id: string` Path param - `limit?: number` Query param - `offset?: number` Query param ### Returns - `JobListResponse` - `id?: string` - `createdAt?: string` - `finishedAt?: string | null` - `overwrite?: boolean` - `source?: S3SourceResponseSchema | GcsSourceResponseSchema | R2SourceResponseSchema` - `S3SourceResponseSchema` - `bucket?: string` - `endpoint?: string | null` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "s3"` - `"s3"` - `GcsSourceResponseSchema` - `bucket?: string` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "gcs"` - `"gcs"` - `R2SourceResponseSchema` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: Provider` - `"r2"` - `status?: "running" | "paused" | "aborted" | "completed"` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target?: Target` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `vendor?: Provider` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const jobListResponse of client.r2.superSlurper.jobs.list({ account_id: 'account_id', })) { console.log(jobListResponse.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 `client.r2.superSlurper.jobs.get(stringjobId, JobGetParamsparams, RequestOptionsoptions?): JobGetResponse` **get** `/accounts/{account_id}/slurper/jobs/{job_id}` Retrieves detailed status and configuration for a specific R2 Super Slurper migration job. ### Parameters - `jobId: string` - `params: JobGetParams` - `account_id: string` ### Returns - `JobGetResponse` - `id?: string` - `createdAt?: string` - `finishedAt?: string | null` - `overwrite?: boolean` - `source?: S3SourceResponseSchema | GcsSourceResponseSchema | R2SourceResponseSchema` - `S3SourceResponseSchema` - `bucket?: string` - `endpoint?: string | null` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "s3"` - `"s3"` - `GcsSourceResponseSchema` - `bucket?: string` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "gcs"` - `"gcs"` - `R2SourceResponseSchema` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: Provider` - `"r2"` - `status?: "running" | "paused" | "aborted" | "completed"` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target?: Target` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `vendor?: Provider` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const job = await client.r2.superSlurper.jobs.get('job_id', { account_id: 'account_id' }); console.log(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 `client.r2.superSlurper.jobs.create(JobCreateParamsparams, RequestOptionsoptions?): 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 - `params: JobCreateParams` - `account_id: string` Path param - `overwrite?: boolean` Body param - `source?: R2SlurperS3SourceSchema | R2SlurperGcsSourceSchema | R2SlurperR2SourceSchema` Body param - `R2SlurperS3SourceSchema` - `bucket: string` - `secret: Secret` - `accessKeyId: string` - `secretAccessKey: string` - `vendor: "s3"` - `"s3"` - `endpoint?: string | null` - `keys?: Array | null` - `pathPrefix?: string | null` - `region?: string | null` - `R2SlurperGcsSourceSchema` - `bucket: string` - `secret: Secret` - `clientEmail: string` - `privateKey: string` - `vendor: "gcs"` - `"gcs"` - `keys?: Array | null` - `pathPrefix?: string | null` - `R2SlurperR2SourceSchema` - `bucket: string` - `secret: Secret` - `accessKeyId: string` - `secretAccessKey: string` - `vendor: Provider` - `"r2"` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `keys?: Array | null` - `pathPrefix?: string | null` - `target?: Target` Body param - `bucket: string` - `secret: Secret` - `accessKeyId: string` - `secretAccessKey: string` - `vendor: Provider` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` ### Returns - `JobCreateResponse` - `id?: string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const job = await client.r2.superSlurper.jobs.create({ account_id: 'account_id' }); console.log(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 `client.r2.superSlurper.jobs.abortAll(JobAbortAllParamsparams, RequestOptionsoptions?): 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 - `params: JobAbortAllParams` - `account_id: string` ### Returns - `JobAbortAllResponse = string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.jobs.abortAll({ account_id: 'account_id' }); console.log(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 `client.r2.superSlurper.jobs.abort(stringjobId, JobAbortParamsparams, RequestOptionsoptions?): 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 - `jobId: string` - `params: JobAbortParams` - `account_id: string` ### Returns - `JobAbortResponse = string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.jobs.abort('job_id', { account_id: 'account_id' }); console.log(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 `client.r2.superSlurper.jobs.pause(stringjobId, JobPauseParamsparams, RequestOptionsoptions?): 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 - `jobId: string` - `params: JobPauseParams` - `account_id: string` ### Returns - `JobPauseResponse = string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.jobs.pause('job_id', { account_id: 'account_id' }); console.log(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 `client.r2.superSlurper.jobs.progress(stringjobId, JobProgressParamsparams, RequestOptionsoptions?): JobProgressResponse` **get** `/accounts/{account_id}/slurper/jobs/{job_id}/progress` Retrieves current progress metrics for an R2 Super Slurper migration job ### Parameters - `jobId: string` - `params: JobProgressParams` - `account_id: string` ### Returns - `JobProgressResponse` - `id?: string` - `createdAt?: string` - `failedObjects?: number` - `objects?: number` - `skippedObjects?: number` - `status?: "running" | "paused" | "aborted" | "completed"` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `transferredObjects?: number` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.jobs.progress('job_id', { account_id: 'account_id' }); console.log(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 `client.r2.superSlurper.jobs.resume(stringjobId, JobResumeParamsparams, RequestOptionsoptions?): 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 - `jobId: string` - `params: JobResumeParams` - `account_id: string` ### Returns - `JobResumeResponse = string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.jobs.resume('job_id', { account_id: 'account_id' }); console.log(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 - `JobListResponse` - `id?: string` - `createdAt?: string` - `finishedAt?: string | null` - `overwrite?: boolean` - `source?: S3SourceResponseSchema | GcsSourceResponseSchema | R2SourceResponseSchema` - `S3SourceResponseSchema` - `bucket?: string` - `endpoint?: string | null` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "s3"` - `"s3"` - `GcsSourceResponseSchema` - `bucket?: string` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "gcs"` - `"gcs"` - `R2SourceResponseSchema` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: Provider` - `"r2"` - `status?: "running" | "paused" | "aborted" | "completed"` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target?: Target` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `vendor?: Provider` ### Job Get Response - `JobGetResponse` - `id?: string` - `createdAt?: string` - `finishedAt?: string | null` - `overwrite?: boolean` - `source?: S3SourceResponseSchema | GcsSourceResponseSchema | R2SourceResponseSchema` - `S3SourceResponseSchema` - `bucket?: string` - `endpoint?: string | null` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "s3"` - `"s3"` - `GcsSourceResponseSchema` - `bucket?: string` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: "gcs"` - `"gcs"` - `R2SourceResponseSchema` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `keys?: Array | null` - `pathPrefix?: string | null` - `vendor?: Provider` - `"r2"` - `status?: "running" | "paused" | "aborted" | "completed"` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `target?: Target` - `bucket?: string` - `jurisdiction?: "default" | "eu" | "fedramp"` - `"default"` - `"eu"` - `"fedramp"` - `vendor?: Provider` ### Job Create Response - `JobCreateResponse` - `id?: string` ### Job Abort All Response - `JobAbortAllResponse = string` ### Job Abort Response - `JobAbortResponse = string` ### Job Pause Response - `JobPauseResponse = string` ### Job Progress Response - `JobProgressResponse` - `id?: string` - `createdAt?: string` - `failedObjects?: number` - `objects?: number` - `skippedObjects?: number` - `status?: "running" | "paused" | "aborted" | "completed"` - `"running"` - `"paused"` - `"aborted"` - `"completed"` - `transferredObjects?: number` ### Job Resume Response - `JobResumeResponse = string` # Logs ## Get job logs `client.r2.superSlurper.jobs.logs.list(stringjobId, LogListParamsparams, RequestOptionsoptions?): SinglePage` **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 - `jobId: string` - `params: LogListParams` - `account_id: string` Path param - `limit?: number` Query param - `offset?: number` Query param ### Returns - `LogListResponse` - `createdAt?: string` - `job?: string` - `logType?: "migrationStart" | "migrationComplete" | "migrationAbort" | 12 more` - `"migrationStart"` - `"migrationComplete"` - `"migrationAbort"` - `"migrationError"` - `"migrationPause"` - `"migrationResume"` - `"migrationErrorFailedContinuation"` - `"importErrorRetryExhaustion"` - `"importSkippedStorageClass"` - `"importSkippedOversized"` - `"importSkippedEmptyObject"` - `"importSkippedUnsupportedContentType"` - `"importSkippedExcludedContentType"` - `"importSkippedInvalidMedia"` - `"importSkippedRequiresRetrieval"` - `message?: string | null` - `objectKey?: string | null` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const logListResponse of client.r2.superSlurper.jobs.logs.list('job_id', { account_id: 'account_id', })) { console.log(logListResponse.createdAt); } ``` #### 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 - `LogListResponse` - `createdAt?: string` - `job?: string` - `logType?: "migrationStart" | "migrationComplete" | "migrationAbort" | 12 more` - `"migrationStart"` - `"migrationComplete"` - `"migrationAbort"` - `"migrationError"` - `"migrationPause"` - `"migrationResume"` - `"migrationErrorFailedContinuation"` - `"importErrorRetryExhaustion"` - `"importSkippedStorageClass"` - `"importSkippedOversized"` - `"importSkippedEmptyObject"` - `"importSkippedUnsupportedContentType"` - `"importSkippedExcludedContentType"` - `"importSkippedInvalidMedia"` - `"importSkippedRequiresRetrieval"` - `message?: string | null` - `objectKey?: string | null` # Connectivity Precheck ## Check source connectivity `client.r2.superSlurper.connectivityPrecheck.source(ConnectivityPrecheckSourceParamsparams, RequestOptionsoptions?): ConnectivityPrecheckSourceResponse` **put** `/accounts/{account_id}/slurper/source/connectivity-precheck` Check whether tokens are valid against the source bucket ### Parameters - `ConnectivityPrecheckSourceParams = R2SlurperS3SourceSchema | R2SlurperGcsSourceSchema | R2SlurperR2SourceSchema` - `ConnectivityPrecheckSourceParamsBase` - `R2SlurperS3SourceSchema extends ConnectivityPrecheckSourceParamsBase` - `R2SlurperGcsSourceSchema extends ConnectivityPrecheckSourceParamsBase` - `R2SlurperR2SourceSchema extends ConnectivityPrecheckSourceParamsBase` ### Returns - `ConnectivityPrecheckSourceResponse` - `connectivityStatus?: "success" | "error"` - `"success"` - `"error"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.connectivityPrecheck.source({ account_id: 'account_id', bucket: 'bucket', secret: { accessKeyId: 'accessKeyId', secretAccessKey: 'secretAccessKey' }, vendor: 's3', }); console.log(response.connectivityStatus); ``` #### 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 `client.r2.superSlurper.connectivityPrecheck.target(ConnectivityPrecheckTargetParamsparams, RequestOptionsoptions?): ConnectivityPrecheckTargetResponse` **put** `/accounts/{account_id}/slurper/target/connectivity-precheck` Check whether tokens are valid against the target bucket ### Parameters - `params: ConnectivityPrecheckTargetParams` - `account_id: string` Path param - `bucket: string` Body param - `secret: Secret` Body param - `accessKeyId: string` - `secretAccessKey: string` - `vendor: Provider` Body param - `"r2"` - `jurisdiction?: "default" | "eu" | "fedramp"` Body param - `"default"` - `"eu"` - `"fedramp"` ### Returns - `ConnectivityPrecheckTargetResponse` - `connectivityStatus?: "success" | "error"` - `"success"` - `"error"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.r2.superSlurper.connectivityPrecheck.target({ account_id: 'account_id', bucket: 'bucket', secret: { accessKeyId: 'accessKeyId', secretAccessKey: 'secretAccessKey' }, vendor: 'r2', }); console.log(response.connectivityStatus); ``` #### 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 - `ConnectivityPrecheckSourceResponse` - `connectivityStatus?: "success" | "error"` - `"success"` - `"error"` ### Connectivity Precheck Target Response - `ConnectivityPrecheckTargetResponse` - `connectivityStatus?: "success" | "error"` - `"success"` - `"error"`