---
title: "What a run imports"
manual: "TYPO3 EXT:thuecat"
version: "main"
permalink: "https://docs.typo3.org/permalink/werkraummedia/thuecat:developers-import-sources@main"
source: "Developers/Import/ImportSources.rst"
rendered: "2026-10-09T11:47:03+00:00"
---

# What a run imports {#developers-import-sources}

An import configuration either list records (list of static URLs) or it says how to find the roots
of a run (sync Scope or Contains Place). The type of the configuration decides how. Everything after
that — fetching, parsing, following references — is the same for every type.

## The existing types {#the-existing-types}

-   **`static`**

    A hand-maintained list of resource URLs. Each one is a root. Suited to a fixed set of objects,
    such as the attractions of one city.

-   **`syncScope`**

    A sync scope id. The run asks the API which resources in that scope were created or updated,
    optionally only within the last days, and imports those. Suited to keeping a whole scope up to
    date on a schedule.

-   **`containsPlace`**

    The id of one place. The run fetches it and imports everything it lists in
    `schema:containsPlace`. Suited to "everything in this region".

Each type is implemented by a URL provider, a class implementing
`\WerkraumMedia\ThueCat\Import\UrlProvider\UrlProvider`.

## Adding a type {#adding-a-type}

A URL provider answers three questions:

-   **`canProvideForConfiguration()`**

    Is this configuration mine? Usually a comparison of the configuration's type. The first provider
    answering yes is used.

-   **`createWithConfiguration()`**

    Return a provider set up for this configuration. Providers are shared services, so return a
    configured copy rather than changing the shared instance.

-   **`getUrls()`**

    The root URLs of the run. Requests made here go through the same HTTP client, with the same
    timeouts and retries, as the rest of the run.

Registration is automatic through the `import.url.provider` tag the interface carries.

The configuration record needs to offer the type as well:

1.  An item in the `type` select of `tx_thuecat_import_configuration`.
1.  The type's fields in
    `\WerkraumMedia\ThueCat\Typo3\FlexForm\ImportConfigurationDataStructure`. Fields every type
    has — storage page, file folder, API key, tuning values — are shared there and need not be
    repeated.
1.  Labels in `locallang_flexform.xlf`, including the sheet title
    `importConfiguration.<type>.sheetTitle`.
1.  A getter on `\WerkraumMedia\ThueCat\Domain\Model\Backend\ImportConfiguration` for each new
    field, for the provider to read.

A run whose configuration no provider claims stops with an exception before anything is fetched.
