Full Data Endpoint

Overview

FullData is the Data API operation that exports the complete current state of one or more HR/Payroll entities for a tenant.

This endpoint allows the consumer to start a data loader operation for configured entities, extracting all the data from the configured tables in a single request. This means the endpoint provides the complete dataset stored in our tables — which is particularly useful for initial loads of downstream systems.

On the backend, each requested entity is read and a file (CSV or JSON) is generated per entity. The operation is asynchronous: the initial POST request returns immediately with an operationId, while the extraction jobs run in the background. The consumer polls the status endpoint using this operationId to track progress until all jobs are complete.

The consumer can also:

  • Check the status of the operation.
  • Cancel an in-progress operation.
  • Delete the files generated by a completed operation.
  • Retry an operation that had failed jobs.

Base URL

https://data.youforce.com/data/v1/fulldata

Swagger: https://data.youforce.com/data/swagger/index.html

Authentication & Scopes

All requests require a Bearer token in the Authorization header.

Base URL pattern Required scope (read) Required scope (manage)
https://data.youforce.com/data/v1/ youforce-data-api:data:read youforce-data-api:jobs:manage

DPoP support

In addition to standard Bearer token authentication, FullData operations can optionally be protected using DPoP (Demonstrating Proof-of-Possession, RFC 9449). This provides an additional layer of assurance that the caller holds the private key associated with the token, rather than relying solely on token possession.


Important Considerations

Field selection follows your configuration

If your configurationId mapping restricts which fields are returned (as configured in the Configuration API), IncrementalData respects that same restriction — column projection is applied consistently regardless of whether a record was inserted, updated, or deleted.

Omitting entity returns one job per entity

As with FullData, if entity is omitted from the request body, the operation fans out into one job per entity defined in the configuration mapping, rather than a single job.

Payroll data limitation

There is a limitation on the payroll table (payroll-results entity): The DaaS backend applies a date range filter to this entity: only records within the current and previous calendar years are exported.

Note: this filter does not apply to Delete records for payroll-results, since deleted records no longer carry a CalculationYear value — deletions are always returned regardless of the original record’s year.

Examples:

  • Today is 1 November 2025 → the API retrieves payroll data from 1 January 2024 onward.
  • Today is 15 February 2025 → the API retrieves payroll data from 1 January 2024 onward.

Queueing, concurrency, and limits

Triggered operations — and therefore their jobs — are processed through an internal queue:

  • Jobs that cannot start immediately are placed in the queue with status Pending.
  • As running jobs complete, pending jobs are automatically picked up and executed.
  • A maximum of 20 jobs can run in parallel, per configuration (a tenant can have several clients defined in the Developer Portal).
  • Each configuration can trigger up to 3 operations per day.
  • There is no specific concurrency limit per entity or table beyond the limits above.
  • However, only one active job per entity is allowed at a time: if a second request targets an entity that already has a job in flight, the API returns 409 Conflict. An in-flight job can be cancelled via the cancel endpoint if needed.

Developer tip

  • Applications should monitor the operation status and wait for completion before submitting another operation for the same client.
  • Files can be downloaded as soon as their jobs have been completed, you don’t need to wait for the whole operation to be finished to start the downloading process.

Endpoints

1. Trigger a FullData operation

POST /data/v1/fulldata

Starts a data loader operation for the selected configured entities. It runs one job per configured entity/table, or a single job if the entity parameter is provided.

If a new request is submitted while another operation is already being processed for the same client, the response returns 409 Conflict.

Parameters

Type Name Description
Header Authorization Bearer token (required)
Path None
Query None
Body configurationId Explicit configuration to apply. If omitted, the default configuration set in the Configuration API is used.
Body fileFormat Format of the returned file. Currently only csv and json are accepted.
Body entity Entity for which the operation will run. Only one job/output file is created for this entity. If omitted, all entities defined for the configuration are triggered, each producing its own job and output file.
Body version Desired version of the entity, if it has multiple versions. If omitted, the latest version is used. Required when entity is specified.

Request example

curl --location 'https://data.youforce.com/data/v1/fulldata' \
--header 'Authorization: Bearer abc' \
--header 'Content-Type: application/json' \
--data '{
  "configurationId": "testing-default-4028868",
  "fileFormat": "csv",
  "entity": "sickness-case",
  "version": 1
}'

Response

202 Accepted — the response body includes the operationId, used for all subsequent queries on this operation:

{
    "operationId": "88549862-af91-49c1-9545-683edd948931"
}

Error responses

Code Cause
400 Bad Request version is not a valid integer, entity does not exist in the configuration, or fileFormat is not csv/json, for example
409 Conflict An operation is already running for this client/configuration
429 Too Many Requests The configuration’s maxRequestsPerDay limit has been reached

2. Check operation status

GET /data/v1/fulldata/{fulldataOperationId}/status

Returns the processing status of each job within the operation, plus the overall operation status.

When jobs within an operation have different outcomes, the overall status may reflect a partial state:

  • PartiallyFailed — some jobs failed, the rest completed.
  • PartiallyCancelled — some jobs were cancelled, the rest completed.
  • PartiallyDeleted — some job files were deleted, the rest completed.

Parameters

Type Name Description
Header Authorization Bearer token (required)
Path fulldataOperationId Id of the operation returned by the initial POST request
Query None
Body None

Request example

curl --location 'https://data.youforce.com/data/v1/fulldata/88549862-af91-49c1-9545-683edd948931/status' \
--header 'Authorization: Bearer abc'

Response

200 OK

Field Description
operationId The requested operation Id
configurationId Configuration Id applied for generating the output
status Overall status of the operation: Pending, Completed, Cancelled, Failed (and partial variants above)
jobs Array with the status of each individual job
jobs[].id Job Id
jobs[].entity Entity related to the job
jobs[].version Version of the job being delivered
jobs[].status Status of the job: Pending, Completed, Cancelled, Failed
jobs[].createdAt Date/time the request was created
jobs[].startedAt Date/time the job started
jobs[].completedAt Date/time the job finished
jobs[].cancelledAt Date/time the job was cancelled
jobs[].failedAt Date/time the job failed
jobs[].failedReason Reason the job failed
jobs[].totalCount Total number of rows to be returned
jobs[].processedCount Number of rows processed so far
jobs[].expirationDate Date/time when the generated file will be removed from our systems
jobs[].links Links to download the successfully processed files

Example — Pending operation

{
    "operationId": "88549862-af91-49c1-9545-683edd948931",
    "configurationId": "testing-default-4028868",
    "status": "Pending",
    "jobs": [
        {
            "id": "0d629dbc-8d49-46df-8c0a-8469a67fd7d3",
            "entity": "sickness-case",
            "version": 1,
            "status": "Pending",
            "createdAt": "2025-10-30T13:24:33.078654Z"
        }
    ]
}

Example — Completed operation

{
    "operationId": "88549862-af91-49c1-9545-683edd948931",
    "configurationId": "testing-default-4028868",
    "status": "Completed",
    "jobs": [
        {
            "id": "0d629dbc-8d49-46df-8c0a-8469a67fd7d3",
            "entity": "sickness-case",
            "version": 1,
            "status": "Completed",
            "createdAt": "2025-10-30T13:24:33.078654Z",
            "startedAt": "2025-10-30T13:25:05.183246Z",
            "completedAt": "2025-10-30T13:25:08.219779Z",
            "totalCount": 400,
            "processedCount": 400,
            "expirationDate": "2025-10-31T13:25:08.219808Z",
            "links": {
                "download": "https://data.youforce.com/data/v1/jobs/0d629dbc-8d49-46df-8c0a-8469a67fd7d3"
            }
        }
    ]
}

3. Retry a failed operation

PUT /data/v1/fulldata/{fulldataOperationId}/retry

Retries a failed data loader operation. Only the failed jobs within the operation are retried — jobs that already completed successfully are left untouched.

If the operation has no failed jobs and a retry is triggered, the API returns 404 Not Found.

Parameters

Type Name Description
Header Authorization Bearer token (required)
Path fulldataOperationId Id of the operation returned by the initial POST request
Query None
Body None

Request example

curl --location --request PUT 'https://data.youforce.com/data/v1/fulldata/ed41e267-8cbb-4e08-b4bf-60d7a26d7fd8/retry' \
--header 'Authorization: Bearer abc'

Response

202 Accepted


4. Cancel an operation

POST /data/v1/fulldata/{fulldataOperationId}/cancel

Cancels a data loader operation. This stops all jobs of that operation that are still in progress — a job can only be cancelled if it has not completed yet; a completed job cannot be cancelled.

Error responses

Code Cause
400 Bad Request The operation has already completed
404 Not Found There are no jobs pending or being processed at the time of the request

Parameters

Type Name Description
Header Authorization Bearer token (required)
Path fulldataOperationId Id of the operation returned by the initial POST request
Query None
Body None

Request example

curl --location --request POST 'https://data.youforce.com/data/v1/fulldata/ed41e267-8cbb-4e08-b4bf-60d7a26d7fd8/cancel' \
--header 'Authorization: Bearer abc'

Response

204 No Content


5. Delete operation files

DELETE /data/v1/fulldata/{fulldataOperationId}

Deletes the files generated by a data loader operation — specifically, all downloadable files belonging to jobs that completed successfully within the specified operation.

Returns 400 Bad Request if the jobs are not yet completed.

Parameters

Type Name Description
Header Authorization Bearer token (required)
Path fulldataOperationId Id of the operation returned by the initial POST request
Query None
Body None

Request example

curl --location --request DELETE 'https://data.youforce.com/data/v1/fulldata/ed41e267-8cbb-4e08-b4bf-60d7a26d7fd8' \
--header 'Authorization: Bearer abc'

Response

204 No Content


6. Download a job file

GET /data/v1/jobs/{jobId}

Downloads the file generated for a specific job (available once the job’s status is Completed, via the links.download field returned by the status endpoint).

Response

The file content in the requested format (csv or json), with an X-Content-MD5 header containing the base64-encoded MD5 hash of the response body — use this to verify the integrity of the downloaded file.


Operation Status Lifecycle

POST /data/v1/fulldata
        │
        ▼
    [Pending]  ◄── concurrent POST for the same client/configuration → 409 Conflict
        │
        ▼
  [Processing]
        │
        ├──► [Completed]           — all entity jobs processed successfully
        ├──► [PartiallyFailed]     — some jobs failed, others completed
        ├──► [PartiallyCancelled]  — some jobs cancelled, others completed
        ├──► [PartiallyDeleted]    — some job files deleted, others completed
        ├──► [Cancelled]           — cancelled by the client
        └──► [Failed]              — all jobs failed
  • A cancelled operation stays queryable — GET status will keep returning Cancelled.
  • A deleted operation’s files are removed, but the operation itself remains queryable until it expires.

Summary of Key Behaviors

Scenario Result
No entity / version specified All entities in the configuration are exported; one job per entity
entity + version specified Only that entity/version is exported; exactly one job
Invalid version (non-integer) 400 Bad Request
Entity not present in configuration 400 Bad Request
fileFormat other than csv/json 400 Bad Request
New operation requested while one is active for the same client 409 Conflict
Configuration’s daily request limit exceeded 429 Too Many Requests
Cancel an already-completed operation 400 Bad Request
Cancel with no pending/running jobs 404 Not Found
Retry with no failed jobs 404 Not Found
Delete files before jobs complete 400 Bad Request